BUG 1580, subscription irregularities and volume type, not passed when editing subscr...
[koha_gimpoz] / serials / subscription-add.pl
index d132bdb..47430cd 100755 (executable)
 
 use strict;
 use CGI;
+use Date::Calc qw(Today Day_of_Year Week_of_Year Add_Delta_Days);
 use C4::Koha;
 use C4::Auth;
-use C4::Date;
-use C4::Output;
+use C4::Dates qw/format_date format_date_in_iso/;
 use C4::Acquisition;
-use C4::Interface::CGI::Output;
+use C4::Output;
 use C4::Context;
 use C4::Branch; # GetBranches
 use C4::Serials;
-use Date::Manip;
 use C4::Letters;
 
+#use Smart::Comments;
+
 my $query = new CGI;
 my $op = $query->param('op');
 my $dbh = C4::Context->dbh;
@@ -53,16 +54,19 @@ my ($template, $loggedinuser, $cookie)
 
 my $weekarrayjs='';
 my $count = 0;
-my ($year, $month, $day) = UnixDate("today", "%Y", "%m", "%d");
-my $firstday = Date_DayOfYear($month,$day,$year);
-my $wkno = Date_WeekOfYear($month,$day,$year,1); # week starting monday
+my ($year, $month, $day) = Today;
+my $firstday   =  Day_of_Year($year,$month,$day);
+my ($wkno,$yr) = Week_of_Year($year,$month,$day); # week starting monday
 my $weekno = $wkno;
 for(my $i=$firstday;$i<($firstday+365);$i=$i+7){
         $count = $i;
         if($wkno > 52){$year++; $wkno=1;}
         if($count>365){$count=$i-365;}    
-        my ($y,$m,$d) = Date_NthDayOfYear($year,$count);
-        my $output = "$y-$m-$d";
+        my ($y,$m,$d) = Add_Delta_Days(1,1,1,$i - 1);
+
+        #BUGFIX padding add_delta_days() date
+        my $output  = sprintf("%04d-%02d-%02d",$y , $m, $d );
+
         $weekarrayjs .= "'Wk $wkno: ".format_date($output)."',";
         $wkno++;    
 }
@@ -101,23 +105,33 @@ foreach my $thisbranch (keys %$branches) {
             );
     push @branchloop, \%row;
 }
-$template->param(branchloop => \@branchloop);
+$template->param(branchloop => \@branchloop,
+    DHTMLcalendar_dateformat => C4::Dates->DHTMLcalendar(),
+);
 
 if ($op eq 'mod'||$op eq 'dup') {
+
     my $subscriptionid = $query->param('subscriptionid');
 #     warn "irregularity :$irregularity numberpattern : $numberpattern, callnumber :$callnumber, firstacquidate :$firstacquidate";
     my $subs = &GetSubscription($subscriptionid);
-    $subs->{'startdate'}=format_date($subs->{'startdate'});
-    $subs->{'firstacquidate'}=format_date($subs->{'firstacquidate'});
-    $subs->{'histstartdate'}=format_date($subs->{'histstartdate'});
-    $subs->{'enddate'}=format_date($subs->{enddate});
+## FIXME : Check rights to edit if mod. Could/Should display an error message.
+    if ($subs->{'cannotedit'} && $op eq 'mod'){
+      warn "Attempt to modify subscription $subscriptionid by ".C4::Context->userenv->{'id'}." not allowed";
+      print $query->redirect("/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=$subscriptionid");
+    }  
+       for (qw(startdate firstacquidate histstartdate enddate)) {
+       $subs->{$_} = format_date($subs->{$_});
+       }
     $subs->{'letter'}='' unless($subs->{'letter'});
+    $irregularity   = $subs->{'irregularity'};
+    $numberpattern  = $subs->{'numberpattern'};
+
 
     if($subs->{numberlength} > 0){
         $sublength = $subs->{numberlength};
         $sub_on = $subscription_types[0];
     } elsif ($subs->{weeklength}>0){
-        $sublength = $weeklength;
+        $sublength = $subs->{weeklength};
         $sub_on = $subscription_types[1];
     } else {
         $sublength = $subs->{monthlength};
@@ -143,18 +157,12 @@ if ($op eq 'mod'||$op eq 'dup') {
             );
     $template->param(
                 "periodicity".$subs->{'periodicity'} => 1,
-                "dow".$subs->{'periodicity'} => 1,
-                "numberpattern".$subs->{'periodicity'} => 1,
+                "dow".$subs->{'dow'} => 1,
+                "numberpattern".$subs->{'numberpattern'} => 1,
                 );
 }
 
 if ($op eq 'addsubscription') {
-    my @irregular = $query->param('irregular');
-    my $irregular_count = scalar(@irregular);
-    for(my $i =0;$i<$irregular_count;$i++){
-        $irregularity .=$irregular[$i].",";
-    }
-    $irregularity =~ s/\,$//;
 
     my $auser = $query->param('user');
     my $branchcode = $query->param('branchcode');
@@ -165,7 +173,7 @@ if ($op eq 'addsubscription') {
     my $firstacquidate = $query->param('firstacquidate');    
     my $periodicity = $query->param('periodicity');
     my $dow = $query->param('dow');
-    my $irregularity = $query->param('irregularity');
+    my @irregularity = $query->param('irregular');
     my $numberlength = 0;
     my $weeklength = 0;
     my $monthlength = 0;
@@ -179,22 +187,24 @@ if ($op eq 'addsubscription') {
     } else {
         $numberlength = $sublength;
     }
-
     my $add1 = $query->param('add1');
     my $every1 = $query->param('every1');
     my $whenmorethan1 = $query->param('whenmorethan1');
     my $setto1 = $query->param('setto1');
     my $lastvalue1 = $query->param('lastvalue1');
+    my $innerloop1 =$query->param('innerloop1');
     my $add2 = $query->param('add2');
     my $every2 = $query->param('every2');
     my $whenmorethan2 = $query->param('whenmorethan2');
     my $setto2 = $query->param('setto2');
+    my $innerloop2 =$query->param('innerloop2');
     my $lastvalue2 = $query->param('lastvalue2');
     my $add3 = $query->param('add3');
     my $every3 = $query->param('every3');
     my $whenmorethan3 = $query->param('whenmorethan3');
     my $setto3 = $query->param('setto3');
     my $lastvalue3 = $query->param('lastvalue3');
+    my $innerloop3 =$query->param('innerloop3');
     my $numberingmethod = $query->param('numberingmethod');
     my $status = 1;
     my $biblionumber = $query->param('biblionumber');
@@ -203,15 +213,14 @@ if ($op eq 'addsubscription') {
     my $internalnotes = $query->param('internalnotes');
     my $hemisphere = $query->param('hemisphere') || 1;
        my $letter = $query->param('letter');
-    ### BugFIX : hdl doesnot know what innerloops or letter stand for but it seems necessary. So he adds them.
+    # ## BugFIX : hdl doesnot know what innerloops or letter stand for but it seems necessary. So he adds them.
     my $manualhistory = $query->param('manualhist');
-    my ($innerloop1,$innerloop2,$innerloop3);
        my $subscriptionid = NewSubscription($auser,$branchcode,$aqbooksellerid,$cost,$aqbudgetid,$biblionumber,
                                        $startdate,$periodicity,$dow,$numberlength,$weeklength,$monthlength,
                                        $add1,$every1,$whenmorethan1,$setto1,$lastvalue1,$innerloop1,
                                        $add2,$every2,$whenmorethan2,$setto2,$lastvalue2,$innerloop2,
                                        $add3,$every3,$whenmorethan3,$setto3,$lastvalue3,$innerloop3,
-                                       $numberingmethod, $status, $notes,$letter,$firstacquidate,$irregularity,
+                                       $numberingmethod, $status, $notes,$letter,$firstacquidate,join(",",@irregularity),
                     $numberpattern, $callnumber, $hemisphere,($manualhistory?$manualhistory:0),$internalnotes
                                );