Додавање трансакција
Актери: Најавен корисник
- Корисникот притиска на копчето за додавање на трансакции
- Се отвора форма каде корисникот ги внесува следните детали за трансакцијата:
- Дали трансакцијата додава или одзема од сметка (задолжително поле)
- Име на трансакција (задолжително поле)
- Износ на цела трансакција (задолжително поле)
- Датум на трансакцијата (опционално, доколку не се внесе се зема моменталното време)
- Таг за категоризација (опционално, но препорачливо)
- Сметка на која трансакцијата се поврзува (се бира од достапните)
- Корисникот може да додаде дополнителни детали преку динамично додавање на полиња со клик на копче за додавање кои ќе бидат зачувани како
earned_amount
иspent_amount
во табелатаtransaction_breakdown
- Апликацијата ги валидира внесените податоци (на пример, проверува дали сите задолжителни полиња се пополнети и дали износот е валиден број)
- Апликацијата внесува нов запис во табелите
transaction
иtag_assigned_to_transaction
:INSERT INTO transaction (transaction_name, amount, net_amount, date) VALUES ('Пазарување', 3500.00, 0, '2024-11-23 13:51:35+02:00'); RETURNING transaction_id;
INSERT INTO tag_assigned_to_transaction (transaction_id, tag_id) VALUES (1, 3); RETURNING tag_assigned_to_transaction_id;
- Трансакцијата тригерира креирање запис во
transaction_breakdown
кој исто така ја ажурира сметката и пресметуваnet_amount
преку тригер:
- Во зависност од тоа дали трансакцијата додава или одзема се прави додавање во соодветното поле на
transaction_breakdown
:- За додавање на сметка:
INSERT INTO transaction_breakdown (transaction_id, transaction_account_id, earned_amount, spent_amount) VALUES (1, 2, 3500, 0);
- За одземање од сметка:
INSERT INTO transaction_breakdown (transaction_id, transaction_account_id, earned_amount, spent_amount) VALUES (1, 2, 0, 3500);
- На крај се ажурира балансот во
transaction_account
UPDATE transaction_account: SET balance = balance - 3500 WHERE transaction_account_id = 2;
- За додавање на сметка:
- Ако корисникот додал дополнителни детали преку динамично додавање на полиња(на пример,
earned_amount
иspent_amount
), апликацијата внесува соодветни записи во табелатаtransaction_breakdown
:INSERT INTO transaction_breakdown (transaction_id, transaction_account_id, earned_amount, spent_amount) VALUES (1, 2, 0, 1500), (1, 3, 200, 0);
- Тригер во базата:
- Автоматски ја пресметува и ажурира вредноста на
net_amount
во табелатаtransaction
според деталите внесени во табелатаtransaction_breakdown
- Автоматски ја пресметува и ажурира вредноста на
- По успешното додавање, тригерот:
- Го ажурира балансот на поврзаната трансакциска сметка во табелата
transaction_account
:UPDATE transaction_account SET balance = CASE WHEN transaction_account_id = 2 THEN balance - 1500 WHEN transaction_account_id = 3 THEN balance + 200 ELSE balance END WHERE transaction_account_id IN (2, 3);
- Го известува корисникот за успешното додавање на трансакцијата.
- Го ажурира балансот на поврзаната трансакциска сметка во табелата
Last modified
4 weeks ago
Last modified on 12/16/24 22:01:38
Note:
See TracWiki
for help on using the wiki.