3d7df52b0d
0- Requires MARC::Record from cpan to work 1- divided Catalogue.pm in 2 parts : Biblio.pm ,that contains biblio management Catalogue.pm, that contains acquisition management. When ended, they will replace the Acquisition.pm package 2- Created MARCxxx functions : * MARCgetbiblio : retrieves a MARC::Record from the bibid passed in parameter (working, see test.pl script) * MARCaddbiblio : creates a MARC-DB entry, for a MARC::Record given as parameter. (working) * MARCmodsubfield : modifies a subfield for a given subfieldid * MARCfingsubfield : retrieves a subfieldvalue from a bibid/tag/subfield * MARCaddsubfield : adds a subfield to biblio into the DB * MARCkoha2marc : builds a MARC::Record, given a biblionumber, a biblioitemnumber and/or an itemnumber. (working). TODO : A lot ;-)))) For instance, you can create only a MARC-DB entry from a old-DB entry. Note some questions are still to solve around bibid (old-DB/MARC-DB)...
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
|
|
|
|
&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)
|