Содержание
Описание формата данных для загрузки в Forecast NOW!
В программу можно загрузить несколько типов данных.
Минимально необходимые данные:
- История продаж, остатков, цен
Желательные данные:
Дополнительные:
Обычно параметры товаров задаются из интерфейса пользователя или рассчитываются системой автоматически. Аналоги и маркетинговые акции также могут быть заданы через графический интерфейс. Их загрузка из файла производится в том случае, если такая информация уже имеется в учетной системе.
Способы загрузки данных
Общие требования к формату
кодировка UTF-8 разделитель - ; (точка с запятой) не должен встречаться в значениях свойств, названиях свойств, названии и артикуле товара, а также других текстовых полях если значение не задано или не известно, то необходимо указать пропуск ; ; или ;0; для числовых значений.
Формат загрузки истории продаж
Общая информация
История продаж и остатков – основной тип данных, необходимый для работы программы Forecast NOW! В программу нужно загрузить историю продаж, остатков и цен, выгруженных из учетной системы. Доступно три сценария выгрузки этих данных:
- Выгрузка отдельных текстовых файлов по продажам и остаткам товаров
- Выгрузка общего файла, содержащего информацию о продажах и остатках товаров
- Использование стандартных отчетов 1C
При первых двух сценариях поддерживается два типа файлов – csv или xml
Общие требования к формату данных при выгрузке в csv
- тип данных – csv
- кодировка файла UTF-8
- столбцы разделяются символом ;
- желателен заголовок файла, содержащий названия всех его столбцов, разделенных символом ;
- разделитель целой и дробной части – точка или запятая
- разделители разрядов отсутствуют. Верно 6000. 6 000 – неверно.
- формат даты дд.мм.гггг или гггг-мм-дд
- строки разделяются между собой переносом строки.
- код товара, артикул, название не должны содержать символа “;”. Необходимо заменять все символы “;” на любой допустимый, например, пробел.
- еcли код товара, артикул или название – пустая строка, то выгружать один пробел
Отдельная загрузка продаж и остатков
Вы можете выгружать и загружать в программу отдельно информацию по продажам и остаткам товаров (также допустима отдельная загрузка цен). Разберем форматы и содержимое этих файлов
Файл «Продажи товаров»
Такой файл должен содержать информацию по всем продажам товаров. Возможные варианты передачи продаж
- суммарно за день в разрезе товара-даты-склада (если в учетной системе нет информации по продажам по конкретным клиентам, что обычно характерно для розницы)
- в разрезе товара-даты-склада-клиента (если в учетной системе есть информация по продажам конкретным клиентам и приобретена версия Enterprise или Ultimate, а также необходим прогноз спроса по клиентам или учет акций по клиентам)
- отдельными строками по каждому факту продажи
Содержимое файла
В файле могут присутствовать следующие столбцы (в любом порядке)
Поле | Описание | Обязательность |
---|---|---|
Уникальный идентификатор товара | Уникальный идентификатор товара, обычно код в учетной системе | Обязательно |
Дополнительный идентификатор товара | Дополнительный идентификатор товара (обычно тот, который привычен пользователям, например артикул) | Рекомендуется |
Название товара | Название товара | Рекомендуется |
Код склада | Уникальный идентификатор склада (обычно uid код в учетной системе) | Обязательно |
Дата продажи | Дата продажи или изменения остатка в формате гггг-мм-дд или дд.мм.гггг | Обязательно |
Количество | Количество продажи или списания в производство по калькуляции. Возможнаь загрузка суммарно за день по складу-товару -клиенту (в случае поклиентской детализации) или отдельными строками | Обязательно |
Клиент | Клиент, которому произошла продажа (характерно для дистрибьюторов и оптовой торговли) | Выгружается только в том случае, если предполагается использование модуля маркетинговых акций в разрезе по клиентам (акция действует на конкретного клиента) и приобретены версии Enterprise или Ultimate |
Цена продажи | Цена реализации, при наличии отгрузок в день по разным ценам можно использовать средневзвешенную. Выгружается только в случае, если кол-во продажи больше нуля | Обязательно |
Цена закупки | Последняя известная цена закупки товара. Выгружается в случае, если была реализация и равна последней цене закупки. Также выгружается в случае, если было поступление и равна цене закупки в этом заказе. | Обязательно |
Учетная цена | Цена, по которой учитывается товар, себестоимость | Не обязательно. Используется при оптимизации уровня сервиса |
Сумма продажи | кол-во единиц продажи*цена продажи | Рекомендуется |
Сумма закупочная | кол-во единиц продажи * цена закупочная | Рекомендуется |
Упущенный спрос | Известный упущенный спрос (если такой фиксируется в учетной системе) | Необязательно |
Прибыль | Кол-во проданного*(цена реализации - Закупочная цена (или себестоимость) | Необязательно |
Общий формат (перечислены все возможные поля, их обязательность описана в таблице)
<1.Уникальный идентификатор>;<2. Дополнительный идентификатор товара >;<3. название товара>;<4. код склада>;<5. дата продажи в формате «гггг-мм-дд» или дд.мм.ггг>;<6. кол-во единиц продажи суммированное за весь день>; <7. клиент, которому произошла продажа>;<8. цена продажи>;<9. сумма продажи= кол-во единиц продажи*цена продажи>;<10. цена закупочная>;<11. сумма закупочная=кол-во единиц продажи*цена закупочная>;<12. упущенный спрос (в случае поклиентской детализации для каждого клиента грузится отдельно)>;<13.прибыль=Кол-во проданного * (Цена реализации - Закупочная цена)>;<14.учётная цена>
Пример файла с заголовком столбцов
У товара было 3 дня продаж:
- 13.03.2023 было продано 2 штуки по 10 рублей и 2 штуки по 9 рублей
- 14.03.2023 было продано 2 штуки по 10 рублей и 4 штуки по 11 рублей
- 15.03.2023 продаж не было
- 16.03.2023 была продана 1 штука по 10 рублей
В итоге файл должен выглядеть следующим образом:
Код товара;Артикул товара;Название товара;Склад;Дата;Количество проданного;Цена реализации;Цена закупки;Учетная цена;Выручка;Себестоимость;Прибыль;Упущенный спрос 101010;AVnZ90;Подшипник1;код Склада;13.03.2023;4;9,5;5;;38;20;18;0 101010;AVnZ90;Подшипник1;код Склада;14.03.2023;6;10,7;5;;64;30;34;0 101010;AVnZ90;Подшипник1;код Склада;16.03.2023;6;10,7;5;;10;5;5;0Комментарии к примеру:
- Продажи суммированы по каждому дню (для 13.03.2023 2+2=4)
- За 15.03.2023 строчки нет, так как не было продаж по этому товару
- Учетная цена не используется
- Цена реализации рассчитана как средневзвешенная за день (также допустимы варианты средней цены и цены по прайсу)
Альтернативный вариант (без суммирования внутри дня)
Код товара;Артикул товара;Название товара;Склад;Дата;Количество проданного;Цена реализации;Цена закупки;Учетная цена;Выручка;Себестоимость;Прибыль;Упущенный спрос 101010;AVnZ90;Подшипник1;код Склада;13.03.2023;2;10;5;;20;10;10;0 101010;AVnZ90;Подшипник1;код Склада;13.03.2023;2;9;5;;18;10;8;0 101010;AVnZ90;Подшипник1;код Склада;14.03.2023;2;10;5;;20;10;10;0 101010;AVnZ90;Подшипник1;код Склада;14.03.2023;4;11;5;;44;20;24;0 101010;AVnZ90;Подшипник1;код Склада;16.03.2023;6;10,7;5;;10;5;5;0
Файл «Остатки товаров»
Файл содержит информацию о движении остатков товара:
- Фактического остатка на складе
- Зарезервированного товара
- Товара в заказах поставщику на этот склад
- Товара в пути от на этот склад
Все остатки передаются на конец дня (сколько на конец дня было товара на складе, сколько из него в резерве, сколько было в размещенных заказах или в пути). Строчка появляется в файле, если в эту дату изменился любой тип остатка:
- Изменился фактической остаток (прошла продажа, инвентаризация, списание, перемещение на или с склада)
- Открылся, закрылся или изменился резерв
- Изменилось количество товара в пути или заказах (сделан новый заказ, заказ пришел на склад, заказ скорректирован
Содержимое файла
В файле могут присутствовать следующие столбцы (в любом порядке)
Поле | Описание | Обязательность |
---|---|---|
Уникальный идентификатор товара | Уникальный идентификатор товара, обычно код в учетной системе | Обязательно |
Дополнительный идентификатор товара | Дополнительный идентификатор товара (обычно тот, который привычен пользователям, например артикул) | Рекомендуется |
Название товара | Название товара | Рекомендуется |
Код склада | Уникальный идентификатор склада (обычно uid код в учетной системе) | Обязательно |
Дата изменения любого типа остатка | Дата изменения любого типа остатка в формате гггг-мм-дд или дд.мм.гггг | Обязательно |
Остаток товара на конец дня | Фактический остаток товара на конец дня | Обязательно |
Количество товара в резерве на конец дня | Количество товара в резерве под исключительный спрос на конец дня | Не обязательно, рекомендуется при наличии резервирования |
Количество товара в размещенных заказах поставщику на конец дня | Количество товара в размещенных заказах, но еще не отправленных поставщиком на конец дня | Обязательно при наличии такой информации в учетной системе и если не выгружается отдельным файлом с датами поступлений |
Товар в пути | Число товара, находящееся в пути от поставщика | Обязательно при наличии такой информации в учетной системе и если не выгружается отдельным файлом с датами поступлений |
Товары в заказах и товары в пути можно выгрузить в 1 столбце
Общий формат (перечислены все возможные поля, их обязательность описана в таблице)
<1.Уникальный идентификатор>;<2. Дополнительный идентификатор товара >;<3. название товара>;<4. код склада>;<5. дата изменения любого типа остатка в формате «гггг-мм-дд» или дд.мм.ггг>;<6. Фактический остаток товара на конец дня>; <7. количество товара в резерве на конец дня >;<8. количество товара в размещенных заказах поставщику на конец дня>;<9 Количество товаров в пути на этот склад>
Пример файла с заголовком столбцов
- На конец 13.03.2023 фактический остаток товара на складе 10 штук, резервов, заказов и товара в пути нет
- 14.03.2023 прошла продажа 2 штуки, также 2 штуки товара было списано
- 15.03.2023 фактический остаток не менялся, но открылся резерв 2 штуки
- 16.03.2023 прошла продажа 1 штуки, также был сделан заказ поставщику на 10 штук
- 17.03.2023 из 10 штук пришло 2 штуки товара, оставшиеся 8 находятся в пути
В итоге файл должен выглядеть следующим образом:
Код товара;Артикул товара;Название товара;Склад;Дата;Фактический остатко на конец дня;Резерв;Товар в заказах;Товар в Пути 101010;AVnZ90;Подшипник1;код Склада;13.03.2023;10;0;0;0 101010;AVnZ90;Подшипник1;код Склада;14.03.2023;6;0;0;0 101010;AVnZ90;Подшипник1;код Склада;15.03.2023;6;2;0;0 101010;AVnZ90;Подшипник1;код Склада;16.03.2023;5;2;10;0 101010;AVnZ90;Подшипник1;код Склада;17.03.2023;7;2;0;8Комментарии к примеру:
- Все типы остатков отображаются на конец дня (14.03 ушло 4 штуки, остаток стал меньше на 4)
- 15.03.2023 открылся резерв, но фактический остаток не изменился – передаются значения всех типов остатков на конце дня
- В примере разделены товары в заказах и в пути, на практике обычно или выгружают поступления с ожидаемыми датами прихода или выгружают одну колонку – ожидаемый к приходу остаток (сумма заказов и в пути)
Общий файл с продажами, остатками и ценами
Возможна выгрузка общего файла, содержащего информацию по продажам, остаткам и ценам на товары.
Общие правила передачи данных
- Продажи передаются суммировано за 1 день по товару-складу-дате, если в учетной системе нет учета продаж по клиентам или не требуется построение прогноза спроса по клиентам и учета акций по каждому клиенту/ Например, если за день по товару 2 продажи 4 штуки и 8 штук – в выгрузке появится одна строчка с продажей 12
UPD возможен вариант с передачей данных по каждому факту продажи (по одной дате-товару-складу в файле может быть несколько строк
- Если в учетной системе есть информация по продажам в разрезе клиентов и приобретена версия Enterprise или Ultimate, а также необходимо учитывать маркетинговые активности в разрезе клиентов или строить по ним прогнозы спроса, то в файле передается сумма продаж товара по каждому клиенту за конкретную дату. Например, если за день по одному клиенту были продажи 2 и 4 штуки, а по другому 3 и 6 штук, то в файле выгрузки появятся две строчки – с продажей 6 по первому клиенту и 9 по второму.
- Все типы остатков передаются на конец дня (сколько на конец дня было фактического остатка, зарезервированного товара, товара в пути и заказах)
- При наличии нескольких реализаций по 1 товару на 1 складе за один день, цены передаются средневзвешенными или средними
Структура общего файла продаж и остатков.
Файл выгрузки продаж и остатков представляет собой текстовый файл, содержащий заголовок, каждый столбец отделяется ; (порядок столбцов может быть любым) Каждая строчка соответствует информации по конкретному товару-складу за определенную дату. В файле передаются значения ключевых полей:
Поле | Описание | Обязательность |
---|---|---|
Уникальный идентификатор товара | Уникальный идентификатор товара, обычно код в учетной системе | Обязательно |
Дополнительный идентификатор товара | Дополнительный идентификатор товара (обычно тот, который привычен пользователям) | Рекомендуется |
Название товара | Название товара | Рекомендуется |
Код склада | Уникальный идентификатор склада (обычно uid код в учетной системе) | Обязательно |
Дата продажи или изменения остатка | Дата продажи или изменения остатка в формате гггг-мм-дд или дд.мм.гггг | Обязательно |
Количество | Количество продажи или списания в производство по калькуляции. Считается суммарно за день по складу-товару -клиенту (в случае поклиентской детализации) | Обязательно |
Клиент | Клиент, которому произошла продажа (характерно для дистрибьюторов и оптовой торговли) | выгружается только в том случае, если предполагается использование модуля маркетинговых акций в разрезе по клиентам (акция действует на конкретного клиента). В других случаях выгрузка этого поля нецелесообразна |
Количество товара в резерве на конец дня | количество товара в резерве под исключительный спрос на конец дня | Не обязательно, рекомендуется при наличии резервирования |
Количество товара в размещенных заказах поставщику на конец дня | количество товара в размещенных заказах, но еще не отправленных поставщиком на конец дня | Обязательно при наличии такой информации в учетной системе и если не выгружается отдельным файлом с датами поступлений |
Товар в пути | Число товара, находящееся в пути от поставщика | Обязательно при наличии такой информации в учетной системе и если не выгружается отдельным файлом с датами поступлений. Товары в заказах и товары в пути можно выгрузить в 1 столбце |
Цена продажи | Цена реализации, при наличии отгрузок в день по разным ценам использовать средневзвешенную. Выгружается только в случае, если кол-во продажи больше нуля | Обязательно |
Цена закупки | Последняя известная цена закупки товара. Выгружается в случае, если была реализация и равна последней цене закупки. Также выгружается в случае, если было поступление и равна цене закупки в этом заказе. | Обязательно |
Учетная цена | Цена, по которой учитывается товар, себестоимость | Не обязательно. Используется при оптимизации уровня сервиса |
Сумма продажи | кол-во единиц продажи*цена продажи | Рекомендуется |
Сумма закупочная | кол-во единиц продажи * цена закупочная | Рекомендуется |
Остаток товара на конец дня | Фактический остаток товара на конец дня | Обязательно |
Упущенный спрос | Известный упущенный спрос (если такой фиксируется в учетной системе) | Необязательно |
Прибыль | Кол-во проданного*реализации - Закупочная цена (или себестоимость) | Необязательно |
Невыполненный заказ | Невыполненый поставщиком заказ, который необходимо прибавить к новому заказу, бэкордер | Необязательно |
Общий формат (перечислены все возможные поля, их обязательность описана в таблице)
<1. Код товара - уникальный идентификатор>;<2. артикул товара>;<3. название товара>;<4. название склада или код склада>;<5. дата продажи или изменения остатка в формате «гггг-мм-дд»>;<6. кол-во единиц продажи суммированное за весь день>;<7. кол-во единиц прочего расхода (перемещения, списания, корректировки и пр.) за весь день>;<8. кол-во единиц поступления за весь день>;<9. количество товара в резерве на конец дня >;<10. количество товара в размещенных заказах поставщику на конец дня>;<11. цена продажи>;<12. сумма продажи= кол-во единиц продажи*цена продажи>;<13. цена закупочная>;<14. сумма закупочная=кол-во единиц продажи*цена закупочная>;<15. остаток товара на конец дня>;<16. упущенный спрос (в случае поклиентской детализации для каждого клиента грузится отдельно)>;<17. клиент, которому произошла продаж>;<18.невыполненный заказ>;<19.прибыль=Кол-во проданного * (Цена реализации - Закупочная цена)>;<20.учётная цена>;<21.товар в пути>
Правила появления строк в файле
В файле появляется строка, если по товару состоялось какое-то событие (или несколько событий):
- Была продажа
- Был прочий расход (списание, инвентаризация, перемещение с склада)
- Было поступление (приход заказа от поставщика, поступление с другого склада)
- Изменился фактический остаток на складе (перемещение, продажа и пр.), кол-во товара в пути (проведение документа, отмена проведения, приход товара и пр.), кол-во товара в заказе (размещение-закрытие заказа), кол-во товара в резерве (снятие резерва, открытие резерва
Пример файла с заголовком столбцов
- 13.03.2023 было продано 2 штуки по 10 рублей и 2 штуки по 9 рублей, остаток на конец дня 10 штук, резервов и заказов не было
- 14.03.2023 было продано 2 штуки по 10 рублей и 4 штуки по 11 рублей
- 15.03.2023 продаж не было,также сделан заказ поставщику на 10 штук
- 16.03.2023 была продана 1 штука по 10 рублей, 5 штук пришло на склад, 5 осталось в заказах
- 17.03.2023 движений по товару не было, но был открыт резерв 2 штуки
В итоге файл должен выглядеть следующим образом:
Код товара;артикул;название товара;склад;дата;кол-во продажи;цена продажи;выручка;цена закупа;себестоимость;прибыль;остаток;в резерве;заказано;товар в пути;Упущенный спрос;учётная цена 101010;AVnZ90;Подшипник1;код Склада;13.03.2023;4;9,5;38;5;20;18;10;0;0;0;0;0 101010;AVnZ90;Подшипник1;код Склада;14.03.2023;6;10,7;64;5;30;34;4;0;0;0;0;0 101010;AVnZ90;Подшипник1;код Склада;15.03.2023;0;0;0;0;0;0;4;10;0;0;0;0 101010;AVnZ90;Подшипник1;код Склада;16.03.2023;1;10;10;5;5;5;8;5;0;0;0;0 101010;AVnZ90;Подшипник1;код Склада;17.03.2023;1;10;10;5;5;5;8;5;2;0;0;0Комментарии к примеру:
- Продажи суммированы по каждому дню (для 13.03.2023 2+2=4)
- Учетная цена не используется
- Цена реализации рассчитана как средневзвешенная за день (также допустимы варианты средней цены и цены по прайсу)
- 16.03 пришла часть заказа (увеличился остаток), часть (5 штук осталась в заказах)
- В дни, когда нет продаж не выгружаются цены реализации и закупки (возможна выгрузка цены закупки при поступлении товара)
Частичная загрузка данных
Возможна частичная загрузка/обновление данных (не всех столбцов, которые были загружены первоначально - например, отдельная загрузка текущих остатков или товара в пути).
При частичном обновлении данных в файле загрузки могут присутствовать только данные по дате, коду товара и нужным столбцам, при загрузке файла нужно выбрать нужный формат и режим загрузки «Обновить частично» (при консольной загрузке флаг –partial)
Формат загрузки классификации
Товары можно разбивать по группам, например, «Молочные продукты», «Хлеб» или«Консервы». Каждая группа товаров обладает определённым набором свойств, например, у молочных продуктов есть жирность, у алкоголя крепость и литраж, кроме того у каждого товара есть название и поставщик. Одна группа товаров может быть подгруппой другой группы, например, «Вермишель» - это подгруппа группы «Макароны», а та в свою очередь подгруппа группы «Все товары». При этом все товары из группы «Вермишель» будут обладать свойствами группы «Макароны», так как «Вермишель» - это подгруппа группы «Макароны», и каждый товар из группы «Вермишель» это так же товар из группы «Макароны», но не наоборот.
Наличие свойств задается для групп, значения свойств задаются для конкретных товаров. Свойства наследуются в соответствии с иерархией.
Первая строка выгрузки иерархии (полной классификации) всегда одинаковая, так как любая группа товаров должна быть подгруппой «Все товары». «Все товары» является зарезервированным словом.
Все товары;это;группа
Группа определяется следующим образом:
<название группы>;это;группа
Иерархия задается с помощью ключевого слова имеетПодгруппу следующим образом (участвующие группы должны быть определены, как это указано выше):
<название группы1>;имеетПодгруппу;<название группы2>Наличие свойства у группы товаров задается с помощью ключевого слова имеетСвойство следующим образом:
<название группы>;имеетСвойство;<название свойства>
В csv файле подобную классификацию можно записать следующим образом
Все товары;это;группа Все товары;имеетСвойство;Название Все товары;имеетСвойство;Поставщик Алкоголь;это;группа Все товары;имеетПодгруппу;Алкоголь Алкоголь;имеетCвойство;Крепость Алкоголь;имеетCвойство;Литраж Пиво;это;группа Алкоголь;имеетПодгруппу;Пиво 400000000001;является;Алкоголь 400000000001;Название;Бурбон Four Roses 400000000001;Поставщик;Турис 400000000001;Крепость;43.00% 400000000001;Литраж;0.75л 400000000002;является;Алкоголь 400000000002;Название;Виски White Horse 400000000002;Поставщик;Склад#6 400000000002;Крепость;40.00% 400000000002;Литраж;0.75л 400000012345;является;Пиво 400000012345;Название;Pilsener 400000012345;Поставщик;DasBier 400000012345;Крепость;4.8% 400000012345;Литраж;1.0л
Формат файла для выгрузки/загрузки Параметров
В случае мультискладского учета внутри программы Forecast NOW!
<склад>;<артикул товара или другой уникальный идентификатор, совпадающий с идентификатором в выгрузке истории продаж>;<ключевое слово параметра>;<значение параметра>Пример
Склад1;1000034;Срок изготовления в днях;5 Склад1;1000035;Срок изготовления в днях;35 Склад1;1000036;Срок изготовления в днях;3 Склад1;1000037;Срок изготовления в днях;2 Склад1;1000034;Срок доставки в днях;7 Склад1;1000035;Срок доставки в днях;7 Склад1;1000036;Срок доставки в днях;7 Склад1;1000037;Срок доставки в днях;43
Формат файла с временными параметрами
<склад>;<артикул товара или другой уникальный идентификатор, совпадающий с идентификатором в выгрузке истории продаж>;<ключевое слово параметра>;<дата от>;<дата до>;<значение параметра>
Пример:
Склад №1;4000000000016;Расписание заказов;2020-01-01;2020-01-10;Каждую среду Склад №1;4000000000018;Расписание заказов;2020-01-01;2020-01-10;Каждую среду Склад №1;4000000000017;Расписание заказов;2020-01-01;2020-01-10;Каждую среду
Так же, данный формат используется для загрузки параметра "Периоды используемой истории продаж", который может учитываться при расчёте месячной сезонности.
Пример:
Склад №1;4000000000032;Периоды используемой истории продаж;2020-05-18;2021-05-18;Использовать Склад №1;4000000000031;Периоды используемой истории продаж;2020-05-18;2021-05-18;Использовать Склад №1;4000000000029;Периоды используемой истории продаж;2020-05-18;2021-05-18;Игнорировать
Название параметров (ключевые слова)
Значения параметров которые указываются в днях, должны быть целым числом(без дробной части)
Название параметров Основные
- Основной склад;4000000000067;Уровень сервиса I типа;95
- Основной склад;4000000000067;Использовать оптимальный УС;Да
- Основной склад;4000000000067;Срок годности, дней;20
- Основной склад;4000000000067;% срока годности, от поставщика;90
- Основной склад;4000000000067;% срока годности, клиенту;30
- Основной склад;4000000000067;Минимальное число дней продаж;3
- Основной склад;4000000000067;Актуальный период, дней;90
- Основной склад;4000000000067;Новый товар, дней;14
- Основной склад;4000000000067;Учитывать календарь;Да
- Основной склад;4000000000067;Учитывать продажи дочерних складов;2
- Основной склад;4000000000067;Способ доставки;Со склада
- Основной склад;4000000000067;Учитывать остаток родительского склада;Да
- Основной склад;4000000000067;Иерархия складов;Демо структура
- Основной склад;4000000000067;Зона хранения;1
Название параметров Особенности поставок
- Демо-склад1;4000000000016;Не заказывать товар;Да
- Демо-склад1;4000000000016;Минимальный запас, ед.;1
- Демо-склад1;4000000000016;Максимальный запас, ед.;2
- Демо-склад1;4000000000016;Добавлять к заказу, ед.;3
- Демо-склад1;4000000000016;Максимальный заказ, ед.;4
- Демо-склад1;4000000000016;Минимальная партия,ед.;5
- Демо-склад1;4000000000016;Кратность ,ед.;6
- Основной склад;4000000000016;Монтажная кратность;4
- Основной склад;4000000000021;Упаковка 1-го уровня;50
- Основной склад;4000000000021;Порог округления (Упаковка 1-го уровня), %;40
- Основной склад;4000000000021;Упаковка 2-го уровня;640
- Основной склад;4000000000021;Порог округления (Упаковка 2-го уровня), %;60
- Основной склад;4000000000021;Упаковка 3-го уровня;1500
- Основной склад;4000000000021;Порог округления (Упаковка 3-го уровня), %;80
- Основной склад;4000000000018;Вес упаковки 1-го уровня;2
- Основной склад;4000000000018;Вес упаковки 2-го уровня;3
- Основной склад;4000000000018;Объём упаковки 1-го уровня;4
- Основной склад;4000000000018;Объём упаковки 2-го уровня;5
- Основной склад;4000000000018;Округление;3
- Основной склад;4000000000018;Округление (Упаковка 2-го уровня);0.2
- Основной склад;4000000000028;Штраф за недопоставку, %;10
- Основной склад;4000000000018;Поставщик;34
- Основной склад;4000000000018;Изначальный запас;0
- Основной склад;4000000000016;Группа заказа;45А
«По правилам» - «0»
«Всегда вверх» - «1»
«Всегда вниз» - «2»
«По правилам, складская» - «3»
«Не установлено» - «4»
«Половина кратности, складская» - «6»
«По упаковкам» - «7»
Округления с десятичными порогам, загружаются со своим названием, округление 0.1 загружается, как 0.1
Название параметров Расписание поставок
- Демо-склад1;4000000000016;Расписание заказов;1 раз в неделю
- Демо-склад1;4000000000016;Срок доставки в днях;1
- Демо-склад1;4000000000016;Горизонт планирования;27
- Демо-склад1;4000000000016;Срок изготовления в днях;4
- Демо-склад1;4000000000016;Точка заказа, дней;3
- Демо-склад1;4000000000016;Дополнительный запас в днях;5
Название параметров Прогнозирование
- Основной склад;4000000000067;Восстанавливать спрос по остаткам;Да
- Основной склад;4000000000067;Фильтрация выбросов, %;2
- Основной склад;4000000000067;Порог дефицита, %;20
- Основной склад;4000000000067;Недостаточно данных, дней.;3
- Основной склад;4000000000067;Учитывать упущенный спрос;Да
- Основной склад;4000000000067;Анализируемый период, месяцев;12
Название параметров Сезонность
Демо-склад1;4000000000016;Нормировать сезонность;Нет Демо-склад1;4000000000016;Учитывать сезонность;Да
Название параметров балансировка
- Основной склад;4000000000016;Норма складского запаса, дней;7
- Основной склад;4000000000016;Не балансировать товар;Нет
- Основной склад;4000000000016;Округление (балансировка);0
- Основной склад;4000000000016;Порог округления (Упаковка 1-го уровня), % (балансировка);40
- * Основной склад;4000000000016;Порог округления (Упаковка 2-го уровня), % (балансировка);60
- * Основной склад;4000000000016;Порог округления (Упаковка 3-го уровня), % (балансировка);80
- Основной склад;4000000000016;Минимальная партия (балансировка), ед.;0
- Основной склад;4000000000016;Кратность (балансировка), ед.;6
- Основной склад;4000000000016;Направление балансировки;Распределение с РЦ на филиалы
- Основной склад;4000000000018;Расписание заказов (балансировка);Каждую среду
- Основной склад;4000000000018;Точка заказа, дней (балансировка);4
Формат файла для выгрузки/загрузки Аналогов
Содержит информацию об аналогичных товарах. С помощью этого файла задаются главный и младшие аналоги. Главный аналог – товар, чей уникальный идентификатор следует первым в строке. При этом учитывается история продаж по всем аналогам, а остатки товаров-аналогов суммируются. При попытке добавления младшего аналога в Заказ или Анализ будет добавлен главный аналог. В файле обмена уникальный идентификатор товара-главного аналога идет первыми, уникальные идентификаторы младших аналогов отделяются символом ; (точка с запятой) Каждая группа аналогов находится в файле обмена на новой строке
4000000000021;4000000000030;4000000000032;4000000000035;4000000000034 4000000000016;4000000000020;4000000000019;4000000000018
или
4000000000021;4000000000030 4000000000021;4000000000032 4000000000021;4000000000035 4000000000021;4000000000034 4000000000016;4000000000020 4000000000016;4000000000019 4000000000016;4000000000018
допустимо смешивание видов записей
4000000000021;4000000000030 4000000000021;4000000000032 4000000000021;4000000000035 4000000000021;4000000000034 4000000000016;4000000000020;4000000000019;4000000000018
Формат файла для обмена данными по акциям
Загружать акции можно в двух форматах:
- файл с указанием заголовка, соответствующего представленным данным
- файл с указанием секций и команд используемых при загрузке данных.
При сохранение акций из программы используется формат с секциями и командами.
Формат файла с определением содержимого по заголовку
Данные от пользователя загружаются из csv файла. Формат кодировки файла – UTF-8.
Файл имеет заголовок следующего вида:
ИД;Название;Склад;Товар;Дата начала;Дата окончания;Клиент;Коэффициент товара;...
Обязательные поля для загрузки акций:
ИД - идентификатор акции
Название - название акции
Склад - код склада
Товар - код товара
Дата начала и Дата окончания - период действия акции в формате дд.мм.гггг или гггг-мм-дд
Поля могут располагаться в произвольном порядке. Информация представляется в порядке, соответствующем заголовку. Заголовок должен соответствовать представленным данным.
Заголовки можно указывать маленькими и большими буквами, без пробелов.
Разделитель целой и дробной части - точка.
Пример содержимого файла:
ИД;Название;Склад;Товар;Дата начала;Дата окончания;Коэффициент акции;Заказать заранее за, дней 1;название1;склад1;товар1;10.12.2014;20.12.2014;0.4;7 1;название1;склад1;товар2;10.12.2014;20.12.2014;0.9;9 2;название3;склад3;товар1;12.12.2014;15.12.2014;0.5;12 3;название4;склад2;товар1;11.12.2014;20.12.2014;1.0;6
Режимы загрузки
Доступно 2 режима загрузки акций в формате с заголовком: «Заменить» и «Обновить»
Обновить - информация дописывается (обновляется) по существующим акциям или создаются новые акции
Заменить - акции стираются, идентификаторы которых указаны в файле и записываются заново; в результате загрузки остаются товары и прочая информация, указанные в файле; при этом акции, которые не прописаны в файле, не затрагиваются; также создаются новые акции.
Пример:
В базе была акция с идентификатором 1, в которой были товар 1 и товар 2.
Если загрузить в режиме обновления акцию с тем же идентификтатором и товарами 3 и 4, то в акции станет 4 товара.
А если загрузить в режиме замены - то станут только товары 3 и 4.
Синтаксис
Режим обновления для консольного импорта: -a или --append в разделе [режим формат | режим] команды import -mc Режим замены для консольного импорта: -r или --remove в разделе [режим формат | режим] команды import -mcПо-умолчанию, если не указан соответствующие режим, акции будут загружаться в режиме обновления.
Формат файла с указанием секций и команд
Файл по обмену данных по акциям может содержать три секции (при создании новой акции обязательны первые две секции.
#campaigns - секция для добавления/удаления и указания полей акций, а также для добавления/удаления складов в акцию
#itemsCampaigns - секция для операция с товарами акции (добавление, удаление, но через команду ADD_ITM можно добавить склад вместе с кодом товара акцию, также через команду DEL_ITM можно удалить склад вместе с кодом товаром из акции.
Отдельные операции по добавлению/удаленияю складов ADD_WHS/DEL_WHS находятся в секции #campaigns)
#itemsCompareCampaigns - секция для операция с товарами для сравнения (добавления, удаление, но через команду ADD_ITM можно добавить склад вместе с кодом товара в акцию, также через команду DEL_ITM можно удалить склад вместе с кодом товаром из акции. Отдельные операции по добавлению/удаленияю складов ADD_WHS/DEL_WHS находятся в секции #campaigns)
Формат файла для обмена данными по акциям в разрезе клиентов. Если у вас нет складов, то вместо названия склада пишется пусто (отсутствие символов).
Команды акций
Секция #campaigns
Основными командами являются команды добавления и удаления акций, складов и клиентов
ADD_CMP
Добавление акции, перезаписывает всю старую информацию об акции с таким идентификатором. Указывается в секции #campaigns.
Пример:
ADD_CMP;<идентификатор акции>;<наименование акции>;<дата начала акции>;<дата окончания акции>;<коэффициент акции>;<категория акции>;-1[;<клиент1>;...;<клиентаN>]
DEL_CMP
Удаление акции,удаляет всю информацию об акции с указанным идентификатором. Указывается в секции #campaigns.
Пример:
DEL_CMP;<идентификатор акции>
ADD_CST
Добавление клиента к акции с указанным идентификатором. Указывается в секции #campaigns.
Пример:
ADD_CST;<идентификатор акции>;<клиент>
ADD_CALC_CST - аналогична ADD_CST, добавляет клиента для расчета
DEL_CST
Удаление клиента из акции с указанным идентификатором. Указывается в секции #campaigns.
Пример:
DEL_CST;<идентификатор акции>;<клиент>
DEL_CALC_CST - аналогична DEL_CST, только удаляет клиента для расчета
ADD_SEG
Добавление сегмента клиентов к акции с указанным идентификатором. Указывается в секции #campaigns. В одной и той же акции нельзя указать и клиента и сегмент в который он входит.
Пример:
ADD_SEG;<идентификатор акции>;<сегмент клиентов 1>;<сегмент клиентов 2>
Сегменты клиентов для прогнозирования добавляются с командой ADD_CALC_CST. Перед названием сегмента клиентов указывается, что это именно сегмент, а не отдельный клиент.
Пример:
ADD_CALC_CST;<идентификатор акции>;Сегмент <сегмент клиентов 1>;Сегмент <сегмент клиентов 2>
DEL_SEG
Удаление сегмента клиентов из акции с указанным идентификатором. Указывается в секции #campaigns.
Пример:
DEL_SEG;<идентификатор акции>;<сегмент клиентов 1>;<сегмент клиентов 2>
Чтобы удалить из акции сегмент клиентов для прогнозирования используется команда DEL_CALC_CST. Перед названием сегмента клиентов указывается, что это именно сегмент, а не отдельный клиент.
Пример:
DEL_CALC_CST;<идентификатор акции>;Сегмент <сегмент клиентов 1>;Сегмент <сегмент клиентов 2>
ADD_WHS
Добавление склада в акцию. Указывается в секции #campaigns Пример:
ADD_WHS;<Код склада>;<идентификатор акции>
DEL_WHS
Удаление склада из акции. Указывается в секции #campaigns Пример:
DEL_WHS;<Код склада>;<идентификатор акции>
SET_CMP_PARAMS
Установка дополнительных параметров акции, хранящихся в JSON формате. Например, заказ товар под акцию заранее (через «inAdvanceOrderedDays»: значение Указывается в секции #campaigns. Синтакис:
SET_CMP_PARAMS;идентификатор акции;{"параметр акции":"значение","параметр2 акции":"значение"}
Пример
SET_CMP_PARAMS;3;{"campaignType":"COEF","coefStatus":"MANUAL","inAdvanceOrderedDays":5,:26","userFields":{}}
SET_CMP_DEFICIT Команда предназначена для установки процента дефицита для акции с указанным идентификатором. Указывается в секции #campaigns.
Пример:
SET_CMP_DEFICIT;<идентификатор акции>;<процент дефицита акции>
SET_CMP_COMMENT Команда предназначена для установки комментария для акции с указанным идентификатором. Указывается в секции #campaigns.
Пример:
SET_CMP_COMMENT;<идентификатор акции>;<комментарий>
SET_CMP_TYPE Команда предназначена для установки типа акции с указанным идентификатором. Указывается в секции #campaigns.
Пример:
SET_CMP_TYPE;<идентификатор акции>;<тип акции>
где <тип акции> может принимать значения: COEF - тип акции коэффициент AMOUNT - тип акции объем
SET_CMP_AMOUNT Команда для установки объёмов для акции с указанным идентификатором для тройки склад-товар-клиент на указанную дату. Так содержит комментарий для объёма. Указывается в секции #campaigns.
Пример:
SET_CMP_AMOUNT;<идентификатор акции>;<склад>;<товар>;<клиент>;<дата>;<объем>;<комментарий к объему>
<дата> - дата может быть в формате yyyy-MM-dd или dd.MM.yyyy
CLEAR_CMP_AMOUNT_DATA Команда для очистки объемов для акции с указанным идентификатором. Указывается в секции #campaigns.
Пример:
CLEAR_CMP_AMOUNT_DATA;<идентификатор акции>
SET_CMP_USER_FIELD Установка дополнительных полей. Указывается в секции #campaigns.
Пример:
SET_CMP_USER_FIELD;<идентификатор акции>;<название поля>;<значение поля>
SET_ITM_AMOUNT_INFO;<идентификатор акции>;<идентификатор склада>;<идентификатор товара>;<прогнозируемый объем>;<фактический объем>;<планируемый объем>
Команда для записи конкретным товарам реального, прогнозируемого и запланированного объема спроса
Секция #itemsCampaigns
ADD_ITM
Добавление товара и склада в акцию с указанным идентификатором. (если указано в секции #itemsCampaigns - то товар добавляется как Товар, участвующий в акции, если в секции #itemsCompareCampaigns - то товар добавляется, как товар для расчета (история их продаж будет учтена при прогнозировании коэффициента акции, однако сами товары для расчете не участвуют в акции))
Пример:
#itemsCampaigns ADD_ITM;<Склад>;<Уникальный идентификатор товара>;<Номер акции1>;<Номер акции2>;…;<Номер акцииN> #itemsCompareCampaigns ADD_ITM;<Склад>;<Уникальный идентификатор товара>;<Номер акции1>;<Номер акции2>;…;<Номер акцииN>
DEL_ITM
Удаление товара и склада из акцию с указанным идентификатором. (если указано в секции #itemsCampaigns - то товар удаляется из товаров для расчета, если в секции #itemsCompareCampaigns - то товар удаляется из товаров для сравнения)
Пример:
#itemsCampaigns DEL_ITM;<Склад>;<Уникальный идентификатор товара>;<Номер акции1>;<Номер акции2>;…;<Номер акцииN> #itemsCompareCampaigns DEL_ITM;<Склад>;<Уникальный идентификатор товара>;<Номер акции1>;<Номер акции2>;…;<Номер акцииN>
SET_ITM_COEF - установка коэффициента увеличения спроса для конкретного товара
SET_ITM_COEF;<идентификатор акции>;<склад>;<товар>;<клиент>;<коэффициент>;<глубина скидки>
или
SET_ITM_COEF;<идентификатор акции>;<склад>;<товар>;<клиент>;<коэффициент>;<глубина скидки>;<рассчитанный коэффициент>;<спрогнозированный коэффициент>;<процент дефицита>
команды могут быть расположены в секции« #itemsCampaigns» или «#itemsCompareCampaigns»
Команды выполняются последовательно. Акция должна объявляться до приписывания к ней клиентов либо уже существовать в базе.
Формат файла для обмена данными по акциям c клиентами
#campaigns ADD_CMP;<Номер акции>;<Название акции>;<Дата начала акции>;<Дата окончания акции>;<Коэффициент роста продаж, 1 - если неизвестен>;<Категория акции>;-1;<Название клиента1>;<Название клиента2>;…;<Название клиентаN> DEL_CMP;<Номер акции> ADD_CST;<Номер акции>;<Название клиента1>;<Название клиента2>;…;<Название клиентаN> DEL_CST;<Номер акции>;<Название клиента1>;<Название клиента2>;…;<Название клиентаN> #itemsCampaigns ADD_ITM;<Склад>;<Уникальный идентификатор товара>;<Номер акции1>;<Номер акции2>;…;<Номер акцииN> DEL_ITM;<Склад>;<Уникальный идентификатор товара>;<Номер акции1>;<Номер акции2>;…;<Номер акцииN> #itemsCompareCampaigns ADD_ITM;<Склад>;<Уникальный идентификатор товара>;<Номер акции1>;<Номер акции2>;…;<Номер акцииN> DEL_ITM;<Склад>;<Уникальный идентификатор товара>;<Номер акции1>;<Номер акции2>;…;<Номер акцииN>
Пример
#campaigns ADD_CMP;3;Акция 3;22.02.2015;24.02.2015;1.5;;-1;Клиент1 ADD_CMP;2;Акция 2;20.02.2015;22.02.2015;2;Категория1;-1;Клиент1;Клиент2 ADD_CMP;1;Акция 1;10.02.2015;13.02.2015;1.4;;-1;Клиент2 DEL_CMP;0 #itemsCampaigns ADD_ITM;Демо-склад1;4000000000021;3 ADD_ITM;Демо-склад1;4000000000016;3;1 ADD_ITM;Демо-склад1;4000000000018;1 DEL_ITM;Демо-склад1;4000000000017;1 #itemsCompareCampaigns ADD_ITM;Демо-склад1;4000000000021;3 ADD_ITM;Демо-склад1;4000000000016;3 DEL_ITM;Демо-склад1;4000000000018;1 DEL_ITM;Демо-склад1;4000000000017;1
Формат файла для обмена данными по акциям без клиентов.
#campaigns ADD_CMP;<Номер акции>;<Название акции>;<Дата начала акции>;<Дата окончания акции>;<Коэффициент роста продаж>;<Категория акции>;-1 DEL_CMP;<Номер акции> #itemsCampaigns ADD_ITM;<Склад>;<Уникальный идентификатор товара>;<Номер акции1>;<Номер акции2>;…;<Номер акцииN> DEL_ITM;<Склад>;<Уникальный идентификатор товара>;<Номер акции1>;<Номер акции2>;…;<Номер акцииN>
Пример
#campaigns ADD_CMP;3;Акция 3;22.02.2015;24.02.2015;1.5;;-1 ADD_CMP;2;Акция 2;20.02.2015;22.02.2015;2;Категория1;-1 ADD_CMP;1;Акция 1;10.02.2015;13.02.2015;1.4;;-1 DEL_CMP;0 #itemsCampaigns ADD_ITM;Демо-склад1;4000000000021;3 ADD_ITM;Демо-склад1;4000000000016;3;1 ADD_ITM;Демо-склад1;4000000000018;1 DEL_ITM;Демо-склад1;4000000000017;1
Формат дат для загрузки акций
Поддерживаются следующие форматы дат при загрузке данных по акциям:
- Год-месяц-число (Соответствует ISO 8601 (ГОСТ ИСО 8601))
Пример. 2006-05-04
- число.месяц.Год (Соответствует ГОСТ Р 6.30-2003 (п. 3.11))
Пример. 04.05.2006
Формат файла для закупок клиентов
Закупки импортируются из файла с форматом «Склад;Артикул;Клиент;Дата;Объём;ID»,
Клиент может быть пустым полем
Дата может иметь формат гггг-ММ-дд (например, 2017-01-01) или дд.мм.гггг (например, 01.01.2017)
Объём - число, возможно десятичное с разделителем долей через точку
Склад;Артикул;Клиент - тройка, для которой нужна закупка.
Дата - дата, в которую товар должен быть на складе.
Объём - объём (количество) закупки.
ID - идентификатор закупки, необязательное поле
Пример файла
Склад1;Артикул1;;2017-01-01;100.5 Склад2;Артикул2;Клиент2;2017-12-31;9999
Формат файла комплектов
Файл комплектов, загружаемый через Данные или консольную утилиту должен иметь следующий формат:
Артикул комплекта;артикул компонента;количество компонента в комплекте
Пример:
4000000000018;40000000016;1 4000000000018;40000000015;4 4000000000018;40000000014;3
Комплект 4000000000018 состоит из 1 единицы 40000000016, 4 единиц 40000000015, 3 единиц 40000000014
Формат файла произвольных полей для таблицы заказа
В файле должно:
- Задано название произвольных полей и их тип
- Товарам с конкретного склада заданы значения этих полей
Сами поля и их тип задаются в следующем формате:
Имя_Поля_Товара;имеетТип;Тип
Имя_Поля_Товара - произвольное название поля
имеетТип - ключевое слово для задания типа, может быть написано в любом регистре
Тип - может иметь значение «Число» или «Строка», написанное а любом регистре. Если значение отлично от Число или строка, то программа будет воспринимать Тип поля как Строка.
От типа поля зависит сортировка.
Указание значения поля товара имеет вид «Склад;Артикул;Имя_поля_товара;Значение», где
Склад - склад товара
Артикул - уникальный идентификатор товара
Имя_поля_товара - имя поля товара, заданное ранее
Значение - значение поля товара
Пример файла произвольных полей для таблицы заказа
Важность товара по десятибалльной шкале;имеетТип;Число Топ;имеетТип;Строка Основной склад;4000000000016;Важность товара по десятибалльной шкале;9 Основной склад;4000000000016;Топ;да Основной склад;4000000000015;Важность товара по десятибалльной шкале;2 Основной склад;4000000000015;Топ;нет
Ожидаемые поступления с датами
Данные используются для использования алгоритма с учетом дат поступлений заказов
Дата ожидаемого прихода в формате гггг-мм-дд;склад; уникальный идентификатор;ID/название заказа;количество товара в пути
Разделитель целой и дробной части - точка
Файл не должен содержать заголовок.
Пример
2017-01-01;Основной склад;4000000000016;заказ1;10 2017-01-02;Основной склад;4000000000016;заказ1;20 2017-01-03;Основной склад;4000000000016;заказ1;30
Остатки по партиям со сроками годности
Загрузка сроков годности по партиям товаров осуществляется из файла с форматом:
Дата;Склад;Артикул;Партия;Остаток;Резерв;Дата изготовления;Дата окончания срока годности
На 1 день для 1 товара можно загрузить несколько партий. В программе будет отображаться суммированный остаток за день.
При загрузке проходит проверка файла на количество токенов (;) в строке, корректность дат и чисел.
Пример
2019-02-28;Склад№1;106933526;18-07-18;90;0;2018-07-18;2020-07-17 2019-02-28;Склад№1;106933546;18-04-17;109;0;2017-04-18;2019-10-15 2019-02-28;Склад№1;106933311;11-12-18;22;0;2018-12-11;2020-11-30 2019-02-28;Склад№2;106933311;06-02-19;1104;0;2019-02-06;2021-01-26 2019-02-28;Склад№2;106933311;06-02-19;1440;0;2019-02-06;2021-01-26
Структура подчиненности складов
Файл имеет формат csv, в котором один столбец - с данными в формате json Каждая строка - это отдельная структура подчиненности.
Структура файла и json полей
1. Указание родительских и подчиненных складов и виртуальности:
"edges":[{"from":"код родительского склада", "to":"код подчиненного склада1", "isVirtual":false}, {…}, {from":"код родительского склада", "to":"код подчиненного склада2", "isVirtual":true}]
- «from»:«код родительского склада» – родительский склад иерархии
- «to»:«код подчиненного склада1» – подчиненный склад иерархии
- «isVirtual»:true или «isVirtual»:false – является ли подчиненный склад виртуальным (не обязательное поле, по умолчанию подчиненный склад не является виртуальным
«from», «to» и «isVirtual» заполняется для каждой пары родительский склад-подчиненный склад, пары разделяются между собой при помощи ,
2. Указание прочих атрибутов структуры складов
«name»:« название структуры» – название структуры
«storages»:[«код склада1»,«код склада2», <…>«код склада 3»] – склады, находящиеся в структуре
«useParentProperties»:false - Использовать параметры дочерних складов или true - Использовать параметры родительского склада. Обязательное поле
«user»:«имя пользователя» – владелец структуры складов, необязательное поле
Пример файла
{"edges":[{"from":"Основной склад","to":"Склад №3"},{"from":"Основной склад","to":"Склад №1","isVirtual":true},{"from":"Основной склад","to":"Склад №2"}],"name":"Структура","storages":["Склад №3","Основной склад","Склад №1","Склад №2"],"useParentProperties":false}
Файл соответствует следующей структуре:
Ошибки загрузки
При загрузке файлов проверяется: При валидации файла иерархий складов проверяются:
- Корректность структуры документа (критическая)
- Проверка на пустой список складов (предупреждение)
- Корректность значения 'Использовать параметры родительского склада' (критическая)
- Имя иерархии на пустоту (критическая)
- Имя иерархии на дубль (предупреждение)
Направления балансировки
Формат файла загрузки
Файл имеет формат csv, содержит список разрешенных направлений
<название направления балансировки>;<код склада донора>;<код склада реципиента>
Каждая строка файла – одна пара из склада-донора (откуда везется товар) и склада-реципиента (куда везется товар), в файле может быть несколько направлений балансировки с разными названиями.
Пример файла
Распределение;Основной склад;Склад №3 Распределение;Основной склад;Склад №2 Распределение;Основной склад;Склад №1 Сбор с филиалов на РЦ;Склад №3;Основной склад Сбор с филиалов на РЦ;Склад №2;Основной склад Сбор с филиалов на РЦ;Склад №1;Основной складСоздается 2 направления, в направлении «Распределение» разрешена перевозка товара с Основного склада по филиалам, в направлении «Сбор с филиалов на РЦ» разрешена перевозка товара с филиалов на основной склад.
Ошибки загрузки
При валидации файла направлений балансировки проверяются:
- Корректность структуры (критическая)
- Указание неизвестного склада (предупреждение)
Настройки балансировки
Файл содержит 2 раздела. Один отвечает за настройки балансировки, второй - за сроки и стоимость доставки. Если какой-то настройки нет в файле, останется значение по умолчанию, если настройка написана неправильно файл не загрузится и выведется соответствующее сообщение.
При указании настройки пишется ее имя, потом : , потом Да или Нет или значение настройки (если применимо).
При указании сроков и стоимости доставки пишется склад-склад:название параметра:значение параметра
Учитывать аналоги:Нет/Да Метод разворота аналогов:Сначала старые запасы, потом новые/Сначала дешевые, потом дорогие/По приоритету/Обратно приоритету Не учитывать разницу цен:Нет/Да Норма складского запаса равна Сроку поставки + Периодичность:Нет/Да Доход на высвобожденные средства, % в месяц:Значение Не перемещать товар, если последнее поступление было раньше, чем (дней):Значение Особенности поставки (кратность, мин. партия):Основные/Не учитывать/Бадансировка Иерархия складов:Основная/Балансировка Расписание заказов:Основные/Не учитывать/Бадансировка Алгоритм балансировки:По рентабельности/Пропорциональное распределение остатка с РЦ Добавить к остатку склада-донора остаток:Нет/Да:Нет/Да Добавить к остатку склада-реципиента остаток:Нет/Да:Нет/Да Отображать все нулевые перемещения: /Варианты отображения нулевых перемещений через ";" Направление балансировки: /имя конкретного направления Группа заказа:Основные/Не учитывать/Бадансировка Учитывать даты поступления заказов:Нет/Да Приоритет складов:Основной склад;Склад №1;Склад №2;Склад №3 Cклад №1-Склад №2:стоимость доставки:0.00;период доставки:0.000000;стоимость доставки (за ед. веса):0.00;стоимость доставки (за ед. объёма):0.00;стоимость доставки (% от стоимости груза):0.00
Пример
Учитывать аналоги:Нет Метод разворота аналогов:Сначала старые запасы, потом новые Не учитывать разницу цен:Нет Норма складского запаса равна Сроку поставки + Периодичность:Нет Доход на высвобожденные средства, % в месяц:3 Не перемещать товар, если последнее поступление было раньше, чем (дней):0 Особенности поставки (кратность, мин. партия):Не учитывать Иерархия складов:Основная Расписание заказов:Не учитывать Алгоритм балансировки:Пропорциональное распределение остатка с РЦ Добавить к остатку склада-донора остаток:Нет:Да Добавить к остатку склада-реципиента остаток:Нет:Нет Отображать все нулевые перемещения:Отображать все Направление балансировки:Распредение с РЦ на филиалы Группа заказа:Не учитывать Учитывать даты поступления заказов:Нет Приоритет складов:Основной склад;Склад №1;Склад №2;Склад №3 Склад №1-Склад №2:стоимость доставки:7.00;период доставки:8.00 Склад №2-Склад №1:стоимость доставки:3.00;период доставки:6.00
Зоны хранения
Формат файла зон хранения
Название зоны хранения 1;стоимость хранения за ед.веса в зоне 1;стоимость хранения за ед.объема в зоне 1;вместимость, ед. веса в зоне1;вместимость, ед.объема в зоне1 Название зоны хранения 2;стоимость хранения за ед.веса в зоне 2;стоимость хранения за ед.объема в зоне 2;вместимость, ед. веса в зоне2;вместимость, ед.объема в зоне2
Дробная часть отделяется точкой
Ошибки загрузки
При валидации файла зон хранения проверяются:
- Корректность структуры документа (критическая)
- Имя зоны хранения на пустоту (предупреждение, зона с пустым именем не будет создана)
- Формат числовых данных (предупреждение)
Пример файла
Стеллажи;15;0;1500;10000 Склад;0;20;2000;3000
Расписание заказов
Формат файла расписания заказов
Имя_расписания_1;дата_заказа[#срок_доставки];....;дата_заказа[#срок_доставки] [#срок_доставки] - может не указываться ... Имя_расписания_2;дата_заказа[#срок_доставки];....;дата_заказа[#срок_доставки] [#срок_доставки] - может не указываться
Пример:
расписание1;15.06.2018;15.05.2018;15.02.2018;15.01.2018;15.12.2018;15.11.2018 расписание2;15.07.2018;15.01.2018;16.03.2018#2;16.01.2018#2;15.12.2018;23.01.2018#3
Сегменты клиентов
Формат файла сегментов клиентов
сегмент;клиент1;клиент2;...;клиентn
или
сегмент;клиент1 сегмент;клиент2 ... сегмент;клиентn
Правила автоустановки параметров
Формат файла автоустановки параметров
Загружать лучше правила автоустановки параметров, сохраненные из программы. При загрузке правил из файла происходит удаление всех ранее имеющихся правил и на их место записываются правила автоустановки из файла.
Пример файла автоустановки параметров
#parametersRuleTable Правило;{"analysis":[],"groups":{"name":"","values":["Конфеты","Зефир"]},"itemsFields":[],"parameters":[{"name":"ordersScheldule","values":["1 раз в месяц","2 раза в неделю"]}],"properties":[{"name":"Длина","values":["100","120","110"]},{"name":"Вес","values":["0.4","0.5"]}],"result":{"ConsiderWeeklySeasonalityFlag":1,"storageGraph":"Демо структура"},"storages":{"name":"","values":["Основной склад","Склад №1"]}} #parametersRuleTree ;folder;главная папка вложенная папка;item;Правило главная папка;folder;вложенная папка
Фильтры подготовки заказов
Фильтры подготовки заказов лучше создавать через интерфейс программы.
Загружать лучше фильтры подготовки заказов, сохранённые из программы.
Ограничения на внутренние перемещения
Формат
Код склада;параметр ограничения;значение Склад №1;Тип ограничения;Увеличить/уменьшить Склад №1;Критерии для выбора товаров;Критерий1, критерий 2 Склад №1;Упаковки;Упаковка 1 уровня;Значение Склад №1;Кратность упаковок;Упаковка 1 уровня;Значение
Разделитель целой и дробной части - .
Возможные значения
Тип ограничения:
- Увеличить
- Уменьшить
Критерии для выбора товаров:
- Оборачиваемость
- Плотность
- Прибыль
- Пользовательский
Упаковки и кратность упаковок:
- Упаковка 1 уровня
- Упаковка 2 уровня
- Упаковка 3 уровня
Для всех названий полей и текстовых значений необязательно соблюдать регистр
Пример
Склад №1;Вес;0.000000 Склад №1;Сумма;3000.000000 Склад №1;Объём;0.000000 Склад №1;Количество;0.000000 Склад №1;Процент округления фуры;0 Склад №1;Вместимость фуры(объём);0.000000 Склад №1;Вместимость фуры(вес);0.000000 Склад №1;Количество фур;0 Склад №1;Тип ограничения;Увеличить Склад №1;Фура;Фура 1 Склад №1;Критерии для выбора товаров;Оборачиваемость,Плотность Склад №1;Заказ не более чем на;0 Склад №1;Максимальное количество изменяемых строк;0 Склад №1;Упаковки;Упаковка 1 уровня;0 Склад №1;Кратность упаковок;Упаковка 1 уровня;0
Данные по клиентам
По умолчанию Наименование клиента и Код клиента одинаковые, они заполняются автоматически если загружается история продаж по клиентам, либо загружаются закупки под клиентов.
Информацию по клиентам и соответствие наименования клиента, коду клиента можно загрузить из файла соответствующего формата.
Формат файла загрузки
Файл состоит из секций:
#clients - коды и имена клиентов
#clientsProperties - свойства клиентов
#clientsAvailableStorages - доступные направления перемещения
#clientsRelationshipValues - сроки и стоимости доставки
Формат:
#clients код_клиента;имя ... #clientsProperties код_клиента;имя_свойства;значение_свойства ... #clientsAvailableStorages код_клиента;склад1;склад2;... ... #clientsRelationshipValues склад;код_клиента;стоимость доставки;число склад;код_клиента;период доставки;число склад;код_клиента;стоимость доставки (за ед. веса);число склад;код_клиента;стоимость доставки (за ед. объёма);число склад;код_клиента;стоимость доставки (% от стоимости груза);число ...
При загрузке происходит проверка файла на корректность данных.
Пример:
#clients Клиент 2;Клиент 2 Клиент 1;Клиент 1 #clientsProperties Клиент 2;Регион;Регион №1 Клиент 1;Регион;Регион №1 #clientsAvailableStorages Клиент 2;Склад №1;Склад №3 Клиент 1;Склад №2;Склад №1 #clientsRelationshipValues Склад №1;Клиент 2;стоимость доставки;0 Склад №1;Клиент 2;период доставки;0 Склад №3;Клиент 2;стоимость доставки;0 Склад №3;Клиент 2;период доставки;0 Склад №2;Клиент 1;стоимость доставки;0 Склад №2;Клиент 1;период доставки;0 Склад №1;Клиент 1;стоимость доставки;0 Склад №1;Клиент 1;период доставки;0
Прайс листы поставщиков
Заголовок и формат - Код;Поставщик;Цена;Остаток;Последнее обновление
где:
- Код- код товара
- Поставщик- поставщик товара
- Цена- цена закупки за штуку
- Остаток- Остаток товара у поставщика по заданной цене.
- Последнее обновление - время обновления прайс-листа в формате 10.01.2024 15:00
Разделителем столбцов должен выступать только символ «;», столбец Последнее обновление - не обязателен
Старый формат загрузки истории продаж
Данные от пользователя загружаются из текстового (csv) файла.
Формат кодировки файла – UTF-8.
Файл имеет заголовок следующего вида:
1.Код товара;2.артикул;3.название товара;4.склад;5.дата;6.кол-во продажи;7.прочий расход;8.кол-во поступления;9.в резерве;10.заказано;11.цена продажи;12.выручка;13.цена закупа;14.себестоимость;15.остаток;16. Упущенный спрос 17.клиент 18.невыполненный заказ 19.прибыль 20.учётная цена 21.товар в пути
Текст в столбцах заголовка и порядок столбцов в csv файле не фиксирован, может быть любой. Количество столбцов в заголовке должно совпадать с количеством столбцов в данных.
Формат строки файла следующий:
<1. Код товара - уникальный идентификатор>;<2. артикул товара>;<3. название товара>;<4. название склада или код склада>;<5. дата продажи или изменения остатка в формате «гггг-мм-дд»>;<6. кол-во единиц продажи суммированное за весь день>;<7. кол-во единиц прочего расхода (перемещения, списания, корректировки и пр.) за весь день>;<8. кол-во единиц поступления за весь день>;<9. количество товара в резерве на конец дня >;<10. количество товара в размещенных заказах поставщику на конец дня>;<11. цена продажи>;<12. сумма продажи= кол-во единиц продажи*цена продажи>;<13. цена закупочная>;<14. сумма закупочная=кол-во единиц продажи*цена закупочная>;<15. остаток товара на конец дня>;<16. упущенный спрос (в случае поклиентской детализации для каждого клиента грузится отдельно)>;<17. клиент, которому произошла продаж>;<18.невыполненный заказ>;<19.прибыль=Кол-во проданного * (Цена реализации - Закупочная цена)>;<20.учётная цена>;<21.товар в пути>
Жирным выделен минимальный набор необходимых данных при первоначальной загрузке.
Подчеркнутым дополнительно выделен желательный набор данных для работы различных анализов и оптимизации уровня сервиса, а также для проведения предварительного (предпроектного) исследования.
Курсивом обозначены поля, которые в настоящий момент не используются в системе. Поля зарезервированы для будущих версий и предназначены для контроля стокового уравнения (корректности выгрузки данных).
Таким образом, минимальный желательный формат:
<1. Код товара - уникальный идентификатор>;<3. название товара>;<4. название склада или код склада>;<5. дата продажи или изменения остатка в формате «гггг-мм-дд»>;<6. кол-во единиц продажи суммированное за весь день>;<10. количество товара в размещенных заказах поставщику на конец дня>;<11. цена продажи>;<13. цена закупочная>;<15. остаток товара на конец дня>
В поле <4. название склада или код склада> можно загружать код склада, тогда потребуется загрузка справочника складов с сопоставлением имен складов и их кодов. Можно использовать название склада как код, тогда оно должно быть уникальным для разных складов. Если у вас всего один склад, то поле к выгрузке не обязательно.
Поле <9. количество товара в резерве на конец дня > предназначено для отражения зарезервированного товара под конкретного клиента или другие нужды. Показывает системе, что фактический остаток должен быть уменьшен на объем товара в резерве для получения свободного остатка.
Поле <10. количество товара в размещенных заказах на конец дня> отражает количество товара, которое уже размещено в заказе поставщику и/или находится в пути.
Поле <16. Упущенный спрос> выгружается в том случае, если имеется информация о точном размере упущенного спроса по товару за конкретный день
Поле <17. клиент, которому произошла продаж> выгружается только в том случае, если предполагается использование модуля маркетинговых акций в разрезе по клиентам (акция действует на конкретного клиента). В других случаях выгрузка этого поля нецелесообразна.
По умолчанию, остатки(фактический остаток, остаток в резерве, товар в заказах и в пути) загружаются на конец дня. Соответственно, при расчётах учитывается, что загружена полная информация по каждой дате.
Если же необходимо загружать и учитывать остатки за текущую дату, при этом, информация загружается не на конец дня, то для этого нужно воспользоваться флагом --day-completion-part
при загрузке через консольную утилиту.
Если в файле выгрузки присутствует информация за определённый период, неполным днём будет считаться только максимальная дата. Остальные даты периода автоматически загружаются как полный день.
При расчётах, информация за неполный день обрабатывается по каждому складу отдельно. Поэтому, если формировать заказ по РЦ с филиалами или отдельно по филиалам и РЦ(без учета филиалов), то всегда будет одинаковая история продаж после обработки неполного дня. То есть, на одном складе информация может быть неполной, а на другом, полной.
По виртуальным складам, товарам аналогам и клиентам, информация о неполном дне обрабатывается одинаково. Если у одного из аналогов(виртуальных складов или клиентов) есть неполный день, значит он будет считаться таковым и у остальных.
Остатки таким образом учитываются только при формирование заказа с включенной глобальной настройкой Учитывать даты поступления заказов
Все цифровые значения - положительные числа или ноль. В выгрузке не должно быть отрицательных остатков или отрицательных продаж и пр. Это не является критичным фактором, но может приводить к некорректной работы системы в некоторых случаях.
Выгружаются только товары, услуги и прочее не выгружается.
Разделитель целой и дробной части - точка.
Разделители разрядов отсутствуют. Верно 6000. 6 000 – неверно.
Строки разделяются между собой переносом строки.
Код товара, артикул, название не должны содержать символа “;”. Необходимо заменять все символы “;” на любой допустимый, например пробел.
Если код товара, артикул или название – пустая строка, то выгружать один пробел.
Цена продажи выгружается только в случае, если кол-во продажи больше нуля. Цена закупочная выгружается в случае, если была реализация и равна последней цене закупки. Также цена закупочная выгружается в случае, если было поступление и равна цене закупки в этом заказе.
Строка выгружается в следующих случаях:
- Была продажа
- Был прочий расход
- Было поступление
- Изменился остаток (перемещение, продажа и пр.), кол-во товара в пути (проведение документа, отмена проведения, приход товара и пр.), кол-во товара в заказе (размещение-закрытие заказа), кол-во товара в резерве (снятие резерва, открытие резерва),
Также выгружаются все строки на день – начало периода выгрузки и все строки на день – конец периода выгрузки вне зависимости от наличия продажи или изменения остатка.
Продажи должны отражать реальные факты продажи без перемещений товаров и прочих событий, не имеющих отношения к реальной продаже.
Необходимо проконтролировать, чтобы все товары имели различные уникальные идентификаторы, иначе поведение программы непредсказуемо.
От полноты и точности предоставляемых данных зависит точность прогноза и эффективность использования программы в целом.
Пример строк выгрузки
1.Код товара;2.артикул;3.название товара;4.склад;5.дата;6.кол-во продажи;7.прочий расход;8.кол-во поступления;9.в резерве;10.заказано;11.цена продажи;12.выручка;13.цена закупа;14.себестоимость;15.остаток;16. Упущенный спрос; 17.клиент;18.невыполненный заказ;19.прибыль;20.учётная цена;21.товар в пути 31051;AR132;Масло бочковое;Склад1;2010-08-01;4;0;1;2;4;63.5;254;15.0;60.0;16;0;Клиент1;0;194;60.0;3 69100;AR1334;Фильтр салона;Склад2;2010-08-01;13;0;0;0;6;36.7;477.1;10.0;130.0;15;Клиент2;0;347.1;130.0;2
Сопоставление полей
Сопоставление полей при загрузке в программу следующее (слева название в описании, справа при выборе полей в указании формата в графическом интерфейсе Forecast NOW!):
- уникальный идентификатор товара – Артикул
- артикул товара – Артикул (доп) (или Артикул, если первое - Пусто)
- название товара – Название
- название склада – Склад
- дата продажи или изменения остатка – Дата
- кол-во единиц продажи – Кол-во
- кол-во единиц прочего расхода – Пусто (зарезервировано для будущих версий)
- кол-во единиц поступления – Пусто(зарезервировано для будущих версий)
- количество товара в резерве – В резерве, ед.
- количество товара в размещенных заказах – Размещенный заказ, ед.
- цена продажи – Цена реализации
- сумма продажи – Выручка
- цена закупочная – Цена закупки
- сумма закупочная – Себестоимость
- остаток товара - Остаток
- упущенный спрос - Упущенный спрос
- клиент - Клиент
- невыполненный заказ - Невыполненный заказ
- прибыль - Прибыль
- учётная цена - Учётная цена
- товар в пути - Товар в пути