42265ef217
To be tested together with http://bugs.koha-community.org/bugzilla3/attachment.cgi?id=6690 1) Create a subscription for a title - check the link 'Show any subscription...' doesn't show now - check the serials collection page works correctly and shows all necessary information 2) Create a second subscription for the same title - check a new link 'Show any subscription...' shows up now - use links in the issue table to change between viewing the single subscription and the overview page - check it works correctly and all information shows up Signed-off-by: Frédéric Demians <f.demians@tamil.fr> It works. With this patch, on Serials Collection page, the link, 'See any subscription attached to this biblio' appears only when there are more than one subscription attached to the biblio record.
167 lines
6.5 KiB
Perl
Executable file
167 lines
6.5 KiB
Perl
Executable file
#!/usr/bin/perl
|
|
|
|
# Copyright 2000-2002 Katipo Communications
|
|
# Parts Copyright 2010 Biblibre
|
|
#
|
|
# This file is part of Koha.
|
|
#
|
|
# Koha is free software; you can redistribute it and/or modify it under the
|
|
# terms of the GNU General Public License as published by the Free Software
|
|
# Foundation; either version 2 of the License, or (at your option) any later
|
|
# version.
|
|
#
|
|
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License along
|
|
# with Koha; if not, write to the Free Software Foundation, Inc.,
|
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
|
|
|
|
use strict;
|
|
use warnings;
|
|
use CGI;
|
|
use C4::Auth;
|
|
use C4::Koha;
|
|
use C4::Dates qw/format_date/;
|
|
use C4::Serials;
|
|
use C4::Letters;
|
|
use C4::Output;
|
|
use C4::Context;
|
|
use List::MoreUtils qw/uniq/;
|
|
|
|
|
|
my $query = new CGI;
|
|
my $op = $query->param('op') || q{};
|
|
my $dbh = C4::Context->dbh;
|
|
|
|
my ($template, $loggedinuser, $cookie);
|
|
($template, $loggedinuser, $cookie)
|
|
= get_template_and_user({template_name => "serials/serials-collection.tmpl",
|
|
query => $query,
|
|
type => "intranet",
|
|
authnotrequired => 0,
|
|
flagsrequired => {serials => 'receive_serials'},
|
|
debug => 1,
|
|
});
|
|
my $biblionumber = $query->param('biblionumber');
|
|
my @subscriptionid = $query->param('subscriptionid');
|
|
|
|
@subscriptionid= uniq @subscriptionid;
|
|
@subscriptionid= sort @subscriptionid;
|
|
my $subscriptiondescs;
|
|
my $subscriptions;
|
|
|
|
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, "" );
|
|
}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);
|
|
}
|
|
|
|
my $subscriptioncount;
|
|
my ($location, $callnumber);
|
|
if (@subscriptionid){
|
|
my @subscriptioninformation=();
|
|
foreach my $subscriptionid (@subscriptionid){
|
|
my $subs= GetSubscription($subscriptionid);
|
|
$subs->{opacnote} =~ s/\n/\<br\/\>/g;
|
|
$subs->{missinglist} =~ s/\n/\<br\/\>/g;
|
|
$subs->{recievedlist} =~ s/\n/\<br\/\>/g;
|
|
##these are display information
|
|
$subs->{ "periodicity" . $subs->{periodicity} } = 1;
|
|
$subs->{ "numberpattern" . $subs->{numberpattern} } = 1;
|
|
$subs->{ "status" . $subs->{'status'} } = 1;
|
|
$subs->{startdate} = format_date( $subs->{startdate} );
|
|
$subs->{histstartdate} = format_date( $subs->{histstartdate} );
|
|
if ( !defined $subs->{enddate} || $subs->{enddate} eq '0000-00-00' ) {
|
|
$subs->{enddate} = '';
|
|
}
|
|
else {
|
|
$subs->{enddate} = format_date( $subs->{enddate} );
|
|
}
|
|
$subs->{'abouttoexpire'}=abouttoexpire($subs->{'subscriptionid'});
|
|
$subs->{'subscriptionexpired'}=HasSubscriptionExpired($subs->{'subscriptionid'});
|
|
$subs->{'subscriptionid'} = $subscriptionid; # FIXME - why was this lost ?
|
|
$location = GetAuthorisedValues('LOC', $subs->{'location'});
|
|
$callnumber = $subs->{callnumber};
|
|
push @$subscriptiondescs,$subs;
|
|
my $tmpsubscription= GetFullSubscription($subscriptionid);
|
|
@subscriptioninformation=(@$tmpsubscription,@subscriptioninformation);
|
|
}
|
|
$subscriptions=PrepareSerialsData(\@subscriptioninformation);
|
|
$subscriptioncount = CountSubscriptionFromBiblionumber($subscriptiondescs->[0]{'biblionumber'});
|
|
} else {
|
|
$subscriptiondescs = GetSubscriptionsFromBiblionumber($biblionumber) ;
|
|
my $subscriptioninformation = GetFullSubscriptionsFromBiblionumber($biblionumber);
|
|
$subscriptions=PrepareSerialsData($subscriptioninformation);
|
|
}
|
|
|
|
my $title = $subscriptiondescs->[0]{bibliotitle};
|
|
my $yearmax=($subscriptions->[0]{year} eq "manage" && scalar(@$subscriptions)>1)? $subscriptions->[1]{year} :$subscriptions->[0]{year};
|
|
my $yearmin=$subscriptions->[scalar(@$subscriptions)-1]{year};
|
|
my $subscriptionidlist="";
|
|
foreach my $subscription (@$subscriptiondescs){
|
|
$subscriptionidlist.=$subscription->{'subscriptionid'}."," ;
|
|
$biblionumber = $subscription->{'bibnum'} unless ($biblionumber);
|
|
}
|
|
|
|
# warn "title : $title yearmax : $yearmax nombre d'elements dans le tableau :".scalar(@$subscriptions);
|
|
# use Data::Dumper; warn Dumper($subscriptions);
|
|
my $locationlib;
|
|
foreach (@$location) {
|
|
$locationlib = $_->{'lib'} if $_->{'selected'};
|
|
}
|
|
|
|
chop $subscriptionidlist;
|
|
$template->param(
|
|
subscriptionidlist => $subscriptionidlist,
|
|
biblionumber => $biblionumber,
|
|
subscriptions => $subscriptiondescs,
|
|
years => $subscriptions,
|
|
yearmin => $yearmin,
|
|
yearmax =>$yearmax,
|
|
bibliotitle => $title,
|
|
suggestion => C4::Context->preference("suggestion"),
|
|
virtualshelves => C4::Context->preference("virtualshelves"),
|
|
subscr=>$query->param('subscriptionid'),
|
|
subscriptioncount => $subscriptioncount,
|
|
location => $locationlib,
|
|
callnumber => $callnumber,
|
|
);
|
|
|
|
output_html_with_http_headers $query, $cookie, $template->output;
|