Bug 10190: Update itiva script to reflect move to circ_rules

Sponsored-by: Glasgow Colleges Library Group <https://library.cityofglasgowcollege.ac.uk>
Signed-off-by: George Harkins <George.Harkins@cityofglasgowcollege.ac.uk>
Signed-off-by: Michaela <michaela.sieber@kit.edu>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Pedro Amorim <pedro.amorim@openfifth.co.uk>
This commit is contained in:
Martin Renvoize 2024-08-15 14:37:03 +01:00 committed by Pedro Amorim
parent 8d5d976ff0
commit bb88db9be3
No known key found for this signature in database
GPG Key ID: 06B75BA7F3894D55
2 changed files with 32 additions and 18 deletions

View File

@ -32,7 +32,6 @@ BEGIN {
GetBranchcodesWithOverdueRules
get_chargeable_units
GetOverduesForBranch
GetOverdueMessageTransportTypes
parse_overdues_letter
GetIssuesIteminfo
);

View File

@ -262,37 +262,52 @@ sub GetOverdueIssues {
my $query =
"SELECT borrowers.borrowernumber, borrowers.cardnumber, borrowers.title as patron_title, borrowers.firstname, borrowers.surname,
borrowers.phone, borrowers.email, borrowers.branchcode, biblio.biblionumber, biblio.title, items.barcode, issues.date_due,
max(overduerules.branchcode) as rulebranch, TO_DAYS(NOW())-TO_DAYS(date_due) as daysoverdue, delay1, delay2, delay3,
TO_DAYS(NOW())-TO_DAYS(date_due) as daysoverdue, borrowers.categorycode as categorycode, items.itemtype as itemtype,
issues.branchcode as site, branches.branchname as site_name
FROM borrowers JOIN issues USING (borrowernumber)
JOIN items USING (itemnumber)
JOIN biblio USING (biblionumber)
JOIN branches ON (issues.branchcode = branches.branchcode)
JOIN overduerules USING (categorycode)
JOIN overduerules_transport_types USING ( overduerules_id )
WHERE ( overduerules.branchcode = borrowers.branchcode or overduerules.branchcode = '')
AND overduerules_transport_types.message_transport_type = 'itiva'
AND ( (TO_DAYS(NOW())-TO_DAYS(date_due) ) = delay1
OR (TO_DAYS(NOW())-TO_DAYS(date_due) ) = delay2
OR (TO_DAYS(NOW())-TO_DAYS(date_due) ) = delay3 )
WHERE ( overduerules.branchcode = borrowers.branchcode )
$patron_branchcode_filter
GROUP BY items.itemnumber
ORDER BY items.itemtype, borrowers.categorycode, branches.branchcode
";
my $sth = $dbh->prepare($query);
$sth->execute();
my @trigger_numbers;
my $triggers = Koha::CirculationRules->search(
{ rule_name => { 'like' => 'overdue_%_mtt' }, rule_value => { like => '%itiva%' } } );
for my $trigger ( $triggers->all ) {
my $trigger_number = $trigger->rule_name;
$trigger_number =~ s/(.*)(\d+)(.*)/$2/;
push @trigger_numbers, $trigger_number unless grep { $_ == $trigger_number } @trigger_numbers;
}
my @rules = map { ( "overdue_$_" . "_delay", "overdue_$_" . "_notice", "overdue_$_" . "_mtt" ) } @trigger_numbers;
my @results;
while ( my $issue = $sth->fetchrow_hashref() ) {
if ( $issue->{'daysoverdue'} == $issue->{'delay1'} ) {
$issue->{'level'} = 1;
} elsif ( $issue->{'daysoverdue'} == $issue->{'delay2'} ) {
$issue->{'level'} = 2;
} elsif ( $issue->{'daysoverdue'} == $issue->{'delay3'} ) {
$issue->{'level'} = 3;
} else {
my $effective_rules = Koha::CirculationRules->get_effective_rules(
{
categorycode => $issue->{'categorycode'},
branchcode => $issue->{'branchcode'},
itemtype => $issue->{'itemtype'},
rules => \@rules
}
);
# this shouldn't ever happen, based our SQL criteria
my $i = 1;
PERIOD: while (1) {
last PERIOD if ( !defined( $effective_rules->{ "overdue_$i" . '_delay' } ) );
if ( $effective_rules->{ "overdue_$i" . '_mtt' } =~ /itiva/
&& $issue->{'daysoverdue'} == $effective_rules->{ "overdue_$i" . '_delay' } )
{
$issue->{'level'} = $i;
push @results, $issue;
}
$i++;
}
push @results, $issue;
}
return @results;
}