When capturing or canceling a hold, we can clear the hold-copy-map
with a trigger, saving the time of the user, and making the business
logic simpler.
LP#
1386347 copy map trigger wants a RETURN
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Conflicts:
Open-ILS/src/sql/Pg/090.schema.action.sql
--- /dev/null
+BEGIN;
+
+CREATE OR REPLACE FUNCTION action.hold_request_clear_map () RETURNS TRIGGER AS $$
+BEGIN
+ DELETE FROM action.hold_copy_map WHERE hold = NEW.id;
+ RETURN NEW;
+END;
+$$ LANGUAGE PLPGSQL;
+
+CREATE TRIGGER hold_request_clear_map_tgr
+ AFTER UPDATE ON action.hold_request
+ FOR EACH ROW
+ WHEN (
+ (NEW.cancel_time IS NOT NULL AND OLD.cancel_time IS NULL)
+ OR (NEW.capture_time IS NOT NULL AND OLD.capture_time IS NULL)
+ )
+ EXECUTE PROCEDURE action.hold_request_clear_map();
+
+COMMIT;
+