Skip to content

CCe Cte

Samuel Oliveira edited this page Nov 6, 2017 · 3 revisions

Carta De Correção Eletrônica Cte

Função para Gerar a Carta De Correção Eletrônica:

import br.com.samuelweb.certificado.exception.CertificadoException;
import br.com.samuelweb.cte.Cte;
import br.com.samuelweb.cte.dom.ConfiguracoesIniciais;
import br.com.samuelweb.cte.dom.StatusCte;
import br.com.samuelweb.cte.exception.EmissorException;
import br.com.samuelweb.util.ConstantesCte;
import br.com.samuelweb.util.ObjetoUtil;
import br.com.samuelweb.util.XmlUtil;
import br.inf.portalfiscal.cte.schema_300.evCCeCTe.EvCCeCTe;
import br.inf.portalfiscal.cte.schema_300.evCCeCTe.TEvento;
import br.inf.portalfiscal.cte.schema_300.evCCeCTe.TProcEvento;
import br.inf.portalfiscal.cte.schema_300.evCCeCTe.TRetEvento;
import javax.xml.bind.JAXBException;
import java.time.LocalDateTime;

/**
 * @author Samuel Oliveira
 */
public class CCe {

public static void main(String[] args) {

    try {
        //Veja https://github.com/Samuel-Oliveira/Java_CTe/wiki/Configura%C3%A7%C3%B5es-CTe
        ConfiguracoesIniciais config = ConfigTeste.iniciaConfiguracoes();

        String chave = ""; //TODO Preencha a Chave
        String numeroSeqEvento = "01"; //TODO Preencha o NUmero Sequencial com 2 Digitos e Zero a esquerda
        String id = "ID" + ConstantesCte.EVENTOS.CCE_COD + chave + numeroSeqEvento;
        String cnpj = ""; //TODO Preencha o Cnpj

        TEvento enviEvento = new TEvento();
        enviEvento.setVersao(config.getVersao());

        TEvento.InfEvento infoEvento = new TEvento.InfEvento();
        infoEvento.setId(id);
        infoEvento.setCOrgao(config.getEstado().getCodigoIbge());
        infoEvento.setTpAmb(config.getAmbiente());
        infoEvento.setCNPJ(cnpj);
        infoEvento.setChCTe(chave);
        infoEvento.setDhEvento(XmlUtil.dataCte(LocalDateTime.now()));
        infoEvento.setTpEvento(ConstantesCte.EVENTOS.CCE_COD);
        infoEvento.setNSeqEvento(Integer.valueOf(numeroSeqEvento).toString());

        EvCCeCTe eventoCCe = new EvCCeCTe();
        eventoCCe.setDescEvento(ConstantesCte.EVENTOS.CCE_DESC);
        eventoCCe.setXCondUso(ConstantesCte.EVENTOS.CCE_COND_USO);

        EvCCeCTe.InfCorrecao infCorrecao = new EvCCeCTe.InfCorrecao();
        infCorrecao.setGrupoAlterado(""); //TODO Preencha
        infCorrecao.setCampoAlterado(""); //TODO Preencha
        infCorrecao.setValorAlterado(""); //TODO Preencha
        eventoCCe.getInfCorrecao().add(infCorrecao);

        TEvento.InfEvento.DetEvento detEvento = new TEvento.InfEvento.DetEvento();
        detEvento.setVersaoEvento(config.getVersao());
        detEvento.setAny(ObjetoUtil.objectToElement(eventoCCe, EvCCeCTe.class, "evCCeCTe"));

        infoEvento.setDetEvento(detEvento);
        enviEvento.setInfEvento(infoEvento);

        TRetEvento retorno = Cte.cceCte(enviEvento, true);

        if (!retorno.getInfEvento().getCStat().equals(StatusCte.EVENTO_VINCULADO.getCode())) {
            System.out.println("Erro Status:" + retorno.getInfEvento().getCStat());
            System.out.println("Erro Motivo:" + retorno.getInfEvento().getXMotivo());
        } else {

            System.out.println("Status:" + retorno.getInfEvento().getCStat());
            System.out.println("Motivo:" + retorno.getInfEvento().getXMotivo());
            System.out.println("Data:" + retorno.getInfEvento().getDhRegEvento());

            // Cria TProcEventoCTe
            TProcEvento procEvento = new TProcEvento();
            procEvento.setVersao(config.getVersao());
            procEvento.setEventoCTe(enviEvento);
            procEvento.setRetEventoCTe(retorno);

            System.out.println("Xml Final Carta de Correção Proc: " + XmlUtil.objectCteToXml(procEvento));
        }

    } catch (EmissorException | JAXBException | CertificadoException e) {
        System.out.println("Erro:" + e.getMessage());
    }
}

}
Clone this wiki locally