= UseCase0003 - Додавање на ставка во нарачка = '''Актер иницијатор:''' Келнер '''Други актери:''' нема == Опис == Келнерот додава производ од менито во постоечка нарачка. Системот проверува дали производот е активен, го одредува следниот редоследен број на ставката, ја внесува ставката со тековната цена и ја намалува залихата на производот. == Сценарио == 1. Келнерот е на екранот за нарачка (order_id = 8). 2. Системот ги прикажува достапните производи од менито: {{{ SELECT p.product_id, p.name, p.price, c.name AS category FROM project.product p JOIN project.category c ON p.category_id = c.category_id WHERE p.active = TRUE ORDER BY c.name, p.name; }}} 3. Келнерот избира производ (на пр. Еспресо) и внесува количина. 4. Системот го одредува следниот редоследен број на ставката: {{{ SELECT COALESCE(MAX(item_number), 0) + 1 AS next_item FROM project.order_item WHERE order_id = 8; }}} 5. Системот ја внесува ставката: {{{ INSERT INTO project.order_item (order_id, item_number, product_id, quantity, unit_price, status) VALUES (8, 1, 1, 2, 80.00, 'ПОРАЧАНО'); }}} 6. Системот ја намалува залихата на производот: {{{ INSERT INTO project.inventory (product_id, quantity_change, operation_type) VALUES (1, -2, 'излез'); }}} 7. Системот ја прикажува ажурираната листа на ставки: {{{ SELECT oi.item_number, p.name, oi.quantity, oi.unit_price, oi.quantity * oi.unit_price AS subtotal, oi.status FROM project.order_item oi JOIN project.product p ON p.product_id = oi.product_id WHERE oi.order_id = 8 ORDER BY oi.item_number; }}} 8. Системот го запишува настанот: {{{ INSERT INTO project.audit_log (user_id, action, entity_name) VALUES (3, 'ADD_ORDER_ITEM', 'order_item'); }}}