Changes between Version 9 and Version 10 of Design


Ignore:
Timestamp:
08/13/25 16:27:49 (6 days ago)
Author:
163080
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Design

    v9 v10  
    1818
    1919=== Најважни случаи на употреба
    20 1. **Регистрација на нов вработен од страна на администратор**
     201. **Регистрација на нов вработен (само Админ)**
     21**Чекори:**
     221. Администраторот пополнува форма со податоци за нов вработен.
     232. Системот ги запишува податоците во `Employee`.
    2124
    2225{{{
    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 );
     26INSERT INTO Employee (first_name, last_name, email, status, iban, cv, photo, notes, company_id, created_at, updated_at)
     27VALUES ('Alice', 'Johnson', 'alice.johnson@agencyos.com', 'Active', 'MK121212121212', '/cvs/alice_johnson.pdf', '/photos/alice.jpg', 'Great with clients', 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
    3228}}}
    3329
    34 2. **Приказ на сите клиенти и деталите за одреден клиент**
    35 All
     302. **Преглед на сите вработени во компанија**
     31**Чекори:**
     321. HR или Админ избира компанија.
     332. Системот враќа листа од сите вработени за таа компанија.
    3634
    3735{{{
    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 
     36SELECT employee_id, first_name, last_name, email, status
     37FROM Employee
     38WHERE company_id = 1;
    5139}}}
    5240
    53 Specific Client
     413. **Преглед на сите клиенти**
    5442
    5543{{{
    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 
     44SELECT client_id, name, email, phone, city, country
     45FROM Client
     46ORDER BY name;
    6947}}}
    7048
    71 
    72 3. **Креирање и уредување на фактури**
    73 All
    74 
     494. **Преглед на деталите за конкретен клиент**
    7550{{{
    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 
     51SELECT cl.*, COUNT(i.invoice_id) AS total_invoices, SUM(li.total) AS total_billed
     52FROM Client cl
     53LEFT JOIN Invoice i ON i.client_id = cl.client_id
     54LEFT JOIN LineItem li ON li.invoice_id = i.invoice_id
     55WHERE cl.client_id = 1
     56GROUP BY cl.client_id;
    9057}}}
    9158
    92 
    93 New Invoice
     595. **Креирање на нова фактура**
    9460{{{
    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 
     61INSERT INTO Invoice ("from", "to", issue_date, due_date, notes, status, company_id, client_id, created_at, updated_at)
     62VALUES ('AgencyOS Inc.', 'Global Enterprises', CURRENT_DATE, CURRENT_DATE + INTERVAL '30 days', 'Project Alpha delivery', 'Pending', 1, 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
    9963}}}
    10064
    101 UPDATE Invoice
     656. **Уредување на постоечка фактура**
    10266{{{
    103 SET
    104     total_amount = 1350.00,
    105     due_date = '2025-03-01',
    106     status = 'Paid'
    107 WHERE
    108     invoice_id = X;
     67UPDATE Invoice
     68SET status = 'Paid', updated_at = CURRENT_TIMESTAMP
     69WHERE invoice_id = 1;
     70}}}
    10971
     727. **Преглед на фактури за клиент**
     73{{{
     74SELECT i.invoice_id, i.issue_date, i.due_date, i.status, SUM(li.total) AS total
     75FROM Invoice i
     76LEFT JOIN LineItem li ON li.invoice_id = i.invoice_id
     77WHERE i.client_id = 1
     78GROUP BY i.invoice_id;
    11079}}}
     80
     818. **Преглед на детали за фактура**
     82{{{
     83SELECT i.*, li.description, li.quantity, li.unit_price, li.total
     84FROM Invoice i
     85JOIN LineItem li ON li.invoice_id = i.invoice_id
     86WHERE i.invoice_id = 1;
     87}}}