class Nfe400

template for NFe 4.00

Attributes

AAMM[R]
CNPJ[R]
cDV[R]
cNF[R]
cUF[R]
chave[R]
emit_date[R]
mod[R]
nNF[R]
serie[R]
tpEmis[R]

Public Class Methods

new() click to toggle source
# File lib/mock_dfe/dfes/nfe_400.rb, line 5
def initialize
  @emit_date = DateTime.parse(Faker::Date.backward(1825).to_s)
  @cUF =  COD_DA_UF.values.sample
  @AAMM = @emit_date.strftime('%y%m')
  @CNPJ = CNPJ.generate
  @mod = '55'
  @serie = '002'
  @nNF = Faker::Number.between(1, 999_999_999).to_s.rjust(9, '0')
  @tpEmis = '1'
  @cNF = Faker::Number.number(8)
  chave_sem_cdv = "#{@cUF}#{@AAMM}#{@CNPJ}#{@mod}#{@serie}#{@nNF}#{@tpEmis}#{@cNF}"
  @cDV = calculate_cdv(chave_sem_cdv)
  @chave = "#{chave_sem_cdv}#{@cDV}"
end

Public Instance Methods

calculate_cdv(chave) click to toggle source
# File lib/mock_dfe/dfes/nfe_400.rb, line 20
def calculate_cdv(chave)
  soma = 0
  multiplicador = 2

  [*0..42].reverse_each do |i|
    soma += (chave[i].to_i * multiplicador)
    multiplicador += 1
    multiplicador = 2 if multiplicador > 9
  end
  resto = soma % 11
  digito_verificador = 11 - resto
  digito_verificador = 0 if digito_verificador >= 10
  digito_verificador
end