From 5769fa857900ef3561b82036f75a453c11612523 Mon Sep 17 00:00:00 2001 From: phasefx Date: Fri, 19 Feb 2010 20:56:38 +0000 Subject: [PATCH] email A/T templates for Acquisition User Requests, supporting ML tweaks, and testing utility git-svn-id: svn://svn.open-ils.org/ILS/trunk@15602 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../Application/Trigger/Validator/Acq.pm | 18 -- .../Validator/Acq/UserRequestCancelled.pm | 12 ++ .../Validator/Acq/UserRequestOrdered.pm | 12 ++ .../Validator/Acq/UserRequestReceived.pm | 12 ++ Open-ILS/src/sql/Pg/002.schema.config.sql | 2 +- .../upgrade/0165.data.acq.patron_requests.sql | 169 ++++++++++++++++++ .../support-scripts/test-scripts/print_aur.pl | 56 ++++++ 7 files changed, 262 insertions(+), 19 deletions(-) create mode 100644 Open-ILS/src/perlmods/OpenILS/Application/Trigger/Validator/Acq/UserRequestCancelled.pm create mode 100644 Open-ILS/src/perlmods/OpenILS/Application/Trigger/Validator/Acq/UserRequestOrdered.pm create mode 100644 Open-ILS/src/perlmods/OpenILS/Application/Trigger/Validator/Acq/UserRequestReceived.pm create mode 100644 Open-ILS/src/sql/Pg/upgrade/0165.data.acq.patron_requests.sql create mode 100755 Open-ILS/src/support-scripts/test-scripts/print_aur.pl diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Trigger/Validator/Acq.pm b/Open-ILS/src/perlmods/OpenILS/Application/Trigger/Validator/Acq.pm index 94f278ba9d..2aaa25b06c 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Trigger/Validator/Acq.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Trigger/Validator/Acq.pm @@ -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 index 0000000000..6cbf13ef78 --- /dev/null +++ b/Open-ILS/src/perlmods/OpenILS/Application/Trigger/Validator/Acq/UserRequestCancelled.pm @@ -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 index 0000000000..a2552afc71 --- /dev/null +++ b/Open-ILS/src/perlmods/OpenILS/Application/Trigger/Validator/Acq/UserRequestOrdered.pm @@ -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 index 0000000000..d43e094017 --- /dev/null +++ b/Open-ILS/src/perlmods/OpenILS/Application/Trigger/Validator/Acq/UserRequestReceived.pm @@ -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; diff --git a/Open-ILS/src/sql/Pg/002.schema.config.sql b/Open-ILS/src/sql/Pg/002.schema.config.sql index 0afe83e3cd..3c684a0aaf 100644 --- a/Open-ILS/src/sql/Pg/002.schema.config.sql +++ b/Open-ILS/src/sql/Pg/002.schema.config.sql @@ -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 index 0000000000..9c38ff1026 --- /dev/null +++ b/Open-ILS/src/sql/Pg/upgrade/0165.data.acq.patron_requests.sql @@ -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 index 0000000000..2eb69e4db8 --- /dev/null +++ b/Open-ILS/src/support-scripts/test-scripts/print_aur.pl @@ -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"; +} + -- 2.43.2