Issue #23459 Populate new ccpay_card_type from ccard relation.
[xtuple] / foundation-database / public / trigger_functions / ccpay.sql
1 CREATE OR REPLACE FUNCTION _ccpayBeforeTrigger () RETURNS TRIGGER AS $$
2 -- Copyright (c) 1999-2014 by OpenMFG LLC, d/b/a xTuple.
3 -- See www.xtuple.com/CPAL for the full text of the software license.
4 DECLARE
5   _cardType TEXT;
6
7 BEGIN
8   IF (TG_OP = 'INSERT' OR TG_OP = 'UPDATE') THEN
9     -- If ccpay_ccard_id is set, we don't care if ccpay_card_type is set,
10     -- we want to get the Card Type from ccard.
11     IF (NEW.ccpay_ccard_id IS NOT NULL) THEN
12       SELECT ccard_type INTO _cardType
13       FROM ccard
14       WHERE ccard_id = NEW.ccpay_ccard_id;
15
16       IF (_cardType IS NOT NULL) THEN
17         NEW.ccpay_card_type = _cardType;
18       END IF;
19     END IF;
20   END IF;
21
22   RETURN NEW;
23 END;
24 $$   LANGUAGE 'plpgsql';
25
26 SELECT dropIfExists('TRIGGER', 'ccpayBeforeTrigger');
27 CREATE TRIGGER ccpayBeforeTrigger BEFORE INSERT OR UPDATE ON ccpay FOR EACH ROW EXECUTE PROCEDURE _ccpayBeforeTrigger();