@@ -36,6 +36,8 @@ Esta clase es una especie de pegamento de todas las pequeñas utilerías y estru
36
36
y realiza validaciones adicionales.
37
37
Consulta la [ documentación de validaciones] ( ../validar/validacion-cfdi.md ) para más información.
38
38
39
+ - ` moveSatDefinitionsToComprobante(): void ` : Mueve las declaraciones de espacios de nombres ` xmlns:* `
40
+ y las declaraciones de ubicación de esquemas ` xsi:schemaLocation ` al nodo raíz.
39
41
40
42
## Pasos básicos de creación de un CFDI
41
43
@@ -73,6 +75,9 @@ $creator->addSumasConceptos(null, 2);
73
75
// método de ayuda para generar el sello (obtener la cadena de origen y firmar con la llave privada)
74
76
$creator->addSello('file:// ... ruta para mi archivo key convertido a PEM ...', 'contraseña de la llave');
75
77
78
+ // método de ayuda para mover las declaraciones de espacios de nombre al nodo raíz
79
+ $creator->moveSatDefinitionsToComprobante();
80
+
76
81
// método de ayuda para validar usando las validaciones estándar de creación de la librería
77
82
$asserts = $creator->validate();
78
83
$asserts->hasErrors(); // contiene si hay o no errores
@@ -92,8 +97,53 @@ A diferencia de los nodos, los elementos contienen métodos de ayuda que pemiten
92
97
por ejemplo ` CfdiUtils\Elements\Cfdi33\Comprobante ` contiene un método llamado ` addReceptor() `
93
98
con el que se puede insertar en el lugar correcto el nodo "Receptor" incluyendo un arreglo de atributos.
94
99
100
+ ## Acerca de las definiciones de espacios de nombre
101
+
102
+ A partir de la versión ` 2.12.0 ` se agregó el método ` moveSatDefinitionsToComprobante() ` que ayuda a mover las
103
+ definiciones de espacios de nombres al nodo principal ` cfdi:Comprobante ` .
104
+
105
+ Si no se llama a este método, las definciones de espacios de nombres quedarán en el nodo que las utiliza, por
106
+ ejemplo:
107
+
108
+ ``` xml
109
+ <cfdi : Comprobante xmlns : cfdi =" http://www.sat.gob.mx/cfd/3"
110
+ xsi : schemaLocation =" http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv33.xsd" >
111
+ <!-- ... nodos del comprobante ... -->
112
+ <cfdi : Complemento >
113
+ <!-- ... otros complementos ... -->
114
+ <leyendasFisc : LeyendasFiscales version =" 1.0" xmlns : leyendasFisc =" http://www.sat.gob.mx/leyendasFiscales"
115
+ xsi:schemaLocation = " http://www.sat.gob.mx/leyendasFiscales http://www.sat.gob.mx/sitio_internet/cfd/leyendasFiscales/leyendasFisc.xsd" >
116
+ <leyendasFisc : Leyenda disposicionFiscal =" RESDERAUTH" norma = " Artíclo 2. Fracción IV." textoLeyenda = " El software desarrollado se entrega con licencia MIT" />
117
+ </leyendasFisc : LeyendasFiscales >
118
+ </cfdi : Complemento >
119
+ </cfdi : Comprobante >
120
+ ```
121
+
122
+ Y si aplica este método las definiciones cambiarán de lugar, quedando como:
123
+
124
+ ``` xml
125
+ <cfdi : Comprobante xmlns : cfdi =" http://www.sat.gob.mx/cfd/3" xmlns : leyendasFisc =" http://www.sat.gob.mx/leyendasFiscales"
126
+ xsi : schemaLocation =" http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv33.xsd http://www.sat.gob.mx/leyendasFiscales http://www.sat.gob.mx/sitio_internet/cfd/leyendasFiscales/leyendasFisc.xsd" >
127
+ <!-- ... nodos del comprobante ... -->
128
+ <cfdi : Complemento >
129
+ <!-- ... otros complementos ... -->
130
+ <leyendasFisc : LeyendasFiscales version =" 1.0" >
131
+ <leyendasFisc : Leyenda disposicionFiscal =" RESDERAUTH" norma = " Artíclo 2. Fracción IV." textoLeyenda = " El software desarrollado se entrega con licencia MIT" />
132
+ </leyendasFisc : LeyendasFiscales >
133
+ </cfdi : Complemento >
134
+ </cfdi : Comprobante >
135
+ ```
136
+
137
+ En realidad, esto no es una regla importarte e incluso se podría decir que sale de la práctica común de XML.
138
+ Sin embargo, en la documentación técnica del SAT lo documenta como * mandatorio* . Es decir, se está obligado
139
+ a seguir esta definición.
140
+
141
+ Si no creaste tus CFDI con esta estructura malamente requerida por el SAT, no te preocupes, en caso de ser
142
+ necesario podrías hasta modificar tus CFDI anteriores (aun cuando tengan sello) porque la ubicación de las
143
+ definiciones de los espacios de nombres no participan en la formación de la cadena de origen.
144
+
95
145
96
- ## Formación de el texto de los códigos QR
146
+ ## Formación del texto de los códigos QR
97
147
98
148
La formación del texto que se incluye en los códigos QR tiene reglas específicas
99
149
y puede utilizarse el objeto ` \CfdiUtils\ConsultaCfdiSat\RequestParameters `
0 commit comments