# 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 && 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 end ::Spree::Order.prepend self end end end