web
You’re offline. This is a read only version of the page.
close
Skip to main content
Community site session details

Community site session details

Session Id :
Finance | Project Operations, Human Resources, ...
Unanswered

partially invoicing multiple sales orders into once invoice

(2) ShareShare
ReportReport
Posted on by
Hello, i have a requirement to partially invoice multiple sales orders into once invoice
this is my go at it but its not working properly, its only correctly invoicing one line out of the two.
would really appreciate some help.
 
internal final class RunnableClassInvoice
{
    public static void main(Args _args)
    {
        ttsbegin;
        SalesTable              salesTable1, SalesTable2, salesTable;
        SalesLine               salesLine1, salesLine2, salesLine;
        SalesParmTable          SalesParmTable;
        SalesParmLine           salesParmLine;
        SalesParmUpdate         salesParmUpdate;
        SalesFormletterParmData salesFormLetterParmData;
        SalesParmSubTable       salesParmSubTable;
        salesLine1 = SalesLine::find('SO000010');
        salesLine2 = SalesLine::find('SO000009');
        List salesList = new List(Types::Record);
        List table = new List(Types::Record);
        salesList.addEnd(salesLine1);
        salesList.addEnd(salesLine2);
        ListEnumerator enumerator = salesList.getEnumerator();
        salesFormLetterParmData  = SalesFormletterParmData::newData(DocumentStatus::Invoice, VersioningUpdateType::Initial);
        salesFormLetterParmData.parmOnlyCreateParmUpdate(true);
        salesFormLetterParmData.createData(false);
        salesParmUpdate          = salesFormLetterParmData.parmParmUpdate();
        salesParmUpdate.SumBy    = 1;
        salesParmUpdate.SpecQty  = SalesUpdate::All;
        salesParmUpdate.doUpdate();
        salesTable = salesLine1.salesTable();
        salesParmTable.clear();
        salesParmTable.initValue();
        salesParmTable.initFromSalesTable(salesTable);
        salesParmTable.BatchAdministration = NoYes::Yes;
        salesParmTable.Transdate           = today();
        salesParmTable.InvoiceAccount      = 'US-028';
        salesParmTable.ParmJobStatus       = ParmJobStatus::Waiting;
        salesParmTable.Ordering            = DocumentStatus::Invoice;
        salesParmTable.ParmId              = salesParmUpdate.parmId;
        salesParmTable.insert();
        salesParmSubTable.clear();
        salesParmSubTable.initFromSalesTable(salesLine1.salesTable());
        salesParmSubTable.OrigSalesId = salesLine1.SalesId;
        salesParmSubTable.ParmId      = salesParmUpdate.ParmId;
        salesParmSubTable.insert();
        salesParmSubTable.clear();
        salesParmSubTable.initFromSalesTable(salesLine2.salesTable());
        salesParmSubTable.OrigSalesId = salesLine2.SalesId;
        salesParmSubTable.ParmId      = salesParmUpdate.ParmId;
        salesParmSubTable.insert();
        salesParmSubTable.reread();
        while (enumerator.moveNext())
        {
            salesLine = enumerator.current();
            salesParmLine.clear();
            salesParmLine.initFromSalesLine(salesLine);
            salesParmLine.DeliverNow = 2;
            salesParmLine.ParmId     = salesParmUpdate.ParmId;
            salesParmLine.TableRefId = salesParmTable.TableRefId;
            salesParmLine.setQty(DocumentStatus::Invoice, false, true);
            salesParmLine.setLineAmount(salesLine);
            salesParmLine.insert();
            salesParmLine.reread();
            table.addend(salesParmLine);
        }
        salesParmTable.reread();
        SalesFormLetter salesFormLetter = SalesFormLetter::construct(DocumentStatus::Invoice);
        salesFormLetter.salesParmUpdate(salesParmUpdate);
        salesFormLetter.parmId(salesParmUpdate.ParmId);
        salesFormLetter.parmLineList(table.pack());
        salesFormLetter.parmSourceTable(salesParmTable);
        salesFormLetter.createFromLines(true);
        salesFormLetter.multiForm(true);
        salesFormLetter.transDate(DateTimeUtil::getSystemDate(DateTimeUtil::getUserPreferredTimeZone()));
        salesFormLetter.editLinesChanged(true);
        salesFormLetter.validateAll(false);
        salesFormLetter.run();
        ttscommit;
    }
}
Categories:
  • Layan Jwei Profile Picture
    on at
    partially invoicing multiple sales orders into once invoice
  • SH-03071114-0 Profile Picture
    on at
    partially invoicing multiple sales orders into once invoice
    @Layan Jwei the link you provided fully invoices two sales orders into two separate invoices,
    what i want is to partially invoice these sales orders into one invoice

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Responsible AI policies

As AI tools become more common, we’re introducing a Responsible AI Use…

Pallavi Phade – Community Spotlight

We are honored to recognize Pallavi Phade as our Community Spotlight honoree for…

Leaderboard > Finance | Project Operations, Human Resources, AX, GP, SL

Last 30 days Overall leaderboard

Product updates

Dynamics 365 release plans