Как посчитать сумму заказа?

Есть класс заказов Order

СLASS Order 'Заказ';
number 'Номер' = DATA STRING[10] (Order);
client = DATA Client (Order);
amount = DATA NUMERIC[17,2] (Order);

Есть "подчиненная таблица" класс OrderProducts по сути состав заказа

CLASS OrderProducts 'Состав заказа';
product = DATA Product (OrderProducts);
productName 'Наименование' (OrderProducts d) = name(product(d));
qty = DATA NUMERIC[5,3] (OrderProducts);
price = DATA NUMERIC[17,2] (OrderProducts);
amount (OrderProducts a) = qty(a)*price(a);

Как посчитать сумму заказа, и вывести в amount(Order) на форму?


Ответы (1 шт):

Автор решения: DAle

Между классами Order и OrderProducts (кстати, может быть лучше назвать его OrderProduct?) должна быть связь в виде свойства, которое по объекту класса OrderProducts возвращает объект класса Order. Предположим, что такое свойство есть и выглядит оно так:

order(OrderProducts op) = DATA Order (OrderProducts);

Тогда сумма заказа может быть выражена таким свойством:

amount(Order order) = GROUP SUM amount(OrderProducts op) BY order(op)

либо

amount(Order order) = GROUP SUM amount(OrderProducts op) IF order(op) == order

Очень похожий пример есть в этой статье: https://habr.com/ru/company/lsfusion/blog/458376/#group

→ Ссылка