@@ -, +, @@ --- Koha/Account/Line.pm | 8 ++++---- Koha/Account/Offsets.pm | 2 +- Koha/Item.pm | 15 +++++++-------- t/db_dependent/Koha/Account/Offsets.t | 2 +- 4 files changed, 13 insertions(+), 14 deletions(-) --- a/Koha/Account/Line.pm +++ a/Koha/Account/Line.pm @@ -131,8 +131,8 @@ Return the credit_offsets linked to this account line if some exist =cut sub credit_offsets { - my ( $self ) = @_; - my $rs = $self->_result->account_offsets_credits; + my ( $self, $cond, $attr ) = @_; + my $rs = $self->_result->search_related( 'account_offsets_credits', $cond, $attr); return unless $rs; return Koha::Account::Offsets->_new_from_dbic($rs); } @@ -144,8 +144,8 @@ Return the debit_offsets linked to this account line if some exist =cut sub debit_offsets { - my ( $self ) = @_; - my $rs = $self->_result->account_offsets_debits; + my ( $self, $cond, $attr ) = @_; + my $rs = $self->_result->search_related( 'account_offsets_debits', $cond, $attr); return unless $rs; return Koha::Account::Offsets->_new_from_dbic($rs); } --- a/Koha/Account/Offsets.pm +++ a/Koha/Account/Offsets.pm @@ -50,7 +50,7 @@ sub total { my $offsets = $self->search( {}, { - select => [ { sum => 'amount' } ], + select => [ { sum => 'me.amount' } ], as => ['total_amount'], } ); --- a/Koha/Item.pm +++ a/Koha/Item.pm @@ -1004,17 +1004,16 @@ sub _set_found_trigger { # some amount has been cancelled. collect the offsets that are not writeoffs # this works because the only way to subtract from this kind of a debt is # using the UI buttons 'Pay' and 'Write off' - my $credits_offsets = Koha::Account::Offsets->search( + my $credit_offsets = $lost_charge->debit_offsets( { - debit_id => $lost_charge->id, - credit_id => { '!=' => undef }, # it is not the debit itself - type => { '!=' => 'Writeoff' }, - amount => { '<' => 0 } # credits are negative on the DB - } + 'credit_id' => { '!=' => undef }, + 'credit.credit_type_code' => { '!=' => 'Writeoff' } + }, + { join => 'credit' } ); - $total_to_refund = ( $credits_offsets->count > 0 ) - ? $credits_offsets->total * -1 # credits are negative on the DB + $total_to_refund = ( $credit_offsets->count > 0 ) + ? $credit_offsets->total * -1 # credits are negative on the DB : 0; } --- a/t/db_dependent/Koha/Account/Offsets.t +++ a/t/db_dependent/Koha/Account/Offsets.t @@ -29,7 +29,7 @@ use t::lib::TestBuilder; my $schema = Koha::Database->new->schema; my $builder = t::lib::TestBuilder->new; -subtest 'total_outstanding() tests' => sub { +subtest 'total() tests' => sub { plan tests => 4; --