mix cfdi.complementos.gen_child_order (cfdi_complementos v4.0.2)

Copy Markdown

Genera Cfdi.Complementos.ChildOrder a partir de los XSLT oficiales de cadena original que publica el SAT.

mix cfdi.complementos.gen_child_order

Por qué se genera y no se escribe a mano

El XSD del SAT declara los hijos de cada complemento con <xs:sequence>: el orden es parte del contrato y un documento desordenado se rechaza en validación de esquema.

Los payloads de complemento son mapas opacos, y un mapa no puede expresar orden (los mapas chicos de Elixir iteran por término, o sea alfabético). De los 33 complementos del SAT, 11 tienen hijos ordenados — y con orden alfabético los 11 salen inválidos. Ninguno se salva por casualidad.

El XSLT de cadena original recorre los hijos en la secuencia del XSD, así que el orden de sus select="./ns:Hijo" ES el orden que exige el SAT. Esta tarea lo extrae de ahí: la fuente ya vive en el repo (packages/files/4.0/complementos/), no hay nada que bajar ni que mantener a mano. Cuando el SAT publique una versión nueva, se actualiza el XSLT y se vuelve a correr.

Sólo se emiten los elementos con 2+ nombres de hijo distintos: con 0 o 1 no hay orden que imponer.