mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-03-19 04:49:15 +00:00
List absent products in import preview
This commit is contained in:
@@ -21,6 +21,7 @@ module Admin
|
||||
|
||||
# Render table and let user decide which ones to import.
|
||||
@items = list_products(catalog)
|
||||
@absent_items = absent_variants(catalog)
|
||||
rescue URI::InvalidURIError
|
||||
flash[:error] = t ".invalid_url"
|
||||
redirect_to admin_product_import_path
|
||||
@@ -89,21 +90,25 @@ module Admin
|
||||
# We don't delete the variant because it may come back at a later time and
|
||||
# we don't want to lose the connection to previous orders.
|
||||
def reset_absent_variants(catalog)
|
||||
present_ids = catalog.products.map(&:semanticId)
|
||||
absent_variants = @enterprise.supplied_variants
|
||||
.includes(:semantic_links).references(:semantic_links)
|
||||
.where.not(semantic_links: { semantic_id: present_ids })
|
||||
|
||||
catalog_url = FdcUrlBuilder.new(present_ids.first).catalog_url
|
||||
absent_variants.select do |variant|
|
||||
# Variants that were in the same catalog before:
|
||||
variant.semantic_links.map(&:semantic_id).any? do |semantic_id|
|
||||
FdcUrlBuilder.new(semantic_id).catalog_url == catalog_url
|
||||
end
|
||||
end.map do |variant|
|
||||
absent_variants(catalog).map do |variant|
|
||||
variant.on_demand = false
|
||||
variant.on_hand = 0
|
||||
end
|
||||
end
|
||||
|
||||
def absent_variants(catalog)
|
||||
present_ids = catalog.products.map(&:semanticId)
|
||||
catalog_url = FdcUrlBuilder.new(present_ids.first).catalog_url
|
||||
|
||||
@enterprise.supplied_variants
|
||||
.includes(:semantic_links).references(:semantic_links)
|
||||
.where.not(semantic_links: { semantic_id: present_ids })
|
||||
.select do |variant|
|
||||
# Variants that were in the same catalog before:
|
||||
variant.semantic_links.map(&:semantic_id).any? do |semantic_id|
|
||||
FdcUrlBuilder.new(semantic_id).catalog_url == catalog_url
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
%tr
|
||||
%td
|
||||
%label
|
||||
❌
|
||||
= absent_variant.product_and_full_name
|
||||
%td
|
||||
= t(".reset")
|
||||
= link_to(absent_variant.product_id, edit_admin_product_path(absent_variant.product_id))
|
||||
@@ -5,4 +5,4 @@
|
||||
|
||||
%p= t(".imported_products", count: @count)
|
||||
|
||||
%p= t(".reset_products", count: @reset_count)
|
||||
%p= t(".reset_products", count: @reset_count) if @reset_count.positive?
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
|
||||
%p= t('.catalog_url', count: @items.count, catalog_url: @catalog_url)
|
||||
%p= t('.enterprise', enterprise_name: @enterprise.name)
|
||||
%p= t('.absent_products', count: @absent_items.count)
|
||||
%br
|
||||
|
||||
= form_with url: main_app.import_admin_dfc_product_imports_path, html: { "data-controller": "checked" } do |form|
|
||||
@@ -32,6 +33,7 @@
|
||||
= link_to(existing_product.id, edit_admin_product_path(existing_product))
|
||||
- else
|
||||
= t(".new")
|
||||
= render partial: "absent_variant", collection: @absent_items
|
||||
|
||||
%span{ "data-controller": "checked-feedback", "data-checked-feedback-translation-value": "admin.dfc_product_imports.index.selected" }
|
||||
= t(".selected", count: @items.count)
|
||||
|
||||
Reference in New Issue
Block a user