click fraud detection

Алгоритм создания строк журнала резервного запаса модуля "Сводное планирование" Microsoft Dynamics AX

Дата публикации: 17.11.2017
Алгоритм создания строк журнала резервного запаса модуля "Сводное планирование" Microsoft Dynamics AX

Модуль «Сводное планирование» / «Журналы» / «Резервный запас» / «Строки» / кн. «Строки журнала» / «Создать строки».

1. Вычисляется количество месяцев (numOfMonth) между датой начала и датой конца расчета.

2. Формируется цикл по номенклатурам, которые отбираются за счет фильтра на форме создания строк:

 

2.1. Для каждой номенклатуры (ItemId) определяется группа складских аналитик и конкретные аналитики, для которых в справочнике групп аналитик стоит признак «Покрытие».

2.2. Для каждой номенклатуры выполняется запрос к таблице проводок со следующими условиями:

  • Физ. дата должна входить в интервал расчета;
  • Статус прихода должен быть пуст;
  • Статус расхода должен принимать одно из значений: «Продано», «Отпущено», «Скомплектовано»;
  • Поле «Возврат по накладной» = «Нет»;
  • Поле «Возврат по отборочной накладной» = «Нет».

Из таблицы проводок выбираются сгруппированные записи по конкретной номенклатуре, аналитикам покрытия (их может быть несколько, не только склад) и рассчитывается сумма по количеству (Qty).

2.3. Для каждой сгруппированной проводки (в пределах одной номенклатуры группировка может расщепиться по значениям аналитик покрытия) формируется цикл.

2.3.1. Т.к. в п. 2.2 нет разделения на типы расходных проводок, в итоговое количество (Qty) попадает количество номенклатуры по переносам, поэтому первым шагом вычисляется количество по переносам (qtyTransfer) с тем же условиями (что в п. 2.2), но дополнительно проверяется, что проводка является переносом;

2.3.2. Далее рассчитывается спрос (demand) как разница:

demand = Qty – qtyTransfer;

2.3.3. Формируется строка журнала резервного запаса, при этом заполняются поля:

  • Код номенклатуры = ItemId (+ поля, такие как наименование номенклатуры, № кат. инициализируются из номенклатурного справочника);
  • Аналитики покрытия;
  • Среднемесячный расход (InventQtyAvgIssueMonth) = demand / numOfMonth;
  • Дата первого расхода;
  • Дата последнего расхода.

Если была установлена галка «Подсчитать стандартные отклонения»:

  • Код номенклатуры = ItemId (+ поля, такие как наименование номенклатуры, № кат. инициализируются из номенклатурного справочника);
  • Аналитики покрытия;
  • Среднемесячный расход (InventQtyAvgIssueMonth) = demand / numOfMonth;
  • Дата первого расхода;
  • Дата последнего расхода.

2.3.4. Если была установлена галка «Подсчитать стандартные отклонения»:

то рассчитывается стандартное среднеквадратическое отклонение (StdDeviationIssueMonth) по формуле:

где demandi – спрос на каждый месяц, который рассчитывается в пределах каждого месяца расчетного периода по алгоритму п. 2.3.

И это среднеквадратическое отклонение присваивается в соответствующее поле строки журнала резервного запаса.

2.4. После того как расчет по проводкам закончен, алгоритм начинает добирать строки журнала резервного запаса настройками, сделанными в покрытии номенклатуры (Модуль «Управление запасами» / «Номенклатуры» / кн. «Настройка» / «Покрытие номенклатуры»), только теми, которые не попали при расчете проводок:

Все рассчитанные показатели можно посмотреть на вкладке «Статистика»:

Алгоритм подсчета предложений минимума для строк журнала резервного запаса

Модуль «Сводное планирование» / «Журналы» / «Резервный запас» / «Строки» / кн. «Строки журнала» / «Подсчет предложений»

1. Организуется цикл по строкам обрабатываемого журнала

Если был выбран метод расчета «Использовать средний расход за время упреждения», необходимо задать коэффициент (issueLeadtimeFactor) и резерв времени упреждения (leadTimeMargin):

то предложение рассчитывается по формуле:

Предложение  = («Средний расход за время упреждения» (на вкладке «Статистика» строк журнала) + «Средний расход за резерв времени упреждения») * Коэффициент (issueLeadtimeFactor).

Далее значение Предложения округляется в меньшую сторону до количества знаков в складской единице измерения номенклатуры.

Где,

«Средний расход за время упреждения» (на вкладке «Статистика» строк журнала) – это дробь, в числителе находится произведение «Среднемесячного расхода номенклатуры (InventQtyAvgIssueMonth)» на «Время упреждения закупки номенклатуры в днях» (которое подбирается либо из покрытия номенклатуры:

либо из настроек самой номенклатуры на вкладке «Количество»:

причем галка «Рабочие дни» в обоих случаях имеет большое значение, в случае если она установлена то время упреждение рассчитывается в рабочих днях, т.е. «Время упреждения» * 7 / 5, в обратном случае берется просто время упреждения), а в знаменателе число 30 (среднее количество дней в месяце),

а «Средний расход за резерв времени упреждения» - это дробь, в числителе произведение «Среднемесячного расхода номенклатуры (InventQtyAvgIssueMonth)» на «Резерв времени упреждения (leadTimeMargin)», а в знаменателе число 30 (среднее количество дней в месяце).

1.2. Если был выбран метод расчета «Использовать уровень услуг», необходимо выбрать % уровня услуг (ReqMinServiceLevel) и указать резерв времени упреждения (leadTimeMargin):

то предложение рассчитывается по формуле.

1.2.1. Рассчитывается время упреждения в днях (leadTimeInDays) в зависимости от признака «Рабочие дни»

1.2.2. Работает формула:

где,

StdDeviationIssueMonth – стандартное среднеквадратическое отклонение

leadTimeInDays - время упреждения в днях (рабочих или нет)

leadTimeMargin – резерв времени упреждения

2ServiceFactor(ReqMinServiceLevel) - функция, которая возвращает определенный коэффициент от % уровня услуг:

1.3. Если была установлена галка «Предложение = Новый минимум», то рассчитанные значения предложений попадут автоматически в поле минимум

Результат работы виден на вкладке «Обзор» строк журнала резервного запаса:

Описание методов из документации:

Метод

Описание

Использовать средний расход за время упреждения

Это упрощенный способ определения минимального уровня запасов. Минимальный уровень запасов рассчитывается для покрытия средних расходов за время общей продолжительности производственного цикла. Общая продолжительность производственного цикла – это время, необходимое для производства номенклатур, плюс указываемый резерв времени упреждения.

Использовать уровень услуг

Минимальный уровень запасов основывается на среднеквадратичном отклонении и желательном уровне услуг. Следовательно, эту функцию можно использовать только в случае, если установлен флажок «Подсчитать стандартные отклонения». Этот вариант позволяет задать либо высокий уровень услуг, чтобы предотвратить исчерпание запасов, либо пониженный уровень услуг, но с уменьшением затрат на хранение запасов.

 

Акция "Тест-драйв Сопровождения"

Попробуй сопровождение АХ до подписания договора!


Узнать подробнее

Другие записи в блоге

22.11.2017
18.10.2017
Какую цену вы бы заплатили, чтобы иметь возможность делать так в X ++?for (int i = 1; i <= n; i++)   {}    Или так:
12.10.2017
В AX7 X++ теперь поддерживается ключевое слово const. Его семантика аналогична семантике в C#. Если вкратце, то это позволяет вам определять члены в классе и переменные в методе, они могут быть...

Подпишитесь на блог

Все интересные статьи нашего блога на Вашем почтовом ящике!


Подписка

Служба контроля качества сервиса

Свои пожелания и отзывы о качестве обслуживания Вы можете оставить в разделе


Письмо директору