loadmodules.pl allows redirection to different modules based on systemprefs
[koha.git] / C4 / Acquisitions.pm
blob9a6703fb1f05e79a7947224abb5129f931c7b1e6
1 package C4::Acquisitions; #asummes C4/Acquisitions.pm
3 use strict;
4 require Exporter;
5 use C4::Database;
7 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
9 # set the version for version checking
10 $VERSION = 0.01;
12 @ISA = qw(Exporter);
13 @EXPORT = qw(&getorders &bookseller &breakdown &basket &newbasket &bookfunds
14 &ordersearch &newbiblio &newbiblioitem &newsubject &newsubtitle &neworder
15 &newordernum &modbiblio &modorder &getsingleorder &invoice &receiveorder
16 &bookfundbreakdown &curconvert &updatesup &insertsup &makeitems &modbibitem
17 &getcurrencies &modsubtitle &modsubject &modaddauthor &moditem &countitems
18 &findall &needsmod &delitem &delbibitem &delbiblio &delorder &branches
19 &getallorders &updatecurrencies &getorder);
20 %EXPORT_TAGS = ( ); # eg: TAG => [ qw!name1 name2! ],
22 # your exported package globals go here,
23 # as well as any optionally exported functions
25 @EXPORT_OK = qw($Var1 %Hashit);
28 # non-exported package globals go here
29 use vars qw(@more $stuff);
31 # initalize package globals, first exported ones
33 my $Var1 = '';
34 my %Hashit = ();
37 # then the others (which are still accessible as $Some::Module::stuff)
38 my $stuff = '';
39 my @more = ();
41 # all file-scoped lexicals must be created before
42 # the functions below that use them.
44 # file-private lexicals go here
45 my $priv_var = '';
46 my %secret_hash = ();
48 # here's a file-private function as a closure,
49 # callable as &$priv_func; it cannot be prototyped.
50 my $priv_func = sub {
51 # stuff goes here.
54 # make all your functions, whether exported or not;
56 sub getorders {
57 my ($supplierid)=@_;
58 my $dbh=C4Connect;
59 my $query = "Select count(*),authorisedby,entrydate,basketno from aqorders where
60 booksellerid='$supplierid' and (datereceived = '0000-00-00' or
61 datereceived is NULL) and (cancelledby is NULL or cancelledby = '')";
62 $query.=" group by basketno order by entrydate";
63 # print $query;
64 my $sth=$dbh->prepare($query);
65 $sth->execute;
66 my @results;
67 my $i=0;
68 while (my $data=$sth->fetchrow_hashref){
69 $results[$i]=$data;
70 $i++;
72 $sth->finish;
73 $dbh->disconnect;
74 return ($i,\@results);
77 sub itemcount{
78 my ($biblio)=@_;
79 my $dbh=C4Connect;
80 my $query="Select count(*) from items where biblionumber=$biblio";
81 my $sth=$dbh->prepare($query);
82 $sth->execute;
83 my $data=$sth->fetchrow_hashref;
84 $sth->finish;
85 $dbh->disconnect;
86 return($data->{'count(*)'});
89 sub getorder{
90 my ($bi,$bib)=@_;
91 my $dbh=C4Connect;
92 my $query="Select ordernumber from aqorders where biblionumber=$bib and
93 biblioitemnumber='$bi'";
94 my $sth=$dbh->prepare($query);
95 $sth->execute;
96 my $ordnum=$sth->fetchrow_hashref;
97 $sth->finish;
98 my $order=getsingleorder($ordnum->{'ordernumber'});
99 $dbh->disconnect;
100 # print $query;
101 return ($order);
104 sub getsingleorder {
105 my ($ordnum)=@_;
106 my $dbh=C4Connect;
107 my $query="Select * from biblio,biblioitems,aqorders,aqorderbreakdown
108 where aqorders.ordernumber=$ordnum
109 and biblio.biblionumber=aqorders.biblionumber and
110 biblioitems.biblioitemnumber=aqorders.biblioitemnumber and
111 aqorders.ordernumber=aqorderbreakdown.ordernumber";
112 my $sth=$dbh->prepare($query);
113 $sth->execute;
114 my $data=$sth->fetchrow_hashref;
115 $sth->finish;
116 $dbh->disconnect;
117 return($data);
120 sub invoice {
121 my ($invoice)=@_;
122 my $dbh=C4Connect;
123 my $query="Select * from aqorders,biblio,biblioitems where
124 booksellerinvoicenumber='$invoice'
125 and biblio.biblionumber=aqorders.biblionumber and biblioitems.biblioitemnumber=
126 aqorders.biblioitemnumber group by aqorders.ordernumber,aqorders.biblioitemnumber";
127 my $i=0;
128 my @results;
129 my $sth=$dbh->prepare($query);
130 $sth->execute;
131 while (my $data=$sth->fetchrow_hashref){
132 $results[$i]=$data;
133 $i++;
135 $sth->finish;
136 $dbh->disconnect;
137 return($i,@results);
140 sub getallorders {
141 #gets all orders from a certain supplier, orders them alphabetically
142 my ($supid)=@_;
143 my $dbh=C4Connect;
144 my $query="Select * from aqorders,biblio,biblioitems where booksellerid='$supid'
145 and (cancelledby is NULL or cancelledby = '')
146 and biblio.biblionumber=aqorders.biblionumber and biblioitems.biblioitemnumber=
147 aqorders.biblioitemnumber
148 group by aqorders.biblioitemnumber
149 order by
150 biblio.title";
151 my $i=0;
152 my @results;
153 my $sth=$dbh->prepare($query);
154 $sth->execute;
155 while (my $data=$sth->fetchrow_hashref){
156 $results[$i]=$data;
157 $i++;
159 $sth->finish;
160 $dbh->disconnect;
161 return($i,@results);
164 sub ordersearch {
165 my ($search,$biblio,$catview)=@_;
166 my $dbh=C4Connect;
167 my $query="Select *,biblio.title from aqorders,biblioitems,biblio
168 where aqorders.biblioitemnumber=
169 biblioitems.biblioitemnumber and biblio.biblionumber=aqorders.biblionumber
170 and (datecancellationprinted is NULL or datecancellationprinted =
171 '000-00-00')
172 and ((";
173 my @data=split(' ',$search);
174 my $count=@data;
175 for (my $i=0;$i<$count;$i++){
176 $query.= "(biblio.title like '$data[$i]%' or biblio.title like '% $data[$i]%') and ";
178 $query=~ s/ and $//;
179 $query.=" ) or biblioitems.isbn='$search'
180 or (aqorders.ordernumber='$search' and aqorders.biblionumber='$biblio')) ";
181 if ($catview ne 'yes'){
182 $query.=" and (quantityreceived < quantity or quantityreceived is NULL)";
184 $query.=" group by aqorders.ordernumber";
185 my $sth=$dbh->prepare($query);
186 # print $query;
187 $sth->execute;
188 my $i=0;
189 my @results;
190 while (my $data=$sth->fetchrow_hashref){
191 my $sth2=$dbh->prepare("Select * from biblio where
192 biblionumber='$data->{'biblionumber'}'");
193 $sth2->execute;
194 my $data2=$sth2->fetchrow_hashref;
195 $sth2->finish;
196 $data->{'author'}=$data2->{'author'};
197 $data->{'seriestitle'}=$data2->{'seriestitle'};
198 $sth2=$dbh->prepare("Select * from aqorderbreakdown where
199 ordernumber=$data->{'ordernumber'}");
200 $sth2->execute;
201 $data2=$sth2->fetchrow_hashref;
202 $sth2->finish;
203 $data->{'branchcode'}=$data2->{'branchcode'};
204 $data->{'bookfundid'}=$data2->{'bookfundid'};
205 $results[$i]=$data;
206 $i++;
208 $sth->finish;
209 $dbh->disconnect;
210 return($i,@results);
214 sub bookseller {
215 my ($searchstring)=@_;
216 my $dbh=C4Connect;
217 my $query="Select * from aqbooksellers where name like '%$searchstring%' or
218 id = '$searchstring'";
219 my $sth=$dbh->prepare($query);
220 $sth->execute;
221 my @results;
222 my $i=0;
223 while (my $data=$sth->fetchrow_hashref){
224 $results[$i]=$data;
225 $i++;
227 $sth->finish;
228 $dbh->disconnect;
229 return($i,@results);
232 sub breakdown {
233 my ($id)=@_;
234 my $dbh=C4Connect;
235 my $query="Select * from aqorderbreakdown where ordernumber='$id'";
236 my $sth=$dbh->prepare($query);
237 $sth->execute;
238 my @results;
239 my $i=0;
240 while (my $data=$sth->fetchrow_hashref){
241 $results[$i]=$data;
242 $i++;
244 $sth->finish;
245 $dbh->disconnect;
246 return($i,\@results);
249 sub basket {
250 my ($basketno)=@_;
251 my $dbh=C4Connect;
252 my $query="Select *,biblio.title from aqorders,biblio,biblioitems
253 where basketno='$basketno'
254 and biblio.biblionumber=aqorders.biblionumber and biblioitems.biblioitemnumber
255 =aqorders.biblioitemnumber
256 and (datecancellationprinted is NULL or datecancellationprinted =
257 '0000-00-00')
258 group by aqorders.ordernumber";
259 my $sth=$dbh->prepare($query);
260 $sth->execute;
261 my @results;
262 # print $query;
263 my $i=0;
264 while (my $data=$sth->fetchrow_hashref){
265 $results[$i]=$data;
266 $i++;
268 $sth->finish;
269 $dbh->disconnect;
270 return($i,@results);
273 sub newbasket {
274 my $dbh=C4Connect;
275 my $query="Select max(basketno) from aqorders";
276 my $sth=$dbh->prepare($query);
277 $sth->execute;
278 my $data=$sth->fetchrow_arrayref;
279 my $basket=$$data[0];
280 $basket++;
281 $sth->finish;
282 $dbh->disconnect;
283 return($basket);
286 sub bookfunds {
287 my $dbh=C4Connect;
288 my $query="Select * from aqbookfund,aqbudget where aqbookfund.bookfundid
289 =aqbudget.bookfundid group by aqbookfund.bookfundid order by bookfundname";
290 my $sth=$dbh->prepare($query);
291 $sth->execute;
292 my @results;
293 my $i=0;
294 while (my $data=$sth->fetchrow_hashref){
295 $results[$i]=$data;
296 $i++;
298 $sth->finish;
299 $dbh->disconnect;
300 return($i,@results);
303 sub branches {
304 my $dbh=C4Connect;
305 my $query="Select * from branches";
306 my $sth=$dbh->prepare($query);
307 $sth->execute;
308 my @results;
309 my $i=0;
310 while (my $data=$sth->fetchrow_hashref){
311 $results[$i]=$data;
312 $i++;
314 $sth->finish;
315 $dbh->disconnect;
316 return($i,@results);
319 sub bookfundbreakdown {
320 my ($id)=@_;
321 my $dbh=C4Connect;
322 my $query="Select quantity,datereceived,freight,unitprice,listprice
323 from aqorders,aqorderbreakdown where bookfundid='$id' and
324 aqorders.ordernumber=aqorderbreakdown.ordernumber and entrydate >=
325 '2000-07-01' ";
326 my $sth=$dbh->prepare($query);
327 $sth->execute;
328 my $comtd=0;
329 my $spent=0;
330 while (my $data=$sth->fetchrow_hashref){
331 if ($data->{'datereceived'} =~ /0000/){
332 $comtd+=($data->{'listprice'}+$data->{'freight'})*$data->{'quantity'};
333 } else {
334 $spent+=($data->{'unitprice'}+$data->{'freight'})*$data->{'quantity'};
337 $sth->finish;
338 $dbh->disconnect;
339 return($spent,$comtd);
343 sub newbiblio {
344 my ($title,$author,$copyright)=@_;
345 my $dbh=C4Connect;
346 my $query="Select max(biblionumber) from biblio";
347 my $sth=$dbh->prepare($query);
348 $sth->execute;
349 my $data=$sth->fetchrow_arrayref;
350 my $bibnum=$$data[0];
351 $bibnum++;
352 $sth->finish;
353 $query="insert into biblio (biblionumber,title,author,copyrightdate) values
354 ($bibnum,'$title','$author','$copyright')";
355 $sth=$dbh->prepare($query);
356 # print $query;
357 $sth->execute;
358 $sth->finish;
359 $dbh->disconnect;
360 return($bibnum);
363 sub modbiblio {
364 my ($bibnum,$title,$author,$copyright,$seriestitle,$serial,$unititle,$notes)=@_;
365 my $dbh=C4Connect;
366 # $title=~ s/\'/\\\'/g;
367 # $author=~ s/\'/\\\'/g;
368 my $query="update biblio set title='$title',
369 author='$author',copyrightdate='$copyright',
370 seriestitle='$seriestitle',serial='$serial',unititle='$unititle',notes='$notes'
371 where
372 biblionumber=$bibnum";
373 my $sth=$dbh->prepare($query);
374 $sth->execute;
375 $sth->finish;
376 $dbh->disconnect;
377 return($bibnum);
380 sub modsubtitle {
381 my ($bibnum,$subtitle)=@_;
382 my $dbh=C4Connect;
383 my $query="update bibliosubtitle set subtitle='$subtitle' where biblionumber=$bibnum";
384 my $sth=$dbh->prepare($query);
385 $sth->execute;
386 $sth->finish;
387 $dbh->disconnect;
390 sub modaddauthor {
391 my ($bibnum,$author)=@_;
392 my $dbh=C4Connect;
393 my $query="Select * from additionalauthors where biblionumber=$bibnum";
394 my $sth=$dbh->prepare($query);
395 $sth->execute;
396 if (my $data=$sth->fetchrow_hashref){
397 $query="update additionalauthors set author='$author' where biblionumber=$bibnum";
398 } else {
399 $query="insert into additionalauthors (author,biblionumber) values ('$author','$bibnum')";
401 $sth->finish;
402 $sth=$dbh->prepare($query);
403 $sth->execute;
404 $sth->finish;
405 $dbh->disconnect;
408 sub modsubject {
409 my ($bibnum,$force,@subject)=@_;
410 my $dbh=C4Connect;
411 my $count=@subject;
412 my $error;
413 for (my $i=0;$i<$count;$i++){
414 $subject[$i]=~ s/^ //g;
415 $subject[$i]=~ s/ $//g;
416 my $query="select * from catalogueentry where entrytype='s' and
417 catalogueentry='$subject[$i]'";
418 my $sth=$dbh->prepare($query);
419 $sth->execute;
420 if (my $data=$sth->fetchrow_hashref){
422 } else {
423 if ($force eq $subject[$i]){
424 #subject not in aut, chosen to force anway
425 #so insert into cataloguentry so its in auth file
426 $query="Insert into catalogueentry (entrytype,catalogueentry)
427 values ('s','$subject[$i]')";
428 my $sth2=$dbh->prepare($query);
429 # print $query;
430 $sth2->execute;
431 $sth2->finish;
432 } else {
433 $error="$subject[$i]\n does not exist in the subject authority file";
434 $query= "Select * from catalogueentry where
435 entrytype='s' and (catalogueentry like '$subject[$i] %' or
436 catalogueentry like '% $subject[$i] %' or catalogueentry like
437 '% $subject[$i]')";
438 my $sth2=$dbh->prepare($query);
439 # print $query;
440 $sth2->execute;
441 while (my $data=$sth2->fetchrow_hashref){
442 $error=$error."<br>$data->{'catalogueentry'}";
444 $sth2->finish;
445 # $error=$error."<br>$query";
448 $sth->finish;
450 if ($error eq ''){
451 my $query="Delete from bibliosubject where biblionumber=$bibnum";
452 # print $query;
453 my $sth=$dbh->prepare($query);
454 # print $query;
455 $sth->execute;
456 $sth->finish;
457 for (my $i=0;$i<$count;$i++){
458 $sth=$dbh->prepare("Insert into bibliosubject values ('$subject[$i]',$bibnum)");
459 # print $subject[$i];
460 $sth->execute;
461 $sth->finish;
464 $dbh->disconnect;
465 return($error);
468 sub modbibitem {
469 my ($bibitemnum,$itemtype,$isbn,$publishercode,$publicationdate,$classification,$dewey,$subclass,$illus,$pages,$volumeddesc,$notes,$size,$place)=@_;
470 my $dbh=C4Connect;
471 my $query="update biblioitems set itemtype='$itemtype',
472 isbn='$isbn',publishercode='$publishercode',publicationyear='$publicationdate',
473 classification='$classification',dewey='$dewey',subclass='$subclass',illus='$illus',
474 pages='$pages',volumeddesc='$volumeddesc',notes='$notes',size='$size',place='$place'
475 where
476 biblioitemnumber=$bibitemnum";
477 my $sth=$dbh->prepare($query);
478 # print $query;
479 $sth->execute;
480 $sth->finish;
481 $dbh->disconnect;
484 sub newbiblioitem {
485 my ($bibnum,$itemtype,$isbn,$volinf,$class)=@_;
486 my $dbh=C4Connect;
487 my $query="Select max(biblioitemnumber) from biblioitems";
488 my $sth=$dbh->prepare($query);
489 $sth->execute;
490 my $data=$sth->fetchrow_arrayref;
491 my $bibitemnum=$$data[0];
492 $bibitemnum++;
493 $sth->finish;
494 $query="insert into biblioitems (biblionumber,biblioitemnumber,
495 itemtype,isbn,volumeddesc,classification)
496 values
497 ($bibnum,$bibitemnum,'$itemtype','$isbn','$volinf','$class')";
498 $sth=$dbh->prepare($query);
499 # print $query;
500 $sth->execute;
501 $sth->finish;
502 $dbh->disconnect;
503 return($bibitemnum);
506 sub newsubject {
507 my ($bibnum)=@_;
508 my $dbh=C4Connect;
509 my $query="insert into bibliosubject (biblionumber) values
510 ($bibnum)";
511 my $sth=$dbh->prepare($query);
512 # print $query;
513 $sth->execute;
514 $sth->finish;
515 $dbh->disconnect;
518 sub newsubtitle {
519 my ($bibnum)=@_;
520 my $dbh=C4Connect;
521 my $query="insert into bibliosubtitle (biblionumber) values
522 ($bibnum)";
523 my $sth=$dbh->prepare($query);
524 # print $query;
525 $sth->execute;
526 $sth->finish;
527 $dbh->disconnect;
530 sub neworder {
531 my ($bibnum,$title,$ordnum,$basket,$quantity,$listprice,$supplier,$who,
532 $notes,$bookfund,$bibitemnum,$rrp,$ecost,$gst)=@_;
533 my $dbh=C4Connect;
534 my $query="insert into aqorders (biblionumber,title,basketno,
535 quantity,listprice,booksellerid,entrydate,requisitionedby,authorisedby,notes,
536 biblioitemnumber,rrp,ecost,gst)
537 values
538 ($bibnum,'$title',$basket,$quantity,$listprice,'$supplier',now(),
539 '$who','$who','$notes',$bibitemnum,'$rrp','$ecost','$gst')";
540 my $sth=$dbh->prepare($query);
541 # print $query;
542 $sth->execute;
543 $sth->finish;
544 $query="select * from aqorders where
545 biblionumber=$bibnum and basketno=$basket and ordernumber >=$ordnum";
546 $sth=$dbh->prepare($query);
547 $sth->execute;
548 my $data=$sth->fetchrow_hashref;
549 $sth->finish;
550 $ordnum=$data->{'ordernumber'};
551 $query="insert into aqorderbreakdown (ordernumber,bookfundid) values
552 ($ordnum,'$bookfund')";
553 $sth=$dbh->prepare($query);
554 # print $query;
555 $sth->execute;
556 $sth->finish;
557 $dbh->disconnect;
560 sub delorder {
561 my ($bibnum,$ordnum)=@_;
562 my $dbh=C4Connect;
563 my $query="update aqorders set datecancellationprinted=now()
564 where biblionumber='$bibnum' and
565 ordernumber='$ordnum'";
566 my $sth=$dbh->prepare($query);
567 print $query;
568 $sth->execute;
569 $sth->finish;
570 my $count=itemcount($bibnum);
571 if ($count == 0){
572 delbiblio($bibnum);
574 $dbh->disconnect;
577 sub modorder {
578 my ($title,$ordnum,$quantity,$listprice,$bibnum,$basketno,$supplier,$who,$notes,$bookfund,$bibitemnum,$rrp,$ecost,$gst)=@_;
579 my $dbh=C4Connect;
580 my $query="update aqorders set title='$title',
581 quantity='$quantity',listprice='$listprice',basketno='$basketno',
582 rrp='$rrp',ecost='$ecost'
583 where
584 ordernumber=$ordnum and biblionumber=$bibnum";
585 my $sth=$dbh->prepare($query);
586 # print $query;
587 $sth->execute;
588 $sth->finish;
589 $query="update aqorderbreakdown set bookfundid=$bookfund where
590 ordernumber=$ordnum";
591 $sth=$dbh->prepare($query);
592 # print $query;
593 $sth->execute;
594 $sth->finish;
595 $dbh->disconnect;
598 sub newordernum {
599 my $dbh=C4Connect;
600 my $query="Select max(ordernumber) from aqorders";
601 my $sth=$dbh->prepare($query);
602 $sth->execute;
603 my $data=$sth->fetchrow_arrayref;
604 my $ordnum=$$data[0];
605 $ordnum++;
606 $sth->finish;
607 $dbh->disconnect;
608 return($ordnum);
611 sub receiveorder {
612 my ($biblio,$ordnum,$quantrec,$user,$cost,$invoiceno,$bibitemno,$freight,$bookfund)=@_;
613 my $dbh=C4Connect;
614 my $query="update aqorders set quantityreceived='$quantrec',
615 datereceived=now(),booksellerinvoicenumber='$invoiceno',
616 biblioitemnumber=$bibitemno,unitprice='$cost',freight='$freight'
617 where biblionumber=$biblio and ordernumber=$ordnum
619 # print $query;
620 my $sth=$dbh->prepare($query);
621 $sth->execute;
622 $sth->finish;
623 $query="update aqorderbreakdown set bookfundid=$bookfund where
624 ordernumber=$ordnum";
625 $sth=$dbh->prepare($query);
626 # print $query;
627 $sth->execute;
628 $sth->finish;
629 $dbh->disconnect;
632 sub curconvert {
633 my ($currency,$price)=@_;
634 my $dbh=C4Connect;
635 my $query="Select rate from currency where currency='$currency'";
636 my $sth=$dbh->prepare($query);
637 $sth->execute;
638 my $data=$sth->fetchrow_hashref;
639 $sth->finish;
640 $dbh->disconnect;
641 my $cur=$data->{'rate'};
642 if ($cur==0){
643 $cur=1;
645 my $price=$price / $cur;
646 return($price);
649 sub getcurrencies {
650 my $dbh=C4Connect;
651 my $query="Select * from currency";
652 my $sth=$dbh->prepare($query);
653 $sth->execute;
654 my @results;
655 my $i=0;
656 while (my $data=$sth->fetchrow_hashref){
657 $results[$i]=$data;
658 $i++;
660 $sth->finish;
661 $dbh->disconnect;
662 return($i,\@results);
665 sub updatecurrencies {
666 my ($currency,$rate)=@_;
667 my $dbh=C4Connect;
668 my $query="update currency set rate=$rate where currency='$currency'";
669 my $sth=$dbh->prepare($query);
670 $sth->execute;
671 $sth->finish;
672 $dbh->disconnect;
675 sub updatesup {
676 my ($data)=@_;
677 my $dbh=C4Connect;
678 my $query="Update aqbooksellers set
679 name='$data->{'name'}',address1='$data->{'address1'}',address2='$data->{'address2'}',
680 address3='$data->{'address3'}',address4='$data->{'address4'}',postal='$data->{'postal'}',
681 phone='$data->{'phone'}',fax='$data->{'fax'}',url='$data->{'url'}',
682 contact='$data->{'contact'}',contpos='$data->{'contpos'}',
683 contphone='$data->{'contphone'}', contfax='$data->{'contfax'}', contaltphone=
684 '$data->{'contaltphone'}', contemail='$data->{'contemail'}', contnotes=
685 '$data->{'contnotes'}', active=$data->{'active'},
686 listprice='$data->{'listprice'}', invoiceprice='$data->{'invoiceprice'}',
687 gstreg=$data->{'gstreg'}, listincgst=$data->{'listincgst'},
688 invoiceincgst=$data->{'invoiceincgst'}, specialty='$data->{'specialty'}',
689 discount='$data->{'discount'}'
690 where id='$data->{'id'}'";
691 my $sth=$dbh->prepare($query);
692 $sth->execute;
693 $sth->finish;
694 $dbh->disconnect;
695 # print $query;
698 sub insertsup {
699 my ($data)=@_;
700 my $dbh=C4Connect;
701 my $sth=$dbh->prepare("Select max(id) from aqbooksellers");
702 $sth->execute;
703 my $data2=$sth->fetchrow_hashref;
704 $sth->finish;
705 $data2->{'max(id)'}++;
706 $sth=$dbh->prepare("Insert into aqbooksellers (id) values ($data2->{'max(id)'})");
707 $sth->execute;
708 $sth->finish;
709 $data->{'id'}=$data2->{'max(id)'};
710 $dbh->disconnect;
711 updatesup($data);
712 return($data->{'id'});
715 sub makeitems {
717 ($count,$bibitemno,$biblio,$replacement,$price,$booksellerid,$branch,$loan,@barcodes)=@_;
718 my $dbh=C4Connect;
719 my $sth=$dbh->prepare("Select max(itemnumber) from items");
720 $sth->execute;
721 my $data=$sth->fetchrow_hashref;
722 my $item=$data->{'max(itemnumber)'};
723 $sth->finish;
724 $item++;
725 my $error;
726 for (my $i=0;$i<$count;$i++){
727 $barcodes[$i]=uc $barcodes[$i];
728 my $query="Insert into items (biblionumber,biblioitemnumber,itemnumber,barcode,
729 booksellerid,dateaccessioned,homebranch,holdingbranch,price,replacementprice,
730 replacementpricedate,notforloan) values
731 ($biblio,$bibitemno,$item,'$barcodes[$i]','$booksellerid',now(),'$branch',
732 '$branch','$price','$replacement',now(),$loan)";
733 my $sth=$dbh->prepare($query);
734 $sth->execute;
735 $error.=$sth->errstr;
736 $sth->finish;
737 $item++;
738 # print $query;
740 $dbh->disconnect;
741 return($error);
744 sub moditem {
745 my ($loan,$itemnum,$bibitemnum,$barcode,$notes,$homebranch,$lost,$wthdrawn)=@_;
746 my $dbh=C4Connect;
747 my $query="update items set biblioitemnumber=$bibitemnum,
748 barcode='$barcode',itemnotes='$notes'
749 where itemnumber=$itemnum";
750 if ($barcode eq ''){
751 $query="update items set biblioitemnumber=$bibitemnum,notforloan=$loan where itemnumber=$itemnum";
753 if ($lost ne ''){
754 $query="update items set biblioitemnumber=$bibitemnum,
755 barcode='$barcode',itemnotes='$notes',homebranch='$homebranch',
756 itemlost='$lost',wthdrawn='$wthdrawn' where itemnumber=$itemnum";
759 my $sth=$dbh->prepare($query);
760 $sth->execute;
761 $sth->finish;
762 $dbh->disconnect;
765 sub countitems{
766 my ($bibitemnum)=@_;
767 my $dbh=C4Connect;
768 my $query="Select count(*) from items where biblioitemnumber='$bibitemnum'";
769 my $sth=$dbh->prepare($query);
770 $sth->execute;
771 my $data=$sth->fetchrow_hashref;
772 $sth->finish;
773 $dbh->disconnect;
774 return($data->{'count(*)'});
777 sub findall {
778 my ($biblionumber)=@_;
779 my $dbh=C4Connect;
780 my $query="Select * from biblioitems,items,itemtypes where
781 biblioitems.biblionumber=$biblionumber
782 and biblioitems.biblioitemnumber=items.biblioitemnumber and
783 itemtypes.itemtype=biblioitems.itemtype
784 order by items.biblioitemnumber";
785 my $sth=$dbh->prepare($query);
786 $sth->execute;
787 my @results;
788 my $i;
789 while (my $data=$sth->fetchrow_hashref){
790 $results[$i]=$data;
791 $i++;
793 $sth->finish;
794 $dbh->disconnect;
795 return(@results);
798 sub needsmod{
799 my ($bibitemnum,$itemtype)=@_;
800 my $dbh=C4Connect;
801 my $query="Select * from biblioitems where biblioitemnumber=$bibitemnum
802 and itemtype='$itemtype'";
803 my $sth=$dbh->prepare($query);
804 $sth->execute;
805 my $result=0;
806 if (my $data=$sth->fetchrow_hashref){
807 $result=1;
809 $sth->finish;
810 $dbh->disconnect;
811 return($result);
814 sub delitem{
815 my ($itemnum)=@_;
816 my $dbh=C4Connect;
817 my $query="select * from items where itemnumber=$itemnum";
818 my $sth=$dbh->prepare($query);
819 $sth->execute;
820 my @data=$sth->fetchrow_array;
821 $sth->finish;
822 $query="Insert into deleteditems values (";
823 foreach my $temp (@data){
824 $query=$query."'$temp',";
826 $query=~ s/\,$/\)/;
827 # print $query;
828 $sth=$dbh->prepare($query);
829 $sth->execute;
830 $sth->finish;
831 $query = "Delete from items where itemnumber=$itemnum";
832 $sth=$dbh->prepare($query);
833 $sth->execute;
834 $sth->finish;
835 $dbh->disconnect;
838 sub delbibitem{
839 my ($itemnum)=@_;
840 my $dbh=C4Connect;
841 my $query="select * from biblioitems where biblioitemnumber=$itemnum";
842 my $sth=$dbh->prepare($query);
843 $sth->execute;
844 if (my @data=$sth->fetchrow_array){
845 $sth->finish;
846 $query="Insert into deletedbiblioitems values (";
847 foreach my $temp (@data){
848 $temp=~ s/\'/\\\'/g;
849 $query=$query."'$temp',";
851 $query=~ s/\,$/\)/;
852 # print $query;
853 $sth=$dbh->prepare($query);
854 $sth->execute;
855 $sth->finish;
856 $query = "Delete from biblioitems where biblioitemnumber=$itemnum";
857 $sth=$dbh->prepare($query);
858 $sth->execute;
859 $sth->finish;
861 $sth->finish;
862 $dbh->disconnect;
865 sub delbiblio{
866 my ($biblio)=@_;
867 my $dbh=C4Connect;
868 my $query="select * from biblio where biblionumber=$biblio";
869 my $sth=$dbh->prepare($query);
870 $sth->execute;
871 if (my @data=$sth->fetchrow_array){
872 $sth->finish;
873 $query="Insert into deletedbiblio values (";
874 foreach my $temp (@data){
875 $temp=~ s/\'/\\\'/g;
876 $query=$query."'$temp',";
878 $query=~ s/\,$/\)/;
879 # print $query;
880 $sth=$dbh->prepare($query);
881 $sth->execute;
882 $sth->finish;
883 $query = "Delete from biblio where biblionumber=$biblio";
884 $sth=$dbh->prepare($query);
885 $sth->execute;
886 $sth->finish;
888 $sth->finish;
889 $dbh->disconnect;
892 END { } # module clean-up code here (global destructor)