Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
aperezc48 opened this issue May 5, 2017 · 4 comments

Comments

@aperezc48
Copy link

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:

/**
* Elemento Company
*/
@XmlRootElement(name = "Company")
public static final class Company {

    /**
     * The transaction.
     */
    @XmlElement(name = "Transaccion")
    public Transaccion transaccion;
}

/**
 * Elemento Transaccion
 */
@XmlRootElement
public static final class Transaccion {

    @XmlElement(name = "Campo")
    public TransaccionDet campos;
}

/**
 * Detalle de transaccion, contenedor de campos
 */
@XmlRootElement
public static final class TransaccionDet extends ArrayList<Campo> {

    public void setCampo(Campo c) {
        this.add(c);
    }

    @XmlAttribute(name = "Campo")
    public List<Campo> getCampo() {
        return this;
    }
}

/**
 * Clases estaticas que representan la estructura XML para los campos de
 * addenda
 */
/**
 * Elemento Campo
 */
@XmlRootElement
public static final class Campo {

    @XmlAttribute(name = "Descripcion")
    public String descripcion;

    @XmlAttribute(name = "Valor")
    public String valor;

}

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. 😄

@hortegag91
Copy link
Collaborator

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
Copy link
Author

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
Copy link

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
Copy link

@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"))

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants