Wednesday, February 22, 2023

update custom fields in vendInvoiceInfoTable from PurchTable while invoicing the purchase order in D365FO

 update custom fields in vendInvoiceInfoTable from PurchTable while invoicing the purchase order in D365FO. While invoicing the purchase order system will create a pending vendor invoice.

I have added a few custom fields in the purchase order header and purchase order line. So, I need to transfer the data from PurchTable to vendInvoiceInfoTable

Check the below code.


For line fields:

[ExtensionOf(classStr(PurchFormletterParmData))]
internal final class PurchFormLetterParmData_Extension
{
    protected void createParmLineRecord(VendDocumentLineMap purchParmLine, PurchLine purchLine, 
					VendDocumentLineAssetMap purchParmLine_Asset, TradeLineRefId tableRef, 
					container quantities, container cwQuantities)
    {
        if (_purchParmLine.TableId == tableNum(VendInvoiceInfoLine))
        {
            VendInvoiceInfoLine vendInvoiceInfoLine = _purchParmLine;

            vendInvoiceInfoLine.Field1  = _purchLine.Field1;
            vendInvoiceInfoLine.Field2  = _purchLine.Field2;
        }
        
        next createParmLineRecord(_purchParmLine, purchLine, purchParmLine_Asset, 
						tableRef, quantities, _cwQuantities);
    }

}


For Header and line fields:

[ExtensionOf(classStr(PurchFormletterParmDataInvoice))] 
final class VendInvoiceInfoLine_Extension 
{ 
   // Header fields update
   protected void createInvoiceHeaderFromTempTable() 
   { 
      vendInvoiceInfoTable vendInvoiceInfoTable; 
      PurchTable           purchtable; 

       next createInvoiceHeaderFromTempTable(); 

       select forupdate vendInvoiceInfoTable 
           where vendInvoiceInfoTable.ParmId == this.parmId(); 
           //&& vendInvoiceInfoTable.PurchId == purchtable.PurchId; 
            
       purchtable = PurchTable::find(vendInvoiceInfoTable.PurchId); 

       // Code
       ttsbegin; 
       vendInvoiceInfoTable.Field2 	= purchtable.Field2; 
       vendInvoiceInfoTable.Field2 	= purchtable.Field2; 
       vendInvoiceInfoTable.update(); 
       ttscommit; 

    } 
  
   // Line fields update
   protected void createParmLinesAndTable() 
   { 
       VendInvoiceInfoLine vendInvoiceInfoLine; 
       PurchLine           purchline; 
	   
       next createParmLinesAndTable(); 

       while select forupdate vendInvoiceInfoLine 
           where vendInvoiceInfoLine.ParmId == this.parmId() 
       { 
            purchline = PurchLine::findRecId(vendInvoiceInfoLine.PurchLineRecId); 
		
            // Code
            ttsbegin; 
	    vendInvoiceInfoLine.Field1 = purchline.Field1; 
            vendInvoiceInfoLine.Field2 = purchline.Field2; 
	    vendInvoiceInfoLine.update(); 
	    ttscommit; 
       } 

   } 
} 


Keep Daxing!!

No comments:

Post a Comment