diff options
author | Özgür Kesim <oec-taler@kesim.org> | 2023-07-28 23:27:02 +0200 |
---|---|---|
committer | Özgür Kesim <oec-taler@kesim.org> | 2023-07-28 23:27:02 +0200 |
commit | 6dedca0fa36bd30bbeb26be012ce3ac9d967065a (patch) | |
tree | bd87d5ee2b4f7309e552928bf68e10e84c32c2b1 /src/exchangedb/exchange_do_purse_merge.sql | |
parent | a1dae0199f3bc3e9f66fc1375c652c6f99b26b2c (diff) |
taler_amount type introduced in reserves table and corresponding functionsnew-amount
- current_balance is now a taler_amount
- all C-functions, SQL-statements and stored procedures adjusted accordingly.
=> make check passes all tests in testing.
Diffstat (limited to 'src/exchangedb/exchange_do_purse_merge.sql')
-rw-r--r-- | src/exchangedb/exchange_do_purse_merge.sql | 35 |
1 files changed, 22 insertions, 13 deletions
diff --git a/src/exchangedb/exchange_do_purse_merge.sql b/src/exchangedb/exchange_do_purse_merge.sql index 85bae999..9780c016 100644 --- a/src/exchangedb/exchange_do_purse_merge.sql +++ b/src/exchangedb/exchange_do_purse_merge.sql @@ -33,6 +33,8 @@ DECLARE my_purse_fee taler_amount; my_partner_serial_id INT8; my_in_reserve_quota BOOLEAN; + reserve RECORD; + balance taler_amount; BEGIN @@ -195,20 +197,27 @@ ELSE my_amount.val = my_amount.val + my_amount.frac / 100000000; my_amount.frac = my_amount.frac % 100000000; + SELECT * + INTO reserve + FROM exchange.reserves + WHERE reserve_pub=in_reserve_pub; + + balance = reserve.current_balance; + balance.frac=balance.frac+my_amount.frac + - CASE + WHEN balance.frac + my_amount.frac >= 100000000 + THEN 100000000 + ELSE 0 + END; + balance.val=balance.val+my_amount.val + + CASE + WHEN balance.frac + my_amount.frac >= 100000000 + THEN 1 + ELSE 0 + END; + UPDATE exchange.reserves - SET - current_balance.frac=current_balance.frac+my_amount.frac - - CASE - WHEN current_balance.frac + my_amount.frac >= 100000000 - THEN 100000000 - ELSE 0 - END, - current_balance.val=current.balance_val+my.amount_val - + CASE - WHEN current_balance.frac + my_amount.frac >= 100000000 - THEN 1 - ELSE 0 - END + SET current_balance=balance WHERE reserve_pub=in_reserve_pub; END IF; |