Contenido
Introduccion
Para realizar el timbrado de Factura o Nominas se deben contruir documentos XML que cumplan con las especificaciones del SAT.
El SAT proporciona los esquemas de Factura y Nomina en documentos xsd. Con estos tenemos la posibilidad de comprobar que el documento XML cumple con la estructura requerida.
Los esquemas que proporciona, entre otro, son:
- cfdv32.xsd. Para el timbrado de Factura. Se puede descargar desde: http://www.sat.gob.mx/cfd/3/cfdv32.xsd
- nomina11.xsd. Para el timbrado de Nomina. Para Nomina se requiere tambien el documento cfdv32.xsd. Se puede descargar desde: http://www.sat.gob.mx/sitio_internet/cfd/nomina/nomina11.xsd
XMLBeans
XMLBeans es una tecnologia de Apache para tener acceso a un XML en lenguaje de Java. Mediante está, usamos directamente objetos Beans con sus set y get para contruir un documento XML.
Pasos para contruir XML con las especificaciones del SAT
- Descargar la ultima versión de XMLBeans http://www.apache.org/dyn/closer.cgi/xmlbeans/binaries
- Descomprimirlo en una carpeta
- Pasarse a la carpeta bin
- Ejecutar el comando scomp para obtener los jar respectivos. Es necesario tener java instalado:
- Para Factura:
1scomp -compiler javac cfdv3.xsd -out cfdv3.jar
Para obtener Código Fuente:
1scomp -src cfdv3 -compiler javac cfdv3.xsd -out cfdv3.jar - Para nomina:
1scomp -compiler javac nomina11.xsd -out nomina11.jar
Para obtener Código Fuente:
1scomp -src nomina -compiler javac nomina11.xsd -out nomina11.jar
- Para Factura:
- Con esto obtenemos los jar que podemos importar a nuestro proyecto para usar sus métodos.
Dentro del proyecto
Dentro del proyecto podemos empezar a contruir el XML .
1 2 3 4 5 6 7 8 9 10 11 |
Comprobante comprobante = null; comprobante.setVersion("3.2"); comprobante.setFolio("674566"); comprobante.setSello(""); comprobante.setFormaDePago("PAGO EN UNA SOLA EXHIBICION"); comprobante.setNoCertificado(""); comprobante.setCertificado(""); comprobante.setSubTotal(BigDecimal.valueOf(700.01).setScale(2)); . . . |
Otros ejemplos:
Crear emisor
1 2 |
Emisor emisor = comprobante.addNewEmisor(); emisor.setNombre("Juan Penas"); |
Crear ubicación del emisor
1 2 |
TUbicacionFiscal ubicacionFiscal = emisor.addNewDomicilioFiscal(); ubicacionFiscal.setCodigoPostal("1023454"); |
Imprimir
1 2 3 4 5 6 7 |
File f = new File(RutaDelXml); XmlOptions xmlOptions = new XmlOptions(); xmlOptions.setCharacterEncoding("UTF-8"); xmlOptions.setSavePrettyPrint(); xmlOptions.setSavePrettyPrintIndent(4); comprobante.xmlText(xmlOptions); comprobante.save(f); |
Referencias
Las reglas para construir el XML se pueden consultar en:
- Para Factura: http://www.sat.gob.mx/informacion_fiscal/normatividad/Documents/Anexo_20_2daRMF_22052015.doc.doc
- Para Nomina: http://www.sat.gob.mx/informacion_fiscal/factura_electronica/Documents/Complementoscfdi/nomina11.pdf
La ultima versión tiene fecha de mayo del 2015.