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

wmixvideo / nfe / #7126

09 Aug 2016 11:45AM UTC coverage: 78.549% (-0.6%) from 79.109%
#7126

push

travis-ci

jefperito
Corrigido erro de javadoc

Erro corrigido: Exit code: 1 -
/home/travis/build/wmixvideo/nfe/src/main/java/com/fincatto/nfe310/class
es/NFAutorizador31.java:93: error: bad use of '>'

14 of 14 new or added lines in 1 file covered. (100.0%)

321 existing lines in 19 files now uncovered.

4764 of 6065 relevant lines covered (78.55%)

50.43 hits per line

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

0.0
/src/main/java/com/fincatto/nfe310/webservices/WSLoteEnvio.java
1
package com.fincatto.nfe310.webservices;
2

3
import com.fincatto.nfe310.NFeConfig;
4
import com.fincatto.nfe310.assinatura.AssinaturaDigital;
5
import com.fincatto.nfe310.classes.NFAutorizador31;
6
import com.fincatto.nfe310.classes.NFModelo;
7
import com.fincatto.nfe310.classes.NFUnidadeFederativa;
8
import com.fincatto.nfe310.classes.lote.envio.NFLoteEnvio;
9
import com.fincatto.nfe310.classes.lote.envio.NFLoteEnvioRetorno;
10
import com.fincatto.nfe310.classes.lote.envio.NFLoteEnvioRetornoDados;
11
import com.fincatto.nfe310.classes.nota.NFNota;
12
import com.fincatto.nfe310.classes.nota.NFNotaInfoSuplementar;
13
import com.fincatto.nfe310.parsers.NotaParser;
14
import com.fincatto.nfe310.persister.NFPersister;
15
import com.fincatto.nfe310.utils.NFGeraChave;
16
import com.fincatto.nfe310.utils.NFGeraQRCode;
17
import com.fincatto.nfe310.validadores.xsd.XMLValidador;
18
import com.fincatto.nfe310.webservices.gerado.NfeAutorizacaoStub;
19
import com.fincatto.nfe310.webservices.gerado.NfeAutorizacaoStub.NfeAutorizacaoLoteResult;
20
import com.fincatto.nfe310.webservices.gerado.NfeAutorizacaoStub.NfeCabecMsg;
21
import com.fincatto.nfe310.webservices.gerado.NfeAutorizacaoStub.NfeCabecMsgE;
22
import com.fincatto.nfe310.webservices.gerado.NfeAutorizacaoStub.NfeDadosMsg;
23
import org.apache.axiom.om.OMElement;
24
import org.apache.axiom.om.util.AXIOMUtil;
25
import org.apache.commons.lang3.StringUtils;
26
import org.slf4j.Logger;
27
import org.slf4j.LoggerFactory;
28

29
import javax.xml.stream.XMLStreamException;
30
import java.util.Iterator;
31

32
class WSLoteEnvio {
33

34
    private static final String NFE_ELEMENTO = "NFe";
UNCOV
35
    private static final Logger LOGGER = LoggerFactory.getLogger(WSLoteEnvio.class);
×
36
    private final NFeConfig config;
37

38
    WSLoteEnvio(final NFeConfig config) {
×
39
        this.config = config;
×
UNCOV
40
    }
×
41

42
    NFLoteEnvioRetorno enviaLoteAssinado(final String loteAssinadoXml, final NFModelo modelo) throws Exception {
UNCOV
43
        return this.comunicaLote(loteAssinadoXml, modelo);
×
44
    }
45

46
    NFLoteEnvioRetornoDados enviaLote(final NFLoteEnvio lote) throws Exception {
47
        // adiciona a chave e o dv antes de assinar
48
        for (final NFNota nota : lote.getNotas()) {
×
49
            final NFGeraChave geraChave = new NFGeraChave(nota);
×
50
            nota.getInfo().getIdentificacao().setCodigoRandomico(StringUtils.defaultIfBlank(nota.getInfo().getIdentificacao().getCodigoRandomico(), geraChave.geraCodigoRandomico()));
×
51
            nota.getInfo().getIdentificacao().setDigitoVerificador(geraChave.getDV());
×
52
            nota.getInfo().setIdentificador(geraChave.getChaveAcesso());
×
UNCOV
53
        }
×
54

55
        // assina o lote
56
        final String documentoAssinado = new AssinaturaDigital(this.config).assinarDocumento(lote.toString());
×
UNCOV
57
        final NFLoteEnvio loteAssinado = new NotaParser().loteParaObjeto(documentoAssinado);
×
58

59
        // verifica se nao tem NFCe junto com NFe no lote e gera qrcode (apos assinar mesmo, eh assim)
60
        int qtdNF = 0, qtdNFC = 0;
×
61
        for (final NFNota nota : loteAssinado.getNotas()) {
×
UNCOV
62
            switch (nota.getInfo().getIdentificacao().getModelo()) {
×
63
                case NFE:
64
                    qtdNF++;
×
UNCOV
65
                    break;
×
66
                case NFCE:
67
                    final NFGeraQRCode geraQRCode = new NFGeraQRCode(nota, this.config);
×
68
                    nota.setInfoSuplementar(new NFNotaInfoSuplementar());
×
69
                    nota.getInfoSuplementar().setQrCode(geraQRCode.getQRCode());
×
70
                    qtdNFC++;
×
UNCOV
71
                    break;
×
72
                default:
UNCOV
73
                    throw new IllegalArgumentException(String.format("Modelo de nota desconhecida: %s", nota.getInfo().getIdentificacao().getModelo()));
×
74
            }
UNCOV
75
        }
×
76

77
        // verifica se todas as notas do lote sao do mesmo modelo
78
        if ((qtdNF > 0) && (qtdNFC > 0)) {
×
UNCOV
79
            throw new IllegalArgumentException("Lote contendo notas de modelos diferentes!");
×
80
        }
81

82
        // guarda o modelo das notas
UNCOV
83
        final NFModelo modelo = qtdNFC > 0 ? NFModelo.NFCE : NFModelo.NFE;
×
84

85
        // comunica o lote
86
        final NFLoteEnvioRetorno loteEnvioRetorno = this.comunicaLote(loteAssinado.toString(), modelo);
×
UNCOV
87
        return new NFLoteEnvioRetornoDados(loteEnvioRetorno, loteAssinado);
×
88
    }
89

90
    private NFLoteEnvioRetorno comunicaLote(final String loteAssinadoXml, final NFModelo modelo) throws Exception {
91
        //valida o lote assinado, para verificar se o xsd foi satisfeito, antes de comunicar com a sefaz
UNCOV
92
        XMLValidador.validaLote(loteAssinadoXml);
×
93

94
        //envia o lote para a sefaz
UNCOV
95
        final OMElement omElement = this.nfeToOMElement(loteAssinadoXml);
×
96

97
        final NfeDadosMsg dados = new NfeDadosMsg();
×
UNCOV
98
        dados.setExtraElement(omElement);
×
99

100
        final NfeCabecMsgE cabecalhoSOAP = this.getCabecalhoSOAP();
×
UNCOV
101
        WSLoteEnvio.LOGGER.debug(omElement.toString());
×
102

103
        //define o tipo de emissao
104
        final NFAutorizador31 autorizador = NFAutorizador31.valueOfTipoEmissao(this.config.getTipoEmissao(), this.config.getCUF());
×
105

UNCOV
106
        final String endpoint = NFModelo.NFE.equals(modelo) ? autorizador.getNfeAutorizacao(this.config.getAmbiente()) : autorizador.getNfceAutorizacao(this.config.getAmbiente());
×
UNCOV
107
        if (endpoint == null) {
×
108
            throw new IllegalArgumentException("Nao foi possivel encontrar URL para Autorizacao " + modelo.name() + ", autorizador " + autorizador.name());
×
109
        }
110

111
        final NfeAutorizacaoLoteResult autorizacaoLoteResult = new NfeAutorizacaoStub(endpoint).nfeAutorizacaoLote(dados, cabecalhoSOAP);
×
UNCOV
112
        final NFLoteEnvioRetorno loteEnvioRetorno = new NFPersister().read(NFLoteEnvioRetorno.class, autorizacaoLoteResult.getExtraElement().toString());
×
UNCOV
113
        WSLoteEnvio.LOGGER.info(loteEnvioRetorno.toString());
×
UNCOV
114
        return loteEnvioRetorno;
×
115
    }
116

117
    private NfeCabecMsgE getCabecalhoSOAP() {
118
        final NfeCabecMsg cabecalho = new NfeCabecMsg();
×
119
        cabecalho.setCUF(this.config.getCUF().getCodigoIbge());
×
120
        cabecalho.setVersaoDados(NFeConfig.VERSAO_NFE);
×
UNCOV
121
        final NfeCabecMsgE cabecalhoSOAP = new NfeCabecMsgE();
×
UNCOV
122
        cabecalhoSOAP.setNfeCabecMsg(cabecalho);
×
UNCOV
123
        return cabecalhoSOAP;
×
124
    }
125

126
    private OMElement nfeToOMElement(final String documento) throws XMLStreamException {
127
        final OMElement ome = AXIOMUtil.stringToOM(documento);
×
128
        final Iterator<?> children = ome.getChildrenWithLocalName(WSLoteEnvio.NFE_ELEMENTO);
×
129
        while (children.hasNext()) {
×
UNCOV
130
            final OMElement omElement = (OMElement) children.next();
×
131
            if ((omElement != null) && (WSLoteEnvio.NFE_ELEMENTO.equals(omElement.getLocalName()))) {
×
132
                omElement.addAttribute("xmlns", NFeConfig.NFE_NAMESPACE, null);
×
133
            }
UNCOV
134
        }
×
UNCOV
135
        return ome;
×
136
    }
137
}
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