From 41e90694a7e973fef2e1a3176cc95cd692a00f0d Mon Sep 17 00:00:00 2001
From: Bill Erickson <berickxx@gmail.com>
Date: Sat, 20 Oct 2018 08:11:46 -0400
Subject: [PATCH] LP#1793802 Age circ ages payments before billings

When aging a circulation, payments must be deleted before billings,
since account_adjustements (payment) reference billings.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
---
 Open-ILS/src/sql/Pg/090.schema.action.sql                        | 2 +-
 Open-ILS/src/sql/Pg/upgrade/XXXX.schema.aged-billing-payment.sql | 7 ++-----
 2 files changed, 3 insertions(+), 6 deletions(-)

diff --git a/Open-ILS/src/sql/Pg/090.schema.action.sql b/Open-ILS/src/sql/Pg/090.schema.action.sql
index fe3c78a6cc..83e48bf8cf 100644
--- a/Open-ILS/src/sql/Pg/090.schema.action.sql
+++ b/Open-ILS/src/sql/Pg/090.schema.action.sql
@@ -358,8 +358,8 @@ BEGIN
     INSERT INTO money.aged_payment 
         SELECT * FROM money.payment_view WHERE xact = OLD.id;
 
-    DELETE FROM money.billing WHERE xact = OLD.id;
     DELETE FROM money.payment WHERE xact = OLD.id;
+    DELETE FROM money.billing WHERE xact = OLD.id;
 
     RETURN OLD;
 END;
diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.aged-billing-payment.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.aged-billing-payment.sql
index a88bdd28f3..ab8128f008 100644
--- a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.aged-billing-payment.sql
+++ b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.aged-billing-payment.sql
@@ -71,8 +71,8 @@ BEGIN
     INSERT INTO money.aged_payment 
         SELECT * FROM money.payment_view WHERE xact = OLD.id;
 
-    DELETE FROM money.billing WHERE xact = OLD.id;
     DELETE FROM money.payment WHERE xact = OLD.id;
+    DELETE FROM money.billing WHERE xact = OLD.id;
 
     RETURN OLD;
 END;
@@ -91,10 +91,7 @@ ALTER TABLE money.forgive_payment DISABLE TRIGGER mat_summary_del_tgr;
 ALTER TABLE money.credit_payment DISABLE TRIGGER mat_summary_del_tgr;
 ALTER TABLE money.goods_payment DISABLE TRIGGER mat_summary_del_tgr;
 
-DELETE FROM money.payment WHERE id IN (
-    SELECT mp.id FROM money.payment mp
-    JOIN money.aged_payment USING (id)
-);
+DELETE FROM money.payment WHERE id IN (SELECT id FROM money.aged_payment);
 
 ALTER TABLE money.payment ENABLE TRIGGER mat_summary_del_tgr;
 ALTER TABLE money.cash_payment ENABLE TRIGGER mat_summary_del_tgr;
-- 
2.11.0