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

Addendas - The matching wildcard is strict, but no declaration can be found for element 'Company'. #160

Open aperezc48 opened 7 years ago

aperezc48 commented 7 years ago

Buenas tardes a todos, espero y alguien me pueda ayudar con el siguiente problema que tengo al querer generar mis Addendas para la versión 3.3 del CFDI. El error es el siguiente

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

Anteriormente se creaban correctamente las Addendas para la versión 3.2, no se que me este faltando para que tome el tag de Company.

La estructura en código para la generación de Addendas es la siguiente:

/**

Y la lleno con el siguiente método:

private Comprobante.Addenda generaAddenda(mx.bigdata.sat.cfdi.v33.schema.ObjectFactory factory, int transaccion) throws Exception { final Comprobante.Addenda addenda = factory.createComprobanteAddenda(); Company com = new Company(); // Contiene la lista final de campos Transaccion t = new Transaccion(); // Contiene la lista final de campos TransaccionDet td = new TransaccionDet(); // Contiene la lista de campos

    // Se obtinen las addendas registradas.
    final List<AddendaDTO> addendas = daoFac.getAddenda(transaccion);

    if (addendas != null) {
        for (AddendaDTO ad : addendas) {
            Campo cmp = new Campo();
            cmp.descripcion = ad.getDescripcion();
            String valor = ad.getValor();
            if (valor == null) {
                cmp.valor = "";
            } else {
                cmp.valor = valor;
            }                
            td.setCampo(cmp);
        }
        t.campos = td;
        com.transaccion = t;
        addenda.getAny().add(com);
        System.out.println("Se genero el nodo de Addenda correctamente.");
    } else {
        System.out.println("No se encontraron datos de Addenda.");
    }
    return addenda;
}

Además de que cuento con mi archivo jaxb.index que contiene lo siguiente:

CFDv33BO$Company

Si alguien me podría ayudar con este problema, por favor.

De ante mano muchas gracias por su ayuda. :smile:

hortegag91 commented 7 years ago

el archivo jaxb.index lo debes agregar dentro de src/main/resources y la misma ruta del paquete. Si lo estas haciendo asi te pido lo confirmes.

aperezc48 commented 7 years ago

Si lo estoy haciendo así, lo tengo en el paquete donde se encuentra mi clase encargada de generar el nodo de las Addendas, no se cual podría ser el problema realmente.

Gracias de ante mano.!

jjjimenez commented 6 years ago

Hola!

Justo hoy obtuve este error, y no puedo agregar la adenda! @aperezc48 pudiste solucionar? como lo hiciste? @hortegag91 me podrias describir un poco mas lo del archivo jaxb.index de tu comentario anterior?

De antemano gracias y Saludos !

OswaldoJaimeSolis commented 4 years ago

@jjjimenez crea tus beans con anotaciones propias de JAXB. Agregalos a tu comprobante ( comprobante.getAddenda().getAny().add(Bean)). Al crear tu cfdi33 pasa la referencia del paquete que las contiene ( ejemplo new CFDv33(comprobante, "pos.modelo.ventas.facturacion"))