@@ -, +, @@ itemtype - 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"; - Apply the regression tests patch - Run the tests: $ prove t/db_dependent/Circulation/Returns.t - Apply this patch - Run the regression tests: $ prove t/db_dependent/Circulation/Returns.t - Repeat the 'To reproduce' steps - Happily sign off :-D --- C4/Circulation.pm | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) --- a/C4/Circulation.pm +++ a/C4/Circulation.pm @@ -1844,13 +1844,19 @@ sub AddReturn { $branch = C4::Context->userenv->{'branch'} unless $branch; # we trust userenv to be a safe fallback/default my $messages; my $borrower; - my $biblio; my $doreturn = 1; my $validTransfert = 0; 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 $biblio = GetBiblioData( $item->{ biblionumber } ); + my $itemtype = ( C4::Context->preference("item-level_itypes") ) + ? $item->{ itype } + : $biblio->{ itemtype }; + unless ($itemnumber) { return (0, { BadBarcode => $barcode }); # no barcode means no item or borrower. bail out. } @@ -1871,8 +1877,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'; @@ -2073,15 +2077,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'; --