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

Validar complementos #23

Closed elmer-garduno closed 11 years ago

elmer-garduno commented 11 years ago

Original author: 19fidela...@gmail.com (December 20, 2010 18:07:38)

¿Cuáles pasos hay que seguir para reproducir el problema?

  1. Validar un xml sellado por un tercero 2.Aparece error al fina 3.

¿Cuál versión del producto está utilizando? 0.1.5

Error javax.xml.bind.MarshalException - with linked exception: [javax.xml.transform.TransformerException: org.xml.sax.SAXParseException: cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'psgecfd:PrestadoresDeServiciosDeCFD'.]

Original issue: http://code.google.com/p/factura-electronica/issues/detail?id=23

elmer-garduno commented 11 years ago

From bigdata.mx on December 20, 2010 19:27:48 Parece ser un problema con los complementos y la validación.

Lo reviso y te comento como hay que manejarlo.

elmer-garduno commented 11 years ago

From bigdata.mx on February 04, 2011 23:09:02 Saludos, pudiste solucionar este problema? Tendrás un fragmento de la factura que nos puedas enviar borrando los datos personales para que podamos probar.

Gracias

elmer-garduno commented 11 years ago

From jnun...@gmail.com on April 26, 2011 21:08:41 Tengo un problema similar al intentar validar la factura adjunta me lanza este error:

C:\Downloads\Factura Electrónica\CFD_FE_OQOPG5402.xml cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'implocal:ImpuestosLocales'.

El código con el que invoco es:

public static void main(String[] args) {

    String file = "C:\\Downloads\\Factura Electrónica\\CFD_FE_OQOPG5402.xml";
    List<SAXParseException> errors;
    try {
        CFDv2 cfd;

        cfd = new CFDv2(new FileInputStream(file));

        ValidationErrorHandler handler = new ValidationErrorHandler();
        cfd.validar(handler);

        errors = handler.getErrors();

        if (errors.size() > 0) {
            for (SAXParseException e : errors) {
                System.err.printf("%s %s\n", file, e.getMessage());
            }
        }

    } catch (Exception ex) {
        Logger.getLogger(Comprobante.class.getName()).log(Level.SEVERE, null, ex);
    }
}
elmer-garduno commented 11 years ago

From macuja@gmail.com on May 06, 2011 01:32:18 Hola a todos,verifiquen esta solución, yo tambien me tope con ese problema, en mi caso con el complemento estado de cuenta, el error es el siguiente:

C:\CFDIv3_1.6\cfdi-base-0.1.6-SNAPSHOT>.\bin\cfdi validar ejemplos\AAA010101AAA2 0110505T162514.xml ejemplos\AAA010101AAA20110505T162514.xml cvc-complex-type.2.4.c: The matching wi ldcard is strict, but no declaration can be found for element 'ecb:EstadoDeCuent aBancario'.

Como lo corregi del SAT me descarge el ecb.xsd de la sig. liga: http://www.sat.gob.mx/sitio_internet/cfd/ecb/ecb.xsd

Para el caso de psgecfd el xsd debe de ser(si es que no ha cambiado en la nueva version de CFDI) http://www.sat.gob.mx/sitio_internet/cfd/psgecfd/psgecfd.xsd

Para el caso de implocal el xsd debe de ser : http://www.sat.gob.mx/sitio_internet/cfd/implocal/implocal.xsd

Para mi caso descarge el archivo ecb.xsd y lo coloque dentro de la libreria en Other Sources > src/main/resources > xsd.v3

Ahora en la clase CFDv3.java dentro de la libreria( mx.bigdata.sat.cfdi) agrego una nueva variable al igual que para TimbreFiscal :

private static final String XSD_ECB = "/xsd/v3/ecb.xsd";

y en esta misma clase en la funcion validar agrego al array de Source , el nuevo esquema :

Source[] schemas = new Source[] {
  new StreamSource(getClass().getResourceAsStream(XSD)),
  new StreamSource(getClass().getResourceAsStream(XSD_TFD)),
  new StreamSource(getClass().getResourceAsStream(XSD_ECB))  //Nuevo esquema de ecb

};

Con este cambio ya pude validar mi cfdi con el complemento ecb, tambien lo pase en el validador del SAT, ya timbrado y pasa todo bien, para su caso deberia de ser lo mismo con sus complementos, ojala y puedan subir el cambio a la librería, para que quede mas completa, tambien lo verifique cuando no lleva complemento y funciona asi que no deberia afectar a los que no usan complemento.

Con esto xjc genera tambien el codigo correspondiente para el complemento, para manejarlo con objetos, esta parte apenas la revisare, pero al parecer es lo mismo que con el TimbreFiscal que implemento bigdata...@gmail.com.

Saludos.

elmer-garduno commented 11 years ago

From bigdata.mx on May 07, 2011 05:45:06 Muchas gracias por la información integraremos estos cambios a la librería.

elmer-garduno commented 11 years ago

From bigdata.mx on December 31, 2011 22:30:22 Se agregó soporte para validar todos los complementos en las clases CFDv22 y CFDv32.

Gracias por la información.

Saludos