package C4::Serials;
# Copyright 2000-2002 Katipo Communications
+# Parts Copyright 2010 Biblibre
#
# This file is part of Koha.
#
sub GetSuppliersWithLateIssues {
my $dbh = C4::Context->dbh;
- my $query = q|
- SELECT DISTINCT aqbooksellerid as id, aqbooksellers.name as name
+ my $query = qq|
+ SELECT DISTINCT id, name
FROM subscription
LEFT JOIN serial ON serial.subscriptionid=subscription.subscriptionid
LEFT JOIN aqbooksellers ON subscription.aqbooksellerid = aqbooksellers.id
- WHERE id > 0 AND (planneddate < now() OR serial.STATUS = 3 OR serial.STATUS = 4) ORDER BY name|;
+ WHERE id > 0 AND ((planneddate < now() AND serial.status=1) OR serial.STATUS = 3 OR serial.STATUS = 4) ORDER BY name|;
return $dbh->selectall_arrayref($query, { Slice => {} });
}
my $dbh = C4::Context->dbh;
$date = strftime( "%Y-%m-%d", localtime ) unless ($date);
my $query = "
- UPDATE serial SET claimdate=$date,status=7
- WHERE serialid in (" . join( ",", @$serialids ) . ")";
+ UPDATE serial SET claimdate = ?, status = 7
+ WHERE serialid in (" . join( ",", map { '?' } @$serialids ) . ")";
my $rq = $dbh->prepare($query);
- $rq->execute;
+ $rq->execute($date, @$serialids);
return $rq->rows;
}
$sth = $dbh->prepare($sql);
$sth->execute(@bind_params);
my @results;
- my $previoustitle = "";
+ my $previousbiblio = "";
my $odd = 1;
while ( my $line = $sth->fetchrow_hashref ) {
- if ( $previoustitle eq $line->{title} ) {
+ if ( $previousbiblio eq $line->{biblionumber} ) {
$line->{title} = "";
$line->{issn} = "";
} else {
- $previoustitle = $line->{title};
+ $previousbiblio = $line->{biblionumber};
$odd = -$odd;
}
$line->{toggle} = 1 if $odd == 1;
while ( my $line = $sth->fetchrow_hashref ) {
$line->{ "status" . $line->{status} } = 1; # fills a "statusX" value, used for template status select list
- $line->{"publisheddate"} = format_date( $line->{"publisheddate"} );
- $line->{"planneddate"} = format_date( $line->{"planneddate"} );
+ for my $datefield ( qw( planneddate publisheddate) ) {
+ if ($line->{$datefield} && $line->{$datefield}!~m/^00/) {
+ $line->{$datefield} = format_date( $line->{$datefield});
+ } else {
+ $line->{$datefield} = q{};
+ }
+ }
push @serials, $line;
}
while ( ( my $line = $sth->fetchrow_hashref ) && $counter < $count ) {
$counter++;
$line->{ "status" . $line->{status} } = 1; # fills a "statusX" value, used for template status select list
- $line->{"planneddate"} = format_date( $line->{"planneddate"} );
- $line->{"publisheddate"} = format_date( $line->{"publisheddate"} );
+ for my $datefield ( qw( planneddate publisheddate) ) {
+ if ($line->{$datefield} && $line->{$datefield}!~m/^00/) {
+ $line->{$datefield} = format_date( $line->{$datefield});
+ } else {
+ $line->{$datefield} = q{};
+ }
+ }
+
push @serials, $line;
}
my @serials;
while ( my $line = $sth->fetchrow_hashref ) {
- $line->{ "status" . $line->{status} } = 1; # fills a "statusX" value, used for template status select list
- $line->{"planneddate"} = format_date( $line->{"planneddate"} );
- $line->{"publisheddate"} = format_date( $line->{"publisheddate"} );
+ $line->{ "status" . $line->{status} } = 1; # fills a "statusX" value, used for template status select list
+ # Format dates for display
+ for my $datefield ( qw( planneddate publisheddate ) ) {
+ if ($line->{$datefield} =~m/^00/) {
+ $line->{$datefield} = q{};
+ }
+ else {
+ $line->{$datefield} = format_date( $line->{$datefield} );
+ }
+ }
push @serials, $line;
}
return @serials;
=head2 GetExpirationDate
-$sensddate = GetExpirationDate($subscriptionid, [$startdate])
+$enddate = GetExpirationDate($subscriptionid, [$startdate])
this function return the next expiration date for a subscription given on input args.
$internalnotes, $serialsadditems, $staffdisplaycount, $opacdisplaycount, $graceperiod, $location, $enddate
);
- #then create the 1st waited number
my $subscriptionid = $dbh->{'mysql_insertid'};
+ unless ($enddate){
+ $enddate = GetExpirationDate($subscriptionid,$startdate);
+ $query = q|
+ UPDATE subscription
+ SET enddate=?
+ WHERE subscriptionid=?
+ |;
+ $sth = $dbh->prepare($query);
+ $sth->execute( $enddate, $subscriptionid );
+ }
+ #then create the 1st waited number
$query = qq(
INSERT INTO subscriptionhistory
(biblionumber, subscriptionid, histstartdate, opacnote, librariannote)
my $dbh = C4::Context->dbh;
my $subscription = GetSubscription($subscriptionid);
if ( ( $subscription->{periodicity} % 16 ) > 0 ) {
- my $expirationdate = $subscription->{enddate};
+ my $expirationdate = $subscription->{enddate} || GetExpirationDate($subscriptionid);
if (!defined $expirationdate) {
$expirationdate = q{};
}
"SELECT
serialid, aqbooksellerid, name,
biblio.title, planneddate, serialseq,
- serial.status, serial.subscriptionid, claimdate
+ serial.status, serial.subscriptionid, claimdate,
+ subscription.branchcode
FROM serial
LEFT JOIN subscription ON serial.subscriptionid=subscription.subscriptionid
LEFT JOIN biblio ON subscription.biblionumber=biblio.biblionumber
"SELECT
serialid, aqbooksellerid, name,
biblio.title, planneddate, serialseq,
- serial.status, serial.subscriptionid, claimdate
+ serial.status, serial.subscriptionid, claimdate,
+ subscription.branchcode
FROM serial
LEFT JOIN subscription ON serial.subscriptionid=subscription.subscriptionid
LEFT JOIN biblio ON subscription.biblionumber=biblio.biblionumber