Показать сообщение отдельно
Старый 04.06.2013, 13:52   #1  
IKA is offline
IKA
Участник
 
359 / 65 (3) ++++
Регистрация: 15.03.2006
Ax2009 RU2: резервирование строк заказа - баг?
Есть заказ с 1 строкой с количеством 56 и unit = 'уп3кг'.
Для этой номенклатуры: Складская единица - кг, ед. продажи(sales unit) - BOXx3kg.
В форме Конвертации задано 3 кг = 1 'уп3кг'.

Стоим на строке заказа, жмем Stock-> reservation. В верхней части формы ед изм 'уп3кг'. Все данные отображаются в этой ед. изм. Все корректно. Если изменить на кг, то все корректно пересчитается, т. е умножится на 3.

Выбираю строку, где в наличии 56.5 ('уп3кг')(т.е по идее вся строка "в наличии" может покрыть потребность 56 из стоки моего заказа), жму Reserve line.
В результате получаю в колонке 18.667. (т.е аккурат 56/3).

Если же нажать reserve line с установленной ед. изм "кг" (выбрать ее вверху формы резервации) то все отрабатывает корректно(т.е на наличии показывается 169.5 и резервируется 168 (56*3))

По коду в дебаггере видно. что в InventUpd_Reservation->updateReserveFromForm приходит количество в 'уп3кг' и оно же передается потом в InventUpdate_Reservartion->updateNow() и тд, где все вычисления уже идут в складских единицах.

Если я прав понимаю, это кой-то стд. баг , но не нахожу fix для него. Кто-нить знает, был ли такой?

Я покавижу "доморощенный" фикс такой: в InventOnhandReserve->updateReserveLine изменить код след образом
X++:
qty = inventItemUnitConvert.qty(this.reserveNow(false,_inventSum,0)+qty, unitIdSecondary, unitIdInvent, _inventSum.ItemId);
this.updateReserveNow(_inventSum,inventDim, qty); 
// this.updateReserveNow(_inventSum,inventDim,this.reserveNow(false,_inventSum,0)+qty);

Ax2009 RU2, Eng.
За это сообщение автора поблагодарили: Kabardian (3).