From c351d6ff83707a227381e086a341d49324c648a6 Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Wed, 8 Jun 2022 13:41:56 -0400 Subject: [PATCH] Bug 30612: Add accountlines method to Koha::Checkout and Koha::Old::Checkout It would be very useful to have an accountlines method on checkouts objects. In particular it would make fees related to a checkout available from the checkout objects in overdue notices. Test Plan: 1) Apply this patch 2) prove t/db_dependent/Koha/Account/Line.t 3) prove t/db_dependent/Koha/Checkouts.t Signed-off-by: David Nind --- Koha/Checkout.pm | 14 ++++++++++++ Koha/Old/Checkout.pm | 14 ++++++++++++ t/db_dependent/Koha/Account/Line.t | 5 ++++- t/db_dependent/Koha/Checkouts.t | 35 +++++++++++++++++++++++++++++- 4 files changed, 66 insertions(+), 2 deletions(-) diff --git a/Koha/Checkout.pm b/Koha/Checkout.pm index 34f0098d06..3a8c2574cc 100644 --- a/Koha/Checkout.pm +++ b/Koha/Checkout.pm @@ -78,6 +78,20 @@ sub item { return Koha::Item->_new_from_dbic( $item_rs ); } +=head3 accountlines + +my $accountlines = $checkout->accountlines; + +Return the checked out accountlines + +=cut + +sub accountlines { + my ( $self ) = @_; + my $accountlines_rs = $self->_result->accountlines; + return Koha::Account::Lines->_new_from_dbic( $accountlines_rs ); +} + =head3 library my $library = $checkout->library; diff --git a/Koha/Old/Checkout.pm b/Koha/Old/Checkout.pm index e4cd9989f1..35f9bf59ff 100644 --- a/Koha/Old/Checkout.pm +++ b/Koha/Old/Checkout.pm @@ -45,6 +45,20 @@ sub item { return Koha::Item->_new_from_dbic( $item_rs ); } +=head3 accountlines + +my $accountlines = $checkout->accountlines; + +Return the checked out accountlines + +=cut + +sub accountlines { + my ( $self ) = @_; + my $accountlines_rs = $self->_result->accountlines; + return Koha::Account::Lines->_new_from_dbic( $accountlines_rs ); +} + =head3 library my $library = $checkout->library; diff --git a/t/db_dependent/Koha/Account/Line.t b/t/db_dependent/Koha/Account/Line.t index fe593ae17b..b31b91490c 100755 --- a/t/db_dependent/Koha/Account/Line.t +++ b/t/db_dependent/Koha/Account/Line.t @@ -203,7 +203,7 @@ subtest 'is_credit() and is_debit() tests' => sub { subtest 'apply() tests' => sub { - plan tests => 31; + plan tests => 32; $schema->storage->txn_begin; @@ -346,6 +346,9 @@ subtest 'apply() tests' => sub { } )->store(); + my $a = $checkout->accountlines->next; + is( $a->id, $accountline->id, "Koha::Checkout::accountlines returns the related acountline" ); + # Enable renewing upon fine payment t::lib::Mocks::mock_preference( 'RenewAccruingItemWhenPaid', 1 ); my $called = 0; diff --git a/t/db_dependent/Koha/Checkouts.t b/t/db_dependent/Koha/Checkouts.t index 9c4b0dbfea..8ca855d27c 100755 --- a/t/db_dependent/Koha/Checkouts.t +++ b/t/db_dependent/Koha/Checkouts.t @@ -19,7 +19,7 @@ use Modern::Perl; -use Test::More tests => 10; +use Test::More tests => 11; use C4::Circulation qw( MarkIssueReturned AddReturn ); use Koha::Checkouts; @@ -110,6 +110,39 @@ subtest 'item' => sub { 'Koha::Checkout->item should return the correct item' ); }; +subtest 'accountlines' => sub { + plan tests => 3; + + my $accountline = Koha::Account::Line->new( + { + issue_id => $retrieved_checkout_1->id, + borrowernumber => $retrieved_checkout_1->borrowernumber, + itemnumber => $retrieved_checkout_1->itemnumber, + branchcode => $retrieved_checkout_1->branchcode, + date => \'NOW()', + debit_type_code => 'OVERDUE', + status => 'UNRETURNED', + interface => 'cli', + amount => '1', + amountoutstanding => '1', + } + )->store(); + + my $accountlines = $retrieved_checkout_1->accountlines; + is( ref($accountlines), 'Koha::Account::Lines', + 'Koha::Checkout->accountlines should return a Koha::Item' ); + + my $line = $accountlines->next; + is( ref($line), 'Koha::Account::Line', + 'next returns a Koha::Account::Line' ); + + is( + $accountline->id, + $line->id, + 'Koha::Checkout->accountlines should return the correct accountlines' + ); +}; + subtest 'patron' => sub { plan tests => 3; my $patron = $builder->build_object( -- 2.32.0 (Apple Git-132)