Bug 15997 - Hold Ratios for ordered items doesn't count orders where AcqCreateItem is set to 'receiving'

Currently, the hold ratios script only counts on order items where the
record item is created at the time the order is placed, and not if the
item is created when the item is received.

Test Plan:
1) Set AcqCreateItem to recieving
2) Run the hold ratios report with "include ordered" checked
3) From aquisitions, order some additional items for the record
4) Re-run the hold ratios report, not there is no change in the ratio
   for that record
5) Apply this patch
6) Re-run the hold ratios reporat again, the ratio should now have
   changed

Signed-off-by: Srdjan <srdjan@catalyst.net.nz>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>

Signed-off-by: Brendan Gallagher brendan@bywatersolutions.com
This commit is contained in:
Kyle Hall 2016-03-07 14:04:44 +00:00 committed by Brendan Gallagher
parent 804e7d377b
commit 7e1ccbd606

View file

@ -83,6 +83,16 @@ push @query_params, output_pref({ dt => $startdate, dateformat => 'iso' }) ;
$sqldatewhere .= " AND reservedate <= ?";
push @query_params, output_pref({ dt => $enddate, dateformat => 'iso' });
my $include_aqorders_qty =
C4::Context->preference('AcqCreateItem') eq 'receiving'
? '+ COALESCE(aqorders.quantity, 0) - COALESCE(aqorders.quantityreceived, 0)'
: q{};
my $include_aqorders_qty_join =
C4::Context->preference('AcqCreateItem') eq 'receiving'
? 'LEFT JOIN aqorders ON reserves.biblionumber=aqorders.biblionumber'
: q{};
my $nfl_comparison = $include_ordered ? '<=' : '=';
my $strsth =
"SELECT reservedate,
@ -107,10 +117,11 @@ my $strsth =
biblio.title,
biblio.author,
count(DISTINCT reserves.borrowernumber) as reservecount,
count(DISTINCT items.itemnumber) as itemcount
count(DISTINCT items.itemnumber) $include_aqorders_qty as itemcount
FROM reserves
LEFT JOIN items ON items.biblionumber=reserves.biblionumber
LEFT JOIN biblio ON reserves.biblionumber=biblio.biblionumber
$include_aqorders_qty_join
WHERE
notforloan $nfl_comparison 0 AND damaged = 0 AND itemlost = 0 AND withdrawn = 0
$sqldatewhere