= Апликативен дизајн - Случаи на употреба и Сценарија за пристап до базата - SQL Погледи = == Сценарија == [wiki:КреирањеНовКлиент Креирање нов клиент]\\ [wiki:ДодавањеВозилоНаКлиент Додавање возило на клиент] \\ [wiki:ДодавањеНовСервис Додавање нов сервис на возило] \\ [wiki:КреирањеНовДел Креирање нов дел во системот] \\ [wiki:ДодавањеДелови Додавање делови на сервис] \\ [wiki:КреирањеФактури Креирање фактура] \\ [wiki:КреирањеФискалниСметки Креирање фискална сметка] \\ [wiki:ПрегледНаСервиснаИсторија Преглед на историја на сервиси] \\ [wiki:ДодавањеМеханичар Доделување улоги на механичар] \\ == Најважни случаи на употреба и SQL Погледи == ''*сликите во наредните чекори не се конечен изглед на апликацијата'' === Креирање нов дел во системот === '''Актери:''' - Вработен ===== Чекор 1 ===== Вработениот веќе има селектирано клиент и моторцкикл, потоа клика на копчето "Нов сервис" за да влезе во формата која овозможува креирање на нови делови. [[Image(part_step1_sketch.png, align=center, width=50%)]] ===== Чекор 2 ===== Се прикажува форма за внесување на нов дел. Вработениот ги пополнува: - Опис (напр. "Филтер за масло") - Мерна единица (напр. "парче") - Цена по единица - Даночна стапка ===== Чекор 3 ===== Вработениот клика "Додади нов артикл". [[Image(part_step3_sketch.png, align=center, width=80%)]] {{{#!sql INSERT INTO ServiceItems (Description, MeasurementUnit, PricePerUnit, Tax) VALUES ('Филтер за масло', 'парче', 700.00, 00.00); }}} ===== Чекор 4 ===== Системот ја валидира формата и го зачувува артиклот во табелата '''!ServiceItems'''. Вработениот добива потврда за успешно креирање. [[Image(part_step4_sketch.png, align=center, width=80%)]] === Креирање фактура === '''Актери:''' - Вработен ===== Чекор 1 ===== По завршување на сервисот, вработениот клика "Генерирај фактура" од деталите за сервисот. [[Image(invoice_step1_sketch.png, align=center, width=50%)]] ===== Чекор 2 ===== Системот прикажува преглед на сите трошоци (делови, труд, ДДВ) и опција за прикачување скенирана фактура. [[Image(invoice_step2_sketch.png, align=center, width=80%)]] {{{#!sql SELECT s.DateOfService, c.FirstName || ' ' || c.LastName AS Client, m.Model, m.Registration, si.Description, sa.UnitsUsed, si.PricePerUnit, s.TotalPrice FROM Services s JOIN Motorcycles m ON s.MotorcycleId = m.Id JOIN Clients c ON m.ClientId = c.Id JOIN ServiceAssignments sa ON sa.ServiceId = s.Id JOIN ServiceItems si ON si.Id = sa.ServiceItemId WHERE s.Id = 123; }}} ===== Чекор 3 ===== Вработениот прикачува PDF/слика од фактурата и клика "Потврди". [[Image(invoice_step3_sketch.png, align=center, width=80%)]] {{{#!sql INSERT INTO ServiceInvoices (ServiceId, ImagePath) VALUES (123, '/invoices/client_456_20231025.pdf'); }}} ===== Чекор 4 ===== Системот автоматски креира фискална сметка со фирмени податоци: [[Image(invoice_step4_sketch.png, align=center, width=80%)]] {{{#!sql INSERT INTO FiscalBills (ServiceInvoiceId, DDV, EDB, Description) VALUES ( (SELECT Id FROM ServiceInvoices WHERE ServiceId = 123), 18.00, 'MK123456789', 'Сервис на мотор Honda CBR500R' ); }}} === Додавање делови на сервис === '''Актери:''' - Вработен ===== Чекор 1 ===== Вработениот го избира сервисот од листата на активни сервиси и клика "Додади делови". [[Image(service_step1_sketch.png, align=center, width=50%)]] ===== Чекор 2 ===== Системот прикажува листа на достапни делови од '''!ServiceItems''' и механичари од '''!Mechanics'''. Вработениот избира: - Механичар (преку EMBG) - Делот од листата - Количина (напр. "2.00 литри") [[Image(service_step2_sketch.png, align=center, width=80%)]] {{{#!sql INSERT INTO ServiceAssignments (ServiceId, MechanicEMBG, ServiceItemId, UnitsUsed) VALUES ( (SELECT Id FROM Services WHERE MotorcycleId = 15 ORDER BY Id DESC LIMIT 1), '1234567890123', (SELECT Id FROM ServiceItems WHERE Description = 'Моторно масло'), 2.00 ); }}} ===== Чекор 3 ===== Системот автоматски ја ажурира вкупната цена на сервисот врз основа на деловите и трудот: [[Image(service_step3_sketch.png, align=center, width=80%)]] {{{#!sql UPDATE Services SET TotalPrice = ( SELECT SUM(si.PricePerUnit * sa.UnitsUsed * (1 + si.Tax/100)) FROM ServiceAssignments sa JOIN ServiceItems si ON sa.ServiceItemId = si.Id WHERE sa.ServiceId = 123 ) + LaborCost WHERE Id = 123; }}} ===== Чекор 4 ===== Вработениот добива потврда дека деловите се успешно додадени со ажурирана цена. [[Image(service_step4_sketch.png, align=center, width=80%)]]