Sales Enhancements Loss Reservations

[ExtensionOf(classStr(PdsShelfLifeMovUpdConfirmDialogFactory ))]

final class rsmPdsShelfLifeMovUpdConfirmDialogFactory_Extension

{

    public PdsShelfLifeIMovUpdConfirmDialog createConfirmDialogFromLineAndField(

        Common  _orderLineBuffer,

        FieldId _fieldNumberChanged,

        boolean _isContextServerBound)

    {

        PdsShelfLifeIMovUpdConfirmDialog instance = next createConfirmDialogFromLineAndField(_orderLineBuffer, _fieldNumberChanged, _isContextServerBound);

        PdsShelfLifeIMovUpdConfirmDialog createdInstance;

        SalesLine salesLine;

        boolean hasAutoReservation;

        boolean canGeneratePrompt;

 

        switch (_orderLineBuffer.TableId)

        {

            case tableNum(SalesLine):

                salesLine = _orderLineBuffer as SalesLine;

                hasAutoReservation = salesLine.Reservation == ItemReservation::Automatic;

                if(!this.canGeneratePrompt(_isContextServerBound, _orderLineBuffer))

                {

                    if(salesLine.rsmHasValidBatchReservation())

                    {

                        instance.parmIsRecordMarked(true);

                    }

                    else

                    {

                        instance.parmIsRecordMarked(false);

                    }

                }

                break;

        }

        return instance;

    }


}

//rsmSalesLine_Table_Extension

public boolean rsmHasValidBatchReservation()

{

    boolean ret;

    InventDim inventDim;

    InventTrans inventTrans;

    InventTransOrigin inventTransOrigin;

    WHSOrderCommittedReservation whsOrderCommittedReservation;

    WHSOrderCommittedReservationAllView reservationView;


    /*select firstonly RecId from reservationView

                where reservationView.CommittingOriginInventTransId == this.InventTransId

            join inventBatchId from inventDim

                    where inventDim.inventDimId == reservationView.InventDimId

                        && inventDim.inventBatchId != '';


    select CommittingOriginInventTransId from whsOrderCommittedReservation

        join InventTransId from inventTransOrigin

            where inventTransOrigin.INVENTTRANSID == WHSOrderCommittedReservation.CommittingOriginInventTransId

        join recId from inventTrans

            where inventTrans.inventTransOrigin == inventTransOrigin.recId

        join inventbatchId from inventDim

            where InventDim.inventDimId == inventTrans.inventDimId

                && whsOrderCommittedReservation.CommittingOriginInventTransId == this.InventTransId;*/


    while select inventbatchId from inventDim

        join inventTrans

            where InventDim.inventDimId == inventTrans.inventDimId

        join InventTransOrigin

            where inventTrans.inventTransOrigin == InventTransOrigin.recId

                && InventTransOrigin.inventTransId == this.InventTransId

    {

        if(InventBatch::pdsCheckExpiryDate(inventDim.inventBatchId, this.ItemId, this.ReceiptDateRequested))

        {

            ret = true;

        }

        else

        {

            return false;

        }

    }

    return ret;

}


/// <summary>

/// Updates sales order lines if prompt was confirmed by user and any

/// of the header fields with impact on the

/// order lines have changed.

/// </summary>

/// <returns>

/// A Boolean value indicating whether the update occurred.

/// </returns> rsmSalesTable_Form_Extension

protected boolean updateSalesLinesWithPrompt()

{

    boolean ret ;

    FormDataSource salesTable_ds = this.dataSource(formDataSourceStr(SalesTable, SalesTable));

    SalesTable salesTable = salesTable_ds.cursor();

    SalesReceiptDateRequested ReceiptDateRequeste = salesTable.ReceiptDateRequested;

    salesTable2LineUpdatePrompt.parmRsmreceiptDateRequested(salesTable.ReceiptDateRequested);

    ret = next updateSalesLinesWithPrompt();


    return ret;

}




[ExtensionOf(classStr(SalesTable2LineUpdate))]

final class rsmSalesTable2LineUpdate_Extension

{

    public SalesReceiptDateRequested receiptDateRequested;

    public SalesReceiptDateRequested parmRsmreceiptDateRequestedUpdate(SalesReceiptDateRequested _receiptDateRequested = receiptDateRequested)

    {

        receiptDateRequested = _receiptDateRequested;

        return receiptDateRequested;

    }


    protected void reReserveShelfInventory(SalesLine  _salesLine, AxSalesTable _axSalesTable)

    {

        _salesLine.ReceiptDateRequested = this.parmRsmreceiptDateRequestedUpdate();

        next reReserveShelfInventory(_salesLine, _axSalesTable);

        

    }


    protected void initFromSalesTable2LineUpdatePrompt(SalesTable2LineUpdatePrompt _salesTable2LineUpdatePrompt)

    {

        this.parmRsmreceiptDateRequestedUpdate(_salesTable2LineUpdatePrompt.parmRsmreceiptDateRequested());

        next initFromSalesTable2LineUpdatePrompt(_salesTable2LineUpdatePrompt);

        

    }


}



[ExtensionOf(classStr(SalesTable2LineUpdatePrompt))]

final class rsmSalesTable2LineUpdatePrompt_Extension

{

    public SalesReceiptDateRequested receiptDateRequested;


    public SalesReceiptDateRequested parmRsmreceiptDateRequested(SalesReceiptDateRequested _receiptDateRequested = receiptDateRequested)

    {

        receiptDateRequested = _receiptDateRequested;

        return receiptDateRequested;

    }


}


Comments

Popular posts from this blog

Price disc agreement

Sample integration

Create ledger journals in D365FO using X++ + LedgerDimensionACType