backporting frozen hold auto-thaw support before 1.2.0 ... should have been there...
authormiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Wed, 12 Sep 2007 16:07:01 +0000 (16:07 +0000)
committermiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Wed, 12 Sep 2007 16:07:01 +0000 (16:07 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/branches/rel_1_2@7766 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/examples/fm_IDL.xml
Open-ILS/src/perlmods/OpenILS/Application/Storage/CDBI/action.pm
Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/action.pm
Open-ILS/src/sql/Pg/090.schema.action.sql
Open-ILS/src/support-scripts/thaw_expired_frozen_holds.srfsh [new file with mode: 0755]

index aaa5ea4..f6bf30c 100644 (file)
                        <field reporter:label="Bib Record link" name="bib_rec" oils_obj:array_position="29" oils_persist:virtual="true" reporter:datatype="link"/>
                        <field reporter:label="Eligible Copies" name="eligible_copies" oils_obj:array_position="30" oils_persist:virtual="true" reporter:datatype="link"/>
                        <field reporter:label="Currently Frozen" name="frozen" oils_obj:array_position="31" oils_persist:virtual="false" reporter:datatype="bool"/>
+                       <field reporter:label="Thaw Date (if frozen)" name="thaw_date" oils_obj:array_position="32" oils_persist:virtual="false" reporter:datatype="timestamp"/>
                </fields>
                <links>
                        <link field="fulfillment_lib" reltype="has_a" key="id" map="" class="aou"/>
index 2f9f852..c8d6bec 100644 (file)
@@ -96,7 +96,7 @@ __PACKAGE__->columns(Essential => qw/request_time capture_time fulfillment_time
                                     prev_check_time expire_time requestor usr
                                     hold_type holdable_formats target cancel_time
                                     phone_notify email_notify selection_depth
-                                    pickup_lib current_copy request_lib frozen
+                                    pickup_lib current_copy request_lib frozen thaw_date
                                     fulfillment_staff fulfillment_lib selection_ou/);
 
 #-------------------------------------------------------------------------------
index 04f04ea..06f2b15 100644 (file)
@@ -160,6 +160,30 @@ __PACKAGE__->register_method(
        method          => 'complete_reshelving',
 );
 
+sub auto_thaw_frozen_holds {
+       my $self = shift;
+       my $client = shift;
+
+       local $OpenILS::Application::Storage::WRITE = 1;
+
+       my $holds = action::hold_request->table;
+
+       my $sql = "UPDATE $holds SET frozen = FALSE WHERE frozen IS TRUE AND thaw_date < NOW();";
+
+       my $sth = action::hold_request->db_Main->prepare_cached($sql);
+       $sth->execute();
+
+       return $sth->rows;
+
+}
+__PACKAGE__->register_method(
+       api_name        => 'open-ils.storage.action.hold_request.thaw_expired_frozen',
+       api_level       => 1,
+       stream          => 0,
+       argc            => 0,
+       method          => 'auto_thaw_frozen_holds',
+);
+
 sub grab_overdue {
        my $self = shift;
        my $client = shift;
index 029867d..0e06d3b 100644 (file)
@@ -179,7 +179,8 @@ CREATE TABLE action.hold_request (
        holdable_formats        TEXT,
        phone_notify            TEXT,
        email_notify            BOOL                            NOT NULL DEFAULT TRUE,
-       frozen                  BOOL                            NOT NULL DEFAULT FALSE
+       frozen                  BOOL                            NOT NULL DEFAULT FALSE,
+       thaw_date               TIMESTAMP WITH TIME ZONE
 );
 
 CREATE INDEX hold_request_target_idx ON action.hold_request (target);
diff --git a/Open-ILS/src/support-scripts/thaw_expired_frozen_holds.srfsh b/Open-ILS/src/support-scripts/thaw_expired_frozen_holds.srfsh
new file mode 100755 (executable)
index 0000000..96d6828
--- /dev/null
@@ -0,0 +1,2 @@
+#!/openils/bin/srfsh
+request open-ils.storage open-ils.storage.action.hold_request.thaw_expired_frozen