Задача перед бизнес аналитиком: Провести аналитическую справку по клиентскому пути использования данного функционала на сайте orteka.ru (в таблице детально) Функционал: Временная отсечка	Отсечка - временной интервал для каждого региона, способа доставки и маршрута подсортировки, после которой калькулятор должен прибавлять к сроку доставки сутки
Транзитный склад	Склад, на котором производится аккумуляция товара перед отгрузкой по маршрутам
График отгрузки в салон	Расписание дней, когда можно отгрузить заказ/товар в салон. 
График забора из салона	Расписание дней, когда можно осуществить забор заказа/товара из салона. 
Ограничение к отгрузке	Перечень дней недели, в которые не производится отгрузка по маршрутам. Настраивается для определенного маршрута/региона/способа доставки или их групп.
КС	Курьерская служба
ТК	Транспортная компания
ПВЗ	Пункт выдачи заказа

Предмет разработки
Реализовать на сайте новый калькулятор для расчета сроков и стоимости доставки. Создать интерфейс для настройки калькулятора с дополнительными параметрами. 
Цель разработки
Оптимизация процесса расчета сроков и стоимости доставки через новый калькулятор с управлением сроков и стоимости каждого маршрута и региона. Для создания гибкого функционального и прозрачного инструмента, который позволить сократить ресурсы на управление процессами доставки товара.

Описание требований бизнеса
Необходимо разработать удобный процесс управления логикой калькулятора сроков стоимости доставки, вывести управление калькулятором в отдельный интерфейс. В новом калькуляторе должны быть четкое описание и работа маршрутов, чтобы владелец процесса со стороны бизнеса понимал на каком этапе формирования (выполнения) заказа покупателя происходит срыв или неверный расчет.
Область и принципы применения нового алгоритма калькулятора:
1.	Алгоритм должен применятся только для заказов с типом интернет-заказ (в дальнейшем возможно подключение других типов заказов).
2.	Алгоритм должен затрагивать только функционал расчёта даты доставки. Функционал выбора маршрутов подсортировки остается неизменным. Его пересмотр будет проведён на следующем этапе.
3.	Для расчетов должен быть создан новый регистр «График отгрузки e-com», в котором будут отражены дни, в которые производится отгрузка в магазины, и дни, в которые производится забор товара из магазинов. Данный регистр надо будет наполнить актуальными данными – днями отгрузки в салоны и забора из салона товаров для каждого салона.
4.	Для расчётов должен быть создан новый регистр «Сроки и стоимость доставки e-com». В данном регистре будут содержатся данные только о длительности обработки товара при отгрузке клиенту. Данный регистр надо будет наполнить актуальными данными – сроками обработки товара для различных маршрутов и способов доставки.
5.	Для определения сроков доставки должен использоваться регистр «Сроки доставки между регионами», либо (при отсутствии данных в регистре) запрос срока доставки в СДЭК по API. Для этого необходимо будет актуализировать данные (сроки доставки между регионами) в регистре, а также настроить интеграцию со СДЭК (проанализировать возможность использовать текущую или перейти на API СДЭК 2.0)
6.	Для расчёта даты доставки в ПВЗ должны будут использоваться данные из регистра «ПВЗ транспортных компаний», при отсутствии данных, срок доставки запрашивается в СДЭК. 
7.	Алгоритм должен описывать расчет даты доставки по каждой позиции заказа. Если в заказе несколько позиций, то дата доставки всего заказа определяется по самой поздней дате доставки в позициях заказа. Для случаев с частичной доставкой предусмотреть передать передачу данных на сайт по срокам доставки по позициям заказа.
8.	Добавить запрет на отгрузку по всем маршрутам в определенные дни, например для возможности запретить отгрузку 1-3 января
9.	 ЛСК — это центральный склад. Если появятся маршруты из других складов (например Л01) они должны отрабатываться по аналогичной логике. Необходимо анализировать тип склада отгрузки – для маршрутов, где склад отгрузки имеет тип «склад центрального офиса» применяется логика аналогичная маршруту с ЛСК
10.	График отгрузки и забора реализовать в одном регистре.

Ниже описаны новые правила (логика) работы калькулятора по текущим маршрутам:
1.	Способ доставки – Самовывоз
1.2.	Маршрут - из салона
•	Анализируем текущее время на предмет превышения времени отсечки (например, время окончания рабочего дня салона), установленной в поле «Прибавлять сутки после», если время превышено, то добавляем еще один день. Необходимо проверять полученную дату на ограничение к отгрузке (исключение).
•	К текущей дате прибавляем значение срока обработки из нового регистра (нулевое значение – товар в салоне готов к выдаче). 
•	Проверяем полученную дату на наличие праздничного дня. Если праздник – берем следующий доступный день.
•	Пример: текущая дата 31 декабря 15:00. Время заказа не попало на отсечку, день не прибавляем. Есть запрет на продажу 1 января. Срок обработки 2 дня, получаем 2 января (праздник). Если праздник, то +1 день на обработку. Смотрим, чтоб срок обработки не попал на праздники. К 31 декабря прибавляем 2 дня = 2 января + 1 день. Если заказ сделан после окончания рабочего времени, то прибавляем 1 день, и срок доставки получаем 4 января
1.3.	Маршрут – ЛСК
•	Анализируем текущее время на предмет превышения времени временной отсечки, установленной в поле «Прибавлять сутки после». Если время превышено, то добавляем еще один день
•	К текущей дате прибавляем значение срока обработки из регистра.
•	Проверяем, что рассчитанный день не входит в «Ограничение дня отгрузки» (необходимо предусмотреть возможность указать любые дни недели, в которые со склада невозможна отгрузка товаров) в регистре «Сроки обработки» для рассматриваемого способа доставки/маршрута/региона отгрузки. Если рассчитанный день входит в «Ограничение к отгрузке», то переносим на следующий день, доступный к отгрузке.
•	Запрашиваем в графике отгрузки ближайшую к рассчитанной дату отгрузки в салон самовывоза (включительно). Проверяем, попал ли день на праздник. 
•	Запрашиваем в регистре «Сроки доставки между регионами» срок доставки между регионом отгрузки (регион склада ЛСК) и регионом доставки, и прибавляем его к рассчитанной дате отгрузки, получая дату доставки.  
1.4.	Маршрут – все остальные (из салонов Москвы и МО, все маршруты, где источником является салон).
•	Если ближайшая дата текущая, и текущее время превышает временную отсечку (например, 17:30), то в графике отгрузки ищем следующую дату забора
•	В регистре «График отгрузки» ищем ближайшую дату забора товара из салона отправителя
•	Определяем в регистре «Сроки доставки между регионами» наличие транзитного склада для способа доставки/маршрута/региона отгрузки и если транзитный склад определен, то:
	Запрашиваем в регистре «Сроки доставки между регионами» срок доставки от региона салона отправителя до региона транзитного склада и прибавляем его к рассчитанной дате забора.
	Добавляем к рассчитанный дате значение срока обработки из регистра в транзитном складе
	Проверяем, что рассчитанный день не входит в ограничение дня отгрузки в регистре «Сроки обработки» для рассматриваемого способа доставки/маршрута/региона отгрузки. Если рассчитанный день входит в ограничение, то переносим на следующий день без ограничений.
	Запрашиваем в графике отгрузки ближайшую к рассчитанной дату отгрузки (включительно)
•	Запрашиваем в регистре «Сроки доставки между регионами» срок доставки между регионом отгрузки (регионом источника запаса (ЛСК/салон), если нет транзита, либо из региона транзитного склада) и регионом доставки (регион салона самовывоза) и прибавляем его к рассчитанной дате отгрузки, получая дату доставки. Проверяем, попал ли день на праздник.

2.	Способ доставки – КС/ТК
2.1.	Маршрут - ЛСК
•	Анализируем текущее время на предмет превышения времени временной отсечки, установленной в регистре «Прибавлять сутки после», если время превышено, то добавляем еще один день
•	К текущей дате прибавляем значение срока обработки из регистра.
•	Проверяем, что рассчитанный день не входит в ограничение к отгрузке в регистре «Сроки обработки» для рассматриваемого способа доставки/маршрута/региона отгрузки. Если рассчитанный день входит в ограничение, то переносим на следующий день без ограничений.
•	Анализируем наличие записи в регистре «Сроки доставки между регионами» между регионом отгрузки (регион склада ЛСК) и регионом доставки из заказа покупателя
	Если запись присутствует, то прибавляем значение срока доставки из этой записи к рассчитанной дате отгрузки, получая дату доставки
	Если запись отсутствует, то запрашиваем в СДЭК через API срок доставки (берем наименьший) и прибавляем его к рассчитанной дате отгрузки, получая дату доставки. Проверяем, попал ли день на праздник.
•	Маршрут – все остальные
•	В регистре «График отгрузки» ищем ближайшую дату забора товара из салона
•	Если ближайшая дата забора текущая, и текущее время превышает временную отсечку «Прибавлять сутки после», то в графике отгрузки ищем следующую дату забора
•	Определяем в регистре «Сроки обработки» наличие транзитного склада для способа доставки/маршрута/региона отгрузки и если транзитный склад определен, то:
	Запрашиваем в регистре «Сроки доставки между регионами» срок доставки от региона салона отправителя до региона транзитного склада и прибавляем его к рассчитанной дате забора  
	Добавляем к рассчитанной дате значение срока «обработки из регистра»
	Проверяем, что рассчитанный день не входит в «Ограничение дня отгрузки» в регистре «Сроки обработки» для рассматриваемого способа доставки/маршрута/региона отгрузки. Если рассчитанный день входит в ограничение, то переносим на следующий день, доступный к отгрузке
•	Анализируем наличие записи в регистре «Сроки доставки между регионами» между регионом отгрузки (регионом источника запаса (ЛСК/салон), если нет транзита, либо из региона транзитного склада) и регионом доставки из заказа покупателя
	Если запись присутствует, то прибавляем значение срока доставки из этой записи к рассчитанной дате отгрузки, получая дату доставки
	Если запись отсутствует, то запрашиваем в СДЭК через API срок доставки (берем наименьший) и прибавляем его к рассчитанной дате отгрузки, получая дату доставки. Проверяем, попал ли день на праздник. 
3.	Способ доставки ПВЗ
3.1.	Анализируем статус выбранного ПВЗ в регистре «ПВЗ транспортных компаний». Если у ПВЗ в поле «Активный» не установлен признак «Да», то расчет прерывается и на сайт возвращается сообщение об ошибке «ПВЗ недоступен для заказа». Проверяем, попал ли день на праздник.
3.2.	Маршрут - ЛСК
•	К текущей дате прибавляем значение срока «обработки из регистра».
•	Проверяем, что рассчитанный день не входит в ограничение дня отгрузки в регистре «Сроки обработки» для рассматриваемого способа доставки/маршрута/региона отгрузки. Если рассчитанный день входит в ограничение, то переносим на следующий день без ограничений.
•	Прибавляем к рассчитанной дате срок доставки до ПВЗ, для этого:
	обращаемся в регистр «ПВЗ транспортных компаний», находим там записи по коду выбранного ПВЗ и берем оттуда количество дней доставки
	если срок доставки не указан, запрашиваем в СДЭК через API срок доставки (берем наименьший). Проверяем, попал ли день на праздник.
3.3.	Маршрут – все остальные
•	Если ближайшая дата текущая и текущее время превышает отсечку, то в регистре «График отгрузки» ищем следующую дату забора
•	В графике отгрузки ищем ближайшую дату забора товара из салона
•	Определяем в регистре «Сроки обработки» наличие транзитного склада для способа доставки/маршрута/региона отгрузки и если транзитный склад определен, то:
	Запрашиваем в регистре «Сроки доставки между регионами» срок доставки от региона салона отправителя до региона транзитного склада и прибавляем его к рассчитанной дате забора  
	Добавляем к рассчитанной дате значение срока «обработки из регистра»
	Проверяем, что рассчитанный день не входит в «ограничение дня отгрузки» в регистре «Сроки обработки» для рассматриваемого способа доставки/маршрута/региона отгрузки. Если рассчитанный день входит в «ограничение к отгрузке», то переносим на следующий день, доступный к отгрузке
•	Прибавляем к рассчитанной дате срок доставки до ПВЗ, для этого:
	обращаемся в регистр «ПВЗ транспортных компаний», находим там записи по коду выбранного ПВЗ и берем оттуда количество дней доставки 
	если срок доставки не указан, запрашиваем в СДЭК через API срок доставки (берем наименьший). Проверяем, попал ли день на праздник.
4.	Дополнительные настройки
•	Ограничение дат доставки по каждому маршруту, то есть установка дат, когда не доставляем товары. Например, в новогодние праздники: 1-3 января   
5.	Настройки стоимости доставки
•	В каждом маршруте предусмотреть поле для занесения фиксированной стоимости доставки с разбивкой на регионы в регистре «Регион отгрузки»
•	В каждом способе доставки предусмотреть поле «Порог бесплатной доставки». Как сейчас и работает.


Интерфейс управления калькулятором (2 этап):
- Иметь возможность настраивать график отгрузки в салон и график забора из салона в каждом салоне с помощью обработчика. В регистре графика отгрузки есть поля Салон, день недели, Да/Нет (галочка напротив дня недели). В графике есть поля Салон, день недели, Да/Нет (галочка напротив дня недели). Один или 2 разных регистра на усмотрение Архитектора. В интерфейсе иметь возможность массового заполнения поля Да/Нет по салонам и получения выборки салонов по регионам
- Иметь возможность настраивать сроки складской обработки в разрезе способа доставки, маршрута подсортировки и региона отгрузки. Иметь возможность ввести срок обработки, дни ограничения отгрузки, транзитный склад, отсечка, дни исключения, возможно стоимость доставки и пороги бесплатной доставки (на усмотрение Архитектора). Есть необходимость массово менять значение временной отсечки
- Устанавливать даты запрета отгрузки по всем маршрутам (для Новогодних праздников)

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