= Креирање на достава === Актери ===== Менаџер ==== Чекор 1 - Најава на системот Корисникот се најавува на системот со внесување на својот email и лозинка. Лозинката во позадина се хешира и таа се проверува во базата. {{{#!sql select u.* from manager m join users u on m.user_id=u.user_id where u.email=input_email and u.pass=input_pass }}} ==== Чекор 2 - Dashboard На почетната страница менаџерот ќе има преглед на најнови податоци и податоци од негов интерес, како што се моментална залиха во магацинот, состојба на возилата, преглед и број на новокреирани нарачки, состојба на тековните достави. \\\\ `curr_user_id` е примарниот клуч, односно идентификаторот на моменталниот корисник. ===== Моментална залиха во магацинот (подредени по број на производи од секој артикл) {{{#!sql select a.article_name, man.manufacturer_name, count(au.article_id) as total_units from warehouse w join manager m on m.warehouse_id = w.warehouse_id join article_unit au on au.warehouse_id = w.warehouse_id join article a on au.article_id = a.article_id join manufacturer man on a.manufacturer_id = man.manufacturer_id where m.user_id = curr_user_id group by a.article_name, man.manufacturer_name order by total_units }}} ===== Состојба на возила {{{#!sql select v.vehicle_plate,v.vehicle_reg from warehouse w join manager m on w.warehouse_id = m.warehouse_id join vehicle v on w.warehouse_id=v.warehouse_id where m.user_id=curr_user_id group by v.vehicle_plate,v.vehicle_reg order by v.vehicle_reg }}} ===== Новокреирани нарачки {{{#!sql select o.* from warehouse w join manager m on w.warehouse_id = m.warehouse_id join article_unit au on au.warehouse_id = w.warehouse_id join orders o on au.order_id = o.order_id where m.user_id = curr_user_id and o.order_status_id = 1 order by o.order_date desc }}} ===== Тековни достави {{{#!sql select d.* from warehouse w join manager m on w.warehouse_id = m.warehouse_id join article_unit au on w.warehouse_id = au.warehouse_id join orders o on au.order_id = o.order_id join delivery d on o.delivery_id = d.delivery_id where m.user_id=curr_user_id and d.delivery_status_id<>4 }}} ==== Чекор 3 - Клика на копчето `Креирај достава` Менаџерот е пренасочен кон страница каде што се прикажани сите нарачки кои не се дел од некоја достава. \\\\ `curr_user_id` е примарниот клуч, односно идентификаторот на моменталниот корисник. {{{#!sql select o.* from warehouse w join manager m on w.warehouse_id = m.warehouse_id join article_unit au on au.warehouse_id = w.warehouse_id join orders o on au.order_id = o.order_id where m.user_id = curr_user_id and o.delivery_id is null order by o.order_date desc }}} Следно менаџерот може да ги групира и да ги додава во една достава која ќе ја назначи на некое возило. ==== Чекор 4 - Додавање на одбраните нарачки во достава и доделување на возило ===== Листање на достапни возила `curr_user_id` е примарниот клуч, односно идентификаторот на моменталниот корисник. \\\\ `created_delivery_date` е датумот за новокреираната достава. Проверуваме кои возила се достапни за тој датум, односно возила од магацинот на корисникот кои веќе немаат назначено достава за тој ден. {{{#!sql select v.* from warehouse w join manager m on w.warehouse_id = m.warehouse_id join vehicle v on w.warehouse_id = v.warehouse_id where m.user_id = curr_user_id and v.vehicle_id not in (select v.vehicle_id from warehouse w join manager m on w.warehouse_id = m.warehouse_id join vehicle v on w.warehouse_id = v.warehouse_id join delivery d on v.vehicle_id = d.vehicle_id where m.user_id=curr_user_id and d.delivery_date = created_delivery_date) }}} ===== Креирање на достава за одбраното возило `chosen_date` е датум кој корисникот го одбира \\\\ `chosen_vehicle_id` е идентификаторот на одбраното возило {{{#!sql insert into delivery(delivery_date_created,delivery_date,delivery_status_id,vehicle_id) values (current_date,chosen_date,1,chosen_vehicle_id) }}} ===== Поврзување на одбраните нарачки со креираната достава `created_delivery_id` е примарниот клуч на новокреираната достава \\\\ `selected_orders_id` се примарните клучеви на одбраните нарачки, одделени со запирка. {{{#!sql update orders set delivery_id=created_delivery_id where order_id in (selected_orders_id); }}}