From 7e1ccbd6069658540dd352f63ade3ef7b19de282 Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Mon, 7 Mar 2016 14:04:44 +0000 Subject: [PATCH] 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 Signed-off-by: Jonathan Druart Signed-off-by: Brendan Gallagher brendan@bywatersolutions.com --- circ/reserveratios.pl | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/circ/reserveratios.pl b/circ/reserveratios.pl index bd51b7c2d7..550bf304ec 100755 --- a/circ/reserveratios.pl +++ b/circ/reserveratios.pl @@ -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 -- 2.39.5