From 2bc4e50adebaebb9cdeebcade96399bad5e5aa5f Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Mon, 27 Jul 2015 11:40:38 -0300 Subject: [PATCH] [SIGNED-OFF] Bug 14598: Make C4::Circulation::AddReturn store the right itemtype This patch makes C4::Circulation::AddReturn correctly store the itemtype on the 'statistics' table. To reproduce: - Checkout master. - Make a checkout. - Check the 'statistics' table and notice the itemtype is correctly set > SELECT * FROM statistics; - Check the item in. - Check the 'statistics' table and notice the itemtype is not set > SELECT * FROM statistics WHERE type="return"; => FAIL: itemtype is set to NULL To test: - Apply the regression tests patch - Run the tests: $ prove t/db_dependent/Circulation/Returns.t => FAIL: Tests fail - Apply this patch - Run the regression tests: $ prove t/db_dependent/Circulation/Returns.t => SUCCESS: Tests now pass. - Repeat the 'To reproduce' steps => SUCCESS: itemtype is now correctly set (in real life) - Happily sign off :-D Sponsored-by: Universidad Empresarial Siglo 21 Signed-off-by: Kyle M Hall --- C4/Circulation.pm | 23 ++++++++++++----------- 1 files changed, 12 insertions(+), 11 deletions(-) diff --git a/C4/Circulation.pm b/C4/Circulation.pm index 7813e33..d7cda99 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -1751,7 +1751,11 @@ sub AddReturn { my $stat_type = 'return'; # get information on item - my $itemnumber = GetItemnumberFromBarcode( $barcode ); + my $item = GetItem( undef, $barcode ) + or die "GetItem( undef, $barcode ) failed"; + my $itemnumber = $item->{ itemnumber }; + my $itemtype = $item->{ itype }; + unless ($itemnumber) { return (0, { BadBarcode => $barcode }); # no barcode means no item or borrower. bail out. } @@ -1772,8 +1776,6 @@ sub AddReturn { } } - my $item = GetItem($itemnumber) or die "GetItem($itemnumber) failed"; - if ( $item->{'location'} eq 'PROC' ) { if ( C4::Context->preference("InProcessingToShelvingCart") ) { $item->{'location'} = 'CART'; @@ -1992,15 +1994,14 @@ sub AddReturn { } # Record the fact that this book was returned. - # FIXME itemtype should record item level type, not bibliolevel type UpdateStats({ - branch => $branch, - type => $stat_type, - itemnumber => $item->{'itemnumber'}, - itemtype => $biblio->{'itemtype'}, - borrowernumber => $borrowernumber, - ccode => $item->{'ccode'}} - ); + branch => $branch, + type => $stat_type, + itemnumber => $itemnumber, + itemtype => $itemtype, + borrowernumber => $borrowernumber, + ccode => $item->{ ccode } + }); # Send a check-in slip. # NOTE: borrower may be undef. probably shouldn't try to send messages then. my $circulation_alert = 'C4::ItemCirculationAlertPreference'; -- 1.7.2.5