% Модуль оптимизации погрузки
\section{Требования к модулю оптимизации погрузки готовой продукции в транспорт}
\label{optimal_loading}

\subsection{Документ <<Заявка>>}
\label{doc:request_shipment}
Документ существует в СИСТЕМЕ.
Расчет оптимальной погрузки продукции в транспорт в заявке необходим менеджеру для того, чтобы определить полноту объема заказа клиента для отгрузки полной фурой.

\subsubsection{Атрибуты}

В документ необходимо добавить следующие поля.

\point{Табличная часть <<Номенклатура>>}

\begin{enumerate}
\item М2 --- количество метров квадратных по текущей позиции заявки. Число (10,2). Добавить отображение итогов по колонке внизу таблицы.
\item Паллет --- количество паллет по текущей позиции заявки. Число (10,0). Добавить отображение итогов по колонке внизу таблицы.
\item Паллет, склад --- вывод текущих остатков по данной номенклатуре на складе (информационное поле)

\end{enumerate}


\subsubsection{Функциональные требования}


\point {Автоматический пересчет значений в табличной части}

Количество -- при изменении значения в поле <<Количество>> в поле <<М2>> необходимо установить значение равное произведению поля <<Количество>> на <<Площадь развертки>> из значения поля <<Технологическая карта>>. 

В  поле <<Паллет, шт>> необходимо установить значение равное отношению поля <<Количество>> к <<Количество изделий в паллете>> из значения поля <<Технологическая карта>>.

Паллет --- при изменении значения в поле <<Паллет, шт>> в поле <<Количество>> необходимо устанавливать значение равное  произведению поля <<Паллет, шт>> на <<Количество изделий в паллете>> из значения поля <<Технологическая карта>>. 

В поле <<М2>> необходимо установить значение равное произведению поля <<Количество>> на <<Площадь развертки>> из значения поля <<Технологическая карта>>.

М2 --- при изменении значения в поле <<М2>> в поле <<Количество>> необходимо устанавливать значение равное отношению поля <<М2>> к <<Площадь развертки>> из технологической карты. В поле <<Паллет, шт>> необходимо установить значение равное отношению поля <<Количество>> к <<Количество изделий в паллете>> из технологической карты.


\point{Расчет оптимальной схемы погрузки}

В системе необходимо реализовать функционал расчета оптимальной погрузки паллет с готовой продукцией в транспортное средство. 
Функционал решения задач оптимальной трехмерной упаковки должен учитывать следующие входные параметры:
\begin{enumerate}
\item Габариты транспорта --- длина, ширина и высота транспортного средства (нескольких транспортных средств). Данные получаются из справочника <<Виды транспорта>>.
\item Номенклатура --- номенклатура отгружаемой продукции (список номенклатурных позиций).
\item Габариты транспортной паллеты - длина, ширина и высота паллет с готовой продукцией с учетом свисания за пределы паллеты. Данные должны быть получены из справочника <<Технологическая карта>> изделия.
\item Количество паллет (План) -- количество паллет по каждой номенклатуре, которое пользователь планирует отгрузить.
\item Порядок погрузки --- порядок, согласно которому необходимо загрузить готовую продукцию. Необходимый порядок пользователь должен указывать вручную.
\end{enumerate}

По результатам расчета система должна сформировать следующие выходные данные:

\begin{enumerate}
\item Количество паллет (Загружено) --- количество паллет с готовой продукцией, которое смогла загрузить система.
\item Количество паллет (Остаток) --- количество паллет с готовой продукцией, которое не смогла загрузить система.
\item Графическая схема загрузки --- графическое представление расположения паллет в транспорте (вид сверху).

\end{enumerate}

\point{Форма редактирования документа}

В нижней части формы редактирования документа необходимо отобразить список транспортных средств системы с различными габаритами (все данные из справочника <<Виды транспорта>>). В таблице <<Транспорт>> должны отображаться следующие колонки:

\begin{enumerate}
\item Планировать --- признак необходимости использовать данное данное транспортное средство для планирования. Пользователь должен иметь возможность отмечать галочками транспортные средства, по которым хочет запланировать погрузку.
\item Вид транспорта --- наименование транспорта.
\item Габариты (ДхШхВ) --- длинна, ширина и высота транспортного средства.
\item Количество (План) --- планируемое к загрузке количество автомобилей данного вида.
\item Количество (Загружено) --- загруженное по результатам планирования количество автомобилей данного вида.
\item Количество (Остаток) --- количество автомобилей данного вида, которое не удалось загрузить.
\end{enumerate}


\point{Включение механизма расчета оптимальной схемы погрузки}

В документе <<Заявка>> необходимо добавить признак <<Планирование погрузки>>, при установке которого для пользователя будут появляться параметры планирования. Отключение признака позволит скрыть лишние поля, если для текущей заявки не требуется планирование погрузки в транспорт. При установке признака пользователю должны становиться доступны следующие элементы:

\begin{enumerate}
\item В табличной части со списком номенклатур необходимо выводить колонки:

\begin{enumerate}
\item Количество паллет (План).
\item Количество паллет (Загружено).
\item Количество паллет (Остаток).
\end{enumerate}

\item Табличная часть <<Траспорт>> должна быть видна только при установке признака <<Планирование погрузки>>.
\item В нижней части формы редактирования документа% справа от таблицы 
необходимо отобразить получившуюся схему загрузки. Если в планировании участвовало несколько транспортных средств, то под схемой необходимо отобразить переключатель между схемами, т.к. расположение несколько картинок погрузки одновременно не представляется возможным ввиду их большого размера.
\end{enumerate}

\point{Результат расчета оптимальной схемы погрузки}

Результаты выполнения расчета должны быть представлены в виде графической схемы. Пример схемы представлен на рис. \ref{pic:shipreport}.

\begin{figure}
\begin{center}
  \includegraphics[height=0.94\textheight, keepaspectratio]{50_Pics/picshipreport.jpg}
\end{center}
  \caption{Пример схемы погрузки готовой продукции в транспорт}
  \label{pic:shipreport}
\end{figure}

Ниже представлен пример формы документа <<Заявка>> с дополнительными параметрами для планирования погрузки паллет в транспорт (см. рис. \ref{pic:requestform}).

\begin{figure}
\begin{center}
  \includegraphics[height=0.94\textheight, keepaspectratio]{50_Pics/picrequestform.jpg}
\end{center}
  \caption{Настройка параметров погрузки в документе ''Заявка''}
  \label{pic:requestform}
\end{figure}

\point{Команда <<Расчет погрузки>>}

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

При выполнении расчета должны учитываться следующие особенности.

\begin{enumerate}
\item Каждый вид продукции на схеме должен быть выделен  своим индивидуальным цветом, чтобы на схеме было легко их идентифицировать. Ширину и длину паллеты необходимо выводить непосредственно на прямоугольнике паллеты. В качестве габарита паллеты необходимо брать максимальный из размеров по каждому измерению среди размера поддона и продукции на ней. Также на прямоугольнике в центре необходимо выводить номер технологической карты.
\item Необходимо выводить величину оставшегося свободного места.
\item Погрузка паллет осуществляется не более, чем в 2 яруса.
\item Порядок погрузки – если пользователь вручную указал приоритет  продукции, то она должна быть расположена в транспортном средстве так, чтобы обеспечить постепенную выгрузку.
\item Необходимо учитывать зазор расстояния между паллетами. В СИСТЕМЕ в настройках добавить соответствующий параметр, который показывает зазор между примыкающими друг к другу паллетами и между паллетой и стеной кузова.

\end{enumerate}


\point{Формирования отчета о погрузке}


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






% НОВЫЙ ДОКУМЕНТ 

\subsection{Документ <<План погрузки>>}

В СИСТЕМЕ необходимо реализовать новый документ <<План погрузки>>, в котором должен быть механизм аналогичный описанному в первом пункте \ref{doc:request_shipment}. 


\subsubsection{Функциональные требования}


\point{Формировать набор заявок на отгрузку}

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


\point{Добавление погрузки из текущих остатков на складе}

Добавить возможность добавления в обобщенный документ (для расчета) любой позиции из текущих остатков на складе. Также должна быть возможность добавления номенклатурной позиции (не из остатков). После выполнения расчетов и определения вместимости транспорта пользователь вручную должен изменить соответствующие заявки на отгрузку, если требуется откорректировать состав или объем отгружаемой продукции.


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


\point{Отгрузка разным контрагентам}

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



\subsection{Документ <<Заявка на отгрузку>>}

Документ существует в СИСТЕМЕ.

\subsubsection{Атрибуты}

Добавить табличную часть <<План отгрузки>>, содержащий список документов <<План отгрузки>>.

\subsubsection{Функциональные требования}

\point{Добавление схем отгрузки в заявку}

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

 