Bug 19661: Add and change properties and parameters to conform to the funds RFC.
authorMatthias Meusburger <matthias.meusburger@biblibre.com>
Tue, 15 Jan 2019 09:46:04 +0000 (10:46 +0100)
committerNick Clemens <nick@bywatersolutions.com>
Fri, 22 Mar 2019 19:40:37 +0000 (19:40 +0000)
Also, perform an exact search when searching on the fund owner id.

Signed-off-by: Josef Moravec <josef.moravec@gmail.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>

Koha/REST/V1/Acquisitions/Funds.pm
api/v1/swagger/definitions/fund.json
api/v1/swagger/paths/acquisitions_funds.json

index 2ba300d..c789e7f 100644 (file)
@@ -20,7 +20,6 @@ use Modern::Perl;
 use Mojo::Base 'Mojolicious::Controller';
 
 use Koha::Acquisition::Funds;
-use JSON qw(to_json);
 
 use Try::Tiny;
 
@@ -45,8 +44,15 @@ sub list_funds {
     my $filter;
 
     for my $filter_param ( keys %$args ) {
-        $filter->{$filter_param} = { LIKE => $args->{$filter_param} . "%" }
-            if $args->{$filter_param};
+        if ($args->{$filter_param}) {
+            if ($filter_param eq "budget_owner_id") {
+                # Perform an exact search on the borrowernumber
+                $filter->{$filter_param} = { "=" => $args->{$filter_param} }
+            } else {
+                # And a "start with" search on the budget name
+                $filter->{$filter_param} = { LIKE => $args->{$filter_param} . "%" }
+            }
+        }
     }
 
     return try {
@@ -77,9 +83,20 @@ the attribute names the exposed REST api spec.
 sub _to_api {
     my $fund = shift;
     my $returnfund;
-    $returnfund->{id} = delete $fund->{budget_id};
+    $returnfund->{fund_id} = delete $fund->{budget_id};
     $returnfund->{code} = delete $fund->{budget_code};
     $returnfund->{name} = delete $fund->{budget_name};
+    $returnfund->{library_id} = delete $fund->{budget_branchcode};
+    $returnfund->{total_amount} = delete $fund->{budget_amount};
+    $returnfund->{warn_at_percentage} = delete $fund->{budget_encumb};
+    $returnfund->{warn_at_amount} = delete $fund->{budget_expend};
+    $returnfund->{notes} = delete $fund->{budget_notes};
+    $returnfund->{budget_id} = delete $fund->{budget_period_id};
+    $returnfund->{timestamp} = delete $fund->{timestamp};
+    $returnfund->{fund_owner_id} = delete $fund->{budget_owner_id};
+    $returnfund->{fund_access} = delete $fund->{budget_permission};
+    $returnfund->{statistic1_auth_value_category} = delete $fund->{sort1_authcat};
+    $returnfund->{statistic2_auth_value_category} = delete $fund->{sort2_authcat};
 
     return $returnfund;
 }
@@ -93,13 +110,25 @@ attribute names.
 
 sub _to_model {
     my $fund = shift;
+    my $returnfund;
 
     # Rename back
-    $fund->{budget_id}     = delete $fund->{id};
-    $fund->{budget_code}   = delete $fund->{code};
-    $fund->{budget_name}   = delete $fund->{name};
+    $returnfund->{budget_id} = delete $fund->{fund_id};
+    $returnfund->{budget_code} = delete $fund->{code};
+    $returnfund->{budget_name} = delete $fund->{name};
+    $returnfund->{budget_branchcode} = delete $fund->{library_id};
+    $returnfund->{budget_amount} = delete $fund->{total_amount};
+    $returnfund->{budget_encumb} = delete $fund->{warn_at_percentage};
+    $returnfund->{budget_expend} = delete $fund->{warn_at_amount};
+    $returnfund->{budget_notes} = delete $fund->{notes};
+    $returnfund->{budget_period_id} = delete $fund->{budget_id};
+    $returnfund->{budget_owner_id} = delete $fund->{fund_owner_id};
+    $returnfund->{timestamp} = delete $fund->{timestamp};
+    $returnfund->{budget_permission} = delete $fund->{fund_access};
+    $returnfund->{sort1_authcat} = delete $fund->{statistic1_auth_value_category};
+    $returnfund->{sort2_authcat} = delete $fund->{statistic2_auth_value_category};
 
-    return $fund;
+    return $returnfund;
 }
 
 1;
index f184d8a..a7e34d6 100644 (file)
@@ -1,7 +1,7 @@
 {
   "type": "object",
   "properties": {
-    "id": {
+    "fund_id": {
       "$ref": "../x-primitives.json#/fund_id"
     },
     "code": {
@@ -9,14 +9,91 @@
         "string",
         "null"
       ],
-      "description": "Fund code"
+      "description": "Code assigned to the fund by the user"
     },
     "name": {
       "type": [
         "string",
         "null"
       ],
-      "description": "Fund name"
+      "description": "Name assigned to the fund by the user"
+    },
+    "library_id": {
+      "type": [
+        "string",
+        "null"
+      ],
+      "description": "Internal identifier for the library that this fund belongs to"
+    },
+    "total_amount": {
+      "type": [
+        "number",
+        "null"
+      ],
+      "description": "Total amount for this fund"
+    },
+    "warn_at_percentage": {
+      "type": [
+        "number",
+        "null"
+      ],
+      "description": "Warning at percentage"
+    },
+    "warn_at_amount": {
+      "type": [
+        "number",
+        "null"
+      ],
+      "description": "Warning at amount"
+    },
+    "notes": {
+      "type": [
+        "string",
+        "null"
+      ],
+      "description": "Notes related to this fund"
+    },
+    "budget_id": {
+      "type": [
+        "number",
+        "null"
+      ],
+      "description": "Internal identifier for the budget"
+    },
+    "timestamp": {
+      "type": [
+        "string"
+      ],
+      "format": "date-time",
+      "description": "Timestamp"
+    },
+    "fund_owner_id": {
+      "type": [
+        "number",
+        "null"
+      ],
+      "description": "Internal identifier for the fund owner"
+    },
+    "fund_access": {
+      "type": [
+        "number",
+        "null"
+      ],
+      "description": "Level of permission for this fund (1: owner, 2: owner, users and library, 3: owner and users)"
+    },
+    "statistic1_auth_value_category": {
+      "type": [
+        "string",
+        "null"
+      ],
+      "description": "Statistical category for this fund"
+    },
+    "statistic2_auth_value_category": {
+      "type": [
+        "string",
+        "null"
+      ],
+      "description": "Second statistical category for this fund"
     }
   },
   "additionalProperties": false,
index de0a12f..44f7277 100644 (file)
@@ -15,9 +15,9 @@
         "type": "string"
       },
       {
-        "name": "budget_owner_id",
+        "name": "fund_owner_id",
         "in": "query",
-        "description": "Display only the funds that belongs to the given borrowernumber",
+        "description": "Display only the funds that belongs to the given patron ID",
         "required": false,
         "type": "integer"
       }