wiki:DodavanjeTransakcija

Version 1 (modified by 211101, 5 weeks ago) ( diff )

--

Додавање трансакција

Актери: Најавен корисник

  1. Корисникот притиска на копчето за додавање на трансакции
  2. Се отвора форма каде корисникот ги внесува следните детали за трансакцијата:
    • Дали трансакцијата додава или одзема од сметка (задолжително поле)
    • Име на трансакција (задолжително поле)
    • Износ на цела трансакција (задолжително поле)
    • Датум на трансакцијата (опционално, доколку не се внесе се зема моменталното време)
    • Таг за категоризација (опционално, но препорачливо)
    • Сметка на која трансакцијата се поврзува (се бира од достапните)
  3. Корисникот може да додаде дополнителни детали преку динамично додавање на полиња со клик на копче за додавање кои ќе бидат зачувани како earned_amount и spent_amount во табелата transaction_breakdown
  4. Апликацијата ги валидира внесените податоци (на пример, проверува дали сите задолжителни полиња се пополнети и дали износот е валиден број)
  5. Апликацијата внесува нов запис во табелата transaction:
    INSERT INTO transaction (transaction_name, amount, net_amount, date, tag_id)
    VALUES ('Пазарување', 3500.00, 0, '2024-11-23 13:51:35+02:00', 3);
    RETURNING transaction_id;
    
  6. Трансакцијата тригерира креирање запис во 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;
      
  1. Ако корисникот додал дополнителни детали преку динамично додавање на полиња(на пример, 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);
    
  2. Тригер во базата:
    • Автоматски ја пресметува и ажурира вредноста на net_amount во табелата transaction според деталите внесени во табелата transaction_breakdown
  3. По успешното додавање, тригерот:
    • Го ажурира балансот на поврзаната трансакциска сметка во табелата transaction_account:
      UPDATE transaction_account
      SET balance = balance - 1500 + 200
      WHERE transaction_account_id IN (2, 3);
      
    • Го известува корисникот за успешното додавање на трансакцијата.
Note: See TracWiki for help on using the wiki.