From cf4e9865fda17f5cbcea929e499160d2fcbd9dd1 Mon Sep 17 00:00:00 2001
From: Matt Blenkinsop <matt.blenkinsop@ptfs-europe.com>
Date: Tue, 1 Oct 2024 10:31:02 +0000
Subject: [PATCH] Bug 38010: Fix vendors search bar

---
 .../prog/en/includes/acquisitions-search.inc             | 2 +-
 .../intranet-tmpl/prog/en/modules/acqui/acqui-home.tt    | 9 +++++++--
 .../prog/js/vue/components/Vendors/VendorList.vue        | 7 +++++++
 koha-tmpl/intranet-tmpl/prog/js/vue/stores/navigation.js | 6 ++++++
 t/cypress/integration/Acquisitions/Vendors_spec.ts       | 6 +++---
 5 files changed, 24 insertions(+), 6 deletions(-)

diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/acquisitions-search.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/acquisitions-search.inc
index 149f9dcb1d4..2d3b54118c3 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/includes/acquisitions-search.inc
+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/acquisitions-search.inc
@@ -6,7 +6,7 @@
 
         [% WRAPPER tab_panels %]
             [% WRAPPER tab_panel tabname="supplier_search" bt_active= 1 %]
-                <form name="findsupplier" action="/cgi-bin/koha/acqui/booksellers.pl" method="get">
+                <form name="findsupplier" action="/cgi-bin/koha/vendors" method="get">
                     <div class="form-title">
                         <label class="control-label" for="supplier"><span class="control-text">Vendor search</span> <i class="fa fa-fw fa-upload" aria-hidden="true"></i></label>
                     </div>
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/acqui-home.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/acqui-home.tt
index 2658c38bc1c..64dfd33472c 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/acqui-home.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/acqui-home.tt
@@ -48,8 +48,13 @@
         <div class="col">
             <div id="acqui_acqui_home_order">
                 <fieldset>
-                    <legend>View vendors</legend>
-                    <a href="/cgi-bin/koha/vendors" class="btn btn-default">Vendor list</a>
+                    <legend>Search vendors</legend>
+                    <form name="findsupplier" action="/cgi-bin/koha/vendors" method="get">
+                        <p
+                            ><label for="supplierpage">Vendor: </label><input type="text" size="25" name="supplier" id="supplierpage" class="focus" />
+                            <input type="submit" class="btn btn-primary" value="Search" />
+                        </p>
+                    </form>
                 </fieldset>
             </div>
         </div>
diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorList.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorList.vue
index d9d4e1e391d..a9c7d712b0a 100644
--- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorList.vue
+++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorList.vue
@@ -59,6 +59,7 @@ export default {
             fp_config: flatpickr_defaults,
             vendor_count: 0,
             initialized: false,
+            searchTerm: null,
             tableOptions: {
                 columns: this.getTableColumns(),
                 options: { embed: "aliases,baskets,subscriptions" },
@@ -97,6 +98,9 @@ export default {
     beforeRouteEnter(to, from, next) {
         next(vm => {
             vm.getVendorCount().then(() => (vm.initialized = true));
+            if (to.query.supplier) {
+                vm.searchTerm = to.query.supplier;
+            }
         });
     },
     methods: {
@@ -155,6 +159,9 @@ export default {
         },
         tableURL() {
             let url = "/api/v1/acquisitions/vendors";
+            if (this.searchTerm) {
+                url += "?name=" + this.searchTerm;
+            }
             return url;
         },
         getTableColumns() {
diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/stores/navigation.js b/koha-tmpl/intranet-tmpl/prog/js/vue/stores/navigation.js
index 1e3ecb58b36..d46e97c0bbb 100644
--- a/koha-tmpl/intranet-tmpl/prog/js/vue/stores/navigation.js
+++ b/koha-tmpl/intranet-tmpl/prog/js/vue/stores/navigation.js
@@ -152,6 +152,12 @@ export const useNavigationStore = defineStore("navigation", {
             }
         },
         leftNavigation() {
+            const currentRoute = this.current[this.current.length - 1];
+            if (currentRoute) {
+                const alternateMenuRequired =
+                    currentRoute.meta.self.alternateLeftMenu;
+                if (alternateMenuRequired) return alternateMenuRequired;
+            }
             return _getNavigationElements(this.routeState);
 
             // Function declarations
diff --git a/t/cypress/integration/Acquisitions/Vendors_spec.ts b/t/cypress/integration/Acquisitions/Vendors_spec.ts
index 23f9ad69bef..482c1633f5f 100644
--- a/t/cypress/integration/Acquisitions/Vendors_spec.ts
+++ b/t/cypress/integration/Acquisitions/Vendors_spec.ts
@@ -64,7 +64,6 @@ describe("Vendor CRUD operations", () => {
 
     it("should list vendors", () => {
         cy.visit("/cgi-bin/koha/acqui/acqui-home.pl");
-        cy.get("#acqui_acqui_home_order").contains("Vendor list").click();
 
         cy.intercept("GET", "/api/v1/acquisitions/vendors*", []);
         cy.visit("/cgi-bin/koha/vendors");
@@ -282,9 +281,9 @@ describe("External URLs", () => {
 
     it("should navigate to the receive shipments page", () => {
         cy.visit("/cgi-bin/koha/acqui/acqui-home.pl");
-        cy.get("#acqui_acqui_home_order").contains("Vendor list").click();
 
         const vendor = getVendor();
+
         cy.intercept("GET", "/api/v1/acquisitions/vendors*", {
             statusCode: 200,
             body: [vendor],
@@ -293,13 +292,14 @@ describe("External URLs", () => {
                 "X-Total-Count": "1",
             },
         });
-        cy.intercept("GET", "/api/v1/acquisitions/vendors/*", vendor);
         cy.visit("/cgi-bin/koha/vendors");
         const name_link = cy.get(
             "#vendors_list table tbody tr:first td:first a"
         );
         name_link.should("have.text", vendor.name + " (#" + vendor.id + ")");
         name_link.click();
+        cy.wait(500);
+        cy.get("#vendors_show h1").contains(vendor.name);
 
         cy.get("#vendors_show").contains("Receive shipments").click();
         cy.get("h1").contains("Receive shipment from vendor " + vendor.name);
-- 
2.48.1