Closed GoogleCodeExporter closed 8 years ago
Porfavor ayuda!!!
Original comment by cristima...@gmail.com
on 3 Feb 2011 at 10:01
Hola disculpa la demora en contestar, estaba fuera.
Dejame revisar el sistema y mañana tienes una respuesta.
Saludos
Original comment by bigdata.mx
on 4 Feb 2011 at 3:10
Ok, espero tu respuesta y te comento que tambien la parte del schemaLocation me
lo genera con http://www.sat.gob.mx/cfd y creo que deberia ser
http://www.sat.gob.mx/cfd/2 , habria algunoa forma de cambiarlo?
mil gracias!
Original comment by cristima...@gmail.com
on 4 Feb 2011 at 10:41
Original comment by bigdata.mx
on 4 Feb 2011 at 11:10
Original comment by bigdata.mx
on 4 Feb 2011 at 11:13
Hola ya están listos los cambios, puedes bajar la nueva versión
http://code.google.com/p/factura-electronica/downloads/detail?name=cfdi-base-0.1
.6-SNAPSHOT-bin.zip y ver el ejemplo en la clase
mx.bigdata.sat.cfdi.examples.Main y
mx.bigdata.sat.cfdi.examples.ExampleCFDFactory
En resumen, para poder agregar las Addendas es necesario crear unas Clases,
puedes incluso ser inner classes que describan la addenda que quieres agregar,
en tu caso sería
private static Addenda createAddenda(ObjectFactory of) {
Addenda addenda = of.createComprobanteAddenda();
Disney c = new Disney();
c.transaction = new Transaction();
c.transaction.purchaseOrder = "4600364283";
addenda.getAny().add(c);
return addenda;
}
@XmlRootElement(name="Disney")
private final static class Disney {
@XmlElement(name="Transaction")
Transaction transaction;
}
@XmlRootElement
private final static class Transaction {
@XmlAttribute(name="PurchaseOrder")
String purchaseOrder;
}
Es muy importante que agregues el nombre del package donde creaste estas clases
en la línea donde creas el CFDv3,
CFDv3 cfd = new CFDv3(ExampleCFDFactory.createComprobante(),
"mx.bigdata.sat.cfdi.examples");
Y finalmente que tu programa pueda encontrar un archivo llamado jaxb.index en
donde están las clases de ese package y que el archivo contenga el nombre de
tus clases que quieres agregar a las Addendas una por renglón.
ExampleCFDFactory$Company
La verdad está un poco enredado pero así es como funciona JAXB, sigo aquí
para cualquier duda que tengas.
Original comment by bigdata.mx
on 4 Feb 2011 at 11:28
Lo del schemaLocation también está corregido en esta versión.
Original comment by bigdata.mx
on 4 Feb 2011 at 11:30
Original comment by bigdata.mx
on 4 Feb 2011 at 11:35
Uff excelente, mil gracias de verdad, ya baje la nueva version!
una pregunta mas ;) para el CFDv2 tambien estaria funcionando?, porque estoy
ocupando las dos versiones
gracias gracias de verdad! :)
Original comment by cristima...@gmail.com
on 4 Feb 2011 at 11:48
Mañana te subo los cambios para CFDv2
Saludos
Original comment by bigdata.mx
on 5 Feb 2011 at 2:19
[deleted comment]
Listo los cambios para CFDv2.
Saludos
Original comment by bigdata.mx
on 8 Feb 2011 at 4:21
MUCHAS GRACIAS!!!
Original comment by cristima...@gmail.com
on 8 Feb 2011 at 4:19
[deleted comment]
Hola de nuevo, estuve tratando de generar la addenda y no he podido, para el
cfdv3, mira si pongo en mi clase tu sig codigo, todo sale OK:
CFDv3 cfda = new CFDv3(ExampleCFDFactory.createComprobante(), "mx.bigdata.sat.cfdi.examples");
mx.bigdata.sat.cfdi.schema.Comprobante selladoa = cfda.sellarComprobante(key, cert);
System.err.println(selladoa.getSello());
cfda.validar();
cfda.verificar();
cfda.guardar(System.out);
pero si pongo mi codigo asi:
CFDv3 cfde = new CFDv3(comprobanteFEI.createComprobante(), "facturae");
mx.bigdata.sat.cfdi.schema.Comprobante selladoe = cfde.sellarComprobante(key, cert);
System.err.println(selladoe.getSello());
cfde.validar();
cfde.verificar();
cfde.guardar(System.out);
y dentro de facturae.comprobanteFEI tengo la addenda como tu ejemplo asi:
public final class comprobanteFEI {
public static Comprobante createComprobante() throws Exception {
ObjectFactory of = new ObjectFactory();
Comprobante comp = of.createComprobante();
comp.setVersion("3.0");
...
...
comp.setAddenda(createAddenda(of));
return comp;
}
private static Addenda createAddenda(ObjectFactory of) {
Addenda addenda = of.createComprobanteAddenda();
Company c = new Company();
c.transaction = new Transaction();
c.transaction.purchaseOrder = "4600364283";
addenda.getAny().add(c);
return addenda;
}
@XmlRootElement(name="Company")
private final static class Company {
@XmlElement(name="Transaction")
Transaction transaction;
}
@XmlRootElement
private final static class Transaction {
@XmlAttribute(name="PurchaseOrder")
String purchaseOrder;
}
}
compila todo ok, pero al generar el cfdi me marca el sig error:
javax.xml.bind.MarshalException
- with linked exception:
[com.sun.istack.SAXException2: unable to marshal type
"facturae.comprobanteFEI$Company" as an element because it is missing an
@XmlRootElement annotation]
Ya no se por donde verle, por eso te pido tu tan amable ayuda, ya estoy un
poquito desesperada :( , no se si las librerias que estoy ocupando estan mal o
si estoy compilando como no debe ser (utilizo JBuilder), en fin podrias
asesorarme de nuevo porfavor?
gracias,
Cristina
Original comment by cristima...@gmail.com
on 10 Feb 2011 at 3:43
Ok creo que el problema es que no tienes el archivo jaxb.index en el mismo
package que tu clase comprobanteFEI es decir en el directorio facturae.
El contenido del archivo debe ser el siguiente:
comprobanteFEI$Company
Asegurate de que el archivo también esté en el directorio donde están
compiladas las clases con extensión .class
Cualquier duda avisame.
Saludos
Original comment by bigdata.mx
on 12 Feb 2011 at 7:26
Gracias, si tengo el archivo jaxb.index en el lugar que me dices, de hecho si
se lo quito me marca un error diferente, que otra cosa crees que pueda ser?
Original comment by cristima...@gmail.com
on 12 Feb 2011 at 9:28
Prueba cambiar el nombre de la clase en el archivo jaxb.index por algo que no
exista como:
comprobanteFEI$Campany
Y me avisas que sale porfa.
Original comment by bigdata.mx
on 12 Feb 2011 at 9:38
ok, mira me sale esto:
javax.xml.bind.JAXBException: error loading class "comprobanteFEI$Companya"
listed in facturae/jaxb.index, make sure that entries are accessable on
CLASSPATH and of the form "ClassName" or "OuterClass.InnerClass", not
"ClassName.class" or "fully.qualified.ClassName"
- with linked exception:
[java.lang.ClassNotFoundException: facturae.comprobanteFEI$Companya]
Original comment by cristima...@gmail.com
on 13 Feb 2011 at 12:02
Ok, entonces regrésalo a como estaba y si puedes mándame la clase completa
como attachment y te ayudo a compilarla.
Saludos
Original comment by bigdata.mx
on 13 Feb 2011 at 2:59
Hola, te mando la clase, es realmente la misma que tu ocupas de ejemplo pero
me imagino que la compilas de otra forma, y bueno si ya te funciona a ti, a
ver si me puedes explicar como deberia compilarla, porque actualmente lo
hago desde el jbuilder
la llamada a esta clase la hago desde un servlet utilizando igual lo mismo
que tu ejemplo:
CFDv3 cfde = new CFDv3(comprobanteFEI.createComprobante(), "facturae");
mx.bigdata.sat.cfdi.schema.Comprobante selladoe =
cfde.sellarComprobante(key, cert);
System.err.println(selladoe.getSello());
cfde.validar();
cfde.verificar();
cfde.guardar(System.out);
muchas gracias de nuevo :) ,
Cristina
Original comment by cristima...@gmail.com
on 13 Feb 2011 at 3:34
No me llegó el attachment, lo puedes poner desde la página del issue.
http://code.google.com/p/factura-electronica/issues/detail?id=32
Abajo de donde escribes el mensaje dice Attach a file
Original comment by bigdata.mx
on 13 Feb 2011 at 4:21
ok, listo va
Original comment by cristima...@gmail.com
on 13 Feb 2011 at 6:07
Attachments:
Hola, ya revise las clases y no parece haber ningún problema. Te mando las
clases y unas instrucciones de como probarlo desde la linea de comandos para
que revises la estructura que debe de tener en tu jbuilder.
Abre una linea de comandos de MS-DOS y cambiate al directorio donde está el
directorio cfdi-base-0.1.6-SNAPSHOT y copia ahí mismo el archivo
comprobanteFEI.java.
Luego exporta las librerias al classpath usando:
set
CLASSPATH=cfdi-base-0.1.6-SNAPSHOT\cfdi-base-0.1.6-SNAPSHOT.jar;cfdi-base-0.1.6-
SNAPSHOT\lib\guava-r06.jar;cfdi-base-0.1.6-SNAPSHOT\lib\jaxb-api-2.1.jar;cfdi-ba
se-0.1.6-SNAPSHOT\lib\jaxb-impl-2.1.12.jar;.
En el mismo directorio compila con
javac -d . comprobanteFEI.java
Luego copia el archivo jaxb.index a el directorio facturae y ejecuta el comando
java facturae.comprobanteEFI
Esto me funcionó con las clases que te mando.
Avisame cualquier cosa.
Saludos
Original comment by bigdata.mx
on 14 Feb 2011 at 2:55
Attachments:
Hola,
pues si me ayudaste mucho porque finalmente el error era el compilador
que esta usando el jbuilder :( , gracias de verdad, ahora el unico detallito
que veo es que me sale el cfdi con un namespace cfdi: en el xml y para el
cfd me pone ns2: esto estara bien? porque si valido los xml en el validador
del sat salen como correctos pero queria preguntar tu opinion de cualquier
forma sobre esto y si de casualidad sabras como puedo generar el xsd de mi
clase de Disney para poder validar la addenda :) abusando de tu experiencia
muchas gracias de nuevo,
Cristina
El 13 de febrero de 2011 20:56, <factura-electronica@googlecode.com>escribi�:
Original comment by cristima...@gmail.com
on 14 Feb 2011 at 5:47
Te mande un mesaje mas y ahora que crees, que tambien necesito poner unos datos
complemento, funcionaria igual que la addenda el campo <complemento> ?
gracias Gracias gracias :)
Original comment by cristima...@gmail.com
on 14 Feb 2011 at 8:14
Hola, no creo que tengas problema con el namespace en la versión 2, de
cualquier forma voy a trabajar en la solución para quitarlo.
Respecto a los comprobantes, estoy casi seguro que funciona igual. Te funcionó?
Saludos
Original comment by bigdata.mx
on 21 Feb 2011 at 8:20
Hola Cristina, para avisarte que ya modifiqué las librerías para que puedas
cambiar el prefijo del namespace que te asigna por default. El procedimiento es
el siguiente:
1. Crea una clase package-info.java en el mismo package que tus clases de la
Addenda y agrega el siguiente contenido:
@XmlSchema(
namespace="http://www.bigdata.mx/cfdi/example",
elementFormDefault = XmlNsForm.QUALIFIED)
package mx.bigdata.sat.cfdi.examples;
import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;
Con el namespace que quieras utilizar en tu caso.
2. En el código donde creas el CFDv3 agrega la siguiente linea:
CFDv3 cfd = new CFDv3(ExampleCFDFactory.createComprobante(),
"mx.bigdata.sat.cfdi.examples");
cfd.addNamespace("http://www.bigdata.mx/cfdi/example", "example");
Esto mapea tu nuevo namespace al prefijo "example" y te generará una Addenda
como la siguiente:
<cfdi:Addenda>
<example:Company>
<example:Transaction PurchaseOrder="4600364283"/>
</example:Company>
</cfdi:Addenda>
Si quieres que el namespace de la Addenda esté vacío utiliza addNamespace de
la siguiente forma:
cfd.addNamespace("http://www.bigdata.mx/cfdi/example", "");
Cualquier duda puedes revisar el ejemplo en
http://code.google.com/p/factura-electronica/source/browse#svn%2Ftrunk%2Fcfdi-ba
se%2Fsrc%2Fmain%2Fjava%2Fmx%2Fbigdata%2Fsat%2Fcfdi%2Fexamples
Saludos
Original comment by bigdata.mx
on 26 Feb 2011 at 8:52
Hola,
Yo voy utilizar varias adendas diferentes para varios clientes por lo que esta
forma me parece muy impractica ya que requiere de mucha programación y
especializacion para cada adenda. Se me ocurre la siguiente idea y quería
consultarla con ustedes que tienen más experiencia en el tema.
Por lo que entiendo el error viene en la validación así que esto es lo que se
me ocurre:
1) Enviar la adenda como xml tal y como lo hace cristina al iniciar este thread.
2) Generar las clases e index en un paquete (proyecto independiente) compilarlo
y agregarlo en vivo (a manera de plugin).
de esta manera no tendria que estar recompilando todo el proyecto ni agregando
el código para cada adenda que necesito generar.
Agradesco de antemano su ayuda.
Original comment by arabearb...@gmail.com
on 20 Sep 2011 at 8:38
De acuerdo con tus comentarios.
Si quieres lo discutimos.
Original comment by elmer.garduno@gmail.com
on 23 Sep 2011 at 6:04
Issue 41 has been merged into this issue.
Original comment by bigdata.mx
on 31 Dec 2011 at 12:27
Hola, ¿alguien ha implementado varias addendas? ya que tengo varias addendas
de acuerdo a cada cliente si tienen alguna idea de como hacer se lo agradezco
de antemano.
Saludos
Beto
Original comment by adura...@gmail.com
on 12 Apr 2012 at 6:22
BigData, espero estés bien me puedes ayudar tengo un problemita similar a la
compañera me esta arrojando este mensaje al ejecutar:
javax.xml.bind.MarshalException
- with linked exception:
[org.xml.sax.SAXParseException: cvc-complex-type.2.4.c: The matching wildcard
is strict, but no declaration can be found for element 'Company'.]
at javax.xml.bind.util.JAXBSource$1.parse(JAXBSource.java:225)
at javax.xml.bind.util.JAXBSource$1.parse(JAXBSource.java:210)
at com.sun.org.apache.xerces.internal.jaxp.validation.ValidatorHandlerImpl.validate(ValidatorHandlerImpl.java:698)
at com.sun.org.apache.xerces.internal.jaxp.validation.ValidatorImpl.validate(ValidatorImpl.java:97)
at javax.xml.validation.Validator.validate(Validator.java:127)
at mx.bigdata.sat.cfd.CFDv2.validar(CFDv2.java:141)
at mx.bigdata.sat.cfd.CFDv2.validar(CFDv2.java:130)
at mx.com.linarand.cfdws.ws.util.FacturaParsing.facturaToCFD(FacturaParsing.java:164)
at mx.com.linarand.cfdws.service.impl.CfdTratamientoServiceImpl.enviaFactura(CfdTratamientoServiceImpl.java:65)
at mx.com.linarand.cfdws.EnviaFacturaTest.enviaFactura(EnviaFacturaTest.java:35)
te envio como adjuntos los archivos, para ver si eres tan amable en ayudarme,
desde ya muchas gracias.
Original comment by adura...@gmail.com
on 16 Apr 2012 at 11:34
Attachments:
Puedes revisar el Issue 23 e Issue 50 ?
Quizá esa información te sirva si no avísanos.
Saludos
Original comment by bigdata.mx
on 17 Apr 2012 at 3:30
BigData, gracias por tu pronta respuesta, revisando los issues 23 y 50 hacen
mención a complementos, pero a mi me lo esta dando en la addenda que viene en
el CFDv2.XSD, crees que lo tenga que volver a descargar del SAT?
Utilizo STS 2.8.1 RELEASE y ya probe con Eclipse Helios y me marca lo mismo,
ojala y me puedas ayudar.. gracias
Original comment by adura...@gmail.com
on 17 Apr 2012 at 6:05
Hola, estoy configurando la CFDv3 y ya baje cfdi-base-0.1.6, pero me sigue
marcando el mismo error que a varias personas.
Mi error es:
Exception in thread "main" javax.xml.bind.MarshalException
- with linked exception:
[com.sun.istack.SAXException2: class Facturacion.ExampleCFDFactory$Company nor
any of its super class is known to this context.
javax.xml.bind.JAXBException: class Facturacion.ExampleCFDFactory$Company nor
any of its super class is known to this context.]
at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:318)
at com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:244)
at javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshallerImpl.java:130)
at mx.bigdata.sat.cfdi.CFDv3.copy(CFDv3.java:224)
at mx.bigdata.sat.cfdi.CFDv3.<init>(CFDv3.java:98)
at facturacion.facturaelectronica.main(facturaelectronica.java:22)
Caused by: com.sun.istack.SAXException2: class
Facturacion.ExampleCFDFactory$Company nor any of its super class is known to
this context.
javax.xml.bind.JAXBException: class Facturacion.ExampleCFDFactory$Company nor
any of its super class is known to this context.
at com.sun.xml.bind.v2.runtime.XMLSerializer.reportError(XMLSerializer.java:246)
at com.sun.xml.bind.v2.runtime.XMLSerializer.reportError(XMLSerializer.java:261)
at com.sun.xml.bind.v2.runtime.property.ArrayReferenceNodeProperty.serializeListBody(ArrayReferenceNodeProperty.java:118)
at com.sun.xml.bind.v2.runtime.property.ArrayERProperty.serializeBody(ArrayERProperty.java:152)
at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:332)
at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:699)
at com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.serializeBody(SingleElementNodeProperty.java:152)
at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:332)
at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsSoleContent(XMLSerializer.java:593)
at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeRoot(ClassBeanInfoImpl.java:320)
at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:494)
at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:315)
... 5 more
Caused by: javax.xml.bind.JAXBException: class
Facturacion.ExampleCFDFactory$Company 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.property.ArrayReferenceNodeProperty.serializeListBody(ArrayReferenceNodeProperty.java:108)
... 14 more
Java Result: 1
Original comment by ady.z...@gmail.com
on 20 Jun 2012 at 6:53
hola no he podido ageregar una adenda a mi xml
Exception in thread "main" javax.xml.bind.JAXBException: "project1" doesnt
contain ObjectFactory.class or jaxb.index
ese es el error q me marca y checando los demas comentarios agregue esl
archivo.indes a mi mismo directorio y ni asi puede
Original comment by jorgea.a...@gmail.com
on 19 Sep 2012 at 12:23
espero y me puedan ayudar gracias
Original comment by jorgea.a...@gmail.com
on 19 Sep 2012 at 12:23
La librería de factura-electronica ha sido migrada a GitHub para facilitar la
colaboración.
Los temas han sido migrados a
https://github.com/bigdata-mx/factura-electronica/issues/
Visítanos!
Original comment by bigdata.mx
on 21 Oct 2012 at 5:51
Original issue reported on code.google.com by
cristima...@gmail.com
on 2 Feb 2011 at 4:47