From 65ae06ce09630c9962d85ff3c45ac640aa87cd23 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Mon, 9 Mar 2015 09:34:50 +0100 Subject: [PATCH] [PASSED QA] Bug 13601: Fix special case in basket.pl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There is a badly managed date in acqui/basket.pl: if the date is 15/01/2015 (metric format), it will become 2015-1-15 after the following line: $estimateddeliverydate = "$year-$month-$day"; Add_Delta_Days is used at several place, and the ouput is forced to display date on 4 digits and month/day on 2 digits. This patch does the same thing for $estimateddeliverydate. Note that I previously developed a patch to take this format into account (with missing 0) in Koha::DateUtils::dt_from_string, but I don't think it's a good idea to manage bad formated dates. We will certainly find some issues after previous patches, but it will permit to catch them! IMO it's preferable than to keep them hidden. The patch was: diff --git a/Koha/DateUtils.pm b/Koha/DateUtils.pm index 5fe2653..4434a67 100644 --- a/Koha/DateUtils.pm +++ b/Koha/DateUtils.pm @@ -72,17 +72,17 @@ sub dt_from_string { my $fallback_re = qr| (?\d{4}) - - (?\d{2}) + (?\d{1,2}) - - (?\d{2}) + (?\d{1,2}) |xms; if ( $date_format eq 'metric' ) { # metric format is "dd/mm/yyyy[ hh:mm:ss]" $regex = qr| - (?\d{2}) + (?\d{1,2}) / - (?\d{2}) + (?\d{1,2}) / (?\d{4}) |xms; @@ -90,9 +90,9 @@ sub dt_from_string { elsif ( $date_format eq 'us' ) { # us format is "mm/dd/yyyy[ hh:mm:ss]" $regex = qr| - (?\d{2}) + (?\d{1,2}) / - (?\d{2}) + (?\d{1,2}) / (?\d{4}) |xms; diff --git a/t/DateUtils.t b/t/DateUtils.t index 886e1d6..0877240 100755 --- a/t/DateUtils.t +++ b/t/DateUtils.t @@ -189,3 +189,8 @@ is( output_pref( { dt => $dt } ), '31/01/2015 12:34', 'dt_from_string should mat # date before 1900 $dt = dt_from_string('01/01/1900'); is( output_pref( { dt => $dt, dateonly => 1 } ), '01/01/1900', 'dt_from_string should manage date < 1900' ); + +# missing 0 +$dt = dt_from_string('1/1/2015'); +is( output_pref( { dt => $dt, dateonly => 1 } ), '01/01/2015', 'dt_from_string should generate a DT object even if 0 are missing' ); Works as expected. Signed-off-by: Marc VĂ©ron Signed-off-by: Katrin Fischer --- acqui/basket.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/acqui/basket.pl b/acqui/basket.pl index 3dd917c..a44cdd1 100755 --- a/acqui/basket.pl +++ b/acqui/basket.pl @@ -312,7 +312,7 @@ if ( $op eq 'delete_confirm' ) { if( $basket->{closedate} ) { my ($year, $month, $day) = ($basket->{closedate} =~ /(\d+)-(\d+)-(\d+)/); ($year, $month, $day) = Add_Delta_Days($year, $month, $day, $bookseller->{deliverytime}); - $estimateddeliverydate = "$year-$month-$day"; + $estimateddeliverydate = sprintf( "%04d-%02d-%02d", $year, $month, $day ); } # if new basket, pre-fill infos -- 1.9.1