email A/T templates for Acquisition User Requests, supporting ML tweaks, and testing...
authorphasefx <phasefx@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 19 Feb 2010 20:56:38 +0000 (20:56 +0000)
committerphasefx <phasefx@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 19 Feb 2010 20:56:38 +0000 (20:56 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@15602 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/perlmods/OpenILS/Application/Trigger/Validator/Acq.pm
Open-ILS/src/perlmods/OpenILS/Application/Trigger/Validator/Acq/UserRequestCancelled.pm [new file with mode: 0644]
Open-ILS/src/perlmods/OpenILS/Application/Trigger/Validator/Acq/UserRequestOrdered.pm [new file with mode: 0644]
Open-ILS/src/perlmods/OpenILS/Application/Trigger/Validator/Acq/UserRequestReceived.pm [new file with mode: 0644]
Open-ILS/src/sql/Pg/002.schema.config.sql
Open-ILS/src/sql/Pg/upgrade/0165.data.acq.patron_requests.sql [new file with mode: 0644]
Open-ILS/src/support-scripts/test-scripts/print_aur.pl [new file with mode: 0755]

index 94f278b..2aaa25b 100644 (file)
@@ -2,24 +2,6 @@ package OpenILS::Application::Trigger::Validator::Acq;
 use strict; use warnings;
 use OpenSRF::Utils::Logger qw/:logger/;
 
-sub UserRequestOrdered {
-    my $self = shift;
-    my $env = shift;
-    return get_lineitem_from_req($self, $env)->state eq 'on-order';
-}
-
-sub UserRequestReceived {
-    my $self = shift;
-    my $env = shift;
-    return get_lineitem_from_req($self, $env)->state eq 'received';
-}
-
-sub UserRequestCancelled {
-    my $self = shift;
-    my $env = shift;
-    return get_lineitem_from_req($self, $env)->state eq 'cancelled';
-}
-
 sub get_lineitem_from_req {
     my($self, $env) = @_;
     my $req = $env->{target};
diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Trigger/Validator/Acq/UserRequestCancelled.pm b/Open-ILS/src/perlmods/OpenILS/Application/Trigger/Validator/Acq/UserRequestCancelled.pm
new file mode 100644 (file)
index 0000000..6cbf13e
--- /dev/null
@@ -0,0 +1,12 @@
+package OpenILS::Application::Trigger::Validator::Acq::UserRequestCancelled;
+use strict; use warnings;
+use OpenSRF::Utils::Logger qw/:logger/;
+use OpenILS::Application::Trigger::Validator::Acq;
+
+sub handler {
+    my $self = shift;
+    my $env = shift;
+    return OpenILS::Application::Trigger::Validator::Acq::get_lineitem_from_req($self, $env)->state eq 'cancelled';
+}
+
+1;
diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Trigger/Validator/Acq/UserRequestOrdered.pm b/Open-ILS/src/perlmods/OpenILS/Application/Trigger/Validator/Acq/UserRequestOrdered.pm
new file mode 100644 (file)
index 0000000..a2552af
--- /dev/null
@@ -0,0 +1,12 @@
+package OpenILS::Application::Trigger::Validator::Acq::UserRequestOrdered;
+use strict; use warnings;
+use OpenSRF::Utils::Logger qw/:logger/;
+use OpenILS::Application::Trigger::Validator::Acq;
+
+sub handler {
+    my $self = shift;
+    my $env = shift;
+    return OpenILS::Application::Trigger::Validator::Acq::get_lineitem_from_req($self, $env)->state eq 'on-order';
+}
+
+1;
diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Trigger/Validator/Acq/UserRequestReceived.pm b/Open-ILS/src/perlmods/OpenILS/Application/Trigger/Validator/Acq/UserRequestReceived.pm
new file mode 100644 (file)
index 0000000..d43e094
--- /dev/null
@@ -0,0 +1,12 @@
+package OpenILS::Application::Trigger::Validator::Acq::UserRequestReceived;
+use strict; use warnings;
+use OpenSRF::Utils::Logger qw/:logger/;
+use OpenILS::Application::Trigger::Validator::Acq;
+
+sub handler {
+    my $self = shift;
+    my $env = shift;
+    return OpenILS::Application::Trigger::Validator::Acq::get_lineitem_from_req($self, $env)->state eq 'received';
+}
+
+1;
index 0afe83e..3c684a0 100644 (file)
@@ -51,7 +51,7 @@ CREATE TABLE config.upgrade_log (
     install_date    TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW()
 );
 
-INSERT INTO config.upgrade_log (version) VALUES ('0164'); -- Galen Charlton
+INSERT INTO config.upgrade_log (version) VALUES ('0165'); -- phasefx
 
 CREATE TABLE config.bib_source (
        id              SERIAL  PRIMARY KEY,
diff --git a/Open-ILS/src/sql/Pg/upgrade/0165.data.acq.patron_requests.sql b/Open-ILS/src/sql/Pg/upgrade/0165.data.acq.patron_requests.sql
new file mode 100644 (file)
index 0000000..9c38ff1
--- /dev/null
@@ -0,0 +1,169 @@
+BEGIN;
+
+INSERT INTO config.upgrade_log (version) VALUES ('0165'); -- phasefx
+
+INSERT INTO action_trigger.hook (
+        key,
+        core_type,
+        description,
+        passive
+    ) VALUES (
+        'aur.ordered',
+        'aur',
+        'A patron acquisition request has been marked On-Order.',
+        TRUE
+    ), (
+        'aur.received',
+        'aur',
+        'A patron acquisition request has been marked Received.',
+        TRUE
+    ), (
+        'aur.cancelled',
+        'aur',
+        'A patron acquisition request has been marked Cancelled.',
+        TRUE
+    );
+
+INSERT INTO action_trigger.validator (module,description) VALUES (
+        'Acq::UserRequestOrdered',
+        'Tests to see if the corresponding Line Item has a state of "on-order".'
+    ), (
+        'Acq::UserRequestReceived',
+        'Tests to see if the corresponding Line Item has a state of "received".'
+    ), (
+        'Acq::UserRequestCancelled',
+        'Tests to see if the corresponding Line Item has a state of "cancelled".'
+    );
+
+INSERT INTO action_trigger.event_definition (
+        id,
+        active,
+        owner,
+        name,
+        hook,
+        validator,
+        reactor,
+        template
+    ) VALUES (
+        15,
+        FALSE,
+        1,
+        'Email Notice: Patron Acquisition Request marked On-Order.',
+        'aur.ordered',
+        'Acq::UserRequestOrdered',
+        'SendEmail',
+$$
+[%- USE date -%]
+[%- SET li = target.lineitem; -%]
+[%- SET user = target.usr -%]
+[%- SET title = helpers.get_li_attr("title", "", li.attributes) %]
+[%- SET author = helpers.get_li_attr("author", "", li.attributes) %]
+[%- SET edition = helpers.get_li_attr("edition", "", li.attributes) %]
+[%- SET isbn = helpers.get_li_attr("isbn", "", li.attributes) %]
+[%- SET publisher = helpers.get_li_attr("publisher", "", li.attributes) -%]
+[%- SET pubdate = helpers.get_li_attr("pubdate", "", li.attributes) -%]
+
+To: [%- params.recipient_email || user.email %]
+From: [%- params.sender_email || default_sender %]
+Subject: Acquisition Request Notification
+
+Dear [% user.family_name %], [% user.first_given_name %]
+Our records indicate the following acquisition request has been placed on order.
+
+Title: [% title %]
+[% IF author %]Author: [% author %][% END %]
+[% IF edition %]Edition: [% edition %][% END %]
+[% IF isbn %]ISBN: [% isbn %][% END %]
+[% IF publisher %]Publisher: [% publisher %][% END %]
+[% IF pubdate %]Publication Date: [% pubdate %][% END %]
+Lineitem ID: [% li.id %]
+$$
+    ), (
+        16,
+        FALSE,
+        1,
+        'Email Notice: Patron Acquisition Request marked Received.',
+        'aur.received',
+        'Acq::UserRequestReceived',
+        'SendEmail',
+$$
+[%- USE date -%]
+[%- SET li = target.lineitem; -%]
+[%- SET user = target.usr -%]
+[%- SET title = helpers.get_li_attr("title", "", li.attributes) %]
+[%- SET author = helpers.get_li_attr("author", "", li.attributes) %]
+[%- SET edition = helpers.get_li_attr("edition", "", li.attributes) %]
+[%- SET isbn = helpers.get_li_attr("isbn", "", li.attributes) %]
+[%- SET publisher = helpers.get_li_attr("publisher", "", li.attributes) -%]
+[%- SET pubdate = helpers.get_li_attr("pubdate", "", li.attributes) -%]
+
+To: [%- params.recipient_email || user.email %]
+From: [%- params.sender_email || default_sender %]
+Subject: Acquisition Request Notification
+
+Dear [% user.family_name %], [% user.first_given_name %]
+Our records indicate the materials for the following acquisition request have been received.
+
+Title: [% title %]
+[% IF author %]Author: [% author %][% END %]
+[% IF edition %]Edition: [% edition %][% END %]
+[% IF isbn %]ISBN: [% isbn %][% END %]
+[% IF publisher %]Publisher: [% publisher %][% END %]
+[% IF pubdate %]Publication Date: [% pubdate %][% END %]
+Lineitem ID: [% li.id %]
+$$
+    ), (
+        17,
+        FALSE,
+        1,
+        'Email Notice: Patron Acquisition Request marked Cancelled.',
+        'aur.cancelled',
+        'Acq::UserRequestCancelled',
+        'SendEmail',
+$$
+[%- USE date -%]
+[%- SET li = target.lineitem; -%]
+[%- SET user = target.usr -%]
+[%- SET title = helpers.get_li_attr("title", "", li.attributes) %]
+[%- SET author = helpers.get_li_attr("author", "", li.attributes) %]
+[%- SET edition = helpers.get_li_attr("edition", "", li.attributes) %]
+[%- SET isbn = helpers.get_li_attr("isbn", "", li.attributes) %]
+[%- SET publisher = helpers.get_li_attr("publisher", "", li.attributes) -%]
+[%- SET pubdate = helpers.get_li_attr("pubdate", "", li.attributes) -%]
+
+To: [%- params.recipient_email || user.email %]
+From: [%- params.sender_email || default_sender %]
+Subject: Acquisition Request Notification
+
+Dear [% user.family_name %], [% user.first_given_name %]
+Our records indicate the following acquisition request has been cancelled.
+
+Title: [% title %]
+[% IF author %]Author: [% author %][% END %]
+[% IF edition %]Edition: [% edition %][% END %]
+[% IF isbn %]ISBN: [% isbn %][% END %]
+[% IF publisher %]Publisher: [% publisher %][% END %]
+[% IF pubdate %]Publication Date: [% pubdate %][% END %]
+Lineitem ID: [% li.id %]
+$$
+    );
+
+INSERT INTO action_trigger.environment (
+        event_def,
+        path
+    ) VALUES 
+        ( 15, 'lineitem' ),
+        ( 15, 'lineitem.attributes' ),
+        ( 15, 'usr' ),
+
+        ( 16, 'lineitem' ),
+        ( 16, 'lineitem.attributes' ),
+        ( 16, 'usr' ),
+
+        ( 17, 'lineitem' ),
+        ( 17, 'lineitem.attributes' ),
+        ( 17, 'usr' )
+    ;
+
+COMMIT;
+
diff --git a/Open-ILS/src/support-scripts/test-scripts/print_aur.pl b/Open-ILS/src/support-scripts/test-scripts/print_aur.pl
new file mode 100755 (executable)
index 0000000..2eb69e4
--- /dev/null
@@ -0,0 +1,56 @@
+#!/usr/bin/perl
+
+#----------------------------------------------------------------
+# Print AUR
+#----------------------------------------------------------------
+
+require '../oils_header.pl';
+use vars qw/$apputils/;
+use strict;
+use Data::Dumper;
+my $config             = shift; 
+my $username   = shift || 'admin';
+my $password   = shift || 'open-ils';
+my $aur_id       = shift;
+my $hook        = shift || 'aur.ordered';
+
+osrf_connect($config);
+oils_login($username, $password);
+my $e = OpenILS::Utils::CStoreEditor->new;
+
+my $aur = $e->retrieve_acq_user_request($aur_id) or oils_event_die($e->event);
+my $orgs = $apputils->get_org_ancestors($aur->pickup_lib);
+my $defs = $e->search_action_trigger_event_definition({hook => $hook, owner => $orgs});
+$defs = [sort { $a->id cmp $b->id } @$defs ]; # this is a brittle hack, but.. meh
+my $def = pop @$defs;
+print "using def " . $def->id . " at org_unit " . $def->owner . "\n";
+
+die "No event_definition found with hook $hook\n" unless $def;
+
+my $event_id = $apputils->simplereq(
+    'open-ils.trigger', 
+    'open-ils.trigger.event.autocreate.by_definition.include_inactive',
+    $def->id, $aur, $aur->pickup_lib);
+
+
+my $result = $apputils->simplereq(
+    'open-ils.trigger',
+    'open-ils.trigger.event.fire', $event_id);
+
+
+print "Event state is " . $result->{event}->state . "\n";
+
+my $event = $e->retrieve_action_trigger_event(
+    [
+        $event_id, 
+        {flesh => 1, flesh_fields => {atev => ['template_output', 'error_output']}}
+    ]
+);
+
+if($event->template_output) {
+    print $event->template_output->data . "\n";
+}
+if($event->error_output) {
+    print $event->error_output->data . "\n";
+}
+