From: Thomas Berezansky Date: Tue, 26 Aug 2014 16:14:11 +0000 (-0400) Subject: LP#778989: Add circ lib to location fixer X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=138c3da573686402c2a820645c60960437ed150f;p=evergreen%2Fpines.git LP#778989: Add circ lib to location fixer Because the circ lib is valid for picking locations. Signed-off-by: Thomas Berezansky Signed-off-by: Chris Sharp Signed-off-by: Ben Shum --- diff --git a/Open-ILS/src/sql/Pg/040.schema.asset.sql b/Open-ILS/src/sql/Pg/040.schema.asset.sql index 3eaea6b38a..2381fdb543 100644 --- a/Open-ILS/src/sql/Pg/040.schema.asset.sql +++ b/Open-ILS/src/sql/Pg/040.schema.asset.sql @@ -175,11 +175,14 @@ DECLARE new_copy_location INT; BEGIN IF (TG_OP = 'UPDATE') THEN - IF NEW.location = OLD.location AND NEW.call_number = OLD.call_number THEN + IF NEW.location = OLD.location AND NEW.call_number = OLD.call_number AND NEW.circ_lib = OLD.circ_lib THEN RETURN NEW; END IF; END IF; SELECT INTO new_copy_location acpl.id FROM asset.copy_location acpl JOIN actor.org_unit_ancestors_distance((SELECT owning_lib FROM asset.call_number WHERE id = NEW.call_number)) aouad ON acpl.owning_lib = aouad.id WHERE name = (SELECT name FROM asset.copy_location WHERE id = NEW.location) ORDER BY distance LIMIT 1; + IF new_copy_location IS NULL THEN + SELECT INTO new_copy_location acpl.id FROM asset.copy_location acpl JOIN actor.org_unit_ancestors_distance(NEW.circ_lib) aouad ON acpl.owning_lib = aouad.id WHERE name = (SELECT name FROM asset.copy_location WHERE id = NEW.location) ORDER BY distance LIMIT 1; + END IF; IF new_copy_location IS NOT NULL THEN NEW.location = new_copy_location; END IF; @@ -188,7 +191,7 @@ END; $$ LANGUAGE plpgsql; CREATE TRIGGER acp_location_fixer_trig - BEFORE INSERT OR UPDATE ON asset.copy + BEFORE INSERT OR UPDATE OF location, call_number, circ_lib ON asset.copy FOR EACH ROW EXECUTE PROCEDURE asset.acp_location_fixer(); CREATE TABLE asset.stat_cat_sip_fields ( diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.correct_copy_location.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.correct_copy_location.sql index 4a5d4d0a37..c0a8fc5fb4 100644 --- a/Open-ILS/src/sql/Pg/upgrade/XXXX.correct_copy_location.sql +++ b/Open-ILS/src/sql/Pg/upgrade/XXXX.correct_copy_location.sql @@ -4,11 +4,14 @@ DECLARE new_copy_location INT; BEGIN IF (TG_OP = 'UPDATE') THEN - IF NEW.location = OLD.location AND NEW.call_number = OLD.call_number THEN + IF NEW.location = OLD.location AND NEW.call_number = OLD.call_number AND NEW.circ_lib = OLD.circ_lib THEN RETURN NEW; END IF; END IF; SELECT INTO new_copy_location acpl.id FROM asset.copy_location acpl JOIN actor.org_unit_ancestors_distance((SELECT owning_lib FROM asset.call_number WHERE id = NEW.call_number)) aouad ON acpl.owning_lib = aouad.id WHERE name = (SELECT name FROM asset.copy_location WHERE id = NEW.location) ORDER BY distance LIMIT 1; + IF new_copy_location IS NULL THEN + SELECT INTO new_copy_location acpl.id FROM asset.copy_location acpl JOIN actor.org_unit_ancestors_distance(NEW.circ_lib) aouad ON acpl.owning_lib = aouad.id WHERE name = (SELECT name FROM asset.copy_location WHERE id = NEW.location) ORDER BY distance LIMIT 1; + END IF; IF new_copy_location IS NOT NULL THEN NEW.location = new_copy_location; END IF; @@ -17,6 +20,6 @@ END; $$ LANGUAGE plpgsql; CREATE TRIGGER acp_location_fixer_trig - BEFORE INSERT OR UPDATE ON asset.copy + BEFORE INSERT OR UPDATE OF location, call_number, circ_lib ON asset.copy FOR EACH ROW EXECUTE PROCEDURE asset.acp_location_fixer();