synch'ing 2.2 and head
[wip/koha-chris_n.git] / acqui / basket.pl
1 #!/usr/bin/perl
2
3 # $Id$
4
5 #script to show display basket of orders
6 #written by chris@katipo.co.nz 24/2/2000
7
8
9 # Copyright 2000-2002 Katipo Communications
10 #
11 # This file is part of Koha.
12 #
13 # Koha is free software; you can redistribute it and/or modify it under the
14 # terms of the GNU General Public License as published by the Free Software
15 # Foundation; either version 2 of the License, or (at your option) any later
16 # version.
17 #
18 # Koha is distributed in the hope that it will be useful, but WITHOUT ANY
19 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
20 # A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
21 #
22 # You should have received a copy of the GNU General Public License along with
23 # Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
24 # Suite 330, Boston, MA  02111-1307 USA
25
26 use strict;
27 use C4::Auth;
28 use C4::Koha;
29 use C4::Output;
30 use CGI;
31 use C4::Interface::CGI::Output;
32 use C4::Database;
33 use HTML::Template;
34 use C4::Acquisition;
35 use C4::Date;
36
37 my $query =new CGI;
38 my $basketno = $query ->param('basket');
39 my $booksellerid = $query->param('supplierid');
40 my $order = $query->param('order');
41 my ($template, $loggedinuser, $cookie)
42     = get_template_and_user({template_name => "acqui/basket.tmpl",
43                              query => $query,
44                              type => "intranet",
45                              authnotrequired => 0,
46                              flagsrequired => {acquisition => 1},
47                              debug => 1,
48                              });
49 my ($count,@results);
50
51 my $basket = getbasket($basketno);
52 # FIXME : the query->param('supplierid') below is probably useless. The bookseller is always known from the basket
53 # if no booksellerid in parameter, get it from basket
54 # warn "=>".$basket->{booksellerid};
55 $booksellerid = $basket->{booksellerid} unless $booksellerid;
56 my ($count2,@booksellers)=bookseller($booksellerid);
57
58 # get librarian branch...
59
60 # if new basket, pre-fill infos
61 $basket->{creationdate} = "" unless ($basket->{creationdate});
62 $basket->{authorisedby} = $loggedinuser unless ($basket->{authorisedby});
63 ($count,@results)=getbasketcontent($basketno,'',$order);
64
65 my $line_total; # total of each line
66 my $sub_total; # total of line totals
67 my $gist;      # GST
68 my $grand_total; # $subttotal + $gist
69
70 # my $line_total_est; # total of each line
71 my $sub_total_est; # total of line totals
72 my $gist_est;      # GST
73 my $grand_total_est; # $subttotal + $gist
74
75 my $qty_total;
76
77 my @books_loop;
78 for (my $i=0;$i<$count;$i++){
79         my $rrp=$results[$i]->{'listprice'};
80         $rrp=curconvert($results[$i]->{'currency'},$rrp);
81
82         $sub_total_est+=$results[$i]->{'quantity'}*$results[$i]->{'rrp'};
83         $line_total=$results[$i]->{'quantity'}*$results[$i]->{'ecost'};
84         $sub_total+=$line_total;
85         $qty_total += $results[$i]->{'quantity'};
86         my %line;
87         $line{ordernumber} = $results[$i]->{'ordernumber'};
88         $line{publishercode} = $results[$i]->{'publishercode'};
89         $line{isbn} = $results[$i]->{'isbn'};
90         $line{booksellerid} = $results[$i]->{'booksellerid'};
91         $line{basketno}=$basketno;
92         $line{title} = $results[$i]->{'title'};
93         $line{notes} = $results[$i]->{'notes'};
94         $line{author} = $results[$i]->{'author'};
95         $line{i} = $i;
96         $line{rrp} = $results[$i]->{'rrp'};
97         $line{ecost} = $results[$i]->{'ecost'};
98         $line{quantity} = $results[$i]->{'quantity'};
99         $line{quantityrecieved} = $results[$i]->{'quantityreceived'};
100         $line{line_total} = $line_total;
101         $line{biblionumber} = $results[$i]->{'biblionumber'};
102         $line{bookfundid} = $results[$i]->{'bookfundid'};
103         $line{odd} = $i %2;
104         push @books_loop, \%line;
105 }
106 my $prefgist =C4::Context->preference("gist");
107 $gist=sprintf("%.2f",$sub_total*$prefgist);
108 $grand_total=$sub_total+$gist;
109 $grand_total_est = $sub_total_est+sprintf("%.2f",$sub_total_est*$prefgist);
110 $gist_est = sprintf("%.2f",$sub_total_est*$prefgist);
111 $template->param(basketno => $basketno,
112                                 creationdate => $basket->{creationdate},
113                                 authorisedby => $basket->{authorisedby},
114                                 authorisedbyname => $basket->{authorisedbyname},
115                                 closedate => format_date($basket->{closedate}),
116                                 active => $booksellers[0]->{'active'},
117                                 booksellerid=> $booksellers[0]->{'id'},
118                                 name => $booksellers[0]->{'name'},
119                                 address1 => $booksellers[0]->{'address1'},
120                                 address2 => $booksellers[0]->{'address2'},
121                                 address3 => $booksellers[0]->{'address3'},
122                                 address4 => $booksellers[0]->{'address4'},
123                                 entrydate => format_date($results[0]->{'entrydate'}),
124                                 books_loop => \@books_loop,
125                                 count =>$count,
126                                 sub_total => $sub_total,
127                                 gist => $gist,
128                                 grand_total =>$grand_total,
129                                 sub_total_est => $sub_total_est,
130                                 gist_est => $gist_est,
131                                 grand_total_est =>$grand_total_est,
132                                 currency => $booksellers[0]->{'listprice'},
133                                 qty_total => $qty_total,
134                                 );
135 output_html_with_http_headers $query, $cookie, $template->output;