Lines 4-9
Link Here
|
4 |
|
4 |
|
5 |
# Copyright 2000-2002 Katipo Communications |
5 |
# Copyright 2000-2002 Katipo Communications |
6 |
# Copyright 2008-2009 BibLibre SARL |
6 |
# Copyright 2008-2009 BibLibre SARL |
|
|
7 |
# Copyright 2010 PTFS Europe |
7 |
# |
8 |
# |
8 |
# This file is part of Koha. |
9 |
# This file is part of Koha. |
9 |
# |
10 |
# |
Lines 20-33
Link Here
|
20 |
# with Koha; if not, write to the Free Software Foundation, Inc., |
21 |
# with Koha; if not, write to the Free Software Foundation, Inc., |
21 |
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
22 |
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
22 |
|
23 |
|
23 |
|
|
|
24 |
=head1 NAME |
24 |
=head1 NAME |
25 |
|
25 |
|
26 |
booksellers.pl |
26 |
booksellers.pl |
27 |
|
27 |
|
28 |
=head1 DESCRIPTION |
28 |
=head1 DESCRIPTION |
29 |
|
29 |
|
30 |
this script displays the list of suppliers & orders like C<$supplier> given on input arg. |
30 |
this script displays the list of suppliers & baskets like C<$supplier> given on input arg. |
31 |
thus, this page brings differents features like to display supplier's details, |
31 |
thus, this page brings differents features like to display supplier's details, |
32 |
to add an order for a specific supplier or to just add a new supplier. |
32 |
to add an order for a specific supplier or to just add a new supplier. |
33 |
|
33 |
|
Lines 37-76
to add an order for a specific supplier or to just add a new supplier.
Link Here
|
37 |
|
37 |
|
38 |
=item supplier |
38 |
=item supplier |
39 |
|
39 |
|
40 |
C<$supplier> is the suplier we have to search order. |
40 |
C<$supplier> is the string with which we search for a supplier |
41 |
=back |
|
|
42 |
|
43 |
=item op |
44 |
|
41 |
|
45 |
C<OP> can be equals to 'close' if we have to close a basket before building the page. |
42 |
=back |
46 |
|
43 |
|
47 |
=item basket |
44 |
=item id or supplierid |
48 |
|
45 |
|
49 |
the C<basket> we have to close if op is equal to 'close'. |
46 |
The id of the supplier whose baskets we will display |
50 |
|
47 |
|
51 |
=back |
48 |
=back |
52 |
|
49 |
|
53 |
=cut |
50 |
=cut |
54 |
|
51 |
|
55 |
use strict; |
52 |
use strict; |
56 |
#use warnings; FIXME - Bug 2505 |
53 |
use warnings; |
57 |
use C4::Auth; |
54 |
use C4::Auth; |
58 |
use C4::Biblio; |
55 |
use C4::Biblio; |
59 |
use C4::Output; |
56 |
use C4::Output; |
60 |
use CGI; |
57 |
use CGI; |
61 |
|
58 |
|
62 |
|
|
|
63 |
use C4::Acquisition; |
64 |
use C4::Dates qw/format_date/; |
59 |
use C4::Dates qw/format_date/; |
65 |
use C4::Bookseller qw/ GetBookSellerFromId GetBookSeller /; |
60 |
use C4::Bookseller qw/ GetBookSellerFromId GetBookSeller /; |
66 |
use C4::Members qw/GetMember/; |
61 |
use C4::Members qw/GetMember/; |
67 |
|
62 |
|
68 |
my $query = new CGI; |
63 |
my $query = CGI->new; |
69 |
my ( $template, $loggedinuser, $cookie ) = get_template_and_user( |
64 |
my ( $template, $loggedinuser, $cookie ) = get_template_and_user( |
70 |
{ |
65 |
{ template_name => 'acqui/booksellers.tmpl', |
71 |
template_name => "acqui/booksellers.tmpl", |
|
|
72 |
query => $query, |
66 |
query => $query, |
73 |
type => "intranet", |
67 |
type => 'intranet', |
74 |
authnotrequired => 0, |
68 |
authnotrequired => 0, |
75 |
flagsrequired => { acquisition => 'vendors_manage' }, |
69 |
flagsrequired => { acquisition => 'vendors_manage' }, |
76 |
debug => 1, |
70 |
debug => 1, |
Lines 79-134
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
Link Here
|
79 |
|
73 |
|
80 |
#parameters |
74 |
#parameters |
81 |
my $supplier = $query->param('supplier'); |
75 |
my $supplier = $query->param('supplier'); |
82 |
my $id = $query->param('id') || $query->param('supplierid'); |
76 |
my $id = $query->param('id') || $query->param('supplierid'); |
83 |
my @suppliers; |
77 |
my @suppliers; |
84 |
|
78 |
|
85 |
if ($id) { |
79 |
if ($id) { |
86 |
push @suppliers, GetBookSellerFromId($id); |
80 |
push @suppliers, GetBookSellerFromId($id); |
87 |
} else { |
81 |
} else { |
88 |
@suppliers = GetBookSeller($supplier); |
82 |
@suppliers = GetBookSeller($supplier); |
|
|
83 |
} |
84 |
|
85 |
my $supplier_count = @suppliers; |
86 |
if ( $supplier_count == 1 ) { |
87 |
$template->param( |
88 |
supplier_name => $suppliers[0]->{'name'}, |
89 |
id => $suppliers[0]->{'id'} |
90 |
); |
89 |
} |
91 |
} |
90 |
my $count = scalar @suppliers; |
92 |
|
91 |
if ($count == 1){ |
93 |
my $uid; |
92 |
$template->param( supplier_name => $suppliers[0]->{'name'}, |
94 |
if ($loggedinuser) { |
93 |
id => $suppliers[0]->{'id'} |
95 |
$uid = GetMember( borrowernumber => $loggedinuser )->{userid}; |
94 |
); |
|
|
95 |
} |
96 |
} |
96 |
|
97 |
|
97 |
#build result page |
98 |
#build result page |
98 |
my @loop_suppliers; |
99 |
my $loop_suppliers = []; |
99 |
for ( my $i = 0 ; $i < $count ; $i++ ) { |
100 |
|
100 |
my $orders = GetBasketsByBookseller( $suppliers[$i]->{'id'}, {groupby => "aqbasket.basketno", orderby => "aqbasket.basketname"} ); |
101 |
for my $vendor (@suppliers) { |
101 |
my $ordcount = scalar @$orders; |
102 |
my $baskets = get_vendors_baskets( $vendor->{id} ); |
102 |
my %line; |
103 |
|
103 |
|
104 |
my $loop_basket = []; |
104 |
$line{supplierid} = $suppliers[$i]->{'id'}; |
105 |
for my $basket ( @{$baskets} ) { |
105 |
$line{name} = $suppliers[$i]->{'name'}; |
106 |
if (( $basket->{authorisedby} |
106 |
$line{active} = $suppliers[$i]->{'active'}; |
107 |
&& $basket->{authorisedby} eq $loggedinuser |
107 |
my @loop_basket; |
108 |
) |
108 |
my $uid = GetMember(borrowernumber => $loggedinuser)->{userid} if $loggedinuser; |
109 |
|| haspermission( $uid, { flagsrequired => { acquisition => q{*} } } ) |
109 |
for ( my $i2 = 0 ; $i2 < $ordcount ; $i2++ ) { |
110 |
) { |
110 |
if ( $orders->[$i2]{'authorisedby'} eq $loggedinuser || haspermission($uid, { flagsrequired => { 'acquisition' => '*' } } ) ) { |
111 |
for my $date_field (qw( creationdate closedate)) { |
111 |
my %inner_line; |
112 |
if ( $basket->{$date_field} ) { |
112 |
$inner_line{basketno} = $orders->[$i2]{'basketno'}; |
113 |
$basket->{$date_field} = |
113 |
$inner_line{basketname} = $orders->[$i2]{'basketname'}; |
114 |
format_date( $basket->{$date_field} ); |
114 |
$inner_line{total} = scalar GetOrders($orders->[$i2]{'basketno'}); |
115 |
} |
115 |
$inner_line{authorisedby} = $orders->[$i2]{'authorisedby'}; |
116 |
} |
116 |
my $authby = GetMember(borrowernumber => $orders->[$i2]{'authorisedby'}); |
117 |
push @{$loop_basket}, $basket; |
117 |
$inner_line{surname} = $authby->{'firstname'}; |
|
|
118 |
$inner_line{firstname} = $authby->{'surname'}; |
119 |
$inner_line{creationdate} = format_date( $orders->[$i2]{'creationdate'} ); |
120 |
$inner_line{closedate} = format_date( $orders->[$i2]{'closedate'} ); |
121 |
$inner_line{uncertainprice} = $orders->[$i2]{'uncertainprice'}; |
122 |
push @loop_basket, \%inner_line; |
123 |
} |
118 |
} |
124 |
} |
119 |
} |
125 |
$line{loop_basket} = \@loop_basket; |
120 |
|
126 |
push @loop_suppliers, \%line; |
121 |
push @{$loop_suppliers}, |
|
|
122 |
{ loop_basket => $loop_basket, |
123 |
supplierid => $vendor->{id}, |
124 |
name => $vendor->{name}, |
125 |
active => $vendor->{active}, |
126 |
}; |
127 |
|
127 |
} |
128 |
} |
128 |
$template->param( |
129 |
$template->param( |
129 |
loop_suppliers => \@loop_suppliers, |
130 |
loop_suppliers => $loop_suppliers, |
130 |
supplier => ($id || $supplier), |
131 |
supplier => ( $id || $supplier ), |
131 |
count => $count, |
132 |
count => $supplier_count, |
132 |
); |
133 |
); |
133 |
|
134 |
|
134 |
output_html_with_http_headers $query, $cookie, $template->output; |
135 |
output_html_with_http_headers $query, $cookie, $template->output; |
135 |
- |
136 |
|
|
|
137 |
sub get_vendors_baskets { |
138 |
my $supplier_id = shift; |
139 |
my $dbh = C4::Context->dbh; |
140 |
my $sql = <<'ENDSQL'; |
141 |
select aqbasket.*, count(*) as total, borrowers.firstname, borrowers.surname |
142 |
from aqbasket left join aqorders on aqorders.basketno = aqbasket.basketno |
143 |
left join borrowers on aqbasket.authorisedby = borrowers.borrowernumber |
144 |
where booksellerid = ? |
145 |
AND ( aqorders.quantity > aqorders.quantityreceived OR quantityreceived IS NULL) |
146 |
AND datecancellationprinted IS NULL |
147 |
group by basketno |
148 |
ENDSQL |
149 |
return $dbh->selectall_arrayref( $sql, { Slice => {} }, $supplier_id ); |
150 |
} |