From fc6710e6dd6493229b4f11fe0e8bee2094056098 Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Mon, 21 Oct 2019 13:24:27 -0300 Subject: [PATCH] Bug 23843: Add mapping to Koha::Account::Line This patch adds a to_api_mapping method to the class. This in effect enables calling ->to_api on the object. The mapping is borrowed from the API controller. It is not removed from the controller so we are able to verify (through the tests) that there is no behavior change. Once this is pushed we need to implement the counter-wise methods and clean the controllers. To test: 1. Run: $ kshell k$ prove t/db_dependent/api/v1/patrons_accounts.t => SUCCESS: Tests pass 2. Apply this patch 3. Repeat (1) => SUCCESS: Tests still pass! 4. Sign off :-D Signed-off-by: Martin Renvoize --- Koha/Account/Line.pm | 21 +++++++++++++++++++++ Koha/REST/V1/Patrons/Account.pm | 30 ++++++++++++++---------------- 2 files changed, 35 insertions(+), 16 deletions(-) diff --git a/Koha/Account/Line.pm b/Koha/Account/Line.pm index 124aa29153..ae7bbc145d 100644 --- a/Koha/Account/Line.pm +++ b/Koha/Account/Line.pm @@ -398,6 +398,27 @@ sub is_debit { return !$self->is_credit; } +=head3 to_api_mapping + +This method returns the mapping for representing a Koha::Account::Line object +on the API. + +=cut + +sub to_api_mapping { + return { + accountlines_id => 'account_line_id', + accounttype => 'account_type', + amountoutstanding => 'amount_outstanding', + borrowernumber => 'patron_id', + branchcode => 'library_id', + issue_id => 'checkout_id', + itemnumber => 'item_id', + manager_id => 'user_id', + note => 'internal_note', + }; +} + =head2 Internal methods =cut diff --git a/Koha/REST/V1/Patrons/Account.pm b/Koha/REST/V1/Patrons/Account.pm index eb495f924e..d7263d81be 100644 --- a/Koha/REST/V1/Patrons/Account.pm +++ b/Koha/REST/V1/Patrons/Account.pm @@ -49,27 +49,25 @@ sub get { } my $account = $patron->account; - my $balance; - - $balance->{balance} = $account->balance; # get outstanding debits and credits my $debits = $account->outstanding_debits; my $credits = $account->outstanding_credits; - my @debit_lines = map { _to_api( $_->TO_JSON ) } @{ $debits->as_list }; - $balance->{outstanding_debits} = { - total => $debits->total_outstanding, - lines => \@debit_lines - }; - - my @credit_lines = map { _to_api( $_->TO_JSON ) } @{ $credits->as_list }; - $balance->{outstanding_credits} = { - total => $credits->total_outstanding, - lines => \@credit_lines - }; - - return $c->render( status => 200, openapi => $balance ); + return $c->render( + status => 200, + openapi => { + balance => $account->balance, + outstanding_debits => { + total => $debits->total_outstanding, + lines => $debits->to_api + }, + outstanding_credits => { + total => $credits->total_outstanding, + lines => $credits->to_api + } + } + ); } =head3 add_credit -- 2.23.0