Elementos de CFDI versión 4.0
El espacio de nombres de CfdiUtils\Elements\Cfdi40
permite trabajar en forma más fácil
con los nodos con nombres y acciones específicas y es la base de la creación de un CFDI 4.0.
Es la implementación de elementos, que son nodos con métodos de ayuda.
Comprobante
Representa el nodo raíz Comprobante
.
Contiene los siguientes métodos de ayuda:
getInformacionGlobal(): InformacionGlobal
: Crea (si no existe) y obtiene el nodo únicoInformacionGlobal
.addInformacionGlobal(array $attributes = []): InformacionGlobal
: Agrega y devuelve el único nodoInformacionGlobal
.addCfdiRelacionados(array $attributes = []): CfdiRelacionados
: Agrega y devuelve un nuevo nodoCfdiRelacionados
.multiCfdiRelacionados(array ...$elementAttributes): Comprobante
: Agrega nuevos nodosCfdiRelacionados
, es una forma rápida de llamar al métodomultiTraslado
múltiples veces.getEmisor(): Emisor
: Crea (si no existe) y obtiene el nodo únicoEmisor
.addEmisor(array $attributes = []): Emisor
: Agrega y devuelve el único nodoEmisor
.getReceptor(): Receptor
: Crea (si no existe) y obtiene el nodo únicoReceptor
.addReceptor(array $attributes = []): Receptor
: Agrega y devuelve el único nodoReceptor
.getConceptos(): Conceptos
: Crea (si no existe) y obtiene el nodo únicoConceptos
.addConcepto(array $attributes = [], array $children = []): Concepto
: Agrega y devuelve un nuevo nodoConcepto
.getImpuestos(): Impuestos
: Crea (si no existe) y obtiene el nodo únicoImpuestos
.addImpuestos(array $attributes = []): Impuestos
: Agrega y devuelve el único nodoImpuestos
.addTraslado(array $attributes = []): Traslado
: Agrega y devuelve un nuevo nodoTraslado
(enImpuestos/Traslados
).multiTraslado(array ...$elementAttributes): Comprobante
: Agrega nuevos nodoTraslado
, es una forma rápida de llamar al métodoaddTraslado
múltiples veces.addRetencion(array $attributes = []): Retencion
: Agrega y devuelve un nuevo nodoRetencion
(enImpuestos/Retenciones
).multiRetencion(array ...$elementAttributes): Comprobante
: Agrega nuevos nodos deRetencion
, es una forma rápida de llamar al métodoaddRetencion
múltiples veces.getComplemento(): Complemento
: Crea (si no existe) y obtiene el nodo únicoComplemento
.addComplemento(NodeInterface $children): Comprobante
: Agrega el nodo$children
dentro del único nodoComplemento
.getAddenda(): Addenda
: Crea (si no existe) y obtiene el nodo únicoAddenda
.addAddenda(NodeInterface $children): Comprobante
: Agrega el nodo$children
dentro del único nodoAddenda
.
CfdiRelacionados
Representa el nodo Comprobante/CfdiRelacionados
.
addCfdiRelacionado(array $attributes = []): CfdiRelacionado
: Agrega y devuelve un nuevo nodoCfdiRelacionado
.multiCfdiRelacionado(array ...$elementAttributes): CfdiRelacionados
: Agrega nuevos nodos deCfdiRelacionado
, es una forma rápida de llamar al métodoaddCfdiRelacionado
múltiples veces.
CfdiRelacionado
Representa el nodo Comprobante/CfdiRelacionados/CfdiRelacionado
.
Emisor
Representa el nodo Comprobante/Emisor
.
Receptor
Representa el nodo Comprobante/Receptor
.
Conceptos
Representa el nodo Comprobante/Conceptos
.
addConcepto(array $attributes = []): Concepto
: Agrega y devuelve un nuevo nodoConceptos
.multiConcepto(array ...$elementAttributes): Conceptos
: Agrega nuevos nodos deConcepto
, es una forma rápida de llamar al métodoaddConcepto
múltiples veces.
Concepto
Representa el nodo Comprobante/Conceptos/Concepto
.
getImpuestos(): ConceptoImpuestos
: Crea (si no existe) y obtiene el nodo únicoConceptoImpuestos
.addTraslado(array $attributes = []): Traslado
: Agrega y devuelve un nuevo nodoTraslado
(enImpuestos/Traslados
).multiTraslado(array ...$elementAttributes): Concepto
: Agrega nuevos nodosTraslado
, es una forma rápida de llamar al métodoaddTraslado
múltiples veces.addRetencion(array $attributes = []): Retencion
: Agrega y devuelve un nuevo nodoRetencion
(enImpuestos/Retenciones
).multiRetencion(array ...$elementAttributes): Concepto
: Agrega nuevos nodosRetencion
, es una forma rápida de llamar al métodoaddRetencion
múltiples veces.addInformacionAduanera(array $attributes = []): InformacionAduanera
: Agrega y devuelve un nuevo nodoInformacionAduanera
.multiInformacionAduanera(array ...$elementAttributes): Concepto
: Agrega nuevos nodosInformacionAduanera
, es una forma rápida de llamar al métodoaddInformacionAduanera
múltiples veces.addCuentaPredial(array $attributes = []): CuentaPredial
: Agrega y devuelve el único nodoCuentaPredial
.getComplementoConcepto(): ComplementoConcepto
: Crea (si no existe) y obtiene el nodo únicoComplementoConcepto
.addComplementoConcepto(array $attributes = [], array $children = []): ComplementoConcepto
: Agrega y devuelve el único nodoComplementoconcepto
.addParte(array $attributes = [], array $children = []): Parte
: Agrega y devuelve un nuevo nodoParte
.multiParte(array ...$elementAttributes)
: Agrega nuevos nodosParte
, es una forma rápida de llamar al métodoaddParte
múltiples veces.
ConceptoImpuestos
La clase ConceptoImpuestos
es igual a la clase Impuestos
con la única diferencia de orden:
El primer nodo de Impuestos
dentro de Concepto
debe ser Traslados
.
Mientras que el primer nodo de Impuestos
dentro de Comprobante
debe ser Retenciones
.
Comprobante
Conceptos
Impuestos
Traslados
Retenciones
Impuestos
Retenciones
Traslados
También puedes notar que no existe el método Concepto::addImpuestos(array $attributes = [])
porque este nodo por definición no tiene atributos propios y, por lo tanto, no es necesario.
InformacionAduanera
Representa el nodo Comprobante/Conceptos/Concepto/InformacionAduanera
y Comprobante/Conceptos/Concepto/Parte/InformacionAduanera
.
CuentaPredial
Representa el nodo Comprobante/Conceptos/Concepto/CuentaPredial
.
ComplementoConcepto
Representa el nodo Comprobante/Conceptos/Concepto/ComplementoConcepto
.
Parte
Representa el nodo Comprobante/Conceptos/Concepto/Parte
.
addInformacionAduanera(array $attributes = []): InformacionAduanera
: Agrega y devuelve un nuevo nodoInformacionAduanera
.multiInformacionAduanera(array ...$elementAttributes): Parte
: Agrega nuevos nodosInformacionAduanera
, es una forma rápida de llamar al métodoaddInformacionAduanera
múltiples veces.
Impuestos
Representa el nodo Comprobante/Impuestos
y también Comprobante/Conceptos/Concepto/Impuestos
.
getTraslados(): Traslados
: Crea (si no existe) y obtiene el nodo únicoTraslados
.getRetenciones(): Retenciones
: Crea (si no existe) y obtiene el nodo únicoRetenciones
.
Aunque el nodo Impuestos
(hijo de Comprobante
) es diferente que el nodo Impuestos
(hijo de Concepto
)
se puede utilizar la misma estructura de datos, porque los cambios se dan en atributos y no en hijos.
Traslados
Representa el nodo Comprobante/Impuestos/Traslados
y Comprobante/Conceptos/Concepto/Impuestos/Traslados
.
addTraslado(array $attributes = []): Traslado
: Agrega y devuelve un nuevo nodoTraslado
.multiTraslado(array ...$elementAttributes): Traslados
: Agrega nuevos nodosTraslado
, es una forma rápida de llamar al métodoaddTraslado
múltiples veces.
Retenciones
Representa el nodo Comprobante/Impuestos/Retenciones
y Comprobante/Conceptos/Concepto/Impuestos/Retenciones
.
addRetencion(array $attributes = []): Retencion
: Agrega y devuelve un nuevo nodoRetencion
.multiRetencion(array ...$elementAttributes): Retenciones
: Agrega nuevos nodosRetencion
, es una forma rápida de llamar al métodoaddRetencion
múltiples veces.
Traslado
Representa el nodo Comprobante/Impuestos/Retenciones/Traslado
y Conceptos/Concepto/Impuestos/Retenciones/Traslado
.
Retencion
Representa el nodo Comprobante/Impuestos/Retenciones/Retencion
y Conceptos/Concepto/Impuestos/Retenciones/Retencion
.