From 698d1e4cbb0de43c4dcc468bd0a35b6390050997 Mon Sep 17 00:00:00 2001 From: Matt Blenkinsop Date: Wed, 11 Sep 2024 13:33:10 +0000 Subject: [PATCH] Bug 38010: Add the component to display a vendor --- Koha/Acquisition/Bookseller.pm | 20 +++ api/v1/swagger/definitions/vendor.yaml | 9 ++ .../swagger/paths/acquisitions_vendors.yaml | 15 +++ .../vue/components/Vendors/VendorContacts.vue | 97 ++++++++++++++ .../components/Vendors/VendorContracts.vue | 64 +++++++++ .../vue/components/Vendors/VendorDetails.vue | 78 +++++++++++ .../components/Vendors/VendorInterfaces.vue | 54 ++++++++ .../Vendors/VendorOrderingInformation.vue | 75 +++++++++++ .../js/vue/components/Vendors/VendorShow.vue | 123 ++++++++++++++++++ .../Vendors/VendorSubscriptions.vue | 27 ++++ .../js/vue/fetch/acquisition-api-client.js | 3 +- 11 files changed, 564 insertions(+), 1 deletion(-) create mode 100644 koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorContacts.vue create mode 100644 koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorContracts.vue create mode 100644 koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorDetails.vue create mode 100644 koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorInterfaces.vue create mode 100644 koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorOrderingInformation.vue create mode 100644 koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorShow.vue create mode 100644 koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorSubscriptions.vue diff --git a/Koha/Acquisition/Bookseller.pm b/Koha/Acquisition/Bookseller.pm index 0b8a564767a..5041582d935 100644 --- a/Koha/Acquisition/Bookseller.pm +++ b/Koha/Acquisition/Bookseller.pm @@ -23,6 +23,8 @@ use Koha::Acquisition::Bookseller::Interfaces; use Koha::Acquisition::Bookseller::Issues; use Koha::Subscriptions; +use C4::Contract qw( GetContracts ); + use base qw( Koha::Object ); =head1 NAME @@ -63,6 +65,24 @@ sub contacts { return Koha::Acquisition::Bookseller::Contacts->_new_from_dbic($contacts_rs); } +=head3 contracts + + my $vendor = Koha::Acquisition::Booksellers->find( $id ); + my @contracts = $vendor->contracts(); + +Returns the list of contracts for the vendor + +=cut + +sub contracts { + my ($self) = @_; + return GetContracts( + { + booksellerid => $self->id, + } + ); +} + =head3 subscriptions my $vendor = Koha::Acquisition::Booksellers->find( $id ); diff --git a/api/v1/swagger/definitions/vendor.yaml b/api/v1/swagger/definitions/vendor.yaml index 5f285dc9bc4..e7f1f0d847f 100644 --- a/api/v1/swagger/definitions/vendor.yaml +++ b/api/v1/swagger/definitions/vendor.yaml @@ -127,6 +127,15 @@ properties: - integer - "null" description: Number of linked subscriptions + interfaces: + type: array + description: List of interfaces + contacts: + type: array + description: List of contacts + contracts: + type: array + description: List of contracts additionalProperties: false required: - name \ No newline at end of file diff --git a/api/v1/swagger/paths/acquisitions_vendors.yaml b/api/v1/swagger/paths/acquisitions_vendors.yaml index 4670ff81259..98980dc757f 100644 --- a/api/v1/swagger/paths/acquisitions_vendors.yaml +++ b/api/v1/swagger/paths/acquisitions_vendors.yaml @@ -139,6 +139,21 @@ summary: Get vendor parameters: - $ref: "../swagger.yaml#/parameters/vendor_id_pp" + - name: x-koha-embed + in: header + required: false + description: Embed list sent as a request header + type: array + items: + type: string + enum: + - aliases + - baskets + - subscriptions + - interfaces + - contacts + - contracts + collectionFormat: csv produces: - application/json responses: diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorContacts.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorContacts.vue new file mode 100644 index 00000000000..28e3b97f865 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorContacts.vue @@ -0,0 +1,97 @@ + + + + + diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorContracts.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorContracts.vue new file mode 100644 index 00000000000..141106c3653 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorContracts.vue @@ -0,0 +1,64 @@ + + + + + diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorDetails.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorDetails.vue new file mode 100644 index 00000000000..042c7465e66 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorDetails.vue @@ -0,0 +1,78 @@ + + + + + diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorInterfaces.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorInterfaces.vue new file mode 100644 index 00000000000..4bfa8043fc2 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorInterfaces.vue @@ -0,0 +1,54 @@ + + + + + diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorOrderingInformation.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorOrderingInformation.vue new file mode 100644 index 00000000000..916f7bb66c9 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorOrderingInformation.vue @@ -0,0 +1,75 @@ + + + + + diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorShow.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorShow.vue new file mode 100644 index 00000000000..56046c19e56 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorShow.vue @@ -0,0 +1,123 @@ + + + + + diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorSubscriptions.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorSubscriptions.vue new file mode 100644 index 00000000000..99f2b945149 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorSubscriptions.vue @@ -0,0 +1,27 @@ + + + + + diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/fetch/acquisition-api-client.js b/koha-tmpl/intranet-tmpl/prog/js/vue/fetch/acquisition-api-client.js index 74e7006316b..5056b2ea75c 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/vue/fetch/acquisition-api-client.js +++ b/koha-tmpl/intranet-tmpl/prog/js/vue/fetch/acquisition-api-client.js @@ -13,7 +13,8 @@ export class AcquisitionAPIClient extends HttpClient { this.get({ endpoint: "vendors/" + id, headers: { - "x-koha-embed": "aliases", + "x-koha-embed": + "baskets,aliases,subscriptions,interfaces,contacts,contracts", }, }), getAll: (query, params) => -- 2.48.1