From ce6dd8e5bb30017f3aae2d1ef3d7ca81e59d74b3 Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Tue, 19 Mar 2013 13:40:50 +0100 Subject: [PATCH] Bug 8378 - in overdues changed to <> This patch reintroduces fines in overdue_notices.pl with minimal changes to exsiting code. It DOES changes template syntax, it used to be USD but currency was not recalculated and used only to select format, so now we are using active system currency because values are in it anyway. Example notify template: "<>" by <>, <>, Barcode: <> Fine: <> If your active currency doesn't have valid ISO code this code will fallback to sprintf with two decimal digits, and you can insert currency symbol in template itself (currency field is not editable through web interface, so this fallback might be useful for existing installations). Test scenario: 1. configure fine amount under "Circulation and fines rules" for patron category and item type 2. checkout item with correct type to partron in correct category with due date set to yesterday 3. verify that overdue notice uses new <> tag 4. run ./misc/cronjobs/fines.pl to calculate fines 5. run ./misc/cronjobs/overdue_notices.pl -n and verify that fine amount is included Notes: Tested using the default ODUE notice, changing: USD for <> Everything worked as expected with finesmode=production set. Signed-off-by: Tomas Cohen Arazi Signed-off-by: Jonathan Druart Signed-off-by: Jared Camins-Esakov Signed-off-by: Chris Cormack --- misc/cronjobs/overdue_notices.pl | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/misc/cronjobs/overdue_notices.pl b/misc/cronjobs/overdue_notices.pl index afb95ce1e8..d63836f870 100755 --- a/misc/cronjobs/overdue_notices.pl +++ b/misc/cronjobs/overdue_notices.pl @@ -40,6 +40,7 @@ use C4::Dates qw/format_date/; use C4::Debug; use C4::Letters; use C4::Overdues qw(GetFine); +use C4::Budgets qw(GetCurrency); =head1 NAME @@ -657,13 +658,7 @@ sub parse_letter { $tables{'branches'} = $p; } - my $currency_format; - if ( defined $params->{'letter'}->{'content'} - and $params->{'letter'}->{'content'} =~ m/(.*)<\/fine>/o ) - { # process any fine tags... - $currency_format = $1; - $params->{'letter'}->{'content'} =~ s/.*<\/fine>/<>/o; - } + my $currency_format = GetCurrency()->{currency}; my @item_tables; if ( my $i = $params->{'items'} ) { @@ -675,8 +670,9 @@ sub parse_letter { $item_format = $1; } - $item->{'fine'} = currency_format($currency_format, "$fine", FMT_SYMBOL) - if $currency_format; + $item->{'fine'} = currency_format($currency_format, "$fine", FMT_SYMBOL); + # if active currency isn't correct ISO code fallback to sprintf + $item->{'fine'} = sprintf('%.2f', $fine) unless $item->{'fine'}; push @item_tables, { 'biblio' => $item->{'biblionumber'}, -- 2.39.5