Changes between Version 9 and Version 10 of Design
- Timestamp:
- 08/13/25 16:27:49 (6 days ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Design
v9 v10 18 18 19 19 === Најважни случаи на употреба 20 1. **Регистрација на нов вработен од страна на администратор** 20 1. **Регистрација на нов вработен (само Админ)** 21 **Чекори:** 22 1. Администраторот пополнува форма со податоци за нов вработен. 23 2. Системот ги запишува податоците во `Employee`. 21 24 22 25 {{{ 23 CREATE TABLE Employee ( 24 employee_id BIGSERIAL PRIMARY KEY, 25 first_name VARCHAR(255) NOT NULL, 26 last_name VARCHAR(255) NOT NULL, 27 email VARCHAR(255) UNIQUE NOT NULL, 28 password_hash VARCHAR(255) NOT NULL, 29 role VARCHAR(50) CHECK (role IN ('Admin', 'Manager', 'Accountant')) NOT NULL, 30 date_of_employment DATE NOT NULL DEFAULT CURRENT_DATE 31 ); 26 INSERT INTO Employee (first_name, last_name, email, status, iban, cv, photo, notes, company_id, created_at, updated_at) 27 VALUES ('Alice', 'Johnson', 'alice.johnson@agencyos.com', 'Active', 'MK121212121212', '/cvs/alice_johnson.pdf', '/photos/alice.jpg', 'Great with clients', 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP); 32 28 }}} 33 29 34 2. **Приказ на сите клиенти и деталите за одреден клиент** 35 All 30 2. **Преглед на сите вработени во компанија** 31 **Чекори:** 32 1. HR или Админ избира компанија. 33 2. Системот враќа листа од сите вработени за таа компанија. 36 34 37 35 {{{ 38 SELECT 39 client_id, 40 client_name, 41 contact_person, 42 client_email, 43 phone, 44 city, 45 country 46 FROM 47 Client 48 ORDER BY 49 name; 50 36 SELECT employee_id, first_name, last_name, email, status 37 FROM Employee 38 WHERE company_id = 1; 51 39 }}} 52 40 53 Specific Client 41 3. **Преглед на сите клиенти** 54 42 55 43 {{{ 56 SELECT 57 cl.*, 58 COUNT(i.invoice_id) AS total_invoices, 59 SUM(i.total_amount) AS total_amount_due 60 FROM 61 Client cl 62 LEFT JOIN 63 Invoice i ON cl.client_id = i.client_id AND i.status = 'Unpaid' 64 WHERE 65 cl.client_id = X 66 GROUP BY 67 cl.client_id; 68 44 SELECT client_id, name, email, phone, city, country 45 FROM Client 46 ORDER BY name; 69 47 }}} 70 48 71 72 3. **Креирање и уредување на фактури** 73 All 74 49 4. **Преглед на деталите за конкретен клиент** 75 50 {{{ 76 SELECT 77 i.invoice_id, 78 c.client_name, 79 i.issue_date, 80 i.due_date, 81 i.total_amount, 82 i.status 83 FROM 84 Invoice i 85 JOIN 86 Client c ON i.client_id = c.client_id 87 ORDER BY 88 i.issue_date DESC; 89 51 SELECT cl.*, COUNT(i.invoice_id) AS total_invoices, SUM(li.total) AS total_billed 52 FROM Client cl 53 LEFT JOIN Invoice i ON i.client_id = cl.client_id 54 LEFT JOIN LineItem li ON li.invoice_id = i.invoice_id 55 WHERE cl.client_id = 1 56 GROUP BY cl.client_id; 90 57 }}} 91 58 92 93 New Invoice 59 5. **Креирање на нова фактура** 94 60 {{{ 95 INSERT INTO Invoice (client_id, issue_date, due_date, total_amount) 96 VALUES 97 (3, CURRENT_DATE, CURRENT_DATE + INTERVAL '30 days', 1250.00); 98 61 INSERT INTO Invoice ("from", "to", issue_date, due_date, notes, status, company_id, client_id, created_at, updated_at) 62 VALUES ('AgencyOS Inc.', 'Global Enterprises', CURRENT_DATE, CURRENT_DATE + INTERVAL '30 days', 'Project Alpha delivery', 'Pending', 1, 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP); 99 63 }}} 100 64 101 UPDATE Invoice 65 6. **Уредување на постоечка фактура** 102 66 {{{ 103 SET 104 total_amount = 1350.00, 105 due_date = '2025-03-01', 106 status = 'Paid' 107 WHERE 108 invoice_id = X; 67 UPDATE Invoice 68 SET status = 'Paid', updated_at = CURRENT_TIMESTAMP 69 WHERE invoice_id = 1; 70 }}} 109 71 72 7. **Преглед на фактури за клиент** 73 {{{ 74 SELECT i.invoice_id, i.issue_date, i.due_date, i.status, SUM(li.total) AS total 75 FROM Invoice i 76 LEFT JOIN LineItem li ON li.invoice_id = i.invoice_id 77 WHERE i.client_id = 1 78 GROUP BY i.invoice_id; 110 79 }}} 80 81 8. **Преглед на детали за фактура** 82 {{{ 83 SELECT i.*, li.description, li.quantity, li.unit_price, li.total 84 FROM Invoice i 85 JOIN LineItem li ON li.invoice_id = i.invoice_id 86 WHERE i.invoice_id = 1; 87 }}}