| | 1 | = UseCase0003 - Додавање на ставка во нарачка = |
| | 2 | |
| | 3 | '''Актер иницијатор:''' Келнер |
| | 4 | |
| | 5 | '''Други актери:''' нема |
| | 6 | |
| | 7 | == Опис == |
| | 8 | |
| | 9 | Келнерот додава производ од менито во постоечка нарачка. Системот проверува дали производот е активен, го одредува следниот редоследен број на ставката, ја внесува ставката со тековната цена и ја намалува залихата на производот. |
| | 10 | |
| | 11 | == Сценарио == |
| | 12 | |
| | 13 | 1. Келнерот е на екранот за нарачка (order_id = 8). |
| | 14 | |
| | 15 | 2. Системот ги прикажува достапните производи од менито: |
| | 16 | {{{ |
| | 17 | SELECT p.product_id, p.name, p.price, c.name AS category |
| | 18 | FROM project.product p |
| | 19 | JOIN project.category c ON p.category_id = c.category_id |
| | 20 | WHERE p.active = TRUE |
| | 21 | ORDER BY c.name, p.name; |
| | 22 | }}} |
| | 23 | |
| | 24 | 3. Келнерот избира производ (на пр. Еспресо) и внесува количина. |
| | 25 | |
| | 26 | 4. Системот го одредува следниот редоследен број на ставката: |
| | 27 | {{{ |
| | 28 | SELECT COALESCE(MAX(item_number), 0) + 1 AS next_item |
| | 29 | FROM project.order_item |
| | 30 | WHERE order_id = 8; |
| | 31 | }}} |
| | 32 | |
| | 33 | 5. Системот ја внесува ставката: |
| | 34 | {{{ |
| | 35 | INSERT INTO project.order_item (order_id, item_number, product_id, quantity, unit_price, status) |
| | 36 | VALUES (8, 1, 1, 2, 80.00, 'ПОРАЧАНО'); |
| | 37 | }}} |
| | 38 | |
| | 39 | 6. Системот ја намалува залихата на производот: |
| | 40 | {{{ |
| | 41 | INSERT INTO project.inventory (product_id, quantity_change, operation_type) |
| | 42 | VALUES (1, -2, 'излез'); |
| | 43 | }}} |
| | 44 | |
| | 45 | 7. Системот ја прикажува ажурираната листа на ставки: |
| | 46 | {{{ |
| | 47 | SELECT oi.item_number, p.name, oi.quantity, oi.unit_price, |
| | 48 | oi.quantity * oi.unit_price AS subtotal, oi.status |
| | 49 | FROM project.order_item oi |
| | 50 | JOIN project.product p ON p.product_id = oi.product_id |
| | 51 | WHERE oi.order_id = 8 |
| | 52 | ORDER BY oi.item_number; |
| | 53 | }}} |
| | 54 | |
| | 55 | 8. Системот го запишува настанот: |
| | 56 | {{{ |
| | 57 | INSERT INTO project.audit_log (user_id, action, entity_name) |
| | 58 | VALUES (3, 'ADD_ORDER_ITEM', 'order_item'); |
| | 59 | }}} |