diff --git a/engines/dfc_provider/app/services/product_type_importer.rb b/engines/dfc_provider/app/services/product_type_importer.rb new file mode 100644 index 0000000000..2852cdbd51 --- /dev/null +++ b/engines/dfc_provider/app/services/product_type_importer.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class ProductTypeImporter < DfcBuilder + def self.taxon(product_type) + dfc_id = product_type&.semanticId + + # Every product needs a primary taxon to be valid. So if we don't have + # one or can't find it we just take a random one. + Spree::Taxon.find_by(dfc_id:) || Spree::Taxon.first + end +end diff --git a/engines/dfc_provider/app/services/supplied_product_builder.rb b/engines/dfc_provider/app/services/supplied_product_builder.rb index c55ae55828..ff567ff52b 100644 --- a/engines/dfc_provider/app/services/supplied_product_builder.rb +++ b/engines/dfc_provider/app/services/supplied_product_builder.rb @@ -111,11 +111,7 @@ class SuppliedProductBuilder < DfcBuilder end def self.taxon(supplied_product) - dfc_id = supplied_product.productType&.semanticId - - # Every product needs a primary taxon to be valid. So if we don't have - # one or can't find it we just take a random one. - Spree::Taxon.find_by(dfc_id:) || Spree::Taxon.first + ProductTypeImporter.taxon(supplied_product.productType) end private_class_method :product_type, :taxon