Содержание

Описание формата данных для загрузки в Forecast NOW!

В программу можно загрузить несколько типов данных.

Минимально необходимые данные:

  1. История продаж, остатков, цен

Желательные данные:

Дополнительные:

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

Способы загрузки данных

Общие требования к формату

кодировка UTF-8 разделитель - ; (точка с запятой) не должен встречаться в значениях свойств, названиях свойств, названии и артикуле товара, а также других текстовых полях если значение не задано или не известно, то необходимо указать пропуск ; ; или ;0; для числовых значений.

Формат загрузки истории продаж

Общая информация

История продаж и остатков – основной тип данных, необходимый для работы программы Forecast NOW! В программу нужно загрузить историю продаж, остатков и цен, выгруженных из учетной системы. Доступно три сценария выгрузки этих данных:

  1. Выгрузка отдельных текстовых файлов по продажам и остаткам товаров
  2. Выгрузка общего файла, содержащего информацию о продажах и остатках товаров
  3. Использование стандартных отчетов 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. Продажи передаются суммировано за 1 день по товару-складу-дате, если в учетной системе нет учета продаж по клиентам или не требуется построение прогноза спроса по клиентам и учета акций по каждому клиенту/ Например, если за день по товару 2 продажи 4 штуки и 8 штук – в выгрузке появится одна строчка с продажей 12

UPD возможен вариант с передачей данных по каждому факту продажи (по одной дате-товару-складу в файле может быть несколько строк

  1. Если в учетной системе есть информация по продажам в разрезе клиентов и приобретена версия Enterprise или Ultimate, а также необходимо учитывать маркетинговые активности в разрезе клиентов или строить по ним прогнозы спроса, то в файле передается сумма продаж товара по каждому клиенту за конкретную дату. Например, если за день по одному клиенту были продажи 2 и 4 штуки, а по другому 3 и 6 штук, то в файле выгрузки появятся две строчки – с продажей 6 по первому клиенту и 9 по второму.
  2. Все типы остатков передаются на конец дня (сколько на конец дня было фактического остатка, зарезервированного товара, товара в пути и заказах)
  3. При наличии нескольких реализаций по 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;Игнорировать

Название параметров (ключевые слова)

При проверке и импорте файла параметров (CSV) игнорируются непечатные (типа неразрывного пробела) и лишние, а также не поставленные пробелы, точки и запятые в названии параметров

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

Название параметров Основные

Название параметров Особенности поставок

При загрузке округления, используются цифровые обозначения, значений параметра:
«По правилам» - «0»
«Всегда вверх» - «1»
«Всегда вниз» - «2»
«По правилам, складская» - «3»
«Не установлено» - «4»
«Половина кратности, складская» - «6»
«По упаковкам» - «7»
Округления с десятичными порогам, загружаются со своим названием, округление 0.1 загружается, как 0.1

Название параметров Расписание поставок

Название параметров Прогнозирование

Название параметров Сезонность

Обычно эти параметры не нужно загружать извне. Если вы собираетесь это делать, предварительно проконсультируйтесь с разработчиком

Демо-склад1;4000000000016;Нормировать сезонность;Нет
Демо-склад1;4000000000016;Учитывать сезонность;Да

Название параметров балансировка

Только, если необходимо решать задачу внутренних перемещений

Формат файла для выгрузки/загрузки Аналогов

Содержит информацию об аналогичных товарах. С помощью этого файла задаются главный и младшие аналоги. Главный аналог – товар, чей уникальный идентификатор следует первым в строке. При этом учитывается история продаж по всем аналогам, а остатки товаров-аналогов суммируются. При попытке добавления младшего аналога в Заказ или Анализ будет добавлен главный аналог. В файле обмена уникальный идентификатор товара-главного аналога идет первыми, уникальные идентификаторы младших аналогов отделяются символом ; (точка с запятой) Каждая группа аналогов находится в файле обмена на новой строке

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>]

<дата начала акции> и <дата окончания акции> могут иметь формат дд.мм.гггг и гггг-мм-дд. Например, 31.12.2017 или 2017-12-31. <коэффициент акции> - числовое значение, которое обычно рассчитывается самой программой, в этом случае нужно передавать значение равным 1. <категория акции> - текстовое значение, в рамках одной категории производится сегментация акций для прогнозирования эффекта будущих. Обычно используется для указания глубины скидки, в таком случае категория принимает значение из следующих: Скидка 5-10%, Скидка 10-15%, Скидка 15-25% и т.п. Может быть не задана.

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":{}}

Полный перечень возможных параметров и их значений:

Полный перечень возможных параметров и их значений:

comment - текст комментария, тип строка

deficitPercent - процент дефицита, число

creationDateTime - дата/время создания акции в формате ISO

modifiedDateTime- дата/время изменения акции в формате ISO

campaignType - тип акции AMOUNT или COEF

isUpdateToCoefTypeFromAmount - флаг, акции обновлена с типа объём на коэффициент, значения: true, false

coefStatus - статус коэффициента, тип строка

isActive - статус активности акции, true или false

forecastDemandAmount - прогнозный объём спроса

factDemandAmount - фактический объём спроса

planDemandAmount - плановый объём спроса

minImplementationOfPlan - минимальный процент выполнения плана

meanImplementationOfPlan - средний процент выполнения плана

maxImplementationOfPlan - максимальный процент выполнения плана

minPlanningAccuracy - минимальный процент точности планирования

meanPlanningAccuracy - средний процент точности планирования

maxPlanningAccuracy - максимальный процент точности планирования

userFields - пользовательские поля, тип json

inAdvanceOrderedDays - заказать заранее за, тип целое число

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

Формат файла для закупок клиентов

Закупки импортируются из файла с форматом «Склад;Артикул;Клиент;Дата;Объём»,

Клиент может быть пустым полем

Дата может иметь формат гггг-ММ-дд (например, 2017-01-01) или дд.мм.гггг (например, 01.01.2017)

Объём - число, возможно десятичное с разделителем долей через точку

Склад;Артикул;Клиент - тройка, для которой нужна закупка.

Дата - дата, в которую товар должен быть на складе.

Объём - объём (количество) закупки.

Пример файла

Склад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

Формат файла произвольных полей для таблицы заказа

В файле должно:

  1. Задано название произвольных полей и их тип
  2. Товарам с конкретного склада заданы значения этих полей

Сами поля и их тип задаются в следующем формате:

Имя_Поля_Товара;имеетТип;Тип

Имя_Поля_Товара - произвольное название поля

имеетТип - ключевое слово для задания типа, может быть написано в любом регистре

Тип - может иметь значение «Число» или «Строка», написанное а любом регистре. Если значение отлично от Число или строка, то программа будет воспринимать Тип поля как Строка.

От типа поля зависит сортировка.

Указание значения поля товара имеет вид «Склад;Артикул;Имя_поля_товара;Значение», где

Склад - склад товара

Артикул - уникальный идентификатор товара

Имя_поля_товара - имя поля товара, заданное ранее

Значение - значение поля товара

Пример файла произвольных полей для таблицы заказа

Важность товара по десятибалльной шкале;имеетТип;Число
Топ;имеетТип;Строка
Основной склад;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}

Файл соответствует следующей структуре:

Ошибки загрузки

При загрузке файлов проверяется: При валидации файла иерархий складов проверяются:

  1. Корректность структуры документа (критическая)
  2. Проверка на пустой список складов (предупреждение)
  3. Корректность значения 'Использовать параметры родительского склада' (критическая)
  4. Имя иерархии на пустоту (критическая)
  5. Имя иерархии на дубль (предупреждение)

Направления балансировки

Формат файла загрузки

Файл имеет формат csv, содержит список разрешенных направлений

<название направления балансировки>;<код склада донора>;<код склада реципиента>

Каждая строка файла – одна пара из склада-донора (откуда везется товар) и склада-реципиента (куда везется товар), в файле может быть несколько направлений балансировки с разными названиями.

Пример файла

Распределение;Основной склад;Склад №3
Распределение;Основной склад;Склад №2
Распределение;Основной склад;Склад №1
Сбор с филиалов на РЦ;Склад №3;Основной склад
Сбор с филиалов на РЦ;Склад №2;Основной склад
Сбор с филиалов на РЦ;Склад №1;Основной склад
Создается 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

Дробная часть отделяется точкой

Ошибки загрузки

При валидации файла зон хранения проверяются:

  1. Корректность структуры документа (критическая)
  2. Имя зоны хранения на пустоту (предупреждение, зона с пустым именем не будет создана)
  3. Формат числовых данных (предупреждение)

Пример файла

Стеллажи;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

Правила автоустановки параметров

Формат файла автоустановки параметров

Загружать лучше правила автоустановки параметров, сохраненные из программы. При загрузке правил из файла происходит удаление всех ранее имеющихся правил и на их место записываются правила автоустановки из файла.

Формат файла автоустановки параметров

Формат файла автоустановки параметров

Формат файла при выгрузке правил автоустановки имеет следующую структуру:

состоит из двух разделов: 1.#parametersRuleTable

Содержит созданные правила автоустановки в следующем формате:

Имя правила;{"analysis":[*values*],"groups":[*values*],"itemsFields":[*values*],"parameters":[*values*],"properties":[*values*],"result":{"{*setParameters*}"},"storages":[*values*]}

, где [*values*] представляется как {«name»:*NameProperty*,«values»:[*ValuesProperty*]}

Для параметров(parameters) и свойств(properties) [*values*] это: [{«name»:*NameProperty*,«values»:[*ValuesProperty*]}]

Пример[*values*] для свойств: [{«name»:«Длина»,«values»:[«100»,«120»,«110»]},{«name»:«Вес»,«values»:[«0.4»,«0.5»]}]

Правило работает для товаров, у которых свойства Длина установлено либо в 100, или в 120, или в 110 И Вес у которых либо 0.4, либо 0.5

Пример [*values*] для параметра: [{«name»:«ordersScheldule»,«values»:[«1 раз в месяц»,«2 раза в неделю»]}]

Правило работает для товаров, у которых параметр расписание заказов(ordersSchedule) установлено либо в 1 раз в месяц, либо 2 раза в неделю Аналогично примеру со свойствами дополнительно могут быть указаны другие параметры

Если в правиле было не указано, по каким конкретным характеристикам должны попадать товары под правило, то соответствующий раздел [*values*] = [], как, например, «analysis»:[]

Раздел result содержит список устанавливаемых по автоправилу параметров {*setParameters*}

В примере это выглядит так: «result»:

{«ConsiderWeeklySeasonalityFlag»:1,«storageGraph»:«Демо структура»}

Автоматически будут устанавливаться параметры Иерархия складов в Демо структура, Учитывать понедельную сезонность: Да

Раздел storages содержит список складов, товары которых попадает под автоправило

2.#parametersRuleTree - необязательный раздел содержит описание структуры папок и принадлежащих им правил

Пример:

;folder;главная папка
вложенная папка;item;Правило
главная папка;folder;вложенная папка

Ключевое слово folder указывает, что элемент - папка ; - корень иерархии папок Ключевое слово item указывает, что элемент - правило. Третий параметр - это название правила, описанное в разделе #parametersRuleTable

В результате имеет такую структуру главная папка

вложенная папка

правило

Пример файла автоустановки параметров

#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;вложенная папка

Фильтры подготовки заказов

Фильтры подготовки заказов лучше создавать через интерфейс программы.
Загружать лучше фильтры подготовки заказов, сохранённые из программы.

Описание формата файла, фильтров подготовки заказов

Описание формата файла, фильтров подготовки заказов

Название правила
{"analysisGroups":[{"name":"ABC-ABC","positive":true,"values":["A-A"]},{"name":"123","positive":true,"values":["B-B"]}],"itemsFields":[{"name":"Важность товара по десятибалльной шкале","positive":true,"values":["2"]},{"name":"Топ","positive":true,"values":["да"]}],"parameters":[{"compareType":0,"name":"Анализируемый период, месяцев","positive":true,"values":["12"]},{"compareType":0,"name":"% срока годности, клиенту","positive":true,"values":["1"]}],"productGroups":[["Все товары","Изделия кондитерские","Зефир"],["Все товары","Изделия кондитерские","Мучные","Вафли"],["Все товары","Колбасы"]],"properties":[{"name":"Аналоги","positive":true,"values":["Нет"]},{"name":"Вес","positive":true,"values":["0.5","0.4"]},{"name":"Вид","positive":true,"values":["Хлеб"]}],"storages":["Склад №2","Склад №1","Склад №3"],"suppliers":["Алефонсина"],"user":["Администратор","Балансировщик"]} 

  • analysisGroups - По группам анализов. Группы анализа перечисляются через запятую, каждая группа анализа заключена в {…}. В рамках группы перечисляются: «name» - название с которым сохранили результаты анализа, «positive» - отрицание если отрицать значение то проставляется false, если не отрицать то true, «values» - установленное значение, если устанавливается несколько значений то пишутся через запятую.
  • itemsFields - По полям товаров. Поля товаров перечисляются через запятую, каждое поле заключено в {…}. В рамках поля перечисляются: «name» - название поля товаров, «positive» - отрицание если отрицать значение, то проставляется false, если не отрицать то true, «values» - значение поля
  • parameters - С параметрами. Параметры перечисляются через запятую, каждый параметр заключён в {…}. В рамках параметра перечисляются: «compareType» - операция сравнения, проставляемые значения: меньше, чем = 0, меньше или равно = 1, равно = 2, больше или равно = 3, больше, чем = 4, между = 5, «name» - название параметра, «positive» - отрицание если отрицать значение. то проставляется false, если не отрицать то true, «values» - установленное значение, если устанавливается несколько значений то пишутся через запятую.
  • productGroups - Товарные группы. Товарные группы перечисляются через запятую, каждая группа заключена в […]. В рамках группы перечисляются через запятую названия всех групп, следующих по иерархии до назначенной группы.
  • properties - Со свойствами. Свойства перечисляются через запятую, каждое свойство заключено в {…}. В рамках свойства перечисляются: «name» - название свойства, «positive» - отрицание если отрицать значение, то проставляется false, если не отрицать то true, «values» - установленное значение, если устанавливается несколько значений то пишутся через запятую.
  • storages - На склады. Склады перечисляются через запятую.
  • suppliers - От поставщиков. Поставщики перечисляются через запятую.
  • user - Для пользователя. Пользователи перечисляются через запятую.

Ограничения на внутренние перемещения

Формат

Код склада;параметр ограничения;значение
Склад №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

21.10.2019 06:24 · t.osmanov

Прайс листы поставщиков

Заголовок и формат - Код;Поставщик;Цена;Остаток;Последнее обновление
где:

  • Код- код товара
  • Поставщик- поставщик товара
  • Цена- цена закупки за штуку
  • Остаток- Остаток товара у поставщика по заданной цене.
  • Последнее обновление - время обновления прайс-листа в формате 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. клиент, которому произошла продаж> выгружается только в том случае, если предполагается использование модуля маркетинговых акций в разрезе по клиентам (акция действует на конкретного клиента). В других случаях выгрузка этого поля нецелесообразна.

Поклиентская детализация доступна только в версии программы Enterprise ( «Под ключ»)
В случае загрузки поклиентской истории продаж поля прибыль и себестоимость будут суммироваться по всем клиентам, но в качестве цен закупки и реализации на конкретную дату будут использованы цены из первой строчки в файлке по этому товару-складу-дате. Рекомендуем загружать по товару для каждого клиента одинаковую цену за один день (среднюю/средневзвешенную).

По умолчанию, остатки(фактический остаток, остаток в резерве, товар в заказах и в пути) загружаются на конец дня. Соответственно, при расчётах учитывается, что загружена полная информация по каждой дате.
Если же необходимо загружать и учитывать остатки за текущую дату, при этом, информация загружается не на конец дня, то для этого нужно воспользоваться флагом --day-completion-part при загрузке через консольную утилиту.
Если в файле выгрузки присутствует информация за определённый период, неполным днём будет считаться только максимальная дата. Остальные даты периода автоматически загружаются как полный день.
При расчётах, информация за неполный день обрабатывается по каждому складу отдельно. Поэтому, если формировать заказ по РЦ с филиалами или отдельно по филиалам и РЦ(без учета филиалов), то всегда будет одинаковая история продаж после обработки неполного дня. То есть, на одном складе информация может быть неполной, а на другом, полной.
По виртуальным складам, товарам аналогам и клиентам, информация о неполном дне обрабатывается одинаково. Если у одного из аналогов(виртуальных складов или клиентов) есть неполный день, значит он будет считаться таковым и у остальных. Остатки таким образом учитываются только при формирование заказа с включенной глобальной настройкой Учитывать даты поступления заказов

Все цифровые значения - положительные числа или ноль. В выгрузке не должно быть отрицательных остатков или отрицательных продаж и пр. Это не является критичным фактором, но может приводить к некорректной работы системы в некоторых случаях.

Выгружаются только товары, услуги и прочее не выгружается.

Одному товару в один день для одного склада (и клиента, если таковой задан) соответствует только одна строка.

Разделитель целой и дробной части - точка.

Разделители разрядов отсутствуют. Верно 6000. 6 000 – неверно.

Строки разделяются между собой переносом строки.

Код товара, артикул, название не должны содержать символа “;”. Необходимо заменять все символы “;” на любой допустимый, например пробел.

Если код товара, артикул или название – пустая строка, то выгружать один пробел.

Цена продажи выгружается только в случае, если кол-во продажи больше нуля. Цена закупочная выгружается в случае, если была реализация и равна последней цене закупки. Также цена закупочная выгружается в случае, если было поступление и равна цене закупки в этом заказе.

Строка выгружается в следующих случаях:

  1. Была продажа
  2. Был прочий расход
  3. Было поступление
  4. Изменился остаток (перемещение, продажа и пр.), кол-во товара в пути (проведение документа, отмена проведения, приход товара и пр.), кол-во товара в заказе (размещение-закрытие заказа), кол-во товара в резерве (снятие резерва, открытие резерва),

Также выгружаются все строки на день – начало периода выгрузки и все строки на день – конец периода выгрузки вне зависимости от наличия продажи или изменения остатка.

При загрузке истории продаж, данные за будущие периоды игнорируются

Продажи должны отражать реальные факты продажи без перемещений товаров и прочих событий, не имеющих отношения к реальной продаже.

Необходимо проконтролировать, чтобы все товары имели различные уникальные идентификаторы, иначе поведение программы непредсказуемо.

От полноты и точности предоставляемых данных зависит точность прогноза и эффективность использования программы в целом.


Пример строк выгрузки

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!):

  1. уникальный идентификатор товара – Артикул
  2. артикул товара – Артикул (доп) (или Артикул, если первое - Пусто)
  3. название товара – Название
  4. название склада – Склад
  5. дата продажи или изменения остатка – Дата
  6. кол-во единиц продажи – Кол-во
  7. кол-во единиц прочего расхода – Пусто (зарезервировано для будущих версий)
  8. кол-во единиц поступления – Пусто(зарезервировано для будущих версий)
  9. количество товара в резерве – В резерве, ед.
  10. количество товара в размещенных заказах – Размещенный заказ, ед.
  11. цена продажи – Цена реализации
  12. сумма продажи – Выручка
  13. цена закупочная – Цена закупки
  14. сумма закупочная – Себестоимость
  15. остаток товара - Остаток
  16. упущенный спрос - Упущенный спрос
  17. клиент - Клиент
  18. невыполненный заказ - Невыполненный заказ
  19. прибыль - Прибыль
  20. учётная цена - Учётная цена
  21. товар в пути - Товар в пути