X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=serials%2Fserials-recieve.pl;h=830c56a9752dbba3b2da874882f64e1affc721a2;hb=d98587afed65a1d252659870d87b70bfdc2f97ce;hp=3cb8375ad2dc04459ade9801de90372bde3b0e70;hpb=ed1dafebbd60aca6337df40fc879b7259397100d;p=koha.git diff --git a/serials/serials-recieve.pl b/serials/serials-recieve.pl index 3cb8375ad2..830c56a975 100755 --- a/serials/serials-recieve.pl +++ b/serials/serials-recieve.pl @@ -28,7 +28,7 @@ serials-recieve.pl =over 4 =item op - op can be : +op can be : * modsubscriptionhistory :to modify the subscription history * serialchangestatus :to modify the status of this subscription @@ -70,10 +70,9 @@ use C4::Date; use C4::Biblio; use C4::Koha; use C4::Output; -use C4::Interface::CGI::Output; use C4::Context; use C4::Serials; -use HTML::Template; +use C4::Branch; # GetBranches my $query = new CGI; my $op = $query->param('op'); @@ -89,6 +88,7 @@ my $librariannote = $query->param('librariannote'); my @serialids = $query->param('serialid'); my @serialseqs = $query->param('serialseq'); my @planneddates = $query->param('planneddate'); +my @publisheddates = $query->param('publisheddate'); my @status = $query->param('status'); my @notes = $query->param('notes'); my @barcodes = $query->param('barcode'); @@ -117,80 +117,79 @@ if ($op eq 'found'){ $manualid = $sth->fetchrow; } if ($op eq 'modsubscriptionhistory') { - ModSubscriptionHistory($subscriptionid,$histstartdate,$enddate,$recievedlist,$missinglist,$opacnote,$librariannote); + ModSubscriptionHistory($subscriptionid,$histstartdate,$enddate,$recievedlist,$missinglist,$opacnote,$librariannote); } # change status except, if subscription has expired, for the "waited" issue. if ($op eq 'serialchangestatus') { - my $sth = $dbh->prepare("select status from serial where serialid=?"); - for (my $i=0;$i<=$#serialids;$i++) { - $sth->execute($serialids[$i]); - - my ($oldstatus) = $sth->fetchrow; - if ($serialids[$i]) { - ModSerialStatus($serialids[$i],$serialseqs[$i],format_date_in_iso($planneddates[$i]),$status[$i],$notes[$i]) unless ($hassubscriptionexpired && $oldstatus == 1); - if (($status[$i]==2) && C4::Context->preference("serialsadditems")){ - my %info; - $info{branch}=$homebranches[$i]; - $info{barcode}=$barcodes[$i]; - $info{itemcallnumber}=$itemcallnumbers[$i]; - $info{location}=$locations[$i]; - $info{status}=$itemstatus[$i]; - $info{notes}=$serialseqs[$i]." (".$planneddates[$i].")"; - my ($status2, @errors)= ItemizeSerials($serialids[$i],\%info); - my $sth2 = $dbh->prepare("UPDATE subscriptionhistory SET lastbranch = ? WHERE subscriptionid = ?"); - $sth2->execute($homebranches[$i],$subscriptionid); - $sth2->finish; - # remove from missing list if item being checked in is on it - if ($status2 ==1){ - removeMissingIssue($serialseqs[$i],$subscriptionid); - } - } - } else { - # add a special issue - if ($serialseqs[$i]) { - NewIssue($serialseqs[$i],$subscriptionid,$subscription->{biblionumber},$status[$i], format_date_in_iso($planneddates[$i])); - } - if (($status[$i]==2) && C4::Context->preference("serialsadditems") && !hassubscriptionexpired($subscriptionid)){ - my %info; - $info{branch}=$homebranches[$i]; - $info{barcode}=$barcodes[$i]; - $info{itemcallnumber}=$itemcallnumbers[$i]; - $info{location}=$locations[$i]; - $info{status}=$itemstatus[$i]; - $info{notes}=$serialseqs[$i]." (".$planneddates[$i].")"; - my ($status2, @errors)= ItemizeSerials($serialids[$i],\%info); - my $sth2 = $dbh->prepare("UPDATE subscriptionhistory SET lastbranch = ? WHERE subscriptionid = ?"); - $sth2->execute($homebranches[$i],$subscriptionid); - $sth2->finish; - # remove from missing list if item being checked in is on it - if ($status2 ==1){ - removeMissingIssue($serialseqs[$i],$subscriptionid); - } - } - - } - } + my $sth = $dbh->prepare("select status from serial where serialid=?"); + for (my $i=0;$i<=$#serialids;$i++) { + $sth->execute($serialids[$i]); + + my ($oldstatus) = $sth->fetchrow; + if ($serialids[$i]) { + ModSerialStatus($serialids[$i],$serialseqs[$i],format_date_in_iso($planneddates[$i]),format_date_in_iso($publisheddates[$i]),$status[$i],$notes[$i]) unless ($hassubscriptionexpired && $oldstatus == 1); + if (($status[$i]==2) && C4::Context->preference("serialsadditems")){ + my %info; + $info{branch}=$homebranches[$i]; + $info{barcode}=$barcodes[$i]; + $info{itemcallnumber}=$itemcallnumbers[$i]; + $info{location}=$locations[$i]; + $info{status}=$itemstatus[$i]; + $info{notes}=$serialseqs[$i]." (".$planneddates[$i].")"; + my ($status2, @errors)= ItemizeSerials($serialids[$i],\%info); + my $sth2 = $dbh->prepare("UPDATE subscriptionhistory SET lastbranch = ? WHERE subscriptionid = ?"); + $sth2->execute($homebranches[$i],$subscriptionid); + $sth2->finish; + # remove from missing list if item being checked in is on it + if ($status2 ==1){ + removeMissingIssue($serialseqs[$i],$subscriptionid); + } + } + } else { + # add a special issue + if ($serialseqs[$i]) { + NewIssue($serialseqs[$i],$subscriptionid,$subscription->{biblionumber},$status[$i] ,format_date_in_iso($publisheddates[$i]),format_date_in_iso($planneddates[$i])); + } + if (($status[$i]==2) && C4::Context->preference("serialsadditems") && !hassubscriptionexpired($subscriptionid)){ + my %info; + $info{branch}=$homebranches[$i]; + $info{barcode}=$barcodes[$i]; + $info{itemcallnumber}=$itemcallnumbers[$i]; + $info{location}=$locations[$i]; + $info{status}=$itemstatus[$i]; + $info{notes}=$serialseqs[$i]." (".$planneddates[$i].")"; + my ($status2, @errors)= ItemizeSerials($serialids[$i],\%info); + my $sth2 = $dbh->prepare("UPDATE subscriptionhistory SET lastbranch = ? WHERE subscriptionid = ?"); + $sth2->execute($homebranches[$i],$subscriptionid); + $sth2->finish; + # remove from missing list if item being checked in is on it + if ($status2 ==1){ + removeMissingIssue($serialseqs[$i],$subscriptionid); + } + } + + } + } } my ($template, $loggedinuser, $cookie) -= get_template_and_user({template_name => "serials/statecollection.tmpl", - query => $query, - type => "intranet", - authnotrequired => 0, - flagsrequired => {catalogue => 1}, - debug => 1, - }); += get_template_and_user({template_name => "serials/serials-recieve.tmpl", + query => $query, + type => "intranet", + authnotrequired => 0, + flagsrequired => {serials => 1}, + debug => 1, + }); my $subs = &GetSubscription($subscriptionid); my ($totalissues,@serialslist) = GetSerials($subscriptionid); my $count = @serialslist; for(my $i=0;$i<$count;$i++){ + warn "la : $i"; $serialslist[$i]->{'callnumber'} = $subscription->{'callnumber'}; my $temp = rand(10000000); $serialslist[$i]->{'barcode'} = "TEMP" . sprintf("%.0f",$temp); } -# use Data::Dumper; -# warn Dumper(@serialslist); my $sth= C4::Serials::GetSubscriptionHistoryFromSubscriptionId(); @@ -201,60 +200,57 @@ my $subs = &GetSubscription($subscriptionid); my ($totalissues,@serialslist) = GetSerials($subscriptionid); if (C4::Context->preference("serialsadditems")){ - my $bibid=MARCfind_MARCbibid_from_oldbiblionumber($dbh,$subscription->{biblionumber}); - my $fwk=MARCfind_frameworkcode($dbh,$bibid); - - my $branches = GetBranches; - my @branchloop; - foreach my $thisbranch (keys %$branches) { - my $selected = 0; - if($thisbranch eq $solhistory->{'lastbranch'}){ - $selected = 1; - } - my %row =(value => $thisbranch, - branchname => $branches->{$thisbranch}->{'branchname'}, - selected => $selected, - ); - push @branchloop, \%row; - } - - my $itemstatushash = getitemstatus($fwk); - my @itemstatusloop; + my $fwk=GetFrameworkCode($subscription->{biblionumber}); + + my $branches = GetBranches; + my @branchloop; + foreach my $thisbranch (keys %$branches) { + my $selected = 0; + if($thisbranch eq $solhistory->{'lastbranch'}){ + $selected = 1; + } + my %row =(value => $thisbranch, + branchname => $branches->{$thisbranch}->{'branchname'}, + selected => $selected, + ); + push @branchloop, \%row; + } + my $itemstatushash = GetItemStatus($fwk); + my @itemstatusloop; my $itemstatusloopcount=0; - foreach my $thisitemstatus (keys %$itemstatushash) { - my %row =(itemval => $thisitemstatus, - itemlib => $itemstatushash->{$thisitemstatus}, - ); + foreach my $thisitemstatus (keys %$itemstatushash) { + my %row =(itemval => $thisitemstatus, + itemlib => $itemstatushash->{$thisitemstatus}, + ); # warn "".$row{'itemval'}.", ". $row{"itemlib"}; - $itemstatusloopcount++; - push @itemstatusloop, \%row; - } - - my $itemlocationhash = getitemlocation($fwk); - my @itemlocationloop; - foreach my $thisitemlocation (keys %$itemlocationhash) { - my %row =(value => $thisitemlocation, - itemlocationname => $itemlocationhash->{$thisitemlocation}, - ); - push @itemlocationloop, \%row; - } + $itemstatusloopcount++; + push @itemstatusloop, \%row; + } + my $itemlocationhash = GetItemLocation($fwk); + my @itemlocationloop; + foreach my $thisitemlocation (keys %$itemlocationhash) { + my %row =(value => $thisitemlocation, + itemlocationname => $itemlocationhash->{$thisitemlocation}, + ); + push @itemlocationloop, \%row; + } my $choice = 0; if($itemstatusloopcount == 1){ $choice = 1;} foreach my $data (@serialslist){ - if (scalar(@itemstatusloop)){$data->{"itemstatusloop"}=\@itemstatusloop;} - else { $data->{"itemstatusloop"}=[];} - if (scalar(@itemlocationloop)){$data->{"itemlocationloop"}=\@itemlocationloop;} - else {$data->{"itemlocationloop"}=[];} - $data->{"branchloop"}=\@branchloop ; - } + if (scalar(@itemstatusloop)){$data->{"itemstatusloop"}=\@itemstatusloop;} + else { $data->{"itemstatusloop"}=[];} + if (scalar(@itemlocationloop)){$data->{"itemlocationloop"}=\@itemlocationloop;} + else {$data->{"itemlocationloop"}=[];} + $data->{"branchloop"}=\@branchloop ; + } # warn "Choice: $choice"; - $template->param(choice => $choice); - $template->param(serialadditems =>C4::Context->preference("serialsadditems"), - branchloop => \@branchloop, - ) ; - $template->param(itemstatus=>1,itemstatusloop=>\@itemstatusloop) if (scalar(@itemstatusloop)); - $template->param(itemlocation=>1,itemlocationloop=>\@itemlocationloop) if (scalar(@itemlocationloop)); + $template->param(choice => $choice); + $template->param(serialadditems =>C4::Context->preference("serialsadditems"), + branchloop => \@branchloop, + ) ; + $template->param(itemstatus=>1,itemstatusloop=>\@itemstatusloop) if (scalar(@itemstatusloop)); + $template->param(itemlocation=>1,itemlocationloop=>\@itemlocationloop) if (scalar(@itemlocationloop)); }else{ $template->param(branchloop=>[],itemstatusloop=>[],itemlocationloop=>[]) ; } @@ -263,30 +259,29 @@ my $sth= C4::Serials::GetSubscriptionHistoryFromSubscriptionId(); $sth->execute($subscriptionid); my $solhistory = $sth->fetchrow_hashref; - $template->param( - user => $auser, - serialslist => \@serialslist, - count => $count, - biblionumber => $subscription->{biblionumber}, - histstartdate => format_date($solhistory->{'histstartdate'}), - enddate => format_date($solhistory->{'enddate'}), - recievedlist => $solhistory->{'recievedlist'}, - missinglist => $solhistory->{'missinglist'}, - opacnote => $solhistory->{'opacnote'}, - librariannote => $solhistory->{'librariannote'}, - subscriptionid => $subscriptionid, - bibliotitle => $subs->{bibliotitle}, - biblionumber => $subs->{biblionumber}, - hassubscriptionexpired =>$hassubscriptionexpired, - abouttoexpire =>$abouttoexpire, - intranetcolorstylesheet => C4::Context->preference("intranetcolorstylesheet"), - intranetstylesheet => C4::Context->preference("intranetstylesheet"), - IntranetNav => C4::Context->preference("IntranetNav"), - routing => $routing, - missingseq => $manualissue, - frommissing => $manualstatus, - missingdate => $manualdate, - missingid => $manualid, - ); + user => $auser, + serialslist => \@serialslist, + count => $count, + biblionumber => $subscription->{biblionumber}, + histstartdate => format_date($solhistory->{'histstartdate'}), + enddate => format_date($solhistory->{'enddate'}), + recievedlist => $solhistory->{'recievedlist'}, + missinglist => $solhistory->{'missinglist'}, + opacnote => $solhistory->{'opacnote'}, + librariannote => $solhistory->{'librariannote'}, + subscriptionid => $subscriptionid, + bibliotitle => $subs->{bibliotitle}, + biblionumber => $subs->{biblionumber}, + hassubscriptionexpired =>$hassubscriptionexpired, + abouttoexpire =>$abouttoexpire, + intranetcolorstylesheet => C4::Context->preference("intranetcolorstylesheet"), + intranetstylesheet => C4::Context->preference("intranetstylesheet"), + IntranetNav => C4::Context->preference("IntranetNav"), + routing => $routing, + missingseq => $manualissue, + frommissing => $manualstatus, + missingdate => $manualdate, + missingid => $manualid, + ); output_html_with_http_headers $query, $cookie, $template->output;