web
You’re offline. This is a read only version of the page.
close
Skip to main content

Notifications

Announcements

No record found.

Community site session details

Community site session details

Session Id :

AX2012 Inventory close adjustment x++

DaxNigel Profile Picture DaxNigel 2,574

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.

Comments

*This post is locked for comments