From 4b94821578792b6494278672f6d8d3a4f9c0b4cc Mon Sep 17 00:00:00 2001 From: Jason Stephenson Date: Sun, 8 Sep 2013 13:20:56 -0400 Subject: [PATCH] Alter asset.acp_status_changed function. It should only change status_changed_time if NEW.status_changed_time is NULL or equal to OLD.status_changed_time. Signed-off-by: Jason Stephenson --- Open-ILS/src/sql/Pg/040.schema.asset.sql | 4 +++- .../sql/Pg/upgrade/XXXX.function.acp_status_changed.sql | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.function.acp_status_changed.sql diff --git a/Open-ILS/src/sql/Pg/040.schema.asset.sql b/Open-ILS/src/sql/Pg/040.schema.asset.sql index dea51fd9c7..8996f5b5b1 100644 --- a/Open-ILS/src/sql/Pg/040.schema.asset.sql +++ b/Open-ILS/src/sql/Pg/040.schema.asset.sql @@ -138,7 +138,9 @@ CREATE OR REPLACE FUNCTION asset.acp_status_changed() RETURNS TRIGGER AS $$ BEGIN IF NEW.status <> OLD.status AND NOT (NEW.status = 0 AND OLD.status = 7) THEN - NEW.status_changed_time := now(); + IF NEW.status_changed_time IS NULL OR OLD.status_changed_time = NEW.status_changed_time THEN + NEW.status_changed_time := now(); + END IF; IF NEW.active_date IS NULL AND NEW.status IN (SELECT id FROM config.copy_status WHERE copy_active = true) THEN NEW.active_date := now(); END IF; diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.function.acp_status_changed.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.function.acp_status_changed.sql new file mode 100644 index 0000000000..1ea718ff5b --- /dev/null +++ b/Open-ILS/src/sql/Pg/upgrade/XXXX.function.acp_status_changed.sql @@ -0,0 +1,14 @@ +CREATE OR REPLACE FUNCTION asset.acp_status_changed() +RETURNS TRIGGER AS $$ +BEGIN + IF NEW.status <> OLD.status AND NOT (NEW.status = 0 AND OLD.status = 7) THEN + IF NEW.status_changed_time IS NULL OR OLD.status_changed_time = NEW.status_changed_time THEN + NEW.status_changed_time := now(); + END IF; + IF NEW.active_date IS NULL AND NEW.status IN (SELECT id FROM config.copy_status WHERE copy_active = true) THEN + NEW.active_date := now(); + END IF; + END IF; + RETURN NEW; +END; +$$ LANGUAGE plpgsql; -- 2.11.0