Sha256: b9afa396523191d2feb2bca22df5e7e9974386e63248d24a77092112cb6a00fe

Contents?: true

Size: 1.03 KB

Versions: 72

Compression:

Stored size: 1.03 KB

Contents

module Comee
  module Core
    class OrderSource < ApplicationRecord
      has_many :field_mappings
      validates :base_url, :name, presence: true
      validate :validate_field_mapping

      def validate_field_mapping
        return unless field_mapping

        mappings = field_mapping.map(&:with_indifferent_access)
        order_fields = %w[order_number order_date delivery_address invoice_address]
        item_fields = %w[product_code product_name unit_code quantity price delivery_date]
        order_dest = mappings.select { |mapping| mapping[:level] == "order" }.map { |m| m[:destination] }
        item_dest = mappings.select { |mapping| mapping[:level] == "item" }.map { |m| m[:destination] }
        order_diff = order_fields - order_dest
        item_diff = item_fields - item_dest
        errors.add(:field_mapping, "has fields #{order_diff} missing at order level.") if order_diff.count.positive?

        errors.add(:field_mapping, "has fields #{item_diff} missing at item level.") if item_diff.count.positive?
      end
    end
  end
end

Version data entries

72 entries across 72 versions & 1 rubygems

Version Path
comee_core-0.2.29 app/models/comee/core/order_source.rb
comee_core-0.2.28 app/models/comee/core/order_source.rb
comee_core-0.2.27 app/models/comee/core/order_source.rb
comee_core-0.2.26 app/models/comee/core/order_source.rb
comee_core-0.2.25 app/models/comee/core/order_source.rb
comee_core-0.2.24 app/models/comee/core/order_source.rb
comee_core-0.2.23 app/models/comee/core/order_source.rb
comee_core-0.2.22 app/models/comee/core/order_source.rb
comee_core-0.2.21 app/models/comee/core/order_source.rb
comee_core-0.2.20 app/models/comee/core/order_source.rb
comee_core-0.2.19 app/models/comee/core/order_source.rb
comee_core-0.2.18 app/models/comee/core/order_source.rb
comee_core-0.2.17 app/models/comee/core/order_source.rb
comee_core-0.2.16 app/models/comee/core/order_source.rb
comee_core-0.2.15 app/models/comee/core/order_source.rb
comee_core-0.2.14 app/models/comee/core/order_source.rb
comee_core-0.2.13 app/models/comee/core/order_source.rb
comee_core-0.2.12 app/models/comee/core/order_source.rb
comee_core-0.2.11 app/models/comee/core/order_source.rb
comee_core-0.2.10 app/models/comee/core/order_source.rb