22.05.2012, 12:39 | #1 |
Участник
|
Изменения остатков в строке заказа на перемещение
Вот вчера наткнулся на такую особенность:
Если в строке заказа на продажу изменить в коде количество в полях остатков (RemainInventPhysical / RemainSalesPhysical) а потом просто вызвать X++: salesLine.update() Если жи такую же операцию произвести со строкой заказа на перемещение, при этом поправив оба количества: Отгрузить остаток и Получить остаток, а потом вызвать обновления буффера, то проводки будут неправильно откорректированы, если количество остатка обнулить X++: inventTransferLine.QtyRemainShip -= qty;
inventTransferLine.QtyRemainReceive -= qty;
/*или так inventTransferLine.synchronizeQtyRemainReceive();*/
invnetTransferLine.update(); При этом, как известно, проводки Транзита смаркированы между собой. Так вот, при удалении проводки Транзит НА будет удалена маркировка и вызван метод X++: invnetTransferLine.doUpdate() К счастью есть чудесный метод, который используется из функции на форме: X++: inventTransferLine.updateDeliverRemainder() X++: movementFrom = InventMovement::construct(this);
estimatedFrom = InventUpd_Estimated::newInventMovement(movementFrom);
estimatedFrom.updateNow();
estimatedTransitTo = InventUpd_Estimated::newInventMovement(InventMovement::construct(this,InventMovSubType::TransferOrderTransitTo));
estimatedTransitTo.updateNow();
this.QtyRemainReceive = qtyRemainReceive; /*здесь происходит принудительное восстановление остатка*/
movementTransitFrom = InventMovement::construct(this,InventMovSubType::TransferOrderTransitFrom);
estimatedTransitFrom = InventUpd_Estimated::newInventMovement(movementTransitFrom);
estimatedTransitFrom.updateNow();
estimatedTo = InventUpd_Estimated::newInventMovement(InventMovement::construct(this,InventMovSubType::TransferOrderTo));
estimatedTo.updateNow(); Удачи в разработке!
__________________
http://www.axdevposts.blogspot.com Пришел, уведел.... отойди, дай другому увидеть! |
|
Теги |
inventtransferline, заказ на перемещение, остатки |
|
|