@@ -, +, @@ offset_type --- C4/Circulation.pm | 2 +- Koha/Account.pm | 16 +++---------- Koha/Account/Line.pm | 40 +++++++++++---------------------- Koha/REST/V1/Patrons/Account.pm | 4 ++-- t/db_dependent/Circulation.t | 11 ++++----- 5 files changed, 23 insertions(+), 50 deletions(-) --- a/C4/Circulation.pm +++ a/C4/Circulation.pm @@ -2616,7 +2616,7 @@ sub _FixOverduesOnReturn { } ); - $credit->apply({ debits => [ $accountline ], offset_type => 'Forgiven' }); + $credit->apply({ debits => [ $accountline ] }); if (C4::Context->preference("FinesLog")) { &logaction("FINES", 'MODIFY',$borrowernumber,"Overdue forgiven: item $item"); --- a/Koha/Account.pm +++ a/Koha/Account.pm @@ -354,12 +354,7 @@ sub payin_amount { # Offset debts passed first if ( exists( $params->{debits} ) ) { - $credit = $credit->apply( - { - debits => $params->{debits}, - offset_type => $params->{type} - } - ); + $credit = $credit->apply( { debits => $params->{debits} } ); } # Offset against remaining balance if AutoReconcile @@ -367,11 +362,7 @@ sub payin_amount { && $credit->amountoutstanding != 0 ) { $credit = $credit->apply( - { - debits => [ $self->outstanding_debits->as_list ], - offset_type => $params->{type} - } - ); + { debits => [ $self->outstanding_debits->as_list ], } ); } } ); @@ -613,8 +604,7 @@ sub payout_amount { # Offset against credits for my $credit ( @{$outstanding_credits} ) { - $credit->apply( - { debits => [$payout], offset_type => 'PAYOUT' } ); + $credit->apply( { debits => [$payout] } ); $payout->discard_changes; last if $payout->amountoutstanding == 0; } --- a/Koha/Account/Line.pm +++ a/Koha/Account/Line.pm @@ -289,6 +289,13 @@ sub void { } )->store(); + # Link void to payment + $self->set({ + amountoutstanding => $self->amount, + status => 'VOID' + })->store(); + $self->apply( { debits => [$void] } ); + # Reverse any applied payments foreach my $account_offset (@account_offsets) { my $fee_paid = @@ -311,13 +318,6 @@ sub void { )->store(); } - # Link void to payment - $self->set({ - amountoutstanding => $self->amount, - status => 'VOID' - })->store(); - $self->apply({ debits => [$void]}); - if ( C4::Context->preference("FinesLog") ) { logaction( "FINES", 'VOID', @@ -422,12 +422,7 @@ sub cancel { )->store(); # Link cancellation to charge - $cancellation->apply( - { - debits => [$self], - offset_type => 'CANCELLATION' - } - ); + $cancellation->apply( { debits => [$self] } ); $cancellation->status('APPLIED')->store(); # Update status of original debit @@ -549,12 +544,7 @@ sub reduce { my $debit_outstanding = $self->amountoutstanding; if ( $debit_outstanding >= $params->{amount} ) { - $reduction->apply( - { - debits => [$self], - offset_type => uc( $params->{reduction_type} ) - } - ); + $reduction->apply( { debits => [$self] } ); $reduction->status('APPLIED')->store(); } else { @@ -565,7 +555,7 @@ sub reduce { { credit_id => $reduction->accountlines_id, debit_id => $self->accountlines_id, - type => uc( $params->{reduction_type} ), + type => 'APPLY', amount => 0 } )->store(); @@ -583,7 +573,7 @@ sub reduce { =head3 apply my $debits = $account->outstanding_debits; - my $outstanding_amount = $credit->apply( { debits => $debits, [ offset_type => $offset_type ] } ); + my $outstanding_amount = $credit->apply( { debits => $debits } ); Applies the credit to a given debits array reference. @@ -593,9 +583,6 @@ Applies the credit to a given debits array reference. =item debits - Koha::Account::Lines object set of debits -=item offset_type (optional) - a string indicating the offset type (valid values are those from -the 'account_offset_types' table) - =back =cut @@ -604,7 +591,6 @@ sub apply { my ( $self, $params ) = @_; my $debits = $params->{debits}; - my $offset_type = $params->{offset_type} // 'Credit Applied'; unless ( $self->is_credit ) { Koha::Exceptions::Account::IsNotCredit->throw( @@ -645,7 +631,7 @@ sub apply { { credit_id => $self->id, debit_id => $debit->id, amount => $amount_to_cancel * -1, - type => $offset_type, + type => 'APPLY' } )->store(); @@ -777,7 +763,7 @@ sub payout { } )->store(); - $self->apply( { debits => [$payout], offset_type => 'PAYOUT' } ); + $self->apply( { debits => [$payout] } ); $self->status('PAID')->store; } ); --- a/Koha/REST/V1/Patrons/Account.pm +++ a/Koha/REST/V1/Patrons/Account.pm @@ -134,12 +134,12 @@ sub add_credit { if ($debits) { # pay them! - $credit = $credit->apply({ debits => [ $debits->as_list ], offset_type => 'payment' }); + $credit = $credit->apply({ debits => [ $debits->as_list ] }); } if ($credit->amountoutstanding != 0) { my $outstanding_debits = $account->outstanding_debits; - $credit->apply({ debits => [ $outstanding_debits->as_list ], offset_type => 'payment' }); + $credit->apply({ debits => [ $outstanding_debits->as_list ] }); } return $c->render( status => 200, openapi => { account_line_id => $credit->id } ); --- a/t/db_dependent/Circulation.t +++ a/t/db_dependent/Circulation.t @@ -2640,8 +2640,7 @@ subtest 'AddReturn | is_overdue' => sub { interface => 'test', } ); - $credit->apply( - { debits => [ $debit ], offset_type => 'Payment' } ); + $credit->apply( { debits => [$debit] } ); is( int( $patron->account->balance() ), 0, "Overdue fine should be paid off" ); @@ -2767,7 +2766,7 @@ subtest 'AddReturn | is_overdue' => sub { interface => 'test', } ); - $credit->apply( { debits => [$debit], offset_type => 'Payment' } ); + $credit->apply( { debits => [$debit] } ); is( $patron->account->balance(), .05, 'Overdue fine reduced to $0.05' ); @@ -3104,8 +3103,7 @@ subtest 'AddReturn | is_overdue' => sub { item_id => $item->itemnumber } ); - $overdue_forgive->apply( - { debits => [$overdue_fee], offset_type => 'Forgiven' } ); + $overdue_forgive->apply( { debits => [$overdue_fee] } ); $overdue_fee->discard_changes; is($overdue_fee->amountoutstanding + 0, 0, 'Overdue fee forgiven'); @@ -3202,8 +3200,7 @@ subtest 'AddReturn | is_overdue' => sub { item_id => $item->itemnumber } ); - $overdue_forgive->apply( - { debits => [$overdue_fee], offset_type => 'Forgiven' } ); + $overdue_forgive->apply( { debits => [$overdue_fee] } ); $overdue_fee->discard_changes; is($overdue_fee->amountoutstanding + 0, 0, 'Overdue fee forgiven'); --