Для возможности проверки работоспособности приложения в процессе дальнейших доработок, добавим тестовые данные в сгенерированное приложение.
Сотрудники
Добавим нового сотрудника. Для этого необходимо нажать на кнопку “Добавить” над соответствующей таблицей на станице “Сотрудники”:
Заполним поля на форме редактирования сотрудника следующим образом:
Фамилия: Иванов
Имя: Иван
Отчество: Иванович
Телефон: 200-00-01
Электронная почта: ivanovii@shop.ru
Должность: Кладовщик
Нажмем кнопку [Сохранить]
и перейдем обратно на страницу “Сотрудники”.
В результате проделанных действий мы можем увидеть первую запись в списке сотрудников.
Самостоятельно внесите следующие данные:
Сотрудники
Фамилия: Петров
Имя: Пётр
Отчество: Петрович
Телефон: 200-00-02
Электронная почта: petrovpp@shop.ru
Должность: Кладовщик
Фамилия: Александрова
Имя: Александра
Отчество: Александровна
Телефон: 200-00-03
Электронная почта: aleksandrovaaa@shop.ru
Должность: Менеджер
Фамилия: Евгеньева
Имя: Евгения
Отчество: Евгеньевна
Телефон: 200-00-04
Электронная почта: evgenyevaee@shop.ru
Должность: Менеджер
При добавлении нового сотрудника табельный номер на форме редактирования изначально всегда имеет значение 1, но после сохранения (необходимо также обновить текущую страницу или перейти на страницу “Сотрудники”) мы замечаем, что номер автоматически увеличивается.
Это происходит потому, что автоинкремент в REST-архитектуре (а Ember-приложение, сгенерированное с использованием Flexberry Designer, реализовано в данной архитектуре) работает либо на стороне сервера (как в нашем приложении), либо на стороне клиента. Поскольку автоинкремент в нашем примере работает на стороне сервера, актуальное значение на клиенте мы можем получить только после сохранения новой записи.
Наиболее простым решением вопроса отображения “некорректного” начального значения табельного номера будет скрыть поле “Табельный номер” на форме редактирования и отображать его только на списковой форме. Это мы сделаем далее.
В результате выполнения данного шага мы должны получить следующий вариант списка сотрудников:
Товары
Самостоятельно внесите следующие данные:
Товары
Наименование: Монитор Samsung C24F390FHI
Единица измерения: шт.
Описание: Диагональ экрана 23.5”(59 см)
Цена за ед.: 8990
Вес: 3.3
Наименование: Монитор игровой MSI Optix MAG241CP
Единица измерения: шт.
Описание: Диагональ экрана 24”(60.9 см)
Цена за ед.: 21990
Вес: 5.1
Наименование: Системный блок Acer Aspire XC-330 DT.BD2ER.001
Единица измерения: шт.
Описание: Процессор AMD A4 9120e 1.5 ГГц
Цена за ед.: 19990
Вес: 5.5
Наименование: Системный блок игровой Lenovo Legion T530-28ICB MT (90JL00M4RS)
Единица измерения: шт.
Описание: Процессор Intel Core i3 8100 3.6 ГГц
Цена за ед.: 47990
Вес: 12
В результате выполнения данного шага мы должны получить следующий вариант списка товаров:
Склады
Добавим новый склад:
На форме редактирования склада мы можем видеть два поля, соответствующих двум видам связей на исходной диаграмме классов: мастеровое (ассоциация) и детейловое (композиция).
Заполним поля на форме следующим образом:
Адрес: ул. Ленина, д. 1, коп. а
Кладовщик: Петров (Петр Петрович, таб. ном. 2)
Список товаров:
Монитор Samsung C24F390FHI - 4 (шт.)
Системный блок Acer Aspire XC-330 DT.BD2ER.001 - 2 (шт.)
Монитор игровой MSI Optix MAG241CP - 1 (шт.)
Выбор значения поля для мастера:
Добавление значения в компонент для детейла:
Выбор значения поля мастера в компоненте для детейла:
В результате форма редактирования склада должна быть заполнена следующим образом:
После сохранения информации о складе, на списковой форме соответствующая запись отображается следующим образом:
Самостоятельно внесите следующие данные:
Склады
Адрес: ул. Ленина, д. 1, коп. б
Кладовщик: Иванов (Иван Иванович, таб. ном. 1)
Список товаров:
Монитор Samsung C24F390FHI - 1 (шт.)
Монитор игровой MSI Optix MAG241CP - 2 (шт.)
В результате выполнения данного шага мы должны получить следующий вариант списка складов:
Заказ
При создании нового заказа мы увидим следующий вид формы редактирования:
Часть полей была заполнена автоматически при создании:
Номер - аналогично полю “Табельный номер” у сотрудника (при сохранении в это поле будет записан уникальный номер);
Статус- Новый, в соответствии с указанным значением по умолчанию при проектировании на уровне модели: OrderStatus = New;
Дата - текущая дата, в соответствии с указанным значением по умолчанию, унаследованным от класса Document, при проектировании на уровне модели: CreateDate = Now (в соответствующем свойстве модели будет храниться дата и время, но отображается на форме только дата из-за использования соответствующего компонента).
Значение поля Стоимость заказа должно вычисляться автоматически как сумма по всем позициям содержимого заказа.
Компонент Содержимое заказа также содержит часть полей, значение которых должно вычисляться автоматически или валидироваться:
Цена с налогом - рассчитывается от цены Товара с учетом фиксированной ставки налога;
Сумма по позициям - рассчитывается по формуле [ Цена с налогом ] * [ Количество ];
Количество - необходима проверка наличия указанного количества товара на всех складах вместе взятых.
Таким образом, перед добавлением Заказа необходимо предварительно реализовать логику атоматического расчета значений перечисленных полей (а точнее соответствующих свойств модели) в коде приложения. Поэтому новый Заказ мы добавим позже в следующих разделах практического руководства.
Накладная
Для возможности добавления Накладных нам также предварительно потребуется реализовать логику автоматического вычисления значений некоторых полей в исходном коде:
На основе выбранного Заказа на форму должны автоматически добавляться:
- сумма заказа;
- список товаров к выдаче с возможностью вручную проставить им вес.
При изменении веса товаров автоматически должен вычисляться общий вес заказа.
Итог
На данном шаге руководства мы заполнили тестовыми данными часть списков, доступных в приложении, за исключением Накладных и Заказов. Далее мы реализуем логику для автоматического вычисления значений ряда полей на формах редактирования, которые мы ранее упоминали в этом разделе практического руководства.