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

Error en Fecha de Comprobante #179

Closed azaeldevel closed 7 years ago

azaeldevel commented 7 years ago

He intentado insertar una fecha mas exacta en el comprobante con timestamp pero no genera un error en la validadcion del comprobante. cabe mencionar que tambien lo intente con java.util.Date pero da excatamente el minsmo error.

Timestamp timestamp = .... GregorianCalendar calendar = new GregorianCalendar(); calendar.setTime(timestamp); comprobante.setFecha(DatatypeFactory.newInstance().newXMLGregorianCalendar(calendar));

Si alguien me puede decir que estoy haciendo mal se lo agradeceria mucho.

ea24 commented 7 years ago

¿Puedes publicar el error de validación que obtienes?

ea24 commented 7 years ago

Bueno, creo que puedo saber cuál es el problema, si no estoy mal cuando generas la instancia del XMLGregorianCalendar con una fecha a modo de Timestamp se agregan milisegundos y zona horaria y esto en el validador no coincide con el formato de fecha del CFDI, para evitar eso puedes utilizar otro constructor y formatear la fecha, puedes probar con el código siguiente:

public XMLGregorianCalendar getXMLGCDate(Date date) {
    try {
            DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); //formato de fecha CFDI
            return DatatypeFactory.newInstance().newXMLGregorianCalendar(df.format(date));
    } catch (DatatypeConfigurationException ex) {
            //manejar excepción
    }
} 

Ojalá te sirva de guía, saludos.

hortegag91 commented 7 years ago

Concuerdo con ea24, ese debe ser el error, puedes solucionarlo dándole formato como te lo indica, o si estás asignando cada valor puedes declarar el valor de la zona horaria (creo que es el 7mo) como DatatypeConstants.Field_Undefined, en teoría ambas maneras deberían funcionar.

azaeldevel commented 7 years ago

Muchas gracias a ambos funciono sin ningun problema la solucion que me indicaron.

saludos.