/**
*
* ESTE EJEMPLO TREA MONTOS REALES, AL GENERAR EL XML
* LO ENVIAS A TU PAC Y SE TIMBRA AUTOMATICO (solo cambia los csd de prueba por los del rfc emisor de la factura)
*
* */
public class EjemploCFDi33 {
public EjemploCFDi33() {}
public void ejecutar(){
/** CONFIGURACION PARA LA EJECUCION DEL EJEMPLO **/
Configuracion configXML = new Configuracion();
/** LiCENCIA SISTEMASPYMES **/
configXML.setLicencia("316ac9e0543522b89b0e32707fb42bb4");
/** MUESTRA INFORMACION DEL SISTEMA DONDE SE EJECUTA EL EJEMPLO - VALORES SI/NO **/
configXML.setInfoSistema("SI");
/** TIPO DE COMPROBANTE FISCAL A CREAR, POSIBLES VALORES FACTURA,NOMINA,PAGO,ESCUELAS**/
configXML.setComprobanteTipo("FACTURA");
/** RUTA DONDE SE GENERA EL XML SELLADO CON LOS CSD (LINUX) o (WINDOWS) **/
String so=System.getProperty("os.name");
if(so.contains("Linux"))
configXML.setRutaXML("/home/carlos/Documentos/xml/");
if(so.contains("Windows"))
configXML.setRutaXML("C:/proyectos_eclipse/xml/");
/** NOMBRE DEL ARCHIVO XML SELLADO **/
configXML.setArchivoXML("ejemplo_factura33.xml");
/** RUTA DE LOS CERTIFICADOS CSD DEL RFC EMISOR **/
String KEY=System.getProperty("user.dir")+"/libcfdi33/pruebas/EKU9003173C9.key";
String CER=System.getProperty("user.dir")+"/libcfdi33/pruebas/EKU9003173C9.cer";
String CONTRASENA="12345678a";
configXML.setCer(CER);
configXML.setKey(KEY);
configXML.setContresena(CONTRASENA);
/** VALIDAR LA INFORMACION INGRESADA ANTES DE CREAR EL ARCHIVO XML - TIEMPO DE EJECUCION 5 A 8 SEGUNDOS - POSIBLES VALORES SI/NO **/
//configXML.setValidar_pre("SI");
/** VALIDAR LA INFORMACION INGRESADA DESPUES DE CREAR EL ARCHIVO XML - TIEMPO DE EJECUCION 5 A 8 SEGUNDOS - POSIBLES VALORES SI/NO **/
//configXML.setValidar_pos("SI");
/** SE CREA EL COMPROBANTE (ESTRUCTURA DEL XML) **/
Comprobante comprobante = new Comprobante();
comprobante.setSerie("A");
comprobante.setFolio("1");
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"; /** I = INGRESO, E = EGRESO **/
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");
/** 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);
/** DATOS DEL EMISOR **/
Emisor emisor = new Emisor();
emisor.setRfc("EKU9003173C9");
emisor.setRegimenFiscal("601");
emisor.setNombre("GRUPO SISTEMAS SOLUCIONES");
comprobante.setEmisor(emisor);
/** DATOS DEL RECEPTOR **/
Receptor receptor = new Receptor();
receptor.setNombre("VENTA A PUBLICO EN GENERAL");
receptor.setRfc("XAXX010101000");
//receptor.setNumRegIdTrib("0000000000000");
//String pais="MEX";
//CPais paisComprobante = Utilerias.getPaisComprobante(pais);
//receptor.setResidenciaFiscal(paisComprobante);
String usoCFDI="D05";
receptor.setUsoCFDI(Utilerias.getUsoCFDiComprobante(usoCFDI));
comprobante.setReceptor(receptor);
/** AGREGAR LOS CONCEPTOS*/
Conceptos conceptos = new Conceptos();
/** CONCEPTO 1 **/
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));
/** IMPUESTOS CONCEPTO 1 **/
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));
/** SE AGREGA EL IMPUESTO TRASLADO AL NODO DE IMPUESTOS TRALADADOS**/
trasladosConcepto1.getTraslado().add(trasladoConcepto1);
/** SE AGREGAN LOS IMPUESTOS TRASLADADOS AL NODO DEL IMPUESTO DEL CONCEPTO **/
impuestosConcepto1.setTraslados(trasladosConcepto1);
/** PREDIAL **/
//CuentaPredial predial = new CuentaPredial();
//predial.setNumero("23438222");
//concepto1.setCuentaPredial(predial);
/** AL CONCEPTO 1 SE LE AGREGAN LOS IMPUESTOS TRALADOS O RETENIDOS **/
concepto1.setImpuestos(impuestosConcepto1);
/** AL NODO CONCEPTOS SE LE AGREGA EL CONCEPTO 1 **/
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));
/** IMPUESTOS CONCEPTO 2 **/
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));
/** SE AGREGA EL IMPUESTO TRASLADO AL NODO DE IMPUESTOS TRALADADOS**/
trasladosConcepto2.getTraslado().add(trasladoConcepto2);
/** SE AGREGAN LOS IMPUESTOS TRASLADADOS AL NODO DEL IMPUESTO DEL CONCEPTO 2 **/
impuestosConcepto2.setTraslados(trasladosConcepto2);
/** AL CONCEPTO 1 SE LE AGREGAN LOS IMPUESTOS TRALADOS O RETENIDOS **/
concepto2.setImpuestos(impuestosConcepto2);
/** AL NODO CONCEPTOS SE LE AGREGA EL CONCEPTO 2 **/
conceptos.getConcepto().add(concepto2);
/** AL NODO COMPROBANTE SE LE AGREGA EL NODO CONCEPTOS **/
comprobante.setConceptos(conceptos);
/** SE CREA EL NODO IMPUESTOS DEL COMPROBANTE **/
Comprobante.Impuestos impuestosComprobante = new Comprobante.Impuestos();
/** CREAR IMPUESTOS TRASLADOS AL COMPROBANTE*/
Comprobante.Impuestos.Traslados trasladosComprobante = new Comprobante.Impuestos.Traslados();
/** CREAR EL IMPUESTO TRASLADO COMPROBANTE*/
Comprobante.Impuestos.Traslados.Traslado trasladoComprobante = new Comprobante.Impuestos.Traslados.Traslado();
trasladoComprobante.setImpuesto("002");
String tipoFactorComprobante="Tasa";
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));
/** AGREGAR EL IMPUESTO TRASLADO AL NODO IMPUESTOS */
trasladosComprobante.getTraslado().add(trasladoComprobante);
/** AGREGAR LOS IMPUESTOS TRASLADOS AL NODO IMPUESTOS DEL COMPROBANTE*/
impuestosComprobante.setTraslados(trasladosComprobante);
/** AGREGAR EL TOTAL DE IMPUESTOS TRASLADOS DEL COMPROBANTE*/
impuestosComprobante.setTotalImpuestosTrasladados(new BigDecimal(47.68).setScale(2, RoundingMode.HALF_UP));
/** CREAR IMPUESTOS RETENIDOS AL 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);
impuestosComprobante.setTotalImpuestosRetenidos(new BigDecimal(100));
*/
/** AGREGAR LOS IMPUESTOS TRASLADADOS Y RETENIDOS AL COMPROBANTE*/
comprobante.setImpuestos(impuestosComprobante);
/** GENERAR EL XML SELLADO CON LOS CERTIFICADOS CSD **/
CrearXmlCFDi33 xml = new CrearXmlCFDi33(comprobante, configXML);
RespuestaGenerarXML res = xml.generarXMLCFDi33();
/** SE IMPRIME LA RESPUESTA**/
System.out.println("\n Ruta del Archivo XML Sellado generado: "+res.getRutaArchivoXML());
System.out.println("\n Archivo XML en string: "+res.getArchivoXMLtexto());
System.out.println("\n Archivo XML en Base64: "+res.getArchivoXMLBase64());
/////////////////////////////////////////////////////////////////////////////////////////////////
/** AHORA EL XML SELLADO SE TIMBRARA CON EL SERVICIO DE SISTEMASPYMES **/
/** (O IMPLEMENTAS EL TIMBRADO CON TU PAC DE PREFERENCIA) **/
System.out.println("\n\n AHORA SE TIMBRARA EL XML SELLADO CON EL TIMBRADO DE SISTEMASPYMES\n\n");
Random rn = new Random();
int pac = rn.nextInt(10) + 1;
System.out.println("SERVIDOR SISTEMASPYMES No.: "+ pac);
/** TOMA UN SERVIDOR SISTEMASPYMES AL AZAR **/
/**
* CONTAMON CON 10 SERVIDORES PROPIOS PARA BALANCEAR LA CARGA DE TRABAJO
* Y ASEGURAR DE TIMBRADO DE NUESTROS CLIENTES
*/
String url_webservice ="http://pac"+pac+".facturacionmexico.com.mx/pac/index.php?wsdl";
/** USUARIOS DE PRUEBA SISTEMASPYMES**/
String rfc="DEMO700101XXX";
String clave="DEMO700101XXX";
/** RUTA DEL XML GENERADO Y SELLADO **/
String ruta_xml=res.getRutaArchivoXML();
/** PARA PRUEBAS produccion = NO, para facturas reales, produccion = SI **/
String produccion="NO";
/**
* OBJETO TimbrarCFDi CON 3 METODOS PRINCIPALES
METODO timbrarXML: PARA TIMBRAR EL XML DE UNA FACTURA
METODO saldo: PARA VER EL SALDO DE UN RFC
METODO cancelar: PARA CANCELAR UNA FACTURA XML
*/
TimbrarCFDi timbrar = new TimbrarCFDi();
/** RESPUESTA DEL TIMBRADO**/
HashMap<String, String> respuesta_timbrado;
/********************* METODO TIMBRAR XML ***********************************************************
/* timbrarXML(String url_webservice, String rfc, String clave,String ruta_xml, String produccion);
*
* PARAMETROS:
* url_webservice : URL DEL WS DE SISTEMAS PYMES
* rfc: RFC DEL CLIENTE QUE TIMBRARA EL XML
* clave: CLAVE DEL RFC EN SYSTEMASPYMES
* ruta_xml: RUTA DONDE ESTA EL XML SELLADO
* produccion: SI EL TIMBRADO ES DE PRUEBA (timbrado de pruebas solo funciona con el rfc de pruebas) O NO
*
* RESPUESTA: HashMap <String,String> CON LA RESPUESTA DE SISTEMASPYMES
*
* ELEMENTOS HASHMAP:
* cfdi64: XML EN BASE64
* cfdi; xml timbrado en formato cadena
* png: PNG DE CODIGO QR EN BASE64
* idpac: PAC CON EL QUE SE TIMBRO EL XML
* produccion: SI FUE TIMBRADO EN MODO DE PRUEBAS O TIMBRADO REAL
* codigo_mf_numero: NUMERO DE CODIGO DE RESPUESTA SISTEMASPYMES
* codigo_mf_texto: TEXTO DE CODIGO DE RESPUESTA SISTEMASPYMES
* mensaje_original_pac_json: RESPUESTA DEL PAC EN JSON
* cancelada: SI FUE TIMBRADO DE CANCELACION
* saldo: SALDO DEL RFC
* uuid: UUID DEL LA FACTURA TIMBRADA
* servidor: SERVIDOR SISTEMASPYMES
* ejecucion: TIEMPO DE EJECUCION DEL TIMBRADO
* ruta_xml_timbrado: RUTA DONDE ESTA EL ARCHIVO XML CFDI TIMBRADO
*/
respuesta_timbrado = timbrar.timbrarXML(url_webservice, rfc, clave, ruta_xml, produccion);
System.out.println("Demo cfdi64=" + respuesta_timbrado.get("cfdi64"));
System.out.println("Demo cfdi=" + respuesta_timbrado.get("cfdi"));
System.out.println("Demo png=" + respuesta_timbrado.get("png"));
System.out.println("Demo idpac=" + respuesta_timbrado.get("idpac"));
System.out.println("Demo produccion=" + respuesta_timbrado.get("produccion"));
System.out.println("Demo codigo_mf_numero=" + respuesta_timbrado.get("codigo_mf_numero"));
System.out.println("Demo codigo_mf_texto=" + respuesta_timbrado.get("codigo_mf_texto"));
System.out.println("Demo mensaje_original_pac_json=" + respuesta_timbrado.get("mensaje_original_pac_json"));
System.out.println("Demo cancelada=" + respuesta_timbrado.get("cancelada"));
System.out.println("Demo saldo=" + respuesta_timbrado.get("saldo"));
System.out.println("Demo uuid=" + respuesta_timbrado.get("uuid"));
System.out.println("Demo servidor=" + respuesta_timbrado.get("servidor"));
System.out.println("Demo ejecucion=" + respuesta_timbrado.get("ejecucion"));
System.out.println("Demo ruta xml timbrado=" + respuesta_timbrado.get("ruta_xml_timbrado"));
System.out.println("\n\n");
/** CREAR PDF DEL XML TIMBRADO**/
String rutaXML_Timbrado=respuesta_timbrado.get("ruta_xml_timbrado");
String rutaLogo="C:/proyectos_eclipse/xml/logo.png";
Config conf = new Config();
conf.setRutaXML(rutaXML_Timbrado);
conf.setRutaLogo(rutaLogo);
conf.setTitulo("MI EMPRESA S.A DE C.V");
conf.setLicencia("5eede835e9d63212bdb432c6d3431e7f");
CfdiXml2Pdf cfdi2xml = new CfdiXml2Pdf(conf);
/*genera el pdf con el mismo nombre del xml, en la ruta donde esta el xml */
cfdi2xml.crearPDF();
}
}
Facturacion CFDi
CFDi en Java
Post Page Advertisement [Top]
cfdi en javacodigo fuente javacrear pdf de un xml cfdixml en java
codigo fuente crear factura xml pdf cfdi en java
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario