私はCorreiosPAC
という新しいカスタムクラスを作成しました。これは、パッケージのコストと注文の配送時間(注文の締め切り)を計算します(下のコードを見てください)。配送時間を保存するために、ShippingRateモデルにdelivery_time
という新しいフィールドを追加しました。しかし、この値を保存して、ビューにクライアントに表示することはできません。これは私が思った最初の解決策でした。私は、これを行うための最善の解決策、パターン解決策を必要としています。私はこれを行う方法がわかりません。Spreeの子ShippingCalculatorカスタムクラス内に新しいメソッドを追加することは可能ですか?
モデル/電卓/出荷/ correios_pac.rb
require 'correios-frete'
module Spree
module Calculator::Shipping
class CorreiosPAC < ShippingCalculator
attr_reader :delivery_time
def self.description
# Human readable description of the calculator
'Entrega Econômica (PAC)'
end
def compute_package(package)
# Returns the value after performing the required calculation
altura = package.quantity * 2 + 1
peso = (200.0 * package.quantity)/1000 + 0.2
cep_origem = '65086-110'
cep_destino = package.order.shipping_address.zipcode
@frete = Correios::Frete::Calculador.new(:cep_origem => cep_origem,
:cep_destino => cep_destino,
:peso => peso,
:comprimento => 30,
:largura => 30,
:altura => altura).calcular :pac
@delivery_time = @frete.prazo_entrega
@frete.valor
end
end
end
end
モデル/ shipping_rate_decorator.rb
Spree::ShippingRate.class_eval do
attr_accessor :delivery_time
end