libredte_lib_sdk.billing.common module

Utilidades compartidas entre los componentes de billing.

class libredte_lib_sdk.billing.common.XmlPayloadMixin

Bases: object

Mixin para un DTO cuyo dato principal es un XML en base64.

Espera un atributo xml_base64: str en la clase concreta (Document, DocumentEnvelope, Caf, …) y expone xml_bytes/xml sobre él, para no repetir esta misma conversión en cada DTO.

Solo para clases donde xml_base64 es un campo real del dataclass (siempre presente). BookBag/DocumentBag NO lo usan — su xml_base64 es una @property que puede lanzar (el XML puede no existir aún, ej. un borrador sin construir) y un @property no puede sobrescribir a un atributo simple heredado sin romper el orden de campos del dataclass (xml_base64 seguido de un campo obligatorio) — definen xml_bytes/xml por su cuenta.

property xml: str

XML como texto (ISO-8859-1, la codificación que usa el SII).

xml_base64: str
property xml_bytes: bytes

XML decodificado desde base64.

libredte_lib_sdk.billing.common.encode_content(content: str | bytes) → str

Codifica en base64 un contenido para enviarlo a la API.

Un bytes se envía tal cual, sin alterar su codificación (lo correcto para el contenido de un archivo). Un str ya es texto decodificado, así que se codifica en UTF-8.

libredte_lib_sdk.billing.common.encode_input_data(input_data: str | bytes | dict[str, Any]) → str | dict[str, Any]

Prepara el inputData de una bolsa para enviarlo a la API.

Un dict son los datos en JSON y viaja tal cual. Todo lo demás es el contenido original en otro formato (XML, YAML, texto, etc.) y viaja en base64 (ver encode_content()).