Содержание

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

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

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

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

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

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

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

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

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

кодировка UTF-8 разделитель - ; (точка с запятой) не должен встречаться в значениях свойств, названиях свойств, названии и артикуле товара, а также других текстовых полях если значение не задано или не известно, то необходимо указать пропуск ; ; или ;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. Название склада> к выгрузке не обязательно.

Порядок полей не имеет значения, так как может быть задан при импорте.

В поле <4. название склада или код склада> можно загружать код склада, тогда потребуется загрузка справочника складов с сопоставлением имен складов и их кодов. Можно использовать название склада как код, тогда оно должно быть уникальным для разных складов.

Поле <9. количество товара в резерве на конец дня > предназначено для отражения зарезервированного товара под конкретного клиента или другие нужды. Показывает системе, что фактический остаток должен быть уменьшен на объем товара в резерве для получения свободного остатка.

Поле <10. количество товара в размещенных заказах на конец дня> отражает количество товара, которое уже размещено в заказе поставщику и/или находится в пути.

Поле <16. Упущенный спрос> выгружается в том случае, если имеется информация о точном размере упущенного спроса по товару за конкретный день

Поле <17. клиент, которому произошла продаж> выгружается только в том случае, если предполагается использование модуля маркетинговых акций в разрезе по клиентам (акция действует на конкретного клиента). В других случаях выгрузка этого поля нецелесообразна.

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

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

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

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

Разделители разрядов отсутствуют. Верно 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. товар в пути - Товар в пути

Частичная загрузка данных

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

При частичном обновлении данных в файле загрузки могут присутствовать только данные по дате, коду товара и нужным столбцам, при загрузке файла нужно выбрать нужный формат и режим загрузки «Обновить частично» (при консольной загрузке флаг –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

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

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

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

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

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

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

Секции файла по обмену акциями

Файл по обмену данных по акциям может содержать три секции

#campaigns - секция для добавления и указания полей акций.

#itemsCampaigns - секция для операция с товарами для расчета (добавления, удаление, но через команду ADD_ITM можно добавить склад вместе с кодом товара акцию, также через команду DEL_ITM можно удалить склад вместе с кодом товаром из акции. Отдельные операции по добавлению/удаленияю складов ADD_WHS/DEL_WHS находятся в секции #campaigns)

#itemsCompareCampaigns - секция для операция с товарами для сравнения (добавления, удаление, но через команду ADD_ITM можно добавить склад вместе с кодом товара в акцию, также через команду DEL_ITM можно удалить склад вместе с кодом товаром из акции. Отдельные операции по добавлению/удаленияю складов ADD_WHS/DEL_WHS находятся в секции #campaigns)

Формат файла для обмена данными по акциям в разрезе клиентов. Если у вас нет складов, то вместо названия склада пишется пусто (отсутствие символов).

Команды акций

ADD_CMP

Добавление акции, перезаписывает всю старую информацию об акции с таким идентификатором. Указывается в секции #campaigns.

Пример:

ADD_CMP;<идентификатор акции>;<наименование акции>;<дата начала акции>;<дата окончания акции>;<коэффициент акции>;<категория акции>;-1[;<клиент1>;...;<клиентаN>]

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

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>

ADD_CST

Добавление клиента к акции с указанным идентификатором. Указывается в секции #campaigns.

Пример:

ADD_CST;<идентификатор акции>;<клиент>

ADD_CALC_CST - аналогична ADD_CST, добавляет клиента для расчета

DEL_CST

Удаление клиента из акции с указанным идентификатором. Указывается в секции #campaigns.

Пример:

 DEL_CST;<идентификатор акции>;<клиент>

DEL_CALC_CST - аналогична DEL_CST, только удаляет клиента для расчета

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;<идентификатор акции>;<идентификатор склада>;<идентификатор товара>;<прогнозируемый объем>;<фактический объем>;<планируемый объем>

Команда для записи конкретным товарам реального, прогнозируемого и запланированного объема спроса

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

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

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

  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

Структура подчиненности складов

Файл имеет формат 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»] – склады, находящиеся в структуре

«user»:«имя пользователя» – владелец структуры складов, необязательное поле

Пример файла

{"edges":[{"from":"Основной склад","to":"Склад №3"},{"from":"Основной склад","to":"Склад №1","isVirtual":true},{"from":"Основной склад","to":"Склад №2"}],"name":"Структура","storages":["Склад №3","Основной склад","Склад №1","Склад №2"]}

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

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

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

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

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

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

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

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

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

Пример файла

Распределение;Основной склад;Склад №3
Распределение;Основной склад;Склад №2
Распределение;Основной склад;Склад №1
Сбор с филиалов на РЦ;Склад №3;Основной склад
Сбор с филиалов на РЦ;Склад №2;Основной склад
Сбор с филиалов на РЦ;Склад №1;Основной склад
Создается 2 направления, в направлении «Распределение» разрешена перевозка товара с Основного склада по филиалам, в направлении «Сбор с филиалов на РЦ» разрешена перевозка товара с филиалов на основной склад.

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

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

  1. Корректность структуры (критическая)
  2. Указание неизвестного склада (предупреждение)

Настройки балансировки

Файл содержит 2 раздела. Один отвечает за настройки балансировки, второй - за сроки и стоимость доставки. Если какой-то настройки нет в файле, останется значение по умолчанию, если настройка написана неправильно, она проигнорируется

При указании настройки пишется ее имя, потом : , потом Да или Нет или значение настройки (если применимо).

При указании сроков и стоимости доставки пишется склад-склад:название параметра:значение параметра

Учитывать аналоги:Нет/Да
Разворачивать аналоги:Нет/Да
Не учитывать разницу цен:Нет/Да
Норма складского запаса равна Сроку поставки + Периодичность:Нет/Да
Доход на высвобожденные средства, % в месяц:Значение
Не перемещать товар, если последнее поступление было раньше, чем (дней):Значение
Особенности поставки (кратность, мин. партия):Основные/Не учитывать/Бадансировка
Иерархия складов:Основная/Балансировка
Алгоритм балансировки:По рентабельности/Пропорциональное распределение остатка с РЦ
Добавить к остатку склада-донора остаток:Нет/Да:Нет/Да
Добавить к остатку склада-реципиента остаток:Нет/Да:Нет/Да
Отображать все нулевые перемещения:Нет/Да
Направление балансировки: /имя конкретного направления

Cклад №1-Склад №2:стоимость доставки:0.00;период доставки:0.000000;стоимость доставки (за ед. веса):0.00;стоимость доставки (за ед. объёма):0.00;стоимость доставки (% от стоимости груза):0.00

Пример

Учитывать аналоги:Нет
Разворачивать аналоги:Да
Не учитывать разницу цен:Нет
Норма складского запаса равна Сроку поставки + Периодичность:Нет
Доход на высвобожденные средства, % в месяц:3
Не перемещать товар, если последнее поступление было раньше, чем (дней):0
Особенности поставки (кратность, мин. партия):Не учитывать
Иерархия складов:Основная
Алгоритм балансировки:Пропорциональное распределение остатка с РЦ
Добавить к остатку склада-донора остаток:Нет:Да
Добавить к остатку склада-реципиента остаток:Нет:Нет
Отображать все нулевые перемещения:Нет
Направление балансировки:Перемещение между филиалами
Склад №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