Dynamics AX Blog - Beiträge vom Februar 2019
Ausgangsrechnung per Code buchen und dabei nur bestimmte Positionen wählen und ggf. die Menge anpassenMit Hilfe des folgenden Code ist es möglich eine Verkaufsrechnung für einen bestimmten Auftrag zu buchen und dabei nur ausgewählte Auftragspositionen zu verarbeiten. static void createSalesInvoiceSelectLines(Args _args) { SalesTable salesTable = SalesTable::find('001562'); SalesFormLetter salesFormLetter; SalesParmLine salesParmLine; setPrefix(funcName()); salesFormLetter = SalesFormLetter::construct(DocumentStatus::Invoice); // Do the steps manually, which normally are done in method salesFormLetter.update() salesFormLetter.salesTable(salesTable); salesFormLetter.initParmSalesTable(salesFormLetter.salesTable()); salesFormLetter.transDate(systemDateGet()); salesFormLetter.specQty(SalesUpdate::All); salesFormLetter.proforma(salesFormLetter.salesParmUpdate().Proforma); salesFormLetter.printFormLetter(salesFormLetter.printFormLetter()); salesFormLetter.printCODLabel(NoYes::No); salesFormLetter.printShippingLabel(NoYes::No); salesFormLetter.usePrintManagement(false); salesFormLetter.creditRemaining(salesFormLetter.creditRemaining()); salesFormLetter.createParmUpdateFromParmUpdateRecord( SalesFormletterParmData::initSalesParmUpdateFormletter( salesFormLetter.documentStatus(), salesFormLetter.pack(), true, false, false)); salesFormLetter.initParameters(salesFormLetter.salesParmUpdate(), Printout::Current); salesFormLetter.initLinesQuery(); while select forupdate salesParmLine where salesParmLine.ParmId == salesFormLetter.parmId() { setPrefix(#PrefixField(salesParmLine, InventTransId)); // ...Modify record/Delete record... } // Let's go if (salesFormLetter.validate(null)) { salesFormLetter.run(); } }
|
|
|
|
|
|
|
Die nachstehenden Code-Snippets sollen zeigen, wir man mit Hilfe der BatchHeader-Klasse Stapelverarbeitungsaufträge erstellen kann.
Beispiele für ein RunBaseBatch-Konstrukt