@@ -, +, @@ 'Details' screens in patron record fines for item aren't showing. Added new soubroutine to sum up all outstanding charges by borrower for this item including all historical issues and rent charges. Previous routine gets charge amount from system preferences instead of amount outstanding. --- C4/Overdues.pm | 20 ++++++++++++++++++++ circ/circulation.pl | 5 +++-- members/moremember.pl | 9 +++++---- 3 files changed, 28 insertions(+), 6 deletions(-) --- a/C4/Overdues.pm +++ a/C4/Overdues.pm @@ -45,6 +45,7 @@ BEGIN { &AmountNotify &UpdateFine &GetFine + &GetItemCharges &CheckItemNotify &GetOverduesForBranch @@ -658,6 +659,25 @@ sub GetFine { return 0; } +=head2 GetItemCharges + + $charges = GetItemCharges( $borrowernumber, $itemnumber ) + Gets fines and issue charge for item from accountlines. Icluding all outstanding amount for specific item, + also from previous issue of this item. + +=cut + +sub GetItemCharges { + my ( $borrowernumber, $itemnumber ) = @_; + + my $dbh = C4::Context->dbh(); + + my $query = "SELECT SUM(amountoutstanding) FROM accountlines WHERE borrowernumber = ? AND itemnumber = ? "; + my $sth = $dbh->prepare( $query ); + $sth->execute( $borrowernumber, $itemnumber ); + return $sth->fetchrow_arrayref()->[0]; +} + =head2 NumberNotifyId (@notify) = &NumberNotifyId($borrowernumber); --- a/circ/circulation.pl +++ a/circ/circulation.pl @@ -41,6 +41,7 @@ use C4::Context; use CGI::Session; use C4::Members::Attributes qw(GetBorrowerAttributes); use Koha::Borrower::Debarments qw(GetDebarments); +use C4::Overdues qw/GetItemCharges/; use Koha::DateUtils; use Date::Calc qw( @@ -478,8 +479,8 @@ sub build_issue_data { # set itemtype per item-level_itype syspref - FIXME this is an ugly hack $it->{'itemtype'} = ( C4::Context->preference( 'item-level_itypes' ) ) ? $it->{'itype'} : $it->{'itemtype'}; - ($it->{'charge'}, $it->{'itemtype_charge'}) = GetIssuingCharges( - $it->{'itemnumber'}, $it->{'borrowernumber'} + $it->{'charge'} = GetItemCharges( + $it->{'borrowernumber'}, $it->{'itemnumber'} ); $it->{'charge'} = sprintf("%.2f", $it->{'charge'}); my ($can_renew, $can_renew_error) = CanBookBeRenewed( --- a/members/moremember.pl +++ a/members/moremember.pl @@ -52,6 +52,7 @@ use C4::Form::MessagingPreferences; use List::MoreUtils qw/uniq/; use C4::Members::Attributes qw(GetBorrowerAttributes); use Koha::Borrower::Debarments qw(GetDebarments); +use C4::Overdues qw(GetItemCharges); #use Smart::Comments; #use Data::Dumper; use DateTime; @@ -502,11 +503,11 @@ sub build_issue_data { } } - #find the charge for an item - my ( $charge, $itemtype ) = - GetIssuingCharges( $issue->{itemnumber}, $borrowernumber ); + #find all charges for an item + my $charge = GetItemCharges( $borrowernumber, $issue->{itemnumber} ); - my $itemtypeinfo = getitemtypeinfo($itemtype); + my $getiteminfo = GetBiblioFromItemNumber( $issue->{'itemnumber'} ); + my $itemtypeinfo = getitemtypeinfo( (C4::Context->preference('item-level_itypes')) ? $getiteminfo->{'itype'} : $getiteminfo->{'itemtype'} ); $row{'itemtype_description'} = $itemtypeinfo->{description}; $row{'itemtype_image'} = $itemtypeinfo->{imageurl}; --