Module: BrNfe::Product::NfXmlValue

Included in:
Operation::Base
Defined in:
lib/br_nfe/product/nf_xml_value.rb

Instance Method Summary collapse

Instance Method Details

#nf_xml_fixed_code(code, options = {}, xml_version = :v3_10) ⇒ Object



181
182
183
184
# File 'lib/br_nfe/product/nf_xml_value.rb', line 181

def nf_xml_fixed_code code, options={}, xml_version=:v3_10
  options = {size: 2}.merge(options)
  "#{code.to_i}".rjust(options[:size], '0')
end

#nf_xml_value_boolean(value, xml_version = :v3_10) ⇒ Object



213
214
215
# File 'lib/br_nfe/product/nf_xml_value.rb', line 213

def nf_xml_value_boolean value, xml_version=:v3_10
  value ? '1' : '0'
end

#nf_xml_value_CEP(value, xml_version = :v3_10) ⇒ Object



40
41
42
# File 'lib/br_nfe/product/nf_xml_value.rb', line 40

def nf_xml_value_CEP value, xml_version=:v3_10
  only_numbers value, {min_size: 8, max_size: 8}
end

#nf_xml_value_CEST(cest, xml_version = :v3_10) ⇒ Object



186
187
188
# File 'lib/br_nfe/product/nf_xml_value.rb', line 186

def nf_xml_value_CEST cest, xml_version=:v3_10
  "#{cest.to_i}".rjust(7, '0') if cest.present?
end

#nf_xml_value_CFOP(value, xml_version = :v3_10) ⇒ Object



167
168
169
# File 'lib/br_nfe/product/nf_xml_value.rb', line 167

def nf_xml_value_CFOP value, xml_version=:v3_10
  only_numbers value, {min_size: 4, max_size: 4}
end

#nf_xml_value_chave_nfe(value, xml_version = :v3_10) ⇒ Object



233
234
235
# File 'lib/br_nfe/product/nf_xml_value.rb', line 233

def nf_xml_value_chave_nfe value, xml_version=:v3_10
  only_numbers value, {min_size: 44, max_size: 44}
end

#nf_xml_value_CNAE(value, xml_version = :v3_10) ⇒ Object



60
61
62
# File 'lib/br_nfe/product/nf_xml_value.rb', line 60

def nf_xml_value_CNAE value, xml_version=:v3_10
  only_numbers value, {min_size: 7, max_size: 7}
end

#nf_xml_value_cnpj(value, xml_version = :v3_10) ⇒ Object



13
14
15
# File 'lib/br_nfe/product/nf_xml_value.rb', line 13

def nf_xml_value_cnpj value, xml_version=:v3_10
  only_numbers value, {min_size: 14, max_size: 14}
end

#nf_xml_value_codigo_enquadramento_IPI(value) ⇒ Object



241
242
243
244
245
246
247
# File 'lib/br_nfe/product/nf_xml_value.rb', line 241

def nf_xml_value_codigo_enquadramento_IPI value
  if value.blank?
    '999'
  else
    nf_xml_value_text value, 3
  end
end

#nf_xml_value_codigo_ibge_municipio(value, xml_version = :v3_10) ⇒ Object



32
33
34
# File 'lib/br_nfe/product/nf_xml_value.rb', line 32

def nf_xml_value_codigo_ibge_municipio value, xml_version=:v3_10
  only_numbers value, {min_size: 7, max_size: 7}
end

#nf_xml_value_codigo_nf(value) ⇒ Object



4
5
6
# File 'lib/br_nfe/product/nf_xml_value.rb', line 4

def nf_xml_value_codigo_nf value
  only_numbers(value, {min_size: 8, max_size: 8})
end

#nf_xml_value_codigo_pais(value, xml_version = :v3_10) ⇒ Object



44
45
46
# File 'lib/br_nfe/product/nf_xml_value.rb', line 44

def nf_xml_value_codigo_pais value, xml_version=:v3_10
  only_numbers value, {min_size: 4, max_size: 4}
end

#nf_xml_value_consumidor_final(value, xml_version = :v3_10) ⇒ Object

Indica operação com Consumidor final 0=Normal; 1=Consumidor final;



121
122
123
# File 'lib/br_nfe/product/nf_xml_value.rb', line 121

def nf_xml_value_consumidor_final value, xml_version=:v3_10
  value ? '1' :  '0'
end

#nf_xml_value_cpf(value, xml_version = :v3_10) ⇒ Object



10
11
12
# File 'lib/br_nfe/product/nf_xml_value.rb', line 10

def nf_xml_value_cpf value, xml_version=:v3_10
  only_numbers value, {min_size: 11, max_size: 11}
end

#nf_xml_value_CRT(value, xml_version = :v3_10) ⇒ Object



64
65
66
# File 'lib/br_nfe/product/nf_xml_value.rb', line 64

def nf_xml_value_CRT value, xml_version=:v3_10
  "#{value}".max_size(1)
end

#nf_xml_value_date(value, xml_version = :v3_10) ⇒ Object



139
140
141
142
143
144
145
# File 'lib/br_nfe/product/nf_xml_value.rb', line 139

def nf_xml_value_date value, xml_version=:v3_10
  if value.is_a?(Date)
    value.to_s(:iso8601)
  elsif value.is_a?(Time) || value.is_a?(DateTime)
    value.to_date.to_s(:iso8601)
  end
end

#nf_xml_value_date_time(time, xml_version = :v3_10) ⇒ Object



125
126
127
128
129
130
131
# File 'lib/br_nfe/product/nf_xml_value.rb', line 125

def nf_xml_value_date_time time, xml_version=:v3_10
  if time.is_a?(Time) || time.is_a?(DateTime)
    time.to_s(:iso8601)
  elsif time.is_a?(Date)
    time.to_time.to_s(:iso8601)
  end
end

#nf_xml_value_drawback(value, xml_version = :v3_10) ⇒ Object



225
226
227
228
229
230
231
# File 'lib/br_nfe/product/nf_xml_value.rb', line 225

def nf_xml_value_drawback value, xml_version=:v3_10
  if "#{value}".strip.size <= 9 
    only_numbers value, min_size: 9, max_size: 9
  else
    only_numbers value, min_size: 11, max_size: 11
  end
end

#nf_xml_value_EAN(ean, xml_version = :v3_10) ⇒ Object



190
191
192
193
194
195
196
197
198
# File 'lib/br_nfe/product/nf_xml_value.rb', line 190

def nf_xml_value_EAN ean, xml_version=:v3_10
  if ean.to_i > 0
    if "#{ean}".strip.size > 8
      "#{ean}".strip.rjust(12, '0') 
    else
      "#{ean}".strip.rjust(8, '0') 
    end
  end
end

#nf_xml_value_email(v_email, xml_version = :v3_10) ⇒ Object



101
102
103
# File 'lib/br_nfe/product/nf_xml_value.rb', line 101

def nf_xml_value_email v_email, xml_version=:v3_10
  nf_xml_value_text(v_email, 60)
end

#nf_xml_value_EXTIPI(value, xml_version = :v3_10) ⇒ Object



209
210
211
# File 'lib/br_nfe/product/nf_xml_value.rb', line 209

def nf_xml_value_EXTIPI value, xml_version=:v3_10
  "#{value}".rjust(2, '0')
end

#nf_xml_value_float(value, precision, xml_version = :v3_10) ⇒ Object



163
164
165
# File 'lib/br_nfe/product/nf_xml_value.rb', line 163

def nf_xml_value_float value, precision, xml_version=:v3_10
  "%.#{precision}f" % value.to_f.round(precision)
end

#nf_xml_value_fone(value, xml_version = :v3_10) ⇒ Object



24
25
26
# File 'lib/br_nfe/product/nf_xml_value.rb', line 24

def nf_xml_value_fone value, xml_version=:v3_10
  only_numbers value, {min_size: 6, max_size: 14}
end

#nf_xml_value_id_estrangeiro(value, xml_version = :v3_10) ⇒ Object



20
21
22
# File 'lib/br_nfe/product/nf_xml_value.rb', line 20

def nf_xml_value_id_estrangeiro value, xml_version=:v3_10
  "#{value}".max_size(20)
end

#nf_xml_value_id_local_destino(v_endereco_destino, xml_version = :v3_10) ⇒ Object

1=Operação interna; 2=Operação interestadual; 3=Operação com exterior.



108
109
110
111
112
113
114
115
116
# File 'lib/br_nfe/product/nf_xml_value.rb', line 108

def nf_xml_value_id_local_destino v_endereco_destino, xml_version=:v3_10
  if v_endereco_destino.exterior?
    3
  elsif emitente.endereco.codigo_ibge_uf == v_endereco_destino.codigo_ibge_uf
    1
  else
    2
  end
end

#nf_xml_value_IE(value, xml_version = :v3_10) ⇒ Object



48
49
50
51
52
53
54
# File 'lib/br_nfe/product/nf_xml_value.rb', line 48

def nf_xml_value_IE value, xml_version=:v3_10
  if value.blank?
    'ISENTO'
  else
    "#{value}".gsub(/[^\w]/,'').rjust(2, '0').max_size(14)
  end
end

#nf_xml_value_IM(value, xml_version = :v3_10) ⇒ Object



56
57
58
# File 'lib/br_nfe/product/nf_xml_value.rb', line 56

def nf_xml_value_IM value, xml_version=:v3_10
  "#{value}".max_size(15)
end

#nf_xml_value_indicador_IE(indicador_ie, nfe, xml_version = :v3_10) ⇒ Object

E16a - Indicador da IE do Destinatário 1 = Contribuinte ICMS (informar a IE do destinatário); 2 = Contribuinte isento de Inscrição no cadastro de Contribuintes do ICMS; 9 = Não Contribuinte, que pode ou não possuir Inscrição Estadual no Cadastro de

Contribuintes do ICMS.

Nota 1: No caso de NFC-e informar indIEDest=9 e não informar

a tag IE do destinat

Nota 2: No caso de operação com o Exterior informar indIEDest=9 e

n

Nota 3: No caso de Contribuinte Isento de Inscrição (indIEDest=2),

n


81
82
83
84
85
86
87
# File 'lib/br_nfe/product/nf_xml_value.rb', line 81

def nf_xml_value_indicador_IE indicador_ie, nfe, xml_version=:v3_10
  if nfe.nfce? # 65 NFC-e
    '9'
  else
    indicador_ie
  end
end

#nf_xml_value_indicador_sincrono(value) ⇒ Object



16
17
18
# File 'lib/br_nfe/product/nf_xml_value.rb', line 16

def nf_xml_value_indicador_sincrono value
  value ? '1' : '0'
end

#nf_xml_value_inscricao_suframa(v_suframa, xml_version = :v3_10) ⇒ Object

Obrigatório, nas operações que se beneficiam de incentivos fiscais existentes nas áreas sob controle da SUFRAMA. A omissão desta informação impede o processamento da operação pelo Sistema de Mercadoria Nacional da SUFRAMA e a liberação da Declaração de Ingresso, prejudicando a comprovação do ingresso / internamento da mercadoria nestas áreas. Min: 8 Max: 9



97
98
99
# File 'lib/br_nfe/product/nf_xml_value.rb', line 97

def nf_xml_value_inscricao_suframa v_suframa, xml_version=:v3_10
  only_numbers v_suframa, {min_size: 8, max_size: 9}
end

#nf_xml_value_ISSQN_incentivo_fiscal(value) ⇒ Object



249
250
251
# File 'lib/br_nfe/product/nf_xml_value.rb', line 249

def nf_xml_value_ISSQN_incentivo_fiscal value
  value ? 1 : 2
end

#nf_xml_value_monetary(value, xml_version = :v3_10) ⇒ Object



147
148
149
# File 'lib/br_nfe/product/nf_xml_value.rb', line 147

def nf_xml_value_monetary value, xml_version=:v3_10
  "%.2f" % value.to_f.round(2)
end

#nf_xml_value_NCM(ncm, xml_version = :v3_10) ⇒ Object



200
201
202
203
204
205
206
207
# File 'lib/br_nfe/product/nf_xml_value.rb', line 200

def nf_xml_value_NCM ncm, xml_version=:v3_10
  ncm = ncm.to_i
  if ncm > 0
    "#{ncm}".rjust(8, '0') 
  else
    "#{ncm}".rjust(2, '0') 
  end
end

#nf_xml_value_number(value, max_size, xml_version = :v3_10) ⇒ Object



221
222
223
# File 'lib/br_nfe/product/nf_xml_value.rb', line 221

def nf_xml_value_number value, max_size, xml_version=:v3_10
  only_numbers value, {max_size: max_size}
end

#nf_xml_value_number_fixed_size(value, size, xml_version = :v3_10) ⇒ Object



237
238
239
# File 'lib/br_nfe/product/nf_xml_value.rb', line 237

def nf_xml_value_number_fixed_size value, size, xml_version=:v3_10
  only_numbers value, {min_size: size, max_size: size}
end

#nf_xml_value_numero_recibo(value) ⇒ Object



253
254
255
# File 'lib/br_nfe/product/nf_xml_value.rb', line 253

def nf_xml_value_numero_recibo value
  only_numbers "#{value}".strip, max_size: 15
end

#nf_xml_value_NVE(value, xml_version = :v3_10) ⇒ Object



217
218
219
# File 'lib/br_nfe/product/nf_xml_value.rb', line 217

def nf_xml_value_NVE value, xml_version=:v3_10
  "#{value}".max_size(6)
end

#nf_xml_value_orgao_emissor(evento) ⇒ Object



257
258
259
260
261
262
263
264
265
266
267
# File 'lib/br_nfe/product/nf_xml_value.rb', line 257

def nf_xml_value_orgao_emissor evento
  if evento.codigo_orgao.present?
    evento.codigo_orgao
  else
    if gateway == :svan && evento.is_a?(BrNfe.cancelamento_product_class)
      91
    else
      "#{evento.chave_nfe}"[0..1]
    end
  end
end

#nf_xml_value_percent(value, xml_version = :v3_10) ⇒ Object



151
152
153
# File 'lib/br_nfe/product/nf_xml_value.rb', line 151

def nf_xml_value_percent value, xml_version=:v3_10
  "%.4f" % value.to_f.round(4)
end

#nf_xml_value_peso(value, xml_version = :v3_10) ⇒ Object



159
160
161
# File 'lib/br_nfe/product/nf_xml_value.rb', line 159

def nf_xml_value_peso value, xml_version=:v3_10
  "%.3f" % value.to_f.round(3)
end

#nf_xml_value_placa(placa, xml_version = :v3_10) ⇒ Object



171
172
173
# File 'lib/br_nfe/product/nf_xml_value.rb', line 171

def nf_xml_value_placa placa, xml_version=:v3_10
  "#{placa}".gsub(/[^\w]/,'').rjust(7, '0').max_size(7)
end

#nf_xml_value_quantidade(value, xml_version = :v3_10) ⇒ Object



155
156
157
# File 'lib/br_nfe/product/nf_xml_value.rb', line 155

def nf_xml_value_quantidade value, xml_version=:v3_10
  "%.4f" % value.to_f.round(4)
end

#nf_xml_value_RNTC(rntc, xml_version = :v3_10) ⇒ Object

Registro Nacional de Transportador de Carga (ANTT)



177
178
179
# File 'lib/br_nfe/product/nf_xml_value.rb', line 177

def nf_xml_value_RNTC rntc, xml_version=:v3_10
  nf_xml_value_text rntc, 20
end

#nf_xml_value_text(value, max = 60, xml_version = :v3_10) ⇒ Object



28
29
30
# File 'lib/br_nfe/product/nf_xml_value.rb', line 28

def nf_xml_value_text value, max=60, xml_version=:v3_10
  "#{value}".strip.max_size(max).br_nfe_escape_html.remove_accents.gsub(/\r\n/,' ').gsub(/\n/,' ')
end

#nf_xml_value_time(time, xml_version = :v3_10) ⇒ Object



133
134
135
136
137
# File 'lib/br_nfe/product/nf_xml_value.rb', line 133

def nf_xml_value_time time, xml_version=:v3_10
  if time.is_a?(Time) || time.is_a?(DateTime)
    time.strftime('%H:%M:%S')
  end
end

#nf_xml_value_tipo_ambiente(value, xml_version = :v3_10) ⇒ Object



7
8
9
# File 'lib/br_nfe/product/nf_xml_value.rb', line 7

def nf_xml_value_tipo_ambiente value, xml_version=:v3_10
  value == :production ? '1' : '2'
end

#nf_xml_value_UF(value, xml_version = :v3_10) ⇒ Object



36
37
38
# File 'lib/br_nfe/product/nf_xml_value.rb', line 36

def nf_xml_value_UF value, xml_version=:v3_10
  "#{value}".max_size(2)
end