Saturday, May 7, 2011

How to get On-Hand inventory of past years (by date)

Many a times we come accross a requirement from customer to show on hand inventory of last year or some other report of this type as it is not included in the out of box package. I found a very interesting job from the community web site related to this.

static void findingOnHandByDate(Args _args)
{
ItemId itemId;
InventDim inventDimCriteria;
InventDimParm inventDimParm;
InventSumDateDim inventSumDateDim;
TransDate start, finish;
int c;
int onHandTotal;
;
start = str2date("1/1/2010", 213);
finish = str2date("12/31/2010", 213);
onHandTotal = 0;
while(start != finish)
{
c++;
// Specify the item to get onhand info on
itemId = "00017470";

inventSumDateDim =
InventSumDateDim::newParameters(start,
itemId,
inventDimCriteria,
inventDimParm);

info(strfmt("Date: %1 on hand: %2", start, num2str(inventSumDateDim.postedQty() + inventSumDateDim.receivedQty() - inventSumDateDim.deductedQty(), 0, 2, 1, 1)));
onHandTotal += (inventSumDateDim.postedQty() + inventSumDateDim.receivedQty() - inventSumDateDim.deductedQty());
start += 1;
}
info(strfmt("Avg on hand per year: %1", onHandTotal / 365));
}