diff options
Diffstat (limited to 'database-versioning/libeufin-bank-procedures.sql')
-rw-r--r-- | database-versioning/libeufin-bank-procedures.sql | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/database-versioning/libeufin-bank-procedures.sql b/database-versioning/libeufin-bank-procedures.sql index ea493857..f10f5579 100644 --- a/database-versioning/libeufin-bank-procedures.sql +++ b/database-versioning/libeufin-bank-procedures.sql @@ -614,14 +614,19 @@ COMMENT ON FUNCTION select_taler_withdrawal IS 'Set details of a withdrawal oper CREATE FUNCTION abort_taler_withdrawal( IN in_withdrawal_uuid uuid, + IN in_login TEXT, OUT out_no_op BOOLEAN, OUT out_already_confirmed BOOLEAN ) LANGUAGE plpgsql AS $$ BEGIN -UPDATE taler_withdrawal_operations +UPDATE taler_withdrawal_operations SET aborted = NOT confirmation_done - WHERE withdrawal_uuid=in_withdrawal_uuid + FROM bank_accounts + JOIN customers ON customer_id=owning_customer_id + WHERE withdrawal_uuid=in_withdrawal_uuid + AND bank_account_id=wallet_bank_account -- JOIN + AND login=in_login RETURNING confirmation_done INTO out_already_confirmed; IF NOT FOUND THEN @@ -638,6 +643,7 @@ COMMENT ON FUNCTION abort_taler_withdrawal IS 'Abort a withdrawal operation.'; CREATE FUNCTION confirm_taler_withdrawal( IN in_withdrawal_uuid uuid, + IN in_login TEXT, IN in_confirmation_date BIGINT, OUT out_no_op BOOLEAN, OUT out_balance_insufficient BOOLEAN, @@ -672,7 +678,9 @@ SELECT -- Really no-star policy and instead DECLARE almost one var per column? wallet_bank_account_local, amount_local.val, amount_local.frac FROM taler_withdrawal_operations - WHERE withdrawal_uuid=in_withdrawal_uuid; + JOIN bank_accounts ON bank_account_id=wallet_bank_account + JOIN customers ON customer_id=owning_customer_id + WHERE withdrawal_uuid=in_withdrawal_uuid AND login=in_login; IF NOT FOUND THEN out_no_op=TRUE; RETURN; |