From 0fddd22df8cb8b5655fdea03ec5e28a1aaaa1b97 Mon Sep 17 00:00:00 2001 From: Du Peng Date: Mon, 24 Oct 2022 12:34:02 +0200 Subject: [PATCH] (bug) admin cannot filter product availble in store --- app/frontend/src/javascript/components/store/store.tsx | 2 +- app/frontend/src/javascript/models/product.ts | 2 +- app/services/product_service.rb | 9 +-------- 3 files changed, 3 insertions(+), 10 deletions(-) diff --git a/app/frontend/src/javascript/components/store/store.tsx b/app/frontend/src/javascript/components/store/store.tsx index 53cfc889d..1f552fffe 100644 --- a/app/frontend/src/javascript/components/store/store.tsx +++ b/app/frontend/src/javascript/components/store/store.tsx @@ -209,7 +209,7 @@ const Store: React.FC = ({ onError, onSuccess, currentUser, uiRouter */ const fetchProducts = async (): Promise => { try { - const data = await ProductAPI.index(resources.filters.data); + const data = await ProductAPI.index(Object.assign({ store: true }, resources.filters.data)); setCurrentPage(data.page); setProducts(data.data); setPageCount(data.total_pages); diff --git a/app/frontend/src/javascript/models/product.ts b/app/frontend/src/javascript/models/product.ts index e83e12348..6e0f51eaf 100644 --- a/app/frontend/src/javascript/models/product.ts +++ b/app/frontend/src/javascript/models/product.ts @@ -42,7 +42,7 @@ export const initialFilters: ProductIndexFilter = { machines: [], is_active: false, is_available: false, - stock_type: 'internal', + stock_type: 'external', stock_from: 0, stock_to: 0, page: 1, diff --git a/app/services/product_service.rb b/app/services/product_service.rb index 1b4e2c572..f42d67527 100644 --- a/app/services/product_service.rb +++ b/app/services/product_service.rb @@ -9,7 +9,6 @@ class ProductService def list(filters, operator) products = Product.includes(:product_images) products = filter_by_active(products, filters) - products = filter_by_available(products, filters, operator) products = filter_by_categories(products, filters) products = filter_by_machines(products, filters) products = filter_by_keyword_or_reference(products, filters) @@ -129,12 +128,6 @@ class ProductService products.where(is_active: state) end - def filter_by_available(products, filters, operator) - return products if filters[:is_available].blank? || filters[:is_available] == 'false' - - filter_by_stock(products, { stock_type: 'external' }, operator) - end - def filter_by_categories(products, filters) return products if filters[:categories].blank? @@ -159,7 +152,7 @@ class ProductService products = if filters[:stock_from].to_i.positive? products.where('(stock ->> ?)::int >= ?', filters[:stock_type], filters[:stock_from]) - elsif !operator&.privileged? + elsif filters[:store] == 'true' && filters[:is_available] == 'true' products.where('(stock ->> ?)::int >= quantity_min', filters[:stock_type]) else products