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;
{
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');
salesLine2 = SalesLine::find('SO000009');
List salesList = new List(Types::Record);
List table = new List(Types::Record);
List table = new List(Types::Record);
salesList.addEnd(salesLine1);
salesList.addEnd(salesLine2);
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();
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();
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.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();
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);
}
{
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();
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:

Report
All responses (
Answers (