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.
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
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; } }