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

wmixvideo / nfe / #6985

02 Jun 2016 11:49PM UTC coverage: 79.364% (+3.7%) from 75.706%
#6985

push

travis-ci

fincatto
Atualizado xsd de validacao de envio de lote, que valida as notas com assinatura.
Atualizado para versão 2.0.0-SNAPSHOT, pois o codigo quebrou a compatibilidade.

0 of 1 new or added line in 1 file covered. (0.0%)

349 existing lines in 68 files now uncovered.

4742 of 5975 relevant lines covered (79.36%)

50.29 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/WSCartaCorrecao.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.evento.NFEnviaEventoRetorno;
8
import com.fincatto.nfe310.classes.evento.NFEvento;
9
import com.fincatto.nfe310.classes.evento.NFInfoEvento;
10
import com.fincatto.nfe310.classes.evento.NFTipoEvento;
11
import com.fincatto.nfe310.classes.evento.cartacorrecao.NFEnviaEventoCartaCorrecao;
12
import com.fincatto.nfe310.parsers.NotaFiscalChaveParser;
13
import com.fincatto.nfe310.persister.NFPersister;
14
import com.fincatto.nfe310.transformers.NFRegistryMatcher;
15
import com.fincatto.nfe310.webservices.gerado.RecepcaoEventoStub;
16
import com.fincatto.nfe310.webservices.gerado.RecepcaoEventoStub.NfeCabecMsg;
17
import com.fincatto.nfe310.webservices.gerado.RecepcaoEventoStub.NfeCabecMsgE;
18
import com.fincatto.nfe310.webservices.gerado.RecepcaoEventoStub.NfeDadosMsg;
19
import com.fincatto.nfe310.webservices.gerado.RecepcaoEventoStub.NfeRecepcaoEventoResult;
20
import org.apache.axiom.om.OMElement;
21
import org.apache.axiom.om.util.AXIOMUtil;
22
import org.joda.time.DateTime;
23
import org.simpleframework.xml.core.Persister;
24
import org.simpleframework.xml.stream.Format;
25
import org.slf4j.Logger;
26
import org.slf4j.LoggerFactory;
27

28
import javax.xml.stream.XMLStreamException;
29
import java.math.BigDecimal;
30
import java.rmi.RemoteException;
31
import java.util.Collections;
32

33
class WSCartaCorrecao {
34
    private static final BigDecimal VERSAO_LEIAUTE = new BigDecimal("1.00");
×
35
    private static final String EVENTO_CODIGO = "110110";
36
    private static final String EVENTO_DESCRICAO = "Carta de Correcao";
37
    private static final String EVENTO_CONDICAO_USO = "A Carta de Correcao e disciplinada pelo paragrafo 1o-A do art. 7o do Convenio S/N, de 15 de dezembro de 1970 e pode ser utilizada para regularizacao de erro ocorrido na emissao de documento fiscal, desde que o erro nao esteja relacionado com: I - as variaveis que determinam o valor do imposto tais como: base de calculo, aliquota, diferenca de preco, quantidade, valor da operacao ou da prestacao; II - a correcao de dados cadastrais que implique mudanca do remetente ou do destinatario; III - a data de emissao ou de saida.";
UNCOV
38
    private final static Logger LOGGER = LoggerFactory.getLogger(WSCartaCorrecao.class);
×
39
    private final NFeConfig config;
40

41
    WSCartaCorrecao(final NFeConfig config) {
×
UNCOV
42
        this.config = config;
×
UNCOV
43
    }
×
44

45
    NFEnviaEventoRetorno corrigeNota(final String chaveAcesso, final String textoCorrecao, final int numeroSequencialEvento) throws Exception {
46
        final String cartaCorrecaoXML = this.gerarDadosCartaCorrecao(chaveAcesso, textoCorrecao, numeroSequencialEvento).toString();
×
UNCOV
47
        final String xmlAssinado = new AssinaturaDigital(this.config).assinarDocumento(cartaCorrecaoXML);
×
48
        final OMElement omElementResult = this.efetuaCorrecao(xmlAssinado, chaveAcesso);
×
UNCOV
49
        return new Persister(new NFRegistryMatcher(), new Format(0)).read(NFEnviaEventoRetorno.class, omElementResult.toString());
×
50
    }
51

52
    NFEnviaEventoRetorno corrigeNotaAssinada(final String chaveAcesso, final String eventoAssinadoXml) throws Exception {
53
        final OMElement omElementResult = this.efetuaCorrecao(eventoAssinadoXml, chaveAcesso);
×
54
        return new NFPersister().read(NFEnviaEventoRetorno.class, omElementResult.toString());
×
55
    }
56

57
    private OMElement efetuaCorrecao(final String xmlAssinado, final String chaveAcesso) throws XMLStreamException, RemoteException {
UNCOV
58
        final RecepcaoEventoStub.NfeCabecMsg cabecalho = new NfeCabecMsg();
×
59
        cabecalho.setCUF(this.config.getCUF().getCodigoIbge());
×
60
        cabecalho.setVersaoDados(WSCartaCorrecao.VERSAO_LEIAUTE.toPlainString());
×
61

62
        final RecepcaoEventoStub.NfeCabecMsgE cabecalhoE = new NfeCabecMsgE();
×
UNCOV
63
        cabecalhoE.setNfeCabecMsg(cabecalho);
×
64

65
        final RecepcaoEventoStub.NfeDadosMsg dados = new NfeDadosMsg();
×
66
        final OMElement omElementXML = AXIOMUtil.stringToOM(xmlAssinado);
×
67
        WSCartaCorrecao.LOGGER.debug(omElementXML.toString());
×
UNCOV
68
        dados.setExtraElement(omElementXML);
×
69

UNCOV
70
        final NotaFiscalChaveParser parser = new NotaFiscalChaveParser(chaveAcesso);
×
71

UNCOV
72
        final NFAutorizador31 autorizacao = NFAutorizador31.valueOfCodigoUF(this.config.getCUF());
×
73
        final String urlWebService = NFModelo.NFCE.equals(parser.getModelo()) ? autorizacao.getNfceRecepcaoEvento(this.config.getAmbiente()) : autorizacao.getRecepcaoEvento(this.config.getAmbiente());
×
UNCOV
74
        if (urlWebService == null) {
×
75
            throw new IllegalArgumentException("Nao foi possivel encontrar URL para RecepcaoEvento " + parser.getModelo().name() + ", autorizador " + autorizacao.name());
×
76
        }
77

78
        final NfeRecepcaoEventoResult nfeRecepcaoEvento = new RecepcaoEventoStub(urlWebService).nfeRecepcaoEvento(dados, cabecalhoE);
×
79
        final OMElement omElementResult = nfeRecepcaoEvento.getExtraElement();
×
UNCOV
80
        WSCartaCorrecao.LOGGER.debug(omElementResult.toString());
×
81
        return omElementResult;
×
82
    }
83

84
    private NFEnviaEventoCartaCorrecao gerarDadosCartaCorrecao(final String chaveAcesso, final String textoCorrecao, final int numeroSequencialEvento) {
85
        final NotaFiscalChaveParser chaveParser = new NotaFiscalChaveParser(chaveAcesso);
×
86

87
        final NFTipoEvento cartaCorrecao = new NFTipoEvento();
×
88
        cartaCorrecao.setVersao(WSCartaCorrecao.VERSAO_LEIAUTE);
×
89
        cartaCorrecao.setDescricaoEvento(EVENTO_DESCRICAO);
×
90
        cartaCorrecao.setCondicaoUso(EVENTO_CONDICAO_USO);
×
91
        cartaCorrecao.setTextoCorrecao(textoCorrecao);
×
92

93
        final NFInfoEvento infoEvento = new NFInfoEvento();
×
94
        infoEvento.setAmbiente(this.config.getAmbiente());
×
95
        infoEvento.setDadosEvento(cartaCorrecao);
×
UNCOV
96
        infoEvento.setChave(chaveAcesso);
×
97
        infoEvento.setCnpj(chaveParser.getCnpjEmitente());
×
98
        infoEvento.setDataHoraEvento(DateTime.now());
×
99
        infoEvento.setId(String.format("ID%s%s0%s", WSCartaCorrecao.EVENTO_CODIGO, chaveAcesso, numeroSequencialEvento));
×
100
        infoEvento.setNumeroSequencialEvento(numeroSequencialEvento);
×
101
        infoEvento.setOrgao(chaveParser.getNFUnidadeFederativa());
×
UNCOV
102
        infoEvento.setTipoEvento(WSCartaCorrecao.EVENTO_CODIGO);
×
UNCOV
103
        infoEvento.setVersaoEvento(WSCartaCorrecao.VERSAO_LEIAUTE);
×
104

UNCOV
105
        final NFEvento evento = new NFEvento();
×
UNCOV
106
        evento.setInfoEvento(infoEvento);
×
UNCOV
107
        evento.setVersao(WSCartaCorrecao.VERSAO_LEIAUTE);
×
108

UNCOV
109
        final NFEnviaEventoCartaCorrecao enviaEvento = new NFEnviaEventoCartaCorrecao();
×
UNCOV
110
        enviaEvento.setEvento(Collections.singletonList(evento));
×
UNCOV
111
        enviaEvento.setIdLote("1");
×
UNCOV
112
        enviaEvento.setVersao(WSCartaCorrecao.VERSAO_LEIAUTE);
×
UNCOV
113
        return enviaEvento;
×
114
    }
115
}
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

© 2025 Coveralls, Inc