class Correios::Frete::Pacote

Constants

MIN_DIMENSIONS

Attributes

altura[R]
comprimento[R]
largura[R]
peso[R]
volume[R]

Public Class Methods

new(itens = nil) click to toggle source
# File lib/correios/frete/pacote.rb, line 13
def initialize(itens = nil)
  @peso = @comprimento = @largura = @altura = @volume = 0.0
  @itens = []

  itens.each { |item| adicionar_item(item) } if itens
end

Public Instance Methods

add_item(item)
Alias for: adicionar_item
adicionar_item(item) click to toggle source
# File lib/correios/frete/pacote.rb, line 29
def adicionar_item(item)
  return unless item

  item = Correios::Frete::PacoteItem.new(item) if item.is_a?(Hash)
  @itens << item

  calcular_medidas(item)
  item
end
Also aliased as: add_item
formato() click to toggle source
# File lib/correios/frete/pacote.rb, line 20
def formato
  :caixa_pacote
end
items()
Alias for: itens
itens() click to toggle source
# File lib/correios/frete/pacote.rb, line 24
def itens
  @itens
end
Also aliased as: items

Private Instance Methods

calcular_medidas(item) click to toggle source
# File lib/correios/frete/pacote.rb, line 42
def calcular_medidas(item)
  @peso += item.peso
  @volume += item.volume

  if @itens.size == 1
    @comprimento = item.comprimento
    @largura = item.largura
    @altura = item.altura
  else
    dimensao = @volume.to_f**(1.0/3)
    @comprimento = @largura = @altura = dimensao
  end

  min_dimension_values
end
min(value, minimum) click to toggle source
# File lib/correios/frete/pacote.rb, line 64
def min(value, minimum)
  (value < minimum) ? minimum : value
end
min_dimension_values() click to toggle source
# File lib/correios/frete/pacote.rb, line 58
def min_dimension_values()
  @comprimento = min(@comprimento, MIN_DIMENSIONS[:comprimento])
  @largura = min(@largura, MIN_DIMENSIONS[:largura])
  @altura = min(@altura, MIN_DIMENSIONS[:altura])
end