Comments (22)
@turbinux @danielfigueroaj Estoy haciendo pruebas modificando algunas cosas de la libreria, al parecer estoy viendo la forma de no hacer instanciacion de la clase Object Factory de la ruta mx.bigdata.sat.common.Pagos
, para utilizar el mismo Object Factory que se encuentra en complementos, ademas para utilizar los mismos catalogos del Comprobante general dentro de los pagos, y no estar utilizando diferentes catalogos tal como CMoneda y CMonedaPago o CMetodoPago y CMetodoPagoPago.
Esto haria la vida mas sencilla para los implementadores, si mis pruebas son exitosas comparto el jar con un ejemplo para generar comprobante de pagos.
Saludos
from factura-electronica.
Hola @jalgaba
Efectivamente revise la versión 3.3 y ya tiene los cambios que menciona @dpacanins .
Ya lo compile y lo tengo como dependencia en mi proyecto, funciona sin problema y mis pruebas para generación de complemento de pago me timbran bien. Te agradezco la respuesta.
Saludos
from factura-electronica.
Hola, a mi me sale el mismo error, lamento no poder ayudar, sigo viendo si puedo corregirlo. revise el codigo fuente y todo parece estar bien. no se que pueda estar fallando. Saludos.
from factura-electronica.
Ok, creo que encontre el problema, al generar el comprobante con pagos se necesita incluir el contexto de los pagos al mandar llamar al constructor:
CFDv33 cfd = new CFDv33(comp,"mx.bigdata.sat.common.pagos.schema");
despues de eso, ya no sale el error de JAXB, espero esto ayude.
Saludos
from factura-electronica.
@czarcj podrias compartirme el ejemplo completo de como armas el complemento?
from factura-electronica.
@turbinux Si uso la linea:
CFDv33 cfd = new CFDv33(comp,"mx.bigdata.sat.common.pagos.schema");
Obtengo este mensaje:
Provider com.sun.xml.bind.v2.ContextFactory could not be instantiated: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 3 counts of IllegalAnnotationExceptions
Two classes have the same XML type name "{http://www.sat.gob.mx/sitio_internet/cfd/catalogos}c_TipoFactor". Use @XmlType.name and @XmlType.namespace to assign different names to them.
this problem is related to the following location:
at mx.bigdata.sat.cfdi.v33.schema.CTipoFactor
at protected mx.bigdata.sat.cfdi.v33.schema.CTipoFactor mx.bigdata.sat.cfdi.v33.schema.Comprobante$Conceptos$Concepto$Impuestos$Traslados$Traslado.tipoFactor
at mx.bigdata.sat.cfdi.v33.schema.Comprobante$Conceptos$Concepto$Impuestos$Traslados$Traslado
at protected java.util.List mx.bigdata.sat.cfdi.v33.schema.Comprobante$Conceptos$Concepto$Impuestos$Traslados.traslado
at mx.bigdata.sat.cfdi.v33.schema.Comprobante$Conceptos$Concepto$Impuestos$Traslados
at protected mx.bigdata.sat.cfdi.v33.schema.Comprobante$Conceptos$Concepto$Impuestos$Traslados mx.bigdata.sat.cfdi.v33.schema.Comprobante$Conceptos$Concepto$Impuestos.traslados
at mx.bigdata.sat.cfdi.v33.schema.Comprobante$Conceptos$Concepto$Impuestos
at protected mx.bigdata.sat.cfdi.v33.schema.Comprobante$Conceptos$Concepto$Impuestos mx.bigdata.sat.cfdi.v33.schema.Comprobante$Conceptos$Concepto.impuestos
at mx.bigdata.sat.cfdi.v33.schema.Comprobante$Conceptos$Concepto
at protected java.util.List mx.bigdata.sat.cfdi.v33.schema.Comprobante$Conceptos.concepto
at mx.bigdata.sat.cfdi.v33.schema.Comprobante$Conceptos
at public mx.bigdata.sat.cfdi.v33.schema.Comprobante$Conceptos mx.bigdata.sat.cfdi.v33.schema.ObjectFactory.createComprobanteConceptos()
at mx.bigdata.sat.cfdi.v33.schema.ObjectFactory
alguna idea?
from factura-electronica.
Si, yo tuve el mismo error, me di cuenta que fue corregido en la ultima version de la libreria, intenta con este jar:
https://drive.google.com/file/d/1eJ1_Erb-OBLSI7MmxcaP_MjflW4owqn-/view
vas a tener que cambiar algunos de los objetos como... MonedaPago
from factura-electronica.
Gracias, voy a probar con tu jar. La version que tengo le hice checkout a mediados de julio y empece a timbrar a principios de agosto, pero hace 1 semana me pidieron implementar Pagos, a ver si no me mueve mucho lo que ya tengo jejeje
Saludos, gracias
from factura-electronica.
@turbinux Muchas gracias por la informacion para agregar la linea
CFDv33 cfd = new CFDv33(comp,"mx.bigdata.sat.common.pagos.schema");
Al parecer ya funcionó la generación del comprobante, unicamente falta hacer pruebas con el pac para validar que me lo certifique correctamente.
Por cierto, el SAT dio prorroga hasta el 31 de Dic, por si tienen que hacer sus proyectos tengan un poco mas de tiempo.
Saludos
from factura-electronica.
@danielfigueroaj Te comparto el codigo como lo estoy generando:
public static Comprobante createComprobante() throws Exception {
ObjectFactory of = new ObjectFactory();
Comprobante comp = of.createComprobante();
comp.setVersion("3.3");
comp.setSerie("P");
comp.setFolio("12345");
comp.setFecha(DatatypeFactory.newInstance().newXMLGregorianCalendar(2017, 11, 10, 0, 0, 0, DatatypeConstants.FIELD_UNDEFINED, DatatypeConstants.FIELD_UNDEFINED));
comp.setTotal(new BigDecimal("0"));
comp.setSubTotal(new BigDecimal("0"));
comp.setMoneda(CMoneda.XXX);
comp.setTipoDeComprobante(CTipoDeComprobante.P);
comp.setLugarExpedicion("03240");
comp.setEmisor(createEmisor(of));
comp.setReceptor(createReceptor(of));
comp.setConceptos(createConceptos(of));
Complemento cm = of.createComprobanteComplemento();
cm.getAny().add(createPagos(of));
comp.getComplemento().add(cm);
return comp;
}
private static Pagos createPagos(ObjectFactory of) throws Exception{
Pagos pgs = of.createPagos();
Pagos.Pago pg = of.createPagosPago();
Pagos.Pago.DoctoRelacionado d = of.createPagosPagoDoctoRelacionado();
pgs.setVersion("1.0");
pg.setFechaPago(DatatypeFactory.newInstance().newXMLGregorianCalendar(2017, 11, 10, 0, 0, 0, DatatypeConstants.FIELD_UNDEFINED, DatatypeConstants.FIELD_UNDEFINED));
pg.setFormaDePagoP("03");
pg.setMonedaP(CMoneda.MXN);
pg.setMonto(new BigDecimal("11600"));
d.setIdDocumento("5201CB31-9C12-49CC-BF94-3F05AF07DAB1");
d.setMonedaDR(CMoneda.MXN);
d.setMetodoDePagoDR(CMetodoPago.PPD);
d.setNumParcialidad(BigInteger.ONE);
d.setImpSaldoAnt(new BigDecimal("11600.00"));
d.setImpPagado(new BigDecimal("11600.00"));
d.setImpSaldoInsoluto(BigDecimal.ZERO);
pg.getDoctoRelacionado().add(d);
pgs.getPago().add(pg);
return pgs;
}
Espero que este fragmento de codigo sea de tu ayuda
from factura-electronica.
@czarcj eso estaria genial, lo que ayuda un poco es que no hay muchos atributos en el nodo pagos y construirlo como esta ahorita no es tan tan complicado, pero si se puede optimizar eso, como dices, nos ayudaria muchisimo a todos.
Gracias por tu codigo, ya habia logrado armar tambien mis objetos para el complemento basandome en lo que pusiste en tu post inicial.
Estaria bien tambien incluir en Examples del proyecto, la forma de generar un comprobante con complemento
from factura-electronica.
@czarcj , ten cuidado con ese detalle, ya que JAXB no te permite usar el mismo catálogo en 2 lugares distintos, no se si por convicción de JAXB o si sea con cualquier librería.
De hecho si te fijas en el error, dice: "Two classes have the same XML type", debido a esto se tuvieron que separar algunos catálogos (se modificó el XSD del SAT apra agregarle dichos catálogos y que no marcara este error)
Si logras unificarlo sin que JAXB falle, el cambio es bienvenido.
from factura-electronica.
Buenas tardes, estoy utilizando la version del jar que publicaron en la url que" turbinux commented on Nov 23" publico y me manda el siguiente error:
Exception in thread "Thread-6" java.lang.NoClassDefFoundError: mx/bigdata/sat/cfdi/v33/schema/ObjectFactory
at virtualinvoice.model.provider.ProviderCFDv33.toComprobante(ProviderCFDv33.java:48)
at virtualinvoice.model.factory.CFDProviderFactory.getCFDv33(CFDProviderFactory.java:119)
at virtualinvoice.model.factory.CFDProviderFactory.getCFD(CFDProviderFactory.java:38)
at virtualinvoice.model.InvoiceBO.generateCFD(InvoiceBO.java:223)
at virtualinvoice.model.InvoiceBO.processInvoices(InvoiceBO.java:150)
at virtualinvoice.model.ProcessDispatcher.process(ProcessDispatcher.java:92)
at virtualinvoice.model.ProcessRunnable.run(ProcessRunnable.java:24)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: mx.bigdata.sat.cfdi.v33.schema.ObjectFactory
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1333)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167)
Agradeceria su apoyo
from factura-electronica.
Hola a todos, anteriormente comente que estaba trabajando en una version modificada del jar para utilizar un solo object factory para el complemento de pagos. Les comparto el link de descarga y dentro del zip viene el ejemplo de como utilizarlo. Ya hice pruebas con mi PAC y todo funciona correctamente.
https://www.dropbox.com/s/3zowwufksy67fiv/cfdi-base-0.3.0-bin.zip?dl=0
@dpacanins espero que sea de tu apoyo esta version de la libreria.
P.D como soy nuevo con Git no supe como hacer una copia de los archivos fuente para poder integrarlos a la pagina del proyecto.
from factura-electronica.
Gracias czarcj
ya estoy urtilizando el jar que compartiste e instancie el "ObjectFactory" como lo indicas en tu ejemplo y me sigue enviando el mismo error
Exception in thread "Thread-6" java.lang.NoClassDefFoundError: mx/bigdata/sat/cfdi/v33/schema/ObjectFactory
at virtualinvoice.model.provider.ProviderCFDv33.toComprobante(ProviderCFDv33.java:61)
agradezco tu apoyo y felices fiestas
from factura-electronica.
@dpacanins Revisa que tengas integrados todos los jars de las dependencias en tu proyecto, en las clases donde usas la libreria, tengas todos los imports (como en los ejemplos) y que estes utilizando una version de java 1.7+. Te recomiendo que hagas una prueba en seco de la libreria que te mande o de la de turbinux en un proyecto nuevo y pruebes que no sea algo de tu java.
Saludos y felices fiestas
from factura-electronica.
Hola @czarcj ya realice la prueba en seco como sugieres y no fallo, en el proyecto que tengo de CFDI ya revise que tuviera todos los import de las clases que estoy utilizando y no me hace falta ninguno, y me sigue enviando el mismo error:
Exception in thread "Thread-6" java.lang.NoClassDefFoundError: mx/bigdata/sat/cfdi/v33/schema/ObjectFactory
at virtualinvoice.model.provider.ProviderCFDv33.toComprobante(ProviderCFDv33.java:62)
at virtualinvoice.model.factory.CFDProviderFactory.getCFDv33(CFDProviderFactory.java:119)
at virtualinvoice.model.factory.CFDProviderFactory.getCFD(CFDProviderFactory.java:38)
at virtualinvoice.model.InvoiceBO.generateCFD(InvoiceBO.java:223)
at virtualinvoice.model.InvoiceBO.processInvoices(InvoiceBO.java:150)
at virtualinvoice.model.ProcessDispatcher.process(ProcessDispatcher.java:92)
at virtualinvoice.model.ProcessRunnable.run(ProcessRunnable.java:24)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: mx.bigdata.sat.cfdi.v33.schema.ObjectFactory
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1333)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167)
... 8 more
tengo la version 1.7 de java y netbeans 8.0.2
from factura-electronica.
buen dia @czarcj
estoy utilizando la libreria que pusiste a disposicion más arriba, pero al momento de trabajar con complementos detallista al momento de compilar me envia el mensaje de error
El complemento mx.bigdata.sat.common.detallista.schema.Detallista@3239745d aún no ha sido declarado.
que es un mensaje de error del metodo "private String getSchemaLocation() throws Exception " el CFDI en la clase"public final class CFDv33 implements CFDI33 "
es aqui:
if (c instanceof mx.bigdata.sat.cfdi.schema.TimbreFiscalDigital) {
schema += " http://www.sat.gob.mx/TimbreFiscalDigital http://www.sat.gob.mx/sitio_internet/cfd/TimbreFiscalDigital/TimbreFiscalDigitalv11.xsd";
addNamespace("http://www.sat.gob.mx/TimbreFiscalDigital", "tfd");
} else if (c instanceof mx.bigdata.sat.common.nomina.v12.schema.Nomina) {
schema += " http://www.sat.gob.mx/nomina12 http://www.sat.gob.mx/sitio_internet/cfd/nomina/nomina12.xsd";
addNamespace("http://www.sat.gob.mx/nomina12", "nomina12");
} else if (c instanceof mx.bigdata.sat.common.implocal.schema.ImpuestosLocales) {
schema += " http://www.sat.gob.mx/implocal http://www.sat.gob.mx/sitio_internet/cfd/implocal/implocal.xsd";
addNamespace("http://www.sat.gob.mx/implocal", "implocal");
} else if (c instanceof mx.bigdata.sat.common.pagos.schema.Pagos) {
schema += " http://www.sat.gob.mx/Pagos http://www.sat.gob.mx/sitio_internet/cfd/Pagos/Pagos10.xsd";
addNamespace("http://www.sat.gob.mx/Pagos", "pago10");
} else {
System.out.println("El complemento " + c + " aún no ha sido declarado.");
}
La version que compartiste no trae este esquema integrado en la validación y es por eso que da ese error, ya revise la version que esta disponible en el Git en ambos branch´s y tampoco la integran, ademas la version que tu publicaste es la que me funciono, te queria pedir de favor si podrias integrar este esquema al metodo mencionado o pasarme el proyecto para integrar las lineas y compilarlo.
ahora si lo que tu decidas
saludos
from factura-electronica.
Buen dia @turbinux
oye hace una hora postie esto:
buen dia @czarcj
estoy utilizando la libreria que pusiste a disposicion más arriba, pero al momento de trabajar con complementos detallista al momento de compilar me envia el mensaje de error
El complemento mx.bigdata.sat.common.detallista.schema.Detallista@3239745d aún no ha sido declarado.
que es un mensaje de error del metodo "private String getSchemaLocation() throws Exception " el CFDI en la clase"public final class CFDv33 implements CFDI33 "
es aqui:
if (c instanceof mx.bigdata.sat.cfdi.schema.TimbreFiscalDigital) {
schema += " http://www.sat.gob.mx/TimbreFiscalDigital http://www.sat.gob.mx/sitio_internet/cfd/TimbreFiscalDigital/TimbreFiscalDigitalv11.xsd";
addNamespace("http://www.sat.gob.mx/TimbreFiscalDigital", "tfd");
} else if (c instanceof mx.bigdata.sat.common.nomina.v12.schema.Nomina) {
schema += " http://www.sat.gob.mx/nomina12 http://www.sat.gob.mx/sitio_internet/cfd/nomina/nomina12.xsd";
addNamespace("http://www.sat.gob.mx/nomina12", "nomina12");
} else if (c instanceof mx.bigdata.sat.common.implocal.schema.ImpuestosLocales) {
schema += " http://www.sat.gob.mx/implocal http://www.sat.gob.mx/sitio_internet/cfd/implocal/implocal.xsd";
addNamespace("http://www.sat.gob.mx/implocal", "implocal");
} else if (c instanceof mx.bigdata.sat.common.pagos.schema.Pagos) {
schema += " http://www.sat.gob.mx/Pagos http://www.sat.gob.mx/sitio_internet/cfd/Pagos/Pagos10.xsd";
addNamespace("http://www.sat.gob.mx/Pagos", "pago10");
} else {
System.out.println("El complemento " + c + " aún no ha sido declarado.");
}
La version que compartiste no trae este esquema integrado en la validación y es por eso que da ese error, ya revise la version que esta disponible en el Git en ambos branch´s y tampoco la integran, ademas la version que tu publicaste es la que me funciono, te queria pedir de favor si podrias integrar este esquema al metodo mencionado o pasarme el proyecto para integrar las lineas y compilarlo.
ahora si lo que tu decidas
no se si me puedas ayudar a agregar esta validacion en tu jar que compartiste de la API mas arriba y que pusiste a disposición
saludos
from factura-electronica.
Que tal chicos, @czarcj @dpacanins podría alguno compartir el jar o el proyecto para usarlo con java 1.8 por favor? El enlace de dropbox esta caído.
Saludos
from factura-electronica.
@mario-mtz Este repositorio parece ya estar descontinuado, el nuevo es este:
https://github.com/GrupoCorasa/factura-electronica
Ahí busca la liga que dice: "Descarga la última versión de las librerías" o igual lo puedes encontrar en el repositorio central http://mvnrepository.com/artifact/mx.grupocorasa.cfdi/cfdi-base/3.3.2
Aun si hubiera estado funcionando esa liga de dropbox, yo no recomendaría instalar el jar nomás así, ya que tiene otras dependencias (p.e. jaxb), así que a menos que quieras que te arroje un fabuloso java.lang.NoClassDefFoundError recomendaría usar un administrador de dependencias como maven, Apache Ivy, Gradle, etc.
¿O acaso necesitas la versión específica de @czarcj ? en cuyo caso creo que sería mejor preguntarle a @hortegag91 si este problema ya está arreglado en el nuevo repositorio.
Saludos.
from factura-electronica.
Asi es, este repo ha dejado de tener mantenimiento, el nuevo es el que comenta @jalgaba , actualmente ese repo debería funcionar de manera completa y sin problemas, actualmente lo usamos en varios proyectos.
Si tuvieran cualquier inconveniente les agradecería si pudieran levantar un issue en ese repo.
Saludos.
from factura-electronica.
Related Issues (20)
- CFDv33.sellar: NoSuchMethodError: org.apache.commons.codec.binary.Base64 HOT 7
- CFDI33101 El campo Fecha no cumple con el patrón requerido. HOT 1
- CFDI v33 jar HOT 1
- Error al tratar de compilar el proyecto me podrian ayudar? HOT 1
- Error al intentar leer la llave HOT 1
- ejemplo implementacion cdfiv33
- Unsupported major.minor version 52.0 HOT 5
- Exception in thread "Thread-6" Exception in thread "main" Exception in thread "Thread-5"
- Exception in thread "Thread-6" java.lang.OutOfMemoryError: PermGen space
- Como agrego SchemaLocation a Detallista? HOT 5
- Problemas con complemento detallista
- Actualizar versión en el repositorio central de maven HOT 5
- Error al compilar cfdi-base-0.3.0 HOT 4
- Agregar complemento Dividendos HOT 1
- Complemento de Pago HOT 2
- Recuperar complemento de Pagos HOT 1
- Error al validar el complemento de pago Publico En General forma de pago distinta de efectivo HOT 3
- Error al crear xml de complemento de pago HOT 6
- Complemento de Pago error XML mal formado: cvc-complex-type.2.4.c HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from factura-electronica.