sales invoice by sales line wise through code in x++

  private custInvoiceJour salesOrderInvoiceByLine(SalesLine    _salesline)

 {

     salesFormLetter         salesFormLetter;

     salesFormletterParmData salesFormLetterParmData;

     salesParmUpdate         salesParmUpdate;

     salesParmTable          salesParmTable;

     salesParmLine           salesParmLine;

     salesTable              salesTable;

     custInvoiceJour custInvoiceJourLocal;

     salesTable  = salesTable::find(_salesline.SalesId);

    

   

     ttsbegin;

     salesFormLetterParmData = salesFormletterParmData::newData(DocumentStatus::Invoice, VersioningUpdateType::Initial);


     salesFormLetterParmData.parmOnlyCreateParmUpdate(true);

     salesFormLetterParmData.createData(false);

     salesParmUpdate = salesFormLetterParmData.parmParmUpdate();


     salesParmTable.clear();

     salesParmTable.TransDate                = _salesline.ReceiptDateRequested;

     salesParmTable.Ordering                 = DocumentStatus::Invoice;

     salesParmTable.ParmJobStatus            = ParmJobStatus::Waiting;

     salesParmTable.salesId                  = salesTable.salesId;


     salesParmTable.salesName                = salesTable.salesName;

     salesParmTable.DeliveryName             = salesTable.DeliveryName;

     salesParmTable.DeliveryPostalAddress    = salesTable.DeliveryPostalAddress;

     salesParmTable.CustAccount              = salesTable.CustAccount;

     salesParmTable.CurrencyCode             = salesTable.CurrencyCode;

     salesParmTable.InvoiceAccount           = salesTable.InvoiceAccount;

     salesParmTable.ParmId                   = salesParmUpdate.ParmId;

     salesParmTable.insert();

        

     if (_salesline)

     {

         salesParmLine.InitFromsalesLine(_salesline);

         salesParmLine.DeliverNow    = _salesline.SalesQty;

         salesParmLine.ParmId        = salesParmTable.ParmId;

         salesParmLine.TableRefId    = salesParmTable.TableRefId;

         salesParmLine.setQty(DocumentStatus::Invoice, false, true);

         salesParmLine.setLineAmount(_salesline);

         salesParmLine.insert();

     }

     ttscommit;


     //confirming Sales Order

     salesFormLetter = SalesFormLetter::construct(DocumentStatus::Confirmation);

     salesFormLetter.update(salesTable, DateTimeUtil::getSystemDate(DateTimeUtil::getUserPreferredTimeZone()), SalesUpdate::All);



     //generationg Invoice


     salesFormLetter = salesFormLetter::construct(DocumentStatus::Invoice);

     salesFormLetter.transDate(_salesline.ReceiptDateRequested);

     salesFormLetter.proforma(false);

     salesFormLetter.specQty(salesUpdate::All);

     salesFormLetter.salesTable(salesTable);

     salesFormLetter.parmId(salesParmTable.ParmId);

     salesFormLetter.salesParmUpdate(salesFormLetterParmData.parmParmUpdate());

     salesFormLetter.run();


     custInvoiceJourLocal = salesFormLetter.getOutputContract().parmJournal();


     return custInvoiceJourLocal;

 }


Comments

Popular posts from this blog

How to Bypass Next in COC in D365 X++

create movement journal through code in d365 FO x++