X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=serials%2Fserials-collection.pl;h=f66d7243323910d5afcea852a9406cf405431454;hb=529af6e044729156b9589775d35e6e46bda9a22a;hp=c24cf9e19ff2a24c9e429614be5912564939120d;hpb=a5746c616a1ee15b80614ce0de81d6c415236319;p=koha.git diff --git a/serials/serials-collection.pl b/serials/serials-collection.pl index c24cf9e19f..f66d724332 100755 --- a/serials/serials-collection.pl +++ b/serials/serials-collection.pl @@ -19,10 +19,11 @@ use strict; +use warnings; use CGI; use C4::Auth; use C4::Koha; -use C4::Dates; +use C4::Dates qw/format_date/; use C4::Serials; use C4::Letters; use C4::Output; @@ -41,7 +42,7 @@ my ($template, $loggedinuser, $cookie); query => $query, type => "intranet", authnotrequired => 0, - flagsrequired => {serials => 1}, + flagsrequired => {serials => 'receive_serials'}, debug => 1, }); my $biblionumber = $query->param('biblionumber'); @@ -49,6 +50,48 @@ my @subscriptionid = $query->param('subscriptionid'); my $subscriptiondescs ; my $subscriptions; + +$op ||= q{}; +if($op eq 'gennext' && @subscriptionid){ + my $subscriptionid = $subscriptionid[0]; + my $subscription = GetSubscription($subscriptionid); + + my $sth = $dbh->prepare("SELECT publisheddate, serialid, serialseq, planneddate + FROM serial WHERE status = 1 AND subscriptionid = ?"); + $sth->execute($subscriptionid); + + # modify actual expected issue, to generate the next + if ( my $issue = $sth->fetchrow_hashref ) { + ModSerialStatus( $issue->{serialid}, $issue->{serialseq}, + $issue->{planneddate}, $issue->{publisheddate}, + 3, "Automatically set to late" ); + }else{ + my $expected = GetNextExpected($subscriptionid); + my ( + $newserialseq, $newlastvalue1, $newlastvalue2, $newlastvalue3, + $newinnerloop1, $newinnerloop2, $newinnerloop3 + ) = GetNextSeq($subscription); + + ## We generate the next publication date + my $nextpublisheddate = GetNextDate( $expected->{planneddate}->output('iso'), $subscription ); + ## Creating the new issue + NewIssue( $newserialseq, $subscriptionid, $subscription->{'biblionumber'}, + 1, $nextpublisheddate, $nextpublisheddate ); + + ## Updating the subscription seq status + my $squery = "UPDATE subscription SET lastvalue1=?, lastvalue2=?, lastvalue3=?, innerloop1=?, innerloop2=?, innerloop3=? + WHERE subscriptionid = ?"; + $sth = $dbh->prepare($squery); + $sth->execute( + $newlastvalue1, $newlastvalue2, $newlastvalue3, $newinnerloop1, + $newinnerloop2, $newinnerloop3, $subscriptionid + ); + + } + + print $query->redirect('/cgi-bin/koha/serials/serials-collection.pl?subscriptionid='.$subscriptionid); +} + if (@subscriptionid){ my @subscriptioninformation=(); foreach my $subscriptionid (@subscriptionid){ @@ -62,7 +105,7 @@ if (@subscriptionid){ $subs->{ "status" . $subs->{'status'} } = 1; $subs->{startdate} = format_date( $subs->{startdate} ); $subs->{histstartdate} = format_date( $subs->{histstartdate} ); - if ( $subs->{enddate} eq '0000-00-00' ) { + if ( !defined $subs->{enddate} || $subs->{enddate} eq '0000-00-00' ) { $subs->{enddate} = ''; } else { @@ -70,6 +113,7 @@ if (@subscriptionid){ } $subs->{'abouttoexpire'}=abouttoexpire($subs->{'subscriptionid'}); $subs->{'subscriptionexpired'}=HasSubscriptionExpired($subs->{'subscriptionid'}); + $subs->{'subscriptionid'} = $subscriptionid; # FIXME - why was this lost ? push @$subscriptiondescs,$subs; my $tmpsubscription= GetFullSubscription($subscriptionid); @subscriptioninformation=(@$tmpsubscription,@subscriptioninformation);