1 CREATE OR REPLACE FUNCTION _woTrigger() 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.
8 IF (TG_OP = 'INSERT') THEN
9 PERFORM postEvent('WoCreated', 'W', NEW.wo_id,
11 (NEW.wo_number || '-' || NEW.wo_subnumber),
12 NULL, NULL, NULL, NULL)
14 WHERE (itemsite_id=NEW.wo_itemsite_id)
15 AND (NEW.wo_duedate <= (CURRENT_DATE + itemsite_eventfence));
17 PERFORM postComment('ChangeLog', 'W', NEW.wo_id, 'Created');
19 IF (fetchMetricText('WONumberGeneration') IN ('A','O')) THEN
20 --- clear the number from the issue cache
21 PERFORM clearNumberIssue('WoNumber', NEW.wo_number);
27 IF (TG_OP = 'DELETE') THEN
28 PERFORM postEvent('WoCancelled', 'W', OLD.wo_id,
30 (OLD.wo_number || '-' || OLD.wo_subnumber),
31 NULL, NULL, NULL, NULL)
33 WHERE (itemsite_id=OLD.wo_itemsite_id)
34 AND (OLD.wo_duedate <= (CURRENT_DATE + itemsite_eventfence));
36 DELETE FROM docass WHERE docass_source_id = OLD.wo_id AND docass_source_type = 'W';
37 DELETE FROM docass WHERE docass_target_id = OLD.wo_id AND docass_target_type = 'W';
40 WHERE ( (comment_source='W')
41 AND (comment_source_id=OLD.wo_id) );
44 WHERE ((charass_target_type='W')
45 AND (charass_target_id=OLD.wo_id));
50 IF (TG_OP = 'UPDATE') THEN
52 IF (NEW.wo_qtyord <> OLD.wo_qtyord) THEN
53 PERFORM postEvent('WoQtyChanged', 'W', NEW.wo_id,
55 (NEW.wo_number || '-' || NEW.wo_subnumber),
56 NEW.wo_qtyord, OLD.wo_qtyord, NULL, NULL)
58 WHERE (itemsite_id=NEW.wo_itemsite_id)
59 AND ( (NEW.wo_duedate <= (CURRENT_DATE + itemsite_eventfence))
60 OR (OLD.wo_duedate <= (CURRENT_DATE + itemsite_eventfence)) );
62 PERFORM postComment( 'ChangeLog', 'W', NEW.wo_id,
63 ( 'Qty. Ordered Changed from ' || formatQty(OLD.wo_qtyord) ||
64 ' to ' || formatQty(NEW.wo_qtyord ) ) );
67 IF (NEW.wo_duedate <> OLD.wo_duedate) THEN
68 PERFORM postEvent('WoDueDateChanged', 'W', NEW.wo_id,
70 (NEW.wo_number || '-' || NEW.wo_subnumber),
71 NULL, NULL, NEW.wo_duedate, OLD.wo_duedate)
73 WHERE (itemsite_id=NEW.wo_itemsite_id)
74 AND ( (NEW.wo_duedate <= (CURRENT_DATE + itemsite_eventfence))
75 OR (OLD.wo_duedate <= (CURRENT_DATE + itemsite_eventfence)) );
77 PERFORM postComment( 'ChangeLog', 'W', NEW.wo_id,
78 ( 'Due Date Changed from ' || formatDate(OLD.wo_duedate) ||
79 ' to ' || formatDate(NEW.wo_duedate ) ) );
82 IF (NEW.wo_status <> OLD.wo_status) THEN
83 PERFORM postComment( 'ChangeLog', 'W', NEW.wo_id,
84 ('Status Changed from ' || OLD.wo_status || ' to ' || NEW.wo_status) );
91 IF (TG_OP = 'UPDATE') THEN
92 IF (NEW.wo_prj_id <> OLD.wo_prj_id) THEN
93 UPDATE wo SET wo_prj_id=NEW.wo_prj_id
94 WHERE (wo_ordtype='W')
95 AND (wo_ordid=NEW.wo_id);
102 $$ LANGUAGE 'plpgsql';
104 DROP TRIGGER IF EXISTS woTrigger ON wo;
105 CREATE TRIGGER woTrigger BEFORE INSERT OR UPDATE OR DELETE ON wo FOR EACH ROW EXECUTE PROCEDURE _woTrigger();