Monday, May 23, 2022

Update Custom Fields In CustTrans/VendTrans From LedgerJournalTrans during the posting of journal in D365FO.

 For Update Custom Fields In CustTrans/VendTrans From LedgerJournalTrans during the posting of the journal in D365FO. We have 2 ways.


Way 1:

For Vend trans:

[ExtensionOf(classStr(VendVoucherJournal))]
final class VendVoucherJournal_Extension
{
    protected void initCustVendTrans(CustVendTrans custVendTrans, 
                                        LedgerVoucher _ledgerPostingJournal, 
                                        boolean _useSubLedger = false)
    {
        LedgerJournalTrans    ledgerJournalTrans;
        VendTrans             vendTrans;

        next initCustVendTrans(custVendTrans, _ledgerPostingJournal, _useSubLedger);

        if (common.TableId == tablenum(LedgerJournalTrans))
        {
            ledgerJournalTrans = common;
            vendTrans = custVendTrans;


            // Add new fields here.
            vendTrans.NewField1 = ledgerJournalTrans.NewField1;

            custVendTrans = vendTrans;

        }
    }

}


For cust trans:

[ExtensionOf(classStr(CustVoucherJournal))]
final class CustVoucherJournal_Extension
{
    protected void initCustVendTrans(
                                CustVendTrans custVendTrans,
                                LedgerVoucher _ledgerPostingJournal,
                                boolean _useSubLedger = false)
    {
        LedgerJournalTrans ledgerJournalTrans;
        recId              recId;
        CustTrans          custTrans;


        next initCustVendTrans(custVendTrans, _ledgerPostingJournal, _useSubLedger);

        if (common.TableId == tableNum(LedgerJournalTrans))
        {
            recId               = common.RecId;
            ledgerJournalTrans  = LedgerJournalTrans::findRecId(recId, false);
            //ledgerJournalTrans = common;

            custTrans = custVendTrans;

            // Add new fields here.
            custTrans.NewField1 = ledgerJournalTrans.NewField1;

            custVendTrans = custTrans;// need to reassign the buffer
        }
    }
}



Way 2:

[ExtensionOf(classStr(CustVendVoucher))]
final class CustVendVoucher_Extension
{

    public void post(
        LedgerVoucher _ledgerPostingJournal,
        CustVendTrans _custVendTrans,
        NoYes _approval,
        UnknownNoYes _euroTriangulation,
        boolean _withHoldTaxType,
        boolean _useSubLedger)
    {

        LedgerJournalTrans  ledgerJournalTransLocal;
        VendTrans           vendTrans;
        CustTrans           custTrans;

        next post(_ledgerPostingJournal, _custVendTrans, 
                    _approval, _euroTriangulation, 
                    _withHoldTaxType, _useSubLedger);

        if (common.TableId == tableNum(LedgerJournalTrans))
        {
            ledgerJournalTransLocal = common;

            if (_custVendTrans.tableid == tableNum(vendTrans))
            {
                ttsbegin;

                select forupdate vendTrans
                    where vendTrans.RecId == _custVendTrans.RecId;

                if (vendTrans.RecId)
                {
                    vendTrans.NewField1 = ledgerJournalTransLocal.NewField1;
                    vendTrans.Update();
                }
                ttscommit;
            }
            else if (_custVendTrans.tableid == tableNum(CustTrans))
            {
                ttsbegin;

                select forupdate custTrans
                    where custTrans.RecId == _custVendTrans.RecId;

                if (custTrans.RecId)
                {
                    custTrans.NewField1 = ledgerJournalTransLocal.NewField1;
                    custTrans.Update();
                }
                ttscommit;
            }
        }
    }
}


Ref : update-custom-fields-in-custtrans-vendtrans-from-ledgerjournaltrans-during-the-posting-of-journal


Keep Daxing!!

No comments:

Post a Comment