From 716d3d0e31163ef3e10ea1273cc422db7e76bc5d 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     | 8 ++++++--
 .../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, 23 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 86ca5e0204d..c08ae702059 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 c8e18c09156..ff59a2f4cd0 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
@@ -49,8 +49,12 @@
     <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 25b1a94f0a7..530a99ebb14 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.39.3 (Apple Git-146)