CREATE TRIGGER vendor_before_delete_clear_follow_ups
AFTER DELETE ON vendor
FOR EACH ROW EXECUTE PROCEDURE follow_up_delete_when_customer_vendor_is_deleted_trigger();
+
+-- ============================================================
+
+CREATE OR REPLACE FUNCTION follow_up_close_when_oe_closed_trigger()
+RETURNS TRIGGER AS $$
+ BEGIN
+ IF COALESCE(NEW.closed, FALSE) AND NOT COALESCE(OLD.closed, FALSE) THEN
+ UPDATE follow_ups
+ SET done = TRUE
+ WHERE id IN (
+ SELECT follow_up_id
+ FROM follow_up_links
+ WHERE (trans_id = NEW.id)
+ AND (trans_type IN ('sales_quotation', 'sales_order', 'sales_delivery_order',
+ 'request_quotation', 'purchase_order', 'purchase_delivery_order'))
+ );
+ END IF;
+
+ RETURN NEW;
+ END;
+$$ LANGUAGE plpgsql;
+
+DROP TRIGGER IF EXISTS oe_on_update_close_follow_up ON oe;
+
+CREATE TRIGGER oe_on_update_close_follow_up
+AFTER UPDATE ON oe
+FOR EACH ROW EXECUTE PROCEDURE follow_up_close_when_oe_closed_trigger();
+
+DROP TRIGGER IF EXISTS delivery_orders_on_update_close_follow_up ON delivery_orders;
+
+CREATE TRIGGER delivery_orders_on_update_close_follow_up
+AFTER UPDATE ON delivery_orders
+FOR EACH ROW EXECUTE PROCEDURE follow_up_close_when_oe_closed_trigger();