Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE OR REPLACE FUNCTION create_debit
- (
- purchase_id INT,
- amount INT,
- started_at TIMESTAMP,
- finished_at TIMESTAMP,
- bonus_card_id INT,
- created_at TIMESTAMP
- )
- RETURNS VOID AS
- $body$
- DECLARE
- debit_id INT;
- balance INT;
- BEGIN
- insert into "debits"
- (
- "purchase_id",
- "amount",
- "created_at",
- "started_at",
- "finished_at"
- )
- VALUES
- (
- purchase_id,
- amount,
- created_at,
- started_at,
- finished_at
- )
- RETURNING "id" INTO debit_id;
- IF NOW() != started_at
- THEN
- SELECT a.balance INTO balance FROM accounts a WHERE a.card_id = bonus_card_id ORDER BY a.created_at DESC LIMIT 1;
- IF balance IS NULL
- THEN balance = 0;
- END IF;
- INSERT INTO accounts
- (
- "card_id",
- "debit_amount",
- "debit_id",
- "created_at",
- "balance"
- )
- VALUES
- (
- bonus_card_id,
- amount,
- debit_id,
- NOW(),
- balance + amount
- );
- END IF;
- END
- $body$
- LANGUAGE 'plpgsql';
- DROP FUNCTION create_debit;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement