&GetBasket &NewBasket &CloseBasket &DelBasket &ModBasket
&GetBasketAsCSV
&GetBasketsByBookseller &GetBasketsByBasketgroup
+ &GetBasketsInfosByBookseller
&ModBasketHeader
return $results
}
+=head3 GetBasketsInfosByBookseller
+
+ my $baskets = GetBasketsInfosByBookseller($supplierid);
+
+Returns in a arrayref of hashref all about booksellers baskets, plus:
+ total_biblios: Number of distinct biblios in basket
+ total_items: Number of items in basket
+ expected_items: Number of non-received items in basket
+
+=cut
+
+sub GetBasketsInfosByBookseller {
+ my ($supplierid) = @_;
+
+ return unless $supplierid;
+
+ my $dbh = C4::Context->dbh;
+ my $query = qq{
+ SELECT aqbasket.*,
+ SUM(aqorders.quantity) AS total_items,
+ COUNT(DISTINCT aqorders.biblionumber) AS total_biblios,
+ SUM(IF(aqorders.datereceived IS NULL, aqorders.quantity, 0)) AS expected_items
+ FROM aqbasket
+ LEFT JOIN aqorders ON aqorders.basketno = aqbasket.basketno
+ WHERE booksellerid = ?
+ GROUP BY aqbasket.basketno
+ };
+ my $sth = $dbh->prepare($query);
+ $sth->execute($supplierid);
+ return $sth->fetchall_arrayref({});
+}
+
+
#------------------------------------------------------------#
=head3 GetBasketsByBasketgroup
use CGI;
use C4::Dates qw/format_date/;
+use C4::Acquisition qw/ GetBasketsInfosByBookseller /;
use C4::Bookseller qw/ GetBookSellerFromId GetBookSeller /;
use C4::Members qw/GetMember/;
use C4::Context;
my $loop_suppliers = [];
for my $vendor (@suppliers) {
- my $baskets = get_vendors_baskets( $vendor->{id} );
+ my $baskets = GetBasketsInfosByBookseller( $vendor->{id} );
my $loop_basket = [];
-
+
for my $basket ( @{$baskets} ) {
my $authorisedby = $basket->{authorisedby};
-
+ my $basketbranch = ''; # set a blank branch to start with
+ my $member = GetMember( borrowernumber => $authorisedby );
+ if ( $member ) {
+ $basketbranch = $member->{branchcode};
+ }
+
if ($userenv->{'flags'} & 1 || #user is superlibrarian
(haspermission( $uid, { acquisition => q{*} } ) && #user has acq permissions and
($viewbaskets eq 'all' || #user is allowed to see all baskets
$basket->{$date_field} = format_date( $basket->{$date_field} );
}
}
+ foreach (qw(total_items total_biblios expected_items)) {
+ $basket->{$_} ||= 0;
+ }
+ if($member) {
+ $basket->{authorisedby_firstname} = $member->{firstname};
+ $basket->{authorisedby_surname} = $member->{surname};
+ }
push @{$loop_basket}, $basket;
}
}
loop_suppliers => $loop_suppliers,
supplier => ( $booksellerid || $supplier ),
count => $supplier_count,
+ dateformat => C4::Context->preference('dateformat'),
);
output_html_with_http_headers $query, $cookie, $template->output;
-
-sub get_vendors_baskets {
- my $supplier_id = shift;
- my $dbh = C4::Context->dbh;
- my $sql = <<'ENDSQL';
-select aqbasket.*, count(*) as total, borrowers.firstname, borrowers.surname
-from aqbasket left join aqorders on aqorders.basketno = aqbasket.basketno
-left join borrowers on aqbasket.authorisedby = borrowers.borrowernumber
-where booksellerid = ?
-AND ( aqorders.quantity > aqorders.quantityreceived OR quantityreceived IS NULL)
-AND datecancellationprinted IS NULL
-group by basketno
-ENDSQL
- return $dbh->selectall_arrayref( $sql, { Slice => {} }, $supplier_id );
-}
vertical-align: top;
}
</style>
-<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.tablesorter.min.js"></script>
+<link rel="stylesheet" href="[% themelang %]/css/datatables.css" />
+<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.dataTables.min.js"></script>
+[% INCLUDE 'datatables-strings.inc' %]
+<script type="text/javascript" src="[% themelang %]/js/datatables.js"></script>
<script type="text/javascript">
//<![CDATA[
- $(document).ready(function() {
- $("#vendorst").tablesorter({
- headers: {
- 3: {
- sorter: false
- }
- }
- });
- });
- //]]>
+$(document).ready(function() {
+ [% IF (dateformat == 'metric') %]
+ dt_add_type_uk_date();
+ [% END %]
+ $("table.baskets").dataTable($.extend(true, {}, dataTablesDefaults, {
+ 'bPaginate': false,
+ 'bFilter': false,
+ 'bInfo': false,
+ 'aoColumnDefs': [
+ { 'aTargets': [-1], 'bSortable': false }
+ ]
+ }));
+});
+//]]>
</script>
</head>
[% ELSE %]
<h1>You searched on <b>vendor [% supplier %],</b> [% count %] results found</h1>
[% END %]
-[% IF ( loop_suppliers ) %]
+[% IF ( loop_suppliers.size ) %]
+ [% UNLESS (count == 1) %]
+ <ul class="suppliers_anchors">
+ [% FOREACH supplier IN loop_suppliers %]
+ <li><a href="#[% supplier.booksellerid %]">[% supplier.name %]</a></li>
+ [% END %]
+ </ul>
+ [% END %]
<div id="acqui_order_supplierlist">
- <table id="vendorst">
- <thead>
- <tr>
- <th>Order</th>
- <th>Order receive</th>
- <th>Vendor</th>
- <th> </th>
- </tr>
- </thead>
- <tbody>
- [% FOREACH loop_supplier IN loop_suppliers %]
- [% UNLESS ( loop.odd ) %]
- <tr class="highlight">
- [% ELSE %]
- <tr>
- [% END %]
- <td>[% IF ( CAN_user_acquisition_order_manage ) %]
- [% IF ( loop_supplier.active ) %]
- <a href="basketheader.pl?booksellerid=[% loop_supplier.booksellerid %]&op=add_form">New basket</a>
+ [% FOREACH supplier IN loop_suppliers %]
+ <div class="supplier">
+ <span class="suppliername">
+ [% IF (supplier.name) %]
+ <a name="[% supplier.booksellerid %]" href="/cgi-bin/koha/acqui/supplier.pl?booksellerid=[% supplier.booksellerid %]">[% supplier.name %]</a>
[% ELSE %]
- Inactive
+ <a name="[% supplier.booksellerid %]" href="/cgi-bin/koha/acqui/supplier.pl?booksellerid=[% supplier.booksellerid %]">NO NAME</a>
[% END %]
+ </span>
+ <span class="action">
+ [% IF ( CAN_user_acquisition_order_manage ) %]
+ [% IF ( supplier.active ) %]
+ <input type="button" value="New basket" onclick="window.location.href='/cgi-bin/koha/acqui/basketheader.pl?booksellerid=[% supplier.booksellerid %]&op=add_form'" />
+ [% ELSE %]
+ (inactive)
+ [% END %]
[% END %]
- </td>
- <td> <a href="parcels.pl?booksellerid=[% loop_supplier.booksellerid %]">Receive shipment</a>
- </td>
- [% IF ( loop_supplier.name ) %]
- <td><a href="supplier.pl?booksellerid=[% loop_supplier.booksellerid %]">[% loop_supplier.name %]</a></td>
- [% ELSE %]
- <td><a href="supplier.pl?booksellerid=[% loop_supplier.booksellerid %]">NO NAME</a></td>
- [% END %]
- <td> <table>
- [% IF ( loop_supplier.loop_basket ) %]
- <tr>
- <th>Basket (#)</th>
- <th>Items</th>
- <th>Created by</th>
- <th>Date</th>
- <th> </th>
- </tr>
- [% FOREACH loop_baske IN loop_supplier.loop_basket %]
- [% IF ( loop_baske.uncertainprices ) %]
- <tr class="problem">
- [% ELSE %]
- [% UNLESS ( loop.odd ) %]
- <tr class="highlight">
- [% ELSE %]
+ <input type="button" value="Receive shipment" onclick="window.location.href='/cgi-bin/koha/acqui/parcels.pl?booksellerid=[% supplier.booksellerid %]'" />
+ </span>
+ <div class="baskets">
+ [% IF ( supplier.loop_basket.size ) %]
+ <table class="baskets">
+ <thead>
<tr>
- [% END %]
- [% END %]
- <td>[% loop_baske.basketname %] (#[% loop_baske.basketno %])</td>
- <td>[% loop_baske.total %]</td>
- <td> [% loop_baske.firstname %]
- [% loop_baske.surname %]
- </td>
- <td>[% loop_baske.creationdate %]</td>
- <td> [% IF ( loop_baske.closedate ) %]
- closed on [% loop_baske.closedate %]
- <a href="/cgi-bin/koha/acqui/basket.pl?basketno=[% loop_baske.basketno %]">View</a>
- [% ELSE %]
- [% IF ( loop_baske.active ) %]
- <a href="/cgi-bin/koha/acqui/basket.pl?basketno=[% loop_baske.basketno %]">modify</a>
+ <th>Basket (#)</th>
+ <th>Biblios</th>
+ <th>Items</th>
+ <th>Expected items</th>
+ <th>Created by</th>
+ <th>Date</th>
+ <th> </th>
+ </tr>
+ </thead>
+ <tbody>
+ [% FOREACH basket IN supplier.loop_basket %]
+ [% IF ( basket.uncertainprices ) %]
+ <tr class="problem">
+ [% ELSE %]
+ <tr>
+ [% END %]
+ <td>[% basket.basketname %] (#[% basket.basketno %])</td>
+ <td>[% basket.total_biblios %]</td>
+ <td>[% basket.total_items %]</td>
+ <td>[% basket.expected_items %]</td>
+ <td>
+ [% basket.authorisedby_firstname %]
+ [% basket.authorisedby_surname %]
+ </td>
+ <td>[% basket.creationdate %]</td>
+ <td>
+ [% IF ( basket.closedate ) %]
+ closed on [% basket.closedate %]
+ <a href="/cgi-bin/koha/acqui/basket.pl?basketno=[% basket.basketno %]">View</a>
[% ELSE %]
- <a href="/cgi-bin/koha/acqui/basket.pl?basketno=[% loop_baske.basketno %]">View</a>
+ [% IF ( basket.active ) %]
+ <a href="/cgi-bin/koha/acqui/basket.pl?basketno=[% basket.basketno %]">Modify</a>
+ [% ELSE %]
+ <a href="/cgi-bin/koha/acqui/basket.pl?basketno=[% basket.basketno %]">View</a>
+ [% END %]
[% END %]
- [% END %]
- </td>
- </tr>
- [% END %]
- [% ELSE %]
- <tr><td>No pending baskets</td></tr>
- [% END %]
+ </td>
+ </tr>
+ [% END %][%# FOREACH basket IN supplier.loop_basket %]
+ </tbody>
</table>
- </td>
- </tr>
- [% END %]
- </tbody>
- </table>
- </div>
- [% END %]
+ [% ELSE %]
+ <p>No pending baskets</p>
+ [% END %][%# IF ( supplier.loop_basket.size ) %]
+ </div>
+ </div>
+ [% END %][%# FOREACH supplier IN loop_suppliers %]
+ </div>
+[% END %][%# IF ( loop_suppliers.size ) %]
</div>
</div>
<div class="yui-b">