From 4cf6a23af72eb92260d60b90e1fef631e540bb91 Mon Sep 17 00:00:00 2001 From: Aleisha Amohia Date: Thu, 26 Mar 2020 17:13:15 +0000 Subject: [PATCH] Bug 20844: (follow-up) SendLostHoldNotices This patch adds a new syspref SendLostHoldNotices Test: 1) Update database and restart memcached 2) Enable the SendLostHoldNotices system preference 3) Place a hold on an item 4) Check in the item and set the hold to waiting 5) Go to edit the item and set an item lost status 6) Check the borrower's notices and confirm the notice has been enqueued 7) Confirm the notice is not sent twice when reverting or cancelling the hold 8) Confirm notice enqueues as expected for a bib-level hold Sponsored-by: Catalyst IT --- C4/Circulation.pm | 15 +++++++++++++++ catalogue/updateitem.pl | 2 ++ .../bug_20844-add_LOST_WAITING_HOLD_notice.perl | 6 ++++++ .../bug_20844-add_SendLostHoldNotices_syspref.perl | 6 ++++++ .../data/mysql/en/mandatory/sample_notices.yml | 19 +++++++++++++++++++ .../mysql/fr-CA/obligatoire/sample_notices.sql | 4 +++- .../mysql/fr-FR/1-Obligatoire/sample_notices.sql | 4 +++- installer/data/mysql/it-IT/necessari/notices.sql | 4 +++- .../mysql/nb-NO/1-Obligatorisk/sample_notices.sql | 4 +++- .../data/mysql/pl-PL/mandatory/sample_notices.sql | 4 +++- .../data/mysql/ru-RU/mandatory/sample_notices.sql | 4 +++- .../data/mysql/uk-UA/mandatory/sample_notices.sql | 4 +++- .../en/modules/admin/preferences/circulation.pref | 6 ++++++ t/db_dependent/Reserves.t | 22 ++++++++++++++++++++-- 14 files changed, 95 insertions(+), 9 deletions(-) create mode 100644 installer/data/mysql/atomicupdate/bug_20844-add_LOST_WAITING_HOLD_notice.perl create mode 100644 installer/data/mysql/atomicupdate/bug_20844-add_SendLostHoldNotices_syspref.perl diff --git a/C4/Circulation.pm b/C4/Circulation.pm index ac000b8707..2963323c3a 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -3844,6 +3844,21 @@ sub LostItem{ $hold = C4::Reserves::RevertWaitingStatus({ itemnumber => $itemnumber }); } } + + # SendLostHoldNotices + my $item = Koha::Items->find( $itemnumber ); + if ( C4::Context->preference('SendLostHoldNotices') && defined $hold && $item->itemlost ){ + my $letter = C4::Letters::GetPreparedLetter( + module => 'reserves', + letter_code => 'LOST_WAITING_HOLD', + branchcode => $hold->branchcode, + tables => { + borrowers => $hold->borrowernumber, + branches => $hold->branchcode, + }, + ); + C4::Message->enqueue($letter, $hold->borrower->unblessed, 'email'); + } } sub GetOfflineOperations { diff --git a/catalogue/updateitem.pl b/catalogue/updateitem.pl index de712ae2c7..79e430b454 100755 --- a/catalogue/updateitem.pl +++ b/catalogue/updateitem.pl @@ -49,6 +49,8 @@ if ( defined $cancelhold ){ } elsif ( defined $reverthold ){ $cancelhold = 0; LostItem($itemnumber, 'moredetail', 0, { cancel_reserve => $cancelhold }); +} else { + $cancelhold = undef; } if ( defined $redirecturl ){ print $cgi->redirect( $redirecturl . $biblionumber ); diff --git a/installer/data/mysql/atomicupdate/bug_20844-add_LOST_WAITING_HOLD_notice.perl b/installer/data/mysql/atomicupdate/bug_20844-add_LOST_WAITING_HOLD_notice.perl new file mode 100644 index 0000000000..4dc14f9606 --- /dev/null +++ b/installer/data/mysql/atomicupdate/bug_20844-add_LOST_WAITING_HOLD_notice.perl @@ -0,0 +1,6 @@ +$DBversion = 'XXX'; +if( CheckVersion( $DBversion ) ) { + $dbh->do(q{INSERT IGNORE INTO letter (module, code, branchcode, name, is_html, title, message_transport_type, content) VALUES ('reserves','LOST_WAITING_HOLD','','Waiting hold marked lost','0','Your waiting hold has been marked lost','email',"Dear [% borrower.firstname %] [% borrowers.surname %],

Your hold awaiting pickup is no longer available. The item is lost.

Please contact the library for more information.

Thank you,

[% branch.branchname %]") }); + + NewVersion( $DBversion, 20844, "Add LOST_WAITING_HOLD notice"); +} diff --git a/installer/data/mysql/atomicupdate/bug_20844-add_SendLostHoldNotices_syspref.perl b/installer/data/mysql/atomicupdate/bug_20844-add_SendLostHoldNotices_syspref.perl new file mode 100644 index 0000000000..46b5f69da4 --- /dev/null +++ b/installer/data/mysql/atomicupdate/bug_20844-add_SendLostHoldNotices_syspref.perl @@ -0,0 +1,6 @@ +$DBversion = 'XXX'; +if( CheckVersion( $DBversion ) ) { + $dbh->do(q{INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type) VALUES ('SendLostHoldNotices', '0', NULL, 'Send a notice to a borrower if their reserved and waiting item is marked as lost', 'YesNo') }); + + NewVersion( $DBversion, 20844, "Add SendLostHoldNotices system preference"); +} diff --git a/installer/data/mysql/en/mandatory/sample_notices.yml b/installer/data/mysql/en/mandatory/sample_notices.yml index 50bb421386..9bcd0866a6 100644 --- a/installer/data/mysql/en/mandatory/sample_notices.yml +++ b/installer/data/mysql/en/mandatory/sample_notices.yml @@ -1221,3 +1221,22 @@ tables: - "[%- USE AuthorisedValues -%]" - "Dear [% borrower.firstname %] [% borrower.surname %]," - "Your hold for [% biblio.title %] was canceled for the following reason: [% AuthorisedValues.GetByCode( 'HOLD_CANCELLATION', hold.cancellation_reason ) %]" + + - module: reserves + code: LOST_WAITING_HOLD + branchcode: "" + name: "Waiting hold marked lost" + is_html: 0 + title: "Your waiting hold has been marked lost" + message_transport_type: email + lang: default + content: + - "Dear [% borrower.firstname %] [% borrowers.surname %]," + - "" + - "Your hold awaiting pickup is no longer available. The item is lost." + - "" + - "Please contact the library for more information." + - "" + - "Thank you," + - "" + - "[% branch.branchname %]" diff --git a/installer/data/mysql/fr-CA/obligatoire/sample_notices.sql b/installer/data/mysql/fr-CA/obligatoire/sample_notices.sql index 1a231dd12e..865c7de4f5 100644 --- a/installer/data/mysql/fr-CA/obligatoire/sample_notices.sql +++ b/installer/data/mysql/fr-CA/obligatoire/sample_notices.sql @@ -22,7 +22,9 @@ INSERT INTO `letter` (module, code, branchcode, name, is_html, title, content, m ('suggestions','ACCEPTED','','Suggestion d\'achat acceptée',0,'Suggestion d\'achat acceptée','Bonjour <> <>,\r\n\r\nVous nous avez suggéré l\'achat du document <> par <>.\r\n\r\nNous avons évalué votre suggestion aujourdhui. Le document sera commandé dès que possible. Vous serez tenu au courant par courriel quand le document aura été commandé et quand il sera disponible à la bibliothèque.\r\n\r\nPour toute question, veuillez nous contacter à l\'adresse suivante : <>.\r\n\r\nMerci.\r\n\r\n<>','email'), ('suggestions','AVAILABLE','','Suggestion d\'achat disponible',0,'Suggestion d\'achat disponible','Bonjour <> <>,\r\n\r\nVous nous avez suggéré l\'achat du document <> par <>.\r\n\r\nNous avons le plaisir de vous informer que le document fait aujourd\'hui partie de nos collection et qu\'il est disponible à la bibliothèque.\r\n\r\nPour toute question, veuillez nous contacter à l\'adresse suivante : <>.\r\n\r\nMerci.\r\n\r\n<>','email'), ('suggestions','ORDERED','','Suggestion d\'achat commandée',0,'Suggestion d\'achat commandée','Bonjour <> <>,\r\n\r\nVous nous avez suggéré l\'achat du document <> par <>.\r\n\r\nNous avons le plaisir de vous informer que le document a été commandé.\r\n\r\nVous recevrez une nouvelle notification quand le document sera disponible à bibliothèque.\r\n\r\nPour toute question, veuillez nous contacter à l\'adresse suivante : <>.\r\n\r\nMerci.\r\n\r\n<>','email'), -('suggestions','REJECTED','','Suggestion d\'achat rejetée',0,'Suggestion d\'achat rejetée','Bonjour <> <>,\r\n\r\nVous nous avez suggéré l\'achat du document <> par <>.\r\n\r\nNous avons évalué votre suggestion aujourd\'hui et décidé de ne pas l\'acheter cette fois.\r\n\r\nLa raison de notre refus est : <>\r\n\r\nPour toute question, veuillez nous contacter à l\'adresse suivante : <>.\r\n\r\nMerci.\r\n\r\n<>','email'); +('suggestions','REJECTED','','Suggestion d\'achat rejetée',0,'Suggestion d\'achat rejetée','Bonjour <> <>,\r\n\r\nVous nous avez suggéré l\'achat du document <> par <>.\r\n\r\nNous avons évalué votre suggestion aujourd\'hui et décidé de ne pas l\'acheter cette fois.\r\n\r\nLa raison de notre refus est : <>\r\n\r\nPour toute question, veuillez nous contacter à l\'adresse suivante : <>.\r\n\r\nMerci.\r\n\r\n<>','email'), +('reserves','LOST_WAITING_HOLD','','Waiting hold marked lost',0,'Your waiting hold has been marked lost',"Dear [% borrower.firstname %] [% borrowers.surname %],\n\nYour hold awaiting pickup is no longer available. The item is lost.\n\nPlease contact the library for more information.\n\nThank you,\n\n[% branch.branchname %]",'email') +; INSERT INTO `letter` (module, code, name, title, content, is_html, message_transport_type) VALUES ('suggestions','NEW_SUGGESTION','Nouvelle suggestion','Nouvelle suggestion','

Suggestion en attente

diff --git a/installer/data/mysql/fr-FR/1-Obligatoire/sample_notices.sql b/installer/data/mysql/fr-FR/1-Obligatoire/sample_notices.sql index f844c90b2a..46734748fa 100644 --- a/installer/data/mysql/fr-FR/1-Obligatoire/sample_notices.sql +++ b/installer/data/mysql/fr-FR/1-Obligatoire/sample_notices.sql @@ -23,7 +23,9 @@ VALUES ('suggestions','TO_PROCESS','Avis au propriétaire du poste budgétaire', 'Une suggestion est prête à être traitée','<> <>,\n\nUne nouvelle suggestion est prête à être traitée : <> / <>.\n\nMerci,\n\n<>', 'email'), ('suggestions', 'NOTIFY_MANAGER', 'Notify manager of a suggestion', "A suggestion has been assigned to you", "Dear [% borrower.firstname %] [% borrower.surname %],\nA suggestion has been assigned to you: [% suggestion.title %].\nThank you,\n[% branch.branchname %]", 'email'), ('members', 'DISCHARGE', 'Quitus', 'Quitus pour <> <>', '

Quitus

\r\n\r\nLa librairie <> certifies que lecteur suivant :\r\n\r\n <> <>\r\n Numéro de carte : <>\r\n\r\na bien retourné tous ses documents.', 'email'), -('members', 'PROBLEM_REPORT','OPAC problem report','OPAC problem report','Username: <>\n\nProblem page: <>\n\nTitle: <>\n\nMessage: <>','email'); +('members', 'PROBLEM_REPORT','OPAC problem report','OPAC problem report','Username: <>\n\nProblem page: <>\n\nTitle: <>\n\nMessage: <>','email'), +('reserves','LOST_WAITING_HOLD','Waiting hold marked lost','Your waiting hold has been marked lost',"Dear [% borrower.firstname %] [% borrowers.surname %],\n\nYour hold awaiting pickup is no longer available. The item is lost.\n\nPlease contact the library for more information.\n\nThank you,\n\n[% branch.branchname %]",'email') +; INSERT INTO `letter` (module, code, name, title, content, is_html, message_transport_type) VALUES ('suggestions','NEW_SUGGESTION','New suggestion','New suggestion','

Suggestion pendin g approval

diff --git a/installer/data/mysql/it-IT/necessari/notices.sql b/installer/data/mysql/it-IT/necessari/notices.sql index 9be907b0b5..631584ddfb 100644 --- a/installer/data/mysql/it-IT/necessari/notices.sql +++ b/installer/data/mysql/it-IT/necessari/notices.sql @@ -28,7 +28,9 @@ biblio.title>>\r\n----\r\nGrazie per aver visitaro <>.', 'e ('suggestions','TO_PROCESS','Notifica al proprietario del fondo', 'Un suggeerimento è pronto per essere lavorato','Caro bibliotecario <> <>,\n\n c\'è un nuovo suggerimento pronto per essere lavorato: <> by <>.\n\n Grazie dell\'attenzione,\n\n<>', 'email'), ('suggestions', 'NOTIFY_MANAGER', 'Notify manager of a suggestion', "A suggestion has been assigned to you", "Dear [% borrower.firstname %] [% borrower.surname %],\nA suggestion has been assigned to you: [% suggestion.title %].\nThank you,\n[% branch.branchname %]", 'email'), ('members', 'DISCHARGE', 'Liberatoria', 'Liberatoria per <> <>', '

Liberatoria

\r\n\r\nLa biblioteca <> certifica che il seguente utente :\r\n\r\n <> <>\r\n Numero tessera : <>\r\n\r\nha restituito tutti i documenti ricevuti.', 'email'), -('members', 'PROBLEM_REPORT','OPAC problem report','OPAC problem report','Username: <>\n\nProblem page: <>\n\nTitle: <>\n\nMessage: <>','email'); +('members', 'PROBLEM_REPORT','OPAC problem report','OPAC problem report','Username: <>\n\nProblem page: <>\n\nTitle: <>\n\nMessage: <>','email'), +('reserves','LOST_WAITING_HOLD','Waiting hold marked lost','Your waiting hold has been marked lost',"Dear [% borrower.firstname %] [% borrowers.surname %],\n\nYour hold awaiting pickup is no longer available. The item is lost.\n\nPlease contact the library for more information.\n\nThank you,\n\n[% branch.branchname %]",'email') +; INSERT INTO `letter` (module, code, name, title, content, is_html, message_transport_type) VALUES ('suggestions','NEW_SUGGESTION','New suggestion','New suggestion','

Suggestion pendin g approval

diff --git a/installer/data/mysql/nb-NO/1-Obligatorisk/sample_notices.sql b/installer/data/mysql/nb-NO/1-Obligatorisk/sample_notices.sql index e3564ffb1d..13fa4035fc 100644 --- a/installer/data/mysql/nb-NO/1-Obligatorisk/sample_notices.sql +++ b/installer/data/mysql/nb-NO/1-Obligatorisk/sample_notices.sql @@ -43,7 +43,9 @@ VALUES ('circulation','ODUE','Purring','Purring på dokument','<> <>,\n\nA new suggestion is ready to be processed: <> by <>.\n\nThank you,\n\n<>', 'email'), ('suggestions', 'NOTIFY_MANAGER', 'Notify manager of a suggestion', "A suggestion has been assigned to you", "Dear [% borrower.firstname %] [% borrower.surname %],\nA suggestion has been assigned to you: [% suggestion.title %].\nThank you,\n[% branch.branchname %]", 'email'), ('members', 'DISCHARGE', 'Discharge', 'Discharge for <> <>', '

Discharge

\r\n\r\nThe library <> certifies that the following borrower :\r\n\r\n <> <>\r\n Cardnumber : <>\r\n\r\nreturned all his documents.', 'email'), -('members', 'PROBLEM_REPORT','OPAC problem report','OPAC problem report','Username: <>\n\nProblem page: <>\n\nTitle: <>\n\nMessage: <>','email'); +('members', 'PROBLEM_REPORT','OPAC problem report','OPAC problem report','Username: <>\n\nProblem page: <>\n\nTitle: <>\n\nMessage: <>','email'), +('reserves','LOST_WAITING_HOLD','Waiting hold marked lost','Your waiting hold has been marked lost',"Dear [% borrower.firstname %] [% borrowers.surname %],\n\nYour hold awaiting pickup is no longer available. The item is lost.\n\nPlease contact the library for more information.\n\nThank you,\n\n[% branch.branchname %]",'email') +; INSERT INTO `letter` (module, code, name, title, content, is_html, message_transport_type) VALUES ('suggestions','NEW_SUGGESTION','New suggestion','New suggestion','

Suggestion pendin g approval

diff --git a/installer/data/mysql/pl-PL/mandatory/sample_notices.sql b/installer/data/mysql/pl-PL/mandatory/sample_notices.sql index f228b5c68d..9dda42415c 100644 --- a/installer/data/mysql/pl-PL/mandatory/sample_notices.sql +++ b/installer/data/mysql/pl-PL/mandatory/sample_notices.sql @@ -22,7 +22,9 @@ VALUES ('circulation','ODUE','Overdue notice','Item overdue','Dear <> <>,\n\nA new suggestion is ready to be processed: <> by <>.\n\nThank you,\n\n<>', 'email'), ('suggestions', 'NOTIFY_MANAGER', 'Notify manager of a suggestion', "A suggestion has been assigned to you", "Dear [% borrower.firstname %] [% borrower.surname %],\nA suggestion has been assigned to you: [% suggestion.title %].\nThank you,\n[% branch.branchname %]", 'email'), ('members', 'DISCHARGE', 'Discharge', 'Discharge for <> <>', '

Discharge

\r\n\r\nThe library <> certifies that the following borrower :\r\n\r\n <> <>\r\n Cardnumber : <>\r\n\r\nreturned all his documents.', 'email'), -('members', 'PROBLEM_REPORT','OPAC problem report','OPAC problem report','Username: <>\n\nProblem page: <>\n\nTitle: <>\n\nMessage: <>','email'); +('members', 'PROBLEM_REPORT','OPAC problem report','OPAC problem report','Username: <>\n\nProblem page: <>\n\nTitle: <>\n\nMessage: <>','email'), +('reserves','LOST_WAITING_HOLD','Waiting hold marked lost','Your waiting hold has been marked lost',"Dear [% borrower.firstname %] [% borrowers.surname %],\n\nYour hold awaiting pickup is no longer available. The item is lost.\n\nPlease contact the library for more information.\n\nThank you,\n\n[% branch.branchname %]",'email') +; INSERT INTO `letter` (module, code, name, title, content, is_html, message_transport_type) VALUES ('suggestions','NEW_SUGGESTION','New suggestion','New suggestion','

Suggestion pendin g approval

diff --git a/installer/data/mysql/ru-RU/mandatory/sample_notices.sql b/installer/data/mysql/ru-RU/mandatory/sample_notices.sql index 27f002b195..bf0c8c967e 100644 --- a/installer/data/mysql/ru-RU/mandatory/sample_notices.sql +++ b/installer/data/mysql/ru-RU/mandatory/sample_notices.sql @@ -21,7 +21,9 @@ VALUES ('circulation','ODUE','Overdue notice','Item overdue','Dear <> <>,\n\nA new suggestion is ready to be processed: <> by <>.\n\nThank you,\n\n<>', 'email'), ('suggestions', 'NOTIFY_MANAGER', 'Notify manager of a suggestion', "A suggestion has been assigned to you", "Dear [% borrower.firstname %] [% borrower.surname %],\nA suggestion has been assigned to you: [% suggestion.title %].\nThank you,\n[% branch.branchname %]", 'email'), ('members', 'DISCHARGE', 'Discharge', 'Discharge for <> <>', '

Discharge

\r\n\r\nThe library <> certifies that the following borrower :\r\n\r\n <> <>\r\n Cardnumber : <>\r\n\r\nreturned all his documents.', 'email'), -('members', 'PROBLEM_REPORT','OPAC problem report','OPAC problem report','Username: <>\n\nProblem page: <>\n\nTitle: <>\n\nMessage: <>','email'); +('members', 'PROBLEM_REPORT','OPAC problem report','OPAC problem report','Username: <>\n\nProblem page: <>\n\nTitle: <>\n\nMessage: <>','email'), +('reserves','LOST_WAITING_HOLD','Waiting hold marked lost','Your waiting hold has been marked lost',"Dear [% borrower.firstname %] [% borrowers.surname %],\n\nYour hold awaiting pickup is no longer available. The item is lost.\n\nPlease contact the library for more information.\n\nThank you,\n\n[% branch.branchname %]",'email') +; INSERT INTO `letter` (module, code, name, title, content, is_html, message_transport_type) VALUES ('suggestions','NEW_SUGGESTION','New suggestion','New suggestion','

Suggestion pendin g approval

diff --git a/installer/data/mysql/uk-UA/mandatory/sample_notices.sql b/installer/data/mysql/uk-UA/mandatory/sample_notices.sql index 17bd9f7606..53bd789163 100644 --- a/installer/data/mysql/uk-UA/mandatory/sample_notices.sql +++ b/installer/data/mysql/uk-UA/mandatory/sample_notices.sql @@ -85,7 +85,9 @@ INSERT INTO `letter` (module, code, name, title, content, message_transport_type ('suggestions', 'NOTIFY_MANAGER', 'Notify manager of a suggestion', "A suggestion has been assigned to you", "Dear [% borrower.firstname %] [% borrower.surname %],\nA suggestion has been assigned to you: [% suggestion.title %].\nThank you,\n[% branch.branchname %]", 'email'), -('members', 'PROBLEM_REPORT','OPAC problem report','OPAC problem report','Username: <>\n\nProblem page: <>\n\nTitle: <>\n\nMessage: <>','email') +('members', 'PROBLEM_REPORT','OPAC problem report','OPAC problem report','Username: <>\n\nProblem page: <>\n\nTitle: <>\n\nMessage: <>','email'), + +('reserves','LOST_WAITING_HOLD','Waiting hold marked lost','Your waiting hold has been marked lost',"Dear [% borrower.firstname %] [% borrowers.surname %],\n\nYour hold awaiting pickup is no longer available. The item is lost.\n\nPlease contact the library for more information.\n\nThank you,\n\n[% branch.branchname %]",'email') ; INSERT INTO `letter` (module, code, name, title, content, is_html, message_transport_type) diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref index 285804a3c5..a5f5c34395 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref @@ -651,6 +651,12 @@ Circulation: no: "Don't revert" - waiting status of a hold if the allocated item is marked as Lost. - + - pref: SendLostHoldNotices + choices: + yes: Send + no: "Don't send" + - a notice to a borrower if their reserved and waiting item is marked as Lost. + - - In the staff interface, split the holds queue into separate tables by - pref: HoldsSplitQueue choices: diff --git a/t/db_dependent/Reserves.t b/t/db_dependent/Reserves.t index e8bc428cec..913f78f73d 100755 --- a/t/db_dependent/Reserves.t +++ b/t/db_dependent/Reserves.t @@ -1192,13 +1192,14 @@ subtest 'AllowHoldOnPatronPossession test' => sub { subtest 'Waiting item is marked as lost' => sub { - plan tests => 15; + plan tests => 17; # Set up data my $biblio = $builder->build_sample_biblio(); my $item = $builder->build_sample_item({ biblionumber => $biblio->biblionumber }); my $patron = $builder->build_object({ class => 'Koha::Patrons' }); - + t::lib::Mocks::mock_preference( 'SendLostHoldNotices', 0 ); + $dbh->do(q|DELETE FROM message_queue|); ## TEST 1: BIBLIO-LEVEL HOLD # place biblio-level hold @@ -1209,6 +1210,8 @@ subtest 'Waiting item is marked as lost' => sub { }); my $hold = Koha::Holds->find( $reserve_id ); + $dbh->do(q{INSERT IGNORE INTO letter (module, code, branchcode, name, is_html, title, message_transport_type, content) VALUES ('reserves','LOST_WAITING_HOLD','','Waiting hold marked lost','0','Your waiting hold has been marked lost','email',"Dear [% borrower.firstname %] [% borrowers.surname %],

Your hold awaiting pickup is no longer available. The item is lost.

Please contact the library for more information.

Thank you,

[% branch.branchname %]") }); + is( $hold->item_level_hold, 0, 'Biblio-level hold placed' ); # set hold as waiting and assign item @@ -1276,7 +1279,15 @@ subtest 'Waiting item is marked as lost' => sub { $hold->cancel; $item->itemlost( 0 ); + my $message_count = $dbh->selectall_arrayref(q{ + SELECT COUNT(*) + FROM message_queue + WHERE letter_code = 'LOST_WAITING_HOLD' + }); + is( $message_count->[0]->[0], 0, 'No notices enqueued because SendLostHoldNotices disabled' ); + # TEST 3: ITEM-LEVEL HOLD, CANCEL + t::lib::Mocks::mock_preference( 'SendLostHoldNotices', 1 ); # place item-level hold $reserve_id = AddReserve({ @@ -1310,6 +1321,13 @@ subtest 'Waiting item is marked as lost' => sub { C4::Circulation::LostItem( $item->itemnumber, 'test', 0, { cancel_reserve => 1 }); $hold = Koha::Holds->find( $reserve_id ); is( Koha::Holds->find( $reserve_id ), undef, 'Hold has been cancelled with RevertLostBibLevelHolds enabled' ); + + $message_count = $dbh->selectall_arrayref(q{ + SELECT COUNT(*) + FROM message_queue + WHERE letter_code = 'LOST_WAITING_HOLD' + }); + is( $message_count->[0]->[0], 2, 'LOST_WAITING_HOLD notice enqueued with each call to LostItem' ); }; sub count_hold_print_messages { -- 2.11.0