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 Nomina #148

Closed ingtemix closed 7 years ago

ingtemix commented 7 years ago

Compañeros estoy tratando de agregar la nueva versión del complemento de Nómina pero al generar las clases me esta marcando error al generar las clases con los catálogos por el número de Enums por el siguiente error:

org.xml.sax.SAXParseException; systemId: http://www.sat.gob.mx/sitio_internet/cfd/catalogos/catCFDI.xsd; lineNumber: 32886; columnNumber: 41; El tipo simple "c_ClaveProdServ" no se ha asignado a Enum debido al límite de EnumMemberSizeCap. Recuento de facetas: 52,839, límite actual: 256. Puede utilizar el atributo de personalización "typesafeEnumMaxMembers" para ampliar el límite.

Alguien puede explicarme la forma de corregir este tema???

Saludos!!!

hortegag91 commented 7 years ago

Hola ingtemix, Ya hace tiempo he agregado este complemento en mi fork de la librería, Este error se debe a que la configuración que actualmente tiene la librería es de 2,000 y el error te marca que debes tener capacidad para 52,839, por lo que debes de ir al archivo /src/main/resources/bind.xml, y extender la propiedad "typesafeEnumMaxMembers" a 53,000. Como te comento ya hace tiempo que di de alta este complemento pero le dejé de dar continuidad y tenía pensado retomarlo en cualquier momento, podrías indicarme como estas cargando el catálogo? o ser un poco más especifico de que es lo que te causa problemas? Yo no tuve este inconveniente y en lo personal 52,839 se me hace un número bastante alto. Saludos.

ingtemix commented 7 years ago

Hola buen día hortegag91 ya configure lo que mencionas y obtengo el mismo error. La forma en como estoy cargando el catalogo es a traves del XSD.

http://www.sat.gob.mx/informacion_fiscal/factura_electronica/Documents/Complementoscfdi/nomina12.xsd

En el cual viene esta URL donde vienen los catalogos que marcan error:

http://www.sat.gob.mx/sitio_internet/cfd/tipoDatos/tdCFDI/tdCFDI.xsd

Saludos!!!

hortegag91 commented 7 years ago

Disculpa, creo que ahi no se cargan los catálogos como tal, de hecho en el XSD no vi que vinieran definidos los catálogos como lo hicieron con la contabilidad electrónica (por ejemplo), el catálogo yo lo estoy validando una capa "más arriba" para no interferir directamente con la librería. Te encargo nos pases tu versión de JaxB ya que en ocaciones me ha tocado que guarda o busca los archivos en diferentes ruta. En mi experiencia, el tipo "log" que te da Maven+Netbeans cuando comienzas a compilar ayuda bastante, podríamos darte más la mano teniendo estas dos cosas que te pido, Saludos.

camarillo commented 7 years ago

Hola en mi fork ya están realizados los cambios. Aquí dejo la librería que se genera, voy a implementarlo para revisar que todo funcione. No pude realizar que convivieran la versión 1.1 y la 1.2, tuve que borrar la 1.1

Descargar Libreria

Berserkerus commented 7 years ago

Hola camarillo, estuve revisando tu librería y noté que en el package mx.bigdata.sat.common.nomina.schema le hacen falta unas clases. Las clases que faltan son las que tienen problemas con el límite del EnumMemberSizeCap (c_CodigoPostal, c_ClaveProdServ, c_ClaveUnidad, c_Colonia, c_Municipio, c_PatenteAduanal). Te funcionó bien sin esas clases?

ingtemix, el XSD que manda error por el límite Enum es catCFDI.xsd, el link a ese XSD está en el mensaje de error de tu primer post (http://www.sat.gob.mx/sitio_internet/cfd/catalogos/catCFDI.xsd).

Estoy teniendo los mismos problemas para generar las clases, alguien ha podido solucionar cómo generar las clases de esos simpleType con ese error del límite Enum?

Saludos

ingtemix commented 7 years ago

Estimado buen día,

Yo generé el codigo pero aun no he realizado pruebas, si no falla les envío la libreria.

Saludos!!!

camarillo commented 7 years ago

Hola @Berserkerus, como lo comenta @hortegag91 no agregue esos XSD, y funciona de manera correcta, ahorita ya probe la librería generada y se genera de manera correcta el CFDI, probaste con la libreria que genere? o la generaste tu mismo?.

Como les comente, ya genere un CFDI de prueba de la nomina12, incluido un timbrado de prueba con el PAC que trabajo y todo funciona bien. Voy a revisar si puedo hacer que estén en la librería la nomina11 y la nomina12, para poder ir migrando por partes. Y le confirmo a @elmer-garduno para que nos apoye a subirlo a la rama principal.

Aqui les dejo un ejemplo del archivo xmlNomina12.tar.gz y la Libreria que la misma de arriba.

Berserkerus commented 7 years ago

Hola @camarillo, las clases las generé yo desde terminal ubuntu, pero son iguales a las de tu librería. Tenía duda de esas clases faltantes, porque ya tiene unos días que no he podido generarlas por el error en el tamaño del simpleType.

Había hecho unas pruebas, pero todas fallidas. Si tu ya pudiste timbrar, intentaré de nuevo con tu librería.

Gracias!

hortegag91 commented 7 years ago

@camarillo si se pueden dejar ambas, solo hay que crear subcarpetas dentro de nómina, yo las llamé v11 y v12, y modificar el archivo POM para que los lea de manera separada. Si tienes dudas me avisas para copiar y pegar un ejemplo en una chanza que tenga.

camarillo commented 7 years ago

@hortegag91 muchas gracias, ya realice los cambios y ya no marca error, en este caso solo cree una nueva carpeta para la version 12 (nomina12), para no tener que cambiar nada sobre lo que ya tengo implementado y solo agregar la nueva funcion.

Mañana reviso si todo esta bien para pedir que nos apoyen a que agregue a la rama principal, ahorita el cambio ya esta en mi Fork

camarillo commented 7 years ago

Hola a todos, les confirmo la librería funciona de manera correcta, en esta versión ya están juntas la nomina11 y la nomina12. La nomina12 esta en el paquete con el mismo nombre (nomina12).

@elmer-garduno como puedo integrar los cambios a la rama principal? Ahorita ya están en mi Fork.

Aqui la Libreria

elmer-garduno commented 7 years ago

Gracias Iván, solo dale pull request Como la vez pasada y luego le damos merge.

Saludos

On Thu, Dec 8, 2016, 6:25 PM Ivan Aranda notifications@github.com wrote:

Hola a todos, les confirmo la librería funciona de manera correcta, en esta versión ya están juntas la nomina11 y la nomina12. La nomina12 esta en el paquete con el mismo nombre (nomina12).

@elmer-garduno https://github.com/elmer-garduno como puedo integrar los cambios a la rama principal? Ahorita ya están en mi Fork.

Aqui la Libreria http://ivanaranda.mx/github/cfdi-base-0.2.8-SNAPSHOT.jar

— You are receiving this because you were mentioned.

Reply to this email directly, view it on GitHub https://github.com/bigdata-mx/factura-electronica/issues/148#issuecomment-265916362, or mute the thread https://github.com/notifications/unsubscribe-auth/ABJkIHHOwFBon91edZofCpdJ9YVW0UZ6ks5rGLwmgaJpZM4K10uc .

camarillo commented 7 years ago

@elmer-garduno ya quedo el pull request.

Saludos.

aperezc48 commented 7 years ago

Hola @camarillo, @hortegag91 , @elmer-garduno y a todos , aqui molestandolos con una consulta. Tengo un problema al querer validar el XML de mi comprobante, ya que estoy generando y agregando el complemento de Nómina 1.2 y me marca el siguiente error :

cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'ns3:Nomina'.

Al parecer no me esta reconociendo los prefijos del complemento de Nomina. Lo que hice fue imprimir en consola el XML formado antes de llegar al método cdfi.validar y de lo que me pude dar cuenta es que no se están agregando los esquemas correspondientes a la Nómina, ya que en el encabezado del XML solo me muestra los siguientes esquemas:

xsi:schemaLocation="http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv32.xsd">

Tenía entendido que los esquemas se agregan agregando el nameSpace ("cfdi.addNamespace("http://www.sat.gob.mx/nomina", "nomina12");") pero no se porque no los este agregando. También le estoy agregando el contexto correspondiente en el constructor.

cfdi = new CFDv32(comprobante, "mx.bigdata.sat.cfdi.v32.schema", "mx.bigdata.sat.common.nomina12.schema");

No se si uds puedan tener una idea de porque no me esta reconociendo los esquemas de Nómina, o porque razón podría ser que los esta sobre-escribiendo y solo deja los que trae sobrecargados la librería.

De ante mano muchas gracias por su apoyo.

Saludos!.

camarillo commented 7 years ago

Hola @aperezc48, yo creo clase de la siguiente manera, así como el nameSpace, para reconozca.

CFDv32 cfd = new CFDv32(comprobante,"mx.bigdata.sat.common.nomina.schema");
cfd.addNamespace("http://www.sat.gob.mx/nomina", "nomina"); 
aperezc48 commented 7 years ago

Hola @camarillo , el problema es que si lo estoy implementando así:

cfdi = new CFDv32(comprobante, "mx.bigdata.sat.cfdi.v32.schema", "mx.bigdata.sat.common.nomina12.schema", "com.mti.facturacion.bo"); cfdi.addNamespace("http://www.sat.gob.mx/nomina12", CFDI_NOM_PREFIX_12);

Pero no se si el problema también pueda ser por la versión del jdk que uso, o alguna librería o configuración en general que le falte al proyecto.

Gracias.!

camarillo commented 7 years ago

@aperezc48 Puedes mandar como sale tu XML? Le estas agregando mas constructores, esto lo haces por alguna razón? A mi tal cual te lo mando me lo genera sin problemas y genera xml con los schemas.

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

Intenta con esto:

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

ingtemix commented 7 years ago

Chicos tomar en cuenta que al momento de sellar la facturas lo realiza muy lento, esto como motivo de que el XSD hace referencia a otros XSD que importa desde la pagina del SAT para que corrijan eso.

Saludos!!!

jjjimenez commented 7 years ago

Y ya sabes como corregirlo? pasa el dato. Saludos !!

  From: ingtemix <notifications@github.com>

To: bigdata-mx/factura-electronica factura-electronica@noreply.github.com Cc: Subscribed subscribed@noreply.github.com Sent: Monday, December 26, 2016 1:35 PM Subject: Re: [bigdata-mx/factura-electronica] Complemento Nomina (#148)

Chicos tomar en cuenta que al momento de sellar la facturas lo realiza muy lento, esto como motivo de que el XSD hace referencia a otros XSD que importa desde la pagina del SAT para que corrijan eso.Saludos!!!— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or mute the thread.

camarillo commented 7 years ago

@ingtemix @jjjimenez se refieren a estos?

http://www.sat.gob.mx/sitio_internet/cfd/catalogos/Nomina/catNomina.xsd

http://www.sat.gob.mx/sitio_internet/cfd/tipoDatos/tdCFDI/tdCFDI.xsd

ingtemix commented 7 years ago

Si a esos precisamente @camarillo

@jjjimenez estoy revisando apenas el tema.

Saludos!!!

camarillo commented 7 years ago

En los proyectos donde he ocupado la librería no se me hace tan lento, pero se me ocurre que lo que se puede realizar es modificar directamente el XSD y cambiar las rutas de los archivos a unas rutas locales, no se si convenga meter estos cambios a la rama principal. Me parece que quien los ha metido ha tenido problemas con los tipos de datos y les marca errores al compilar.

ingtemix commented 7 years ago

Hola compañeros lo que realice fue lo siguiente:

  1. Al XSD de Nomina cambie la por ruta de archivos por rutas locales quedando de la siguiente forma:

  2. Descargue los XSD y los copie a la carpeta donde se encuentra el XSD de Nomina.

  3. Modifique la clase CFDv32 en el ArraydeString agregando los xsd de archivos.

private static final String[] XSD = new String[]{ "/xsd/v32/cfdv32.xsd", "/xsd/v3/TimbreFiscalDigital.xsd", "/xsd/common/TuristaPasajeroExtranjero/TuristaPasajeroExtranjero.xsd", "/xsd/common/aerolineas/aerolineas.xsd", "/xsd/common/consumocombustible/consumodecombustibles.xsd", "/xsd/common/detallista/detallista.xsd", "/xsd/common/divisas/divisas.xsd", "/xsd/common/donat/donat11.xsd", "/xsd/common/ecb/ecb.xsd", "/xsd/common/ecc/ecc11.xsd", "/xsd/common/iedu/iedu.xsd", "/xsd/common/implocal/implocal.xsd", "/xsd/common/leyendasFisc/leyendasFisc.xsd", "/xsd/common/nomina/catCFDI.xsd", "/xsd/common/nomina/catNomina.xsd", "/xsd/common/nomina/tdCFDI.xsd", "/xsd/common/nomina/nomina12.xsd",

Cabe mencionar que con esto mejore en principio el tiempo de sellado de facturas ya que inicialmente tardaba entre 9-10 segundos y ahora tarda en promedio 5 segundo.

De igual forma en caso de no tener internet podremos seguir sellando sin problemas y anteriormente si no tenías internet la libreria no podría sellar.

Saludos y espero que pueda ayudarle.

camarillo commented 7 years ago

Voy a realizar el cambio como comentas, no deberia entorpecer nada del proyecto y lo subo a la libreria.

Saludos.

2016-12-26 15:58 GMT-06:00 ingtemix notifications@github.com:

Hola compañeros lo que realice fue lo siguiente:

1.

Al XSD de Nomina cambie la por ruta de archivos por rutas locales quedando de la siguiente forma: 2.

Descargue los XSD y los copie a la carpeta donde se encuentra el XSD de Nomina. 3.

Modifique la clase CFDv32 en el ArraydeString agregando los xsd de archivos.

private static final String[] XSD = new String[]{ "/xsd/v32/cfdv32.xsd", "/xsd/v3/TimbreFiscalDigital.xsd", "/xsd/common/TuristaPasajeroExtranjero/TuristaPasajeroExtranjero.xsd", "/xsd/common/aerolineas/aerolineas.xsd", "/xsd/common/consumocombustible/consumodecombustibles.xsd", "/xsd/common/detallista/detallista.xsd", "/xsd/common/divisas/divisas.xsd", "/xsd/common/donat/donat11.xsd", "/xsd/common/ecb/ecb.xsd", "/xsd/common/ecc/ecc11.xsd", "/xsd/common/iedu/iedu.xsd", "/xsd/common/implocal/implocal.xsd", "/xsd/common/leyendasFisc/leyendasFisc.xsd", "/xsd/common/nomina/catCFDI.xsd", "/xsd/common/nomina/catNomina.xsd", "/xsd/common/nomina/tdCFDI.xsd", "/xsd/common/nomina/nomina12.xsd",

Cabe mencionar que con esto mejore en principio el tiempo de sellado de facturas ya que inicialmente tardaba entre 9-10 segundos y ahora tarda en promedio 5 segundo.

De igual forma en caso de no tener internet podremos seguir sellando sin problemas y anteriormente si no tenías internet la libreria no podría sellar.

Saludos y espero que pueda ayudarle.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/bigdata-mx/factura-electronica/issues/148#issuecomment-269244448, or mute the thread https://github.com/notifications/unsubscribe-auth/AAE_s8RgeCZFgQEgIlKbOo0WXGAsOP_dks5rMDhygaJpZM4K10uc .

-- I DO NOT ALWAYS HAVE THE REASON, BUT I NEVER MAKE MISTAKES

.:: Camarillo :.. Iván Aranda Camarillo http://www.camarill0.info

rrodrigu007 commented 7 years ago

Hola, buenas tardes...

Revisando el codigo en su versión cfdi-base-0.2.5 , tienen un error en el archivo Nomina.java, tanto para el campo TipoPercepcion y TipoDeduccion lo tienen definido como int y se requiere que sea String para poder agregar los valores como "001" "002"

Saludos

ingtemix commented 7 years ago

@rrodrigu007 las clases Nomina.java son autogeneradas lo que deberías quizás modificar es el archivo .XSD.

Por otro lado compañeros he estado realizando pruebas con la librería con los XSD de los catalogos del SAT y considero que continua muy lento pues 5 segundos se me hace mucho tiempo tomando en cuenta que para el sellado de 1 a 50 facturas se puede considerar poco pero para volumenes de 5000 o 6000 facturas se tardaría en sellarlas alrededor de 6-7 horas lo que considero es mucho lo que haré es discrepar con el esquema proporcionado, al final de cuenta el PAC debera validar los valores enviados. Quienes esten interesados para que me ayuden me informan.

Saludos!!!