# Техническое задание
Редакция: 2023-11-28

## Цель
Требуется разработать программное обеспечение для осуществления набора автоматизаций в сети ресторанов `Ромашка`.
Программное обеспечение должно осуществлять следующие операции:
1. Складской учет продукции;
2. Производственный учет;
3. Сопровождение курьерской службы;
4. Финансовый учет. Взаиморасчеты;
5. Учет персонала; 
6. Оперативный контроль;

## Описание
Компания `ООО Ромашка` насчитывает **10** ресторанов расположенных в разных частях города. Часть ресторанов
работает только на доставку, часть - комбинировано, а часть: только с посетителями. В компании есть отдельный
производственный цех для приготовления различных `заготовок` которые к началу рабочего дня привозят  по всем 
рестораном в зависимости  от заявок полученных ранее от администраторов ресторана.
Все рестораны работаю  в режиме с `10 утра - 10 вечера`. Производственный цех работает `круглосуточно`.
Так же, часть продукции закупается организацией центролизовано: `мясные` и `молочные` продукты. Эти продукты 
храняться  в специализированных холодильниках в производственном цеху и доставляются в каждый ресторан 
ежедневно. Сотрудники в компании разделены на три категории по направлениям:
> - Производство
> - Обслуживание
> - Управление

Сотрудники, работающие в категории `производство`, работают посменно. У каждого сотрудника может быть устанолен
собственный график работы длительностью каждой смены не более **8-ми** часов. Сотрудниеи из других
категорий работают ежеденевно по **8 часов в день**, кроме выходных и праздников.

## Общие требования
1. Программное обеспечение должно работать на следующем оборудовании:
> -  ОС Linux
> -  ОЗУ: 32 ГГб
> -  Процессор: 12 ядер
> -  Диск: SSD
2. Стек: `Python 3.x`, `SQLite`, `swagger`, `HTML`, `JavaScript`

### Требования к складскому учету
* `1.1.` Учет ведется в разрезе номенклатуры. Каждый элемент номенклатуры включен в группу. 
* `1.2.` Учет остатков номенклатуры ведется в разрезе склада. Каждый склад связан с помещением.
* `1.3.` Каждый месяц проводится плановая инвентаризация для всех номенклатуры для каждого склада.
* `1.4.` Несколько раз в месяц, проводится частичная инвентаризация на определенную группу номенклатуры.


### Требования к производственному учету
* `2.1.` В системе должен быть реализованы следующие операции:
	- `Технологическая карта`
	- `Приготовление полуфабриката`
	- `Приготовление блюда`
	- `Выпуск продукции`
	- `Утилизация продукции`
* `2.2.` В системе необходимо предусмотреть два варианта списания номенклатуры:
	- `С блокировкой в случае недостатка остатков`
	- `Под сальдо`
* `2.3.` Блокировка при списании осуществляется в случае, если остаток номенклатуры на складе отсутсвует.
* `2.4.` Вариант `Под  сальдо` - списание осуществляется без блокировки. Остаток на складе меняется.
* `2.5.` `Технологическая карта` может быть  составной. Допускается включение одной технологической карты в 
состав другой.


### Требования к курьерской службе
* `3.1.` Доставка осуществляется  в строго определенные районы. Доставка в каждый район имеет свою стоимость.
* `3.2.` Заказ должен поступать к ближайшему ресторану который работает на доставку с тем, чтобы
минимизировать расcтояние на доставку.
* `3.3.` Для доставки используется отдельное меню. В каждое блюдо включается упаковка.

### Требование к финансовому учету
* `4.1.` Учет денежных средств ведется в разрезе `Контрагентов`. Контрагентами могут выступать 
отдельные юридические лица. Каэжый контрагент включается в группу.
* `4.2.` Денежные средства учитываются в разрезе типа оплаты: `наличные`, `банковский перевод` и прочее.
* `4.3.` Денежные средства учитываются документов: `Поступление`, `Списание`. 

### Требование к учету персонала
* `5.1.` В системе необходимо обеспечить  различные графики работ.
* `5.2.` Каждый сотрудник работает в рамках графика работ. Система должна обеспечить начало и завершения работы
по каждому сотруднику. В случае, если время работы превышает согласно графику, необходимо начислять
денежное вознагрождение по `двойному тарифу`, согласно графика работы.
* `5.3.` Все операции с данными по складскому, финансовому и оперативному учету должны фиксироваться с учетом
ответственного сотрудника.

### Требования к оперативному учету
* `6.1.` Необходимо вести учет по следующим направлениям:
	- `Заказ на доставку`;
	- `Заказ на пополнение склада в ресторане`;
	- `Заказ на производство`
* `6.2.` Удаление номенклатуры, группы номенклатуры должно блокироваться если номенклатура включена
в складской учет.
* `6.3.` Удаление карточки сотрудника должно блокироваться если карточка сотрудника учавствовала
в складской, оперативном или финансовом учете.