martedì 19 gennaio 2016

AX 2009 / AX 2012 - Utilizzo della macro #InventDimJoin

Per effettuare la join con le dimensioni inventariali AX mette a disposizione una serie di macro per agevolare la scrittura della query:

 static void InventDimJoin(Args _args)  
 {  
   InventTrans   inventTrans;  
   InventDim    inventDim;  
   ItemId     itemId;  
   inventDim    inventDimCriteria;  
   InventDimParm  InventDimParm;  
   FromDate    fromDate;  
   ToDate     toDate;  
   ;  
   itemId  = "2-719-400-00";  
   fromDate = mkdate(1,9,2015);  
   toDate  = mkdate(30,9,2015);
  
   inventDimCriteria.InventLocationId = "EG";  
   InventDimParm.InventLocationIdFlag = NoYes::Yes;
   
   //oppure
   InventDimParm.initFromInventDim(inventDimCriteria); 

   select sum(Qty) from inventTrans  
   where inventTrans.ItemId   == itemId  
   && (inventTrans.StatusReceipt == StatusReceipt::Purchased  
   || inventTrans.StatusReceipt == StatusReceipt::Received)  
   && inventTrans.DatePhysical  >= fromDate  
   && inventTrans.DatePhysical  <= toDate  
   #InventDimJoin(inventTrans.inventDimId, InventDim, inventDimCriteria, InventDimParm, dimIdx);
  
   info(StrFmt("%1",inventTrans.Qty));  
 }