summaryrefslogtreecommitdiff
path: root/sql/modules
diff options
context:
space:
mode:
Diffstat (limited to 'sql/modules')
-rw-r--r--sql/modules/Payment.sql15
-rw-r--r--sql/modules/Voucher.sql25
2 files changed, 31 insertions, 9 deletions
diff --git a/sql/modules/Payment.sql b/sql/modules/Payment.sql
index f48bd22f..77a48045 100644
--- a/sql/modules/Payment.sql
+++ b/sql/modules/Payment.sql
@@ -207,10 +207,6 @@ This then returns a set of contact information with a 2 dimensional array
cnsisting of outstanding invoices.
$$;
-CREATE OR REPLACE FUNCTION payment_create_queue_entry() RETURNS int AS
-$$
-$$ LANGUAGE PLPGSQL;
-
CREATE OR REPLACE FUNCTION payment_bulk_queue
(in_transactions numeric[], in_batch_id int, in_source text, in_total numeric,
in_ar_ap_accno text, in_cash_accno text,
@@ -233,21 +229,22 @@ $$ LANGUAGE PLPGSQL;
CREATE OR REPLACE FUNCTION job__process_payment(in_job_id int)
RETURNS bool AS $$
DECLARE
- queue_record RECORD
- t_auth_name text,
+ queue_record RECORD;
+ t_auth_name text;
BEGIN
-- TODO: Move the set session authorization into a utility function
- SELECT created_by INTO t_auth_name FROM pending_jobs
+ SELECT entered_by INTO t_auth_name FROM pending_job
WHERE id = in_job_id;
- EXECUTE 'SET SESSION AUTHORIZATION ' quote_ident(t_auth_name);
+ EXECUTE 'SET SESSION AUTHORIZATION ' || quote_ident(t_auth_name);
FOR queue_record IN
SELECT * from payments_queue WHERE job_id = in_job_id
LOOP
PERFORM payment_bulk_post
(transactions, batch_id, source, total, ar_ap_accno, cash_accno,
- payment_date, account_class);
+ payment_date, account_class)
+ FROM payments_queue WHERE job_id = in_job_id;
END LOOP;
UPDATE pending_job
SET completed_at = timeofday()::timestamp,
diff --git a/sql/modules/Voucher.sql b/sql/modules/Voucher.sql
index 5227a848..0633ab5d 100644
--- a/sql/modules/Voucher.sql
+++ b/sql/modules/Voucher.sql
@@ -221,3 +221,28 @@ BEGIN
return currval('batch_id_seq');
END;
$$ LANGUAGE PLPGSQL;
+
+CREATE OR REPLACE FUNCTION batch_delete(in_batch_id int) RETURNS int AS
+$$
+DECLARE
+ t_transaction_ids int[];
+BEGIN
+
+ -- voucher_id is only set in acc_trans on payment/receipt vouchers and
+ -- their reversals. -CT
+ DELETE FROM acc_trans WHERE voucher_id IN
+ (select voucher_id FROM voucher where batch_id = in_batch_id);
+
+ SELECT as_array(trans_id) INTO t_transaction_ids
+ FROM voucher WHERE batch_id = in_batch_id AND batch_class IN (1, 2, 5);
+
+ DELETE FROM acc_trans WHERE trans_id = ANY(t_transaction_ids);
+ DELETE FROM ap WHERE id = ANY(t_transaction_ids);
+ DELETE FROM gl WHERE id = ANY(t_transaction_ids);
+ DELETE FROM voucher WHERE batch_id = in_batch_id;
+ DELETE FROM batch WHERE id = in_batch_id;
+ DELETE FROM transactions WHERE id = ANY(t_transaction_ids);
+
+ RETURN 1;
+END;
+$$ language plpgsql;