Содержание

Консольная утилита Forecast NOW!

FSystemConsole.exe

Находится в директории вместе с программой и позволяет

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

Пример работы консольной утилиты Forecast NOW!

Приведен пример последовательного выполнения операций, которые часто выполняются консольной утилитой. Подробный синтаксис каждой операции описан далее

rem переходим в папку с утилитой
cd C:\Program Files\ForecastNOW


rem загружаем параметры в режиме замены, выводим логи загрузки в отдельный файл
FSystemConsole.exe import --properties -r D:\FNOW\SUPPLIERS\Suppliers.csv base >> C:\fcn_logs\log-swod-%date%.txt

rem загружаем поля для товаров в режиме обновления, выводим логи загрузки в отдельный файл
FSystemConsole.exe import --items-fields -a D:\FNOW\SUPPLIERS\Itemfields.csv base >> C:\fcn_logs\log-swod-%date%.txt

rem загружаем акции, выводим логи загрузки в отдельный файл
FSystemConsole.exe import --marketing-campaigns D:\FNOW\CAMPAIGNS\Campaigns.csv base >> C:\fcn_logs\log-swod-%date%.txt

rem загружаем аналоги, выводим логи загрузки в отдельный файл
FSystemConsole.exe import --analogs D:\FNOW\ANALOG\Analog.csv base >> C:\fcn_logs\log-swod-%date%.txt

rem загружаем историю продаж в режиме замены из директории,формируя временный файл из нескольких файлов истории продаж, выводим логи загрузки в отдельный файл
FSystemConsole.exe import -sh -r "C:\Users\user\Desktop\format.format"  "D:\FNOW\SALES"  base --dir "--temp-file=D:\FNOW\temp.csv" >> C:\fcn_logs\log-swod-%date%.txt

rem загружаем классификации в режиме замены, выводим логи загрузки в отдельный файл
FSystemConsole.exe import -o -r D:\FNOW\ASSORTMENT\Assortment.csv base >> C:\fcn_logs\log-swod-%date%.txt

rem рассчитываем прошедшие акции (ранее не рассчитанные, спрогнозированные или рассчитанные по неполным данным), выводим логи расчета в отдельный файл
FSystemConsole.exe calc-coeff-mcampaigns --ctype coef --status calc_by_incomplete_data;notset;forecast; --periodstatus past base >>C:\fcn_logs\log-past-%date%.txt

rem рассчитываем текущие акции, прошедшие больше чем на 50% (ранее не рассчитанные, спрогнозированные или рассчитанные по неполным данным), выводим логи расчета в отдельный файл
FSystemConsole.exe calc-coeff-mcampaigns --ctype coef --status calc_by_incomplete_data;notset;forecast; --degree-completion 50 100 --periodstatus going base >> C:\fcn_logs\log-going-%date%.txt

rem прогнозируем будущие акции, выводим логи расчета в отдельный файл
FSystemConsole.exe calc-coeff-mcampaigns --ctype coef --coef 1 1 --periodstatus future --forecast base >> C:\fcn_logs\log-going-%date%.txt

rem для высвобождение ресурсов сервера даем небольшой таймаут
timeout 300 > NULL

rem проводим балансировку по фильтру "balance1" с использованием настроек пользователя user
FSystemConsole.exe balancing base "D:\fnow_balancing\settings1.csv" "D:\FNOW!\OUT\ORDERS\TRANSFER\BALANS" --user "user" --filter "balance1"  >> C:\fcn_logs\log-swod-%date%.txt

timeout 300 > NULL

rem формируем заказы по фильтру 1 с учетом ранее проведенной балансировки, возможные ошибки консоли выводим в отдельный файл
FSystemConsole.exe make-orders --user "user" --consider-balancing "1" "base" "D:\FNOW\OUT\ORDERS" >> C:\fcn_logs\log-swod-%date%.txt
echo %ERRORLEVEL% >> E:\log\log-swod-%date%.txt

Логирование выполнения команды

Процесс выполнения любой консольной команды можно записывать в лог файл. Для этого, в конце команды нужно указать флаг «log» и после знака «=» путь к файлу лога.

Пример с указанием пути к файлу:

FSystemConsole.exe import -sh -r "D:\FNOW\format.format"  "D:\FNOW\SALES"  base --log=C:\fcn_logs\log-swod.txt

Если путь к файлу не указан или файл не доступен, то лог консоли будет записан в новый сгенерированный файл в профиле в папке %AppData%\Ingenious Team\ForecastNOW\logs

Пример без указания пути к файлу:

FSystemConsole.exe import -sh -r "D:\FNOW\format.format"  "D:\FNOW\SALES"  base --log

При формирование балансировки с указанием этого флага, записывается расширенный лог.

Логирование неудачных запусков утилиты

Неудачные запуски консоли логируются.

После запуска графического интерфейса показываются предупреждения со всеми новыми логами с возникшими ошибками при запуске консольной утилиты для всех пользователей (только один раз при первом запуске). В сообщение о критической ошибке импорта указывается путь к файлу с логом ошибок.
Если при старте работы с консольной утилитой возникает ошибка ключа защиты, то происходит 5 переподключений. При этом в консоль выводится сообщение:

protection key error. try to reconnect...

По умолчанию отображаются только критические ошибки. Чтобы отображать все ошибки, нужно отключить соответствующую глобальную настройку

Если консольная утилита завершилась из-за возникновения ошибки, то создаётся дамп памяти.
Путь к созданному файлу дампа, отображается в командной строке. По умолчанию файл дампа памяти создаётся в папке C:\ProgramData\Ingenious Team\ForecastNOW\CrashDumps в формате dmp.
Данный файл можно передать в службу технической поддержки, для анализа и выявления причины завершения работы консольной утилиты.

Коды ошибок при работе консольной утилиты

0 Нормальное завершение работы
1 Запуск без параметров
2 Падение программы
3 Ключ защиты недоступен
4 Ошибка запроса к базе данных
5 Указано недостаточно аргументов для операции
6 Указано слишком много аргументов для операции
7 База данных не существует
8 Не указано имя базы данных
9 Файл не существует
10 Не удалось открыть файл
11 Не удалось создать бэкап
12 Введена неизвестная команда
13 Указан неизвестный режим импорта
14 Указан неизвестный тип данных
15 Некорректная версия базы
16 Некорректные аргументы
17 Некорректная строка аргументов
18 Некорректный формат истории продаж
19 Пользователь не найден
20 По указанным параметрам не требуется размещать заказы при автоматическом формировании списка заказов
21 Критическая ошибка импорта
22 Сервер базы данных не доступен
23 Не удалось активировать файл лицензии
24 Не указан или указан некорректный файл лицензии
25 Срок лицензии истек
26 В команде экспорта информационной базе (ключи -ib или –information-base команды export) указан существующий файл для сохранения
27 При удалении данных(команда remove) не указан ключ -f и нет прав на запись в каталог бэкапа
28 При импорте сегментов клиентов (ключ –complex-client) в файле указан несуществующий клиент
29 У товара нет ближайшей доступной даты формирования заказа
31 Ошибка аутентификации при отправке заказа по электронной почте
34 В базе данных нет правил автоустановки с указанным типом
35 Ни одно из введенных названий правил с указанным типом не соответствует тем, что находятся в базе данных
36 Массовая загрузка данных в таблицу sales недоступна. Загрузка была произведена в обычном режиме.

Остановка работы консольной утилиты при возникновение ошибок

Если во время работы консольной утилиты выявлены ошибки, то можно отменить дальнейшее выполнение команд. Для этого нужно в файл для консольной утилиты вставить дополнительную команду:

echo %ERRORLEVEL%
IF %ERRORLEVEL% EQU 0 goto okay
:erorrs 
echo some errors
exit
:okay 
echo okay

Данное поле нужно вставить после команды, при выполнение которой если будут выявлены ошибка утилита прекратит свою работу.
Например:
Если при загрузке истории продаж возникнут ошибки, то консольная утилита прекратит свою работу и файл классификации не будет загружен.

FSystemConsole.exe" import -sh -a "C:\file\format.format" "C:\file\history.csv" demo.db
echo %ERRORLEVEL%
IF %ERRORLEVEL% EQU 0 goto okay
:erorrs 
echo some errors
exit
:okay 
echo okay
FSystemConsole.exe" import -o -r "C:\file\classification.csv" demo.db 

Справка по команде

FSystemConsole.exe help

Указание пути к конфигурационным файлам

Вы можете указать путь к конфигурационным файлам при работе консольной утилиты

- путь к файлу gnclient.ini, команда –gnclient-file

- путь к файлу dbserver-config.ini, команда –db-config-file

- папки с настройками, если она указана то файлы gnclient.ini и dbserver-config.ini ищутся там (если не указаны конкретные пути через команды описанные выше), команда –config-path

По умолчанию, конфигурационные файлы которые использует программа находятся в C:\ProgramData\Ingenious Team\ForecastNOW
Флаг с указанием пути к файлам, можно указать в любой части команды.

Импорт данных

Общий синтаксис

FSystemConsole.exe import тип [режим формат | режим] путь_к_загружаемому_файлу база_данных [опции]

режим - замена, обновление или частичное обновление
формат - формат истории продаж, актуально только для истории продаж
база_данных - название базы данных Forecast NOW!

Тип

 -sh, --sales-history   импорт только истории продаж в csv и xml формате(для csv обязательно указание файла формата)
 -o, -c, --ontology, --classification  импорт классификации
 -p, --properties  импорт параметров
 -a, --analogs    импорт аналогов
 -mс, --marketing-campaigns       импорт акций
 -sp, --suppliers   импорт данных поставщиков
 --all    импорт файла формата xml, содержащего историю продаж, параметры, классификацию и даты поступления заказов
 --storage-aliases  импорт файла, содержащего названия складов
 --customer-purchases   импорт файла, содержащего закупки для клиентов
 --composite  импорт файла, содержащего комплекты
 --items-fields  импорт файла, содержащего произвольные поля для таблицы Заказа
 --arrivals    импорт файла, содержащего заказы и даты их поступления        
 --balancing-destinations  импорт файла, содержащего направления балансировки
 --settings-balancing импорт файла, содержащего настройки балансировки
 --storage-graphs   импорт файла, содержащего структуры подчиненности складов
 --storage-area  импорт файла, содержащего зоны хранения
 --order-schedule  импорт файла, содержащего расписания заказов
 --storage-graphs   импорт файла, содержащего иерархии складов
 --balancing-destinations  импорт файла, содержащего направления балансировки
-- parameters-rule импорт файла, содержащего правила автоматической установки параметров
-- complex-client импорт файла, содержащего сегменты клиентов
--parameters-rule импорт файла, содержащего правила автоустановки параметров
--prepare-report-settings импорт файла, содержащего фильтры подготовки заказа
--recipients-limits импорт файла, содержащего ограничения для внутренних перемещений
--clients импорт файла содержащего данные по клиентам

Форматы загружаемых файлов

История продаж

Формат истории продаж задается отдельно

Другие типы загружаемых файлов должны быть определенного формата

Классификация
Параметры

Формат файла параметров

Также доступна опция –dir

При ее использовании будут загружены все файлы из указанной директории

Аналоги
Акции

Формат файла акций. Акции можно загружать в двух форматах.

Загрузка xml файла
Загрузка названий складов
Загрузка данных поставщиков
Загрузка закупок для клиентов
Загрузка комплектов
Загрузка произвольных полей товара для таблицы Заказа
Загрузка расписаний заказов
Загрузка дат поступления заказов

Формат: csv или xml

Направления балансировки
Настройки балансировки
Структуры подчиненности складов
Зоны хранения
Правила автоустановки параметров
Фильтры подготовки заказов
Ограничения на внутренние перемещения
Данные по клиентам

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

Синтаксис

 -r, --remove                           режим замены и удаления старой информации
 -a, --append                           режим добавления и обновления информации

Синтаксис для комплексного файла

Для комплексного файла можно указывать режим загрузки для каждого типа данных отдельно при помощи флагов:

--removesales и --updatesales - замена и обновление продаж соответственно
--removeparameters и --updateparameters - параметров
--removeontology и --updateontology - классификации

Пример:

import --all source target  --removesales --updateparameters --removeontology - продажи и классификация будут загружены с заменой, а параметры в режиме обновления
import --all source target -r - всё загрузится в режиме замены
import --all source target -r --updateontology - всё загрузится в режиме замены, а классификация в режиме обновления

Формат(для загрузки истории продаж)

Указывается местоположение файла с форматом загрузки

как получить файл формата

Файл формата можно получить следующим образом:

  1. Запустить программу,
  2. Выбрать режим пользователя
  3. Выбрать файл истории продаж для загрузки
  4. Нажать «Указать Формат истории продаж»

5.Заполнить формат

  • выбрать формат даты,
  • выбрать разделитель полей
  • выбрать разделитель целой и дробной части
  • есть ли заголовок в загружаемом файле
  • соотнести столбцы файла столбцам, доступным в программе

6. Нажать «Сохранить в файл» - получите искомый файл для загрузки формата расширением .format

Пример файла формата

Склад;Артикул;Клиент;Дата;Кол-во;Цена реализации;Выручка;Цена закупки;Себестоимость;Учетная цена;Прибыль;Остаток;Товар в пути, ед.;Размещенный заказ, ед.;В резерве, ед.;Невыполненный заказ;Упущенный спрос
column-separator:;
decimal-separator:.
date-format:yyyy-MM-dd
header-flag:true

Исходник

исходный файл с данными для импорта (в зависимости от того, что вы импортируете)

Цель

целевая база данных для импорта (для SQlite указывается путь, для MYSQL - название базы)

Опции

--no-verification

Не будет производиться проверка истории продаж на корректность. Это позволит ускорить импорт, но возможны некорректные данные после импорта. Используйте только в том случае, если полностью уверены в корректности исходных данных. По умолчанию проверка корректности выполняется.

--ignore-syntax-errors 
При использовании опции загрузка будет проведена даже при наличии синтаксических ошибок в файле продаж и классификации.

Строки с синтаксическими ошибками будут проигнорированы, остальные - загружены

Для классификации игнорируется одна критическая ошибка - неверное кол-во аргументов (например если вместо Товар1;Название;Товар написать Товар1;Название)

Для истории продаж игнорируются неверное количество аргументов, неверный формат даты, неверный формат числа

--partial
Будут обновлены только данные только по тем столбцам, которые присутствуют в файле загрузки. Аналогичен режиму загрузки «Обновить частично» Этот флаг используется только для режима загрузки "обновить"

--day-completion-part <0|1>

Указывается, загружены ли остатки на конец дня или же это остатки за текущий день, которые необходимо и использовать в расчётах.
В обычной логике программы, загружаются и учитываются остатки на конец дня(значение 1 или же без указания флага).
Для того, чтобы программа использовала фактические остатки и не считала, что это данные уже на конец дня, нужно загружать информацию указывая значение флага 0. При этом, максимальной датой в базе будет считаться предыдущая дата продажи в файле.
В программе не может быть несколько дат с неполной информацией за день.

Остатки таким образом будут учитываться при формирование заказа с включенной глобальной настройкой Учитывать даты поступления заказов

--dir

Будет произведена загрузка всех csv и xml файлов из директории Исходник как файлов истории продаж. Исходник обязательно должен быть директорией в этом случае. При этом, csv и xml файлы, можно загружать вместе. Для csv обязательно указание файла формата.

--temp-file=<путь к временному файлу>

Программа автоматически объединит содержимое csv файлов из директории, в указанный временный файл и загрузит историю продаж из этого файла.
Чтобы загрузка происходила из указанной директории, обязательно указание флага «dir»
Если утилите не удастся создать новый временный файл, то об этом будет сообщено, программа завершится.
Если файл с таким именем уже существует, то программа попытается его удалить и создать новый.
Если утилите не удастся открыть для чтения какой-либо csv файл с историей продаж, то об этом будет сообщено, программа завершится.

После загрузки истории продаж из временного файла он удаляется.

--save-properties

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

--no-warnings
Отключение логирования некритических ошибок. Флаг должен быть указан сразу после типа импортируемого файла

--user <пользователь>
Используется при загрузке настроек балансировки. Указывается пользователь для которого производится загрузка настроек балансировки.

----disable-update-campaigns
Отключение логирования некритических ошибок.

Говорит о том, что при загрузке не будет производиться перевод прошедших акций типа объем в коэффициент. Данное действие лучше выполнять один раз в день с помощью консольной команды: update-past-amount-campaigns <databaseName>, которую стоит запланировать после прогрузки ночных файлов истории. Такой подход позволит наиболее эффективно/быстрее (без потери качества результата) производить частые загрузки истории продаж как в течении дня, так и в ночное время.

Работа с резервными копиями базы данных

для сохранения

FSystemConsole.exe save-dump база файл
для загрузки
FSystemConsole.exe load-dump база файл

Сжатие и обновление базы данных

update <целевая база данных> [-u]

Флаг -u позволяет перед обновлением базы проводить проверку актуальности версии базы и, если версии базы актуальна, то обновление не производится. Флаг не обязателен

Пример

FSystemConsole.exe update base

Сжатие базы данных

Сжатие происходит через массовую загрузку из файла. Файл со сжатой историей продаж создается во временной папке для массовой загрузки (указывается в Глобальных настройках)
Чтобы все прошло корректно сжатие должно быть запущено на компьютере где расположен сервер СУБД.
Программа должна быть запущена под пользователем, который имеет права на запись во временную папку для массовой загрузке, а сервер СУБД имеет права на чтение из этой папки.

Перед процессом сжатия создается дамп базы, если включена глобальная настройка "Создавать резервную копию базы"

Команда для запуска сжатия базы:

FSystemConsole.exe compress [database-name]

database-name - имя базы данных

Пример

FSystemConsole.exe compress base 

Формирование заказов без участия пользователя

Позволяет формировать заказы без участия пользователя (автопилот)

Минимально необходимый синтаксис

 make-orders [--user user_name]  [--xml] [--xls] [--xlsx] [--csv] filter source target 

Позволит сформировать заказы по указанному фильтру и сохранить их в нужном формате

 --user или -u имя пользователя

Использование Пользователя из программы и его настроек. Если в автопилоте указан пользователь (через –user), то при сохранении заказов используется набор и порядок колонок из формата «Пользовательский» этого пользователя

filter
Имя фильтра, созданного в программе для выбора товаров, попадающих в автоподготовку

В связи с особенностями работы командной строки Windows фильтры должны задаваться цифрами или латиницей

Source
Имя базы для MySQL\MSSQL или путь к базе для SQLite, в которой нужно формировать заказы

Target
Место сохранения сформированных автопилотом заказов

--xml --xls --xlsx --csv
Флаги для дополнительного сохранения заказов в заданных расширениях

Структура заказа в xml

Для файла, сохраненного в xml используется следующая структура:

Нажмите, чтобы отобразить

Нажмите, чтобы скрыть

<fnow-order >
<order-date>31.12.2016</order-date>
<from-date>24.01.2017</from-date>
<to-date>02.10.2017</to-date>
<rc-supplier-id>Поставщик (Код)</rc-supplier-id>
<rc-supplier-name> Поставщик (Название)</rc-supplier-name>
<customer>Заказчик</customer>
<row>
<row-id>1</row-id>
<rc-storage-id>Склад №1</rc-storage-id>
<rc-product-id>Артикул123</rc-product-id>
<rc-to-buy>9991</rc-to-buy>
…
</row>
…
<total>
<rc-to-buy>9991000</rc-to-buy>
…

</total>
</fnow-order>
<order-date> - тэг для даты Размещения заказа
<from-date> - тэг для даты От
<to-date> - тэг для даты До
<fnow-order> - тэг для всего заказа
<rc-supplier-id> тэг для кода поставщика, которому адресован заказ
<rc-supplier-name> тэг для названия поставщика, которому адресован заказ

<customer> - тэг для заказчика
<row> - тэг для строки в заказе
<row-id> - тэг для номера строки
<rc-storage-id> - тэг для ячейки в строке с кодом склада
<rc-product-id> - тэг для ячейки в строке с кодом товара
<rc-to-buy> - тэг для ячейки с Заказать
<total> - тэг для строки с Итого. дочерние тэги только для числовых значений.

Назначение дочерних тэгов в row и total

Нажмите, чтобы отобразить

Нажмите, чтобы скрыть

Пишется в начало каждого xml документа. 
В тэгах статистик предыдущих продаж используется атрибут date для указания даты статистики. 
В тэгах свойств и параметров используется атрибут name для указания имени свойства или параметра. 
<!---rc-name - Продукт---->
<!---rc-product-id - Код---->
<!---rc-article-ext - Артикул (доп)---->
<!---rc-storage-id - Склад(Код)---->
<!---rc-storage-alias - Склад(Название)---->
<!---rc-avaible - Прогнозируемый остаток---->
<!---rc-reserve-rest - В резерве---->
<!---rc-storage-rest - Фактический остаток---->
<!---rc-transit-rest - В пути---->
<!---rc-order-rest - Заказано---->
<!--rc-sum-arrivals - Сумма поступлений-->
<!---rc-backorder - Невыполненный заказ---->
<!---rc-needed - Прогноз спроса---->
<!---rc-reliable - Оптимальный запас---->
<!---rc-reliable-new-products - Оптимальный запас (с учётом новых товаров)---->
<!---rc-to-buy - Заказать---->
<!---rc-to-buy-immutable - Заказать без корректировок---->
<!---rc-to-buy-untreated - Заказать без обработок---->
<!---rc-manual-edit - Ручное редактирование---->
<!---rc-purchase-price - Цена закупа---->
<!---rc-purchase-cost - Сумма---->
<!---rc-purchase-price-deviation - Изменение закупочной цены---->
<!---rc-purchase-price-deviation-date - Дата изменения закупочной цены---->
<!---rc-previous-purchase-price - Предыдущая закупочная цена---->
<!---rc-placement-date - Дата размещения---->
<!---rc-from-date - Дата От---->
<!---rc-days-count - Число дней заказа---->
<!---rc-to-date - Дата До---->
<!---rc-shipment-date - Дата отгрузки---->
<!---rc-status - Достоверность---->
<!---rc-commentary - Комментарий---->
<!---rc-group - Группа---->
<!---rc-discount-price - Цена учёта---->
<!---rc-sell-price - Цена реализации---->
<!---rc-margin-price - Наценка---->
<!---rc-profitability - Рентабельность позиции---->
<!---rc-profitability-sell - Рентабельность заказа (выручка/себестоимость)---->
<!---rc-profitability-margin - Рентабельность заказа (прибыль/себестоимость)---->
<!---rc-product-volume - Объем---->
<!---rc-product-weight - Вес---->
<!---rc-product-gross-weight - Вес брутто---->
<!---rc-poduct-net-weight - Вес нетто---->
<!---rc-minimum-stock-amount - Точка заказа, запас ед.---->
<!---rc-avaible-to-order-amount - Доступный для заказа остаток---->
<!---rc-reserve-stock-amount - Страховой запас---->
<!---rc-expected-consumsion - Расход до поступления---->
<!---rc-deficit-to-delivery - Дефицит до поставки---->
<!---rc-lost-demand - Упущенный спрос---->
<!---rc-increased-order - Заказать увеличено на---->
<!---rc-mean-sales-amount-interval - Средний интервал между продажами---->
<!---rc-coef-variation-of-sales-amount-interval - Коэффициент вариации интервалов между продажами---->
<!---rc-coef-variation-of-sales-amount - Коэффициент вариации продаж---->
<!---rc-last-days-sum-amount - Суммарные продажи за 0 дней---->
<!---rc-total-campaigns-contribution - Влияние акций---->
<!---rc-coef-campaigns-contribution - Влияние акций Коэффициент---->
<!---rc-amount-campaigns-contribution - Влияние акций Объём---->
<!---rc-loss-of-expired-goods-amount - Потери по просроченному товару, нат. ед.---->
<!---rc-loss-of-expired-goods-cost - Потери по просроченному товару, ден. ед.---->
<!---rc-losses-deficit-amount - Потери по дефициту, нат. ед.---->
<!---rc-losses-deficit-cost - Потери по дефициту, ден. ед.---->
<!---rc-date-of-expiry-date - Дата окончания срока годности---->
<!---rc-number-of-packages - Заказать(упаковок)---->
<!---rc-packaging-first-level - Заказать (уп. 1 уровня)---->
<!---rc-packaging-second-level - Заказать (уп. 2 уровня)---->
<!---rc-packaging-third-level - Заказать (уп. 3 уровня)---->
<!---rc-average-amount - Наивный прогноз спроса (среднее 0 дней)---->
<!---rc-previous-year-amount - Наивный прогноз спроса (прошлый год)---->
<!---rc-to-buy-edit-cause - Причина редактирования---->
<!---rc-optimal-service-level - Оптимальный УС---->
<!--rc-total-demand-filials - Суммарная потребность филиалов-->
<!--rc-available-rest - Свободный остаток-->
<!---rc-product-properties - Значения свойств товара---->
<!---rc-product-parameters - Значение параметров товара---->
<!---rc-product-analysis - Результаты анализов---->
<!---rc-previous-sold-amounts - Продажи за предыдущие месяцы---->
<!---rc-previous-sold-amounts-weeks - Продажи за предыдущие недели---->
<!--rc-supplier-id - Поставщик (Код)-->"
<!--rc-supplier-name - Поставщик (Название)-->

Автоформирование по нескольким фильтрам и расписаниям

Часто возникает потребность формировать заказы по нескольким созданным фильтрам подготовки и расписаниям за один запуск консольной утилиты.

Формат такой команды:

FSystemConsole.exe make-orders --args-file "путь к файлу" "base" "target"

Путь к файлу - путь к файлу с указанными фильтрами и расписаниями. Файл состоит из строк вида «имя_расписания;имя_фильтра», заказы будут подготовлены для всех таких пар расписание-фильтр.

Расписание в файле можно оставлять пустым - тогда автопилот отработает по имеющимся в файле фильтрам и расписанию заказов из параметров в программе

Полный синтаксис формирования заказов

make-orders [--order-schedule schedule] [(--user | -u) user_name] [--group-by-suppliers | --group-by-storages]  [--dates date1 date2] [--union-by-supplier | --union-by-supplier-ordergroup | --union-by-supplier-ordergroup-customer | --merge-orders] [--group-order-by-product | --group-order-roundbystorage storage] [--save-union-only] [--remove-null-tobuy-records] [--remove-empty-order]] [ --consider-balancing] [-md5][--xml] [--xls] [--xlsx] [--csv] [--sync] [--no-order-file] [--email] [--pattern-name] filter source target 

 --order-schedule название расписания

Расписание заказов, согласно которому проводится формирование заказов. Если не задано - для каждого товара берется из параметров

 --user или -u имя пользователя
Использование Пользователя из программы и его настроек. Если в автопилоте указан пользователь (через –user), то при сохранении заказов используется набор и порядок колонок из формата «Пользовательский» этого пользователя.

group-by-
Позволяет группировать товары при подготовке и расчете заказов

–group-by-suppliers - товары группируются по поставщикам (по умолчанию)

–group-by-storages - товары группируются по складам с учетом иерархии

 --dates date1 date2 
Выбор дат размещения заказов, которые попадут в работу утилиты.

Даты можно задавать в формате дд.мм.гггг или гггг-мм-дд

--union-by-supplier | --union-by-supplier-ordergroup | --union-by-supplier-ordergroup-customer 
Объединение сформированных заказов по поставщикам, поставщику и группе заказа или по поставщику, группе заказа и складу. Выбрать можно только одно объединение
В название файла объединённого заказа указывается идентификатор заказа.

--merge-orders
Объединит заказы, объединенные по одному из принципов, указанных в утилите

--group-order-by-product
Создаст общий заказ на склады

  • по одному общему заказу (если использовался ключ –merge-orders)
  • по всем заказам, полученным в результате работы одного из ключей –union-by (если не используется ключ –merge-orders)

При этом будут изменены объединения заказов, и объединённые заказы(по поставщику, группе заказа, складу), из которых этот заказ получен в соответствии с кратностью указанного склада

 --group-order-roundbystorage storage
storage - код склада

Создаст общий заказа на склады с учетом кратности указанного склада по объединенным при помощи ключа --merge-orders заказы

--save-union-only
Сохранение только объединенных заказов

--consider-balancing
При формировании заказов учтутся изменения остатков после проведения последней консольной балансировки

--remove-null-tobuy-records
Удаление из заказов, строк с нулевым значением Заказать. В реестре сохраняются полные заказы.

--remove-empty-order
Удаление пустых заказов
--xml --xls --xlsx --csv
Флаги для дополнительного сохранения заказов в заданных расширениях

--md5
Сохранение заказов с цифровой подписью

--sync 
Флаг для автоматического согласования прогнозируемых остатков и заказать во всех подготовленных и сформированных заказах.

--no-order-file
Не будут сохраняться файлы заказов, используемые для последующей загрузки в программу при ее открытии (.order).

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

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

Пустые заказы и нулевые заказы (где у всех позиций заказать =0) отправлены не будут

--pattern-name
Использование имени заказа из глобальных настроек

filter

Имя фильтра, созданного в программе для выбора товаров, попадающих в автоподготовку

Source

Имя базы для MySQL\MSSQL или путь к базе для SQLite, в которой нужно формировать заказы

Target

Место сохранения сформированных автопилотом заказов

При сохранении в имени заказа все экранируемые символы заменяются на пробелы.

Текущий список экранируемых символов:

  • «\\»
  • «/»
  • «:»
  • «*»
  • «?»
  • «\»
  • «|»
  • «<»
  • «>»
  • «.»

Пример. Кросс-докинг в консольной утилите

Ваша задача - рассчитать изначальные потребности филиалов и сформировать из них общий заказ поставщику, который при этом сразу по приходу на распределительный центр поедет на филиалы

make-orders --user user_name --union-by-supplier  --merge-orders  --group-order-roundbystorage storageRC [--xml]  [--xlsx]  filter source target 

  1. сформированные заказы будут сгруппированы по поставщику (–union-by-supplier)
  2. заказы, сгруппированные по поставщику, будут объединены –merge-orders
  3. из этих объединенных заказов будут создан сводный заказ на распределительный центр с учетом его кратности (–group-order-roundbystorage storageRC)

Отображение заказов после работы консольной утилиты

Сформированные при помощи консольной утилиты заказы при открытии программы автоматически загрузятся по следующей логике.

К каждому фильтру подготовки заказов можно приписать набор пользователей, которые «заинтересованы» в заказах из этого фильтра. По умолчанию в фильтре стоит значение «Все пользователи».

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

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

2) не удалит заказы с диска. тогда заказы перестанут грузится у всего набора пользователей П. об этом будет сообщено в явном виде в программе.

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

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

Отобразить все доступные фильтры подготовки заказов можно при помощи команды filters

Синтаксис

filters source
source - имя базы

Вывод времени выполнения последнего успешно рассчитанного консолью заказа

Если вам необходимо получить отдельно информацию о времени формирования последнего успешно сформированного заказа, то можно воспользоваться данной командой:

FSystemConsole.exe check-completion make-orders <make-order-args>

check-completion make-orders <make-order-args> - по команде производится поиск последнего успешного формирования заказов через консоль, запущенного с указанными в команде аргументами <make-order-args>. В противном случае выдает сообщение, что такого заказа нет

<make-order-args> - аргументы запуска консольного заказа, по которому нужно получить информацию, аргументы точно как был запущен заказ.

Если последний заказ был успешно сформирован командой через консоль с указанными аргументами, то будет выведено сообщение с временем начала и окончания выполнения команды:
Last successful execution: Started: время дата Ended: время дата

Если же подобная команда не выполнялась или завершилась некорректно, то так же будет выведено соответствующее сообщение:
No sucessful executions.

Пример команды:
Заказ формируется с помощью команды:

FSystemConsole.exe make-orders --user "user" --consider-balancing "1" "base" "D:\FNOW\OUT\ORDERS"

Чтобы отдельно получить информацию о времени и факте формирования заказа, нужно выполнить команду:

FSystemConsole.exe check-completion make-orders --user "user" --consider-balancing "1" "base" "D:\FNOW\OUT\ORDERS"

Оповещение о превышение бюджетов

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

Название правила ; Период действия ; Бюджет ; Порог бюджета ; Превышение бюджета ;
Пример:
Бюджет_филиала_32 ; 11.04.2023-30.04.2023 ; 500000 руб. ; 95% ; 140000 руб.

Проведение балансировки

Минимальный синтаксис команды

FSystemConsole balancing database [source] target [--user] --filter [--xml] [--csv] [--xlsx]
database 
название базы

source
файл с настройками балансировки

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

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

Обязательно указание или файла настроек или пользователя

 target
место сохранения файла с проведенной балансировкой можно указать полный путь к файлу. При этом если указать расширение xml - результат проведенной балансировки будет сохранен в xml формате

--filter 

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

Если указан несуществующий фильтр, то консоль выдаст сообщение non-existent auto-preparation filters

Фильтр можно указать только один. Если в команде указан фильтр и файл настроек, то балансироваться будут товары указанные в фильтре

Формат файла с настройками балансировки

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

Также поддерживается, формат, позволяющий задавать товары, участвующие в балансировке и прочие параметры ее проведения:

Нажмите, чтобы отобразить

Нажмите, чтобы скрыть

В файле с настройками балансировки задаются:

1. Список товаров, участвующих в балансировке:

<товар|группа|срез>;<наименование><;значение (для среза)>

Пример:

товар;2016
группа;старые товары
срез;Поставщик;supplier1

2. Порядок складов:

склады;<склад1;склад2;…>

Пример:

склады;Ф4-2;Ф4-3

3. Таблица настроек

3.1. Сроки и стоимость доставки

доставка;от(<склад1>);до(<склад2>);срок(<срок доставки>);стоимость<(стоимость доставки>);кг(<стоимость доставки за кг>);%(<стоимость доставки в % от стоимости груза>)

Пример:

доставка;от(РЦ1);до(РЦ2);срок(1);стоимость(2000);кг(3);%(4)

Если не задано, сроки и стоимость доставки будут нулевыми и будет выдано предупреждение «warning! storages relationships table is empty»

3.2. Прочие настройки:

Отображать все нулевые перемещения;<значение> //какие нулевые перемещения отображать
доход на высвобожденные средства;<значение> //доход на высвобожденные средства, % в месяц
не перемещать товар;<значение> //если последнее поступление было раньше чем ...
особенности поставки;<не учитывать|основные|балансировка>
иерархия складов;<основная|балансировка>
расписание заказов;<не учитывать|основное|балансировка>
алгоритм балансировки;<по рентабельности|пропорциональное распределение остатка с рц>
направление балансировки;<значение направления из настроек "Направления балансировки">
метод разворота аналогов;<сначала старые запасы, потом новые|сначала дешевые, потом дорогие|по приоритету|обратно приоритету>
группа заказа;<не учитывать|основная|балансировка>

3.3. Дополнительные настройки (если строчка присутствует в файле настроек, то эта настройка будет учтена при проведении балансировки)

учитывать даты поступления заказов
учитывать аналоги
не учитывать разницу цен
норма складского запаса равна сроку поставки + периодичность
добавлять к остатку склада-донора остаток заказано
добавлять к остатку склада-донора остаток в пути
добавлять к остатку склада-реципиента остаток заказано
добавлять к остатку склада-реципиента остаток в пути
исключать перемещения с нулевым свободным остатком на доноре

4. Имена полей, которые должны быть в сформированных балансировках, берутся либо из настроек балансировки пользователя(задается через вид → поля товаров), либо задаются в файле настроек балансировки в формате:

Поля товаров:ИмяПоля1;ИмяПоля2;ИмяПоля3

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

группа;старые товары
склады;Ф1;Ф4;Ф3
доставка;от(РЦ1);до(РЦ2);срок(1);стоимость(2000);кг(3);%(4)
доставка;от(РЦ1);до(Ф2);срок(455);стоимость(21);кг(1);%(20)
Отображать все нулевые перемещения;Есть свободный остаток на складе доноре;Не по расписанию;Есть дефицит;Остальное
доход на высвобожденные средства;10
не перемещать товар;14
особенности поставки;основная
иерархия складов;балансировка
расписание заказов;балансировка
учитывать аналоги
метод разворота аналогов;сначала старые запасы, потом новые
не учитывать разницу цен
норма складского запаса равна сроку поставки + периодичность
добавлять к остатку склада-донора остаток заказано
добавлять к остатку склада-донора остаток в пути
алгоритм балансировки;пропорциональное распределение остатка с рц
направление балансировки;Распределение остатков рц
группа заказа;балансировка

для того, чтобы после проведения балансировки сохранились перемещения по определенным направлениям, в файле настроек (полученном из программы или заданным по вышеописанному формату нужно добавить
итоговые направления;из(s1,s2,...,sn);в(s1,s2,...,sn)
s1...sn - коды складов
Направления из файла настроек считаются приоритетнее направлений пользователя, заданным по ключу -user

Минимальный синтаксис команды для нескольких балансировок

Если вам надо провести несколько балансировок (например, по разным направлениям), то нужно последовательно запускать балансировки с разными файлами настроек или разными пользователями:

FSystemConsole balancing database  target --user user1 --filter balance [--xml] 
FSystemConsole balancing database  target --user user2 --filter balance2 [--xml]

Полный синтаксис команды

FSystemConsole balancing database [source] target [--user] [--filter] [--xml] [--csv] [--xlsx][--consider-balancing] [--no-split-by-destinations] [--no-verification] [--balancing-by-clients] [--no-split-by-order-group] [--exclude-null-balancing]

  • database – название базы
  • source – путь к файлу с настройками балансировки. Во время выполнения команды, файл настроек проходит проверку на наличие ошибок. Если в файле есть ошибки, то балансировка не сформируется и будет выведено соответствующее сообщение, с указанием пути где хранится лог файл. Если указан флаг который игнорирует ошибки файла настроек, то балансировка сформируется и ошибочные настройки будут заменены на настройки по умолчанию.
  • target – место сохранения файла с проведенной балансировкой

можно указать полный путь к файлу. При этом если указать расширение xml - результат проведенной балансировки будет сохранен в xml формате

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

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

  • --filter 
    - указание фильтра, по которому будет проходить балансировка.

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

  •  --consider-balancing 

При формировании заказов учтутся изменения остатков после проведения последней консольной балансировки

Если после этой балансировки провести следующую, то будут применяться изменения двух предыдущих

  • [--xml] [--csv] [--xlsx] 

При указании этих флагов (одного или нескольких) балансировка также будет сохраняться в указанном формате. По умолчанию балансировка сохраняется в excel csv, для флага "--csv" просто в csv (в имя файла дописывается --csv так как расширение файлов у них одинаковое). Если файл цели указан с расширением xml, то флаг "--xml" можно не указывать. В excel csv формате балансировка сохраняется всегда.

  • --no-split-by-destinations

При формирование балансировок с указанием фильтра подготовки, сформированные балансировки не будут разбиваться по направлениям. Если указан этот флаг, то в качестве результата необходимо указывать не папку, а имя файла. Если балансировка была проведена через фильтр автоподготовки с флагом --no-split-destinations (не разбивать по направлениям), то в программе будет отображаться единственная балансировка с названием соответствующем шаблону:
<Наименование фильтра> <Текущая дата в момент проведения балансировки>

  • --no-verification

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

Во время работы консольной утилиты, выводится сообщение о количестве сформированных балансировок.
X balancing reports where created - где X число сформированных балансировок
none balancing reports where created - если количество сформированных балансировок равно нулю.

  • --balancing-by-clients

Балансировка будет формироваться по клиентам. То есть, в качестве реципиента выступают клиенты.

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

  • --no-split-by-order-group

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

  • --exclude-null-balancing

Удаляются все балансировки без товаров или у которых суммарное количество для перемещения равно 0.

Отображение балансировки в интерфейсе программы

При выполнении консольной балансировки её результат сохраняется в базу. При первом открытии вкладки балансировка в программе будет задан вопрос «Загрузить результат консольной балансировки?». Если ответить «Да», то загрузится результат последней консольной балансировки.

При формирование балансировок по фильтру, названия сформированных балансировок будут иметь вид:
<Наименование фильтра> <Идентификатор склада донора> <Идентификатор склада реципиента> <Текущая дата> <Дата поставки ИЗ-В>
Если балансировка формируется без указания фильтра, то название будет соответствовать имени файла, указанного в команде для консольной утилиты.

Результаты проведённых балансировок удаляются при сохранении загруженной балансировки в файл или удаление.

Расчет коэффициентов маркетинговых акций

При помощи консольной утилиты можно автоматически рассчитать коэффициенты акций, отфильтрованных по заданным параметрам.

Вид команды:

FSystemConsole calc-coeff-mcampaigns --coef min_coef max_coef --period min_date max_date --ctype type --periodstatus periodstatus --status status --category categories target 

Обязательным является указание target - имя (для MySQL) или путь к базе (для SQLite), на которой нужно запустить расчёт коэффициентов.

Другие аргументы являются опциональными и задают фильтры для автоматического расчета коэффициента

Аргументы утилиты для фильтрации

Фильтрация по коэффициенту

Задается при помощи

--coef
Далее нужно задать минимальный и максимальные коэффициенты для фильтрации:

min_coef - минимальный коэффициент для фильтрации акций по коэффициенту(включительно сам min_coef).

Тип - десятичное число с разделителем точкой, например: 1, 2.0, 34.99

max_coef - максимальный коэффициент для фильтрации акций по коэффициенту(включительно сам max_coef).

тип - десятичное число с разделителем точкой, например: 1, 2.0, 34.99

По умолчанию фильтруются акции с любыми коэффициентами

Фильтрация по дате

Задается при помощи

--period
Далее нужно задать минимальные и максимальные даты для фильтрации:

min_date - минимальная дата для фильтрации акций по периоду.

Тип - дата в формате dd.MM.yyyy. например: 01.01.2001, 31.05.2016

max_date - максимальная дата для фильтрации акций по периоду.

Тип - дата в формате dd.MM.yyyy. например: 01.01.2001, 31.05.2016

фильтруемые акции входят целиком включительно в период между min_date и max_date.

По умолчанию фильтруются акции с любыми периодами

Фильтрация по типу

Задается при помощи

--ctype
Далее указывается тип акций для фильтрации

Виды значений:

  • coef - Коэффициент
  • amount - Объем

По умолчанию фильтруется тип Коэффициент

Фильтрация по статусу

Задается при помощи

--status
Далее указываются статусы для фильтрации. Для указания нескольких статусов их нужно перечислить через ;

Виды значений:

  • notset - не установлен
  • notcalc - невозможно рассчитать (в прошлом периоде по акции нельзя было провести расчет)
  • manual - установлен вручную
  • forecast - спрогнозированный для акций в будущем
  • calc - рассчитанный для акций в прошлом периоде
  • calc_by_incomplete_data - рассчитан по не полностью прошедшей акции
  • auto - автоматически сгенерированный в прошлых версиях программы
  • no_campaign_sales - Нет продаж во время акции
  • no_sales_before_campaign - Нет продаж до акции
  • zero_campaing_forecasted_demand - нулевой прогноз спроса
  • exceeded_period_treshold - период акции больше, чем указан в глобальной настройке

Если используются потоварные коэффициенты акций, то расчёт и прогнозирование коэффициентов, будет производиться только по товарам удовлетворяющим условиям фильтра.

Фильтрация по времени проведения акций

Акции можно отфильтровать по времени их проведения - прошедшие, текущие, будущие

Задается при помощи

--periodstatus
Далее указываются выбранные акции для фильтрации текущие, прошедшие, будущие. Для указания нескольких статусов их нужно перечислить через ;

Виды значений:

  • past - прошедшие акции
  • going - текущие акции
  • future - будущие акции
Фильтрация по складу, клиенту, артикулу

Задается при помощи

--storage storage_name

--client client_name

--product product_name 

Акция попадает в выборку, только если в неё входят клиент и склад и артикул одновременно.

Фильтрация по проценту завершенности

Задается при помощи

--degree-completion min_degree max_degree
min_degree max_degree - значения % завершенности акций, по которым будут отфильтрованы акции для расчета. Задается числом с точностью до 2 знаков после запятой (разделитель - точка или запятая)

Фильтрация по категориям

Задается при помощи

--сategory cat1;cat2

Категории перечисляются через ;

Если допущена ошибка в названии категории, то не будет рассчитана ни одна акция

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

Задается при помощи

 --ignoredcategory cat1;cat2;cat3

Например: calc-coeff-mcampaigns –ignoredcategory test1;test2 demo

Будут рассчитаны все акции кроме категорий test1 и test2

Принудительное прогнозирование коэффициентов акций

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

Это делается при помощи ключа

--forecast

Пример команды

FSystemConsole calc-coeff-mcampaigns --period 01.01.2016 06.06.2016 --ctype coef --period status past --status notset;notcalc demo  --storage Склад1
Для акций базы demo будет рассчитан коэффициент по полностью завершенным акциям типа коэффициент в период с 01.01.2016 до 06.06.2016 с неустановленными и нерассчитанными коэффицентами, проходившими на Складе 1
FSystemConsole.exe calc-coeff-mcampaigns --ctype coef --status calc_by_incomplete_data;notset;notcalc;forecast --periodstatus past test >>C:\fcn_logs\log-past-%date%.txt
FSystemConsole.exe calc-coeff-mcampaigns --ctype coef --status calc_by_incomplete_data;notset;notcalc;forecast --degree-completion 30 100 --periodstatus going test >> C:\fcn_logs\log-going-%date%.txt
FSystemConsole.exe calc-coeff-mcampaigns --ctype coef --coef 1 1 --degree-completion 0 30 --forecast --periodstatus going test >> C:\fcn_logs\log-going-%date%.txt
FSystemConsole.exe calc-coeff-mcampaigns --ctype coef --coef 1 1 --periodstatus future --forecast test >> C:\fcn_logs\log-going-%date%.txt
Для акций базы test рассчитываем:
1. коэффициент для завершенных акций, по которым еще не был выполнен расчет
2. коэффициент для акций завершенных более, чем на 30 процентов
3. прогнозируем акции, которые завершены на 30 процентов или меньше
4. прогнозируем все будущие акции
Процесс расчёта акций записываем в лог, в папку C:\fcn_logs

Прогресс - бар

В командной строке будет отражен прогресс-бар степени завершенности расчета акций и число рассчитанных и расчитываемых акций

Проведение анализа-эффективности без участия пользователя

Синтаксис

FSystemConsole.exe kpianalysis database source target

database

путь или имя базы для расчетов

source

Файл с параметрами расчетов.

target

Файл, куда сохранятся результаты анализа

Для сохранения результатов в формате xlsx нужно дописать флаг

 --xlsx 
после директории сохранения файла с результатами

Расчет прогноза - обеспечение продаж без участия пользователя

Синтаксис

FSystemConsole.exe stockanalysis database source target --filter filter [--user user_name] [--utf8] [--type] [--units] [--price]]

database - Путь или имя базы для расчетов

source - Файл с параметрами расчетов.

target - Полный путь к Excel csv(.csv) или Excel(.xlsx) файлу, в который будут записаны результаты прогноза.

filter - имя фильтра подготовки заказа, отбирающего товары для расчета. Если он указан, то отбор товаров из файла source не будет учитываться

username - имя пользователя, от которого будут взяты настройки и вид итоговой таблицы

utf8 - сохранение файла в формате utf8

type - выбор типа анализа

  • demand - оценка спроса
  • stocks - оценка запасов
  • sales - оценка продаж

units - выбор показателей анализа

  • amount - в натуральных единицах
  • money - в денежных единицах

prices - выбор цен

  • sell (цены реализации)
  • purchase (цены закупки)

Расчёт прогноза - плана заказов


Синтаксис

FSystemConsole.exe stockplan database --filter filter [--user userName] --target target --dates date1 date2 [--xlsx] [--csv] [настройки плана заказов]

database - путь или имя базы для расчетов

filter- имя фильтра, созданного в программе для выбора товаров, попадающих в план заказов

user - имя пользователя. Если указан пользователь, то используются настройки плана заказов, указанные у этого пользователя в программе (Тип анализа, Временная корзина, Единицы измерения)

target - файл, куда сохранится рассчитанный план заказов

dates - период расчёта плана заказов. dates1 - дата От, dates2 - дата До

xlsx csv - указывается в каком формате сохранится план заказов xlsx или utf8 csv. если флаг не указан, то сохранится в xlsx.

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

  • Тип анализа

--type (income | ordered | rests | payment)
income - Приходы
ordered - Заказано
rests - Остатки
payment - План оплат

  • Временная корзина

--timeBucket (week | month | quarter)
week - По неделям
month - По месяцам
quarter - По кварталам

  • Единицы измерения

--units (sell | purchase | amount | weight | volume | reports | sku)
sell - в Реализационных ценах
purchase - в Закупочных ценах
amount - Нат. ед.
weight - Вес
volume - Объём
reports - Число заказов
sku - SKU

План оплат формируется только в закупочных ценах и не может быть поквартальным.

Пример команды

FSystemConsole.exe stockplan demo.db --filter filter№1 --user FCN --target "D:\FNOW\OUT" --dates 01.01.2020 01.04.2020 

Проведение ABC анализа

Вы можете проводить ABC- XYZ и кросс ABC-анализ автоматически при помощи консольной утилиты. Результаты анализа запишутся в базу, а также в Excel файл с разбиением товаров по группам.

Синтаксис команды

 FSystemConsole.exe abcxyzanalysis database source target [--filter filter] [--user username] [--save name] [--public] 
database – название базы

source – путь к файлу с настройками анализа

target – место сохранения файла с результатами анализа

--filter filter 
имя фильтра автоподготовки заказа, отбирающего товары для проведения анализа. Если в файле настроек указаны товары и задан фильтр автоподготовки, то товары будут браться из фильтра.
--user username 
флаг с указанием пользователя для которого будет сохранён анализ, если пользователь не указан, анализ в базе сохранён не будет, а только в файл
--save name 
флаг для сохранения итогов анализа в базу программы, где name - это имя, под которым анализ появится в базе
--public 
флаг что бы сделать доступным итоги анализа всем пользователям

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

1.Основные параметры проведения анализа

дата от;дата до
склад;тип;название
дополнительные столбцы;список через ';' свойств и параметров для вывода

склад - код склада или пусто (тогда расчет будет произведен по всем складам)

тип - товар, группа или срез

название - код товара, название группы или среза

2. Настройки анализа

Нужно задать тип анализа и границы отнесения к группам. Формат:

Ось;название оси (X,Y,Z (не обязательно));тип анализа (ABC/XYZ/XYZ (без нулей)/FMR);Параметр;граница отнесения к группе С/группе X/группе R; граница отнесения к группе B/группе Y/группе M;
Пример:
ось;X;ABC;Кол-во дней продаж;5;20
ось;Y; ABC;Прибыль / Ед.; 5;20

Перечень параметров проведения анализа:

Продажи, ед., Выручка,Себестоимость,Прибыль, Кол-во дней продаж(или Факт продаж) ,Прибыль / Ед.,Объем запасов, н.е, Объем запасов, д.е, Рентабельность (Прибыль/Выручка), Рентабельность (Прибыль/Себестоимость)

3. Дополнительные настройки

свойства;список через ';' свойств для вывода
параметры;список через ';' параметров для вывода

выбор фактического или прогнозного анализа

анализ;факт
или
анализ;прогноз

если нужно очищать историю продаж от акций:

очищать историю продаж от акций

если не нужно анализировать новые товары:

не анализировать новые товары

если нужно учитывать дефицит при формирование ABC анализа:

учитывать дефицит

если нужно учитывать комплекты:

 учитывать комлекты

если нужно провести анализ внутри каждой группы отдельно

 изолированно

Примеры файлов для проведения анализа

15.04.2017;20.04.2017
Склад;срез;Поставщик;Алефонсина
учитывать дефицит
не анализировать новые товары
ось;X;ABC;Продажи, ед.;5;35
ось;Y;XYZ;Факт продаж;55;75
параметры;Поставщик
свойства;Поставщик
анализ;прогноз

15.04.2017;20.04.2017
Склад1;группа;старые товары
ось;X;ABC;Продажи, ед.;5;15
ось;Y;XYZ;Продажи, ед.;20;55
ось;Z;FMR;Кол-во дней продаж;25;50
дополнительные столбцы;Вес;Объём

Автоматическое изменение дат в файле с настройками анализа

С помощью командной строки windows можно настроить автоматическую генерацию дат для анализа. Если нужно каждый раз проводить АВС-XYZ анализ за прошедший год, то можно воспользоваться командой:

del E:\Forecast NOW!\settings_abc.csv
SET /A T=%DATE:~-4%
SET /A T=%T%-1
echo %DATE:~0,2%.%DATE:~3,2%.%T%;%date%>> E:\Forecast NOW!\settings_abc.csv
echo Склад №1;группа;Все товары>> E:\Forecast NOW!\settings_abc.csv
echo параметры;Поставщик>> E:\Forecast NOW!\settings_abc.csv
echo свойства;Поставщик>> E:\Forecast NOW!\settings_abc.csv
echo Ось;x;ABC;Продажи, ед.;5;15>> E:\Forecast NOW!\settings_abc.csv
echo Ось;y;XYZ;Кол-во дней продаж;55;75>> E:\Forecast NOW!\settings_abc.csv
echo не анализировать новые товары>> E:\Forecast NOW!\settings_abc.csv
echo очищать историю продаж от акций>> E:\Forecast NOW!\settings_abc.csv

E:\Forecast NOW!\settings_abc.csv - указывается путь и название сформированного файла настроек. Этот же путь нужно указать в команде для проведения АВС-XYZ анализа
echo - указывается строка с настройками для анализа. В той последовательности, в которой они должны идти в файле настроек.

Будет сформирован файл, с указанными настройками для анализа.

Проведение анализа-ассортимента

Вы можете проводить анализ-ассортимент при помощи консольной утилиты

Синтаксис

assortiment database source target [--user username] [--public]

target - полный путь к xls или xlsx файлу, в который будут записаны итоги анализа.

флаг - -public - сделать доступным итоги анализа всем пользователям

флаг - -user username - под каким пользователем проводится анализ

source - файл с настройками для проведение анализа

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

Формат файла source состоит из простого перечисления товаров/групп/срезов для анализа

склад;тип;название

  • склад - код склада
  • тип - товар, группа или срез
  • название - артикул товара, название группы или среза

Если анализ формируется по срезу, после названия среза, через «;», нужно указать конкретное значение среза. Анализ сформируется по товарам у которых значение среза соответствует указанному.

Результаты анализа также записываются в базу программы.

Расчет статистик базы данных

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

Синтаксис команды

FSystemConsole.exe statistics database source target [--dates [dateFrom dateTo] ] [--csv --xlsx] 

database - путь (имя для mysql) к базе

source - файл настроек (может не существовать, если задан ключ –dates)

target - файл для сохранения результата - если указаны форматы сохранения при помощи флагов, то расширение файла можно не прописывать, если не указаны - то расширение xlsx

–dates dateFrom dateTo - даты от и до для расчёта. Если не указан ключ –dates и даты, то даты берутся из файла настроек. Если указан ключ, но не даты, то берутся минимальная и максимальная даты из базы. Если указан ключ и даты, то берутся даты из аргументов

–csv –xlsx - флаги для выбора формата сохранения файла. Без указания флага файл статистик сохранится в формате xlsx

Формат файла настроек

дата_от;дата_до
группировка;товар или склад или клиент или их комбинация через ';'
статистики;статистика1;...;статистика2

Если статистики не указаны, то считаются все статистики.

имена статистик следует писать точно так же как в диалоге выбора статистик:

Количество дней продаж
Остатки
Цена последних продаж
Закупочная цена
Цена реализации последних продаж
Цена реализации
Сумма прибыли
Сумма выручки
Сумма продаж
Сумма остатков
Количество уникальных складов, клиентов, продуктов
Акции типа коэффициент
Акции типа объём
Действующие акции
Завершившиеся акции

Расчет текущих дефицитов

В Forecast NOW! можно определить, есть ли текущий дефицит по товару и % дефицита по группе товара.

FSystemConsole.exe calc-current-deficit  base path --csv --filter test --email mail@mailru
base - имя базы

path - путь сохранения файла

– filter - имя фильтра для отбора товаров для расчета дефицита

– email - почты, на которые нужно разослать анализ (перечисляются через ,

–csv и –xlsx - форматы сохранения файла (по умолчанию сохраняются в xlsx)

Итог анализа

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

Удаление информации из базы

Синтаксис

FSystemConsole.exe remove data_type [products_file] target [опции] 

Data type - тип данных для удаления. Доступны

analogs                  очистка аналогов
products                 удаление товаров из базы
customer-purchases       удаление закупок для клиентов
composite                очистка данных о комплектах
items-fields             очистка полей для товаров
arrivals                 очистка дат поступления заказов
orders                   очистка реестра заказов
order-schedule           очистка расписаний заказов
storage-graphs           иерархия складов
balancing-destinations   направления балансировки
clients                  справочник клиентов
outdated-parameters-storages      неактуальные склады из параметров (из параметров удалятся все склады, которых нет как в истории продаж, так и в справочнике складов)

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

target - путь к базе (SQLite) или название базы (MySQL), в которых нужно удалить информацию

опции

-c если этот флаг указан, то при очистке данных не будет создаваться их резервная копия

-f или –force - если не удаётся создать бэкап, то данные все равно будут удалены

–not-drop-parameters

если указан флаг –not-drop-parameters то при очистке расписаний заказов очистка привязки товаров к расписаниям(параметр товара) выполняться не будет

Пример команды для очистки аналогов

FSystemConsole remove analogs <target_database>

<target_database> - имя базы, в которой нужно удалить все аналоги - для sqlite базы - полный путь к ней, для MYSql - название базы

Пример команды для удаления товаров

 FSystemConsole remove products <путь к файлу с артикулами> <имя или путь к базе>

<путь к файлу с артикулами> - путь к файлу с форматом строки: артикул.

Например:

400000015
weqwe-ewqee-wwew-1111

После запуска утилиты для каждого артикула будет удалена информация о продажах(со всех складов), классификации, параметрах(тоже со все складов), аналогах(если товар входил в нетривиальную группу аналогов, то он будет из неё удалён, в остальном порядок товаров в группе останется прежним. Если товар был главным аналогом, то за место него главным станет второй по порядку.).

Удаление товаров, не существующих в классификации из таблицы параметров

 FSystemConsole.exe clean-up-params demo.db 

Удаляет из параметров записи по всем товарам, которые не существуют в классификации

Экспорт информационной базы

Позволяет экспортировать информационную базу, в том числе, в обезличенном режиме

Синтаксис команды

FSystemConsole.exe export type source target [опции]

  • type: -ib или --information-base (экспорт информационной базы)
  • source: имя базы
  • target: путь к экспортированному файлу

Опции

Обезличивание информации

Для обезличивания нужно добавить опцию

--impersonal

Пример

FSystemConsole.exe export -ib test.db D:\FN\test.ib --impersonal

Данные которые обезличиваются:

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

Рядом c информационной базы после сохранения будут находится еще файл с логом импорта информационной базы с именем <имя файла обезличенной иб>_log.сvs, и файл с соответствиями на каждый вид данных

  • коды товаров <имя файла обезличенной иб>_products.сvs
  • коды клиентов <имя файла обезличенной иб>_clients.сvs
  • коды складов <имя файла обезличенной иб>_storages.сvs
  • имена пользователей <имя файла обезличенной иб>_users.сvs
  • названия иерархий складов <имя файла обезличенной иб>_storage_graphs.сvs

В лог импорта заносится информация если имеются данные, которые пока не поддерживают выгрузку в обезличенном режиме

На текущий момент не поддерживаются:

  • Аналоги
  • Транспортные средства
  • Фильтры подготовки заказов
  • Пользовательские приоритеты товаров для ограничений
  • Зоны складов
  • Цветовые схемы для заказа
  • Последние цветовые схемы пользователей для заказа
  • Дополнительные артикулы для товаров
  • Поставщики
  • Прайс-листы поставщиков
  • Таблицы сроков доставки поставщиков
  • Результаты анализов
  • Группы поставщиков
  • Группы наследования параметров
  • Наборы для быстрого выбора складов
  • Псевдонимы упаковок
  • Наборы быстрого выбора клиентов
  • Правила наследования параметров
  • Наборы быстрого выбора групп
  • Поля товаров
  • Комплексные форматы заказов
Выбор складов и товаров для сохранения

Для сохранения информационной базы с определённым набором товаров, необходимо добавить опцию и файл со списком товаров.

--items-file <путь к файлу с товарами>

Файл со списком товаров должен быть в csv формате. Содержать в себе два столбца: 1 - склад, 2 - код товара. Без заголовка

Пример файла для 4 товаров с 2 складов

Склад №1;40000000016
Склад №1;40000000017
Склад №1;40000000018
Склад №1;40000000019
Склад №2;40000000016
Склад №2;40000000017
Склад №2;40000000018
Склад №2;40000000019

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

Список выгружаемых данных:

Данные которые выгружаются только по выбранным товарам и аналогам:

  • История продаж
  • Параметры
  • Аналоги
  • Классификация (выгружаются только группы, их свойства и структура родительских групп, в которой находятся выбранные товары)
  • Акции
  • Поступления
  • Закупки под клиентов
  • Комплекты
  • Временные параметры

Данные, которые всегда выгружаются полностью:

  • Структуры подчиненности складов
  • Стоимости и сроки доставки балансировки
  • Направления балансировки
  • Поставщики
  • Прайс-листы поставщиков
  • Параметры товаров поставщиков
  • Сроки доставки поставщиков
  • Группы поставщиков
  • Условия оплаты поставщиков
  • Критериев выбора товаров для ограничений заказа
  • Зоны хранения
  • Псевдонимы упаковок
  • Справочник клиентов
  • Сегменты клиентов
  • Пороги округления по упаковкам
  • Фильтры подготовки заказов
  • Расписание заказов
  • Выходные и рабочие дни
  • Транспортные средства
  • Пользователи, группы и права доступа групп
  • Настройки пользователей
  • Глобальные настройки

Пример команды

FSystemConsole.exe export -ib test.db D:\FN\test.ib --items-file  D:\FN\items.csv

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

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

Синтаксис команды

FSystemConsole.exe export-test-data source Код_склада;Артикул_товара target

  • source - имя базы
  • target - путь к экспортированному файлу

Пример

FSystemConsole.exe export-test-data demo.db Склад№1;4000000000016 C:\FCN

В C:\FCN буду выгружены файлы :

export_order_shedules_Склад№1_4000000000016.csv - Все календари и расписания заказов
export_prepare_reports_fitlers_Склад№1_4000000000016.csv - Все фильтры подготовки заказов
export_properties_Склад№1_4000000000016.csv - параметры для товара 4000000000016 со склада Склад№1
export_sales_history_Склад№1_4000000000016.csv - продажи для товара 4000000000016 со склада Склад№1 в формате «Склад;Артикул;Клиент;Дата;Продано;Остаток на складе;Цена реализации;Закупочная цена;Учётная цена»
export_storage_graphs_Склад№1_4000000000016.csv - Все иерархии складов
export_suppliers_Склад№1_4000000000016.csv - Весь справочник поставщиков
export_user_settings_Склад№1_4000000000016.csv - Все глобальные и локальные настройки для всех пользователей из базы.

Проверка цифровой подписи заказа

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

Синтаксис

 FSystemConsole checksum <проверяемый файл> <файл, подписанный цифровой подписью (.md5)

Активация лицензии

Позволяет активировать файл лицензии через консольную утилиту

Синтаксис

FSystemConsole activate-license <путь к файлу лицензии>

При успешной активации консольная утилита отобразит сообщение «License file 'полный путь к файлу лицензий' successfully activated»

При неудачной попытки активации программы, консольная утилита отобразит сообщение:

1) Если некорректный файл лицензии:
«License file 'полный путь к файлу лицензий' was not activated. Invalid license file.»
Сообщение об ошибке работы консольной утилиты в интерфейсе: «Не удалось активировать файл лицензии 'полный путь к файлу лицензий' Некорректный файл лицензии.»

2) Если недостаточно прав к папке:
«License file 'полный путь к файлу лицензий' was not activated. Insufficient directory access rights to 'путь где хранится файл лицензии'»
Сообщение об ошибке работы консольной утилиты в интерфейсе: «Не удалось активировать файл лицензии 'полный путь к файлу лицензий'. Недостаточно прав доступа к папке 'путь где хранится файл лицензии'»

Изменение кода склада

Позволяет изменить записанные в программе коды складов.

Синтаксис

FSystemConsole.exe rename --storages storages.csv base 

storages.csv - путь к файлу с кодами складов, csv файл вида «старый кода склада;новый код склада». Старые коды будут заменятся на соответствующие им новые.

base - имя базы данных, где нужно выполнить переименование кодов складов

Переименование поддерживается в История продаж, Параметры, Акции, Результаты анализов Справочник Складов, Структура подчиненности складов, Пользователи и группы, Фильтр подготовки заказов, Календари, Расписания заказов, Настройки балансировки по умолчанию, Транспортные средства, Правила автоустановки параметров, Поставщики, направления балансировки, Ограничения балансировки, Поступления, Поля товаров, Закупки под клиентов, Партионные остатки, Пользовательские критерии для ограничений заказа, Справочник клиентов (доступные склады, сроки доставки по клиент склад)

В случае если новый код склада существует, то переименование не будет выполнено, в консоли будет выдана ошибка с указанием где именно и какой код склада уже существует

Очистка журнала действий пользователей

FSystemConsole clearlog database

database - имя базы

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

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

FSystemConsole apply-parameters-rules [--general/--seasonal] database [--names/--tags] 

general — применить все правила кроме сезонности
seasonal — расчет и применение правил сезонности

Совместное использование в одной команде флагов general и seasonal, не допускается

database — название базы

names — после флага, в кавычках, через запятую, указываются названия правил ("правило1,правило2,правило3"), которые нужно применить.
tags — после флага, в кавычках, через пробел, указывается список тэгов в соответствие с которыми применяются автоправила

Совместное использование в одной команде флагов names и tags, не допускается

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

Работа с кэш-сервером

1) Обновление всех файлов кэша для указанной БД

FSystemConsole cache-server update --database databaseName

FSystemConsole databaseName - конкретное название рабочей базы FNOW

2). Удаление файлов кэша

cache-server deleteCacheFiles --database databaseName

databaseName - конкретное название рабочей базы FNOW

Формирование карточки товара

При помощи утилиты можно сформировать карточку товара. Команда:

productcard <databaseName> (<saveDirPath>) -- user <userName> (--xlsx) (--csv) (--sql) (--filter <filterName>)

Указание <databaseName> и –user <userName> ОБЯЗАТЕЛЬНО. Если карточка формируется с указанием ключа –sql (необязательный аргумент), то указание папки сохранения файлов (<saveDirPath>) необязательно.

Ключ –user задает имя того пользователя, от которого будут выбираться столбцы карточки для выгрузки (например, параметр Не заказывать, свойство Вес и т.д.) Выгружаемые столбцы настраиваются в отображении карточки товара на вкладке Анализ - Карточка товара. Если не указать столбцы, то выгрузки не будет.

Примеры команд:

productcard demo.db --user Администратор --sql (выгрузить в промежуточную базу FNTransferDatabase, в таблицу productCard карточку по всем товарам из классификации)
productcard demo.db --user Администратор --sql --filter РЦ (выгрузить в промежуточную базу FNTransferDatabase, в таблицу productCard карточку по товарам, подходящие под условия фильтра РЦ)

Промежуточная база FNTransferDatabase создается автоматически в том же месте, где и основная база. Название задается автоматически, переименовать нельзя.

productcard demo.db C:\\Temp--user Закупщик (выгрузить карточку по всем товарам классификации в формате xlsx - по умолчанию - в каталог C:\\Temp)
productcard demo.db C:\\Temp--user Балансировщик --csv (выгрузить карточку по всем товарам классификации в формате csv в каталог C:\\Temp)
productcard demo.db C:\\Temp--user Администрато --csv --xlsx --filter РЦ (выгрузить карточку по товарам, подходящих под условия фильтра РЦ, в форматах csv и xlsx в каталог C:\\Temp)

При использовании выгрузки в промежуточную базу (флаг –sql) лучше будет позаботиться о том, чтобы работала массовая загрузка. (подключение консоли к серверу БД через localhost или 127.0.0.1, путь для массовой загрузки существует (см. глоб. настройку), к нему есть доступ для записи.

Выгружаются данные в колонках storage(Код склада), product(артикул товара), column0(значение первого столбца с данными в карточке товара указанного в команде пользователя), column1(значение второго столбца), …., columnN

Поддерживаемые колонки: параметры, свойства, поля товаров, результаты анализов