Public release from ruodoo-project: 19.0 - 2026-05-31 21:19:12 UTC

This commit is contained in:
CI Publish Bot
2026-05-31 21:19:21 +00:00
commit aa4214c195
1213 changed files with 183945 additions and 0 deletions

View File

@ -0,0 +1,96 @@
# Номенклатурный производственный план на основе прогнозов (mklab_forecast_mrp)
---
## Описание
Модуль автоматизирует цикл планирования производства на основе анализа истории продаж:
- **Прогнозирование спроса** — анализирует заказы продаж за последние 12 месяцев с учётом дня недели и месяца года (сезонность). Нормализует исторические данные по прошедшим акциям и применяет ожидаемый рост, если на прогнозируемую дату запланирована маркетинговая акция.
- **Планирование производства** — по готовому прогнозу одним действием создаёт заказы на производство (`mrp.production`) для всех позиций.
- **Автоподбор ведомости материалов** — для каждого продукта автоматически находит спецификацию (BOM), для которой все компоненты есть на складе в нужном количестве.
- **Маркетинговые акции** — ведёт реестр акций с датами отгрузки и продаж на полке, привязывает к акции продукты (со скидками и ожидаемым ростом) и контрагентов.
- **Анализ влияния скидок** — мастер-форма для расчёта фактического роста продаж при заданной паре скидок (наша скидка + скидка на полке) на основе реальной истории заказов.
---
## Установка
### Требования
- Odoo 19.0
- PostgreSQL 16+
- Python 3.10+
### Ручная установка
1. Скопировать папку `mklab_forecast_mrp` в директорию `addons` вашего Odoo.
2. В `odoo.conf` добавить путь к папке в `addons_path`.
3. Перезапустить Odoo.
4. Настройки → Приложения → убрать фильтр "Приложения" → найти **mklab_forecast_mrp** → Установить.
---
## Как пользоваться
После установки в главном меню появится раздел **План** с тремя подразделами.
### Стимулирующие мероприятия
Перед работой с прогнозами заведите акции.
**План → Стимулирующие мероприятия → Мероприятия → Создать**
| Поле | Описание |
|---|---|
| Дата начала/окончания отгрузок | Период, когда товар отгружается по акции |
| Дата начала/окончания продаж на полке | Период продаж у покупателя |
| Продукты | Список товаров с размером скидки и ожидаемым ростом продаж (%) |
| Контрагенты | Если заполнено — акция действует только для указанных контрагентов |
---
### Прогнозирование и план производства
**План → Планирование → Прогнозы → Создать**
**Шаг 1.** Указать дату прогноза и при необходимости ограничить список контрагентов.
**Шаг 2.** Нажать **Заполнить строки** — автоматически добавятся все продукты с флагом "Участвует в прогнозах" (настраивается на карточке продукта).
**Шаг 3.** Для каждой строки доступны действия:
- **Прогноз** — рассчитать прогнозное количество на основе истории продаж
- **Факт** — подтянуть фактические данные по заказам и отгрузкам за эту дату
- **Подобрать ВМ** — найти ведомость материалов, для которой все компоненты есть на складе
**Шаг 4.** Включить флаг **Отправить на расчёт** — фоновый cron пересчитает строки автоматически (по 5 штук за итерацию).
**Шаг 5.** Нажать **Создать заказы на производство** — для всех строк с заполненным прогнозом и ведомостью материалов будут созданы заказы на производство.
**Шаг 6.** Нажать **Утвердить** для фиксации прогноза.
> Поле **Ожидаемый рост при акции, %** — применяется как коэффициент роста, если на прогнозируемую дату найдена акция, но продукт не указан в её составе явно.
---
### Анализ влияния скидок
**План → Анализ данных → Мастер анализа данных**
Позволяет оценить, насколько реально выросли продажи при заданной паре скидок в указанный период.
1. Указать период анализа и точность сопоставления скидок (±%).
2. Добавить строки: продукт + наша скидка + скидка на полке.
3. Нажать **Расчёт** — система сравнит средние продажи в дни акции и без акции и выведет процент роста.
---
### Настройка продуктов
На карточке продукта (Инвентарь → Продукты) доступны дополнительные поля:
- **Участвует в прогнозах** — продукт будет включён при автозаполнении строк прогноза
На карточке ведомости материалов:
- **Виртуальная** — пометить BOM как сгенерированный автоматически (такие BOM пропускаются при автоподборе)