• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

wmixvideo / nfe / #9348

07 Jul 2026 02:20PM UTC coverage: 50.838% (+23.8%) from 26.996%
#9348

push

web-flow
Nt2020.005 (#1175)

* Implementação de serviço de recepção síncrono do MDF-e (MDFeRecepcaoSinc). Serviços Assíncronos serão desativados na data de 30 de Junho de 2024 conforme versa a NT 2024.001.

* Revert "Implementação de serviço de recepção síncrono do MDF-e (MDFeRecepcaoSinc). Serviços Assíncronos serão desativados na data de 30 de Junho de 2024 conforme versa a NT 2024.001."

This reverts commit d597f6919.

* Atualização dos schemas e campos conforme NT2023.004.

* Correção da Tag DFeReferenciado e adicionado validação para chave de acesso.

* Corrigindo a estrutura da Classe TCIBS - faltava o field vIBS.

Adiciondo static nas inner class para possibilitar a desserialização do xml do CT-e.

* Correção do set que deve ser um BigDecimal.

* Adequa campos nDI, nAdicao, nSeqAdic e nDraw à NT 2020.005 v1.21

Ajustes no grupo I01 (Declaração de Importação) do NFe 4.00 conforme
Nota Técnica 2020.005 v1.21 (seções 2.1.2, 2.1.8 e 3.2 do leiaute):

- nDI (I19): tamanho máximo alterado de 12 para 15 caracteres.
- nAdicao (I26): campo passa de obrigatório (1-1) para opcional (0-1),
  já que não deve ser preenchido no caso de DUImp.
- nSeqAdic (I27): tamanho máximo alterado de 3 para 5 dígitos.
- nDraw (I29a / I51 - detExport): campo deixa de ser numérico e passa
  a ser alfanumérico, com tamanho máximo de 20 caracteres (antes,
  numérico com até 11 dígitos).

Classes alteradas:
- NFNotaInfoItemProdutoDeclaracaoImportacao (nDI)
- NFNotaInfoItemProdutoDeclaracaoImportacaoAdicao (nAdicao, nSeqAdic, nDraw)
- NFNotaInfoItemDetalheExportacao (nDraw)
- DFIntegerValidador (novo método tamanho5)

Testes unitários correspondentes atualizados para refletir os novos
limites e a mudança de tipo do campo nDraw (BigInteger -> String).

---------

Co-authored-by: ediva <ediva@emsnote5>
Co-authored-by: Walter Portugal <walter@softlandsistemas.com.br>

10 of 10 new or added lines in 5 files covered. (100.0%)

2949 existing lines in 402 files now uncovered.

14927 of 29362 relevant lines covered (50.84%)

0.51 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

69.52
/src/main/java/com/fincatto/documentofiscal/nfe400/classes/nota/NFNotaInfoIdentificacao.java
1
package com.fincatto.documentofiscal.nfe400.classes.nota;
2

3
import com.fincatto.documentofiscal.DFAmbiente;
4
import com.fincatto.documentofiscal.DFBase;
5
import com.fincatto.documentofiscal.DFModelo;
6
import com.fincatto.documentofiscal.DFUnidadeFederativa;
7
import com.fincatto.documentofiscal.nfe.NFTipoEmissao;
8
import com.fincatto.documentofiscal.nfe400.classes.NFCredito;
9
import com.fincatto.documentofiscal.nfe400.classes.NFDebito;
10
import com.fincatto.documentofiscal.nfe400.classes.NFFinalidade;
11
import com.fincatto.documentofiscal.nfe400.classes.NFProcessoEmissor;
12
import com.fincatto.documentofiscal.nfe400.classes.NFTipo;
13
import com.fincatto.documentofiscal.nfe400.classes.NFTipoImpressao;
14
import com.fincatto.documentofiscal.validadores.DFIntegerValidador;
15
import com.fincatto.documentofiscal.validadores.DFListValidador;
16
import com.fincatto.documentofiscal.validadores.DFStringValidador;
17
import java.time.LocalDate;
18
import java.time.ZonedDateTime;
19
import java.util.List;
20
import org.apache.commons.lang3.StringUtils;
21
import org.simpleframework.xml.Element;
22
import org.simpleframework.xml.ElementList;
23

24
public class NFNotaInfoIdentificacao extends DFBase {
1✔
25
    private static final long serialVersionUID = -2568396066960865875L;
26

27
    @Element(name = "cUF")
28
    private DFUnidadeFederativa uf;
29

30
    @Element(name = "cNF")
31
    private String codigoRandomico;
32

33
    @Element(name = "natOp")
34
    private String naturezaOperacao;
35

36
    @Element(name = "mod")
37
    private DFModelo modelo;
38

39
    @Element(name = "serie")
40
    private String serie;
41

42
    @Element(name = "nNF")
43
    private String numeroNota;
44

45
    @Element(name = "dhEmi")
46
    private ZonedDateTime dataHoraEmissao;
47

48
    @Element(name = "dhSaiEnt", required = false)
49
    private ZonedDateTime dataHoraSaidaOuEntrada;
50

51
    @Element(name = "tpNF")
52
    private NFTipo tipo;
53

54
    @Element(name = "idDest")
55
    private NFIdentificadorLocalDestinoOperacao identificadorLocalDestinoOperacao;
56

57
    @Element(name = "cMunFG")
58
    private String codigoMunicipio; // B12
59
    
60
    @Element(required = false)
61
    private String cMunFGIBS; // B12a
62

63
    @Element(name = "tpImp")
64
    private NFTipoImpressao tipoImpressao;
65

66
    @Element(name = "tpEmis")
67
    private NFTipoEmissao tipoEmissao;
68

69
    @Element(name = "cDV")
70
    private Integer digitoVerificador;
71

72
    @Element(name = "tpAmb")
73
    private DFAmbiente ambiente;
74

75
    @Element(name = "finNFe")
76
    private NFFinalidade finalidade; // B25
77
    
78
    @Element(name = "tpNFDebito", required = false)    
79
    private NFDebito tpNFDebito; // B25.1
80
    
81
    @Element(name = "tpNFCredito",required = false)
82
    private NFCredito tpNFCredito; // B25.2
83

84
    @Element(name = "indFinal")
85
    private NFOperacaoConsumidorFinal operacaoConsumidorFinal; // B25a
86

87
    @Element(name = "indPres")
88
    private NFIndicadorPresencaComprador indicadorPresencaComprador; // B25b
89

90
    @Element(name = "indIntermed", required = false)
91
    private NFIndicadorIntermediador indIntermed; // B25c
92
    
93
    @Element(name = "procEmi")
94
    private NFProcessoEmissor programaEmissor;
95

96
    @Element(name = "verProc")
97
    private String versaoEmissor;
98

99
    @Element(name = "dhCont", required = false)
100
    private ZonedDateTime dataHoraContigencia;
101

102
    @Element(name = "xJust", required = false)
103
    private String justificativaEntradaContingencia;
104

105
    @ElementList(entry = "NFref", inline = true, required = false)
106
    private List<NFInfoReferenciada> referenciadas;
107
    
108
    @Element(name = "gCompraGov", required = false)
109
    private NFNotaInfoIdentificacaoCompraGov gCompraGov; // B31
110
    
111
    @Element(name = "gPagAntecipado", required = false)
112
    private NFNotaInfoIdentificacaoPagAntecipado gPagAntecipado; // BB01
113

114
    /**
115
     * B10a - Data da previsão de entrega ou disponibilização do bem
116
     */
117
    @Element(name = "dPrevEntrega", required = false)
118
    private LocalDate dataPrevistaEntrega;
119

120
    public void setUf(final DFUnidadeFederativa uf) {
121
        this.uf = uf;
1✔
122
    }
1✔
123

124
    public void setCodigoRandomico(final String codigoRandomico) {
125
        DFStringValidador.exatamente8(codigoRandomico, "Codigo Randomico");
1✔
126
        DFStringValidador.validaCodigoRandomico(codigoRandomico, "Codigo Randomico");
1✔
127
        if(StringUtils.isNotBlank(numeroNota) && StringUtils.equals(numeroNota.substring(1), codigoRandomico)){
1✔
128
            throw new IllegalStateException(String.format("N\u00FAmero da nota(%s) e c\u00F3digo(%s) n\u00E3o podem ser iguais", numeroNota.substring(1), codigoRandomico));
1✔
129
        }
130
        this.codigoRandomico = codigoRandomico;
1✔
131
    }
1✔
132

133
    public void setNaturezaOperacao(final String naturezaOperacao) {
134
        DFStringValidador.tamanho60(naturezaOperacao, "Natureza da Operacao");
1✔
135
        this.naturezaOperacao = naturezaOperacao;
1✔
136
    }
1✔
137

138
    public void setModelo(final DFModelo modelo) {
139
        this.modelo = modelo;
1✔
140
    }
1✔
141

142
    public void setSerie(final String serie) {
143
        DFStringValidador.validador(serie, "Serie", 3, false, true);
1✔
144
        this.serie = serie;
1✔
145
    }
1✔
146

147
    public void setNumeroNota(final String numeroNota) {
148
        DFStringValidador.tamanho9(numeroNota, "Numero da Nota");
1✔
149
        if(StringUtils.isNotBlank(codigoRandomico) && StringUtils.equals(numeroNota.substring(1), codigoRandomico)){
1✔
150
            throw new IllegalStateException(String.format("N\u00FAmero da nota(%s) e c\u00F3digo(%s) n\u00E3o podem ser iguais", numeroNota.substring(1), codigoRandomico));
1✔
151
        }
152
        this.numeroNota = numeroNota;
1✔
153
    }
1✔
154

155
    public void setDataHoraEmissao(final ZonedDateTime dataEmissao) {
156
        this.dataHoraEmissao = dataEmissao;
1✔
157
    }
1✔
158

159
    public void setDataHoraSaidaOuEntrada(final ZonedDateTime dataHoraSaidaOuEntrada) {
160
        this.dataHoraSaidaOuEntrada = dataHoraSaidaOuEntrada;
1✔
161
    }
1✔
162

163
    public void setTipo(final NFTipo tipo) {
164
        this.tipo = tipo;
1✔
165
    }
1✔
166

167
    public void setCodigoMunicipio(final String codigoMunicipio) {
168
        DFStringValidador.exatamente7N(codigoMunicipio, "Codigo Municipio");
1✔
169
        this.codigoMunicipio = codigoMunicipio;
1✔
170
    }
1✔
171

172
    public void setCMunFGIBS(String cMunFGIBS) {
UNCOV
173
       this.cMunFGIBS = cMunFGIBS;
×
UNCOV
174
    }
×
175

176
    public void setReferenciadas(final List<NFInfoReferenciada> referenciadas) {
177
        DFListValidador.tamanho500(referenciadas, "Referenciadas");
1✔
178
        this.referenciadas = referenciadas;
1✔
179
    }
1✔
180

181
    public NFNotaInfoIdentificacaoCompraGov getGCompraGov() {
UNCOV
182
        return gCompraGov;
×
183
    }
184

185
    public NFNotaInfoIdentificacaoPagAntecipado getGPagAntecipado() {
UNCOV
186
       return gPagAntecipado;
×
187
    }
188
    
189
    public void setTipoImpressao(final NFTipoImpressao tipoImpressao) {
190
        this.tipoImpressao = tipoImpressao;
1✔
191
    }
1✔
192

193
    public void setTipoEmissao(final NFTipoEmissao tipoEmissao) {
194
        this.tipoEmissao = tipoEmissao;
1✔
195
    }
1✔
196

197
    public void setDigitoVerificador(final Integer digitoVerificador) {
198
        DFIntegerValidador.exatamente1(digitoVerificador, "DV");
1✔
199
        this.digitoVerificador = digitoVerificador;
1✔
200
    }
1✔
201

202
    public void setAmbiente(final DFAmbiente ambiente) {
203
        this.ambiente = ambiente;
1✔
204
    }
1✔
205

206
    public void setFinalidade(final NFFinalidade finalidade) {
207
        this.finalidade = finalidade;
1✔
208
    }
1✔
209

210
    public NFDebito getTpNFDebito() {
UNCOV
211
       return tpNFDebito;
×
212
    }
213

214
    public NFCredito getTpNFCredito() {
UNCOV
215
        return tpNFCredito;
×
216
    }
217

218
    public void setProgramaEmissor(final NFProcessoEmissor programaEmissor) {
219
        this.programaEmissor = programaEmissor;
1✔
220
    }
1✔
221

222
    public void setVersaoEmissor(final String versaoEmissor) {
223
        DFStringValidador.tamanho20(versaoEmissor, "Versao Emissor");
1✔
224
        this.versaoEmissor = versaoEmissor;
1✔
225
    }
1✔
226

227
    public void setDataHoraContigencia(final ZonedDateTime dataHoraContigencia) {
228
        this.dataHoraContigencia = dataHoraContigencia;
1✔
229
    }
1✔
230

231
    public void setJustificativaEntradaContingencia(final String justificativaEntradaContingencia) {
232
        DFStringValidador.tamanho15a256(justificativaEntradaContingencia, "Justificativa Entrada Contingencia");
1✔
233
        this.justificativaEntradaContingencia = justificativaEntradaContingencia;
1✔
234
    }
1✔
235

236
    public void setIdentificadorLocalDestinoOperacao(final NFIdentificadorLocalDestinoOperacao identificadorLocalDestinoOperacao) {
237
        this.identificadorLocalDestinoOperacao = identificadorLocalDestinoOperacao;
1✔
238
    }
1✔
239

240
    public void setOperacaoConsumidorFinal(final NFOperacaoConsumidorFinal operacaoConsumidorFinal) {
241
        this.operacaoConsumidorFinal = operacaoConsumidorFinal;
1✔
242
    }
1✔
243

244
    public void setIndicadorPresencaComprador(final NFIndicadorPresencaComprador indicadorPresencaComprador) {
245
        this.indicadorPresencaComprador = indicadorPresencaComprador;
1✔
246
    }
1✔
247

248
        public void setIndIntermed(final NFIndicadorIntermediador indIntermed) {
249
                this.indIntermed = indIntermed;
1✔
250
        }
1✔
251
        
252
    public DFUnidadeFederativa getUf() {
253
        return this.uf;
1✔
254
    }
255

256
    public String getCodigoRandomico() {
257
        return this.codigoRandomico;
1✔
258
    }
259

260
    public String getNaturezaOperacao() {
UNCOV
261
        return this.naturezaOperacao;
×
262
    }
263

264
    public DFModelo getModelo() {
265
        return this.modelo;
1✔
266
    }
267

268
    public String getSerie() {
269
        return this.serie;
1✔
270
    }
271

272
    public String getNumeroNota() {
273
        return this.numeroNota;
1✔
274
    }
275

276
    public ZonedDateTime getDataHoraEmissao() {
277
        return this.dataHoraEmissao;
1✔
278
    }
279

280
    public ZonedDateTime getDataHoraSaidaOuEntrada() {
UNCOV
281
        return this.dataHoraSaidaOuEntrada;
×
282
    }
283

284
    public NFTipo getTipo() {
285
        return this.tipo;
1✔
286
    }
287

288
    public NFIdentificadorLocalDestinoOperacao getIdentificadorLocalDestinoOperacao() {
289
        return this.identificadorLocalDestinoOperacao;
1✔
290
    }
291

292
    public String getCodigoMunicipio() {
UNCOV
293
        return this.codigoMunicipio;
×
294
    }
295

296
    public String getCMunFGIBS() {
UNCOV
297
        return cMunFGIBS;
×
298
    }
299
    
300
    public NFTipoImpressao getTipoImpressao() {
UNCOV
301
        return this.tipoImpressao;
×
302
    }
303

304
    public NFTipoEmissao getTipoEmissao() {
305
        return this.tipoEmissao;
1✔
306
    }
307

308
    public Integer getDigitoVerificador() {
UNCOV
309
        return this.digitoVerificador;
×
310
    }
311

312
    public DFAmbiente getAmbiente() {
UNCOV
313
        return this.ambiente;
×
314
    }
315

316
    public NFFinalidade getFinalidade() {
UNCOV
317
        return this.finalidade;
×
318
    }
319

320
    public void setTpNFDebito(NFDebito tpNFDebito) {
UNCOV
321
        this.tpNFDebito = tpNFDebito;
×
UNCOV
322
    }
×
323
    
324
    public void setTpNFCredito(NFCredito tpNFCredito) {
UNCOV
325
        this.tpNFCredito = tpNFCredito;
×
UNCOV
326
    }
×
327
    
328
    public NFOperacaoConsumidorFinal getOperacaoConsumidorFinal() {
329
        return this.operacaoConsumidorFinal;
1✔
330
    }
331

332
    public NFIndicadorPresencaComprador getIndicadorPresencaComprador() {
UNCOV
333
        return this.indicadorPresencaComprador;
×
334
    }
335
    
336
    public NFIndicadorIntermediador getIndIntermed() {
UNCOV
337
                return indIntermed;
×
338
        }
339

340
    public NFProcessoEmissor getProgramaEmissor() {
UNCOV
341
        return this.programaEmissor;
×
342
    }
343

344
    public String getVersaoEmissor() {
UNCOV
345
        return this.versaoEmissor;
×
346
    }
347

348
    public ZonedDateTime getDataHoraContigencia() {
UNCOV
349
        return this.dataHoraContigencia;
×
350
    }
351

352
    public String getJustificativaEntradaContingencia() {
UNCOV
353
        return this.justificativaEntradaContingencia;
×
354
    }
355

356
    public List<NFInfoReferenciada> getReferenciadas() {
UNCOV
357
        return this.referenciadas;
×
358
    }
359
    
360
    public void setGCompraGov(NFNotaInfoIdentificacaoCompraGov gCompraGov) {
UNCOV
361
       this.gCompraGov = gCompraGov;
×
UNCOV
362
    }
×
363
    
364
    public void setGPagAntecipado(NFNotaInfoIdentificacaoPagAntecipado gPagAntecipado) {
UNCOV
365
        this.gPagAntecipado = gPagAntecipado;
×
UNCOV
366
    }
×
367

368
    public LocalDate getDataPrevistaEntrega() {
UNCOV
369
        return dataPrevistaEntrega;
×
370
    }
371

372
    public void setDataPrevistaEntrega(LocalDate dataPrevistaEntrega) {
UNCOV
373
        this.dataPrevistaEntrega = dataPrevistaEntrega;
×
UNCOV
374
    }
×
375
        
376
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc