Практика 4.6 Разработка бизнес логики.
Ответ на задание необходимо предоставить в виде файлов Scala и XML, которые были изменены в текущем уроке (для написанного программного кода). Скриншоты интерфейса приложения для заданий выполняемых в интерфейсе и для демонстрации работы кода в системе Global ERP следует отправить в формате PDF, PNG или JPG. Для удобства рекомендуется прислать все файлы в одном архиве.
В ответе на задание должны содержаться элементы, обеспечивающие работоспособность описанного в задании функционала.
Вычисление заголовка
-
В
Api
классов-документов переопределите метод вычисление заголовкаcalcHeadLine
, заголовок должен быть в формате{HL класса} № {sNumDoc} от {dDoc в формате дд.мм.гггг}
. -
Для созданных ранее объектов пересчитайте заголовки, для этого в карточках классов, под молотком и ключом запустите операцию
Пересчитать заголовки и мнемокоды объектов класса
. Для проверки можно посмотреть данные столбца sheadline_dz в таблицах.
Установка порядкового номера для позиций
-
В
Api
позиций документов переопределите методinsertByParent
и напишите установку значения в полеnRow
, как максимальный текущий номер в позициях + 1. Если позиций еще нет, то первая позиция должна начинаться с 1. Можно воспользоватьсяscala
функциейreduceOption(_ max _).getOrElse(0.nn)
-
В
Avi
позиций документов для отображенийList_idDoc
илиList_idInAct
переопределите методonRefresh
и допишите сортировку по полюnRow
, используяsortBy
.
Пересчитываемые поля
Добавьте пересчеты для приходной накладной Lbr_InActDetApi
:
-
Переопределите методы установки цены и количества (сеттеры
setnPrice
иsetnQty
), добавьте логику вычисления суммы в позиции с округление до 2х знаков -
Переопределите сеттер суммы, добавьте вычисление цены в позиции с округление до 2х знаков
-
Добавьте пересчет общей суммы документа при изменении суммы в позициях или удалении самой позиции
-
На сеттеры цены, количества и суммы добавьте проверку на отрицательный ввод, вызов ошибки осуществляется методом
throw AppException("Текст ошибки")
Lbr_InActDetAvi
:
-
Переопределите сеттеры цены, количества и суммы, добавьте в конце обновление текущей записи (
selection.refreshItem()
) и обновление карточки мастера (selection.master.refreshItem()
) -
Переопределите метод удаления (
delete
) и пропишите в конце обновление карточки мастера
Lbr_InAct.avm.xml
:
-
Сумму документа сделайте не редактируемой в карточке