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 .txt con 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

list_files(arg1)

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

parse_metadata(arg1)

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

stream_cfdis(arg1)

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