10 use C4::Interface::CGI::Output;
16 my $op = $query->param('op');
17 my $dbh = C4::Context->dbh;
18 my $subscriptionid = $query->param('subscriptionid');
19 # my $auser = $query->param('user');
20 my $histstartdate = format_date_in_iso($query->param('histstartdate'));
21 my $enddate = format_date_in_iso($query->param('enddate'));
22 my $recievedlist = $query->param('recievedlist');
23 my $missinglist = $query->param('missinglist');
24 my $opacnote = $query->param('opacnote');
25 my $librariannote = $query->param('librariannote');
26 my @serialids = $query->param('serialid');
27 my @serialseqs = $query->param('serialseq');
28 my @planneddates = $query->param('planneddate');
29 my @status = $query->param('status');
30 my @notes = $query->param('notes');
31 my @barcodes = $query->param('barcode');
32 my @itemcallnumbers = $query->param('itemcallnumber');
33 my @locations = $query->param('location');
34 my @itemstatus = $query->param('itemstatus');
35 my @homebranches = $query->param('branch');
36 my $hassubscriptionexpired = HasSubscriptionExpired($subscriptionid);
37 my $abouttoexpire = abouttoexpire($subscriptionid);
39 my $subscription=GetSubscription($subscriptionid);
40 my $auser = $subscription->{'librarian'}; # bob
41 my $routing = check_routing($subscriptionid); # to see if routing list exists
47 $manualdate = $query->param('planneddate');
48 $manualissue = $query->param('missingissue');
50 my $sth = $dbh->prepare("select serialid from serial where subscriptionid = ? AND serialseq = ? AND planneddate = ?");
51 $sth->execute($subscriptionid,$manualissue,format_date_in_iso($manualdate));
52 $manualid = $sth->fetchrow;
55 if ($op eq 'modsubscriptionhistory') {
56 ModSubscriptionHistory($subscriptionid,$histstartdate,$enddate,$recievedlist,$missinglist,$opacnote,$librariannote);
59 # change status except, if subscription has expired, for the "waited" issue.
60 if ($op eq 'serialchangestatus') {
61 my $sth = $dbh->prepare("select status from serial where serialid=?");
62 for (my $i=0;$i<=$#serialids;$i++) {
63 $sth->execute($serialids[$i]);
65 my ($oldstatus) = $sth->fetchrow;
67 serialchangestatus($serialids[$i],$serialseqs[$i],format_date_in_iso($planneddates[$i]),$status[$i],$notes[$i]) unless ($hassubscriptionexpired && $oldstatus == 1);
68 if (($status[$i]==2) && C4::Context->preference("serialsadditems")){
70 $info{branch}=$homebranches[$i];
71 $info{barcode}=$barcodes[$i];
72 $info{itemcallnumber}=$itemcallnumbers[$i];
73 $info{location}=$locations[$i];
74 $info{status}=$itemstatus[$i];
75 $info{notes}=$serialseqs[$i]." (".$planneddates[$i].")";
76 my ($status2, @errors)= ItemizeSerials($serialids[$i],\%info);
77 my $sth2 = $dbh->prepare("UPDATE subscriptionhistory SET lastbranch = ? WHERE subscriptionid = ?");
78 $sth2->execute($homebranches[$i],$subscriptionid);
80 # remove from missing list if item being checked in is on it
82 removeMissingIssue($serialseqs[$i],$subscriptionid);
87 if ($serialseqs[$i]) {
88 NewIssue($serialseqs[$i],$subscriptionid,$subscription->{biblionumber},$status[$i], format_date_in_iso($planneddates[$i]));
90 if (($status[$i]==2) && C4::Context->preference("serialsadditems") && !hassubscriptionexpired($subscriptionid)){
92 $info{branch}=$homebranches[$i];
93 $info{barcode}=$barcodes[$i];
94 $info{itemcallnumber}=$itemcallnumbers[$i];
95 $info{location}=$locations[$i];
96 $info{status}=$itemstatus[$i];
97 $info{notes}=$serialseqs[$i]." (".$planneddates[$i].")";
98 my ($status2, @errors)= ItemizeSerials($serialids[$i],\%info);
99 my $sth2 = $dbh->prepare("UPDATE subscriptionhistory SET lastbranch = ? WHERE subscriptionid = ?");
100 $sth2->execute($homebranches[$i],$subscriptionid);
102 # remove from missing list if item being checked in is on it
104 removeMissingIssue($serialseqs[$i],$subscriptionid);
111 my ($template, $loggedinuser, $cookie)
112 = get_template_and_user({template_name => "serials/statecollection.tmpl",
115 authnotrequired => 0,
116 flagsrequired => {catalogue => 1},
120 my $subs = &GetSubscription($subscriptionid);
121 my ($totalissues,@serialslist) = old_getserials($subscriptionid);
122 my $count = @serialslist;
123 for(my $i=0;$i<$count;$i++){
124 $serialslist[$i]->{'callnumber'} = $subscription->{'callnumber'};
125 my $temp = rand(10000000);
126 $serialslist[$i]->{'barcode'} = "TEMP" . sprintf("%.0f",$temp);
129 # warn Dumper(@serialslist);
131 my $sth=$dbh->prepare("select * from subscriptionhistory where subscriptionid = ?");
132 $sth->execute($subscriptionid);
133 my $solhistory = $sth->fetchrow_hashref;
135 if (C4::Context->preference("serialsadditems")){
136 my $bibid=MARCfind_MARCbibid_from_oldbiblionumber($dbh,$subscription->{biblionumber});
137 my $fwk=MARCfind_frameworkcode($dbh,$bibid);
139 my $branches = getbranches;
141 foreach my $thisbranch (keys %$branches) {
143 if($thisbranch eq $solhistory->{'lastbranch'}){
146 my %row =(value => $thisbranch,
147 branchname => $branches->{$thisbranch}->{'branchname'},
148 selected => $selected,
150 push @branchloop, \%row;
153 my $itemstatushash = getitemstatus($fwk);
155 my $itemstatusloopcount=0;
156 foreach my $thisitemstatus (keys %$itemstatushash) {
157 my %row =(itemval => $thisitemstatus,
158 itemlib => $itemstatushash->{$thisitemstatus},
160 # warn "".$row{'itemval'}.", ". $row{"itemlib"};
161 $itemstatusloopcount++;
162 push @itemstatusloop, \%row;
165 my $itemlocationhash = getitemlocation($fwk);
166 my @itemlocationloop;
167 foreach my $thisitemlocation (keys %$itemlocationhash) {
168 my %row =(value => $thisitemlocation,
169 itemlocationname => $itemlocationhash->{$thisitemlocation},
171 push @itemlocationloop, \%row;
175 if($itemstatusloopcount == 1){ $choice = 1;}
176 foreach my $data (@serialslist){
177 if (scalar(@itemstatusloop)){$data->{"itemstatusloop"}=\@itemstatusloop;}
178 else { $data->{"itemstatusloop"}=[];}
179 if (scalar(@itemlocationloop)){$data->{"itemlocationloop"}=\@itemlocationloop;}
180 else {$data->{"itemlocationloop"}=[];}
181 $data->{"branchloop"}=\@branchloop ;
183 # warn "Choice: $choice";
184 $template->param(choice => $choice);
185 $template->param(serialadditems =>C4::Context->preference("serialsadditems"),
186 branchloop => \@branchloop,
188 $template->param(itemstatus=>1,itemstatusloop=>\@itemstatusloop) if (scalar(@itemstatusloop));
189 $template->param(itemlocation=>1,itemlocationloop=>\@itemlocationloop) if (scalar(@itemlocationloop));
191 $template->param(branchloop=>[],itemstatusloop=>[],itemlocationloop=>[]) ;
197 serialslist => \@serialslist,
199 biblionumber => $subscription->{biblionumber},
200 histstartdate => format_date($solhistory->{'histstartdate'}),
201 enddate => format_date($solhistory->{'enddate'}),
202 recievedlist => $solhistory->{'recievedlist'},
203 missinglist => $solhistory->{'missinglist'},
204 opacnote => $solhistory->{'opacnote'},
205 librariannote => $solhistory->{'librariannote'},
206 subscriptionid => $subscriptionid,
207 bibliotitle => $subs->{bibliotitle},
208 biblionumber => $subs->{biblionumber},
209 hassubscriptionexpired =>$hassubscriptionexpired,
210 abouttoexpire =>$abouttoexpire,
211 intranetcolorstylesheet => C4::Context->preference("intranetcolorstylesheet"),
212 intranetstylesheet => C4::Context->preference("intranetstylesheet"),
213 IntranetNav => C4::Context->preference("IntranetNav"),
215 missingseq => $manualissue,
216 frommissing => $manualstatus,
217 missingdate => $manualdate,
218 missingid => $manualid,
220 output_html_with_http_headers $query, $cookie, $template->output;