Dynamics AX Blog - Beiträge vom April 2020

Momentan angezeigt werden nur Beiträge vom »April 2020«. Filter entfernen

Kommissionierliste eines Verkaufsauftrages per Code erfassen

Das nachstehende Code-Beispiel zeigt. wie man per Code eine Erfassung für eine Kommissionierliste buchen kann (in der Annahme daß beispielsweise alle notwendigen Informationen wie Entnahmelagerplatz usw. bereits eingetragen wurden).

Screenshot

static void pickingListRegistration(Args _args)
{
    WMSPickingRouteID pickingRouteID = "00061";    // Route id to be picked
    List list = new List(Types::String);

    list.addEnd(pickingRouteID);

    WMSPickingRoute::finishMulti(list.pack());

    wmsDeliverPickedItems::checkDeliverPickedItems(pickingRouteID, list.pack());
}

 


 
 
 

Kommissionierliste für bestimmte Positionen eines Verkaufsauftrages erstellen

Ich kenne keine Möglichkeit, wie man eine Kommissionierliste nur für bestimmte Auftragspositionen per Code erstellt.

Deshalb nutze ich in dem folgenden Code-Beispiel folgenden Ansatz:

Ich erstelle die Kommissionierliste mit Hilfe des SalesFormLetter-Frameworks und lösche vor dem entscheidenden Schritt (dem Ausführen der run()-Methode) jene Einträge in der Tabelle SalesParmLine, die ich nicht benötigte.

Screenshot

static void createSalesPickingListSingleLine(Args _args)
{
    SalesTable salesTable = salesTable::find("001862"); // Sales order
    container inventTransIdCon = ["014015", "014016"];  // LOT-IDs to pick
    SalesFormLetter salesFormLetter;
    SalesParmLine salesParmLine;
    
    salesFormLetter = SalesFormLetter::construct(DocumentStatus::PickingList);

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

    // Delete unwanted records in SalesParmLine
    while select forupdate salesParmLine
        where salesParmLine.ParmId == salesFormLetter.parmId()
    {
        if (conFind(inventTransIdCon, salesParmLine.InventTransId) == 0)
        {
            salesParmLine.delete();
        }
    }

    // Let's go
    salesFormLetter.run();
}

 


 
 
 

Kommissionierliste für alle Positionen eines Verkaufsauftrages erstellen

Das nachstehende Code-Beispiel zeigt. wie man per Code eine Kommissionierliste für alle Positionen eines Verkaufsauftrages erstellen kann.

Screenshot

static void createSalesPickingList(Args _args)
{
    SalesTable salesTable = SalesTable::find("000752");
    SalesFormLetter salesFormLetter;

    salesFormLetter = SalesFormLetter::construct(DocumentStatus::PickingList);
    salesFormLetter.update(salesTable, systemDateGet(), SalesUpdate::All);
}

 


 
 
 

 

 
 
 
Beiträge des aktuellen Monats
April 2020
MoDiMiDoFrSaSo
 12345
6789101112
13141516171819
20212223242526
27282930 
 
© 2006-2020 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