From 31f7efb85162d886b10e21fe3435c57610521f46 Mon Sep 17 00:00:00 2001 From: Martin Renvoize Date: Wed, 22 Dec 2021 16:36:07 -0300 Subject: [PATCH] Bug 29757: Add filters for reversable offsets This patch adds filtering methods for (non)reversable offsets. To test: 1. Apply this patches 2. Run: $ kshell k$ prove t/db_dependent/Koha/Account/Offsets.t => SUCCESS: Tests pass! 3. Sign off :-D Signed-off-by: Tomas Cohen Arazi Signed-off-by: Kyle M Hall Signed-off-by: Martin Renvoize Signed-off-by: Fridolin Somers --- Koha/Account/Offsets.pm | 44 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/Koha/Account/Offsets.pm b/Koha/Account/Offsets.pm index e2884114f6..725d4550d8 100644 --- a/Koha/Account/Offsets.pm +++ b/Koha/Account/Offsets.pm @@ -60,6 +60,50 @@ sub total { : 0; } +=head3 filter_by_non_reversable + +=cut + +sub filter_by_non_reversable { + my ($self) = @_; + + my $me = $self->_resultset()->current_source_alias; + + my $where = { + debit_id => { '!=' => undef }, + credit_id => { '!=' => undef }, + type => 'APPLY', + 'credit.credit_type_code' => [ 'WRITEOFF', 'DISCOUNT', 'CANCELLATION' ], + 'credit.status' => [ { '!=' => 'VOID' }, undef ], + $me . '.amount' => { '<' => 0 } + }; + my $attr = { join => 'credit' }; + + return $self->search( $where, $attr ); +} + +=head3 filter_by_reversable + +=cut + +sub filter_by_reversable { + my ($self) = @_; + + my $me = $self->_resultset()->current_source_alias; + + my $where = { + debit_id => { '!=' => undef }, + credit_id => { '!=' => undef }, + type => 'APPLY', + 'credit.credit_type_code' => { -not_in => [ 'WRITEOFF', 'DISCOUNT', 'CANCELLATION' ] }, + 'credit.status' => [ { '!=' => 'VOID' }, undef ], + $me . '.amount' => { '<' => 0 } + }; + my $attr = { join => 'credit' }; + + return $self->search( $where, $attr ); +} + =head2 Internal methods =head3 _type -- 2.39.5