3 -- NOTE: very IDs are still correct for perms and event_def data at merge.
5 SELECT evergreen.upgrade_deps_block_check('0817', :eg_version);
9 INSERT INTO config.copy_status
10 (id, name, holdable, opac_visible, copy_active, restrict_copy_delete)
11 VALUES (16, oils_i18n_gettext(16, 'Long Overdue', 'ccs', 'name'), 'f', 'f', 'f', 't');
13 -- checkin override perm
15 INSERT INTO permission.perm_list (id, code, description) VALUES (
17 'COPY_STATUS_LONGOVERDUE.override',
20 'Allows the user to check-in long-overdue items, prompting ' ||
21 'long-overdue check-in processing',
27 'SET_CIRC_LONG_OVERDUE',
30 'Allows the user to mark a circulation as long-overdue',
38 INSERT INTO config.billing_type (id, owner, name) VALUES
39 (10, 1, oils_i18n_gettext(
40 10, 'Long-Overdue Materials', 'cbt', 'name')),
41 (11, 1, oils_i18n_gettext(
42 11, 'Long-Overdue Materials Processing Fee', 'cbt', 'name'));
46 INSERT INTO config.org_unit_setting_type
47 (name, grp, datatype, label, description) VALUES
49 'circ.longoverdue_immediately_available',
52 'circ.longoverdue_immediately_available',
53 'Long-Overdue Items Usable on Checkin',
58 'circ.longoverdue_immediately_available',
59 'Long-overdue items are usable on checkin instead of going "home" first',
64 'circ.longoverdue_materials_processing_fee',
65 'finance', 'currency',
67 'circ.longoverdue_materials_processing_fee',
68 'Long-Overdue Materials Processing Fee',
73 'circ.longoverdue_materials_processing_fee',
74 'Long-Overdue Materials Processing Fee',
79 'circ.max_accept_return_of_longoverdue',
82 'circ.max_accept_return_of_longoverdue',
83 'Long-Overdue Max Return Interval',
88 'circ.max_accept_return_of_longoverdue',
89 'Long-overdue check-in processing (voiding fees, re-instating ' ||
90 'overdues, etc.) will not take place for items that have been ' ||
91 'overdue for (or have last activity older than) this amount of time',
96 'circ.restore_overdue_on_longoverdue_return',
99 'circ.restore_overdue_on_longoverdue_return',
100 'Restore Overdues on Long-Overdue Item Return',
105 'circ.restore_overdue_on_longoverdue_return',
106 'Restore Overdues on Long-Overdue Item Return',
111 'circ.void_longoverdue_on_checkin',
114 'circ.void_longoverdue_on_checkin',
115 'Void Long-Overdue Item Billing When Returned',
120 'circ.void_longoverdue_on_checkin',
121 'Void Long-Overdue Item Billing When Returned',
126 'circ.void_longoverdue_proc_fee_on_checkin',
129 'circ.void_longoverdue_proc_fee_on_checkin',
130 'Void Processing Fee on Long-Overdue Item Return',
135 'circ.void_longoverdue_proc_fee_on_checkin',
136 'Void Processing Fee on Long-Overdue Item Return',
141 'circ.void_overdue_on_longoverdue',
144 'circ.void_overdue_on_longoverdue',
145 'Void Overdue Fines When Items are Marked Long-Overdue',
150 'circ.void_overdue_on_longoverdue',
151 'Void Overdue Fines When Items are Marked Long-Overdue',
156 'circ.longoverdue.xact_open_on_zero',
159 'circ.longoverdue.xact_open_on_zero',
160 'Leave transaction open when long overdue balance equals zero',
165 'circ.longoverdue.xact_open_on_zero',
166 'Leave transaction open when long-overdue balance equals zero. ' ||
167 'This leaves the lost copy on the patron record when it is paid',
172 'circ.longoverdue.use_last_activity_date_on_return',
175 'circ.longoverdue.use_last_activity_date_on_return',
176 'Long-Overdue Check-In Interval Uses Last Activity Date',
181 'circ.longoverdue.use_last_activity_date_on_return',
182 'Use the long-overdue last-activity date instead of the due_date to ' ||
183 'determine whether the item has been checked out too long to ' ||
184 'perform long-overdue check-in processing. If set, the system ' ||
185 'will first check the last payment time, followed by the last ' ||
186 'billing time, followed by the due date. See also ' ||
187 'circ.max_accept_return_of_longoverdue',
193 -- mark long-overdue reactor
195 INSERT INTO action_trigger.reactor (module, description) VALUES
196 ( 'MarkItemLongOverdue',
198 'MarkItemLongOverdue',
199 'Marks a circulating item as long-overdue and applies configured ' ||
200 'penalties. Also creates events for the longoverdue.auto hook',
206 INSERT INTO action_trigger.validator (module, description) VALUES (
207 'PatronNotInCollections',
208 'Event is valid if the linked patron is not in collections processing ' ||
209 'at the context org unit'
213 INSERT INTO action_trigger.event_definition
214 (id, active, owner, name, hook, validator, reactor, delay, delay_field)
216 49, FALSE, 1, '6 Month Overdue Mark Long-Overdue',
217 'checkout.due', 'PatronNotInCollections',
218 'MarkItemLongOverdue', '6 months', 'due_date'
222 INSERT INTO action_trigger.event_params (event_def, param, value) VALUES
223 (49, 'editor', '''1''');
225 -- new longoverdue and longervdue.auto hook.
227 INSERT INTO action_trigger.hook (key,core_type,description) VALUES (
230 'Circulating Item marked long-overdue'
233 INSERT INTO action_trigger.hook (key,core_type,description) VALUES (
236 'Circulating Item automatically marked long-overdue'
239 -- sample longoverdue.auto notification reactor
242 INSERT INTO action_trigger.event_definition
243 (id, active, owner, name, hook, validator, reactor, group_field, template)
245 50, FALSE, 1, '6 Month Long Overdue Notice',
246 'longoverdue.auto', 'NOOP_True', 'SendEmail', 'usr',
249 [%- user = target.0.usr -%]
250 To: [%- params.recipient_email || user.email %]
251 From: [%- params.sender_email || default_sender %]
252 Subject: Overdue Items Marked Long Overdue
254 Dear [% user.family_name %], [% user.first_given_name %]
255 The following items are 6 months overdue and have been marked Long Overdue.
257 [% FOR circ IN target %]
258 [%- copy_details = helpers.get_copy_bib_basics(circ.target_copy.id) -%]
259 Title: [% copy_details.title %], by [% copy_details.author %]
260 Call Number: [% circ.target_copy.call_number.label %]
261 Shelving Location: [% circ.target_copy.location.name %]
262 Barcode: [% circ.target_copy.barcode %]
263 Due: [% date.format(helpers.format_date(circ.due_date), '%Y-%m-%d') %]
264 Item Cost: [% helpers.get_copy_price(circ.target_copy) %]
265 Total Owed For Transaction: [% circ.billable_transaction.summary.balance_owed %]
266 Library: [% circ.circ_lib.name %]
274 INSERT INTO action_trigger.environment (event_def, path) VALUES
275 (50, 'target_copy.call_number'),
277 (50, 'billable_transaction.summary'),
278 (50, 'circ_lib.billing_address'),
279 (50, 'target_copy.location');