При резервирование номенклатуры с использованием WMS в AX 2012 R3 столкнулись с неприятной особенностью обработки российских аналитик отслеживания с настроенным пропуском в заказах на перемещение: резервирование номенклатуры (проводок) для продажи с транзитного склада не производилось. Принять номенклатуру с использование ТСД на склад при приходе не получалось.
Для решения проблемы были внесены следующие изменения (без претендования на истину довожу результаты сравнения проекта с sys-слоем)
В перечисление WHSHierarchyLevel добавить значение для ГТД (если используются аналитики «Владелец» и «Профиль учета», то добавить их в перечисление). По большей части не влияет на функциональность, но при отладке резервирования для российских аналитик отслеживания код будет возвращать пустой уровень иерархии резервирования.
Внести исправления в классы резервирования WMS:
1. Класс WHSReservationHierarchyInventDimUtil, метод deepestLevelFromInventDimParm():
Добавить в описание метода
X++:
/// <param name="_inventDim">
/// <c>InventDim</c> inventdim.
/// </param>
заменить
X++:
public static WHSReservationHierarchyLevel deepestLevelFromInventDimParm(
List _reservationHierarchy,
InventDimParm _inventDimParm)
на
X++:
public static WHSReservationHierarchyLevel deepestLevelFromInventDimParm(
List _reservationHierarchy,
InventDimParm _inventDimParm,
//WHSReserveGTD, Корректировка классов приемки по заказу на перемещение WMS, , 09.2016 -->
InventDim _inventDim = null
//WHSReserveGTD, Корректировка классов приемки по заказу на перемещение WMS, , 09.2016 <--
)
заменить
X++:
_inventDimParm.(InventDim::dim2dimParm(dimensionFieldId)))
на
X++:
_inventDimParm.(InventDim::dim2dimParm(dimensionFieldId))
//WHSReserveGTD, Корректировка классов приемки по заказу на перемещение WMS, , 09.2016 -->
&& (!_inventDim || _inventDim.(dimensionFieldId))) //не учитывать в расчете иерархии пустые значения аналитик.
//WHSReserveGTD, Корректировка классов приемки по заказу на перемещение WMS, , 09.2016 <--
2. Класс WHSInventReserveQtyCalculator, метод initializeCalculations():
заменить
X++:
requestedInventDimParm);
на
X++:
requestedInventDimParm,
//WHSReserveGTD, Корректировка классов приемки по заказу на перемещение WMS, , 09.2016-->
inventDimCriteria
//WHSReserveGTD, Корректировка классов приемки по заказу на перемещение WMS, , 09.2016<--
);