Merge pull request #10041 from abdellani/add_on-hand_and_on-demand_to_product_report

Add 'on hand' and 'on demand' to Products report
This commit is contained in:
Filipe
2022-12-21 17:31:21 +00:00
committed by GitHub
5 changed files with 87 additions and 2 deletions

View File

@@ -4105,6 +4105,9 @@ See the %{link} to find out more about %{sitename}'s features and to start using
select_and_search: "Select filters and click on %{option} to access your data."
customer_names_message:
customer_names_tip: "If customer names are hidden for orders you have supplied, you can contact the distributor and ask if they can update their shop preferences to allow their suppliers to view customer names."
products_and_inventory:
all_products:
message: "Note that stock levels reported are from supplier product lists only. If you are using Inventory to manage your stock quantities these values will be ignored in this report."
users:
index:
listing_users: "Listing Users"

View File

@@ -36,7 +36,7 @@ module Reporting
else
[]
end
params_fields_to_show - fields_in_headers
params_fields_to_show - fields_in_headers - fields_to_hide
end
private

View File

@@ -4,6 +4,30 @@ module Reporting
module Reports
module ProductsAndInventory
class AllProducts < Base
def default_params
{ fields_to_hide: [:on_demand, :on_hand] }
end
def message
I18n.t("spree.admin.reports.products_and_inventory.all_products.message")
end
def custom_headers
{
on_demand: I18n.t("admin.on_demand?"),
on_hand: I18n.t("admin.on_hand")
}
end
def columns
super.merge(
{
on_demand: proc{ |variant| variant.on_demand },
on_hand: proc{ |variant| variant.on_demand ? I18n.t(:on_demand) : variant.on_hand }
}
)
end
def filter_on_hand(variants)
variants # do not filter
end

View File

@@ -15,7 +15,7 @@ module Reporting
order.line_items.first.variant.product.supplier
end
let(:current_user) { distributor.owner }
let(:params) { { display_summary_row: false } }
let(:params) { { display_summary_row: false, fields_to_hide: [] } }
let(:report) do
OrderCycleSupplierTotals.new(current_user, params)
end

View File

@@ -266,6 +266,64 @@ module Reporting
end
end
end
describe AllProducts do
let(:user) do
user = create(:user)
user.spree_roles << Spree::Role.find_or_create_by!(name: 'admin')
user
end
let(:report) do
AllProducts.new user, { fields_to_hide: [] }
end
it "Should return headers" do
expect(report.table_headers).to eq([
"Supplier",
"Producer Suburb",
"Product",
"Product Properties",
"Taxons",
"Variant Value",
"Price",
"Group Buy Unit Quantity",
"Amount",
"SKU",
"On Demand?",
"On Hand"
])
end
it "Should render 'On demand' when the product is available on demand" do
product = create(:product)
variant = product.variants.first
variant.on_demand = true
variant.on_hand = 15
variant.save!
first_row = report.table_rows.first
on_demand_column = first_row[-2]
on_hand_column = first_row[-1]
expect(on_demand_column).to eq("Yes")
expect(on_hand_column).to eq("On demand")
end
it "Should render the on hand count when the product is not available on demand" do
product = create(:product)
variant = product.variants.first
variant.on_demand = false
variant.on_hand = 22
variant.save!
first_row = report.table_rows.first
on_demand_column = first_row[-2]
on_hand_column = first_row[-1]
expect(on_demand_column).to eq("No")
expect(on_hand_column).to eq(22)
end
end
end
end
end