天天看点

How to remove Marking and cannal remaining delivery quantity on Sales order From

THK_blockSalesLines method from salesTable table

// VAR Changed on 11 Oct 2011 at 11:02:29 by THK7519

static void THK_blockSalesLines(SalesId _salesId, boolean _block = true)

{

    #avifiles

    SalesLine               salesLine;

    SysOperationProgress    progress;

    int                     i;

    boolean                 updated;

    ;

    ttsbegin;

    select count(recId) from salesLine

        where salesLine.SalesId == _salesId;

    progress    = SysOperationProgress::newGeneral(#aviupdate, "Stopping SO lines", salesLine.RecId);

    while select forupdate salesLine

        where salesLine.SalesId == _salesId

    {

        i++;

        progress.setText(strfmt('Line %1, Item : %2',i,salesLine.ItemId));

        progress.incCount();

        if (_block)

        {

            TradeInterCompany::removeMarking(salesLine, null);

            // VAR Changed on 11 Oct 2011 at 11:02:29 by THK7519 Begin

            updated = SalesLine::THK_CannalRemainSOLineQty(salesLine);

            // VAR Changed on 11 Oct 2011 at 11:02:29 by THK7519 End

        }

        salesLine.Blocked   = _block;

        salesLine.update();

    }

    if(updated)

        ttscommit;

    else

        ttsabort;

}

THK_CannalRemainSOLineQty method from salesLine table

// VAR Changed on 10 Oct 2011 at 21:18:49 by THK7519

static boolean THK_CannalRemainSOLineQty(SalesLine    callerSalesLine)

    FormDataSource  FormDataSource;

    InventQty       diffRemainSalesPhysical;

    InventQty       diffRemainInventPhysical;

    SalesLine       salesLineLocal = SalesLine::findRecId(callerSalesLine.RecId);

    InventQty       THK_2nddiffRemainSalesPhysical;

    InventQty       THK_2nddiffRemainInventPhysical;

;

    diffRemainSalesPhysical                     = salesLineLocal.RemainSalesPhysical  - 0;

    diffRemainInventPhysical                    = salesLineLocal.RemainInventPhysical - 0;

    callerSalesLine.RemainSalesPhysical         = 0;

    callerSalesLine.RemainInventPhysical        = 0;

    THK_2nddiffRemainSalesPhysical              = salesLineLocal.THK_2ndRemainSalesPhysical  - 0;

    THK_2nddiffRemainInventPhysical             = salesLineLocal.THK_2ndRemainInventPhysical - 0;

    callerSalesLine.THK_2ndRemainSalesPhysical  = 0;

    callerSalesLine.THK_2ndRemainInventPhysical = 0;

    if (callerSalesLine.validateWrite() && callerSalesLine.salesTable().checkUpdate())

        InterCompanyUpdateRemPhys::synchronize(callerSalesLine,

                                               diffRemainInventPhysical,

                                               diffRemainSalesPhysical,

                                               InterCompanySkipUpdate::No,

                                               THK_2nddiffRemainInventPhysical,

                                               THK_2nddiffRemainSalesPhysical);

        callerSalesLine.write();

        return false;

    ttscommit;

    return true;

static method removeMarking from TradeInterCompany in class

static void removeMarking(SalesLine  _salesLine, Object _formRun)

    InventMovement                  movement = InventMovement::construct(_salesLine);

    InventTrans                     inventTrans;

    SalesTable                      salesTable;

    SalesLine                       salesLine;

    PurchTable                      purchTable;

    PurchLine                       purchLine;

    InterCompanyPurchSalesReference interCompanyPurchSalesReference;

    boolean                         inventTransFound;

    salesTable = _salesLine.salesTable(true);

    purchLine  = PurchLine::findInventTransId(_salesLine.InventRefTransId,true);

    purchTable = PurchTable::find(_salesLine.InventRefId,true);

    while select forupdate inventTrans

          index hint TransIdIdx

          where inventTrans.InventTransId    == movement.transId()

          &&    inventTrans.TransChildType   == movement.transChildType()

          &&    inventTrans.TransChildRefId  == movement.transChildRefId()

          &&    inventTrans.StatusReceipt    == StatusReceipt::None

          &&    inventTrans.StatusIssue      >  StatusIssue::None

          &&    inventTrans.InventRefTransId

        inventTransFound = true;

        if (inventTrans.InventRefTransId)

        {                                                                                                       // VAR Changed on 30 Jun 2009 by thk05 for add 2nd unit

            InventTrans::deleteMarking(inventTrans.InventRefTransId,inventTrans.InventTransId,-inventTrans.Qty,-inventTrans.THK_2ndQty,true,null,null,false,true);

            inventTrans.InventRefTransId    = '';

        if (inventTrans.StatusIssue >= StatusIssue::ReservPhysical)

            inventTrans.StatusIssue = StatusIssue::OnOrder;

        inventTrans.update();

        if (movement.inventRefTransId())

            movement.setInventRefFields(InventRefType::None,'','');

            movement.updateDoBuffer();

    if (purchLine)

        purchLine.ItemRefType        = InventRefType::None;

        purchLine.InventRefId        = '';

        purchLine.InventRefTransId   = '';

        purchLine.InterCompanyOrigin = InterCompanyOrigin::Source;

        purchLine.update();

    if (!inventTransFound)

        salesLine = SalesLine::findInventTransId(_salesLine.InventTransId,true);

        if (salesLine)

            salesLine.InventRefType    = InventRefType::None;

            salesLine.InventRefId      = '';

            salesLine.InventRefTransId = '';

            salesLine.update();

    if (purchTable)

        select firstonly purchLine

               index hint PurchLineIdx

               where purchLine.PurchId     == purchTable.PurchId

               &&    purchLine.ItemRefType == InventRefType::Sales

               &&    purchLine.InventRefId == salesTable.SalesId;

        if (!purchLine)

            delete_from interCompanyPurchSalesReference

                   index hint SalesPurchIdx

                   where interCompanyPurchSalesReference.SalesId == salesTable.SalesId

                   &&    interCompanyPurchSalesReference.PurchId == purchTable.PurchId;

            purchTable.InterCompanyOriginalSalesId     = '';

            purchTable.InterCompanyOriginalCustAccount = '';

            purchTable.InterCompanyOrigin = InterCompanyOrigin::Source;

            purchTable.update();

            salesTable.InterCompanyAutoCreateOrders = false;

            salesTable.update();

    if (_formRun) // VAR Changed on 22 Jul 2010 at 12:26:03 by 4054 - U045

        _formRun.doRefresh();

i++