use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
BEGIN {
- $VERSION = 3.01; # set version for version checking
+ $VERSION = 3.07.00.049; # set version for version checking
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(
&check_routing &updateClaim &removeMissingIssue
&CountIssues
HasItems
+ &GetSubscriptionsFromBorrower
);
}
=head2 GetSubscriptions
-@results = GetSubscriptions($title,$ISSN,$biblionumber);
-this function gets all subscriptions which have title like $title,ISSN like $ISSN and biblionumber like $biblionumber.
+@results = GetSubscriptions($title,$ISSN,$ean,$biblionumber);
+this function gets all subscriptions which have title like $title,ISSN like $ISSN,EAN like $ean and biblionumber like $biblionumber.
return:
a table of hashref. Each hash containt the subscription.
=cut
sub GetSubscriptions {
- my ( $string, $issn, $biblionumber ) = @_;
+ my ( $string, $issn, $ean, $biblionumber ) = @_;
#return unless $title or $ISSN or $biblionumber;
my $dbh = C4::Context->dbh;
LEFT JOIN biblioitems ON biblio.biblionumber = biblioitems.biblionumber
);
my @bind_params;
- my $sqlwhere;
+ my $sqlwhere = q{};
if ($biblionumber) {
$sqlwhere = " WHERE biblio.biblionumber=?";
push @bind_params, $biblionumber;
}
$sqlwhere .= ( $sqlwhere ? " AND " : " WHERE " ) . "((" . join( ") OR (", @sqlstrings ) . "))";
}
+ if ($ean) {
+ my @sqlstrings;
+ my @strings_to_search;
+ @strings_to_search = map { "$_" } split( / /, $ean );
+ foreach my $index ( qw(biblioitems.ean) ) {
+ push @bind_params, @strings_to_search;
+ my $tmpstring = "OR $index = ? " x scalar(@strings_to_search);
+ $debug && warn "$tmpstring";
+ $tmpstring =~ s/^OR //;
+ push @sqlstrings, $tmpstring;
+ }
+ $sqlwhere .= ( $sqlwhere ? " AND " : " WHERE " ) . "((" . join( ") OR (", @sqlstrings ) . "))";
+ }
+
$sql .= "$sqlwhere ORDER BY title";
$debug and warn "GetSubscriptions query: $sql params : ", join( " ", @bind_params );
$sth = $dbh->prepare($sql);
FROM serial
WHERE subscriptionid = ?
AND (status =2 or status=4)
- ORDER BY planneddate DESC LIMIT 0,$limit
+ ORDER BY publisheddate DESC LIMIT 0,$limit
";
my $sth = $dbh->prepare($strsth);
$sth->execute($subscriptionid);
return 0;
}
+=head2 GetSubscriptionsFromBorrower
+
+($count,@routinglist) = GetSubscriptionsFromBorrower($borrowernumber)
+
+this gets the info from subscriptionroutinglist for each $subscriptionid
+
+return :
+a count of the serial subscription routing lists to which a patron belongs,
+with the titles of those serial subscriptions as an array. Each element of the array
+contains a hash_ref with subscriptionID and title of subscription.
+
+=cut
+
+sub GetSubscriptionsFromBorrower {
+ my ($borrowernumber) = @_;
+ my $dbh = C4::Context->dbh;
+ my $sth = $dbh->prepare(
+ "SELECT subscription.subscriptionid, biblio.title
+ FROM subscription
+ JOIN biblio ON biblio.biblionumber = subscription.biblionumber
+ JOIN subscriptionroutinglist USING (subscriptionid)
+ WHERE subscriptionroutinglist.borrowernumber = ? ORDER BY title ASC
+ "
+ );
+ $sth->execute($borrowernumber);
+ my @routinglist;
+ my $count = 0;
+ while ( my $line = $sth->fetchrow_hashref ) {
+ $count++;
+ push( @routinglist, $line );
+ }
+ return ( $count, @routinglist );
+}
+
=head2 GetNextDate
$resultdate = GetNextDate($planneddate,$subscription)