mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-10 23:07:47 +00:00
Move wholesale calculation for re-use
This commit is contained in:
@@ -20,13 +20,11 @@ module Admin
|
||||
|
||||
catalog_url = params.require(:catalog_url)
|
||||
catalog = DfcCatalog.load(spree_current_user, catalog_url)
|
||||
broker = FdcOfferBroker.new(catalog)
|
||||
catalog.apply_wholesale_values!
|
||||
|
||||
# * First step: import all products for given enterprise.
|
||||
# * Second step: render table and let user decide which ones to import.
|
||||
imported = catalog.products.map do |subject|
|
||||
adjust_to_wholesale_price(broker, subject)
|
||||
|
||||
existing_variant = enterprise.supplied_variants.linked_to(subject.semanticId)
|
||||
|
||||
if existing_variant
|
||||
@@ -43,24 +41,5 @@ module Admin
|
||||
flash[:error] = e.message
|
||||
redirect_to admin_product_import_path
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def adjust_to_wholesale_price(broker, product)
|
||||
transformation = broker.best_offer(product.semanticId)
|
||||
|
||||
return if transformation.factor == 1
|
||||
|
||||
wholesale_variant_price = transformation.offer.price
|
||||
|
||||
return unless wholesale_variant_price
|
||||
|
||||
offer = product.catalogItems&.first&.offers&.first
|
||||
|
||||
return unless offer
|
||||
|
||||
offer.price = wholesale_variant_price.dup
|
||||
offer.price.value = offer.price.value.to_f / transformation.factor
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -27,4 +27,30 @@ class DfcCatalog
|
||||
def select_type(semantic_type)
|
||||
@graph.select { |i| i.semanticType == semantic_type }
|
||||
end
|
||||
|
||||
def apply_wholesale_values!
|
||||
broker = FdcOfferBroker.new(self)
|
||||
products.each do |product|
|
||||
adjust_to_wholesale_price(broker, product)
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def adjust_to_wholesale_price(broker, product)
|
||||
transformation = broker.best_offer(product.semanticId)
|
||||
|
||||
return if transformation.factor == 1
|
||||
|
||||
wholesale_variant_price = transformation.offer.price
|
||||
|
||||
return unless wholesale_variant_price
|
||||
|
||||
offer = product.catalogItems&.first&.offers&.first
|
||||
|
||||
return unless offer
|
||||
|
||||
offer.price = wholesale_variant_price.dup
|
||||
offer.price.value = offer.price.value.to_f / transformation.factor
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user