528f1b2b80
Not related to MARC : * removed HLT- empty link when no basket for a supplier (should be useful to copy this into rel-1-2 i think) * fixed some "use of uninitialized value" related to MARC * changed use Acquisition to use Catalogue, new package for MARC management For instance, nothing is done to MARC DB, but structure is modified (see Biblio.pm for details), and everything seems to work : it's still possible to use acqui, and it fills old-DB pretty good. WARNING : if you work on main trunk, please note Acquisition.pm is NO MORE USED in /acqui/ system. Every sub in Acquisition.pm has been moved to Biblio.pm or Catalogue.pm.
780 lines
20 KiB
Perl
780 lines
20 KiB
Perl
package C4::Catalogue; #asummes C4/Acquisitions.pm
|
|
|
|
# Continue working on updateItem!!!!!!
|
|
#
|
|
# updateItem is looking not bad. Need to add addSubfield and deleteSubfield
|
|
# functions
|
|
#
|
|
# Trying to track down $dbh's that aren't disconnected....
|
|
#
|
|
|
|
|
|
use strict;
|
|
require Exporter;
|
|
use C4::Database;
|
|
use MARC::Record;
|
|
use C4::Biblio;
|
|
|
|
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
|
|
|
|
# set the version for version checking
|
|
$VERSION = 0.01;
|
|
|
|
@ISA = qw(Exporter);
|
|
@EXPORT = qw(
|
|
&basket &newbasket
|
|
|
|
&getorders &getallorders &getrecorders
|
|
&getorder &neworder &delorder
|
|
&ordersearch
|
|
&modorder &getsingleorder &invoice &receiveorder
|
|
&updaterecorder &newordernum
|
|
|
|
&bookfunds &bookfundbreakdown &updatecost
|
|
&curconvert &getcurrencies &updatecurrencies &getcurrency
|
|
|
|
&findall &needsmod &branches &updatesup &insertsup
|
|
&bookseller &breakdown &checkitems
|
|
&websitesearch &addwebsite &updatewebsite &deletewebsite
|
|
);
|
|
%EXPORT_TAGS = ( ); # eg: TAG => [ qw!name1 name2! ],
|
|
|
|
# your exported package globals go here,
|
|
# as well as any optionally exported functions
|
|
|
|
@EXPORT_OK = qw($Var1 %Hashit);
|
|
|
|
|
|
# non-exported package globals go here
|
|
use vars qw(@more $stuff);
|
|
|
|
# initalize package globals, first exported ones
|
|
|
|
my $Var1 = '';
|
|
my %Hashit = ();
|
|
|
|
|
|
# then the others (which are still accessible as $Some::Module::stuff)
|
|
my $stuff = '';
|
|
my @more = ();
|
|
|
|
# all file-scoped lexicals must be created before
|
|
# the functions below that use them.
|
|
|
|
# file-private lexicals go here
|
|
my $priv_var = '';
|
|
my %secret_hash = ();
|
|
|
|
# here's a file-private function as a closure,
|
|
# callable as &$priv_func; it cannot be prototyped.
|
|
my $priv_func = sub {
|
|
# stuff goes here.
|
|
};
|
|
|
|
# make all your functions, whether exported or not;
|
|
|
|
|
|
#
|
|
#
|
|
#
|
|
# BASKETS
|
|
#
|
|
#
|
|
#
|
|
sub basket {
|
|
my ($basketno,$supplier)=@_;
|
|
my $dbh=C4Connect;
|
|
my $query="Select *,biblio.title from aqorders,biblio,biblioitems
|
|
where basketno='$basketno'
|
|
and biblio.biblionumber=aqorders.biblionumber and biblioitems.biblioitemnumber
|
|
=aqorders.biblioitemnumber
|
|
and (datecancellationprinted is NULL or datecancellationprinted =
|
|
'0000-00-00')";
|
|
if ($supplier ne ''){
|
|
$query.=" and aqorders.booksellerid='$supplier'";
|
|
}
|
|
$query.=" group by aqorders.ordernumber";
|
|
my $sth=$dbh->prepare($query);
|
|
$sth->execute;
|
|
my @results;
|
|
# print $query;
|
|
my $i=0;
|
|
while (my $data=$sth->fetchrow_hashref){
|
|
$results[$i]=$data;
|
|
$i++;
|
|
}
|
|
$sth->finish;
|
|
$dbh->disconnect;
|
|
return($i,@results);
|
|
}
|
|
|
|
sub newbasket {
|
|
my $dbh=C4Connect;
|
|
my $query="Select max(basketno) from aqorders";
|
|
my $sth=$dbh->prepare($query);
|
|
$sth->execute;
|
|
my $data=$sth->fetchrow_arrayref;
|
|
my $basket=$$data[0];
|
|
$basket++;
|
|
$sth->finish;
|
|
$dbh->disconnect;
|
|
return($basket);
|
|
}
|
|
sub neworder {
|
|
my ($bibnum,$title,$ordnum,$basket,$quantity,$listprice,$supplier,$who,$notes,$bookfund,$bibitemnum,$rrp,$ecost,$gst,$budget,$cost,$sub,$invoice)=@_;
|
|
if ($budget eq 'now'){
|
|
$budget="now()";
|
|
} else {
|
|
$budget="'2001-07-01'";
|
|
}
|
|
if ($sub eq 'yes'){
|
|
$sub=1;
|
|
} else {
|
|
$sub=0;
|
|
}
|
|
my $dbh=C4Connect;
|
|
my $query="insert into aqorders (biblionumber,title,basketno,
|
|
quantity,listprice,booksellerid,entrydate,requisitionedby,authorisedby,notes,
|
|
biblioitemnumber,rrp,ecost,gst,unitprice,subscription,booksellerinvoicenumber)
|
|
|
|
values
|
|
($bibnum,'$title',$basket,$quantity,$listprice,'$supplier',now(),
|
|
'$who','$who','$notes',$bibitemnum,'$rrp','$ecost','$gst','$cost',
|
|
'$sub','$invoice')";
|
|
my $sth=$dbh->prepare($query);
|
|
# print $query;
|
|
$sth->execute;
|
|
$sth->finish;
|
|
$query="select * from aqorders where
|
|
biblionumber=$bibnum and basketno=$basket and ordernumber >=$ordnum";
|
|
$sth=$dbh->prepare($query);
|
|
$sth->execute;
|
|
my $data=$sth->fetchrow_hashref;
|
|
$sth->finish;
|
|
$ordnum=$data->{'ordernumber'};
|
|
$query="insert into aqorderbreakdown (ordernumber,bookfundid) values
|
|
($ordnum,'$bookfund')";
|
|
$sth=$dbh->prepare($query);
|
|
# print $query;
|
|
$sth->execute;
|
|
$sth->finish;
|
|
$dbh->disconnect;
|
|
}
|
|
|
|
sub delorder {
|
|
my ($bibnum,$ordnum)=@_;
|
|
my $dbh=C4Connect;
|
|
my $query="update aqorders set datecancellationprinted=now()
|
|
where biblionumber='$bibnum' and
|
|
ordernumber='$ordnum'";
|
|
my $sth=$dbh->prepare($query);
|
|
#print $query;
|
|
$sth->execute;
|
|
$sth->finish;
|
|
my $count=itemcount($bibnum);
|
|
if ($count == 0){
|
|
delbiblio($bibnum);
|
|
}
|
|
$dbh->disconnect;
|
|
}
|
|
|
|
sub modorder {
|
|
my ($title,$ordnum,$quantity,$listprice,$bibnum,$basketno,$supplier,$who,$notes,$bookfund,$bibitemnum,$rrp,$ecost,$gst,$budget,$cost,$invoice)=@_;
|
|
my $dbh=C4Connect;
|
|
my $query="update aqorders set title='$title',
|
|
quantity='$quantity',listprice='$listprice',basketno='$basketno',
|
|
rrp='$rrp',ecost='$ecost',unitprice='$cost',
|
|
booksellerinvoicenumber='$invoice'
|
|
where
|
|
ordernumber=$ordnum and biblionumber=$bibnum";
|
|
my $sth=$dbh->prepare($query);
|
|
# print $query;
|
|
$sth->execute;
|
|
$sth->finish;
|
|
$query="update aqorderbreakdown set bookfundid=$bookfund where
|
|
ordernumber=$ordnum";
|
|
$sth=$dbh->prepare($query);
|
|
# print $query;
|
|
$sth->execute;
|
|
$sth->finish;
|
|
$dbh->disconnect;
|
|
}
|
|
|
|
sub newordernum {
|
|
my $dbh=C4Connect;
|
|
my $query="Select max(ordernumber) from aqorders";
|
|
my $sth=$dbh->prepare($query);
|
|
$sth->execute;
|
|
my $data=$sth->fetchrow_arrayref;
|
|
my $ordnum=$$data[0];
|
|
$ordnum++;
|
|
$sth->finish;
|
|
$dbh->disconnect;
|
|
return($ordnum);
|
|
}
|
|
|
|
sub receiveorder {
|
|
my ($biblio,$ordnum,$quantrec,$user,$cost,$invoiceno,$bibitemno,$freight,$bookfund,$rrp)=@_;
|
|
my $dbh=C4Connect;
|
|
my $query="update aqorders set quantityreceived='$quantrec',
|
|
datereceived=now(),booksellerinvoicenumber='$invoiceno',
|
|
biblioitemnumber=$bibitemno,unitprice='$cost',freight='$freight',
|
|
rrp='$rrp'
|
|
where biblionumber=$biblio and ordernumber=$ordnum
|
|
";
|
|
# print $query;
|
|
my $sth=$dbh->prepare($query);
|
|
$sth->execute;
|
|
$sth->finish;
|
|
$query="update aqorderbreakdown set bookfundid=$bookfund where
|
|
ordernumber=$ordnum";
|
|
$sth=$dbh->prepare($query);
|
|
# print $query;
|
|
$sth->execute;
|
|
$sth->finish;
|
|
$dbh->disconnect;
|
|
}
|
|
sub updaterecorder{
|
|
my($biblio,$ordnum,$user,$cost,$bookfund,$rrp)=@_;
|
|
my $dbh=C4Connect;
|
|
my $query="update aqorders set
|
|
unitprice='$cost', rrp='$rrp'
|
|
where biblionumber=$biblio and ordernumber=$ordnum
|
|
";
|
|
# print $query;
|
|
my $sth=$dbh->prepare($query);
|
|
$sth->execute;
|
|
$sth->finish;
|
|
$query="update aqorderbreakdown set bookfundid=$bookfund where
|
|
ordernumber=$ordnum";
|
|
$sth=$dbh->prepare($query);
|
|
# print $query;
|
|
$sth->execute;
|
|
$sth->finish;
|
|
$dbh->disconnect;
|
|
}
|
|
|
|
#
|
|
#
|
|
# ORDERS
|
|
#
|
|
#
|
|
|
|
sub getorders {
|
|
my ($supplierid)=@_;
|
|
my $dbh=C4Connect;
|
|
my $query = "Select count(*),authorisedby,entrydate,basketno from aqorders where
|
|
booksellerid='$supplierid' and (quantity > quantityreceived or
|
|
quantityreceived is NULL)
|
|
and (datecancellationprinted is NULL or datecancellationprinted = '0000-00-00')";
|
|
$query.=" group by basketno order by entrydate desc";
|
|
#print $query;
|
|
my $sth=$dbh->prepare($query);
|
|
$sth->execute;
|
|
my @results;
|
|
my $i=0;
|
|
while (my $data=$sth->fetchrow_hashref){
|
|
$results[$i]=$data;
|
|
$i++;
|
|
}
|
|
$sth->finish;
|
|
$dbh->disconnect;
|
|
return ($i,\@results);
|
|
}
|
|
|
|
sub getorder{
|
|
my ($bi,$bib)=@_;
|
|
my $dbh=C4Connect;
|
|
my $query="Select ordernumber from aqorders where biblionumber=$bib and
|
|
biblioitemnumber='$bi'";
|
|
my $sth=$dbh->prepare($query);
|
|
$sth->execute;
|
|
my $ordnum=$sth->fetchrow_hashref;
|
|
$sth->finish;
|
|
my $order=getsingleorder($ordnum->{'ordernumber'});
|
|
$dbh->disconnect;
|
|
# print $query;
|
|
return ($order,$ordnum->{'ordernumber'});
|
|
}
|
|
|
|
sub getsingleorder {
|
|
my ($ordnum)=@_;
|
|
my $dbh=C4Connect;
|
|
my $query="Select * from biblio,biblioitems,aqorders,aqorderbreakdown
|
|
where aqorders.ordernumber='$ordnum'
|
|
and biblio.biblionumber=aqorders.biblionumber and
|
|
biblioitems.biblioitemnumber=aqorders.biblioitemnumber and
|
|
aqorders.ordernumber=aqorderbreakdown.ordernumber";
|
|
my $sth=$dbh->prepare($query);
|
|
$sth->execute;
|
|
my $data=$sth->fetchrow_hashref;
|
|
$sth->finish;
|
|
$dbh->disconnect;
|
|
return($data);
|
|
}
|
|
|
|
sub getallorders {
|
|
#gets all orders from a certain supplier, orders them alphabetically
|
|
my ($supid)=@_;
|
|
my $dbh=C4Connect;
|
|
my $query="Select * from aqorders,biblio,biblioitems where booksellerid='$supid'
|
|
and (cancelledby is NULL or cancelledby = '')
|
|
and (quantityreceived < quantity or quantityreceived is NULL)
|
|
and biblio.biblionumber=aqorders.biblionumber and biblioitems.biblioitemnumber=
|
|
aqorders.biblioitemnumber
|
|
group by aqorders.biblioitemnumber
|
|
order by
|
|
biblio.title";
|
|
my $i=0;
|
|
my @results;
|
|
my $sth=$dbh->prepare($query);
|
|
$sth->execute;
|
|
while (my $data=$sth->fetchrow_hashref){
|
|
$results[$i]=$data;
|
|
$i++;
|
|
}
|
|
$sth->finish;
|
|
$dbh->disconnect;
|
|
return($i,@results);
|
|
}
|
|
|
|
sub getrecorders {
|
|
#gets all orders from a certain supplier, orders them alphabetically
|
|
my ($supid)=@_;
|
|
my $dbh=C4Connect;
|
|
my $query="Select * from aqorders,biblio,biblioitems where booksellerid='$supid'
|
|
and (cancelledby is NULL or cancelledby = '')
|
|
and biblio.biblionumber=aqorders.biblionumber and biblioitems.biblioitemnumber=
|
|
aqorders.biblioitemnumber and
|
|
aqorders.quantityreceived>0
|
|
and aqorders.datereceived >=now()
|
|
group by aqorders.biblioitemnumber
|
|
order by
|
|
biblio.title";
|
|
my $i=0;
|
|
my @results;
|
|
my $sth=$dbh->prepare($query);
|
|
$sth->execute;
|
|
while (my $data=$sth->fetchrow_hashref){
|
|
$results[$i]=$data;
|
|
$i++;
|
|
}
|
|
$sth->finish;
|
|
$dbh->disconnect;
|
|
return($i,@results);
|
|
}
|
|
|
|
sub ordersearch {
|
|
my ($search,$biblio,$catview) = @_;
|
|
my $dbh = C4Connect;
|
|
my $query = "Select *,biblio.title from aqorders,biblioitems,biblio
|
|
where aqorders.biblioitemnumber = biblioitems.biblioitemnumber
|
|
and biblio.biblionumber=aqorders.biblionumber
|
|
and ((datecancellationprinted is NULL)
|
|
or (datecancellationprinted = '0000-00-00'))
|
|
and ((";
|
|
my @data = split(' ',$search);
|
|
my $count = @data;
|
|
for (my $i = 0; $i < $count; $i++) {
|
|
$query .= "(biblio.title like '$data[$i]%' or biblio.title like '% $data[$i]%') and ";
|
|
}
|
|
$query=~ s/ and $//;
|
|
$query.=" ) or biblioitems.isbn='$search'
|
|
or (aqorders.ordernumber='$search' and aqorders.biblionumber='$biblio')) ";
|
|
if ($catview ne 'yes'){
|
|
$query.=" and (quantityreceived < quantity or quantityreceived is NULL)";
|
|
}
|
|
$query.=" group by aqorders.ordernumber";
|
|
my $sth=$dbh->prepare($query);
|
|
$sth->execute;
|
|
my $i=0;
|
|
my @results;
|
|
while (my $data=$sth->fetchrow_hashref){
|
|
my $sth2=$dbh->prepare("Select * from biblio where
|
|
biblionumber='$data->{'biblionumber'}'");
|
|
$sth2->execute;
|
|
my $data2=$sth2->fetchrow_hashref;
|
|
$sth2->finish;
|
|
$data->{'author'}=$data2->{'author'};
|
|
$data->{'seriestitle'}=$data2->{'seriestitle'};
|
|
$sth2=$dbh->prepare("Select * from aqorderbreakdown where
|
|
ordernumber=$data->{'ordernumber'}");
|
|
$sth2->execute;
|
|
$data2=$sth2->fetchrow_hashref;
|
|
$sth2->finish;
|
|
$data->{'branchcode'}=$data2->{'branchcode'};
|
|
$data->{'bookfundid'}=$data2->{'bookfundid'};
|
|
$results[$i]=$data;
|
|
$i++;
|
|
}
|
|
$sth->finish;
|
|
$dbh->disconnect;
|
|
return($i,@results);
|
|
}
|
|
|
|
#
|
|
#
|
|
# MONEY
|
|
#
|
|
#
|
|
sub invoice {
|
|
my ($invoice)=@_;
|
|
my $dbh=C4Connect;
|
|
my $query="Select * from aqorders,biblio,biblioitems where
|
|
booksellerinvoicenumber='$invoice'
|
|
and biblio.biblionumber=aqorders.biblionumber and biblioitems.biblioitemnumber=
|
|
aqorders.biblioitemnumber group by aqorders.ordernumber,aqorders.biblioitemnumber";
|
|
my $i=0;
|
|
my @results;
|
|
my $sth=$dbh->prepare($query);
|
|
$sth->execute;
|
|
while (my $data=$sth->fetchrow_hashref){
|
|
$results[$i]=$data;
|
|
$i++;
|
|
}
|
|
$sth->finish;
|
|
$dbh->disconnect;
|
|
return($i,@results);
|
|
}
|
|
|
|
sub bookfunds {
|
|
my $dbh=C4Connect;
|
|
my $query="Select * from aqbookfund,aqbudget where aqbookfund.bookfundid
|
|
=aqbudget.bookfundid
|
|
group by aqbookfund.bookfundid order by bookfundname";
|
|
my $sth=$dbh->prepare($query);
|
|
$sth->execute;
|
|
my @results;
|
|
my $i=0;
|
|
while (my $data=$sth->fetchrow_hashref){
|
|
$results[$i]=$data;
|
|
$i++;
|
|
}
|
|
$sth->finish;
|
|
$dbh->disconnect;
|
|
return($i,@results);
|
|
}
|
|
|
|
sub bookfundbreakdown {
|
|
my ($id)=@_;
|
|
my $dbh=C4Connect;
|
|
my $query="Select quantity,datereceived,freight,unitprice,listprice,ecost,quantityreceived,subscription
|
|
from aqorders,aqorderbreakdown where bookfundid='$id' and
|
|
aqorders.ordernumber=aqorderbreakdown.ordernumber
|
|
and (datecancellationprinted is NULL or
|
|
datecancellationprinted='0000-00-00')";
|
|
my $sth=$dbh->prepare($query);
|
|
$sth->execute;
|
|
my $comtd=0;
|
|
my $spent=0;
|
|
while (my $data=$sth->fetchrow_hashref){
|
|
if ($data->{'subscription'} == 1){
|
|
$spent+=$data->{'quantity'}*$data->{'unitprice'};
|
|
} else {
|
|
my $leftover=$data->{'quantity'}-$data->{'quantityreceived'};
|
|
$comtd+=($data->{'ecost'})*$leftover;
|
|
$spent+=($data->{'unitprice'})*$data->{'quantityreceived'};
|
|
}
|
|
}
|
|
$sth->finish;
|
|
$dbh->disconnect;
|
|
return($spent,$comtd);
|
|
}
|
|
|
|
sub curconvert {
|
|
my ($currency,$price)=@_;
|
|
my $dbh=C4Connect;
|
|
my $query="Select rate from currency where currency='$currency'";
|
|
my $sth=$dbh->prepare($query);
|
|
$sth->execute;
|
|
my $data=$sth->fetchrow_hashref;
|
|
$sth->finish;
|
|
$dbh->disconnect;
|
|
my $cur=$data->{'rate'};
|
|
if ($cur==0){
|
|
$cur=1;
|
|
}
|
|
my $price=$price / $cur;
|
|
return($price);
|
|
}
|
|
|
|
sub getcurrencies {
|
|
my $dbh=C4Connect;
|
|
my $query="Select * from currency";
|
|
my $sth=$dbh->prepare($query);
|
|
$sth->execute;
|
|
my @results;
|
|
my $i=0;
|
|
while (my $data=$sth->fetchrow_hashref){
|
|
$results[$i]=$data;
|
|
$i++;
|
|
}
|
|
$sth->finish;
|
|
$dbh->disconnect;
|
|
return($i,\@results);
|
|
}
|
|
|
|
sub getcurrency {
|
|
my ($cur)=@_;
|
|
my $dbh=C4Connect;
|
|
my $query="Select * from currency where currency='$cur'";
|
|
my $sth=$dbh->prepare($query);
|
|
$sth->execute;
|
|
|
|
my $data=$sth->fetchrow_hashref;
|
|
$sth->finish;
|
|
$dbh->disconnect;
|
|
return($data);
|
|
}
|
|
|
|
sub updatecurrencies {
|
|
my ($currency,$rate)=@_;
|
|
my $dbh=C4Connect;
|
|
my $query="update currency set rate=$rate where currency='$currency'";
|
|
my $sth=$dbh->prepare($query);
|
|
$sth->execute;
|
|
$sth->finish;
|
|
$dbh->disconnect;
|
|
}
|
|
|
|
sub updatecost{
|
|
my($price,$rrp,$itemnum)=@_;
|
|
my $dbh=C4Connect;
|
|
my $query="update items set price='$price',replacementprice='$rrp'
|
|
where itemnumber=$itemnum";
|
|
my $sth=$dbh->prepare($query);
|
|
$sth->execute;
|
|
$sth->finish;
|
|
$dbh->disconnect;
|
|
}
|
|
|
|
#
|
|
#
|
|
# OTHERS
|
|
#
|
|
#
|
|
|
|
sub bookseller {
|
|
my ($searchstring)=@_;
|
|
my $dbh=C4Connect;
|
|
my $query="Select * from aqbooksellers where name like '%$searchstring%' or
|
|
id = '$searchstring'";
|
|
my $sth=$dbh->prepare($query);
|
|
$sth->execute;
|
|
my @results;
|
|
my $i=0;
|
|
while (my $data=$sth->fetchrow_hashref){
|
|
$results[$i]=$data;
|
|
$i++;
|
|
}
|
|
$sth->finish;
|
|
$dbh->disconnect;
|
|
return($i,@results);
|
|
}
|
|
sub breakdown {
|
|
my ($id)=@_;
|
|
my $dbh=C4Connect;
|
|
my $query="Select * from aqorderbreakdown where ordernumber='$id'";
|
|
my $sth=$dbh->prepare($query);
|
|
$sth->execute;
|
|
my @results;
|
|
my $i=0;
|
|
while (my $data=$sth->fetchrow_hashref){
|
|
$results[$i]=$data;
|
|
$i++;
|
|
}
|
|
$sth->finish;
|
|
$dbh->disconnect;
|
|
return($i,\@results);
|
|
}
|
|
|
|
sub branches {
|
|
my $dbh = C4Connect;
|
|
my $query = "Select * from branches";
|
|
my $sth = $dbh->prepare($query);
|
|
my $i = 0;
|
|
my @results;
|
|
|
|
$sth->execute;
|
|
while (my $data = $sth->fetchrow_hashref) {
|
|
$results[$i] = $data;
|
|
$i++;
|
|
} # while
|
|
|
|
$sth->finish;
|
|
$dbh->disconnect;
|
|
return($i, @results);
|
|
} # sub branches
|
|
|
|
sub findall {
|
|
my ($biblionumber)=@_;
|
|
my $dbh=C4Connect;
|
|
my $query="Select * from biblioitems,items,itemtypes where
|
|
biblioitems.biblionumber=$biblionumber
|
|
and biblioitems.biblioitemnumber=items.biblioitemnumber and
|
|
itemtypes.itemtype=biblioitems.itemtype
|
|
order by items.biblioitemnumber";
|
|
my $sth=$dbh->prepare($query);
|
|
$sth->execute;
|
|
my @results;
|
|
my $i;
|
|
while (my $data=$sth->fetchrow_hashref){
|
|
$results[$i]=$data;
|
|
$i++;
|
|
}
|
|
$sth->finish;
|
|
$dbh->disconnect;
|
|
return(@results);
|
|
}
|
|
|
|
sub needsmod{
|
|
my ($bibitemnum,$itemtype)=@_;
|
|
my $dbh=C4Connect;
|
|
my $query="Select * from biblioitems where biblioitemnumber=$bibitemnum
|
|
and itemtype='$itemtype'";
|
|
my $sth=$dbh->prepare($query);
|
|
$sth->execute;
|
|
my $result=0;
|
|
if (my $data=$sth->fetchrow_hashref){
|
|
$result=1;
|
|
}
|
|
$sth->finish;
|
|
$dbh->disconnect;
|
|
return($result);
|
|
}
|
|
|
|
sub updatesup {
|
|
my ($data)=@_;
|
|
my $dbh=C4Connect;
|
|
my $query="Update aqbooksellers set
|
|
name='$data->{'name'}',address1='$data->{'address1'}',address2='$data->{'address2'}',
|
|
address3='$data->{'address3'}',address4='$data->{'address4'}',postal='$data->{'postal'}',
|
|
phone='$data->{'phone'}',fax='$data->{'fax'}',url='$data->{'url'}',
|
|
contact='$data->{'contact'}',contpos='$data->{'contpos'}',
|
|
contphone='$data->{'contphone'}', contfax='$data->{'contfax'}', contaltphone=
|
|
'$data->{'contaltphone'}', contemail='$data->{'contemail'}', contnotes=
|
|
'$data->{'contnotes'}', active=$data->{'active'},
|
|
listprice='$data->{'listprice'}', invoiceprice='$data->{'invoiceprice'}',
|
|
gstreg=$data->{'gstreg'}, listincgst=$data->{'listincgst'},
|
|
invoiceincgst=$data->{'invoiceincgst'}, specialty='$data->{'specialty'}',
|
|
discount='$data->{'discount'}',invoicedisc='$data->{'invoicedisc'}',
|
|
nocalc='$data->{'nocalc'}'
|
|
where id='$data->{'id'}'";
|
|
my $sth=$dbh->prepare($query);
|
|
$sth->execute;
|
|
$sth->finish;
|
|
$dbh->disconnect;
|
|
# print $query;
|
|
}
|
|
|
|
sub insertsup {
|
|
my ($data)=@_;
|
|
my $dbh=C4Connect;
|
|
my $sth=$dbh->prepare("Select max(id) from aqbooksellers");
|
|
$sth->execute;
|
|
my $data2=$sth->fetchrow_hashref;
|
|
$sth->finish;
|
|
$data2->{'max(id)'}++;
|
|
$sth=$dbh->prepare("Insert into aqbooksellers (id) values ($data2->{'max(id)'})");
|
|
$sth->execute;
|
|
$sth->finish;
|
|
$data->{'id'}=$data2->{'max(id)'};
|
|
$dbh->disconnect;
|
|
updatesup($data);
|
|
return($data->{'id'});
|
|
}
|
|
|
|
sub websitesearch {
|
|
my ($keywordlist) = @_;
|
|
my $dbh = C4Connect;
|
|
my $query = "Select distinct biblio.* from biblio, biblioitems where
|
|
biblio.biblionumber = biblioitems.biblionumber and (";
|
|
my $count = 0;
|
|
my $sth;
|
|
my @results;
|
|
my @keywords = split(/ +/, $keywordlist);
|
|
my $keyword = shift(@keywords);
|
|
|
|
$keyword =~ s/%/\\%/g;
|
|
$keyword =~ s/_/\\_/;
|
|
$keyword = "%" . $keyword . "%";
|
|
$keyword = $dbh->quote($keyword);
|
|
$query .= " (url like $keyword)";
|
|
|
|
foreach $keyword (@keywords) {
|
|
$keyword =~ s/%/\\%/;
|
|
$keyword =~ s/_/\\_/;
|
|
$keyword = "%" . $keyword . "%";
|
|
$keyword = $dbh->quote($keyword);
|
|
$query .= " or (url like $keyword)";
|
|
} # foreach
|
|
|
|
$query .= ")";
|
|
$sth = $dbh->prepare($query);
|
|
$sth->execute;
|
|
|
|
while (my $data = $sth->fetchrow_hashref) {
|
|
$results[$count] = $data;
|
|
$count++;
|
|
} # while
|
|
|
|
$sth->finish;
|
|
$dbh->disconnect;
|
|
return($count, @results);
|
|
} # sub websitesearch
|
|
|
|
|
|
sub addwebsite {
|
|
my ($website) = @_;
|
|
my $dbh = C4Connect;
|
|
my $query;
|
|
|
|
$website->{'biblionumber'} = $dbh->quote($website->{'biblionumber'});
|
|
$website->{'title'} = $dbh->quote($website->{'title'});
|
|
$website->{'description'} = $dbh->quote($website->{'description'});
|
|
$website->{'url'} = $dbh->quote($website->{'url'});
|
|
|
|
$query = "Insert into websites set
|
|
biblionumber = $website->{'biblionumber'},
|
|
title = $website->{'title'},
|
|
description = $website->{'description'},
|
|
url = $website->{'url'}";
|
|
|
|
$dbh->do($query);
|
|
|
|
$dbh->disconnect;
|
|
} # sub website
|
|
|
|
|
|
sub updatewebsite {
|
|
my ($website) = @_;
|
|
my $dbh = C4Connect;
|
|
my $query;
|
|
|
|
$website->{'title'} = $dbh->quote($website->{'title'});
|
|
$website->{'description'} = $dbh->quote($website->{'description'});
|
|
$website->{'url'} = $dbh->quote($website->{'url'});
|
|
|
|
$query = "Update websites set
|
|
title = $website->{'title'},
|
|
description = $website->{'description'},
|
|
url = $website->{'url'}
|
|
where websitenumber = $website->{'websitenumber'}";
|
|
|
|
$dbh->do($query);
|
|
|
|
$dbh->disconnect;
|
|
} # sub updatewebsite
|
|
|
|
|
|
sub deletewebsite {
|
|
my ($websitenumber) = @_;
|
|
my $dbh = C4Connect;
|
|
my $query = "Delete from websites where websitenumber = $websitenumber";
|
|
|
|
$dbh->do($query);
|
|
|
|
$dbh->disconnect;
|
|
} # sub deletewebsite
|
|
|
|
END { } # module clean-up code here (global destructor)
|