From 0489f9d72fda5060cab2d9436a76b2184055d724 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Mon, 9 Mar 2015 09:34:50 +0100 Subject: [PATCH] Bug 13601: Fix special case in basket.pl MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 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 Signed-off-by: Tomas Cohen Arazi --- acqui/basket.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/acqui/basket.pl b/acqui/basket.pl index 3dd917c708..a44cdd13ef 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 -- 2.39.5