Sat.Cfdi.Descarga.Masiva.Paquete.Reader
(sat_cfdi_descarga v1.5.0)
Copy Markdown
Extrae el contenido del ZIP descargado del WS de Descarga Masiva.
Hay dos tipos de paquete segun el tipo_solicitud:
:cfdi— el ZIP contiene archivos.xml(uno por CFDI).:metadata— el ZIP contiene un unico.txtcon metadatos en TSV.
Esta capa abre el ZIP en memoria con :zip.unzip/2 y entrega cada
XML/registro al consumidor. No parsea el XML — para eso usar Cfdi.Xml.Parser.
Summary
Functions
Lista los nombres de archivos dentro del paquete (utilidad de debug).
Lista de filas del paquete :metadata. Cada fila es un map con keys
como :uuid, :rfcemisor, :rfcreceptor, :total, etc.
Stream lazy de XMLs de un paquete :cfdi. Cada elemento es
{filename, xml} donde filename es el nombre dentro del ZIP y xml
es el contenido como binario UTF-8.
Functions
@spec list_files(Sat.Cfdi.Descarga.Masiva.Types.Paquete.t()) :: {:ok, [String.t()]} | {:error, term()}
Lista los nombres de archivos dentro del paquete (utilidad de debug).
@spec parse_metadata(Sat.Cfdi.Descarga.Masiva.Types.Paquete.t()) :: {:ok, [map()]} | {:error, term()}
Lista de filas del paquete :metadata. Cada fila es un map con keys
como :uuid, :rfcemisor, :rfcreceptor, :total, etc.
El TSV usa ~ (tilde) como separador de columnas (formato del SAT) y
la primera linea es el header.
@spec stream_cfdis(Sat.Cfdi.Descarga.Masiva.Types.Paquete.t()) :: {:ok, Enumerable.t()} | {:error, term()}
Stream lazy de XMLs de un paquete :cfdi. Cada elemento es
{filename, xml} donde filename es el nombre dentro del ZIP y xml
es el contenido como binario UTF-8.