From 1b9f3621dfc82144e498d6d7d53cdda3b6d352a0 Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Mon, 21 Oct 2019 13:47:50 -0300 Subject: [PATCH] Bug 23843: Add mapping to Koha::Acquisition::Fund MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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/acquisitions_funds.t => SUCCESS: Tests pass 2. Apply this patch 3. Repeat (1) => SUCCESS: Tests still pass! 4. Sign off :-D Signed-off-by: Martin Renvoize Signed-off-by: Joonas Kylmälä Signed-off-by: Martin Renvoize --- Koha/Acquisition/Fund.pm | 29 ++++++++++++++++++++++++++++ Koha/REST/V1/Acquisitions/Funds.pm | 9 +++++---- api/v1/swagger/definitions/fund.json | 4 ++++ 3 files changed, 38 insertions(+), 4 deletions(-) diff --git a/Koha/Acquisition/Fund.pm b/Koha/Acquisition/Fund.pm index 20cc26ea5f..484b19fd09 100644 --- a/Koha/Acquisition/Fund.pm +++ b/Koha/Acquisition/Fund.pm @@ -27,6 +27,35 @@ Koha::Acquisition::Fund object class =head1 API +=head2 Class methods + +=head3 to_api_mapping + +This method returns the mapping for representing a Koha::Acquisition::Fund object +on the API. + +=cut + +sub to_api_mapping { + return { + budget_id => 'fund_id', + budget_code => 'code', + budget_name => 'name', + budget_branchcode => 'library_id', + budget_amount => 'total_amount', + budget_encumb => 'warn_at_percentage', + budget_expend => 'warn_at_amount', + budget_notes => 'notes', + budget_period_id => 'budget_id', + timestamp => 'timestamp', + budget_owner_id => 'fund_owner_id', + budget_permission => 'fund_access', + sort1_authcat => 'statistic1_auth_value_category', + sort2_authcat => 'statistic2_auth_value_category', + budget_parent_id => 'parent_fund_id', + }; +} + =head2 Internal methods =head3 _type diff --git a/Koha/REST/V1/Acquisitions/Funds.pm b/Koha/REST/V1/Acquisitions/Funds.pm index c789e7fd56..21f5e4bacf 100644 --- a/Koha/REST/V1/Acquisitions/Funds.pm +++ b/Koha/REST/V1/Acquisitions/Funds.pm @@ -56,10 +56,11 @@ sub list_funds { } return try { - my @funds = Koha::Acquisition::Funds->search($filter); - @funds = map { _to_api($_->TO_JSON) } @funds; - return $c->render( status => 200, - openapi => \@funds); + my $funds = Koha::Acquisition::Funds->search($filter); + return $c->render( + status => 200, + openapi => $funds->to_api + ); } catch { if ( $_->isa('DBIx::Class::Exception') ) { diff --git a/api/v1/swagger/definitions/fund.json b/api/v1/swagger/definitions/fund.json index a7e34d619d..265571ed94 100644 --- a/api/v1/swagger/definitions/fund.json +++ b/api/v1/swagger/definitions/fund.json @@ -81,6 +81,10 @@ ], "description": "Level of permission for this fund (1: owner, 2: owner, users and library, 3: owner and users)" }, + "parent_fund_id": { + "type": [ "integer", "null" ], + "description": "Internal identifier for parent fund" + }, "statistic1_auth_value_category": { "type": [ "string", -- 2.39.5