[Koha-patches] [PATCH] Fixes bug 5212: Overdue notices pulling in wrong item information
Nicole Engard
nengard at bywatersolutions.com
Thu Sep 9 19:56:42 CEST 2010
From: Ian Walls <ian.walls at bywatersolutions.com>
Code was erroneously using the biblionumber as the key for the items table, resulting in incorrect information for any
<<items.--field-->> placed inside the <item> </item> tags of an Overdue Notice.
This patch replaces the biblionumbers listed in the @items array param with hashes consisting of the biblionumber,
biblioitemnumber and itemnumber. These values are used as the correct keys for the substitution.
Signed-off-by: Nicole Engard <nengard at bywatersolutions.com>
---
misc/cronjobs/overdue_notices.pl | 26 ++++++++++++++++----------
1 files changed, 16 insertions(+), 10 deletions(-)
diff --git a/misc/cronjobs/overdue_notices.pl b/misc/cronjobs/overdue_notices.pl
index 4de6cdd..d56c950 100755
--- a/misc/cronjobs/overdue_notices.pl
+++ b/misc/cronjobs/overdue_notices.pl
@@ -486,14 +486,17 @@ END_SQL
my @item_info = map { $_ =~ /^date|date$/ ? format_date( $item_info->{$_} ) : $item_info->{$_} || '' } @item_content_fields;
$titles .= join("\t", @item_info) . "\n";
$itemcount++;
- push (@items, $item_info->{'biblionumber'});
+ my %item = (biblionumber => $item_info->{'biblionumber'},
+ biblioitemnumber => $item_info->{'biblioitemnumber'},
+ itemnumber => $item_info->{'itemnumber'});
+ push (@items, \%item);
}
$sth2->finish;
$letter = parse_letter(
{ letter => $letter,
borrowernumber => $borrowernumber,
branchcode => $branchcode,
- biblionumber => \@items,
+ items => \@items,
substitute => { # this appears to be a hack to overcome incomplete features in this code.
bib => $branch_details->{'branchname'}, # maybe 'bib' is a typo for 'lib<rary>'?
'items.content' => $titles
@@ -651,12 +654,15 @@ sub parse_letter { # FIXME: this code should probably be moved to C4::Letters:pa
$params->{'letter'} = C4::Letters::parseletter( $params->{'letter'}, 'branches', $params->{'branchcode'} );
}
- if ( $params->{'biblionumber'} ) {
+ if ( $params->{'items'} ) {
my $item_format = '';
PROCESS_ITEMS:
- while (scalar(@{$params->{'biblionumber'}}) > 0) {
- my $item = shift @{$params->{'biblionumber'}};
- my $fine = GetFine($item, $params->{'borrowernumber'});
+ while (scalar(@{$params->{'items'}}) > 0) {
+ my $item = shift @{$params->{'items'}};
+ my $biblionumber = $item->{'biblionumber'};
+ my $biblioitemnumber = $item->{'biblioitemnumber'};
+ my $itemnumber = $item->{'itemnumber'};
+ my $fine = GetFine($biblionumber, $params->{'borrowernumber'});
if (!$item_format) {
$params->{'letter'}->{'content'} =~ m/(<item>.*<\/item>)/;
$item_format = $1;
@@ -668,10 +674,10 @@ sub parse_letter { # FIXME: this code should probably be moved to C4::Letters:pa
$formatted_fine = Encode::encode("utf8", $formatted_fine);
$params->{'letter'}->{'content'} =~ s/<fine>.*<\/fine>/$formatted_fine/;
}
- $params->{'letter'} = C4::Letters::parseletter( $params->{'letter'}, 'biblio', $item );
- $params->{'letter'} = C4::Letters::parseletter( $params->{'letter'}, 'biblioitems', $item );
- $params->{'letter'} = C4::Letters::parseletter( $params->{'letter'}, 'items', $item );
- $params->{'letter'}->{'content'} =~ s/(<item>.*<\/item>)/$1\n$item_format/ if scalar(@{$params->{'biblionumber'}} > 0);
+ $params->{'letter'} = C4::Letters::parseletter( $params->{'letter'}, 'biblio', $biblionumber );
+ $params->{'letter'} = C4::Letters::parseletter( $params->{'letter'}, 'biblioitems', $biblioitemnumber );
+ $params->{'letter'} = C4::Letters::parseletter( $params->{'letter'}, 'items', $itemnumber );
+ $params->{'letter'}->{'content'} =~ s/(<item>.*<\/item>)/$1\n$item_format/ if scalar(@{$params->{'items'}} > 0);
}
}
--
1.5.6.5
More information about the Koha-patches
mailing list