Bugzilla – Attachment 178654 Details for
Bug 10190
Overdue notice triggers based on item type
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 10190: Update overdue_notices script to refer to circ rules
Bug-10190-Update-overduenotices-script-to-refer-to.patch (text/plain), 9.48 KB, created by
Martin Renvoize (ashimema)
on 2025-02-25 11:57:33 UTC
(
hide
)
Description:
Bug 10190: Update overdue_notices script to refer to circ rules
Filename:
MIME Type:
Creator:
Martin Renvoize (ashimema)
Created:
2025-02-25 11:57:33 UTC
Size:
9.48 KB
patch
obsolete
>From 0310359486bfb8ddb5d9c8542393903c93b5233c Mon Sep 17 00:00:00 2001 >From: Martin Renvoize <martin.renvoize@ptfs-europe.com> >Date: Thu, 8 Aug 2024 11:44:35 +0100 >Subject: [PATCH] Bug 10190: Update overdue_notices script to refer to circ > rules > >This patch updates the overdue_notices cron script to refer to the new >location for overdue rules found in the circulation rules table now. > >Sponsored-by: Glasgow Colleges Library Group <https://library.cityofglasgowcollege.ac.uk> >Signed-off-by: George Harkins <George.Harkins@cityofglasgowcollege.ac.uk> >--- > misc/cronjobs/overdue_notices.pl | 85 +++++++++++++++++--------------- > 1 file changed, 46 insertions(+), 39 deletions(-) > >diff --git a/misc/cronjobs/overdue_notices.pl b/misc/cronjobs/overdue_notices.pl >index 7d3fd8796d5..f68cb46cf0d 100755 >--- a/misc/cronjobs/overdue_notices.pl >+++ b/misc/cronjobs/overdue_notices.pl >@@ -29,7 +29,7 @@ use DateTime::Duration; > use Koha::Script -cron; > use C4::Context; > use C4::Letters; >-use C4::Overdues qw( GetOverdueMessageTransportTypes parse_overdues_letter ); >+use C4::Overdues qw( parse_overdues_letter ); > use C4::Log qw( cronlogaction ); > use Koha::Patron::Debarments qw( AddUniqueDebarment ); > use Koha::DateUtils qw( dt_from_string output_pref ); >@@ -489,43 +489,54 @@ END_SQL > } > my $sth2 = $dbh->prepare($sql2); > >- my $query = "SELECT * FROM overduerules WHERE delay1 IS NOT NULL AND branchcode = ? "; >- $query .= " AND categorycode IN (" . join( ',', ('?') x @myborcat ) . ") " if (@myborcat); >- $query .= " AND categorycode NOT IN (" . join( ',', ('?') x @myborcatout ) . ") " if (@myborcatout); >- >- my $rqoverduerules = $dbh->prepare($query); >- $rqoverduerules->execute( $branchcode, @myborcat, @myborcatout ); >- >- # We get default rules if there is no rule for this branch >- if ( $rqoverduerules->rows == 0 ) { >- $query = "SELECT * FROM overduerules WHERE delay1 IS NOT NULL AND branchcode = '' "; >- $query .= " AND categorycode IN (" . join( ',', ('?') x @myborcat ) . ") " if (@myborcat); >- $query .= " AND categorycode NOT IN (" . join( ',', ('?') x @myborcatout ) . ") " if (@myborcatout); >- >- $rqoverduerules = $dbh->prepare($query); >- $rqoverduerules->execute( @myborcat, @myborcatout ); >+ my @categories; >+ if (@myborcat) { >+ @categories = @myborcat; >+ } elsif (@myborcatout) { >+ @categories = Koha::Patron::Categories->search( { catagorycode => { 'not_in' => \@myborcatout } } ) >+ ->get_column('categorycode'); >+ } else { >+ @categories = Koha::Patron::Categories->search()->get_column('categorycode'); > } > >- # my $outfile = 'overdues_' . ( $mybranch || $branchcode || 'default' ); >- while ( my $overdue_rules = $rqoverduerules->fetchrow_hashref ) { >- PERIOD: foreach my $i ( 1 .. 3 ) { >+ for my $category (@categories) { >+ my $i = 0; >+ PERIOD: while (1) { >+ $i++; >+ my $j = $i + 1; >+ my $overdue_rules = Koha::CirculationRules->get_effective_rules( >+ { >+ rules => [ >+ "overdue_$i" . '_delay', "overdue_$i" . '_notice', "overdue_$i" . '_mtt', >+ "overdue_$i" . '_restrict', "overdue_$j" . '_delay' >+ ], >+ categorycode => $category, >+ branchcode => $branchcode >+ } >+ ); >+ $verbose and warn "branch '$branchcode', categorycode = $category pass $i\n"; > >- $verbose and warn "branch '$branchcode', categorycode = $overdue_rules->{categorycode} pass $i\n"; >+ if ( !$overdue_rules->{ "overdue_$i" . '_delay' } ) { >+ last PERIOD; >+ } > >- my $mindays = $overdue_rules->{"delay$i"}; # the notice will be sent after mindays days (grace period) >+ my $mindays = >+ $overdue_rules->{ "overdue_$i" . '_delay' }; # the notice will be sent after mindays days (grace period) > my $maxdays = ( >- $overdue_rules->{ "delay" . ( $i + 1 ) } >- ? $overdue_rules->{ "delay" . ( $i + 1 ) } - 1 >+ $overdue_rules->{ "overdue_$j" . '_delay' } >+ ? $overdue_rules->{ "overdue_$j" . '_delay' } - 1 > : ($MAX) > ); # issues being more than maxdays late are managed somewhere else. (borrower probably suspended) > > next unless defined $mindays; > >- if ( !$overdue_rules->{"letter$i"} ) { >+ if ( !$overdue_rules->{ "overdue_$i" . '_notice' } ) { > $verbose and warn sprintf "No letter code found for pass %s\n", $i; > next PERIOD; > } >- $verbose and warn sprintf "Using letter code '%s' for pass %s\n", $overdue_rules->{"letter$i"}, $i; >+ $verbose >+ and warn sprintf "Using letter code '%s' for pass %s\n", $overdue_rules->{ "overdue_$i" . '_notice' }, >+ $i; > > # $letter->{'content'} is the text of the mail that is sent. > # this text contains fields that are replaced by their value. Those fields must be written between brackets >@@ -551,9 +562,9 @@ END_SQL > } > push @borrower_parameters, $branchcode; > } >- if ( $overdue_rules->{categorycode} ) { >+ if ($category) { > $borrower_sql .= ' AND borrowers.categorycode=? '; >- push @borrower_parameters, $overdue_rules->{categorycode}; >+ push @borrower_parameters, $category; > } > $borrower_sql .= ' AND categories.overduenoticerequired=1 ORDER BY issues.borrowernumber'; > >@@ -565,7 +576,7 @@ END_SQL > warn sprintf "--------Borrower SQL------\n"; > warn $borrower_sql > . "\n $branchcode | " >- . $overdue_rules->{'categorycode'} >+ . $category > . "\n ($mindays, $maxdays, " > . $date_to_run->datetime() . ")\n"; > warn sprintf "--------------------------\n"; >@@ -637,21 +648,21 @@ END_SQL > my $letter = Koha::Notice::Templates->find_effective_template( > { > module => 'circulation', >- code => $overdue_rules->{"letter$i"}, >+ code => $overdue_rules->{ "overdue_$i" . '_notice' }, > branchcode => $branchcode, > lang => $patron->lang > } > ); > > unless ($letter) { >- $verbose and warn qq|Message '$overdue_rules->{"letter$i"}' content not found|; >+ $verbose and warn qq|Message '$overdue_rules->{"overdue_$i"."_notice"}' content not found|; > > # might as well skip while PERIOD, no other borrowers are going to work. > # FIXME : Does this mean a letter must be defined in order to trigger a debar ? > next PERIOD; > } > >- if ( $overdue_rules->{"debarred$i"} ) { >+ if ( $overdue_rules->{ "overdue_$i" . '_restrict' } ) { > > #action taken is debarring > AddUniqueDebarment( >@@ -715,11 +726,7 @@ END_SQL > } > $sth2->finish; > >- my @message_transport_types = >- @{ GetOverdueMessageTransportTypes( $branchcode, $overdue_rules->{categorycode}, $i ) }; >- @message_transport_types = >- @{ GetOverdueMessageTransportTypes( q{}, $overdue_rules->{categorycode}, $i ) } >- unless @message_transport_types; >+ my @message_transport_types = split( /,/, $overdue_rules->{ "overdue_$i" . '_mtt' } ); > > my $print_sent = 0; # A print notice is not yet sent for this patron > for my $mtt (@message_transport_types) { >@@ -739,7 +746,7 @@ END_SQL > my $letter_exists = Koha::Notice::Templates->find_effective_template( > { > module => 'circulation', >- code => $overdue_rules->{"letter$i"}, >+ code => $overdue_rules->{ "overdue_$i" . '_notice' }, > message_transport_type => $effective_mtt, > branchcode => $branchcode, > lang => $patron->lang >@@ -748,7 +755,7 @@ END_SQL > > my $letter = parse_overdues_letter( > { >- letter_code => $overdue_rules->{"letter$i"}, >+ letter_code => $overdue_rules->{ "overdue_$i" . '_notice' }, > borrowernumber => $borrowernumber, > branchcode => $branchcode, > items => \@items, >@@ -764,7 +771,7 @@ END_SQL > } > ); > unless ( $letter && $letter->{content} ) { >- $verbose and warn qq|Message '$overdue_rules->{"letter$i"}' content not found|; >+ $verbose and warn qq|Message '$overdue_rules->{"overdue_$i"."_notice"}' content not found|; > > # this transport doesn't have a configured notice, so try another > next; >-- >2.48.1
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 10190
:
170357
|
170358
|
170359
|
170360
|
170361
|
170362
|
170363
|
170364
|
170365
|
170366
|
170367
|
170368
|
170369
|
170370
|
170371
|
170372
|
170373
|
170374
|
170375
|
170376
|
170380
|
170449
|
171727
|
171728
|
171729
|
171730
|
171731
|
171732
|
171733
|
171734
|
171735
|
171736
|
171737
|
171738
|
171739
|
171740
|
171741
|
171742
|
171743
|
171744
|
171745
|
171746
|
171747
|
171748
|
171749
|
171750
|
171751
|
171752
|
171753
|
171754
|
171755
|
172588
|
172589
|
172590
|
172591
|
172592
|
172593
|
172594
|
172595
|
172596
|
172597
|
172598
|
172599
|
172600
|
172601
|
172602
|
172603
|
172604
|
172605
|
172606
|
172607
|
172608
|
172609
|
172612
|
172614
|
172617
|
172619
|
172621
|
172622
|
172623
|
172624
|
172625
|
172626
|
172630
|
172631
|
172632
|
172633
|
172634
|
172635
|
172636
|
172637
|
172638
|
172639
|
172640
|
172641
|
172642
|
172643
|
172644
|
172645
|
172646
|
172647
|
172648
|
172649
|
172650
|
172651
|
172652
|
172653
|
172654
|
172655
|
172656
|
172657
|
172658
|
172659
|
172660
|
172661
|
172662
|
172663
|
178643
|
178644
|
178645
|
178646
|
178647
|
178648
|
178649
|
178650
|
178651
|
178652
|
178653
|
178654
|
178655
|
178656
|
178657
|
178658
|
178659
|
178660
|
178661
|
178662
|
178663
|
178664
|
178665
|
178666
|
178667
|
178668
|
178669
|
178670
|
178671
|
178672
|
178673
|
178674
|
178675
|
188075
|
188076
|
188077
|
188078
|
188079
|
188080
|
188081
|
188082
|
188083
|
188084
|
188085
|
188086
|
188087
|
188088
|
188476
|
189345
|
189863
|
189864
|
189865
|
189866
|
189867
|
189868
|
191749
|
191750
|
191751
|
191752
|
191753
|
191754
|
191755
|
191756
|
191757
|
191758
|
191759
|
191760
|
191761
|
191762
|
191763
|
191795
|
191796
|
191805
|
191854
|
191873
|
192871
|
192872
|
192873
|
192874
|
192875
|
192876
|
192877
|
192878
|
192879
|
192880
|
192881
|
192882
|
192883
|
192884
|
192885
|
192886
|
192887
|
192888
|
192889
|
192890
|
192891
|
192892
|
192893
|
192894
|
192895
|
192896
|
192897
|
192898
|
192899
|
193864
|
193866
|
193867
|
193868
|
193869
|
193870
|
193871
|
193872
|
193873
|
193874
|
193875
|
193876
|
193877
|
193878
|
193879
|
193880
|
193881
|
193882
|
193883
|
193884
|
193885
|
193886
|
193887
|
193888
|
193889
|
193890
|
193891
|
193892
|
193893
|
193894
|
193895
|
193896
|
193897
|
193898
|
193899
|
193900
|
193901
|
193902
|
193903
|
193904
|
193905
|
193979
|
194045
|
194046
|
194047
|
194048
|
194049
|
194050
|
194051
|
194052
|
194053
|
194054
|
194055
|
194056
|
194057
|
194058
|
194059
|
194060
|
194061
|
194062
|
194063
|
194064
|
194065
|
194066
|
194067
|
194068
|
194069
|
194070
|
194071
|
194072
|
194073
|
194074
|
194075
|
194076
|
194077
|
194078
|
194079
|
194080
|
194081
|
194082
|
194083
|
194084
|
194085
|
194086
|
194087
|
194088
|
194090
|
194094