"public/trigger_functions/cashrcptitem.sql",
"public/trigger_functions/cashrcptmisc.sql",
"public/trigger_functions/ccard.sql",
+ "public/trigger_functions/ccpay.sql",
"public/trigger_functions/char.sql",
"public/trigger_functions/charass.sql",
"public/trigger_functions/charopt.sql",
"public/tables/report/WarehouseMasterList.xml",
"public/tables/report/items.xml",
- "public/patches/fixacl.sql"
+ "public/patches/fixacl.sql",
+ "public/patches/populate_ccpay_card_type.sql"
]
}
--- /dev/null
+-- Issue #23459 adds ccpay_card_type. Populate it from historical ccard relations.
+UPDATE ccpay SET ccpay_card_type = (SELECT ccard_type FROM ccard WHERE ccard_id = ccpay_ccard_id)
+WHERE ccpay_ccard_id IS NOT NULL;
--- /dev/null
+CREATE OR REPLACE FUNCTION _ccpayBeforeTrigger () RETURNS TRIGGER AS $$
+-- Copyright (c) 1999-2014 by OpenMFG LLC, d/b/a xTuple.
+-- See www.xtuple.com/CPAL for the full text of the software license.
+DECLARE
+ _cardType TEXT;
+
+BEGIN
+ IF (TG_OP = 'INSERT' OR TG_OP = 'UPDATE') THEN
+ -- If ccpay_ccard_id is set, we don't care if ccpay_card_type is set,
+ -- we want to get the Card Type from ccard.
+ IF (NEW.ccpay_ccard_id IS NOT NULL) THEN
+ SELECT ccard_type INTO _cardType
+ FROM ccard
+ WHERE ccard_id = NEW.ccpay_ccard_id;
+
+ IF (_cardType IS NOT NULL) THEN
+ NEW.ccpay_card_type = _cardType;
+ END IF;
+ END IF;
+ END IF;
+
+ RETURN NEW;
+END;
+$$ LANGUAGE 'plpgsql';
+
+SELECT dropIfExists('TRIGGER', 'ccpayBeforeTrigger');
+CREATE TRIGGER ccpayBeforeTrigger BEFORE INSERT OR UPDATE ON ccpay FOR EACH ROW EXECUTE PROCEDURE _ccpayBeforeTrigger();