returnbook() was not marking reserved books as waiting.
[koha.git] / updateitem.pl
1 #!/usr/bin/perl
2
3 use C4::Database;
4 use CGI;
5 use strict;
6 use C4::Acquisitions;
7 use C4::Biblio;
8 use C4::Output;
9 use C4::Circulation::Circ2;
10 use C4::Accounts2;
11 use C4::Auth;
12
13 my $env;
14 my $input= new CGI;
15
16 my $flagsrequired;
17 $flagsrequired->{editcatalogue}=1;
18 my ($loggedinuser, $cookie, $sessionID) = checkauth($input, 0, $flagsrequired);
19
20
21 my $bibnum=checkinp($input->param('bibnum'));
22 my $itemnum=checkinp($input->param('itemnumber'));
23 my $copyright=checkinp($input->param('Copyright'));
24 my $seriestitle=checkinp($input->param('Series'));
25 my $serial=checkinp($input->param('Serial'));
26 my $unititle=checkinp($input->param('Unititle'));
27 my $notes=checkinp($input->param('ItemNotes'));
28
29 #need to do barcode check
30 my $barcode=$input->param('Barcode');
31
32 my $bibitemnum=checkinp($input->param('bibitemnum'));
33 my $itemtype=checkinp($input->param('Item'));
34 my $isbn=checkinp($input->param('ISBN'));
35 my $publishercode=checkinp($input->param('Publisher'));
36 my $publicationdate=checkinp($input->param('Publication'));
37 my $class=checkinp($input->param('Class'));
38 my $homebranch=checkinp($input->param('Home'));
39 my $lost=$input->param('Lost');
40 my $wthdrawn=$input->param('withdrawn');
41 my $classification;
42 my $dewey;
43 my $subclass;
44 my $override=$input->param('override');
45 if ($itemtype ne 'NF'){
46   $classification=$class;
47 }
48 if ($class =~/[0-9]+/){
49    $dewey= $class;
50    $dewey=~ s/[a-z]+//gi;
51    my @temp;
52    if ($class =~ /\./){
53      @temp=split(/[0-9]+\.[0-9]+/,$class);
54    } else {
55      @temp=split(/[0-9]+/,$class);
56    }
57    $classification=$temp[0];
58    $subclass=$temp[1];
59 }else{
60   $dewey='';
61 }
62 my $illus=checkinp($input->param('Illustrations'));
63 my $pages=checkinp($input->param('Pages'));
64 my $volumeddesc=checkinp($input->param('Volume'));
65
66 if ($wthdrawn == 0 && $override ne 'yes'){
67   moditem('loan',$itemnum,$bibitemnum,$barcode,$notes,$homebranch,$lost,$wthdrawn);
68   if ($lost ==1){
69     my $dbh=C4Connect;
70     my $sth=$dbh->prepare("Select * from issues where (itemnumber='$itemnum') and (returndate is null)");
71     $sth->execute;
72     my $data=$sth->fetchrow_hashref;
73     if ($data->{'borrowernumber'} ne '') {
74       #item on issue add replacement cost to borrowers record
75       my $accountno=getnextacctno($env,$data->{'borrowernumber'},$dbh);
76       my $item=getiteminformation($env, $itemnum);
77       my $account="Insert into accountlines
78       (borrowernumber,accountno,date,amount,description,accounttype,amountoutstanding,itemnumber)
79       values
80       ('$data->{'borrowernumber'}','$accountno',now(),'$item->{'replacementprice'}',
81       'Lost Item $item->{'title'} $item->{'barcode'}','L',
82       '$item->{'replacementprice'}','$itemnum')";
83       my $sth2=$dbh->prepare($account);
84 #      print $input->header;
85 #      print $account;
86       $sth2->execute;
87       $sth2->finish;
88     }
89     $sth->finish;
90   }
91   print $input->redirect("moredetail.pl?type=intra&bib=$bibnum&bi=$bibitemnum");
92 } else {
93   
94 #  print "marking cancelled";
95   #need to check if it is on reserve or issued
96   my $dbh=C4Connect;
97   my $flag=0; 
98   my ($resbor,$resrec)=C4::Circulation::Circ2::checkreserve($env,$dbh,$itemnum);
99  # print $resbor;
100   if ($resbor){
101     print $input->header;
102     print "The biblio or biblioitem this item belongs to has a reserve on it";
103     $flag=1;
104   }
105   my $sth=$dbh->prepare("Select * from issues where (itemnumber='$itemnum') and (returndate is null)"); 
106   $sth->execute;
107   my $data=$sth->fetchrow_hashref;
108   if ($data->{'borrowernumber'} ne '') {
109     print $input->header;
110     print "<p>Item is on issue";
111     $flag=1;
112   }
113   $sth->finish;
114   $dbh->disconnect;
115   if ($flag == 1){
116     my $url=$input->self_url;
117     $url.="&override=yes";
118     print "<p> <a href=$url>Cancel Anyway</a> &nbsp; or <a href=\"\">Back</a>";
119   }else {
120     moditem('loan',$itemnum,$bibitemnum,$barcode,$notes,$homebranch,$lost,$wthdrawn);
121     print $input->redirect("moredetail.pl?type=intra&bib=$bibnum&bi=$bibitemnum");
122   }
123 }
124 #print $bibitemnum;
125
126 sub checkinp{
127   my ($inp)=@_;
128   $inp=~ s/\'/\\\'/g;
129   $inp=~ s/\"/\\\"/g;
130   return($inp);
131 }
132
133 #sub checkissue{
134