How-to: Documents with lines
Example 1
Task
We have the orders and their specification lines.
CLASS Book 'Book';
name 'Name' = DATA ISTRING[100] (Book) IN id;
CLASS Order 'Order';
date 'Date' = DATA DATE (Order);
number 'Number' = DATA STRING[10] (Order);
CLASS OrderDetail 'Order line';
order 'Order' = DATA Order (OrderDetail) NONULL DELETE;
book 'Book' = DATA Book (OrderDetail) NONULL;
nameBook 'Book' (OrderDetail d) = name(book(d));
quantity 'Quantity' = DATA INTEGER (OrderDetail);
price 'Price' = DATA NUMERIC[14,2] (OrderDetail);
We need to create a form with a list of orders where the user can add, edit or delete them.
Solution
FORM order 'Order'
OBJECTS o = Order PANEL
PROPERTIES(o) date, number
OBJECTS d = OrderDetail
PROPERTIES(d) nameBook, quantity, price, NEW, DELETE
FILTERS order(d) == o
EDIT Order OBJECT o
;
FORM orders 'Orders'
OBJECTS o = Order
PROPERTIES(o) READONLY date, number
PROPERTIES(o) NEWSESSION NEW, EDIT, DELETE
;
NAVIGATOR {
NEW orders;
}
We do not add a link to the order for the line object on the order
form, since when adding the object using NEW
, the system will automatically set up this link based on the FILTERS
block.
Example 2
Task
Similar to Example 1.
We need to add order specification to the order list form.
Solution
EXTEND FORM orders
OBJECTS d = OrderDetail
PROPERTIES(d) READONLY nameBook, quantity, price
FILTERS order(d) == o
;
It may be convenient that the user can view the order contents without editing it.