View | Details | Raw Unified | Return to bug 5064
Collapse All | Expand All

(-)a/acqui/booksellers.pl (-55 / +70 lines)
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
}

Return to bug 5064