libredte_lib_sdk.billing.book.models module
DTO del componente billing.book.
- class libredte_lib_sdk.billing.book.models.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.