From c480e9e7ec9e8f464302b776c66c7b466647e3f8 Mon Sep 17 00:00:00 2001 From: Rolando Isidoro Date: Tue, 21 Apr 2015 21:35:05 -0400 Subject: [PATCH] Bug 14036: "Date::Calc::Add_Delta_YM(): not a valid date" error when accessing subscription detail When accessing the subscription detail page for a serial with unknown "Planned date" and/or "Published date" the following error occurs: subscription-detail.pl: Date::Calc::PP::Add_Delta_YM(): Date::Calc::Add_Delta_YM(): not a valid date at /usr/share/koha/lib/C4/Serials.pm line 2607 at /usr/share/perl/5.14/CGI/Carp.pm line 379 CGI::Carp::realdie('[Tue Apr 21 14:43:06 2015] subscription-detail.pl: Date::Calc...') called at /usr/share/perl/5.14/CGI/Carp.pm line 475 CGI::Carp::die('Date::Calc::PP::Add_Delta_YM(): Date::Calc::Add_Delta_YM(): n...') called at /usr/share/perl5/Carp/Clan.pm line 225 Carp::Clan::__ANON__('Date::Calc::Add_Delta_YM(): not a valid date') called at /usr/share/perl5/Date/Calc/PP.pm line 408 Date::Calc::PP::DATECALC_DATE_ERROR('Add_Delta_YM') called at /usr/share/perl5/Date/Calc/PP.pm line 817 Date::Calc::PP::Add_Delta_YM(0000, 00, 00, 0, 1) called at /usr/share/koha/lib/C4/Serials.pm line 2607 C4::Serials::GetNextDate('HASH(0x6244de0)', '0000-00-00') called at /usr/share/koha/lib/C4/Serials.pm line 2382 C4::Serials::abouttoexpire(525) called at /usr/share/koha/intranet/cgi-bin/serials/subscription-detail.pl line 104 This patch adds validation to prevent the error from occurring. Follow the test plan in the subsequent patch. This patch deals solely with this. > C4::Serials::GetNextDate('HASH(0x6244de0)', '0000-00-00') called at /usr/share/koha/lib/C4/Serials.pm line 2382 abouttoexpire issues exist, but may be resolved by applying bug 13109 first. --- C4/Serials.pm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/C4/Serials.pm b/C4/Serials.pm index c3f7fbc..baf03a8 100644 --- a/C4/Serials.pm +++ b/C4/Serials.pm @@ -2383,6 +2383,8 @@ sub GetNextDate { if ($freqdata->{'unit'}) { my ( $year, $month, $day ) = split /-/, $publisheddate; + return unless check_date($year, $month, $day); + # Process an irregularity Hash # Suppose that irregularities are stored in a string with this structure # irreg1;irreg2;irreg3 -- 1.9.1