Clean up before final commits
[koha.git] / serials / subscription-add.pl
index 8cdc973..cbe75c2 100755 (executable)
@@ -49,25 +49,24 @@ use CGI;
 use C4::Koha;
 use C4::Auth;
 use C4::Date;
-use C4::Output;
 use C4::Serials;
 use C4::Bookfund;
 use C4::Interface::CGI::Output;
 use C4::Context;
-use HTML::Template;
 use C4::Letters;
 use C4::Members;
+use Date::Manip;
 
 my $query = new CGI;
 my $op = $query->param('op');
 my $dbh = C4::Context->dbh;
 my ($subscriptionid,$auser,$librarian,$cost,$aqbooksellerid, $aqbooksellername,$aqbudgetid, $bookfundid, $startdate, $periodicity,
-    $dow, $numberlength, $weeklength, $monthlength,
+    $publisheddate,$dow,$irregularity, $numberpattern, $numberlength, $weeklength, $monthlength, $sublength,
     $add1,$every1,$whenmorethan1,$setto1,$lastvalue1,$innerloop1,
     $add2,$every2,$whenmorethan2,$setto2,$lastvalue2,$innerloop2,
     $add3,$every3,$whenmorethan3,$setto3,$lastvalue3,$innerloop3,
     $numberingmethod, $status, $biblionumber,
-    $bibliotitle, $notes, $letter);
+    $title, $notes, $letter,$callnumber,$hemisphere);
 
     my @budgets;
 my ($template, $loggedinuser, $cookie)
@@ -79,6 +78,29 @@ my ($template, $loggedinuser, $cookie)
                 debug => 1,
                 });
 
+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 $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";
+        $weekarrayjs .= "'Wk $wkno: ".format_date($output)."',";
+        $wkno++;    
+}
+chop($weekarrayjs);
+# warn $weekarrayjs;
+
+my $sub_on;
+my @subscription_types = (
+            'issues', 'weeks', 'months'
+        ); 
+my @sub_type_data;
 if ($op eq 'mod') {
     my $subscriptionid = $query->param('subscriptionid');
     my $subs = &GetSubscription($subscriptionid);
@@ -91,11 +113,36 @@ if ($op eq 'mod') {
     $aqbudgetid = $subs->{'aqbudgetid'};
     defined $aqbudgetid or $aqbudgetid='';
     $startdate = $subs->{'startdate'};
+   $publisheddate = $subs->{'publisheddate'};
     $periodicity = $subs->{'periodicity'};
     $dow = $subs->{'dow'};
+        $irregularity = $subs->{'irregularity'};
+        $numberpattern = $subs->{'numberpattern'};
     $numberlength = $subs->{'numberlength'};
     $weeklength = $subs->{'weeklength'};
     $monthlength = $subs->{'monthlength'};
+       if($monthlength > 0){
+           $sublength = $monthlength;
+           $sub_on = $subscription_types[2];
+       } elsif ($weeklength>0){
+           $sublength = $weeklength;
+           $sub_on = $subscription_types[1];
+       } else {
+           $sublength = $numberlength;
+           $sub_on = $subscription_types[0];
+       }
+        
+
+        while (@subscription_types) {
+           my $sub_type = shift @subscription_types;
+           my %row = ( 'name' => $sub_type );
+           if ( $sub_on eq $sub_type ) {
+            $row{'selected'} = ' selected';
+           } else {
+            $row{'selected'} = '';
+           }
+           push( @sub_type_data, \%row );
+        }
     $add1 = $subs->{'add1'};
     $every1 = $subs->{'every1'};
     $whenmorethan1 = $subs->{'whenmorethan1'};
@@ -117,7 +164,9 @@ if ($op eq 'mod') {
     $numberingmethod = $subs->{'numberingmethod'};
     $status = $subs->{status};
     $biblionumber = $subs->{'biblionumber'};
-    $bibliotitle = $subs->{'bibliotitle'},
+    $title = $subs->{'title'},
+           $callnumber = $subs->{'callnumber'};
+           $hemisphere = $subs->{'hemisphere'};
     $notes = $subs->{'notes'};
     $letter = $subs->{'letter'};
     defined $letter or $letter='';
@@ -130,12 +179,15 @@ if ($op eq 'mod') {
         cost => $cost,
         aqbudgetid => $aqbudgetid,
         bookfundid => $bookfundid,
-        startdate => format_date($startdate),
+        startdate => format_date($startdate),    
+         publisheddate => format_date($publisheddate),    
         periodicity => $periodicity,
+        numberpattern=>$numberpattern,
         dow => $dow,
         numberlength => $numberlength,
         weeklength => $weeklength,
         monthlength => $monthlength,
+       sublength=>$sublength,
         add1 => $add1,
         every1 => $every1,
         whenmorethan1 => $whenmorethan1,
@@ -157,12 +209,17 @@ if ($op eq 'mod') {
         numberingmethod => $numberingmethod,
         status => $status,
         biblionumber => $biblionumber,
-        bibliotitle => $bibliotitle,
+        title => $title,
+               callnumber => $callnumber,
         notes => $notes,
         letter => $letter,
         subscriptionid => $subscriptionid,
+        weekarrayjs => $weekarrayjs,
+               weekno => $weekno,
+               hemisphere => $hemisphere,
         "periodicity$periodicity" => 1,
         "dow$dow" => 1,
+        "numberpattern$numberpattern" => 1,
         );
 }
 
@@ -173,44 +230,80 @@ for (my $i=0;$i<=$#letterlist;$i++) {
 $template->param(letters => \@letterlist);
 
 if ($op eq 'addsubscription') {
+  my @irregular = $query->param('irregular');
+        my $irregular_count = @irregular;
+        for(my $i =0;$i<$irregular_count;$i++){
+            $irregularity .=$irregular[$i]."|";
+        }
+        $irregularity =~ s/\|$//;
+        
     my $auser = $query->param('user');
     my $aqbooksellerid = $query->param('aqbooksellerid');
     my $cost = $query->param('cost');
     my $aqbudgetid = $query->param('aqbudgetid');
     my $startdate = $query->param('startdate');
+     my $publisheddate = $query->param('publisheddate');
+    my $callnumber=$query->param('callnumber');          
     my $periodicity = $query->param('periodicity');
     my $dow = $query->param('dow');
-    my $numberlength = $query->param('numberlength');
-    my $weeklength = $query->param('weeklength');
-    my $monthlength = $query->param('monthlength');
-    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 $add2 = $query->param('add2');
-    my $every2 = $query->param('every2');
-    my $whenmorethan2 = $query->param('whenmorethan2');
-    my $setto2 = $query->param('setto2');
-    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 $numberingmethod = $query->param('numberingmethod');
-    my $status = 1;
+       my $numberlength = 0;
+       my $weeklength = 0;
+       my $monthlength = 0;
+        my $numberpattern = $query->param('numbering_pattern');
+        my $sublength = $query->param('sublength');
+        my $subtype = $query->param('subtype');
+        if ($subtype eq 'months'){
+           $monthlength = $sublength;
+       } elsif ($subtype eq 'weeks'){
+           $weeklength = $sublength;
+       } 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 $add2 = $query->param('add2');
+       my $every2 = $query->param('every2');
+       my $whenmorethan2 = $query->param('whenmorethan2');
+       my $setto2 = $query->param('setto2');
+       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 $numberingmethod = $query->param('numberingmethod');
+       my $status = 1;
     my $biblionumber = $query->param('biblionumber');
     my $notes = $query->param('notes');
     my $letter = $query->param('letter');
+            my $hemisphere = $query->param('hemisphere') || 1;
+
     my $subscriptionid = NewSubscription($auser,$aqbooksellerid,$cost,$aqbudgetid,$biblionumber,
                     $startdate,$periodicity,$dow,$numberlength,$weeklength,$monthlength,
                     $add1,$every1,$whenmorethan1,$setto1,$lastvalue1,
                     $add2,$every2,$whenmorethan2,$setto2,$lastvalue2,
                     $add3,$every3,$whenmorethan3,$setto3,$lastvalue3,
-                    $numberingmethod, $status, $notes, $letter
-                );
+                    $numberingmethod, $status, $notes, $letter,$irregularity,$hemisphere,$callnumber,$numberpattern,$publisheddate    );
     print $query->redirect("/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=$subscriptionid");
 } else {
+     while (@subscription_types) {
+           my $sub_type = shift @subscription_types;
+           my %row = ( 'name' => $sub_type );
+           if ( $sub_on eq $sub_type ) {
+            $row{'selected'} = ' selected';
+           } else {
+            $row{'selected'} = '';
+           }
+           push( @sub_type_data, \%row );
+        }    
+    $template->param(subtype => \@sub_type_data,
+                weekarrayjs => $weekarrayjs,
+                weekno => $weekno,
+       );
     output_html_with_http_headers $query, $cookie, $template->output;
 }