Sha256: 12d2aadcae8316c9db84c507379e70c3cecb5247c6ccd3e6598057b8bd530a69

Contents?: true

Size: 932 Bytes

Versions: 3

Compression:

Stored size: 932 Bytes

Contents

# frozen_string_literal: true

module SolidusBrazilianAdaptations
  module Spree
    module OrderDecorator
      def self.prepended(base)
        base.class_eval do
          validate :verify, if: :email_required?
          before_update :format_tax_id

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

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

        end
      end

      ::Spree::Order.prepend self
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
solidus_brazilian_adaptations-1.0.3 app/decorators/models/solidus_brazilian_adaptations/spree/order_decorator.rb
solidus_brazilian_adaptations-1.0.1 app/decorators/models/solidus_brazilian_adaptations/spree/order_decorator.rb
solidus_brazilian_adaptations-1.0.0 app/decorators/models/solidus_brazilian_adaptations/spree/order_decorator.rb