EJEMPLO PARA CREAR UNA FACTURA CFDI 4.0 SAT DE MEXICO EN JAVA
configXML.setComprobanteTipo("FACTURA");
//CONFIGURAR LA RUTA DONDE SE ALMACENARA EL XML CFDI QUE SE VA A CREAR
String so=System.getProperty("os.name");
if(so.contains("Linux"))
{
//ruta donde se genera el xml sellado para enviarlo al pac (LINUX)
configXML.setRutaXML("/home/carlos/Documentos/xml/");
}
if(so.contains("Windows"))
{
//ruta donde se genera el xml sellado para enviarlo al pac (WINDOWS)
//configXML.setRutaXML("C:/proyectos_java/xml/");
configXML.setRutaXML("C:\\Users\\52871\\eclipse-workspace\\xml\\");
}
//CONFIGURAR EL NOMBRE DEL ARCHIVO XML (Con la extencion incluida)
configXML.setArchivoXML("ejemplo_factura40.xml");
//CONFIGURAR LA RUTA DONDE SE ALMACENAN LOS CERTIFICADOS CSD DE RFC EMISOR (AQUI SE USAN DE PRUEBAS PROPORCIONADOS POR EL SAT)
String KEY=System.getProperty("user.dir")+"/libcfdi40/pruebas/EKU9003173C9.key";
String CER=System.getProperty("user.dir")+"/libcfdi40/pruebas/EKU9003173C9.cer";
String CONTRASENA="12345678a";
configXML.setCer(CER);
configXML.setKey(KEY);
configXML.setContresena(CONTRASENA);
//CONFIGURAR SI SE VALIDARA EL XML CREADO , ANTES O DESPUES DE CREARLO
configXML.setValidar_pre("SI"); // VALIDAR LA INFORMACION INGRESADA ANTES DE CREAR EL ARCHIVO XML - TIEMPO DE EJECUCION 5 A 8 SEGUNDOS
//configXML.setValidar_pos("SI"); // VALIDAR LA INFORMACION INGRESADA DESPUES DE CREAR EL ARCHIVO XML - TIEMPO DE EJECUCION 5 A 8 SEGUNDOS
/*LLENAR EL XML COMPROBANTE CON LA INFORMACION DE LA VENTA DE TU BASE DE DATOS*/
Comprobante comprobante = new Comprobante();
comprobante.setSerie("A");
comprobante.setFolio("1");
/*FORMATO DE FECHA*/
String FORMATER = "yyyy-MM-dd'T'HH:mm:ss";
Date date = new Date();
XMLGregorianCalendar fechaComprobante = Utilerias.getFechaXMLGregorian(date, FORMATER);
comprobante.setFecha(fechaComprobante);
comprobante.setSubTotal(new BigDecimal(298.00).setScale(2, RoundingMode.HALF_UP));
comprobante.setTotal(new BigDecimal(345.68).setScale(2, RoundingMode.HALF_UP));
String moneda="MXN";
comprobante.setMoneda(Utilerias.getMonedaComprobante(moneda));
String tipocomprobante="I";
comprobante.setTipoDeComprobante(Utilerias.getTipoDeComprobante(tipocomprobante));
comprobante.setFormaPago("01");
String metododepago="PUE";
comprobante.setMetodoPago(Utilerias.getMetodoDePagoComprobante(metododepago));
//comprobante.setCondicionesDePago("CONDIDCIONES");
//comprobante.setDescuento(new BigDecimal(100.00));
comprobante.setTipoCambio(new BigDecimal(1.0).setScale(0, RoundingMode.HALF_UP));
comprobante.setLugarExpedicion("45079");
comprobante.setExportacion("01");
/*CFDI RELACIONADO*/
//CfdiRelacionado cfdiRelacionado = new CfdiRelacionado();
//cfdiRelacionado.setUUID("A39DA66B-52CA-49E3-879B-5C05185B0EF7");
/*CFDI RELACIONADOS*/
//CfdiRelacionados cfdiRelacionados = new CfdiRelacionados();
//cfdiRelacionados.setTipoRelacion("01");
//cfdiRelacionados.getCfdiRelacionado().add(cfdiRelacionado);
//comprobante.setCfdiRelacionados(cfdiRelacionados);
/*EMISOR*/
Emisor emisor = new Emisor();
emisor.setRfc("EKU9003173C9");
emisor.setRegimenFiscal("601");
emisor.setNombre("ESCUELA KEMPER URGATE");
comprobante.setEmisor(emisor);
/*RECEPTOR*/
Receptor receptor = new Receptor();
receptor.setNombre("UNIVERSIDAD ROBOTICA ESPAÑOLA");
receptor.setRfc("URE180429TM6");
receptor.setDomicilioFiscalReceptor("86991");
receptor.setRegimenFiscalReceptor("601");
//receptor.setNumRegIdTrib("0000000000000");
//String pais="MEX";
//CPais paisComprobante = Utilerias.getPaisComprobante(pais);
//receptor.setResidenciaFiscal(paisComprobante);
String usoCFDI="G01";
receptor.setUsoCFDI(Utilerias.getUsoCFDiComprobante(usoCFDI));
comprobante.setReceptor(receptor);
/*CONCEPTOS*/
Conceptos conceptos = new Conceptos();
/*CONCEPTO*/
Concepto concepto1 = new Concepto();
concepto1.setClaveProdServ("01010101");
concepto1.setClaveUnidad("ACT");
concepto1.setNoIdentificacion("0001");
concepto1.setCantidad(new BigDecimal(1));
concepto1.setUnidad("NA");
concepto1.setDescripcion("Concepto 1");
concepto1.setValorUnitario(new BigDecimal(99.00).setScale(2, RoundingMode.HALF_UP));
concepto1.setImporte(new BigDecimal(99.00).setScale(2, RoundingMode.HALF_UP));
concepto1.setObjetoImp("02");
/*IMPUESTOS CONCEPTO*/
Impuestos impuestosConcepto1 = new Impuestos();
/*IMPUESTOS TRASLADOS*/
Traslados trasladosConcepto1 = new Traslados();
/*IMPUESTO TRASLADO*/
Traslado trasladoConcepto1 = new Traslado();
trasladoConcepto1.setBase(new BigDecimal(99.00).setScale(2, RoundingMode.HALF_UP));
trasladoConcepto1.setImporte(new BigDecimal(15.84).setScale(2, RoundingMode.HALF_UP));
trasladoConcepto1.setImpuesto("002");
trasladoConcepto1.setTasaOCuota(new BigDecimal(0.160000).setScale(6, RoundingMode.HALF_UP));
String tipoFactorTraslado1="Tasa";
trasladoConcepto1.setTipoFactor(Utilerias.getTipoFactorImpuestoConceptoComprobante(tipoFactorTraslado1));
trasladosConcepto1.getTraslado().add(trasladoConcepto1);
impuestosConcepto1.setTraslados(trasladosConcepto1);
/*PREDAIL*/
//CuentaPredial predial = new CuentaPredial();
//predial.setNumero("23438222");
//concepto1.setCuentaPredial(predial);
concepto1.setImpuestos(impuestosConcepto1);
conceptos.getConcepto().add(concepto1);
//CONCEPTO 2
Concepto concepto2 = new Concepto();
concepto2.setClaveProdServ("01010101");
concepto2.setClaveUnidad("ACT");
concepto2.setNoIdentificacion("0001");
concepto2.setCantidad(new BigDecimal(1));
concepto2.setUnidad("NA");
concepto2.setDescripcion("Concepto 1");
concepto2.setValorUnitario(new BigDecimal(199.00).setScale(2, RoundingMode.HALF_UP));
concepto2.setImporte(new BigDecimal(199.00).setScale(2, RoundingMode.HALF_UP));
concepto2.setObjetoImp("02");
/*IMPUESTOS CONCEPTO*/
Impuestos impuestosConcepto2 = new Impuestos();
/*IMPUESTOS TRASLADOS*/
Traslados trasladosConcepto2 = new Traslados();
/*IMPUESTO TRASLADO*/
Traslado trasladoConcepto2 = new Traslado();
trasladoConcepto2.setBase(new BigDecimal(199.00).setScale(2, RoundingMode.HALF_UP));
trasladoConcepto2.setImporte(new BigDecimal(31.84).setScale(2, RoundingMode.HALF_UP));
trasladoConcepto2.setImpuesto("002");
trasladoConcepto2.setTasaOCuota(new BigDecimal(0.160000).setScale(6, RoundingMode.HALF_UP));
String tipoFactorTraslado2="Tasa";
trasladoConcepto2.setTipoFactor(Utilerias.getTipoFactorImpuestoConceptoComprobante(tipoFactorTraslado2));
trasladosConcepto2.getTraslado().add(trasladoConcepto2);
impuestosConcepto2.setTraslados(trasladosConcepto2);
concepto2.setImpuestos(impuestosConcepto2);
conceptos.getConcepto().add(concepto2);
comprobante.setConceptos(conceptos);
/*IMPUESTOS COMPROBANTE*/
Comprobante.Impuestos impuestosComprobante = new Comprobante.Impuestos();
/*
//RETENCIONES COMPROBANTE
Comprobante.Impuestos.Retenciones retencionesComprobante = new Comprobante.Impuestos.Retenciones();
//RETENCION COMPROBANTE
Comprobante.Impuestos.Retenciones.Retencion retencionComprobante = new Comprobante.Impuestos.Retenciones.Retencion();
retencionComprobante.setImporte(new BigDecimal(100.00));
retencionComprobante.setImpuesto("002");
retencionesComprobante.getRetencion().add(retencionComprobante);
impuestosComprobante.setRetenciones(retencionesComprobante);
*/
/*TRASLADOS COMPROBANTE*/
Comprobante.Impuestos.Traslados trasladosComprobante = new Comprobante.Impuestos.Traslados();
/*TRASLADO COMPROBANTE*/
Comprobante.Impuestos.Traslados.Traslado trasladoComprobante = new Comprobante.Impuestos.Traslados.Traslado();
trasladoComprobante.setImpuesto("002");
String tipoFactorComprobante="Tasa";
trasladoComprobante.setBase(new BigDecimal(298).setScale(2, RoundingMode.HALF_UP));
trasladoComprobante.setTipoFactor(Utilerias.getTipoFactorImpuestoConceptoComprobante(tipoFactorComprobante));
trasladoComprobante.setTasaOCuota(new BigDecimal(0.160000).setScale(6, RoundingMode.HALF_UP));
trasladoComprobante.setImporte(new BigDecimal(47.68).setScale(2, RoundingMode.HALF_UP));
trasladosComprobante.getTraslado().add(trasladoComprobante);
impuestosComprobante.setTraslados(trasladosComprobante);
//impuestosComprobante.setTotalImpuestosRetenidos(new BigDecimal(100));
impuestosComprobante.setTotalImpuestosTrasladados(new BigDecimal(47.68).setScale(2, RoundingMode.HALF_UP));
comprobante.setImpuestos(impuestosComprobante);
/*GENERAR XML*/
CrearXmlCFDi40 xml = new CrearXmlCFDi40(comprobante, configXML);
RespuestaGenerarXML res = xml.generarXMLCFDi40();
System.out.println("Ruta xml generado: "+res.getRutaArchivoXML());
System.out.println("Archivo XML en string: "+res.getArchivoXMLtexto());
System.out.println("Archivo XML en Base64: "+res.getArchivoXMLBase64());
}
}
Si Buscas una forma de implementar la factura electronica de manera facil
solo llenando una plantilla de texto con los datos de la factura
o llenando un arreglo de datos con los datos de la factura
tenemos una libreria para generar el xml cfdi de una factura electronica
visita nuestra pagina web
https://factura.cfdi.red/
No hay comentarios:
Publicar un comentario