Advertisement
Guest User

Untitled

a guest
Oct 18th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE OR REPLACE FUNCTION create_debit
  2.   (
  3.     purchase_id INT,
  4.     amount INT,
  5.     started_at TIMESTAMP,
  6.     finished_at TIMESTAMP,
  7.     bonus_card_id INT,
  8.     created_at TIMESTAMP
  9.   )
  10. RETURNS VOID AS
  11. $body$
  12. DECLARE
  13.   debit_id INT;
  14.   balance INT;
  15. BEGIN
  16.   insert into "debits"
  17.     (
  18.       "purchase_id",
  19.       "amount",
  20.       "created_at",
  21.       "started_at",
  22.       "finished_at"
  23.     )
  24.   VALUES
  25.     (
  26.       purchase_id,
  27.       amount,
  28.       created_at,
  29.       started_at,
  30.       finished_at
  31.     )
  32.   RETURNING "id" INTO debit_id;
  33.  
  34.   IF NOW() != started_at
  35.   THEN
  36.     SELECT a.balance INTO balance FROM accounts a WHERE a.card_id = bonus_card_id ORDER BY a.created_at DESC LIMIT 1;
  37.  
  38.     IF balance IS NULL
  39.     THEN balance = 0;
  40.     END IF;
  41.  
  42.     INSERT INTO accounts
  43.       (
  44.         "card_id",
  45.         "debit_amount",
  46.         "debit_id",
  47.         "created_at",
  48.         "balance"
  49.       )
  50.     VALUES
  51.       (
  52.         bonus_card_id,
  53.         amount,
  54.         debit_id,
  55.         NOW(),
  56.         balance + amount
  57.       );
  58.   END IF;
  59. END
  60. $body$
  61. LANGUAGE 'plpgsql';
  62.  
  63. DROP FUNCTION create_debit;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement