From dd50dda3c081d7da2e227a51d0229a110a7ff964 Mon Sep 17 00:00:00 2001 From: miker Date: Sat, 19 Jul 2008 00:58:02 +0000 Subject: [PATCH] allow circ.reshelving_complete.interval ou setting to override the default reshelving delay git-svn-id: svn://svn.open-ils.org/ILS/trunk@10078 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../Application/Storage/Publisher/action.pm | 40 ++++++++++--------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/action.pm b/Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/action.pm index 015d4bc9f5..8b0199f888 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/action.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/action.pm @@ -121,30 +121,34 @@ sub complete_reshelving { throw OpenSRF::EX::InvalidArg ("I need an interval of more than 0 seconds!") unless (interval_to_seconds( $window )); + my $setting = actor::org_unit_setting->table; my $circ = action::circulation->table; my $cp = asset::copy->table; my $sql = <<" SQL"; UPDATE $cp SET status = 0 - WHERE id IN - ( SELECT id FROM ( - SELECT cp.id, MAX(circ.checkin_time) - FROM $cp cp - JOIN $circ circ ON (circ.target_copy = cp.id) - WHERE circ.checkin_time IS NOT NULL - AND cp.status = 7 - GROUP BY 1 - HAVING MAX(circ.checkin_time) < NOW() - CAST(? AS INTERVAL) - ) AS foo - ) - OR id IN - ( SELECT cp.id - FROM $cp cp - LEFT JOIN $circ circ ON (circ.target_copy = cp.id AND circ.id IS NULL) - WHERE cp.status = 7 - AND cp.create_date < NOW() - CAST(? AS INTERVAL) - ) + WHERE id IN ( + SELECT id + FROM (SELECT cp.id, MAX(circ.checkin_time) + FROM $cp cp + JOIN $circ circ ON (circ.target_copy = cp.id) + LEFT JOIN $setting setting + ON (cp.circ_lib = setting.org_unit AND setting.name = 'circ.reshelving_complete.interval') + WHERE circ.checkin_time IS NOT NULL + AND cp.status = 7 + GROUP BY 1 + HAVING MAX(circ.checkin_time) < NOW() - CAST( COALESCE( BTRIM( setting.value,'"' ), ? ) AS INTERVAL) + ) AS foo + UNION ALL + SELECT cp.id + FROM $cp cp + LEFT JOIN $setting setting + ON (cp.circ_lib = setting.org_unit AND setting.name = 'circ.reshelving_complete.interval') + LEFT JOIN $circ circ ON (circ.target_copy = cp.id AND circ.id IS NULL) + WHERE cp.status = 7 + AND cp.create_date < NOW() - CAST( COALESCE( BTRIM( setting.value,'"' ), ? ) AS INTERVAL) + ) SQL my $sth = action::circulation->db_Main->prepare_cached($sql); -- 2.43.2