18.01.2021, 09:03 | #1 |
Участник
|
Комплектация. Перепоставка
AX 2012 R3
Заказ на продажу. Одна строка на кол-во 10. Перепоставка/недопоставка -0 % Создаю отгрузочную на 10, регистрация. Одна складская проводка в статусе Скомплектовано на 10. Далее разноска накладной на кол-во 15. И Акс легко мне это дает сделать. Мы чтото сильно не понимаем в идеологии комплектации? Лезу в код проверки. В нашем случае отработка попадает в InventMovement\checkNotOverDelivery в ветку где считается qtyPre - максимально разрешенное количество по строке: X++: qtyPre = abs(inventTransIdSum.receipt() + inventTransIdSum.registered() + inventTransIdSum.issue() + inventTransIdSum.picked()); Как тогда правильно работать с комплектацией? Мы ее используем для проверки и резервирования количества для машины клиента въехавшей на территорию. При этом фактическое превышение отгрузки над комплектацией у нас разрешено, но превышение над количеством "К поставке" - не разрешено. |
|
19.01.2021, 10:32 | #2 |
Аманд
|
Да
Цитата:
При этом фактическое превышение отгрузки над комплектацией у нас разрешено, но превышение над количеством "К поставке" - не разрешено.
2. Превышение отгрузки над комплектацией - управляется галками "требуется регистрация и требуется комплектация" в группах складских моделей. Цитата:
Создаю отгрузочную на 10, регистрация. Одна складская проводка в статусе Скомплектовано на 10.
Далее разноска накладной на кол-во 15. И Акс легко мне это дает сделать Здесь ещё мы перепоставку обсуждали Частичная отмена строк отгрузки |
|
19.01.2021, 10:36 | #3 |
Аманд
|
Цитата:
Как тогда правильно работать с комплектацией?
Для резервирования - используйте функцию резервирования. Когда кладовщик изменяет статус на скомплектовано (в любой из трёх основных форм) то он подтверждает, что товар готов к отгрузке. Если хотите, чтобы Скомплектовано == Разнесено в накладной, то ставьте галку "требуется комплектация" |
|
19.01.2021, 12:29 | #4 |
Участник
|
Цитата:
У нас разрешено превышение над комплектаций. Значит галку "требуется комплектация" не ставим. Все правильно получается настроено? Цитата:
Цитата:
Сообщение от Vals
Комплектация это в первую очередь складская процедура отбора товара с мест хранения на места отгрузки (если включить WMS то траспортировка паллет).
Для резервирования - используйте функцию резервирования. Когда кладовщик изменяет статус на скомплектовано (в любой из трёх основных форм) то он подтверждает, что товар готов к отгрузке. Машина идет на коммерческие весы, в место где оформляют накладную и пр. документы. Общий вес оказался чуть больше чем на весах кладовщика. Но товар оплачен, все согласны - делаю документы на фактический вес. Если же вес превысит разрешенное по заказу - документы выписаться не должны. Едет на разгрузку. Мы этого как раз не хотим - поэтому не ставим. |
|
19.01.2021, 12:45 | #5 |
Аманд
|
Цитата:
Непонятно. Основываясь на каком принципе позволяется отпустить больше чем разрешено процентом перепоставки в заказе? Пример бытовой есть?
Цитата:
Хорошо. Другой пример. У клиента большой заказ на период. Машины приходят. Кладовщик отгрузил. Т.е. скомплектовал, сказал - готово к отгрузке.
Машина идет на коммерческие весы, в место где оформляют накладную и пр. документы. Общий вес оказался чуть больше чем на весах кладовщика. Но товар оплачен, все согласны - делаю документы на фактический вес. Если же вес превысит разрешенное по заказу - документы выписаться не должны. Едет на разгрузку. Пример: Заказ на 100т (отгрузка машинами по 20т) перепоставка 10% Отгрузка 1 - 20 т - разнесли (к поставке 80) Отгрузка 2 - 30 т - разнесли (к поставке 50) (для системы перепоставки нет, так как остаток отггрузки ещё 50т) Отгрузка 3 - 60 т - разнесли, система отругается на перепоставку. В вашем случчае для таких частичных отгрузок есть пара вариантов: 1. Делать большой договр на 100 т типа Контракт и на его основе делать связанные заказы по 20 т с контролем перепоставки. Но плохо то, чтчо контракты не видны для Сводного планирования и не будет учтены - нужно сразу создавать связанные. 2. Делать договор - из него делать заказы 3. Делать Проект - из него делать заказы по 20т. Идея, которая придёт кому-нибудь в голову - переписать контроль перепоставки на скомплектованное количество - не нужно
__________________
- Видеобиблиотека Dynamics AX на YouTube . - наше отраслевое решение для Портов, Судовладельцев, Контейнерных терминалов и Транспортных компаний - Checkmarx - аудит исходного кода программ на безопасность Dynamics AX внедрение ERP и BI Последний раз редактировалось Vals; 19.01.2021 в 13:04. |
|
19.01.2021, 13:25 | #6 |
Участник
|
Цитата:
Причем если я не делаю отгрузочную, а сразу разношу заказанное - мне система не дает разнести больше чем "К поставке" с учетом процента перепоставки. Цитата:
Цитата:
Сообщение от Vals
Пример:
Заказ на 100т (отгрузка машинами по 20т) перепоставка 10% Отгрузка 1 - 20 т - разнесли (к поставке 80) Отгрузка 2 - 30 т - разнесли (к поставке 50) (для системы перепоставки нет, так как остаток отггрузки ещё 50т) Отгрузка 3 - 60 т - разнесли, система отругается на перепоставку. Цитата:
Я смотрю код вычисления qtyPre - скомплектованное количество складывается дважды. Выглядит как будто задумано так. Но я не понимаю прикладного смысла такого расчета. Где и как оно должно логично себя повести? Поэтому меня подмывает посчитать это багом - и убрать одно слагаемое. |
|
19.01.2021, 18:11 | #7 |
Участник
|
Автор имел в виду, что вот в этом коде
X++: qtyPre = abs(inventTransIdSum.receipt() + inventTransIdSum.registered() + inventTransIdSum.issue() + inventTransIdSum.picked()); В результате, в этой формуле значение inventTransIdSum.receipt() и inventTransIdSum.picked() удваиваются. Вот автор и в недоумении Цитата:
Тужусь понять почему Picked считают дважды? Не понимаю. В итоге qtyPre = 20, и никакого превышения нет. Далее в коде добивается заказанное до 15 и все прекрасно разносится.
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
22.01.2021, 19:30 | #8 |
Участник
|
Угу. Как оказалось, в младших версиях dax действительно скомплектованное количество в этих методах не учитывалось
\Classes\InventTransIdSum Вот для класса dax4 X++: InventQty issue() { if (! transaction) this.calcSum(); return sold -inventSum.Deducted -inventSum.ReservPhysical -inventSum.ReservOrdered -inventSum.OnOrder -inventSum.QuotationIssue; } А вот для класса dax2012 X++: /// <summary> /// Calculates and returns the total quantity being issued. /// </summary> /// <returns> /// The quantity being issued. /// </returns> public InventQty issue() { if (!totalsHasBeenCalculated) { this.calcSum(); } return sold -inventSum.Deducted -inventSum.Picked -inventSum.ReservPhysical -inventSum.ReservOrdered -inventSum.OnOrder -inventSum.QuotationIssue; } Разница именно в Picked. Хотя надо заметить, что в dax4 значение qtyPre просто считывалось из поля строки документа
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
22.01.2021, 21:30 | #9 |
северный Будда
|
Цитата:
receipt и issue по своему смыслу это физически произошедший приход и расход. регистрация и комплектация к физическому движению товара отношения не имеют. так что вопрос надо бы поставить по-другому - зачем были модифицированы методы receipt и issue? и как это проглядели на тестировании модификаций????
__________________
С уважением, Вячеслав |
|
24.01.2021, 18:32 | #10 |
Участник
|
Это было бы логичное рассуждение, если бы в сумме не учитывали значений "Заказано" (OnOrder). Формально, это тоже еще не расход.
Так что, скорее, это исправление очень старой ошибки, которая привела к возникновению новых ошибок
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
25.01.2021, 20:30 | #11 |
северный Будда
|
одно другого не отменяет))))
__________________
С уважением, Вячеслав |
|