View | Details | Raw Unified | Return to bug 38262
Collapse All | Expand All

(-)a/Koha/REST/V1/ExtendedAttributeTypes.pm (+22 lines)
Lines 112-115 sub list_erm { Link Here
112
    };
112
    };
113
}
113
}
114
114
115
=head3 list_acq_vendors
116
117
List the vendors-related additional fields, can be filtered using the resource_type parameter.
118
119
=cut
120
121
sub list_acq_vendors {
122
    my ($self)         = @_;
123
    my $c              = shift->openapi->valid_input or return;
124
    my @resource_types = qw(vendor);
125
126
    return try {
127
        my $additional_fields_set = $self->_list(@resource_types);
128
        return $c->render(
129
            status  => 200,
130
            openapi => $c->objects->search($additional_fields_set)
131
        );
132
    } catch {
133
        $c->unhandled_exception($_);
134
    };
135
}
136
115
1;
137
1;
(-)a/api/v1/swagger/paths/acquisitions_vendors_extended_attribute_types.yaml (+54 lines)
Line 0 Link Here
1
---
2
/acquisitions/vendors/extended_attribute_types:
3
  get:
4
    x-mojo-to: ExtendedAttributeTypes#list_acq_vendors
5
    operationId: listAcquisitionVendorsAdditionalFields
6
    tags:
7
      - additional_fields
8
    summary: List acquisition vendors extended attribute types
9
    produces:
10
      - application/json
11
    parameters:
12
      - description: filter by resource type
13
        in: query
14
        name: resource_type
15
        type: string
16
        enum:
17
          - vendor
18
      - $ref: "../swagger.yaml#/parameters/match"
19
      - $ref: "../swagger.yaml#/parameters/order_by"
20
      - $ref: "../swagger.yaml#/parameters/page"
21
      - $ref: "../swagger.yaml#/parameters/per_page"
22
      - $ref: "../swagger.yaml#/parameters/q_param"
23
      - $ref: "../swagger.yaml#/parameters/q_body"
24
    responses:
25
      200:
26
        description: A list of extended attribute types for acquisition vendors
27
        schema:
28
          items:
29
            $ref: "../swagger.yaml#/definitions/extended_attribute_type"
30
          type: array
31
      "400":
32
        description: |
33
          Bad request. Possible `error_code` attribute values:
34
35
            * `invalid_query`
36
        schema:
37
          $ref: "../swagger.yaml#/definitions/error"
38
      403:
39
        description: Access forbidden
40
        schema:
41
          $ref: "../swagger.yaml#/definitions/error"
42
      500:
43
        description: |-
44
          Internal server error. Possible `error_code` attribute values:
45
          * `internal_server_error`
46
        schema:
47
          $ref: "../swagger.yaml#/definitions/error"
48
      503:
49
        description: Under maintenance
50
        schema:
51
          $ref: "../swagger.yaml#/definitions/error"
52
    x-koha-authorization:
53
      permissions:
54
        - acquisition: vendors_manage
(-)a/api/v1/swagger/swagger.yaml (+2 lines)
Lines 221-226 paths: Link Here
221
    $ref: "./paths/acquisitions_orders.yaml#/~1acquisitions~1orders~1{order_id}"
221
    $ref: "./paths/acquisitions_orders.yaml#/~1acquisitions~1orders~1{order_id}"
222
  /acquisitions/vendors:
222
  /acquisitions/vendors:
223
    $ref: ./paths/acquisitions_vendors.yaml#/~1acquisitions~1vendors
223
    $ref: ./paths/acquisitions_vendors.yaml#/~1acquisitions~1vendors
224
  /acquisitions/vendors/extended_attribute_types:
225
    $ref: ./paths/acquisitions_vendors_extended_attribute_types.yaml#/~1acquisitions~1vendors~1extended_attribute_types
224
  /acquisitions/vendors/config:
226
  /acquisitions/vendors/config:
225
    $ref: ./paths/acquisitions_vendors_config.yaml#/~1acquisitions~1vendors~1config
227
    $ref: ./paths/acquisitions_vendors_config.yaml#/~1acquisitions~1vendors~1config
226
  "/acquisitions/vendors/{vendor_id}":
228
  "/acquisitions/vendors/{vendor_id}":
(-)a/koha-tmpl/intranet-tmpl/prog/js/fetch/acquisition-api-client.js (+19 lines)
Lines 57-62 export class AcquisitionAPIClient { Link Here
57
                            ...(query && { q: JSON.stringify(query) }),
57
                            ...(query && { q: JSON.stringify(query) }),
58
                        }),
58
                        }),
59
                }),
59
                }),
60
            additional_fields: resource_type =>
61
                this.httpClient.getAll({
62
                    endpoint: "vendors/extended_attribute_types",
63
                    params: { resource_type },
64
                }),
60
        };
65
        };
61
    }
66
    }
62
67
Lines 74-79 export class AcquisitionAPIClient { Link Here
74
                }),
79
                }),
75
        };
80
        };
76
    }
81
    }
82
83
    get additional_fields() {
84
        return {
85
            getAll: resource_type => {
86
                if (resource_type == "vendor") {
87
                    return this.vendors.additional_fields(resource_type);
88
                }
89
                // Use fetch/additional-fields-api-client.js instead
90
                throw new Error(
91
                    "resource_type %s does not have a dedicated endpoint to fetch additional fields."
92
                );
93
            },
94
        };
95
    }
77
}
96
}
78
97
79
export default AcquisitionAPIClient;
98
export default AcquisitionAPIClient;
(-)a/koha-tmpl/intranet-tmpl/prog/js/fetch/additional-fields-api-client.js (-1 / +3 lines)
Lines 1-4 Link Here
1
import ERMAPIClient from "@fetch/erm-api-client";
1
import ERMAPIClient from "@fetch/erm-api-client";
2
import AcquisitionAPIClient from "@fetch/acquisition-api-client.js";
2
3
3
export class AdditionalFieldsAPIClient {
4
export class AdditionalFieldsAPIClient {
4
    constructor(HttpClient) {
5
    constructor(HttpClient) {
Lines 23-28 export class AdditionalFieldsAPIClientWrapper { Link Here
23
        this.clients = {
24
        this.clients = {
24
            admin: new AdditionalFieldsAPIClient(HttpClient),
25
            admin: new AdditionalFieldsAPIClient(HttpClient),
25
            erm: new ERMAPIClient(HttpClient),
26
            erm: new ERMAPIClient(HttpClient),
27
            acquisition: new AcquisitionAPIClient(HttpClient),
26
        };
28
        };
27
    }
29
    }
28
30
Lines 40-45 export class AdditionalFieldsAPIClientWrapper { Link Here
40
    getModuleName(resource_type) {
42
    getModuleName(resource_type) {
41
        const moduleMappings = {
43
        const moduleMappings = {
42
            erm: ["agreement", "license", "package"],
44
            erm: ["agreement", "license", "package"],
45
            acquisition: ["vendor"],
43
        };
46
        };
44
47
45
        for (const [module, resourceTypes] of Object.entries(moduleMappings)) {
48
        for (const [module, resourceTypes] of Object.entries(moduleMappings)) {
46
- 

Return to bug 38262