10.02.2012, 14:30 | #1 |
Британский учённый
|
Резервация заказа на выбранном складе
Что то отказывается резервировать строку заказа с указанного склада. Казалось бы должен, но резервирует полностью игнорируя InventDim.
X++: inventMovement = InventMovement::construct(salesLine); inventDim_KFG_SQUARE.InventLocationId = 'KFG'; inventDim_KFG_SQUARE.wMSLocationId = 'SQUARE'; inventDim_KFG_SQUARE = InventDim::findDim(inventDim_KFG_SQUARE); qtyOnhand = InventOnHand::newPhysicalInvent(inventMovement, inventDim_KFG_SQUARE).availPhysical(); if (qtyOnhand) { if(inventMovement) { inventDimParmFixed.initFromInventDim(inventDim_KFG_SQUARE); reservation = InventUpd_Reservation::newParameters( inventMovement, inventDim_KFG_SQUARE, inventDimParm, InventDimFixedClass::inventDimParm2InventDimFixed(inventDimParmFixed), -reserveNow, true, true); reservation.parmShowInfo(true); reservation.parmInventDimCriteria(inventDim_KFG_SQUARE); reservation.updateNow(); reservation.deleteInvalidMarking(inventMovement, inventDim_KFG_SQUARE); //InventUpd_Reservation::updateReserveFromForm(salesLine, inventDim_KFG_SQUARE, inventDimParm, reserveNow); } } DAX 4 SP2
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще. |
|
10.02.2012, 15:12 | #2 |
Участник
|
А как у вас inventDimParm инициализируеся?
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: Link (2). |
10.02.2012, 15:27 | #3 |
Британский учённый
|
Спасибо, Andy, не заметил, что там флаги выставляются
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще. |
|
10.02.2012, 15:33 | #4 |
Британский учённый
|
Рабочий код. Суть джоба: резервация заказа (SalesLine) на складе 'KFG' с приоритетом в локейшене 'SQUARE'.
X++: if (salesLine && reserveQty) { inventMovement = InventMovement::construct(salesLine); if (reserveQty) { //inventDim_KFG_SQUARE.InventSiteId = 'KAB'; inventDim_KFG_SQUARE.InventLocationId = 'KFG'; inventDim_KFG_SQUARE.wMSLocationId = 'SQUARE'; inventDim_KFG_SQUARE = InventDim::findDim(inventDim_KFG_SQUARE); //inventDim_KFG.InventSiteId = 'KAB'; inventDim_KFG.InventLocationId = 'KFG'; inventDim_KFG = InventDim::findDim(inventDim_KFG); inventDimParm.initFromInventDim(inventDim_KFG_SQUARE); qtyOnhand = InventOnHand::newParameters(salesLine.ItemId, inventDim_KFG_SQUARE, inventDimParm).availPhysical(); if (qtyOnhand) { reserveNow = qtyOnhand >= reserveQty ? reserveQty : qtyOnhand; reserveQty -= reserveNow; if(inventMovement) { InventUpd_Reservation::updateReserveFromForm(salesLine, inventDim_KFG_SQUARE, inventDimParm, reserveNow); } } if (reserveQty) { inventDimParm.initFromInventDim(inventDim_KFG); qtyOnhand = InventOnHand::newParameters(salesLine.ItemId, inventDim_KFG, inventDimParm).availPhysical(); if (qtyOnhand) { reserveNow = qtyOnhand >= reserveQty ? reserveQty : qtyOnhand; reserveQty -= reserveNow; InventUpd_Reservation::updateReserveFromForm(salesLine, inventDim_KFG, inventDimParm, reserveNow); } } if (reserveQty) { warning(strfmt('Qty \'%1\' not reserved for item \'%2\' Sales Order \'%3\'.', reserveQty, salesLine.itemId, salesLine.SalesId)); } else { info(strfmt('Reserved %1.', reserveStock.InventTransId)); reserveStock.Reserved = NoYes::Yes; reserveStock.doUpdate(); } } }
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще. Последний раз редактировалось Link; 10.02.2012 в 16:15. |
|