Sha256: 94e7c514050c6fe5fcbb862b57ba13b8e8ece6f6f86e6b557b65a7f8b81a36ae

Contents?: true

Size: 977 Bytes

Versions: 1

Compression:

Stored size: 977 Bytes

Contents

module OrderValidations
  extend ActiveSupport::Concern

  prepended do
    validate :check_tax_id, if: :email_required?
    validate :check_compatible_zipcode_and_state
    before_update :format_tax_id

    def check_compatible_zipcode_and_state
      cep = CodigoPostal.new(ship_address.zipcode)
      unless cep.state_code == ship_address.state.abbr
        errors.add(:base, "CEP não corresponde ao Estado.")
      end
    end

    def check_tax_id
      cnpj_allowed = SolidusBrazilianAdaptations.config.allow_cnpj
      document = TaxIdBr.new(tax_id)
      if document.valid?
        if document.document_type == :cnpj && cnpj_allowed == false
          errors.add(:base, "Insira um CPF, não um CNPJ.")
        end
      else
        errors.add(:base, "#{cnpj_allowed ? "CPF/CPNJ" : "CPF"} inválido.")
      end
    end

    def format_tax_id
      document = TaxIdBr.new(tax_id)
      self.tax_id = document.formatted
    end
  end

  ::Spree::Order.prepend self
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
solidus_brazilian_adaptations-1.0.6 app/overrides/order_validations.rb