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