Bug 22435: Fix _set_found_trigger

The _set_found_trigger utilised the 'Writeoff' offset type to
distinguish between the application of a writeoff and any other form of
offset application.

This patch updates the trigger to use the full link through from offset
to account credit line to get the credit type being offset.

Test plan
1/ Run t/db_dependent/Koha/Items.t and prove it fails before the patch,
but passes after applying this patch.
2/ Run t/db_dependent/Koha/Account/Offsets.t and prove it passes both
before and after applying this patch.

Signed-off-by: Victor Grousset/tuxayo <victor@tuxayo.net>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
This commit is contained in:
Martin Renvoize 2021-05-14 14:04:35 +01:00 committed by Jonathan Druart
parent c188ec1567
commit dec9f754f8
4 changed files with 13 additions and 14 deletions

View File

@ -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);
}

View File

@ -50,7 +50,7 @@ sub total {
my $offsets = $self->search(
{},
{
select => [ { sum => 'amount' } ],
select => [ { sum => 'me.amount' } ],
as => ['total_amount'],
}
);

View File

@ -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;
}

View File

@ -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;