END;
$$ LANGUAGE 'plpgsql';
-SELECT CLOCK_TIMESTAMP(), 'Building money.aged_payment';
+SELECT CLOCK_TIMESTAMP(), 'Populating money.aged_payment';
INSERT INTO money.aged_payment
SELECT mp.* FROM money.payment_view mp
JOIN action.aged_circulation circ ON (circ.id = mp.xact);
-SELECT CLOCK_TIMESTAMP(), 'Building money.aged_billing';
+SELECT CLOCK_TIMESTAMP(), 'Populating money.aged_billing';
INSERT INTO money.aged_billing
SELECT mb.* FROM money.billing mb
JOIN action.aged_circulation circ ON (circ.id = mb.xact);
--- Clean up payments first so account_adjustments won't stick
--- around referencing deleted billings
-
-SELECT CLOCK_TIMESTAMP(), 'Disabling payment triggers';
-
-ALTER TABLE money.payment DISABLE TRIGGER mat_summary_del_tgr;
-ALTER TABLE money.cash_payment DISABLE TRIGGER mat_summary_del_tgr;
-ALTER TABLE money.check_payment DISABLE TRIGGER mat_summary_del_tgr;
-ALTER TABLE money.credit_card_payment DISABLE TRIGGER mat_summary_del_tgr;
-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;
-
-SELECT CLOCK_TIMESTAMP(), 'Deleting payments';
-
-DELETE FROM money.payment WHERE id IN (
- SELECT mp.id FROM money.payment mp
- JOIN money.aged_payment USING (id)
-);
-
-SELECT CLOCK_TIMESTAMP(), 'Enabling payment triggers';
-
-ALTER TABLE money.payment ENABLE TRIGGER mat_summary_del_tgr;
-ALTER TABLE money.cash_payment ENABLE TRIGGER mat_summary_del_tgr;
-ALTER TABLE money.check_payment ENABLE TRIGGER mat_summary_del_tgr;
-ALTER TABLE money.credit_card_payment ENABLE TRIGGER mat_summary_del_tgr;
-ALTER TABLE money.forgive_payment ENABLE TRIGGER mat_summary_del_tgr;
-ALTER TABLE money.credit_payment ENABLE TRIGGER mat_summary_del_tgr;
-ALTER TABLE money.goods_payment ENABLE TRIGGER mat_summary_del_tgr;
-
-SELECT CLOCK_TIMESTAMP(), 'Creating tmp billing table';
-
--- Copy all money.billing rows that are not represented in money.aged_billing
-CREATE TEMPORARY TABLE tmp_money_billing ON COMMIT DROP AS
- SELECT mb.* FROM money.billing mb
- LEFT JOIN money.aged_billing mab USING (id)
- WHERE mab.id IS NULL;
-
-SELECT CLOCK_TIMESTAMP(), 'Truncating money.billing';
-
-ALTER TABLE money.billing DISABLE TRIGGER ALL;
-
--- drop and rebuild the billing foreign key constraint.
--- needed for truncate
-ALTER TABLE money.account_adjustment
- DROP CONSTRAINT account_adjustment_billing_fkey;
-
-TRUNCATE money.billing;
-
-SELECT CLOCK_TIMESTAMP(), 'Rebuilding money.billing';
-
-INSERT INTO money.billing SELECT * FROM tmp_money_billing;
-
-SELECT CLOCK_TIMESTAMP(), 'Done rebuilding money.billing';
-
-ALTER TABLE money.billing ENABLE TRIGGER ALL;
-ALTER TABLE money.account_adjustment
- ADD CONSTRAINT account_adjustment_billing_fkey
- FOREIGN KEY (billing) REFERENCES money.billing (id);
+SELECT CLOCK_TIMESTAMP(), 'Done populating aged payment/billing tables';
COMMIT;
-SELECT CLOCK_TIMESTAMP(), 'Analyzing money.billing';
-
-ANALYZE money.billing;
-
-SELECT CLOCK_TIMESTAMP(), 'Analyzing payment tables';
-
-VACUUM ANALYZE money.credit_card_payment;
-VACUUM ANALYZE money.forgive_payment;
-VACUUM ANALYZE money.cash_payment;
-
-SELECT CLOCK_TIMESTAMP(), 'All Done';
-
--- /dev/null
+-- Deploy kcls-evergreen:aged-money-data-migration to pg
+-- requires: lost-paid-receipts-data
+
+BEGIN;
+
+SET STATEMENT_TIMEOUT = 0;
+
+SELECT CLOCK_TIMESTAMP(), 'Purging aged payments/billings from main tables';
+
+ALTER TABLE money.payment DISABLE TRIGGER mat_summary_del_tgr;
+ALTER TABLE money.cash_payment DISABLE TRIGGER mat_summary_del_tgr;
+ALTER TABLE money.check_payment DISABLE TRIGGER mat_summary_del_tgr;
+ALTER TABLE money.credit_card_payment DISABLE TRIGGER mat_summary_del_tgr;
+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;
+
+SELECT CLOCK_TIMESTAMP(), 'Deleting payments';
+
+-- delete all payments that are represented in the aged_payment table
+DELETE FROM money.payment WHERE id IN (SELECT id FROM money.aged_payment);
+
+SELECT CLOCK_TIMESTAMP(), 'Enabling payment triggers';
+
+ALTER TABLE money.payment ENABLE TRIGGER mat_summary_del_tgr;
+ALTER TABLE money.cash_payment ENABLE TRIGGER mat_summary_del_tgr;
+ALTER TABLE money.check_payment ENABLE TRIGGER mat_summary_del_tgr;
+ALTER TABLE money.credit_card_payment ENABLE TRIGGER mat_summary_del_tgr;
+ALTER TABLE money.forgive_payment ENABLE TRIGGER mat_summary_del_tgr;
+ALTER TABLE money.credit_payment ENABLE TRIGGER mat_summary_del_tgr;
+ALTER TABLE money.goods_payment ENABLE TRIGGER mat_summary_del_tgr;
+
+SELECT CLOCK_TIMESTAMP(), 'Creating tmp billing table';
+
+-- Copy all money.billing rows that are not represented in money.aged_billing
+CREATE TEMPORARY TABLE tmp_money_billing ON COMMIT DROP AS
+ SELECT mb.* FROM money.billing mb
+ LEFT JOIN money.aged_billing mab USING (id)
+ WHERE mab.id IS NULL;
+
+SELECT CLOCK_TIMESTAMP(), 'Truncating money.billing';
+
+ALTER TABLE money.billing DISABLE TRIGGER ALL;
+
+-- drop and rebuild the billing foreign key constraint.
+-- needed for truncate
+ALTER TABLE money.account_adjustment
+ DROP CONSTRAINT account_adjustment_billing_fkey;
+
+TRUNCATE money.billing;
+
+SELECT CLOCK_TIMESTAMP(), 'Rebuilding money.billing';
+
+INSERT INTO money.billing SELECT * FROM tmp_money_billing;
+
+SELECT CLOCK_TIMESTAMP(), 'Done rebuilding money.billing';
+
+ALTER TABLE money.billing ENABLE TRIGGER ALL;
+ALTER TABLE money.account_adjustment
+ ADD CONSTRAINT account_adjustment_billing_fkey
+ FOREIGN KEY (billing) REFERENCES money.billing (id);
+
+COMMIT;
+
+SELECT CLOCK_TIMESTAMP(), 'Analyzing money.billing';
+
+ANALYZE money.billing;
+
+SELECT CLOCK_TIMESTAMP(), 'Analyzing payment tables';
+
+VACUUM ANALYZE money.credit_card_payment;
+VACUUM ANALYZE money.forgive_payment;
+VACUUM ANALYZE money.cash_payment;
+
+SELECT CLOCK_TIMESTAMP(), 'All Done';
+
--- /dev/null
+-- Revert kcls-evergreen:aged-money-data-migration from pg
+
+BEGIN;
+
+-- XXX Add DDLs here.
+
+COMMIT;
all-circs-slim-backport [aged-billings-payments] 2018-02-08T15:09:53Z Bill Erickson,,, <berick@kcls-dev-local> # Backport slim all circs view
lost-paid-receipts [all-circs-slim-backport] 2017-07-03T20:10:59Z Bill Erickson,,, <berick@kcls-dev-local> # Lost/Paid tracking and receipts
lost-paid-receipts-data [lost-paid-receipts] 2017-08-02T15:28:08Z Bill Erickson,,, <berick@kcls-dev-local> # Lost/Paid permissions and receipts
+aged-money-purge [lost-paid-receipts-data] 2018-10-16T19:33:11Z Bill Erickson,,, <berick@kcls-dev> # aged billing/payment migration
stock-browse-schema [ecard-notice-validator] 2018-08-31T15:22:58Z Bill Erickson,,, <berick@kcls-dev-local> # Recover stock browse data tables, etc.
stock-browse-headings-report [stock-browse-schema] 2018-10-04T15:56:18Z Bill Erickson,,, <berick@kcls-dev> # New heading report updates for stock browse
stock-browse-cleanup [stock-browse-schema] 2018-10-03T18:05:49Z Bill Erickson,,, <berick@kcls-dev> # Delete old browse data