libredte_lib_sdk.billing.book package

Submodules

Module contents

Componente billing.book: libros tributarios (ventas/compras/RVD/etc.).

class libredte_lib_sdk.billing.book.BookBag(book: dict[str, Any] | None, book_type: dict[str, Any], book_auth: dict[str, Any] | None, caratula: dict[str, Any], detalle: list[dict[str, Any]], raw: dict[str, Any])

Bases: object

Bolsa de un libro tributario (book.builder::build/book.loader::load).

Ambas operaciones devuelven esta misma forma — la diferencia es qué tan lejos llegó el procesamiento: loader.load() solo normaliza caratula/detalle a partir de los datos de entrada (book siempre viene None, sin importar el input); builder.build() sí construye y firma el libro, por lo que book viene poblado (el libro completo — genérico entre los 5 tipos, ej. libro_ventas/libro_compras traen {“LibroCompraVenta”: {…}} junto a su xml en base64 — no se tipa más allá de dict porque la clave raíz varía según el tipo). book_auth (la autorización del emisor) solo viene poblada si esa autorización se incluyó junto con los datos del emisor en la solicitud; si no, viene None.

xml_base64/xml/xml_bytes dan acceso directo al XML del libro construido — solo válidos cuando book no es None (ver is_construido); listos para encadenar a BookValidatorService. No usa XmlPayloadMixin: acá xml_base64 es una @property (el libro puede no estar construido), no un campo simple.

book: dict[str, Any] | None
book_auth: dict[str, Any] | None
book_type: dict[str, Any]
caratula: dict[str, Any]
detalle: list[dict[str, Any]]
classmethod from_api(data: dict[str, Any]) → BookBag

Construye un BookBag desde el data que devuelve la API.

property is_construido: bool

Si book viene poblado (builder.build(), no loader.load()).

raw: dict[str, Any]
property xml: str

XML del libro construido, como texto (ISO-8859-1).

property xml_base64: str

XML del libro construido, en base64 — ver BookValidatorService.

property xml_bytes: bytes

XML del libro construido, decodificado desde base64.

class libredte_lib_sdk.billing.book.BookBuilderService(client: ApiClient)

Bases: object

Construye un libro tributario (billing.book.builder).

build(bag: dict[str, Any], *, certificate: Certificate) → BookBag

Construye el libro descrito por bag.

bag trae tipo (“libro_ventas”, “libro_compras”, “libro_boletas”, “libro_guias”, “resumen_ventas_diarias”, sin tipar como enum cerrado), caratula, detalle y emisor, tal cual el formato SII. A diferencia de BookLoaderService .load(), acá BookBag.book viene poblado (el libro construido y firmado, con su xml).

class libredte_lib_sdk.billing.book.BookComponent(client: ApiClient)

Bases: object

Agrupa los servicios de billing.book.

class libredte_lib_sdk.billing.book.BookLoaderService(client: ApiClient)

Bases: object

Carga y normaliza los datos de un libro (billing.book.loader).

load(bag: dict[str, Any], *, certificate: Certificate) → BookBag

Normaliza caratula/detalle de bag en un BookBag.

bag trae tipo/caratula/detalle/emisor, tal cual el formato SII. BookBag.book siempre viene None (no construye el libro); BookBag.book_auth viene poblado solo si bag[“emisor”] incluye autorizacion_dte.

class libredte_lib_sdk.billing.book.BookValidatorService(client: ApiClient)

Bases: object

Valida un libro tributario ya construido (billing.book.validator).

source es el XML del libro en base64. Devuelve un dict/list vacío en caso de éxito.

validate_schema(source: str) → dict[str, Any]

Valida source contra el esquema XSD del libro.

validate_signature(source: str) → dict[str, Any]

Valida la firma electrónica del libro.

El libro tiene una sola firma — devuelve un único dict, no una lista.