lib/tasks/sample_data/payment_method_factory.rb
# frozen_string_literal: true
require "tasks/sample_data/addressing"
require "tasks/sample_data/logging"
module SampleData
class PaymentMethodFactory
include Logging
include Addressing
def create_samples(enterprises)
log "Creating payment methods:"
distributors = enterprises.select(&:is_distributor)
distributors.each do |enterprise|
create_payment_methods(enterprise)
end
end
private
def create_payment_methods(enterprise)
return if enterprise.payment_methods.present?
log "- #{enterprise.name}"
create_cash_method(enterprise)
end
def create_cash_method(enterprise)
create_payment_method(
Spree::PaymentMethod::Check,
enterprise,
"Cash on collection",
"Pay on collection!",
::Calculator::FlatRate.new
)
end
def create_payment_method(provider_class, enterprise, name, description, calculator)
payment_method = provider_class.new(
name:,
description:,
environment: Rails.env,
distributor_ids: [enterprise.id]
)
payment_method.calculator = calculator
payment_method.save!
end
end
end