X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=sql%2FPg-upgrade2%2Fdelete_close_follow_ups_when_order_is_deleted_closed.sql;h=f2963f5f3d70c3958b66f83c06c51c1804a5a137;hb=371ab59da0ebb21a8438cab732530e1cf5f9471c;hp=ec96729f972051604cad7aea1baff94588412f5a;hpb=bd389ba9a00c3b56958b9c541fa0ca0e6ebcd6bf;p=kivitendo-erp.git 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..f2963f5f3 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 @@ -1,9 +1,8 @@ -- @tag: delete_close_follow_ups_when_order_is_deleted_closed --- @description: Wiedervorlagen lößchen/schließen, wenn dazugehörige Belege gelöscht/geschlossen werden --- @depends: release_3_0_0 +-- @description: Wiedervorlagen löschen/schließen, wenn dazugehörige Belege gelöscht/geschlossen werden +-- @depends: delete_close_follow_ups_when_order_is_deleted_closed_fkey_deletion -ALTER TABLE follow_up_links DROP CONSTRAINT follow_up_links_follow_up_id_fkey; -ALTER TABLE follow_up_links ADD FOREIGN KEY (follow_up_id) REFERENCES follow_ups (id) ON DELETE CASCADE; +ALTER TABLE follow_up_links ADD CONSTRAINT follow_up_links_follow_up_id_fkey FOREIGN KEY (follow_up_id) REFERENCES follow_ups (id) ON DELETE CASCADE; CREATE OR REPLACE FUNCTION follow_up_delete_notes_trigger() RETURNS TRIGGER AS $$ @@ -74,3 +73,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();