Erstellen und Buchen eines Umlagerungsjournal in AX 2009 mit Erfassung und Entnahme

In einem früheren Beitrag habe ich anhand eines kurzen Code-Beispiels demonstriert, wie man in AX 2009 ein Umlagerungsjournal per Code erstellen und buchen kann. Im folgenden findet Ihr ein Beispiel welches, soferne es die Lagersteuerungsgruppe des Artikel erfordert, sich auch um die zugehörige Entnahme- und -Erfassungsbuchung kümmert.

static void createAndPostInventJournalTransfer_II(Args _args)
{
    inventJournalTable  inventJournalTable;
    inventJournalTrans  inventJournalTrans;
    journalCheckPost    journalCheckPost;
    itemId              _itemId             = "9992";
    qty                 _qty                = 1;
    inventDimId         _fromInventDimId    = "00008328_069";
    inventDimId         _toInventDimId      = "00008342_069";

    tmpInventTransWMS   tmpInventTransWMS;
    inventTRans         inventTRans;

    InventTransWMS_Pick     inventTransPick;
    InventTransWMS_Register inventTransRegister;
    ;

    try
    {
        ttsbegin;

        // Create header
        inventJournalTable.clear();
        inventJournalTable.initValue();

        inventJournalTable.initFromInventJournalName(
            InventJournalName::find(InventJournalName::standardJournalName(InventJournalType::Transfer)));

        inventJournalTable.SystemBlocked    = NoYes::Yes;
        inventJournalTable.BlockUserId      = curUserId();

        inventJournalTable.insert();

        // Create line
        inventJournalTrans.clear();

        inventJournalTrans.initValue();
        inventJournalTrans.initFromInventJournalTable(inventJournalTable);

        inventJournalTrans.ItemId           = _itemId;
        inventJournalTrans.initFromInventTable(inventTable::find(inventJournalTrans.ItemId));

        inventJournalTrans.Qty              = _qty;

        inventJournalTrans.inventMovement().journalSetCostPrice();

        inventJournalTrans.inventDimId      = _fromInventDimId;
        inventJournalTrans.toinventDimId    = _toInventDimId;

        inventJournalTrans.voucher          = numberSeq::newGetVoucherFromCode(
                                                    InventJournalName::find(inventJournalTable.JournalNameId).VoucherSeqId).voucher();

        inventJournalTrans.insert();

        if(inventModelGroup::find(inventTable::find(_itemId).ModelGroupId).MandatoryPick)
        {
            // Picking
            inventTrans.clear();
            inventTrans = inventTrans::findTransId(inventJournalTrans.InventTransId);

            tmpInventTransWMS.clear();
            tmpInventTransWMS.initFromInventTrans(inventTrans);

            tmpInventTransWMS.InventQty = inventTrans.StatusIssue == StatusIssue::Picked ? inventTrans.Qty : -inventTrans.Qty;
            if (tmpInventTransWMS.validateWrite())
            {
                tmpInventTransWMS.write();
            }

            inventTranspick = new InventTransWMS_Pick(inventTRans.inventMovement(),tmpInventTransWMS);
            inventTranspick.writeTmp(tmpInventTransWMS,tmpInventTransWMS.orig(),false);

            InventTransWMS_Pick::updateInvent(inventTransPick, tmpInventTransWMS);
        }

        if(inventModelGroup::find(inventTable::find(_itemId).ModelGroupId).MandatoryRegister)
        {
            // Registration
            inventTrans.clear();
            inventTrans = inventTrans::findTransId(inventJournalTrans.toInventTransId);

            tmpInventTransWMS.clear();
            tmpInventTransWMS.initFromInventTrans(inventTrans);

            tmpInventTransWMS.InventQty = inventTrans.StatusReceipt == StatusReceipt::Ordered ? inventTrans.Qty : -inventTrans.Qty;
            if (tmpInventTransWMS.validateWrite())
            {
                tmpInventTransWMS.write();
            }

            inventTransRegister = new InventTransWMS_Register(inventTrans.inventMovement(),tmpInventTransWMS);
            inventTransRegister.writeTmp(tmpInventTransWMS,tmpInventTransWMS.orig(),false);

            InventTransWMS_Register::updateInvent(inventTransRegister, tmpInventTransWMS);
        }

        // Post journal
        journalCheckPost = InventJournalCheckPost::newJournalCheckPost(JournalCheckPostType::Post, inventJournalTable);
        journalCheckPost.run();

        ttscommit;
    }
    catch (Exception::Error)
    {
        throw exception::Error;
    }
}
Dieser Beitrag bezieht sich auf die Version:
Dynamics AX 2009

Kommentar hinzufügen
 
 

 

 
 
 
Beiträge des aktuellen Monats
März 2024
MoDiMiDoFrSaSo
 123
45678910
11121314151617
18192021222324
25262728293031
 
© 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