AX2012 Inventory close adjustment x++
Views (62)
While this is not for everyone, I recently has the need to reverse the adjustment value of an inventory close. To do this manually on a large close would be a very time consuming activity, so I wrote a job to complete the reserve.
Note all lines will post, so these will flag up into the info log, but the line that would post are psoted.
This script can be a starting point for other scripts around this control, but might be useful to for reference.
static void ReverseCloseAdjustments(Args _args)
{
InventAdjOnhandSelect inventAdjOnhandSelect;
INVENTSettlement INVENTSettlement;
Voucher Voucher;
TmpFormLookUp TmpFormLookUp;
InventDim inventdim;
InventDim inventdimSite;
inventDimParm inventDimParm;
inventDimParm inventDimParmTmp;
InventAdj_SumUp inventAdj_SumUp;
InventDataAdjSumUp dataAdjSumUp;
InventSum InventSum;
inventdim InventDimSum;
inventdim InventDimSettle;
InventModelGroupItem InventModelGroupItem;
InventModelTypeCache inventModelTypeCache = InventModelTypeCache::construct();
InventModelType inventModelType;
InventSumOpenTransact openTransact;
TransDate PerDate = InventClosing::closingDate(true);
Counter lineCount = 1;
Counter Linesread;
InventTrans InventTrans;
SysOperationProgress op;
;
Voucher = '10001_073'; -//Oriignal close value to adjust
op = new SysOperationProgress();
while
select ItemId, sum(CostAmountAdjustment) from INVENTSettlement
group by itemid
where INVENTSettlement.Voucher == Voucher
&& INVENTSettlement.Posted == NoYes::Yes
{
Linesread++;
}
op.setTotal(Linesread);
Linesread = 0;
Inventdim = Inventdim::findOrCreateBlank();
inventDimParmTmp.initProductDimensionsAllGroups();
inventDimParm.clear();
inventDimParm.ItemIdFlag = NoYes::Yes;
inventDimParm.InventSiteIdFlag = NoYes::Yes;
inventDimParm.ConfigIdFlag = NoYes::Yes;
dataAdjSumUp = InventDataAdjSumUp::newFromForm(tmpFormLookup);
while
select ItemId from InventTrans
group by ItemId
join sum(CostAmountAdjustment) from INVENTSettlement
where INVENTSettlement.Voucher == Voucher
&& INVENTSettlement.Posted == NoYes::Yes
&& InventSettlement.TransRecId == InventTrans.RecId
join inventsiteid, configid from InventDimSettle
group by InventSiteId, configid
where InventDimSettle.inventDimId == InventTrans.inventdimid
{
op.incCount();
op.setText(InventSettlement.ItemId);
if(INVENTSettlement.CostAmountAdjustment != 0)
{
Linesread++;
Select firstonly modelgroupid from InventModelGroupItem
where InventModelGroupItem.itemid == InventTrans.itemid
&& InventModelGroupItem.ItemDataAreaId == InventTrans.dataAreaId;
inventModelType = inventModelTypeCache.inventModelType(InventModelGroupItem.modelGroupId);
openTransact = inventModelType.InventSumOpenTransact(perDate, InventTrans.ItemId, InventDimSettle, inventDimParm);
tmpFormLookUp.clear();
tmpFormLookUp.ItemId = InventTrans.ItemId;
tmpFormLookUp.InventDimId = inventdim::findOrCreate(InventDimSettle).InventDimId;
tmpFormLookUp.qty = openTransact.sumTransQty();
tmpFormLookUp.postedValue = openTransact.sumTransValue();
if (tmpFormLookUp.Qty > 0)
{
if(tmpFormLookUp.PostedValue == 0)
{
if((tmpFormLookUp.Qty > 0 && INVENTSettlement.CostAmountAdjustment * -1 < 0)
|| (tmpFormLookUp.Qty < 0 && INVENTSettlement.CostAmountAdjustment * -1 > 0))
{
info(strFmt('itemid %1 Site %2 Config %3 Qty %4 Value %5 Adjust %6', tmpFormLookUp.itemId,
inventdim::find(tmpFormLookUp.InventDimId).InventSiteId,
inventdim::find(tmpFormLookUp.InventDimId).configId,
tmpFormLookUp.qty,
tmpFormLookUp.postedValue,
INVENTSettlement.CostAmountAdjustment * -1));
continue;
}
}
if((tmpFormLookUp.postedValue < 0 && abs(tmpFormLookUp.postedValue) - abs(INVENTSettlement.CostAmountAdjustment) < 0)
|| (tmpFormLookUp.postedValue > 0 && abs(tmpFormLookUp.postedValue) - abs(INVENTSettlement.CostAmountAdjustment) < 0))
{
info(strFmt('itemid %1 Site %2 Config %3 Qty %4 Value %5 Adjust %6', tmpFormLookUp.itemId,
inventdim::find(tmpFormLookUp.InventDimId).InventSiteId,
inventdim::find(tmpFormLookUp.InventDimId).configId,
tmpFormLookUp.qty,
tmpFormLookUp.postedValue,
INVENTSettlement.CostAmountAdjustment * -1));
}
else
{
tmpFormLookUp.LineNo = lineCount;
TmpFormLookUp.adjustNow = INVENTSettlement.CostAmountAdjustment * -1;
tmpFormLookUp.insert();
lineCount++;
}
}
else
{
info(strFmt('itemid %1 Site %2 Config %3 Qty %4 Value %5 Adjust %6', tmpFormLookUp.itemId,
inventdim::find(tmpFormLookUp.InventDimId).InventSiteId,
inventdim::find(tmpFormLookUp.InventDimId).configId,
tmpFormLookUp.qty,
tmpFormLookUp.postedValue,
INVENTSettlement.CostAmountAdjustment * -1));
}
}
}
info(strFmt('Items to process %1. Items successfully created %2', Linesread, lineCount-1));
if(lineCount > 1)
{
inventAdj_SumUp = InventAdj_SumUp::newSumUp(dataAdjSumUp.pack(), inventDimParm);
inventAdj_SumUp.run();
}
}
This was originally posted here.

Like
Report
*This post is locked for comments