Class: SolidusMe::RateCalculator
- Inherits:
-
Object
- Object
- SolidusMe::RateCalculator
- Defined in:
- app/models/solidus_me/rate_calculator.rb
Instance Attribute Summary collapse
-
#me_account ⇒ Object
readonly
Returns the value of attribute me_account.
-
#package ⇒ Object
readonly
Returns the value of attribute package.
Instance Method Summary collapse
- #calculate ⇒ Object
-
#initialize(package, me_account) ⇒ RateCalculator
constructor
A new instance of RateCalculator.
Constructor Details
#initialize(package, me_account) ⇒ RateCalculator
Returns a new instance of RateCalculator.
4 5 6 7 8 |
# File 'app/models/solidus_me/rate_calculator.rb', line 4 def initialize(package, me_account) @package = package raise "No Melhor Envio account found" unless me_account @me_account = me_account end |
Instance Attribute Details
#me_account ⇒ Object (readonly)
Returns the value of attribute me_account.
3 4 5 |
# File 'app/models/solidus_me/rate_calculator.rb', line 3 def me_account @me_account end |
#package ⇒ Object (readonly)
Returns the value of attribute package.
3 4 5 |
# File 'app/models/solidus_me/rate_calculator.rb', line 3 def package @package end |
Instance Method Details
#calculate ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'app/models/solidus_me/rate_calculator.rb', line 10 def calculate price = package.contents.map { |content| content.price }.sum weight = package.weight # Validação das dimensões dos Correios (PAC e SEDEX) para cada item # Nenhuma dimensão pode ultrapassar 100 cm # A soma das três dimensões não pode exceder 200 cm return [] unless all_items_valid_for_correios? dimensions = SolidusMe::PackageEstimator.new(package).estimate_dimensions zipcode = package.order.ship_address.zipcode rates = me_client.rates( from_postal_code: me_account.postal_code_from, to_postal_code: zipcode, volume: MeApi::Volume.new( width_cm: dimensions[0], height_cm: dimensions[1], length_cm: dimensions[2], weight_kg: (weight / 1000.00) ), contents_value_brl: price ) rates rescue [] end |