В программу можно загрузить несколько типов данных.
Минимально необходимые данные:
Желательные данные:
Дополнительные:
Обычно параметры товаров задаются из интерфейса пользователя или рассчитываются системой автоматически. Аналоги и маркетинговые акции также могут быть заданы через графический интерфейс. Их загрузка из файла производится в том случае, если такая информация уже имеется в учетной системе.
Способы загрузки данных
кодировка UTF-8 разделитель - ; (точка с запятой) не должен встречаться в значениях свойств, названиях свойств, названии и артикуле товара, а также других текстовых полях если значение не задано или не известно, то необходимо указать пропуск ; ; или ;0; для числовых значений.
История продаж и остатков – основной тип данных, необходимый для работы программы Forecast NOW! В программу нужно загрузить историю продаж, остатков и цен, выгруженных из учетной системы. Доступно три сценария выгрузки этих данных:
При первых двух сценариях поддерживается два типа файлов – csv или xml
Вы можете выгружать и загружать в программу отдельно информацию по продажам и остаткам товаров (также допустима отдельная загрузка цен). Разберем форматы и содержимое этих файлов
Такой файл должен содержать информацию по всем продажам товаров. Возможные варианты передачи продаж
В файле могут присутствовать следующие столбцы (в любом порядке)
Поле | Описание | Обязательность |
---|---|---|
Уникальный идентификатор товара | Уникальный идентификатор товара, обычно код в учетной системе | Обязательно |
Дополнительный идентификатор товара | Дополнительный идентификатор товара (обычно тот, который привычен пользователям, например артикул) | Рекомендуется |
Название товара | Название товара | Рекомендуется |
Код склада | Уникальный идентификатор склада (обычно uid код в учетной системе) | Обязательно |
Дата продажи | Дата продажи или изменения остатка в формате гггг-мм-дд или дд.мм.гггг | Обязательно |
Количество | Количество продажи или списания в производство по калькуляции. Возможнаь загрузка суммарно за день по складу-товару -клиенту (в случае поклиентской детализации) или отдельными строками | Обязательно |
Клиент | Клиент, которому произошла продажа (характерно для дистрибьюторов и оптовой торговли) | Выгружается только в том случае, если предполагается использование модуля маркетинговых акций в разрезе по клиентам (акция действует на конкретного клиента) и приобретены версии Enterprise или Ultimate |
Цена продажи | Цена реализации, при наличии отгрузок в день по разным ценам можно использовать средневзвешенную. Выгружается только в случае, если кол-во продажи больше нуля | Обязательно |
Цена закупки | Последняя известная цена закупки товара. Выгружается в случае, если была реализация и равна последней цене закупки. Также выгружается в случае, если было поступление и равна цене закупки в этом заказе. | Обязательно |
Учетная цена | Цена, по которой учитывается товар, себестоимость | Не обязательно. Используется при оптимизации уровня сервиса |
Сумма продажи | кол-во единиц продажи*цена продажи | Рекомендуется |
Сумма закупочная | кол-во единиц продажи * цена закупочная | Рекомендуется |
Упущенный спрос | Известный упущенный спрос (если такой фиксируется в учетной системе) | Необязательно |
Прибыль | Кол-во проданного*(цена реализации - Закупочная цена (или себестоимость) | Необязательно |
Общий формат (перечислены все возможные поля, их обязательность описана в таблице)
<1.Уникальный идентификатор>;<2. Дополнительный идентификатор товара >;<3. название товара>;<4. код склада>;<5. дата продажи в формате «гггг-мм-дд» или дд.мм.ггг>;<6. кол-во единиц продажи суммированное за весь день>; <7. клиент, которому произошла продажа>;<8. цена продажи>;<9. сумма продажи= кол-во единиц продажи*цена продажи>;<10. цена закупочная>;<11. сумма закупочная=кол-во единиц продажи*цена закупочная>;<12. упущенный спрос (в случае поклиентской детализации для каждого клиента грузится отдельно)>;<13.прибыль=Кол-во проданного * (Цена реализации - Закупочная цена)>;<14.учётная цена>
У товара было 3 дня продаж:
В итоге файл должен выглядеть следующим образом:
Код товара;Артикул товара;Название товара;Склад;Дата;Количество проданного;Цена реализации;Цена закупки;Учетная цена;Выручка;Себестоимость;Прибыль;Упущенный спрос 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
Комментарии к примеру:
Альтернативный вариант (без суммирования внутри дня)
Код товара;Артикул товара;Название товара;Склад;Дата;Количество проданного;Цена реализации;Цена закупки;Учетная цена;Выручка;Себестоимость;Прибыль;Упущенный спрос 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 Количество товаров в пути на этот склад>
В итоге файл должен выглядеть следующим образом:
Код товара;Артикул товара;Название товара;Склад;Дата;Фактический остатко на конец дня;Резерв;Товар в заказах;Товар в Пути 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
Комментарии к примеру:
Возможна выгрузка общего файла, содержащего информацию по продажам, остаткам и ценам на товары.
UPD возможен вариант с передачей данных по каждому факту продажи (по одной дате-товару-складу в файле может быть несколько строк
Файл выгрузки продаж и остатков представляет собой текстовый файл, содержащий заголовок, каждый столбец отделяется ; (порядок столбцов может быть любым) Каждая строчка соответствует информации по конкретному товару-складу за определенную дату. В файле передаются значения ключевых полей:
Поле | Описание | Обязательность |
---|---|---|
Уникальный идентификатор товара | Уникальный идентификатор товара, обычно код в учетной системе | Обязательно |
Дополнительный идентификатор товара | Дополнительный идентификатор товара (обычно тот, который привычен пользователям) | Рекомендуется |
Название товара | Название товара | Рекомендуется |
Код склада | Уникальный идентификатор склада (обычно uid код в учетной системе) | Обязательно |
Дата продажи или изменения остатка | Дата продажи или изменения остатка в формате гггг-мм-дд или дд.мм.гггг | Обязательно |
Количество | Количество продажи или списания в производство по калькуляции. Считается суммарно за день по складу-товару -клиенту (в случае поклиентской детализации) | Обязательно |
Клиент | Клиент, которому произошла продажа (характерно для дистрибьюторов и оптовой торговли) | выгружается только в том случае, если предполагается использование модуля маркетинговых акций в разрезе по клиентам (акция действует на конкретного клиента). В других случаях выгрузка этого поля нецелесообразна |
Количество товара в резерве на конец дня | количество товара в резерве под исключительный спрос на конец дня | Не обязательно, рекомендуется при наличии резервирования |
Количество товара в размещенных заказах поставщику на конец дня | количество товара в размещенных заказах, но еще не отправленных поставщиком на конец дня | Обязательно при наличии такой информации в учетной системе и если не выгружается отдельным файлом с датами поступлений |
Товар в пути | Число товара, находящееся в пути от поставщика | Обязательно при наличии такой информации в учетной системе и если не выгружается отдельным файлом с датами поступлений. Товары в заказах и товары в пути можно выгрузить в 1 столбце |
Цена продажи | Цена реализации, при наличии отгрузок в день по разным ценам использовать средневзвешенную. Выгружается только в случае, если кол-во продажи больше нуля | Обязательно |
Цена закупки | Последняя известная цена закупки товара. Выгружается в случае, если была реализация и равна последней цене закупки. Также выгружается в случае, если было поступление и равна цене закупки в этом заказе. | Обязательно |
Учетная цена | Цена, по которой учитывается товар, себестоимость | Не обязательно. Используется при оптимизации уровня сервиса |
Сумма продажи | кол-во единиц продажи*цена продажи | Рекомендуется |
Сумма закупочная | кол-во единиц продажи * цена закупочная | Рекомендуется |
Остаток товара на конец дня | Фактический остаток товара на конец дня | Обязательно |
Упущенный спрос | Известный упущенный спрос (если такой фиксируется в учетной системе) | Необязательно |
Прибыль | Кол-во проданного*реализации - Закупочная цена (или себестоимость) | Необязательно |
Невыполненный заказ | Невыполненый поставщиком заказ, который необходимо прибавить к новому заказу, бэкордер | Необязательно |
Общий формат (перечислены все возможные поля, их обязательность описана в таблице)
<1. Код товара - уникальный идентификатор>;<2. артикул товара>;<3. название товара>;<4. название склада или код склада>;<5. дата продажи или изменения остатка в формате «гггг-мм-дд»>;<6. кол-во единиц продажи суммированное за весь день>;<7. кол-во единиц прочего расхода (перемещения, списания, корректировки и пр.) за весь день>;<8. кол-во единиц поступления за весь день>;<9. количество товара в резерве на конец дня >;<10. количество товара в размещенных заказах поставщику на конец дня>;<11. цена продажи>;<12. сумма продажи= кол-во единиц продажи*цена продажи>;<13. цена закупочная>;<14. сумма закупочная=кол-во единиц продажи*цена закупочная>;<15. остаток товара на конец дня>;<16. упущенный спрос (в случае поклиентской детализации для каждого клиента грузится отдельно)>;<17. клиент, которому произошла продаж>;<18.невыполненный заказ>;<19.прибыль=Кол-во проданного * (Цена реализации - Закупочная цена)>;<20.учётная цена>;<21.товар в пути>
В файле появляется строка, если по товару состоялось какое-то событие (или несколько событий):
В итоге файл должен выглядеть следующим образом:
Код товара;артикул;название товара;склад;дата;кол-во продажи;цена продажи;выручка;цена закупа;себестоимость;прибыль;остаток;в резерве;заказано;товар в пути;Упущенный спрос;учётная цена 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
Комментарии к примеру:
Возможна частичная загрузка/обновление данных (не всех столбцов, которые были загружены первоначально - например, отдельная загрузка текущих остатков или товара в пути).
При частичном обновлении данных в файле загрузки могут присутствовать только данные по дате, коду товара и нужным столбцам, при загрузке файла нужно выбрать нужный формат и режим загрузки «Обновить частично» (при консольной загрузке флаг –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;Игнорировать
Значения параметров которые указываются в днях, должны быть целым числом(без дробной части)
Демо-склад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.
Файл имеет заголовок следующего вида:
ИД;Название;Склад;Товар;Дата начала;Дата окончания;Клиент;Коэффициент товара;...
Обязательные поля для загрузки акций:
ИД - идентификатор акции
Название - название акции
Склад - код склада
Товар - код товара
Дата начала и Дата окончания - период действия акции в формате дд.мм.гггг или гггг-мм-дд
<hidden Дополнительные, не обязательные поля:>
Клиент - код клиента, по которому проходит акция
Сегмент клиентов - сегмент клиентов по которому проходит акция. В одной и той же акции нельзя указать и клиента и сегмент в который он входит.
Клиент для прогнозирования - код клиента, используемого для прогнозирования акции
Товар для прогнозирования - код товара, используемого для прогнозирования акции
Коэффициент товара - коэффициент роста товара по указанной акции, не отрицательное десятичное число
Коэффициент акции - коэффициент роста в целом по акции, не отрицательное десятичное число
Категория - категория акция
Глубина скидки - глубина скидки акции (может загружаться только в паре с Коэффициентом товара)
Активность - статус активности акции, «активна» или «неактивна»
Дата/Время создания - дата создания акции
Комментарий - комментарии к акции
Объём - планируемый объём спроса
Дата объёма - дата указанного объёма
Заказать заранее за, дней - за какой период заказать товар под акцию заранее, не отрицательное целое число
Тип акции - «коэффициент» или «объём»
Дополнительные показатели для акций типа объём: Выполнение плана (мин), Выполнение плана (среднее), Выполнение плана (макс), Точность планирования (мин), Точность планирования (макс), Точность планирования (среднее), Прогнозируемый объём спроса, Фактический объём спроса, Плановый объём спроса - не отрицательные десятичные числа
</hidden>
Поля могут располагаться в произвольном порядке. Информация представляется в порядке, соответствующем заголовку. Заголовок должен соответствовать представленным данным.
Заголовки можно указывать маленькими и большими буквами, без пробелов.
Разделитель целой и дробной части - точка.
Пример содержимого файла:
ИД;Название;Склад;Товар;Дата начала;Дата окончания;Коэффициент акции;Заказать заранее за, дней 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":{}}
<hidden Полный перечень возможных параметров и их значений:>
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 - заказать заранее за, тип целое число </hidden>
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»
Команды выполняются последовательно. Акция должна объявляться до приписывания к ней клиентов либо уже существовать в базе.
#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
Поддерживаются следующие форматы дат при загрузке данных по акциям:
Пример. 2006-05-04
Пример. 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 Каждая строка - это отдельная структура подчиненности.
1. Указание родительских и подчиненных складов и виртуальности:
"edges":[{"from":"код родительского склада", "to":"код подчиненного склада1", "isVirtual":false}, {…}, {from":"код родительского склада", "to":"код подчиненного склада2", "isVirtual":true}]
«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
Загружать лучше правила автоустановки параметров, сохраненные из программы. При загрузке правил из файла происходит удаление всех ранее имеющихся правил и на их место записываются правила автоустановки из файла.
<hidden Формат файла автоустановки параметров> Формат файла при выгрузке правил автоустановки имеет следующую структуру:
состоит из двух разделов: 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
В результате имеет такую структуру главная папка
вложенная папка
правило
</hidden>
#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;вложенная папка
Фильтры подготовки заказов лучше создавать через интерфейс программы.
Загружать лучше фильтры подготовки заказов, сохранённые из программы.
<hidden Описание формата файла, фильтров подготовки заказов>
Название правила {"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":["Администратор","Балансировщик"]}
</hidden>
Код склада;параметр ограничения;значение Склад №1;Тип ограничения;Увеличить/уменьшить Склад №1;Критерии для выбора товаров;Критерий1, критерий 2 Склад №1;Упаковки;Упаковка 1 уровня;Значение Склад №1;Кратность упаковок;Упаковка 1 уровня;Значение
Разделитель целой и дробной части - .
Возможные значения
Тип ограничения:
Критерии для выбора товаров:
Упаковки и кратность упаковок:
Для всех названий полей и текстовых значений необязательно соблюдать регистр
Склад №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
По умолчанию Наименование клиента и Код клиента одинаковые, они заполняются автоматически если загружается история продаж по клиентам, либо загружаются закупки под клиентов.
Информацию по клиентам и соответствие наименования клиента, коду клиента можно загрузить из файла соответствующего формата.
Заголовок и формат - Код;Поставщик;Цена;Остаток;Последнее обновление
где:
Разделителем столбцов должен выступать только символ «;», столбец Последнее обновление - не обязателен
Данные от пользователя загружаются из текстового (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!):