updating INSTALL and INSTALL.debian
[koha.git] / acqui / orderreceive.pl
1 #!/usr/bin/perl
2
3
4 #script to recieve orders
5 #written by chris@katipo.co.nz 24/2/2000
6
7 # Copyright 2000-2002 Katipo Communications
8 #
9 # This file is part of Koha.
10 #
11 # Koha is free software; you can redistribute it and/or modify it under the
12 # terms of the GNU General Public License as published by the Free Software
13 # Foundation; either version 2 of the License, or (at your option) any later
14 # version.
15 #
16 # Koha is distributed in the hope that it will be useful, but WITHOUT ANY
17 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
18 # A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
19 #
20 # You should have received a copy of the GNU General Public License along with
21 # Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
22 # Suite 330, Boston, MA  02111-1307 USA
23
24 =head1 NAME
25
26 orderreceive.pl
27
28 =head1 DESCRIPTION
29 This script shows all order already receive and all pendings orders.
30 It permit to write a new order as 'received'.
31
32 =head1 CGI PARAMETERS
33
34 =over 4
35
36 =item supplierid
37 to know on what supplier this script has to display receive order.
38
39 =item recieve
40
41 =item invoice
42 the number of this invoice.
43
44 =item freight
45
46 =item biblio
47 The biblionumber of this order.
48
49 =item daterecieved
50
51 =item catview
52
53 =item gst
54
55 =back
56
57 =cut
58
59 use strict;
60 use CGI;
61 use C4::Context;
62 use C4::Koha;   # GetKohaAuthorisedValues GetItemTypes
63 use C4::Acquisition;
64 use C4::Auth;
65 use C4::Output;
66 use C4::Dates qw/format_date/;
67 use C4::Bookseller;
68 use C4::Members;
69 use C4::Branch;    # GetBranches
70
71 my $input      = new CGI;
72 my $supplierid = $input->param('supplierid');
73 my $dbh        = C4::Context->dbh;
74
75 my $search       = $input->param('recieve');
76 my $invoice      = $input->param('invoice');
77 my $freight      = $input->param('freight');
78 my $biblionumber       = $input->param('biblionumber');
79 my $daterecieved = $input->param('daterecieved') || format_date(join "-",Date::Calc::Today());
80 my $catview      = $input->param('catview');
81 my $gst          = $input->param('gst');
82
83 my @results = SearchOrder( $search, $supplierid, $biblionumber, $catview );
84 my $count   = scalar @results;
85
86 my @booksellers = GetBookSeller( $results[0]->{'booksellerid'} );
87
88 my $date = $results[0]->{'entrydate'};
89
90 my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
91     {
92         template_name   => "acqui/orderreceive.tmpl",
93         query           => $input,
94         type            => "intranet",
95         authnotrequired => 0,
96         flagsrequired   => { acquisition => 1 },
97         debug           => 1,
98     }
99 );
100 $template->param($count);
101
102 if ( $count == 1 ) {
103
104     my $itemtypes = GetItemTypes;
105     my @itemtypesloop;
106     foreach my $thisitemtype (sort keys %$itemtypes) {
107         my %row = (
108                     value => $thisitemtype,
109                     description => $itemtypes->{$thisitemtype}->{'description'},
110                   );
111         push @itemtypesloop, \%row;
112     }
113     
114     $template->param(itemtypeloop => \@itemtypesloop);
115
116
117     my $locations = GetKohaAuthorisedValues( 'items.location' );
118     if ($locations) {
119         my @location_codes = keys %$locations;
120         my $CGIlocation    = CGI::scrolling_list(
121             -name     => 'location',
122             -id       => 'location',
123             -values   => \@location_codes,
124             -default  => $results[0]->{'itemtype'},
125             -labels   => $locations,
126             -size     => 1,
127             -tabindex => '',
128             -multiple => 0
129         );
130         $template->param( CGIlocation => $CGIlocation );
131     }
132     my $onlymine=C4::Context->preference('IndependantBranches') && 
133                 C4::Context->userenv && 
134                 C4::Context->userenv->{flags} !=1  && 
135                 C4::Context->userenv->{branch};
136     my $branches = GetBranches($onlymine);
137     my @branchloop;
138     foreach my $thisbranch ( sort keys %$branches ) {
139         my %row = (
140             value      => $thisbranch,
141             branchname => $branches->{$thisbranch}->{'branchname'},
142         );
143         push @branchloop, \%row;
144     }
145
146     my $auto_barcode = C4::Context->boolean_preference("autoBarcode") || 0;
147
148     # See whether barcodes should be automatically allocated.
149     # Defaults to 0, meaning "no".
150     my $barcode;
151     if ( $auto_barcode ) {
152         my $sth = $dbh->prepare("Select max(barcode) from items");
153         $sth->execute;
154         my $data = $sth->fetchrow_hashref;
155         $barcode = $results[0]->{'barcode'} + 1;
156         $sth->finish;
157     }
158
159     if ( $results[0]->{'quantityreceived'} == 0 ) {
160         $results[0]->{'quantityreceived'} = '';
161     }
162     if ( $results[0]->{'unitprice'} == 0 ) {
163         $results[0]->{'unitprice'} = '';
164     }
165     $results[0]->{'copyrightdate'} =
166       format_date( $results[0]->{'copyrightdate'} );
167     $template->param(
168         branchloop            => \@branchloop,
169         count                 => 1,
170         biblionumber          => $results[0]->{'biblionumber'},
171         ordernumber           => $results[0]->{'ordernumber'},
172         biblioitemnumber      => $results[0]->{'biblioitemnumber'},
173         supplierid            => $results[0]->{'booksellerid'},
174         freight               => $freight,
175         gst                   => $gst,
176         catview               => ( $catview ne 'yes' ? 1 : 0 ),
177         name                  => $booksellers[0]->{'name'},
178         date                  => format_date($date),
179         title                 => $results[0]->{'title'},
180         author                => $results[0]->{'author'},
181         copyrightdate         => format_date( $results[0]->{'copyrightdate'} ),
182         itemtype              => $results[0]->{'itemtype'},
183         isbn                  => $results[0]->{'isbn'},
184         seriestitle           => $results[0]->{'seriestitle'},
185         barcode               => $barcode,
186         bookfund              => $results[0]->{'bookfundid'},
187         quantity              => $results[0]->{'quantity'},
188         quantityreceivedplus1 => $results[0]->{'quantityreceived'} + 1,
189         quantityreceived      => $results[0]->{'quantityreceived'},
190         rrp                   => $results[0]->{'rrp'},
191         ecost                 => $results[0]->{'ecost'},
192         unitprice             => $results[0]->{'unitprice'},
193         invoice               => $invoice,
194         daterecieved          => $daterecieved,
195     );
196 }
197 else {
198     my @loop;
199     for ( my $i = 0 ; $i < $count ; $i++ ) {
200         my %line = %{ $results[$i] };
201
202         $line{invoice}      = $invoice;
203         $line{daterecieved} = $daterecieved;
204         $line{freight}      = $freight;
205         $line{gst}          = $gst;
206         $line{title}        = $results[$i]->{'title'};
207         $line{author}       = $results[$i]->{'author'};
208         $line{supplierid}   = $supplierid;
209         push @loop, \%line;
210     }
211     $template->param(
212         loop                    => \@loop,
213         date                    => format_date($date),
214         daterecieved            => $daterecieved,
215         name                    => $booksellers[0]->{'name'},
216         supplierid              => $supplierid,
217         invoice                 => $invoice,
218         daterecieved            => $daterecieved,
219     );
220
221 }
222 output_html_with_http_headers $input, $cookie, $template->output;