aboutsummaryrefslogtreecommitdiff
path: root/database-versioning/libeufin-bank-procedures.sql
diff options
context:
space:
mode:
Diffstat (limited to 'database-versioning/libeufin-bank-procedures.sql')
-rw-r--r--database-versioning/libeufin-bank-procedures.sql14
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;