libredte_lib_sdk.billing.common module
Utilidades compartidas entre los componentes de billing.
- class libredte_lib_sdk.billing.common.XmlPayloadMixin
Bases:
objectMixin 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()).