LP#1668734 Action Trigger for SMS Preminder user/csharp/lp1668734_sms_preminder_action_trigger
authorMcCanna <tmccanna@georgialibraries.org>
Thu, 20 Jul 2017 19:44:28 +0000 (15:44 -0400)
committerChris Sharp <csharp@georgialibraries.org>
Thu, 10 Aug 2017 18:11:53 +0000 (14:11 -0400)
New optional SMS text notification to be sent 3 days prior to the due
date of any circulating item for patrons who have an SMS text number
and carrier stored in their accounts. This action trigger is disabled
by default and can be enabled in Admin > Local Administration >
Notifications / Action Triggers.

Signed-off-by: McCanna <tmccanna@georgialibraries.org>
Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Open-ILS/src/sql/Pg/950.data.seed-values.sql
Open-ILS/src/sql/Pg/upgrade/XXXX.data.action-trigger.event_definition.sms_preminder.sql [new file with mode: 0644]
docs/RELEASE_NOTES_NEXT/Administration/action_trigger_preminder.adoc [new file with mode: 0644]

index c40c86d..24c9b7e 100644 (file)
@@ -14719,6 +14719,94 @@ INSERT INTO vandelay.merge_profile (id, owner, name, preserve_spec, update_bib_s
 
 SELECT SETVAL('vandelay.merge_profile_id_seq'::TEXT, 100);
 
+-- 3 Day Courtesy Notice by SMS
+INSERT INTO action_trigger.event_definition (id, active, owner, name, hook,
+        validator, reactor, delay, delay_field, group_field, template)
+    VALUES (XXXX, FALSE, 1,
+        '3 Day Courtesy Notice by SMS',
+        'checkout.due',
+        'CircIsOpen', 'SendSMS', '-3 days', 'due_date', 'usr',
+$$
+[%- USE date -%]
+[%- user = target.0.usr -%]
+[%- homelib = user.home_ou -%]
+[%- sms_number = helpers.get_user_setting(user.id, 'opac.default_sms_notify') -%]
+[%- sms_carrier = helpers.get_user_setting(user.id, 'opac.default_sms_carrier') -%]
+From: [%- helpers.get_org_setting(homelib.id, 'org.bounced_emails') || homelib.email || params.sender_email || default_sender %]
+To: [%- helpers.get_sms_gateway_email(sms_carrier,sms_number) %]
+Subject: Library Materials Due Soon
+
+You have items due soon:
+
+[% FOR circ IN target %]
+[%- copy_details = helpers.get_copy_bib_basics(circ.target_copy.id) -%]
+[% copy_details.title FILTER ucfirst %] by [% copy_details.author FILTER ucfirst %] due on [% date.format(helpers.format_date(circ.due_date), '%m-%d-%Y') %]
+
+[% END %]
+
+$$);
+
+INSERT INTO action_trigger.environment (event_def, path) VALUES
+    (XXXX, 'circ_lib.billing_address'),
+    (XXXX, 'target_copy.call_number'),
+    (XXXX, 'usr'),
+    (XXXX, 'usr.home_ou');
+
+-- OUS's for patron self-reg
+INSERT INTO config.org_unit_setting_type
+    (name, grp, datatype, label, description)
+VALUES (
+    'opac.allow_pending_user',
+    'opac',
+    'bool',
+    oils_i18n_gettext(
+        'opac.allow_pending_user',
+        'Allow Patron Self-Registration',
+        'coust',
+        'label'
+    ),
+    oils_i18n_gettext(
+        'opac.allow_pending_user',
+        'Allow patrons to self-register, creating pending user accounts',
+        'coust',
+        'description'
+    )
+), (
+    'opac.pending_user_expire_interval',
+    'opac',
+    'interval',
+    oils_i18n_gettext(
+        'opac.pending_user_expire_interval',
+        'Patron Self-Reg. Expire Interval',
+        'coust',
+        'label'
+    ),
+    oils_i18n_gettext(
+        'opac.pending_user_expire_interval',
+        'If set, this is the amount of time a pending user account will ' ||
+        'be allowed to sit in the database.  After this time, the pending ' ||
+        'user information will be purged',
+        'coust',
+        'description'
+    )
+), (
+    'ui.patron.edit.aua.county.show',
+    'gui',
+    'bool',
+    oils_i18n_gettext(
+        'ui.patron.edit.aua.county.require',
+        'Show county field on patron registration',
+        'coust',
+        'label'
+    ),
+    oils_i18n_gettext(
+        'ui.patron.edit.aua.county.require',
+        'The county field will be shown on the patron registration screen',
+        'coust',
+        'description'
+    )
+);
+
 -- user activity seed data --
 
 INSERT INTO config.usr_activity_type (id, ewho, ewhat, ehow, egroup, label) VALUES
diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.data.action-trigger.event_definition.sms_preminder.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.data.action-trigger.event_definition.sms_preminder.sql
new file mode 100644 (file)
index 0000000..b03a993
--- /dev/null
@@ -0,0 +1,42 @@
+-- Evergreen DB patch XXXX.schema.action-trigger.event_definition.sms_preminder.sql
+--
+-- New action trigger event definition: 3 Day Courtesy Notice by SMS
+--
+BEGIN;
+
+-- check whether patch can be applied
+SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version);
+
+INSERT INTO action_trigger.event_definition (id, active, owner, name, hook,
+        validator, reactor, delay, delay_field, group_field, template)
+    VALUES (XXXX, FALSE, 1,
+        '3 Day Courtesy Notice by SMS',
+        'checkout.due',
+        'CircIsOpen', 'SendSMS', '-3 days', 'due_date', 'usr',
+$$
+[%- USE date -%]
+[%- user = target.0.usr -%]
+[%- homelib = user.home_ou -%]
+[%- sms_number = helpers.get_user_setting(user.id, 'opac.default_sms_notify') -%]
+[%- sms_carrier = helpers.get_user_setting(user.id, 'opac.default_sms_carrier') -%]
+From: [%- helpers.get_org_setting(homelib.id, 'org.bounced_emails') || homelib.email || params.sender_email || default_sender %]
+To: [%- helpers.get_sms_gateway_email(sms_carrier,sms_number) %]
+Subject: Library Materials Due Soon
+
+You have items due soon:
+
+[% FOR circ IN target %]
+[%- copy_details = helpers.get_copy_bib_basics(circ.target_copy.id) -%]
+[% copy_details.title FILTER ucfirst %] by [% copy_details.author FILTER ucfirst %] due on [% date.format(helpers.format_date(circ.due_date), '%m-%d-%Y') %]
+
+[% END %]
+
+$$);
+
+INSERT INTO action_trigger.environment (event_def, path) VALUES
+    (XXXX, 'circ_lib.billing_address'),
+    (XXXX, 'target_copy.call_number'),
+    (XXXX, 'usr'),
+    (XXXX, 'usr.home_ou');
+
+COMMIT;
diff --git a/docs/RELEASE_NOTES_NEXT/Administration/action_trigger_preminder.adoc b/docs/RELEASE_NOTES_NEXT/Administration/action_trigger_preminder.adoc
new file mode 100644 (file)
index 0000000..04d8d11
--- /dev/null
@@ -0,0 +1,10 @@
+3 Day Courtesy Notice by SMS
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+New optional SMS text notification to be sent out 3 days prior to the due
+date of any circulating item for patrons who have an SMS text number and
+carrier stored in their accounts. This action trigger is disabled by default,
+but can be enabled and modified by going into Admin > Local Administration >
+Notifications / Action Triggers.
+
+You may wish to make use of granularity so that these messages are batched
+and sent at the same time each day.