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:
objectBolsa 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:
objectConstruye 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:
objectAgrupa los servicios de billing.book.
- class libredte_lib_sdk.billing.book.BookLoaderService(client: ApiClient)
Bases:
objectCarga 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:
objectValida 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.