Dynamics AX Blog - Beiträge vom 3 Februar 2019

Momentan angezeigt werden nur Beiträge vom »3. Februar 2019«. Filter entfernen

Ausgangsrechnung per Code buchen und dabei nur bestimmte Positionen wählen und ggf. die Menge anpassen

Mit 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.
Der Trick dabei ist, sich über die Standardfunktionalität über die Methode initLinesQuery() die Tabelle SalesParmLine aufbauen zu lassen und vor dem eigentlichen Buchungsvorgang diese Datensätze zu modifizieren. Beispielsweise indem man ganze Datensätze aus der SalesParmLine löscht.

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();
    }
}

 


 
 
 

 

 
 
 
Beiträge des aktuellen Monats
Februar 2019
MoDiMiDoFrSaSo
 123
45678910
11121314151617
18192021222324
25262728 
 
© 2006-2024 Heinz Schweda | Impressum | Kontakt | English version | Mobile Version
Diese Webseite verwendet Cookies, um Benutzern einen besseren Service anzubieten. Wenn Sie weiterhin auf der Seite bleiben, stimmen Sie der Verwendung von Cookies zu.  Mehr dazu