From 07b11dd759d0b1b1f25c67356fc362478462a0d9 Mon Sep 17 00:00:00 2001 From: Ian Walls Date: Thu, 9 Sep 2010 11:56:56 -0400 Subject: [PATCH] Fixes bug 5212: Overdue notices pulling in wrong item information Content-Type: text/plain; charset="utf-8" Code was erroneously using the biblionumber as the key for the items table, resulting in incorrect information for any <> placed inside the 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 --- 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'? '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_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>/$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>)/$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>)/$1\n$item_format/ if scalar(@{$params->{'items'}} > 0); } } -- 1.5.6.5