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

wmixvideo / nfe / #9456

23 Jul 2026 08:27PM UTC coverage: 50.851% (-0.9%) from 51.794%
#9456

push

web-flow
Adiciona suporte ao CT-e Simplificado (tpCTe=5, NT 2024.002) (#1180)

* Adiciona suporte nativo ao CT-e Simplificado (tpCTe=5, NT 2024.002)
Implementa o Conhecimento de Transporte Eletrônico Simplificado (Ajuste
SINIEF 46/2023) como variante de modelo 57, seguindo o CT-e OS como molde
e a convenção de nomes = tags XML já usada no IBSCBS.
Classes de domínio (cte400/classes/simp/):
- CTeNotaSimp (raiz CTeSimp), CTeNotaSimpInfo, ...Identificacao, ...Tomador,
  ...Det (+ Comp, InfNFe, InfDocAnt, InfDocAntNFeParcial), ...Total
- Reutiliza emit, infModal, infCarga e imp do CT-e normal
- Raiz CTeSimp sem atributo versao (só infCte o possui)
Webservice e transporte:
- WSRecepcaoCTeSimp (assina infCte, GZip+Base64, síncrono sem lote)
- CTeRecepcaoSimpV4Stub — literais conferidos contra os WSDL reais de
  homologação de MT e SVRS (namespace, operação cteRecepcaoSimp, cteDadosMsg,
  cteRecepcaoSimpResult, soapAction)
- CTeSimpEnvioRetorno/...Dados e CTeSimpProcessado (cteSimpProc)
- Overload WSFacade.enviaCTe(CTeNotaSimp)
Autorizador e validação:
- CTAutorizador400.getCteRecepcaoSimp nos 8 autorizadores (produção +
  homologação); MT usa path atípico cte-ws/services/
- DFXMLValidador.validaNotaCteSimp400 (cteSimp_v4.00.xsd, RTC 1.14)
Teste:
- CTeNotaSimpTest faz round-trip serializa→valida contra o XSD; toda a
  estrutura de negócio valida (só falta Signature, aplicado no envio)

* Adiciona suporte nativo ao CT-e Simplificado (tpCTe=5, NT 2024.002)
Implementa o Conhecimento de Transporte Eletrônico Simplificado (Ajuste
SINIEF 46/2023) como variante de modelo 57, seguindo o CT-e OS como molde
e a convenção de nomes = tags XML já usada no IBSCBS.
Classes de domínio (cte400/classes/simp/):
- CTeNotaSimp (raiz CTeSimp), CTeNotaSimpInfo, ...Identificacao, ...Tomador,
  ...Det (+ Comp, InfNFe, InfDocAnt, InfDocAntNFeParcial), ...Total
- Reutiliza emit, infModal, infCarga e imp do CT-e normal
- Raiz CTeSimp sem atributo versao (só infCte o possui)
Webservice e transpor... (continued)

130 of 324 new or added lines in 15 files covered. (40.12%)

711 existing lines in 42 files now uncovered.

15094 of 29683 relevant lines covered (50.85%)

0.51 hits per line

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

63.54
/src/main/java/com/fincatto/documentofiscal/cte400/classes/simp/CTeNotaSimpInfoIdentificacao.java
1
package com.fincatto.documentofiscal.cte400.classes.simp;
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.cte.CTTipoEmissao;
8
import com.fincatto.documentofiscal.cte.CTeConfig;
9
import com.fincatto.documentofiscal.cte400.classes.CTModal;
10
import com.fincatto.documentofiscal.cte400.classes.CTProcessoEmissao;
11
import com.fincatto.documentofiscal.cte400.classes.CTRetirada;
12
import com.fincatto.documentofiscal.cte400.classes.CTTipoImpressao;
13
import com.fincatto.documentofiscal.cte400.classes.CTTipoServico;
14
import com.fincatto.documentofiscal.validadores.DFIntegerValidador;
15
import com.fincatto.documentofiscal.validadores.DFStringValidador;
16
import org.simpleframework.xml.Element;
17
import org.simpleframework.xml.Namespace;
18
import org.simpleframework.xml.Root;
19

20
import java.time.LocalDateTime;
21
import java.time.ZonedDateTime;
22

23
/**
24
 * Identificação do CT-e Simplificado (grupo ide).
25
 * Diferente do CT-e normal: tpCTe assume 5 (Simplificado) ou 6 (Substituição do
26
 * Simplificado); modal restrito a 01/02/03; município de início/fim da prestação
27
 * é informado por item no grupo det, não aqui.
28
 */
29
@Root(name = "ide")
30
@Namespace(reference = CTeConfig.NAMESPACE)
31
public class CTeNotaSimpInfoIdentificacao extends DFBase {
1✔
32
    private static final long serialVersionUID = 1L;
33

34
    @Element(name = "cUF")
35
    private DFUnidadeFederativa cUF;
36

37
    @Element(name = "cCT")
38
    private String cCT;
39

40
    @Element(name = "CFOP")
41
    private String CFOP;
42

43
    @Element(name = "natOp")
44
    private String natOp;
45

46
    @Element(name = "mod")
47
    private DFModelo mod;
48

49
    @Element(name = "serie")
50
    private Integer serie;
51

52
    @Element(name = "nCT")
53
    private Integer nCT;
54

55
    @Element(name = "dhEmi")
56
    private ZonedDateTime dhEmi;
57

58
    @Element(name = "tpImp")
59
    private CTTipoImpressao tpImp;
60

61
    @Element(name = "tpEmis")
62
    private CTTipoEmissao tpEmis;
63

64
    @Element(name = "cDV")
65
    private Integer cDV;
66

67
    @Element(name = "tpAmb")
68
    private DFAmbiente tpAmb;
69

70
    @Element(name = "tpCTe")
71
    private String tpCTe;
72

73
    @Element(name = "procEmi")
74
    private CTProcessoEmissao procEmi;
75

76
    @Element(name = "verProc")
77
    private String verProc;
78

79
    @Element(name = "cMunEnv")
80
    private String cMunEnv;
81

82
    @Element(name = "xMunEnv")
83
    private String xMunEnv;
84

85
    @Element(name = "UFEnv")
86
    private String UFEnv;
87

88
    @Element(name = "modal")
89
    private CTModal modal;
90

91
    @Element(name = "tpServ")
92
    private CTTipoServico tpServ;
93

94
    @Element(name = "UFIni")
95
    private String UFIni;
96

97
    @Element(name = "UFFim")
98
    private String UFFim;
99

100
    @Element(name = "retira")
101
    private CTRetirada retira;
102

103
    @Element(name = "xDetRetira", required = false)
104
    private String xDetRetira;
105

106
    @Element(name = "dhCont", required = false)
107
    private LocalDateTime dhCont;
108

109
    @Element(name = "xJust", required = false)
110
    private String xJust;
111

112
    public DFUnidadeFederativa getCUF() {
NEW
113
        return this.cUF;
×
114
    }
115

116
    /**
117
     * Código da UF do emitente do CT-e.
118
     */
119
    public void setCUF(final DFUnidadeFederativa cUF) {
120
        this.cUF = cUF;
1✔
121
    }
1✔
122

123
    public String getCCT() {
NEW
124
        return this.cCT;
×
125
    }
126

127
    /**
128
     * Código numérico que compõe a Chave de Acesso.
129
     */
130
    public void setCCT(final String cCT) {
131
        DFStringValidador.exatamente8N(cCT, "Codigo Numerico");
1✔
132
        this.cCT = cCT;
1✔
133
    }
1✔
134

135
    public String getCFOP() {
NEW
136
        return this.CFOP;
×
137
    }
138

139
    /**
140
     * Código Fiscal de Operações e Prestações
141
     */
142
    public void setCFOP(final String CFOP) {
143
        DFStringValidador.exatamente4N(CFOP, "CFOP");
1✔
144
        this.CFOP = CFOP;
1✔
145
    }
1✔
146

147
    public String getNatOp() {
NEW
148
        return this.natOp;
×
149
    }
150

151
    /**
152
     * Natureza da Operação
153
     */
154
    public void setNatOp(final String natOp) {
155
        DFStringValidador.tamanho2ate60(natOp, "Natureza da Operacao");
1✔
156
        this.natOp = natOp;
1✔
157
    }
1✔
158

159
    public DFModelo getMod() {
NEW
160
        return this.mod;
×
161
    }
162

163
    /**
164
     * Modelo do documento fiscal (código 57 para o CT-e).
165
     */
166
    public void setMod(final DFModelo mod) {
167
        this.mod = mod;
1✔
168
    }
1✔
169

170
    public Integer getSerie() {
NEW
171
        return this.serie;
×
172
    }
173

174
    /**
175
     * Série do CT-e
176
     */
177
    public void setSerie(final Integer serie) {
178
        DFIntegerValidador.tamanho3(serie, "Serie");
1✔
179
        this.serie = serie;
1✔
180
    }
1✔
181

182
    public Integer getNCT() {
NEW
183
        return this.nCT;
×
184
    }
185

186
    /**
187
     * Número do CT-e
188
     */
189
    public void setNCT(final Integer nCT) {
190
        DFIntegerValidador.tamanho9(nCT, "Numero");
1✔
191
        this.nCT = nCT;
1✔
192
    }
1✔
193

194
    public ZonedDateTime getDhEmi() {
NEW
195
        return this.dhEmi;
×
196
    }
197

198
    /**
199
     * Data e hora de emissão do CT-e (AAAA-MM-DDTHH:MM:DD TZD)
200
     */
201
    public void setDhEmi(final ZonedDateTime dhEmi) {
202
        this.dhEmi = dhEmi;
1✔
203
    }
1✔
204

205
    public CTTipoImpressao getTpImp() {
NEW
206
        return this.tpImp;
×
207
    }
208

209
    /**
210
     * Formato de impressão do DACTE (1 - Retrato; 2 - Paisagem).
211
     */
212
    public void setTpImp(final CTTipoImpressao tpImp) {
213
        this.tpImp = tpImp;
1✔
214
    }
1✔
215

216
    public CTTipoEmissao getTpEmis() {
NEW
217
        return this.tpEmis;
×
218
    }
219

220
    /**
221
     * Forma de emissão do CT-e (1 - Normal; 3 - Regime Especial NFF; 4 - EPEC SVC;
222
     * 7 - SVC-RS; 8 - SVC-SP).
223
     */
224
    public void setTpEmis(final CTTipoEmissao tpEmis) {
225
        this.tpEmis = tpEmis;
1✔
226
    }
1✔
227

228
    public Integer getCDV() {
NEW
229
        return this.cDV;
×
230
    }
231

232
    /**
233
     * Dígito Verificador da chave de acesso do CT-e
234
     */
235
    public void setCDV(final Integer cDV) {
236
        DFIntegerValidador.exatamente1(cDV, "DV");
1✔
237
        this.cDV = cDV;
1✔
238
    }
1✔
239

240
    public DFAmbiente getTpAmb() {
NEW
241
        return this.tpAmb;
×
242
    }
243

244
    /**
245
     * Tipo do Ambiente (1 - Produção; 2 - Homologação).
246
     */
247
    public void setTpAmb(final DFAmbiente tpAmb) {
248
        this.tpAmb = tpAmb;
1✔
249
    }
1✔
250

251
    public String getTpCTe() {
NEW
252
        return this.tpCTe;
×
253
    }
254

255
    /**
256
     * Tipo do CT-e Simplificado. Preencher com: 5 - CT-e Simplificado;
257
     * 6 - Substituição do CT-e Simplificado.
258
     */
259
    public void setTpCTe(final String tpCTe) {
260
        DFStringValidador.exatamente1(tpCTe, "Tipo do CT-e Simplificado");
1✔
261
        if (!"5".equals(tpCTe) && !"6".equals(tpCTe)) {
1✔
NEW
262
            throw new IllegalStateException("Tipo do CT-e Simplificado deve ser 5 (Simplificado) ou 6 (Substituicao)");
×
263
        }
264
        this.tpCTe = tpCTe;
1✔
265
    }
1✔
266

267
    public CTProcessoEmissao getProcEmi() {
NEW
268
        return this.procEmi;
×
269
    }
270

271
    /**
272
     * Identificador do processo de emissão do CT-e
273
     */
274
    public void setProcEmi(final CTProcessoEmissao procEmi) {
275
        this.procEmi = procEmi;
1✔
276
    }
1✔
277

278
    public String getVerProc() {
NEW
279
        return this.verProc;
×
280
    }
281

282
    /**
283
     * Versão do processo de emissão
284
     */
285
    public void setVerProc(final String verProc) {
286
        DFStringValidador.tamanho20(verProc, "Versao Aplicativo Emissor");
1✔
287
        this.verProc = verProc;
1✔
288
    }
1✔
289

290
    public String getCMunEnv() {
NEW
291
        return this.cMunEnv;
×
292
    }
293

294
    /**
295
     * Código do Município de envio do CT-e (tabela IBGE; 9999999 para o exterior).
296
     */
297
    public void setCMunEnv(final String cMunEnv) {
298
        DFStringValidador.exatamente7N(cMunEnv, "Codigo do Municipio de envio do CT-e");
1✔
299
        this.cMunEnv = cMunEnv;
1✔
300
    }
1✔
301

302
    public String getXMunEnv() {
NEW
303
        return this.xMunEnv;
×
304
    }
305

306
    /**
307
     * Nome do Município de envio do CT-e.
308
     */
309
    public void setXMunEnv(final String xMunEnv) {
310
        DFStringValidador.tamanho2ate60(xMunEnv, "Nome do Municipio de envio do CT-e");
1✔
311
        this.xMunEnv = xMunEnv;
1✔
312
    }
1✔
313

314
    public String getUFEnv() {
NEW
315
        return this.UFEnv;
×
316
    }
317

318
    /**
319
     * Sigla da UF de envio do CT-e ('EX' para operações com o exterior).
320
     */
321
    public void setUFEnv(final String UFEnv) {
322
        DFStringValidador.exatamente2(UFEnv, "Sigla da UF de envio do CT-e");
1✔
323
        this.UFEnv = UFEnv;
1✔
324
    }
1✔
325

326
    public CTModal getModal() {
NEW
327
        return this.modal;
×
328
    }
329

330
    /**
331
     * Modal (01 - Rodoviário; 02 - Aéreo; 03 - Aquaviário).
332
     */
333
    public void setModal(final CTModal modal) {
334
        this.modal = modal;
1✔
335
    }
1✔
336

337
    public CTTipoServico getTpServ() {
NEW
338
        return this.tpServ;
×
339
    }
340

341
    /**
342
     * Tipo do Serviço (0 - Normal; 1 - Subcontratação; 2 - Redespacho).
343
     */
344
    public void setTpServ(final CTTipoServico tpServ) {
345
        this.tpServ = tpServ;
1✔
346
    }
1✔
347

348
    public String getUFIni() {
NEW
349
        return this.UFIni;
×
350
    }
351

352
    /**
353
     * UF do início da prestação ('EX' para operações com o exterior).
354
     */
355
    public void setUFIni(final String UFIni) {
356
        DFStringValidador.exatamente2(UFIni, "UF do inicio da prestacao");
1✔
357
        this.UFIni = UFIni;
1✔
358
    }
1✔
359

360
    public String getUFFim() {
NEW
361
        return this.UFFim;
×
362
    }
363

364
    /**
365
     * UF do término da prestação ('EX' para operações com o exterior).
366
     */
367
    public void setUFFim(final String UFFim) {
368
        DFStringValidador.exatamente2(UFFim, "UF do termino da prestacao");
1✔
369
        this.UFFim = UFFim;
1✔
370
    }
1✔
371

372
    public CTRetirada getRetira() {
NEW
373
        return this.retira;
×
374
    }
375

376
    /**
377
     * Indicador se o Recebedor retira no Aeroporto/Filial/Porto/Estação de Destino
378
     * (0 - sim; 1 - não).
379
     */
380
    public void setRetira(final CTRetirada retira) {
381
        this.retira = retira;
1✔
382
    }
1✔
383

384
    public String getXDetRetira() {
NEW
385
        return this.xDetRetira;
×
386
    }
387

388
    /**
389
     * Detalhes da retirada
390
     */
391
    public void setXDetRetira(final String xDetRetira) {
NEW
392
        DFStringValidador.tamanho160(xDetRetira, "Detalhes da retirada");
×
NEW
393
        this.xDetRetira = xDetRetira;
×
NEW
394
    }
×
395

396
    public LocalDateTime getDhCont() {
NEW
397
        return this.dhCont;
×
398
    }
399

400
    /**
401
     * Data e Hora da entrada em contingência (AAAA-MM-DDTHH:MM:SS).
402
     */
403
    public void setDhCont(final LocalDateTime dhCont) {
NEW
404
        this.dhCont = dhCont;
×
NEW
405
    }
×
406

407
    public String getXJust() {
NEW
408
        return this.xJust;
×
409
    }
410

411
    /**
412
     * Justificativa da entrada em contingência
413
     */
414
    public void setXJust(final String xJust) {
NEW
415
        DFStringValidador.tamanho15a256(xJust, "Justificativa da entrada em contingencia");
×
NEW
416
        this.xJust = xJust;
×
NEW
417
    }
×
418
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc