From: Moritz Bunkus Date: Mon, 6 Jan 2014 16:13:28 +0000 (+0100) Subject: Wiedervorlagen schließen, wenn dazugehörige Belege geschlossen werden X-Git-Tag: release-3.1.0beta1~22^2~51^2 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=d41acd2d498242ad691ea870fd06690a2fbfb253;p=kivitendo-erp.git Wiedervorlagen schließen, wenn dazugehörige Belege geschlossen werden Siehe #2310. --- diff --git a/sql/Pg-upgrade2/delete_close_follow_ups_when_order_is_deleted_closed.sql b/sql/Pg-upgrade2/delete_close_follow_ups_when_order_is_deleted_closed.sql index ec96729f9..f22e68216 100644 --- a/sql/Pg-upgrade2/delete_close_follow_ups_when_order_is_deleted_closed.sql +++ b/sql/Pg-upgrade2/delete_close_follow_ups_when_order_is_deleted_closed.sql @@ -74,3 +74,36 @@ FOR EACH ROW EXECUTE PROCEDURE follow_up_delete_when_customer_vendor_is_deleted 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();