|
21.07.2010, 12:48 | #1 |
Программатор
|
Я так понимаю у вас проводки строк заказа в статусе "в заказе". почему просто не перебирать все проводки строки заказа в нужном статусе и резервировать в нужной вам аналитике и с нужным количеством? Строки заказов вы знаете. Класс InventUpd_Reservation поможет это вам сделать. Если в проводке количество больше чем нужно зарезервировать, то по-моему проводка сама разделится на две - зарезервированную и заказанную. Хотя возможно я что то не понял и подзабыл
Последний раз редактировалось Sada; 21.07.2010 в 12:57. |
|
21.07.2010, 15:00 | #2 |
Участник
|
Так и делаю, только если делаешь InventMovement, на основе Inventtrans, он в конце концов всё равно делается на основе salesLine, в InventMovemnet:construct(). InventMov_Sales. На данный момент суммарная InventPickigListJournalLine делается на основе первой, тоесть все остальные прибавяются к ней. Соответсвенна она не удаляется, и InventTrans идет с типом TransChildType Picking list.Тоесть при
X++: reservation = InventUpd_Reservation::newMovement(inventMovement, _qty , _mayBeReduced, _forceNotReserveOrdered, _showInfo); reservation.updateNow(); ищутся InventTrans с X++: inventTrans.TransChildType == None
inventTrans.TransChildRefId == '' Ну и дальше что то типа такого X++: server static void makeReservation(Common _buffer, InventQty _qty, InventDim _inventDim, inventMovement _inventMovement = null, boolean _mayBeReduced =true, boolean _forceNotReserveOrdered = false, boolean _showInfo = true ) { InventMovement inventMovement = _inventMovement; InventUpd_Reservation reservation; InventDim inventDim; InventTrans inventTransLocal; Common _newBuffer; ; if(!inventMovement) { switch (_buffer.TableId) { case tablenum(InventTrans) : inventTransLocal = _buffer; switch (inventTransLocal.TransType) { case InventTransType::Sales : _newBuffer = inventTransLocal.salesLine(); inventMovement = Inventmovement::construct(_newBuffer); break; } break; default: inventMovement = InventMovement::construct(_buffer); break; } } if(_inventDim && inventMovement) { inventDim.data(_inventDim); inventMovement.inventdim(inventDim); } if(inventMovement) { reservation = InventUpd_Reservation::newMovement(inventMovement, _qty , _mayBeReduced, _forceNotReserveOrdered, _showInfo); reservation.updateNow(); } } |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|