Pular para conteúdo

Envio

Exemplo de Como Ficaria o Envio da CT-e.

EnvioCte.java
package cte;

import br.com.swconsultoria.cte.Cte;
import br.com.swconsultoria.cte.dom.ConfiguracoesCte;
import br.com.swconsultoria.cte.dom.enuns.StatusCteEnum;
import br.com.swconsultoria.cte.exception.CteException;
import br.com.swconsultoria.cte.schema_400.cte.TRetCTe;
import br.com.swconsultoria.cte.schema_400.cte.TUFSemEX;
import br.com.swconsultoria.cte.schema_400.cte.TUf;
import br.com.swconsultoria.cte.schema_400.cteModalRodoviario.Rodo;
import br.com.swconsultoria.cte.schema_400.cte.TCTe;
import br.com.swconsultoria.cte.util.ChaveUtil;
import br.com.swconsultoria.cte.util.ConstantesCte;
import br.com.swconsultoria.cte.util.ObjetoCTeUtil;
import br.com.swconsultoria.cte.util.XmlCteUtil;

import java.time.LocalDateTime;
import java.util.Random;

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

    public static void main(String[] args) {

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

            String cnpj = "10732644000128"; //TODO Preencha o Cnpj
            String modelo = "57";
            int serie = 1;
            int numero = 224;
            String tipoEmissao = "1";
            String cct = String.format("%08d", new Random().nextInt(99999999));

            // Inicia As Configurações

            TCTe cte = new TCTe();
            TCTe.InfCte infCTe = new TCTe.InfCte();

            // Substitua X Pela Chave
            ChaveUtil chaveUtil = new ChaveUtil(config.getEstado(),
                    cnpj, modelo, serie, numero,
                    tipoEmissao, cct, LocalDateTime.now());

            String chave = chaveUtil.getChaveCT();

            infCTe.setId(chave);
            infCTe.setVersao(ConstantesCte.VERSAO.CTE);

            TCTe.InfCte.Ide ide = new TCTe.InfCte.Ide();
            ide.setCUF(config.getEstado().getCodigoUF());
            ide.setCCT(cct);
            ide.setCFOP("5351");
            ide.setNatOp("TRANSPORTE INTERNO");
            ide.setMod(modelo);
            ide.setSerie(String.valueOf(serie));
            ide.setNCT(String.valueOf(numero));
            ide.setDhEmi(XmlCteUtil.dataCte(LocalDateTime.now()));
            ide.setTpImp("1");
            ide.setTpEmis(tipoEmissao);
            ide.setCDV(chaveUtil.getDigitoVerificador());
            ide.setTpAmb(config.getAmbiente().getCodigo());
            ide.setTpCTe("0");
            ide.setProcEmi("0");
            ide.setVerProc("1.0");
            ide.setCMunEnv("5219753");
            ide.setXMunEnv("Anapolis");
            ide.setUFEnv(TUf.valueOf("GO"));
            ide.setModal("01");
            ide.setTpServ("0");
            ide.setCMunIni("5219753");
            ide.setXMunIni("Anapolis");
            ide.setUFIni(TUf.valueOf("GO"));
            ide.setCMunFim("5219753");
            ide.setXMunFim("Anapolis");
            ide.setUFFim(TUf.valueOf("GO"));
            ide.setRetira("1");
            ide.setIndIEToma("1");

            TCTe.InfCte.Ide.Toma3 toma3 = new TCTe.InfCte.Ide.Toma3();
            toma3.setToma("3");
            ide.setToma3(toma3);
            infCTe.setIde(ide);

            TCTe.InfCte.Compl compl = new TCTe.InfCte.Compl();
            compl.setXObs("FORMA DE PAGAMENTO DEPOSITO BANCARIO,FAVOR ENVIAR COPIA DO COMPROVANTE PARA O TRANSPORTADOR E ANEXAR VIA A DA CONTABILIDADE");
            infCTe.setCompl(compl);

            TCTe.InfCte.Emit emit = new TCTe.InfCte.Emit();
            emit.setCNPJ(cnpj);
            emit.setIE("104519304");
            emit.setXNome("TRC TRANSPORTES LTDA");
            emit.setXFant("TRC TRANSPORTES LTDA");
            emit.setCRT("1");

            br.com.swconsultoria.cte.schema_400.cte.TEndeEmi enderEmit = new br.com.swconsultoria.cte.schema_400.cte.TEndeEmi();
            enderEmit.setXLgr("AV SANTO ANTONIO & CIA");
            enderEmit.setNro("0");
            enderEmit.setXCpl("QD 17 LT 01-02-03");
            enderEmit.setXBairro("PQ STO ANTONIO");
            enderEmit.setCMun("5219753");
            enderEmit.setXMun("SANTO ANTONIO DO DESCOBERTO");
            enderEmit.setUF(TUFSemEX.valueOf("GO"));
            enderEmit.setCEP("72900000");
            enderEmit.setFone("6233215175");

            emit.setEnderEmit(enderEmit);
            infCTe.setEmit(emit);

            TCTe.InfCte.Rem rem = new TCTe.InfCte.Rem();
            rem.setCNPJ("01241994000605");
            rem.setIE("103255788");
            rem.setXNome("CT-E EMITIDO EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL");
            rem.setEmail("samuel@autocomsistemas.com.br");

            br.com.swconsultoria.cte.schema_400.cte.TEndereco enderRem = new br.com.swconsultoria.cte.schema_400.cte.TEndereco();
            enderRem.setXLgr("Rua: Teste");
            enderRem.setNro("0");
            enderRem.setXBairro("TESTE");
            enderRem.setCMun("5219753");
            enderRem.setXMun("SANTO ANTONIO DO DESCOBERTO");
            enderRem.setUF(TUf.GO);
            enderRem.setCEP("75120683");
            enderRem.setCPais("1058");
            enderRem.setXPais("Brasil");
            rem.setEnderReme(enderRem);
            infCTe.setRem(rem);

            TCTe.InfCte.Dest dest = new TCTe.InfCte.Dest();
            dest.setCNPJ("07826959000120");
            dest.setIE("104024585");
            dest.setXNome("CT-E EMITIDO EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL");
            dest.setEmail("samuel@autocomsistemas.com.br");

            br.com.swconsultoria.cte.schema_400.cte.TEndereco enderDest = new br.com.swconsultoria.cte.schema_400.cte.TEndereco();
            enderDest.setXLgr("Rua: Teste");
            enderDest.setNro("0");
            enderDest.setXBairro("TESTE");
            enderDest.setCMun("5219753");
            enderDest.setXMun("SANTO ANTONIO DO DESCOBERTO");
            enderDest.setUF(TUf.GO);
            enderDest.setCEP("75120683");
            enderDest.setCPais("1058");
            enderDest.setXPais("Brasil");
            dest.setEnderDest(enderDest);
            infCTe.setDest(dest);

            TCTe.InfCte.VPrest prest = new TCTe.InfCte.VPrest();
            prest.setVTPrest("410.00");
            prest.setVRec("410.00");

            TCTe.InfCte.VPrest.Comp comp = new TCTe.InfCte.VPrest.Comp();
            comp.setVComp("500.00");
            comp.setXNome("TESTE");
            prest.getComp().add(comp);
            infCTe.setVPrest(prest);

            TCTe.InfCte.Imp imp = new TCTe.InfCte.Imp();

            br.com.swconsultoria.cte.schema_400.cte.TImp icms = new br.com.swconsultoria.cte.schema_400.cte.TImp();

            br.com.swconsultoria.cte.schema_400.cte.TImp.ICMS45 icms45 = new br.com.swconsultoria.cte.schema_400.cte.TImp.ICMS45();
            icms45.setCST("40");
            icms.setICMS45(icms45);

            imp.setICMS(icms);
            infCTe.setImp(imp);

            TCTe.InfCte.InfCTeNorm infCTeNorm = new TCTe.InfCte.InfCTeNorm();

            TCTe.InfCte.InfCTeNorm.InfCarga infCarga = new TCTe.InfCte.InfCTeNorm.InfCarga();
            infCarga.setVCarga("29100.00");
            infCarga.setProPred("OLEO DIESEL");

            TCTe.InfCte.InfCTeNorm.InfCarga.InfQ infQ = new TCTe.InfCte.InfCTeNorm.InfCarga.InfQ();
            infQ.setCUnid("04");
            infQ.setTpMed("LT");
            infQ.setQCarga("10000.0000");
            infCarga.getInfQ().add(infQ);

            TCTe.InfCte.InfCTeNorm.InfDoc infDoc = new TCTe.InfCte.InfCTeNorm.InfDoc();

            TCTe.InfCte.InfCTeNorm.InfDoc.InfNFe infNFe = new TCTe.InfCte.InfCTeNorm.InfDoc.InfNFe();
            infNFe.setChave("52170101241994000605550030002868271002045403");
            infDoc.getInfNFe().add(infNFe);

            TCTe.InfCte.InfCTeNorm.InfModal infModal = new TCTe.InfCte.InfCTeNorm.InfModal();
            infModal.setVersaoModal(ConstantesCte.VERSAO.CTE);

            Rodo rodo = new Rodo();
            rodo.setRNTRC("47008950");

            infModal.setAny(ObjetoCTeUtil.objectToElement(rodo, Rodo.class, "rodo"));

            infCTeNorm.setInfCarga(infCarga);
            infCTeNorm.setInfDoc(infDoc);
            infCTeNorm.setInfModal(infModal);

            infCTe.setInfCTeNorm(infCTeNorm);
            cte.setInfCte(infCTe);
            // MOnta e Assina o XML
            TCTe enviCTe = Cte.montaCte(config, cte, true);

            //Adiciona QRCode
            TCTe.InfCTeSupl infCTeSupl = new TCTe.InfCTeSupl();
            infCTeSupl.setQrCodCTe(ObjetoCTeUtil.criaQRCode(
                    cte.getInfCte().getId().substring(3),
                    config));

            enviCTe.setInfCTeSupl(infCTeSupl);

            // Envia a Cte para a Sefaz
            TRetCTe retorno = Cte.enviarCte(config, enviCTe);
            if (!retorno.getCStat().equals(StatusCteEnum.AUTORIZADO.getCodigo())) {
                throw new CteException("Status:" + retorno.getCStat() + " - Motivo:" + retorno.getXMotivo());
            }

            System.out.println("Status: " + retorno.getProtCTe().getInfProt().getCStat() + " - " + retorno.getProtCTe().getInfProt().getXMotivo());
            System.out.println("Data: " + retorno.getProtCTe().getInfProt().getDhRecbto());


            System.out.println("Protocolo: " + retorno.getProtCTe().getInfProt().getNProt());
            System.out.println("XML Final: " + XmlCteUtil.criaCteProc(enviCTe, retorno.getProtCTe()));


        } catch (Exception e) {
            System.out.println("Erro:" + e.getMessage());
        }


    }

}