&CountIssues
HasItems
&GetSubscriptionsFromBorrower
+ &subscriptionCurrentlyOnOrder
);
}
sub GetLateIssues {
my ($supplierid) = @_;
+
+ return unless ($supplierid);
+
my $dbh = C4::Context->dbh;
my $sth;
if ($supplierid) {
}
my @issuelist;
my $last_title;
- my $odd = 0;
while ( my $line = $sth->fetchrow_hashref ) {
- $odd++ unless $line->{title} eq $last_title;
- $line->{title} = "" if $line->{title} eq $last_title;
+ $line->{title} = "" if $last_title and $line->{title} eq $last_title;
$last_title = $line->{title} if ( $line->{title} );
$line->{planneddate} = format_date( $line->{planneddate} );
push @issuelist, $line;
my $dbh = C4::Context->dbh;
my $query = qq|
SELECT serial.*, serial.notes as sernotes, serial.status as serstatus,subscription.*,subscription.subscriptionid as subsid |;
- if ( C4::Context->preference('IndependantBranches')
+ if ( C4::Context->preference('IndependentBranches')
&& C4::Context->userenv
&& C4::Context->userenv->{'flags'} != 1
&& C4::Context->userenv->{'branch'} ) {
sub AddItem2Serial {
my ( $serialid, $itemnumber ) = @_;
+
+ return unless ($serialid and $itemnumber);
+
my $dbh = C4::Context->dbh;
my $rq = $dbh->prepare("INSERT INTO `serialitems` SET serialid=? , itemnumber=?");
$rq->execute( $serialid, $itemnumber );
sub UpdateClaimdateIssues {
my ( $serialids, $date ) = @_;
+
+ return unless ($serialids);
+
my $dbh = C4::Context->dbh;
$date = strftime( "%Y-%m-%d", localtime ) unless ($date);
my $query = "
aqbooksellers.name AS aqbooksellername,
biblio.title AS bibliotitle,
subscription.biblionumber as bibnum);
- if ( C4::Context->preference('IndependantBranches')
+ if ( C4::Context->preference('IndependentBranches')
&& C4::Context->userenv
&& C4::Context->userenv->{'flags'} != 1
&& C4::Context->userenv->{'branch'} ) {
WHERE subscription.subscriptionid = ?
);
- # if (C4::Context->preference('IndependantBranches') &&
+ # if (C4::Context->preference('IndependentBranches') &&
# C4::Context->userenv &&
# C4::Context->userenv->{'flags'} != 1){
# # $debug and warn "flags: ".C4::Context->userenv->{'flags'};
sub GetFullSubscription {
my ($subscriptionid) = @_;
+
+ return unless ($subscriptionid);
+
my $dbh = C4::Context->dbh;
my $query = qq|
SELECT serial.serialid,
biblio.title as bibliotitle,
subscription.branchcode AS branchcode,
subscription.subscriptionid AS subscriptionid |;
- if ( C4::Context->preference('IndependantBranches')
+ if ( C4::Context->preference('IndependentBranches')
&& C4::Context->userenv
&& C4::Context->userenv->{'flags'} != 1
&& C4::Context->userenv->{'branch'} ) {
sub PrepareSerialsData {
my ($lines) = @_;
+
+ return unless ($lines);
+
my %tmpresults;
my $year;
my @res;
if (!defined $subs->{$datefield} or $subs->{$datefield}=~m/^00/) {
$subs->{$datefield} = 'XXX';
}
- else {
- $subs->{$datefield} = format_date( $subs->{$datefield} );
- }
}
$subs->{ "status" . $subs->{'status'} } = 1;
$subs->{"checked"} = $subs->{'status'} =~ /1|3|4|7/;
sub GetSubscriptionsFromBiblionumber {
my ($biblionumber) = @_;
+
+ return unless ($biblionumber);
+
my $dbh = C4::Context->dbh;
my $query = qq(
SELECT subscription.*,
$subs->{ "numberpattern" . $subs->{numberpattern} } = 1;
$subs->{ "status" . $subs->{'status'} } = 1;
$subs->{'cannotedit'} =
- ( C4::Context->preference('IndependantBranches')
+ ( C4::Context->preference('IndependentBranches')
&& C4::Context->userenv
&& C4::Context->userenv->{flags} % 2 != 1
&& C4::Context->userenv->{branch}
biblio.title as bibliotitle,
subscription.branchcode AS branchcode,
subscription.subscriptionid AS subscriptionid|;
- if ( C4::Context->preference('IndependantBranches')
+ if ( C4::Context->preference('IndependentBranches')
&& C4::Context->userenv
&& C4::Context->userenv->{'flags'} != 1
&& C4::Context->userenv->{'branch'} ) {
while ( my $line = $sth->fetchrow_hashref ) {
$line->{'cannotedit'} =
- ( C4::Context->preference('IndependantBranches')
+ ( C4::Context->preference('IndependentBranches')
&& C4::Context->userenv
&& C4::Context->userenv->{flags} % 2 != 1
&& C4::Context->userenv->{branch}
my ( $args ) = @_;
my $query = qq{
- SELECT subscription.*, subscriptionhistory.*, biblio.*, biblioitems.issn
+ SELECT
+ subscription.notes AS publicnotes,
+ subscription.*,
+ subscriptionhistory.*,
+ biblio.notes AS biblionotes,
+ biblio.title,
+ biblio.author,
+ biblioitems.issn
FROM subscription
LEFT JOIN subscriptionhistory USING(subscriptionid)
LEFT JOIN biblio ON biblio.biblionumber = subscription.biblionumber
sub GetSerials {
my ( $subscriptionid, $count ) = @_;
+
+ return unless $subscriptionid;
+
my $dbh = C4::Context->dbh;
# status = 2 is "arrived"
sub GetSerials2 {
my ( $subscription, $status ) = @_;
+
+ return unless ($subscription and $status);
+
my $dbh = C4::Context->dbh;
my $query = qq|
SELECT serialid,serialseq, status, planneddate, publisheddate,notes, routingnotes
sub GetLatestSerials {
my ( $subscriptionid, $limit ) = @_;
+
+ return unless ($subscriptionid and $limit);
+
my $dbh = C4::Context->dbh;
# status = 2 is "arrived"
- my $strsth = "SELECT serialid,serialseq, status, planneddate, notes
+ my $strsth = "SELECT serialid,serialseq, status, planneddate, publisheddate, notes
FROM serial
WHERE subscriptionid = ?
AND (status =2 or status=4)
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"} );
push @serials, $line;
}
sub GetDistributedTo {
my $dbh = C4::Context->dbh;
my $distributedto;
- my $subscriptionid = @_;
+ my ($subscriptionid) = @_;
+
+ return unless ($subscriptionid);
+
my $query = "SELECT distributedto FROM subscription WHERE subscriptionid=?";
my $sth = $dbh->prepare($query);
$sth->execute($subscriptionid);
sub GetNextSeq {
my ($subscription, $pattern, $planneddate) = @_;
- my ( $calculated, $newlastvalue1, $newlastvalue2, $newlastvalue3,
+
+ return unless ($subscription and $pattern);
+
+ my ( $newlastvalue1, $newlastvalue2, $newlastvalue3,
$newinnerloop1, $newinnerloop2, $newinnerloop3 );
my $count = 1;
}
my $numberingmethod = $pattern->{numberingmethod};
- $calculated = $numberingmethod;
- my $locale = $subscription->{locale};
- $newlastvalue1 = $subscription->{lastvalue1} || 0;
- $newlastvalue2 = $subscription->{lastvalue2} || 0;
- $newlastvalue3 = $subscription->{lastvalue3} || 0;
- $newinnerloop1 = $subscription->{innerloop1} || 0;
- $newinnerloop2 = $subscription->{innerloop2} || 0;
- $newinnerloop3 = $subscription->{innerloop3} || 0;
- my %calc;
- foreach(qw/X Y Z/) {
- $calc{$_} = 1 if ($numberingmethod =~ /\{$_\}/);
- }
-
- for(my $i = 0; $i < $count; $i++) {
- if($calc{'X'}) {
- # check if we have to increase the new value.
- $newinnerloop1 += 1;
- if ($newinnerloop1 >= $pattern->{every1}) {
- $newinnerloop1 = 0;
- $newlastvalue1 += $pattern->{add1};
+ my $calculated = "";
+ if ($numberingmethod) {
+ $calculated = $numberingmethod;
+ my $locale = $subscription->{locale};
+ $newlastvalue1 = $subscription->{lastvalue1} || 0;
+ $newlastvalue2 = $subscription->{lastvalue2} || 0;
+ $newlastvalue3 = $subscription->{lastvalue3} || 0;
+ $newinnerloop1 = $subscription->{innerloop1} || 0;
+ $newinnerloop2 = $subscription->{innerloop2} || 0;
+ $newinnerloop3 = $subscription->{innerloop3} || 0;
+ my %calc;
+ foreach(qw/X Y Z/) {
+ $calc{$_} = 1 if ($numberingmethod =~ /\{$_\}/);
+ }
+
+ for(my $i = 0; $i < $count; $i++) {
+ if($calc{'X'}) {
+ # check if we have to increase the new value.
+ $newinnerloop1 += 1;
+ if ($newinnerloop1 >= $pattern->{every1}) {
+ $newinnerloop1 = 0;
+ $newlastvalue1 += $pattern->{add1};
+ }
+ # reset counter if needed.
+ $newlastvalue1 = $pattern->{setto1} if ($newlastvalue1 > $pattern->{whenmorethan1});
+ }
+ if($calc{'Y'}) {
+ # check if we have to increase the new value.
+ $newinnerloop2 += 1;
+ if ($newinnerloop2 >= $pattern->{every2}) {
+ $newinnerloop2 = 0;
+ $newlastvalue2 += $pattern->{add2};
+ }
+ # reset counter if needed.
+ $newlastvalue2 = $pattern->{setto2} if ($newlastvalue2 > $pattern->{whenmorethan2});
+ }
+ if($calc{'Z'}) {
+ # check if we have to increase the new value.
+ $newinnerloop3 += 1;
+ if ($newinnerloop3 >= $pattern->{every3}) {
+ $newinnerloop3 = 0;
+ $newlastvalue3 += $pattern->{add3};
+ }
+ # reset counter if needed.
+ $newlastvalue3 = $pattern->{setto3} if ($newlastvalue3 > $pattern->{whenmorethan3});
}
- # reset counter if needed.
- $newlastvalue1 = $pattern->{setto1} if ($newlastvalue1 > $pattern->{whenmorethan1});
+ }
+ if($calc{'X'}) {
+ my $newlastvalue1string = _numeration( $newlastvalue1, $pattern->{numbering1}, $locale );
+ $calculated =~ s/\{X\}/$newlastvalue1string/g;
}
if($calc{'Y'}) {
- # check if we have to increase the new value.
- $newinnerloop2 += 1;
- if ($newinnerloop2 >= $pattern->{every2}) {
- $newinnerloop2 = 0;
- $newlastvalue2 += $pattern->{add2};
- }
- # reset counter if needed.
- $newlastvalue2 = $pattern->{setto2} if ($newlastvalue2 > $pattern->{whenmorethan2});
+ my $newlastvalue2string = _numeration( $newlastvalue2, $pattern->{numbering2}, $locale );
+ $calculated =~ s/\{Y\}/$newlastvalue2string/g;
}
if($calc{'Z'}) {
- # check if we have to increase the new value.
- $newinnerloop3 += 1;
- if ($newinnerloop3 >= $pattern->{every3}) {
- $newinnerloop3 = 0;
- $newlastvalue3 += $pattern->{add3};
- }
- # reset counter if needed.
- $newlastvalue3 = $pattern->{setto3} if ($newlastvalue3 > $pattern->{whenmorethan3});
+ my $newlastvalue3string = _numeration( $newlastvalue3, $pattern->{numbering3}, $locale );
+ $calculated =~ s/\{Z\}/$newlastvalue3string/g;
}
}
- if($calc{'X'}) {
- my $newlastvalue1string = _numeration( $newlastvalue1, $pattern->{numbering1}, $locale );
- $calculated =~ s/\{X\}/$newlastvalue1string/g;
- }
- if($calc{'Y'}) {
- my $newlastvalue2string = _numeration( $newlastvalue2, $pattern->{numbering2}, $locale );
- $calculated =~ s/\{Y\}/$newlastvalue2string/g;
- }
- if($calc{'Z'}) {
- my $newlastvalue3string = _numeration( $newlastvalue3, $pattern->{numbering3}, $locale );
- $calculated =~ s/\{Z\}/$newlastvalue3string/g;
- }
return ($calculated,
$newlastvalue1, $newlastvalue2, $newlastvalue3,
sub GetSeq {
my ($subscription, $pattern) = @_;
+
+ return unless ($subscription and $pattern);
+
my $locale = $subscription->{locale};
my $calculated = $pattern->{numberingmethod};
sub GetExpirationDate {
my ( $subscriptionid, $startdate ) = @_;
+
+ return unless ($subscriptionid);
+
my $dbh = C4::Context->dbh;
my $subscription = GetSubscription($subscriptionid);
my $enddate;
sub CountSubscriptionFromBiblionumber {
my ($biblionumber) = @_;
+
+ return unless ($biblionumber);
+
my $dbh = C4::Context->dbh;
my $query = "SELECT count(*) FROM subscription WHERE biblionumber=?";
my $sth = $dbh->prepare($query);
sub ModSubscriptionHistory {
my ( $subscriptionid, $histstartdate, $enddate, $receivedlist, $missinglist, $opacnote, $librariannote ) = @_;
+
+ return unless ($subscriptionid);
+
my $dbh = C4::Context->dbh;
my $query = "UPDATE subscriptionhistory
SET histstartdate=?,histenddate=?,recievedlist=?,missinglist=?,opacnote=?,librariannote=?
sub ModSerialStatus {
my ( $serialid, $serialseq, $planneddate, $publisheddate, $status, $notes ) = @_;
+ return unless ($serialid);
#It is a usual serial
# 1st, get previous status :
=head2 NewSubscription
$subscriptionid = &NewSubscription($auser,branchcode,$aqbooksellerid,$cost,$aqbudgetid,$biblionumber,
- $startdate,$periodicity,$dow,$numberlength,$weeklength,$monthlength,
+ $startdate,$periodicity,$numberlength,$weeklength,$monthlength,
$lastvalue1,$innerloop1,$lastvalue2,$innerloop2,$lastvalue3,$innerloop3,
$status, $notes, $letter, $firstacquidate, $irregularity, $numberpattern,
$callnumber, $hemisphere, $manualhistory, $internalnotes, $serialsadditems,
# renew subscription
$query = qq|
UPDATE subscription
- SET startdate=?,numberlength=?,weeklength=?,monthlength=?
+ SET startdate=?,numberlength=?,weeklength=?,monthlength=?,reneweddate=NOW()
WHERE subscriptionid=?
|;
$sth = $dbh->prepare($query);
my ( $serialseq, $subscriptionid, $biblionumber, $status, $planneddate, $publisheddate, $notes ) = @_;
### FIXME biblionumber CAN be provided by subscriptionid. So Do we STILL NEED IT ?
+ return unless ($subscriptionid);
+
my $dbh = C4::Context->dbh;
my $query = qq|
INSERT INTO serial
sub ItemizeSerials {
my ( $serialid, $info ) = @_;
+
+ return unless ($serialid);
+
my $now = POSIX::strftime( "%Y-%m-%d", localtime );
my $dbh = C4::Context->dbh;
# Getting end of subscription date
my ($subscriptionid) = @_;
+
+ return unless ($subscriptionid);
+
my $dbh = C4::Context->dbh;
my $subscription = GetSubscription($subscriptionid);
my $expirationdate = $subscription->{enddate} || GetExpirationDate($subscriptionid);
sub HasSubscriptionExpired {
my ($subscriptionid) = @_;
+
+ return unless ($subscriptionid);
+
my $dbh = C4::Context->dbh;
my $subscription = GetSubscription($subscriptionid);
my $frequency = C4::Serials::Frequency::GetSubscriptionFrequency($subscription->{periodicity});
sub GetLateOrMissingIssues {
my ( $supplierid, $serialid, $order ) = @_;
+
+ return unless ($supplierid);
+
my $dbh = C4::Context->dbh;
my $sth;
my $byserial = '';
sub removeMissingIssue {
my ( $sequence, $subscriptionid ) = @_;
+
+ return unless ($sequence and $subscriptionid);
+
my $dbh = C4::Context->dbh;
my $sth = $dbh->prepare("SELECT * FROM subscriptionhistory WHERE subscriptionid = ?");
$sth->execute($subscriptionid);
sub check_routing {
my ($subscriptionid) = @_;
+
+ return unless ($subscriptionid);
+
my $dbh = C4::Context->dbh;
my $sth = $dbh->prepare(
"SELECT count(routingid) routingids FROM subscription LEFT JOIN subscriptionroutinglist
sub addroutingmember {
my ( $borrowernumber, $subscriptionid ) = @_;
+
+ return unless ($borrowernumber and $subscriptionid);
+
my $rank;
my $dbh = C4::Context->dbh;
my $sth = $dbh->prepare( "SELECT max(ranking) rank FROM subscriptionroutinglist WHERE subscriptionid = ?" );
$sth->execute( $subscriptionid );
}
+=head2 subscriptionCurrentlyOnOrder
+
+ $bool = subscriptionCurrentlyOnOrder( $subscriptionid );
+
+Return 1 if subscription is currently on order else 0.
+
+=cut
+
+sub subscriptionCurrentlyOnOrder {
+ my ( $subscriptionid ) = @_;
+ my $dbh = C4::Context->dbh;
+ my $query = qq|
+ SELECT COUNT(*) FROM aqorders
+ WHERE subscriptionid = ?
+ AND datereceived IS NULL
+ AND datecancellationprinted IS NULL
+ |;
+ my $sth = $dbh->prepare( $query );
+ $sth->execute($subscriptionid);
+ return $sth->fetchrow_array;
+}
+
1;
__END__