added triggers for user balance calculation
This commit is contained in:
parent
0f81113d65
commit
4ad165f4a7
@ -40,3 +40,53 @@ INSERT INTO ledger_statuses (status_id, name) VALUES
|
|||||||
(2, 'ratified'),
|
(2, 'ratified'),
|
||||||
(3, 'disputed'),
|
(3, 'disputed'),
|
||||||
(4, 'settled');
|
(4, 'settled');
|
||||||
|
|
||||||
|
DELIMITER //
|
||||||
|
CREATE TRIGGER after_ledger_insert
|
||||||
|
AFTER INSERT ON ledger
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
IF NEW.status_id = 1 THEN
|
||||||
|
UPDATE user_balances
|
||||||
|
SET total_pending = total_pending + NEW.amount
|
||||||
|
WHERE user_id = NEW.user_id AND currency_code = NEW.currency_code;
|
||||||
|
ELSEIF NEW.status_id IN (2, 4) THEN
|
||||||
|
UPDATE user_balances
|
||||||
|
SET total_confirmed = total_confirmed + NEW.amount
|
||||||
|
WHERE user_id = NEW.user_id AND currency_code = NEW.currency_code;
|
||||||
|
END IF;
|
||||||
|
END //
|
||||||
|
CREATE TRIGGER after_ledger_update
|
||||||
|
AFTER UPDATE ON ledger
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
IF OLD.status_id = 1 THEN
|
||||||
|
UPDATE user_balances SET total_pending = total_pending - OLD.amount
|
||||||
|
WHERE user_id = OLD.user_id AND currency_code = OLD.currency_code;
|
||||||
|
ELSEIF OLD.status_id IN (2, 4) THEN
|
||||||
|
UPDATE user_balances SET total_confirmed = total_confirmed - OLD.amount
|
||||||
|
WHERE user_id = OLD.user_id AND currency_code = OLD.currency_code;
|
||||||
|
END IF;
|
||||||
|
IF NEW.status_id = 1 THEN
|
||||||
|
UPDATE user_balances SET total_pending = total_pending + NEW.amount
|
||||||
|
WHERE user_id = NEW.user_id AND currency_code = NEW.currency_code;
|
||||||
|
ELSEIF NEW.status_id IN (2, 4) THEN
|
||||||
|
UPDATE user_balances SET total_confirmed = total_confirmed + NEW.amount
|
||||||
|
WHERE user_id = NEW.user_id AND currency_code = NEW.currency_code;
|
||||||
|
END IF;
|
||||||
|
END //
|
||||||
|
CREATE TRIGGER after_ledger_delete
|
||||||
|
AFTER DELETE ON ledger
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
IF OLD.status_id = 1 THEN
|
||||||
|
UPDATE user_balances SET total_pending = total_pending - OLD.amount
|
||||||
|
WHERE user_id = OLD.user_id AND currency_code = OLD.currency_code;
|
||||||
|
ELSEIF OLD.status_id IN (2, 4) THEN
|
||||||
|
UPDATE user_balances SET total_confirmed = total_confirmed - OLD.amount
|
||||||
|
WHERE user_id = OLD.user_id AND currency_code = OLD.currency_code;
|
||||||
|
END IF;
|
||||||
|
END //
|
||||||
|
DELIMITER ;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user