2 CREATE OR REPLACE FUNCTION _packBeforeTrigger() RETURNS TRIGGER AS $$
3 -- Copyright (c) 1999-2014 by OpenMFG LLC, d/b/a xTuple.
4 -- See www.xtuple.com/CPAL for the full text of the software license.
8 SELECT cmnttype_id INTO _cmnttypeid
10 WHERE (cmnttype_name='ChangeLog');
12 IF ((TG_OP = 'INSERT') AND (NEW.pack_head_id) IS NOT NULL)THEN
13 PERFORM postComment(_cmnttypeid, 'S', NEW.pack_head_id, 'Added to Packing List Batch');
16 IF ((TG_OP = 'INSERT') OR (TG_OP = 'UPDATE')) THEN
17 IF (NEW.pack_shiphead_id IS NOT NULL
18 AND NEW.pack_shiphead_id NOT IN (SELECT shiphead_id
20 WHERE (shiphead_order_id=NEW.pack_head_id)
21 AND (shiphead_order_type=NEW.pack_head_type))) THEN
22 RAISE EXCEPTION 'Shipment does not exist for % id %',
23 NEW.pack_head_type, NEW.pack_head_id;
27 IF (NEW.pack_head_type = 'SO'
28 AND NEW.pack_head_id IN (SELECT cohead_id FROM cohead)) THEN
31 ELSEIF (NEW.pack_head_type = 'TO') THEN
32 IF (NOT fetchMetricBool('MultiWhs')) THEN
33 RAISE EXCEPTION 'Transfer Orders are not supported by this version of the application';
34 ELSEIF (NEW.pack_head_id IN (SELECT tohead_id FROM tohead)) THEN
39 RAISE EXCEPTION '% with id % does not exist',
40 NEW.pack_head_type, NEW.pack_head_id;
47 $$ LANGUAGE 'plpgsql';
49 DROP TRIGGER packBeforeTrigger ON pack;
50 CREATE TRIGGER packBeforeTrigger BEFORE INSERT OR UPDATE ON pack FOR EACH ROW EXECUTE PROCEDURE _packBeforeTrigger();