Incorporates the facets from dev_week. This one is table read so its both UNIMARC...
[koha.git] / catalogue / moredetail.pl
1 #!/usr/bin/perl
2 # NOTE: Use standard 8-space tabs for this file (indents are 4 spaces)
3
4 # $Id$
5
6 # Copyright 2000-2003 Katipo Communications
7 #
8 # This file is part of Koha.
9 #
10 # Koha is free software; you can redistribute it and/or modify it under the
11 # terms of the GNU General Public License as published by the Free Software
12 # Foundation; either version 2 of the License, or (at your option) any later
13 # version.
14 #
15 # Koha is distributed in the hope that it will be useful, but WITHOUT ANY
16 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
17 # A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
18 #
19 # You should have received a copy of the GNU General Public License along with
20 # Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
21 # Suite 330, Boston, MA  02111-1307 USA
22
23 use strict;
24 require Exporter;
25 use C4::Koha;
26 use CGI;
27 use C4::Search;
28 use C4::Acquisition;
29 use C4::Auth;
30 use C4::Interface::CGI::Output;
31 use C4::Date;
32 use C4::Context;
33 use C4::Biblio;
34 use C4::Accounts2;
35 use C4::Circulation::Circ2;
36
37 my $dbh=C4::Context->dbh;
38 my $query=new CGI;
39
40
41 my ($template, $loggedinuser, $cookie) = get_template_and_user({
42         template_name   => ( 'catalogue/moredetail.tmpl'),
43         query           => $query,
44         type            => "intranet",
45         authnotrequired => 0,
46         flagsrequired   => {catalogue => 1},
47     });
48
49 # get variables
50 my $op=$query->param('op');
51 my $lost=$query->param('lost');
52 my $withdrawn=$query->param('withdrawn');
53 my $override=$query->param('override');
54 my $itemnumber=$query->param('itemnumber');
55 my $barcode=$query->param('barcode');
56
57 my $title=$query->param('title');
58 my $biblionumber=$query->param('biblionumber');
59 my ($record)=XMLgetbibliohash($dbh,$biblionumber);
60 my $data=XMLmarc2koha_onerecord($dbh,$record,"biblios");
61 my $dewey = $data->{'dewey'};
62 # FIXME Dewey is a string, not a number, & we should use a function
63 $dewey =~ s/0+$//;
64 if ($dewey eq "000.") { $dewey = "";};
65 if ($dewey < 10){$dewey='00'.$dewey;}
66 if ($dewey < 100 && $dewey > 10){$dewey='0'.$dewey;}
67 if ($dewey <= 0){
68       $dewey='';
69 }
70 $dewey=~ s/\.$//;
71 $data->{'dewey'}=$dewey;
72
73 my @results;
74
75 my @items;
76 if ($op eq "update"){
77 my $env;
78 ##Do Lost or Withdraw here
79 my $flag=0;
80   my ($resbor,$resrec)=C4::Reserves2::CheckReserves($env,$dbh,$itemnumber);
81 if ($override ne "yes"){
82   if ($resbor){
83 #    print $query->header;
84     $template->param(error => "This item   has a reserve on it");
85  $template->param(biblionumber =>$biblionumber);
86  $template->param(itemnumber =>$itemnumber);
87  $template->param(lost =>$lost);
88  $template->param(withdrawn =>$withdrawn);
89     $flag=1;
90   }
91   my $sth=$dbh->prepare("Select * from issues where (itemnumber=?) and (returndate is null)");
92   $sth->execute($itemnumber);
93  
94   if (my $data=$sth->fetchrow_hashref) {
95    $template->param(biblionumber =>$biblionumber);
96  $template->param(itemnumber =>$itemnumber);
97  $template->param(error => "This item   is On Loan to a member");
98  $template->param(lost =>$lost);
99  $template->param(withdrawn =>$withdrawn);
100     $flag=2;
101   }
102 }
103 if ($flag != 0 && $override ne "yes"){
104
105   }else {
106    ##UPDATE here
107 #my $sth=$dbh->prepare("update items set itemlost=? ,wthdrawn=? where itemnumber=?");
108 #$sth->execute($lost,$withdrawn,$itemnumber);
109 #$sth->finish;
110 XMLmoditemonefield($dbh,$biblionumber,$itemnumber,'wthdrawn',$withdrawn,1);
111 XMLmoditemonefield($dbh,$biblionumber,$itemnumber,'itemlost',$lost);
112
113      if ($lost ==1 && $flag ==2){
114     my $sth=$dbh->prepare("Select * from issues where (itemnumber=?) and (returndate is null)");
115     $sth->execute($itemnumber);
116     my $data=$sth->fetchrow_hashref;
117     if ($data->{'borrowernumber'} ne '') {
118       #item on issue add replacement cost to borrowers record
119       my $accountno=getnextacctno($env,$data->{'borrowernumber'},$dbh);
120       my $item=getiteminformation($env, $itemnumber);
121       my $sth2=$dbh->prepare("Insert into accountlines
122       (borrowernumber,accountno,date,amount,description,accounttype,amountoutstanding,itemnumber)
123       values
124       (?,?,now(),?,?,'L',?,?)");
125       $sth2->execute($data->{'borrowernumber'},$accountno,$item->{'replacementprice'},
126       "Lost Item $item->{'title'} $item->{'barcode'}",
127       $item->{'replacementprice'},$itemnumber);
128       $sth2->finish;
129     }
130     }
131         if ($flag==1){
132         foreach my $res ($resrec){
133         C4::Reserves2::CancelReseve(undef,$res->{itemnumber},$res->{borrowernumber});
134         }
135         }
136     
137   }
138 }
139 my @itemrecords=XMLgetallitems($dbh,$biblionumber);
140 foreach my $itemrecord (@itemrecords){
141 $itemrecord=XML_xml2hash_onerecord($itemrecord);
142 my $items = XMLmarc2koha_onerecord($dbh,$itemrecord,"holdings");
143 $items->{itemtype}=$data->{itemtype};
144 $items->{biblionumber}=$biblionumber;
145 $items=itemissues($dbh,$items,$items->{'itemnumber'});
146 push @items,$items;
147 }
148 my $count=@items;
149 $data->{'count'}=$count;
150 my ($order,$ordernum)=GetOrder($biblionumber,$barcode);
151
152 my $env;
153 $env->{itemcount}=1;
154
155 $results[0]=$data;
156
157 foreach my $item (@items){
158     $item->{'replacementprice'}=sprintf("%.2f", $item->{'replacementprice'});
159     $item->{'datelastborrowed'}= format_date($item->{'datelastborrowed'});
160     $item->{'dateaccessioned'} = format_date($item->{'dateaccessioned'});
161     $item->{'datelastseen'} = format_date($item->{'datelastseen'});
162     $item->{'ordernumber'} = $ordernum;
163     $item->{'booksellerinvoicenumber'} = $order->{'booksellerinvoicenumber'};
164
165     if ($item->{'date_due'} gt '0000-00-00'){
166         $item->{'date_due'} = format_date($item->{'date_due'});         
167 $item->{'issue'}= 1;
168                 $item->{'borrowernumber'} = $item->{'borrower'};
169                 $item->{'cardnumber'} = $item->{'card'};
170                         
171     } else {
172         $item->{'issue'}= 0;
173     }
174 }
175
176 $template->param(BIBITEM_DATA => \@results);
177 $template->param(ITEM_DATA => \@items);
178 $template->param(loggedinuser => $loggedinuser);
179
180 output_html_with_http_headers $query, $cookie, $template->output;
181
182
183 # Local Variables:
184 # tab-width: 8
185 # End: