-
-
Notifications
You must be signed in to change notification settings - Fork 233
05 : Envio com Arquivo XML
SW Software e Consultoria edited this page Mar 5, 2019
·
1 revision
Exemplo de envio com o arquivo XML:
import br.com.swconsultoria.nfe.Nfe;
import br.com.swconsultoria.nfe.dom.ConfiguracoesNfe;
import br.com.swconsultoria.nfe.dom.enuns.DocumentoEnum;
import br.com.swconsultoria.nfe.dom.enuns.StatusEnum;
import br.com.swconsultoria.nfe.schema_4.enviNFe.TEnviNFe;
import br.com.swconsultoria.nfe.schema_4.enviNFe.TRetEnviNFe;
import br.com.swconsultoria.nfe.schema_4.retConsReciNFe.TRetConsReciNFe;
import br.com.swconsultoria.nfe.util.RetornoUtil;
import br.com.swconsultoria.nfe.util.XmlNfeUtil;
/**
* @author Samuel Oliveira
*
*/
public class EnvioNfeXmlTeste {
public static void main(String[] args) {
try {
// Inicia As Configurações - ver https://github.com/Samuel-Oliveira/Java_NFe/wiki/1-:-Configuracoes
ConfiguracoesNfe config = Config.iniciaConfiguracoes();
String caminhoXML = "d:/teste/nfe.xml";
// Le Xml do Arquivo
String xml = XmlNfeUtil.leXml(caminhoXML);
TEnviNFe enviNFe = XmlNfeUtil.xmlToObject(xml, TEnviNFe.class);
// Monta e Assina o XML
enviNFe = Nfe.montaNfe(config, enviNFe, true);
// Envia a Nfe para a Sefaz
TRetEnviNFe retorno = Nfe.enviarNfe(config, enviNFe, DocumentoEnum.NFE);
//Valida se o Retorno é Assincrono
if (RetornoUtil.isRetornoAssincrono(retorno)) {
//Pega o Recibo
String recibo = retorno.getInfRec().getNRec();
int tentativa = 0;
TRetConsReciNFe retornoNfe = null;
//Define Numero de tentativas que irá tentar a Consulta
while (tentativa < 15) {
retornoNfe = Nfe.consultaRecibo(config, recibo, DocumentoEnum.NFE);
if (retornoNfe.getCStat().equals(StatusEnum.LOTE_EM_PROCESSAMENTO.getCodigo())) {
System.out.println("INFO: Lote Em Processamento, vai tentar novamente apos 1 Segundo.");
Thread.sleep(1000);
tentativa++;
} else {
break;
}
}
RetornoUtil.validaAssincrono(retornoNfe);
System.out.println();
System.out.println("# Status: " + retornoNfe.getProtNFe().get(0).getInfProt().getCStat() + " - " + retornoNfe.getProtNFe().get(0).getInfProt().getXMotivo());
System.out.println("# Protocolo: " + retornoNfe.getProtNFe().get(0).getInfProt().getNProt());
System.out.println("# XML Final: " + XmlNfeUtil.criaNfeProc(enviNFe, retornoNfe.getProtNFe().get(0)));
} else {
//Se for else o Retorno é Sincrono
//Valida Retorno Sincrono
RetornoUtil.validaSincrono(retorno);
System.out.println();
System.out.println("# Status: " + retorno.getProtNFe().getInfProt().getCStat() + " - " + retorno.getProtNFe().getInfProt().getXMotivo());
System.out.println("# Protocolo: " + retorno.getProtNFe().getInfProt().getNProt());
System.out.println("# Xml Final : " + XmlNfeUtil.criaNfeProc(enviNFe, retorno.getProtNFe()));
}
} catch (Exception e) {
System.err.println();
System.err.println("# Erro: " + e.getMessage());
}
}
}