bigdata-mx / factura-electronica

Librería de componentes Java para el desarrollo de aplicaciones de Factura Electrónica (CFDI)
Apache License 2.0
94 stars 107 forks source link

Complemento para el Recibo de pago de Nómina #89

Open eaavendanop opened 10 years ago

eaavendanop commented 10 years ago

Me gustaría saber si ustedes tienen pensado implementar este complemento, o de lo contrarío ¿me podrían orientar para implementarlo en su librería?.

Este nuevo complemento se deberá utilizar a partir del 2014.

URL con la información correspondiente: http://www.sat.gob.mx/sitio_internet/asistencia_contribuyente/principiantes/comprobantes_fiscales/66_22071.html

aurajhack commented 10 years ago

hola,

disculpen, yo e estado usando la libreria cfdi-base-0.2.4-bin.zip, para la parte de nomina van a actualizar a una nueva version con nombre cfdi-base-0.2.5-bin.zip ?

de antemano gracias por su atencion

saludos cordiales

elmer-garduno commented 10 years ago

Sí, si los demás consideran que los cambios que hay son funcionales, puedo generar un zip de SNAPSHOT y subirlo al sitio.

2013/12/19 aurajhack notifications@github.com

hola,

disculpen, yo e estado usando la libreria cfdi-base-0.2.4-bin.zip, para la parte de nomina van a actualizar a una nueva version con nombre cfdi-base-0.2.5-bin.zip ?

de antemano gracias por su atencion

saludos cordiales

— Reply to this email directly or view it on GitHubhttps://github.com/bigdata-mx/factura-electronica/issues/89#issuecomment-30980876 .

camarillo commented 10 years ago

@eaavendanop no lo he podido poner, pero como me dices, mi PAC me lo acepta. @el-many yo tambien estoy con solucionfactible y ya estamos haciendo los test.

el-many commented 10 years ago

Muchas gracias compañeros, hoy hice unas pruebas con los señores de solución factible, y hoy mismo cerramos contrato de timbrado, para iniciar el año con ellos, por lo menos en recibos de nomina, por otro lado las pruebas han sido satisfactorias tanto en timbrado con un .jar de ellos, como tambien el sellado con el .jar de bigdata. Saludos y muchas gracias.

fjv0410 commented 10 years ago

Hola @elmer-garduno elmer-garduno podrias pasarme el zip de SNAPSHOT por favor. De antemano Gracias

elmer-garduno commented 10 years ago

Saludos, te mando la dirección, de donde puedes descargarlo:

https://oss.sonatype.org/service/local/repositories/releases/content/mx/bigdata/cfdi/cfdi-base/0.2.5/cfdi-base-0.2.5-bin.zip

Si alguien nos pudiera mandar una muestra del código que se necesita para instanciar el componente de Nómina para agregarlo al manual de uso sería muy útil.

Gracias,

Elmer

On Tue, Dec 24, 2013 at 11:35 AM, fjv0410 notifications@github.com wrote:

Hola @elmer-garduno https://github.com/elmer-garduno elmer-garduno podrias pasarme el zip de SNAPSHOT por favor. De antemano Gracias

— Reply to this email directly or view it on GitHubhttps://github.com/bigdata-mx/factura-electronica/issues/89#issuecomment-31179959 .

JJAMBurgos commented 10 years ago

Le adjunto parte del programa para completar el ejemplo:

private static Complemento createComplemento(ObjectFactory of){ Complemento complemento = new Complemento(); mx.bigdata.sat.common.nomina.schema.ObjectFactory noshe = new mx.bigdata.sat.common.nomina.schema.ObjectFactory(); Nomina no = noshe.createNomina(); no.setVersion("1.1"); no.setNumEmpleado("00001"); no.setCURP("POMA870613MDFNRR03"); no.setTipoRegimen(2); Date today = new Date(); ManejadorFechas MFechas = new ManejadorFechas(); no.setFechaPago(MFechas.toXMLGregorianCalendar(today)); no.setFechaInicialPago(MFechas.deStringToDateYMDXML("20131216")); no.setFechaFinalPago(MFechas.deStringToDateYMDXML("20131230")); no.setNumDiasPagados(new BigDecimal("15")); no.setPeriodicidadPago("Quincenal"); Percepciones per = createPercep(noshe); per.setTotalGravado(new BigDecimal("500.00")); per.setTotalExento(new BigDecimal("0.00")); no.setPercepciones(per); Deducciones ded = createDeduc(noshe); ded.setTotalGravado(new BigDecimal("100.00")); ded.setTotalExento(new BigDecimal("0.00")); no.setDeducciones(ded); complemento.getAny().add(no); return complemento; }

 private static Percepciones createPercep(mx.bigdata.sat.common.nomina.schema.ObjectFactory of) {
        Percepciones cper = of.createNominaPercepciones();
        List<Percepcion> list = cper.getPercepcion(); 
        Percepcion p1 = of.createNominaPercepcionesPercepcion();
        p1.setClave("001");
        p1.setConcepto("SUELDO");
        p1.setTipoPercepcion("001");
        p1.setImporteGravado(new BigDecimal("200"));
        p1.setImporteExento(new BigDecimal("0"));
        list.add(p1);

        Percepcion p2 = of.createNominaPercepcionesPercepcion();
        p2.setClave("002");
        p2.setConcepto("BONO");
        p2.setTipoPercepcion("002");
        p2.setImporteGravado(new BigDecimal("200"));
        p2.setImporteExento(new BigDecimal("0"));
        list.add(p2);

        Percepcion p3 = of.createNominaPercepcionesPercepcion();
        p3.setClave("003");
        p3.setConcepto("Despensa");
        p3.setTipoPercepcion("003");
        p3.setImporteGravado(new BigDecimal("100"));
        p3.setImporteExento(new BigDecimal("0"));
        list.add(p3);

        return cper;
      }
 private static Deducciones createDeduc(mx.bigdata.sat.common.nomina.schema.ObjectFactory of) {
        Deducciones cded = of.createNominaDeducciones();
        List<Deduccion> list = cded.getDeduccion(); 
        Deduccion d1 = of.createNominaDeduccionesDeduccion();
        d1.setClave("001");
        d1.setConcepto("IMSS");
        d1.setTipoDeduccion("004");
        d1.setImporteGravado(new BigDecimal("70.00"));
        d1.setImporteExento(new BigDecimal("0.00"));
        list.add(d1);

        Deduccion d2 = of.createNominaDeduccionesDeduccion();
        d2.setClave("002");
        d2.setConcepto("ISR");
        d2.setTipoDeduccion("005");
        d2.setImporteGravado(new BigDecimal("30.00"));
        d2.setImporteExento(new BigDecimal("0.00"));
        list.add(d2);

        return cded;
      }

Espero Ayude y gracias por todas las aportaciones

camarillo commented 10 years ago

Hola a todos. Mañana mando un ejemplo de como he instanciado un metodo, pero es muy similar al de @JJAMBurgos.

Una pregunta a todos, en el XSD va la siguiente restriccion:

<xs:attribute name="Banco">
            <xs:annotation>
                <xs:documentation>Atributo opcional para la expresión del Banco conforme al catálogo, donde se realiza un depósito de nómina</xs:documentation>
            </xs:annotation>
            <xs:simpleType>
                <xs:restriction base="xs:int">
                    <xs:minInclusive value="1"/>
                    <xs:pattern value="[0-9]{3}"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>

Alguien ha podido pasar el dato sin necesidad de cambiar esto en el XSD por String?

@elmer-garduno en el XSD lo cambie a String para que el validador pueda pasar, este cambio aun no lo subo, crees que sea conveniente subirlo, o mejor esperamos para ver si se puede pasar como int?

Saludos.

SAAVER commented 10 years ago

Hola Buen dia, acabo de probar el código del ejemplo de JJAMBurgos, pero no logro correrlo me marca el siguiente error: Exception in thread "main" javax.xml.bind.MarshalException

Ojala me puedan ayudar. Gracias y Saludos

eaavendanop commented 10 years ago

@SAAVER estimado,

Lo único que tienes que hacer es pasar el parámetro "mx.bigdata.sat.common.nomina.schema" cuando creas el CFDV32, te debe quedar de la siguiente manera: CFDv32 cfd = new CFDv32(comp,"mx.bigdata.sat.common.nomina.schema");

SAAVER commented 10 years ago

Gracias @eaavendanop, me sirvio de mucha ayuda. Saludos!!!

camarillo commented 10 years ago

Hola a todos:

Tengo una duda, en el XML generado por la libreria las fechas de la nomina me las deja de este forma FechaFinalPago="2013-12-28Z" con una "Z" al final, el PAC que ocupo si me deja pasar y todo. Pero creo que lo correcto debe ser que este sin la "Z".

El dato que le paso a las fechas del complemento de nomina es de la siguiente manera:

GregorianCalendar ahora = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
        XMLGregorianCalendar fecha = null;
        try {
            fecha = DatatypeFactory.newInstance().newXMLGregorianCalendar(ahora);
        } catch (DatatypeConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

Y ya les paso fecha

        nomina.setFechaPago(fecha);
        nomina.setFechaInicialPago(fecha);
        nomina.setFechaFinalPago(fecha);

Ustedes como realizan este paso de parametro? les sale igual el XML con la "Z"? @SAAVER @JJAMBurgos @eaavendanop

@elmer-garduno aqui dejo el codigo para crear todo el comprobante con el complemento de la nomina http://pastebin.com/rx0f7rid

DeividGitHub commented 10 years ago

En la pagina de git tienen un ejemplo para sellar pero ya no existe el metodo:.loadPKCS8PrivateKey

Key key = KeyLoader.loadPKCS8PrivateKey(new FileInputStream(keyfile), password); // Carga la llave privada

al parecer KeyLoader se hizo una interfaz, la cual ya no tiene el metodo loadPKCS8PrivateKey ni loadX509Certificate :(

les adjunto la pagina: https://github.com/bigdata-mx/factura-electronica/wiki/Guia-del-usuario

camarillo commented 10 years ago

@DeividGitHub se cambio la forma de como se carga la llave privada, prueba con:

PrivateKey key;
key = KeyLoaderFactory.createInstance(KeyLoaderEnumeration.PRIVATE_KEY_LOADER,new FileInputStream(archivoLlave), password).getKey();
DeividGitHub commented 10 years ago

Entonces estos metodos han cambido?, hablo de la obtencion del certificado, y obtener el sello, tienes un ejemplo, te lo agradeceria mucho

DeividGitHub commented 10 years ago

Me podrían echar una mano, no encuentra la clase.: mx.bigdata.sat.cfdi.v32.schema.Comprobante y ya la he importado: import mx.bigdata.sat.cfdi.v32.schema.Comprobante;

dic 30, 2013 12:04:31 AM org.apache.catalina.core.ApplicationContext log Información: Marcando el servlet srvlCFDIPDF como no disponible dic 30, 2013 12:04:31 AM org.apache.catalina.core.StandardWrapperValve invoke Grave: Excepción de reserva de espacio para servlet srvlCFDIPDF java.lang.ClassNotFoundException: mx.bigdata.sat.cfdi.v32.schema.Comprobante at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526) at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Unknown Source) at java.lang.Class.getDeclaredMethods(Unknown Source) at org.apache.catalina.util.DefaultAnnotationProcessor.processAnnotations(DefaultAnnotationProcessor.java:226) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1153) at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:827) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:129) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Unknown Source)

elmer-garduno commented 10 years ago

Agregaste el JAR de cfdi-base al directorio lib de tu servlet container?

Saludos

On Mon, Dec 30, 2013 at 12:24 AM, DeividGitHub notifications@github.comwrote:

Me podrían echar una mano, no encuentra la clase.

dic 30, 2013 12:04:31 AM org.apache.catalina.core.ApplicationContext log Información: Marcando el servlet srvlCFDIPDF como no disponible dic 30, 2013 12:04:31 AM org.apache.catalina.core.StandardWrapperValve invoke Grave: Excepción de reserva de espacio para servlet srvlCFDIPDF java.lang.ClassNotFoundException: mx.bigdata.sat.cfdi.v32.schema.Comprobante at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526) at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Unknown Source) at java.lang.Class.getDeclaredMethods(Unknown Source) at org.apache.catalina.util.DefaultAnnotationProcessor.processAnnotations(DefaultAnnotationProcessor.java:226) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1153) at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:827) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:129) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Unknown Source)

— Reply to this email directly or view it on GitHubhttps://github.com/bigdata-mx/factura-electronica/issues/89#issuecomment-31334871 .

DeividGitHub commented 10 years ago

si lo he agregado, este error me sale cuando corro la aplicación, en eclipse no me da error

DeividGitHub commented 10 years ago

tengo cfdi-base-0.2.5-javadoc.jar cfdi-base-0.2.5-sources.jar cfdi-base-0.2.5.jar

elmer-garduno commented 10 years ago

En que directorio está eso en WEB-INF/lib?

On Mon, Dec 30, 2013 at 12:32 AM, DeividGitHub notifications@github.comwrote:

tengo cfdi-base-0.2.5-javadoc.jar cfdi-base-0.2.5-sources.jar cfdi-base-0.2.5.jar

— Reply to this email directly or view it on GitHubhttps://github.com/bigdata-mx/factura-electronica/issues/89#issuecomment-31335038 .

DeividGitHub commented 10 years ago

los coloque dentro de una carpeta: WEB-INF\lib\cfdi-base-0.2.5

elmer-garduno commented 10 years ago

Mejor sácalos de la carpeta y pon solo cfdi-base-0.2.5.jar en WEB-INF/lib

On Mon, Dec 30, 2013 at 12:44 AM, DeividGitHub notifications@github.comwrote:

los coloque dentro de una carpeta: WEB-INF\lib\cfdi-base-0.2.5

— Reply to this email directly or view it on GitHubhttps://github.com/bigdata-mx/factura-electronica/issues/89#issuecomment-31335211 .

DeividGitHub commented 10 years ago

ok si eso estoy haciendo, gracias

DeividGitHub commented 10 years ago

definitivamente era eso :)

camarillo commented 10 years ago

@DeividGitHub lo de leer la llave y el certificado ya no tuviste problemas?

DeividGitHub commented 10 years ago

Al parecer no, si me genero el archivo correctamente pero voy a hacer pruebas con el validador, haber que me arroja

DeividGitHub commented 10 years ago

Una duda me sale esto en el validador ValidaCFD 1.0130915: Esquema sospechoso : En DTD o en el esquema se utiliza el elemento '{http://www.sat.gob.mx/nomina}Nomina', pero no está declarado.

como lo incluyo???

DeividGitHub commented 10 years ago

les paso el archivo que me genera : http://148.243.72.104/clientes/110020010237201222.xml

mejor este : http://pastebin.com/9gu7VYXe

SAAVER commented 10 years ago

Estuve investigando, aparentemente el SAT aun no valida los comprobantes de nómina, puesto que la reforma entra en vigor a partir del 1 de Enero del 2014, faltaria solo confirmarlo con el propio SAT, a mi se me informo mediante nuestro PAC.

camarillo commented 10 years ago

Antes de guardar el CFDI haz lo siguiente:

cfdi.addNamespace("http://www.sat.gob.mx/nomina", "nomina");

DeividGitHub commented 10 years ago

pero lo agrega en comprobante no en complemento y el PAC me lo pide en complemento

DeividGitHub commented 10 years ago

el sello me dice el validador que es invalido, pero si me genera el xml, lo estoy generando correctamente??

PrivateKey key; key = KeyLoaderFactory.createInstance(KeyLoaderEnumeration.PRIVATE_KEY_LOADER,new FileInputStream(f2+s+"xxxxxxxxs.key"), "rfc").getKey(); X509Certificate cert = null;

                FileInputStream fis = new FileInputStream(f2+s+"xxxxxx.cer");
                BufferedInputStream bis = new BufferedInputStream(fis);

                CertificateFactory cf = CertificateFactory.getInstance("X.509");
                while (bis.available() > 0) {
                    cert = (X509Certificate) cf.generateCertificate(bis);
                    System.out.println(cert.toString());
                 }
                Comprobante sellado = cfd.sellarComprobante(key, cert); // Sellar CFD y obtener un Comprobante sellado
                String archivo = creaDirectorio(xSes, request, xdb, compania, nomina, emp_cve, anio, periodo);
                cfd.addNamespace("http://www.sat.gob.mx/nomina", "nomina");
                cfd.guardar(new FileOutputStream(archivo)); // Guardar el CFD ya firmado
                String cadena = cfd.getCadenaOriginal(); // Obtener cadena original
                String sello = sellado.getSello(); // Obtener sello
camarillo commented 10 years ago

Intenta leyendo el certificado como la llave.

X509Certificate cert = KeyLoaderFactory.createInstance(KeyLoaderEnumeration.PUBLIC_KEY_LOADER,new FileInputStream(archivocer)).getKey();
DeividGitHub commented 10 years ago

Para cambiar el tipo de dato de entero a String de clabe,banco, tipo percepcion y tipo de deduccion se debe recompilar e proyecto ????

elmer-garduno commented 10 years ago

Eso sería a partir del XSD y si tendrías que recompilar el proyecto.

On Mon, Dec 30, 2013 at 3:25 PM, DeividGitHub notifications@github.comwrote:

Para cambiar el tipo de dato de clabe,banco, tipo percepcion y tipo de deduccion se debe recompilar e proyecto ????

— Reply to this email directly or view it on GitHubhttps://github.com/bigdata-mx/factura-electronica/issues/89#issuecomment-31369706 .

DeividGitHub commented 10 years ago

la duda que tengo es por que en el xml no aparece

<cfdi:Complemento xmlns:nomina="http://www.sat.gob.mx/nomina" xsi:schemaLocation="http://www.sat.gob.mx/nomina http://www.sat.gob.mx/sitio_internet/cfd/nomina/nomina11.xsd">

camarillo commented 10 years ago

Para el de nomina, con que pongas la siguiente linea antes de guardar el CFDI es suficiente:

cfdi.addNamespace("http://www.sat.gob.mx/nomina", "nomina");

Para el xsi: no se lo he puesto, pero me parece que tiene que ser algo similar.

DeividGitHub commented 10 years ago

no lo puedo compilar :

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project cfdi-base: Compilation failure [ERROR] Unable to locate the Javac Compiler in: [ERROR] C:\Archivos de programa\Java\jre7..\lib\tools.jar [ERROR] Please ensure you are using JDK 1.4 or above and [ERROR] not a JRE (the com.sun.tools.javac.Main class is required). [ERROR] In most cases you can change the location of your Java [ERROR] installation by setting the JAVA_HOME environment variable. [ERROR] -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

ya inclui el plugin maven-compiler-plugin:2.3.2:compile

DeividGitHub commented 10 years ago

saben como agregar un xsi:schemaLocation a la etiqueta de complemento??? lo que pasa es que no aparece

schemaLocation="http://www.sat.gob.mx/nomina http://www.sat.gob.mx/sitio_internet/cfd/nomina/nomina11.xsd

camarillo commented 10 years ago

Hola a todos, no he podido resolver el siguiente problema con la libreria, antes el PAC si me dejaba pasar, pero ahora ya lo esta validando y ya no me deja pasar.

El problema es el siguiente:

En el XML generado por la libreria las fechas de la nomina me las deja de este forma FechaFinalPago="2013-12-28Z" con una "Z" al final

El dato que le paso a las fechas del complemento de nomina es de la siguiente manera:

GregorianCalendar ahora = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
        XMLGregorianCalendar fecha = null;
        try {
            fecha = DatatypeFactory.newInstance().newXMLGregorianCalendar(ahora);
        } catch (DatatypeConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

Y ya les paso fecha

        nomina.setFechaPago(fecha);
        nomina.setFechaInicialPago(fecha);
        nomina.setFechaFinalPago(fecha);

asi es como sale el xml

FechaFinalPago="2014-01-21Z" FechaInicialPago="2014-01-21Z" FechaInicioRelLaboral="2010-05-10Z" FechaPago="2014-01-21Z"
elmer-garduno commented 10 years ago

Seg?n recuerdo eso se puede arreglar especificando que formato quieres utilizar para formatear las fechas.

Para lo cual necesitas hacer dos cosas:

1) Definir una clase que haga el formato, ver por ejemplo:

./src/main/java/mx/bigdata/sat/schema/binder/DateTimeCustomBinder.java

2) Asociar dicho binder al campo respectivo en el xsd, ver por ejemplo:

./src/main/resources/xsd/v32/cfdv32.xsd:19: parseMethod="mx.bigdata.sat.schema.binder.DateTimeCustomBinder.parseDateTime" ./src/main/resources/xsd/v32/cfdv32.xsd:20: printMethod="mx.bigdata.sat.schema.binder.DateTimeCustomBinder.printDateTime"

Eso deber?a de funcionar.

2014/1/22 Ivan Aranda notifications@github.com

Hola a todos, no he podido resolver el siguiente problema con la libreria, antes el PAC si me dejaba pasar, pero ahora ya lo esta validando y ya no me deja pasar.

El problema es el siguiente:

En el XML generado por la libreria las fechas de la nomina me las deja de este forma FechaFinalPago="2013-12-28Z" con una "Z" al final

El dato que le paso a las fechas del complemento de nomina es de la siguiente manera:

GregorianCalendar ahora = new GregorianCalendar(TimeZone.getTimeZone("GMT")); XMLGregorianCalendar fecha = null; try { fecha = DatatypeFactory.newInstance().newXMLGregorianCalendar(ahora); } catch (DatatypeConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); }

Y ya les paso fecha

    nomina.setFechaPago(fecha);
    nomina.setFechaInicialPago(fecha);
    nomina.setFechaFinalPago(fecha);

asi es como sale el xml

FechaFinalPago="2014-01-21Z" FechaInicialPago="2014-01-21Z" FechaInicioRelLaboral="2010-05-10Z" FechaPago="2014-01-21Z"

? Reply to this email directly or view it on GitHubhttps://github.com/bigdata-mx/factura-electronica/issues/89#issuecomment-32999317 .

DeividGitHub commented 10 years ago

yo hago algo como esto el formato que me regresa la base de datos es "DD/MM/YYYY" XMLGregorianCalendar fechaPago = getfecha(get(rs,"FECPAGO"));

y la funcion es la que formatea

private XMLGregorianCalendar getfecha(String fecha) throws ParseException { try { XMLGregorianCalendar fechaPago= null; if(fecha!=null){

            Calendar calendar = Calendar.getInstance(); 
            SimpleDateFormat formato = new SimpleDateFormat("yyyy-MM-dd");
            Date fechaP = formato.parse(fecha);
            calendar.setTime(fechaP); 

            int year=calendar.get(Calendar.YEAR);  
            int month=calendar.get(Calendar.MONTH)+1;  
            int day=calendar.get(Calendar.DAY_OF_MONTH);  

            fechaPago = DatatypeFactory.newInstance().newXMLGregorianCalendarDate(year, month, day, DatatypeConstants.FIELD_UNDEFINED);

            return fechaPago;
        }else{
            return fechaPago;
        }
    }catch(Exception e){
        e.printStackTrace();
        return null;
    }
}

ya despues solo la asigno

nomina.setFechaPago(fechaPago);

y la muestra asi:

FechaPago="2014-01-05"

fjv0410 commented 10 years ago

Hola a todos saliendome un poquito del tema alguien ya pudo realizar un recibo ya que cuando trato de hacer el timbrado y el SAT manda su acuse me manda el siguiente error: Metadatos no correspondientes al CFDI Alguien que pueda ayudarme por favor. De antemano Gracias

DeividGitHub commented 10 years ago

cual es tu xml??

camarillo commented 10 years ago

Es correcto de las dos maneras @elmer-garduno @DeividGitHub, ahorita implemente la de Deivid para no actualizar la libreria en los proyectos.

Muchas gracias.

fjv0410 commented 10 years ago

Hola este es mi Xml. Gracias.

<?xml version="1.0" encoding="UTF-8"?> <cfdi:Comprobante xmlns:cfdi="http://www.sat.gob.mx/cfd/3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv32.xsd http://www.sat.gob.mx/nomina http://www.sat.gob.mx/sitio_internet/cfd/nomina/nomina11.xsd" version="3.2" serie="Recibos" folio="1" fecha="2014-01-22T15:53:13" formaDePago="PAGO EN UNA SOLA EXHIBICION" noCertificado="20001000000200000293" certificado="MIIE2jCCA8KgAwIBAgIUMjAwMDEwMDAwMDAyMDAwMDAyOTMwDQYJKoZIhvcNAQEFBQAwggFcMRowGAYDVQQDDBFBLkMuIDIgZGUgcHJ1ZWJhczEvMC0GA1UECgwmU2VydmljaW8gZGUgQWRtaW5pc3RyYWNpw7NuIFRyaWJ1dGFyaWExODA2BgNVBAsML0FkbWluaXN0cmFjacOzbiBkZSBTZWd1cmlkYWQgZGUgbGEgSW5mb3JtYWNpw7NuMSkwJwYJKoZIhvcNAQkBFhphc2lzbmV0QHBydWViYXMuc2F0LmdvYi5teDEmMCQGA1UECQwdQXYuIEhpZGFsZ28gNzcsIENvbC4gR3VlcnJlcm8xDjAMBgNVBBEMBTA2MzAwMQswCQYDVQQGEwJNWDEZMBcGA1UECAwQRGlzdHJpdG8gRmVkZXJhbDESMBAGA1UEBwwJQ295b2Fjw6FuMTQwMgYJKoZIhvcNAQkCDCVSZXNwb25zYWJsZTogQXJhY2VsaSBHYW5kYXJhIEJhdXRpc3RhMB4XDTEyMTAyNjE5MjI0M1oXDTE2MTAyNjE5MjI0M1owggFTMUkwRwYDVQQDE0BBU09DSUFDSU9OIERFIEFHUklDVUxUT1JFUyBERUwgRElTVFJJVE8gREUgUklFR08gMDA0IERPTiBNQVJUSU4gMWEwXwYDVQQpE1hBU09DSUFDSU9OIERFIEFHUklDVUxUT1JFUyBERUwgRElTVFJJVE8gREUgUklFR08gMDA0IERPTiBNQVJUSU4gQ09BSFVJTEEgWSBOVUVWTyBMRU9OIEFDMUkwRwYDVQQKE0BBU09DSUFDSU9OIERFIEFHUklDVUxUT1JFUyBERUwgRElTVFJJVE8gREUgUklFR08gMDA0IERPTiBNQVJUSU4gMSUwIwYDVQQtExxBQUQ5OTA4MTRCUDcgLyBIRUdUNzYxMDAzNFMyMR4wHAYDVQQFExUgLyBIRUdUNzYxMDAzTURGUk5OMDkxETAPBgNVBAsTCFNlcnZpZG9yMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDlrI9loozd+UcW7YHtqJimQjzX9wHIUcc1KZyBBB8/5fZsgZ/smWS4Sd6HnPs9GSTtnTmM4bEgx28N3ulUshaaBEtZo3tsjwkBV/yVQ3SRyMDkqBA2NEjbcum+e/MdCMHiPI1eSGHEpdESt55a0S6N24PW732Xm3ZbGgOp1tht1wIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQUFAAOCAQEAuoPXe+BBIrmJn+IGeI+m97OlP3RC4Ct3amjGmZICbvhI9BTBLCL/PzQjjWBwU0MG8uK6e/gcB9f+klPiXhQTeI1YKzFtWrzctpNEJYo0KXMgvDiputKphQ324dP0nzkKUfXlRIzScJJCSgRw9ZifKWN0D9qTdkNkjk83ToPgwnldg5lzU62woXo4AKbcuabAYOVoC7owM5bfNuWJe566UzD6i5PFY15jYMzi1+ICriDItCv3S+JdqyrBrX3RloZhdyXqs2Htxfw4b1OcYboPCu4+9qM3OV02wyGKlGQMhfrXNwYyj8huxS1pHghEROM2Zs0paZUOy+6ajM+Xh0LX2w==" subTotal="100" TipoCambio="1.0" Moneda="MXN" total="200" tipoDeComprobante="egreso" metodoDePago="Efectivo" LugarExpedicion="Mexico" sello="0mfI7V7Fdt9y2AA4DZW4Dyl6ZOv5kRWurjngTCcZwZEN/sssaVp0OlQyAI8VS/wxxrSHfGyWDVwaTdDqqTkGHqL4RCki1FZ9XVMXy/1W4grb8/IQQCH9ghzbRYpwCbv/87obdZ8rEcQLWy7XyRSHyMxC2UvmOzDaeVJhTvLMaMU=">

/cfdi:Emisor /cfdi:Receptor cfdi:Conceptos /cfdi:Conceptos cfdi:Impuestos cfdi:Traslados /cfdi:Traslados /cfdi:Impuestos cfdi:Complemento /nomina:Percepciones /nomina:Deducciones /nomina:Nomina /cfdi:Complemento /cfdi:Comprobante
DeividGitHub commented 10 years ago

Intentalo abrir con firefox y dime si no te muestra algo como esto:

Error de lectura XML: mal formado Ubicación: file:///C:/Documents%20and%20Settings/David/Mis%20documentos/ayuda.xml Número de línea 2, columna 10:

te falta el nodo de Comprobante, lo estas cerrando al final pero nunca lo abres

fjv0410 commented 10 years ago

Hola, perdon algo paso que no se copio bien el xml les dejo un link de archivo: https://www.dropbox.com/s/2lgaoj62ipquoqk/prueba3.xml Ojala puedan ayudarme. Gracias. Por cierto lo abri como me comentaste y me despliega bien el xml. Gracias.

jesus-mata commented 10 years ago

Hola que tal, por lo que veo ya llevan algo en lo que respecta a la nomina electrónica. Me preguntaba si esto de la nomina ya esta funcional en la ultima versión o todavía esta en beta. De igual manera si no esta implementada me gustaría ayudar al desarrollo o prueba del mismo. Saludos.

ZooMMX commented 10 years ago

Hola a todos!, ahora que está avanzado este tema, sería útil saber si alguien está interesado en una implementación de ésta función en nuestro Facturatron (es decir, en una interfaz gráfica), ya que tenemos un debate interno en saber si sería factible para los demás utilizarlo.