--- /dev/null
+BEGIN;
+
+CREATE OR REPLACE FUNCTION money.materialized_summary_billing_del () RETURNS TRIGGER AS $$
+DECLARE
+ prev_billing money.billing%ROWTYPE;
+ old_billing money.billing%ROWTYPE;
+BEGIN
+ SELECT * INTO prev_billing FROM money.billing WHERE xact = OLD.xact AND NOT voided ORDER BY billing_ts DESC LIMIT 1 OFFSET 1;
+ SELECT * INTO old_billing FROM money.billing WHERE xact = OLD.xact AND NOT voided ORDER BY billing_ts DESC LIMIT 1;
+
+ IF OLD.id = old_billing.id THEN
+ UPDATE money.materialized_billable_xact_summary
+ SET last_billing_ts = prev_billing.billing_ts,
+ last_billing_note = prev_billing.note,
+ last_billing_type = prev_billing.billing_type
+ WHERE id = OLD.xact;
+ END IF;
+
+ IF NOT OLD.voided THEN
+ UPDATE money.materialized_billable_xact_summary
+ SET total_owed = total_owed - OLD.amount,
+ balance_owed = balance_owed - OLD.amount
+ WHERE id = OLD.xact;
+ END IF;
+
+ RETURN OLD;
+END;
+$$ LANGUAGE PLPGSQL;
+
+COMMIT;
--- /dev/null
+-- Revert evergreen:schema.materialized_billing_summary_delete_trigger from pg
+
+BEGIN;
+
+/* Recover previous version of money.materialized_summary_billing_del */
+
+CREATE OR REPLACE FUNCTION money.materialized_summary_billing_del () RETURNS TRIGGER AS $$
+DECLARE
+ prev_billing money.billing%ROWTYPE;
+ old_billing money.billing%ROWTYPE;
+BEGIN
+ SELECT * INTO prev_billing FROM money.billing
+ WHERE xact = OLD.xact AND NOT voided
+ ORDER BY billing_ts DESC LIMIT 1 OFFSET 1;
+
+ SELECT * INTO old_billing FROM money.billing
+ WHERE xact = OLD.xact AND NOT voided
+ ORDER BY billing_ts DESC LIMIT 1;
+
+ IF OLD.id = old_billing.id THEN
+ UPDATE money.materialized_billable_xact_summary
+ SET last_billing_ts = prev_billing.billing_ts,
+ last_billing_note = prev_billing.note,
+ last_billing_type = prev_billing.billing_type
+ WHERE id = OLD.xact;
+ END IF;
+
+ IF NOT OLD.voided THEN
+ UPDATE money.materialized_billable_xact_summary
+ SET total_owed = total_owed - OLD.amount,
+ balance_owed = balance_owed + OLD.amount
+ WHERE id = OLD.xact;
+ END IF;
+
+ RETURN OLD;
+END;
+$$ LANGUAGE PLPGSQL;
+
+COMMIT;
function.lpad_number_fix [schema.batch_settings_retrieve_function] 2015-11-30T20:38:26Z Bill Erickson <berickxx@gmail.com> # function.lpad_number_fix
schema.fake-delete-parts [function.lpad_number_fix] 2015-11-30T20:38:51Z Bill Erickson <berickxx@gmail.com> # schema.fake-delete-parts
schema.no_delete_acq_cancel_reasons [schema.fake-delete-parts] 2015-11-30T20:39:23Z Bill Erickson <berickxx@gmail.com> # schema.no_delete_acq_cancel_reasons
+schema.materialized_billing_summary_delete_trigger [schema.no_delete_acq_cancel_reasons] 2015-12-29T15:15:30Z Bill Erickson <berickxx@gmail.com> # Cross porting LP#1319998 schema.materialized_billing_summary_delete_trigger
--- /dev/null
+-- Verify evergreen:schema.materialized_billing_summary_delete_trigger on pg
+
+BEGIN;
+
+/*
+Confirm modified money.materialized_summary_billing_del deployed.
+
+The SELECT below will die with a divide-by-zero and fail
+verification if the function was not successfully modified.
+*/
+
+SELECT 1/COUNT(*)
+ FROM pg_catalog.pg_proc
+ WHERE proname = 'materialized_summary_billing_del' AND
+ pg_get_functiondef(oid) LIKE $$%balance_owed - OLD.amount%$$;
+
+ROLLBACK;