Bugzilla – Attachment 155541 Details for
Bug 32740
Add a new option patron home library to OverdueNoticeFrom
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 32740: Add a new option patron home library to OverdueNoticeFrom
Bug-32740-Add-a-new-option-patron-home-library-to-.patch (text/plain), 9.74 KB, created by
Chris Cormack
on 2023-09-12 08:19:32 UTC
(
hide
)
Description:
Bug 32740: Add a new option patron home library to OverdueNoticeFrom
Filename:
MIME Type:
Creator:
Chris Cormack
Created:
2023-09-12 08:19:32 UTC
Size:
9.74 KB
patch
obsolete
>From e08f7c68e49b75d42edd2b57e9b7c8f1725de96b Mon Sep 17 00:00:00 2001 >From: Hammat Wele <hammat.wele@inlibro.com> >Date: Fri, 27 Jan 2023 21:05:38 +0000 >Subject: [PATCH] Bug 32740: Add a new option patron home library to > OverdueNoticeFrom > >This patch add 'patron home library' option to the OverdueNoticeFrom preference. When it's selected notification messages for overdues will be bundled and sent from the borrowing user's home library > >To Test >1. Create 3 libraries B1, B2 and B3 > 1.1. Go to Koha administration, click on Libraries > 1.2. Click New library > 1.3. Fill the Library Code (ex. B1), Name(ex. B1) and email(ex. b1@test.com) fields. >2. Create a user belonging to B1 > 2.1. Go to patron module, click on New patron and patron > 2.2. Fill the Surname,Card number,Primary email,Card number field and select B1 as Library. >3. Create 2 notices : the first belongs to B2 and the second belong to B3 > 3.1. Go to Cataloging module and click on new > 3.2. field the required field (000 subfield 0, 003 subfield 0, 005 subfield 0, 008 subfield 0, 040 subfield c,245 subfield a, and 942 subfield c ) > 3.3. Click on save > 3.4. In the item form, Select Home library = B2 and Current library = B2 and type a Barcode. > 3.5. Repeat 3.1 3.2 3.3 3.4 to create a second notice belong to B3 >4. Have (or create) a default notice for all branches in Notices and Slips Module >5. Make sure you connected to branch B2 or Switch to branch B2 >6. checkout item I2 (belonging to B2) to the user created in step 2 (specifying as due date the day before (1 day overdue)) >7. switch to branch B3 >8. checkout item I3 (belonging to B3) to the user created in step 2 (specifying as due date the day before (1 day overdue)) >9. make sure you have defined 'Overdue notice/status triggers' for that patron category, ie with Delay=1 so that 'Overdue Notice' is selected and 'Email' is checked. >Note: we have a user belong to B1, two item: I2 belong to B2, I3 belong to B3 and the user has borrowed I2 from B2 and I3 from B3. >10. Test > 10.1. Search for OverdueNoticeFrom in System preferences and select item home library > 10.2. from cli run 'perl ./misc/cronjobs/overdue_notices.pl' > => Two new entries will be generated in message_queue DB table, coming from different branches that have the SAME list of overdue items. > => The sender address is the item home library address for each entry. >11. Apply the patch >12. Search for OverdueNoticeFrom in System preferences > => There is now 'patron home library' in the options list >13. Select patron home library >14. from cli run 'perl ./misc/cronjobs/overdue_notices.pl' > => You will see that only one message had been created. Its content shows both B2 and B3 overdue items > => The sender address matches B1 address (the patron home library). >15. Search for OverdueNoticeFrom in System preferences and select cron >16. from cli run './misc/cronjobs/overdue_notices.pl --frombranch patron-homebranch' > => you will get the same result at step 14 > >Signed-off-by: Lucas Gass <lucas@bywatersolutions.com> >Signed-off-by: Hinemoea Viault <hinemoea.viault@inlibro.com> > >Was failing the qa script, so I perltidied the changed lines. >Signed-off-by: Chris Cormack <chris@bigballofwax.co.nz> >--- > .../admin/preferences/circulation.pref | 1 + > misc/cronjobs/overdue_notices.pl | 35 +++++++++++++------ > 2 files changed, 26 insertions(+), 10 deletions(-) > >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 55feb4d444..980bc8a4f1 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 >@@ -397,6 +397,7 @@ Circulation: > cron: "command-line option" > item-issuebranch: "checkout library" > item-homebranch: "item home library" >+ patron-homebranch: "patron home library" > - . > - > - Include up to >diff --git a/misc/cronjobs/overdue_notices.pl b/misc/cronjobs/overdue_notices.pl >index 19e6aef27b..b736206d54 100755 >--- a/misc/cronjobs/overdue_notices.pl >+++ b/misc/cronjobs/overdue_notices.pl >@@ -21,7 +21,7 @@ > use Modern::Perl; > > use Getopt::Long qw( GetOptions ); >-use Pod::Usage qw( pod2usage ); >+use Pod::Usage qw( pod2usage ); > use Text::CSV_XS; > use DateTime; > use DateTime::Duration; >@@ -69,7 +69,7 @@ overdue_notices.pl > --date <yyyy-mm-dd> Emulate overdues run for this date. > --email <email_type> Type of email that will be used. > Can be 'email', 'emailpro' or 'B_email'. Repeatable. >- --frombranch Organize and send overdue notices by home library (item-homebranch) or checkout library (item-issuebranch). >+ --frombranch Organize and send overdue notices by home library (item-homebranch) or checkout library (item-issuebranch) or patron home library (patron-homebranch). > This option is only used, if the OverdueNoticeFrom system preference is set to 'command-line option'. > Defaults to item-issuebranch. > >@@ -184,7 +184,7 @@ Allows to specify which type of email will be used. Can be email, emailpro or B_ > > =item B<--frombranch> > >-Organize overdue notices either by checkout library (item-issuebranch) or item home library (item-homebranch). >+Organize overdue notices either by checkout library (item-issuebranch) or item home library (item-homebranch) or patron home library (patron-homebranch). > This option is only used, if the OverdueNoticeFrom system preference is set to use 'command-line option'. > Defaults to checkout library (item-issuebranch). > >@@ -341,11 +341,14 @@ if ( defined $csvfilename && $csvfilename =~ /^-/ ) { > warn qq(using "$csvfilename" as filename, that seems odd); > } > >-die "--frombranch takes item-homebranch or item-issuebranch only" >+die "--frombranch takes item-homebranch or item-issuebranch or patron-homebranch only" > unless ( $frombranch eq 'item-issuebranch' >- || $frombranch eq 'item-homebranch' ); >-$frombranch = C4::Context->preference('OverdueNoticeFrom') ne 'cron' ? C4::Context->preference('OverdueNoticeFrom') : $frombranch; >+ || $frombranch eq 'item-homebranch' >+ || $frombranch eq 'patron-homebranch' ); >+$frombranch = >+ C4::Context->preference('OverdueNoticeFrom') ne 'cron' ? C4::Context->preference('OverdueNoticeFrom') : $frombranch; > my $owning_library = ( $frombranch eq 'item-homebranch' ) ? 1 : 0; >+my $patron_homelibrary = ( $frombranch eq 'patron-homebranch' ) ? 1 : 0; > > my @overduebranches = C4::Overdues::GetBranchcodesWithOverdueRules(); # Branches with overdue rules > my @branches; # Branches passed as parameter with overdue rules >@@ -446,6 +449,8 @@ elsif ( defined $text_filename ) { > } > } > >+my %already_queued; >+my %seen = map { $_ => 1 } @branches; > foreach my $branchcode (@branches) { > my $calendar; > if ( C4::Context->preference('OverdueNoticeCalendar') ) { >@@ -476,10 +481,10 @@ SELECT biblio.*, items.*, issues.*, biblioitems.itemtype, branchname > AND TO_DAYS($date)-TO_DAYS(issues.date_due) >= 0 > END_SQL > >- if($owning_library) { >- $sql2 .= ' AND items.homebranch = ? '; >+ if ($owning_library) { >+ $sql2 .= ' AND items.homebranch = ? ' unless ($patron_homelibrary); > } else { >- $sql2 .= ' AND issues.branchcode = ? '; >+ $sql2 .= ' AND issues.branchcode = ? ' unless ($patron_homelibrary); > } > my $sth2 = $dbh->prepare($sql2); > >@@ -595,6 +600,7 @@ END_SQL > next; > } > $borrowernumber = $data->{'borrowernumber'}; >+ next if ( $patron_homelibrary && $already_queued{"$borrowernumber$i"} ); > my $borr = sprintf( "%s%s%s (%s)", > $data->{'surname'} || '', > $data->{'firstname'} && $data->{'surname'} ? ', ' : '', >@@ -603,6 +609,13 @@ END_SQL > $verbose and warn "borrower $borr has items triggering level $i.\n"; > > my $patron = Koha::Patrons->find( $borrowernumber ); >+ if ($patron_homelibrary) { >+ $branchcode = $patron->branchcode; >+ $library = Koha::Libraries->find($branchcode); >+ $admin_email_address = $library->from_email_address; >+ $branch_email_address = C4::Context->preference('AddressForFailedOverdueNotices') >+ || $library->inbound_email_address; >+ } > @emails_to_use = (); > my $notice_email = $patron->notice_email_address; > unless ($nomail) { >@@ -645,7 +658,7 @@ END_SQL > ) unless $test_mode; > $verbose and warn "debarring $borr\n"; > } >- my @params = ($borrowernumber,$branchcode); >+ my @params = $patron_homelibrary ? ($borrowernumber) : ( $borrowernumber, $branchcode ); > > $sth2->execute(@params); > my $itemcount = 0; >@@ -690,6 +703,7 @@ END_SQL > $exceededPrintNoticesMaxLines = 1; > last; > } >+ next if $patron_homelibrary and !grep { $seen{ $item_info->{branchcode} } } @branches; > $j++; > > $titles .= C4::Letters::get_item_content( { item => $item_info, item_content_fields => \@item_content_fields, dateonly => 1 } ); >@@ -813,6 +827,7 @@ END_SQL > } > } > } >+ $already_queued{"$borrowernumber$i"} = 1; > } > $sth->finish; > } >-- >2.30.2
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 32740
:
145779
|
149695
|
150806
| 155541