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

Fallo al guardar timbrado #158

Closed azaeldevel closed 7 years ago

azaeldevel commented 7 years ago

Saludos y generado y guardado correctamente el XML

mi PAC me prevee un servicio de timbrado y me retorna un timbre fiscal, hasta ahi va todo bien

¿Ahora, que devo hacer para agregar ese timbre ha mi XML?

Yo creo que para eso sirve las claases de Timbre use TFDv1c32, use TFDv1c32 tfd = new TFDv1c32(cfd,cert); tfd.timbrar(key); tfd.verificar(); tfd.guardar(System.out); pero en el ultimo pasa en guarda me da el siguiente error:

javax.xml.bind.JAXBException: class mx.bigdata.sat.cfdi.v32.schema.Comprobante nor any of its super class is known to this context. at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getBeanInfo(JAXBContextImpl.java:590) at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:482) at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:315) at com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:244) at javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshallerImpl.java:95) at mx.bigdata.sat.cfdi.TFDv1.guardar(TFDv1.java:146) at sales.InvoiceTest.testDiversa(InvoiceTest.java:224) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) ......

¿Alguna sugerencia o comentario que me yude?, gracias de antemano

hortegag91 commented 7 years ago

Te regresa únicamente el complemento de timbrado? El error lo que te dice es que no tiene la "estructura" para convertirlo en el objeto que estas intentando. Podrías ponernos exactamente que es lo que tu proveedor te regresa?

azaeldevel commented 7 years ago

Creo que ahi es doden esta el problema, tampoco se como pasarle este valor al tfd, antes de crear tfd solo esta el codigo para generar el xml.

mi proveedor de timbre me regresa:

hortegag91 commented 7 years ago

Lo único que se me ocurre es que crees el complemento "a pie" tomando en cuenta que ya existen las clases correspondientes al TFD. Quedaría algo así:

Comprobante c = TuComprobanteYaCreado TimbreFiscalDigital tf = new TimbreFiscalDigital(); tf.setSelloSAT("A5mVTbc4VLu09vsJsjQGgtEXhMe9hZ27x4BzCmsXWHfW1gkg/J35zhAPHOIh8sjchpDJ4tp3QNYwt3RHoR56GlpQzDqyNpn33z4utOg8DKoR203SxkF/Ga3WzZbQbNToWNHq6UVCvPbiPoG06JaKGpqsjBCaETOra2fs7FCkTnnvgcRSriS/7zH8VNceJIRlNdPixb0fxkiR+9xTsFPIG5nS7viwe36bQGr3gHmpm1NB7hLKFUwlfpo6HqqYE6exV9a+6KLUnpB5I074C97MHM4lyUhgKZz3v01cX1Ck/N9+qIRybexjYavAFo3fgvLzr1He+V3NTXm0HYzbsc+PQw=="); tf.setNoCertificadoSAT("20001000000300022323"); tf.setSelloCFD("I6JoR+kWvgs0Yu9la4o+pjXcUEYdFjxnmxPgMxxU3RX9AWt2rEaxdyMeiGMEuz/cOy0JdeBSxDYz63EnoNdLtX9Cg5P+2JAyGihHBHHjbNBk5s0fsBFFF4pjlvAlP1nFSCkAcNDwG1v8hEy5K+1XaAaLfrTVdIaeilX4RcKorEU="); tf.setFechaTimbrado(new Date()); tf.setUUID("c0d4c313-4fcd-41bc-9281-10233bc9bfd2"); tf.setVersion("1.0"); c.getComplemento().getAny().add(tf); CFDv32 cfd = new CFDv32(c); cfd.guardar(System.out);

hortegag91 commented 7 years ago

Comenta si esto lo solucionó, ya que estoy tratando de limpíar los issues para que no se haga mucho desorden con lo que viene del CFDi3.3 Saludos.