Dynamics AX Blog - Beiträge von 2015 - Seite 6
Nummernkreis für einen EDT findenVor kurzem hatte ich ein Problem mit einem Nummernkreis in einem Formular. Allerdings wusste ich den Namen des Nummernkreises nicht, sodaß ich im Nummernkreisformular danach hätte suchen können. Also habe ich den folgenden Job geschrieben, der mir auf Basis des EDTs des Feldes (in meinem Fall PurchReqTable.PurchReqId) aus meinem Formular den Nummernkreiscode ermittelt. Damit war der Nummernrkreis schnell gefunden und das Problem behoben. info(strFmt("%1", NumberSequenceTable::find( NumberSeqReference::findReference( extendedTypeNum(PurchReqId)).NumberSequenceId).NumberSequence)); |
Reservieren/Unreservieren einer AuftragspositionBeispiele wie man eine Auftragsposition reserviert oder unreserviert findet man im Internet des Öfteren. Allerdings habe ich kein Beispiel gefunden, wo anschließend geprüft wurde ob diese Reservierung auch gut gegangen ist. Deshalb habe ich mir ein solches Stück Code selbst erarbeiten dürfen. Dabei vergleiche ich ganz einfach den vorher reservierten Wert mit dem danach reservierten Wert. Ist dieser ident, gehe ich davon aus, daß die Reservierung nicht gut gegangen ist. static void reserveSalesLine(Args _args) { InventTransIdSumSingleStatus inventTransIdSumSingleStatus; SalesLine salesLine; InventMovement inventMovement; InventDim inventDim; InventDimParm inventDimParmCriteria; InventQtyReservPhysical oldReservedQty; InventQtyReservPhysical newReservedQty; InventUpd_Reservation inventUpd_Reservation; InventQty reserveQty; // Inline method to get current reserved quantity for specific inventDim InventQtyReservPhysical getReservedQty() { inventDimParmCriteria.initFromInventDim(inventDim); inventTransIdSumSingleStatus = InventTransIdSumSingleStatus::newTransOriginIdStatus(InventTransOriginSalesLine::findInventTransOriginId(salesLine.DataAreaId, salesLine.InventTransId), StatusReceipt::None, StatusIssue::ReservPhysical); inventTransIdSumSingleStatus.parmInventDimCriteria(inventDim); inventTransIdSumSingleStatus.parmInventDimParmCriteria(inventDimParmCriteria); return inventTransIdSumSingleStatus.reservPhysical(); } // Sales order line salesLine = SalesLine::findInventTransId('012431'); inventMovement = InventTrans::findTransId(salesLine.InventTransId).inventMovement(true); // Build inventDim-Record, where the quantity should be reserved inventDim.clear(); inventDim.InventSiteId = "1"; inventDim.InventLocationId = "12"; inventDim.wmsLocationId = "12"; inventDim = InventDim::findOrCreate(inventDim); // Get current physical reserved Quantity oldReservedQty = getReservedQty(); // Set quanity which should be reserved (negative values to reserve, postive value to unreserve) reserveQty = -2; inventUpd_Reservation = InventUpd_Reservation::newInventDim(inventMovement, inventDim, reserveQty, true); inventUpd_Reservation.updateNow(); // Get new reserved quantity newReservedQty = getReservedQty(); // Compare old and new reserved quantity to identify if reservation failed if(oldReservedQty == newReservedQty) { error("Reservation failed."); } } |
|
|
|
|
|
|
Der folgende Job erstellt eine Position für eine Kommissionierliste eines Produktionsauftrages.