SimpleFacturaSDK


NameSimpleFacturaSDK JSON
Version 1.1.8 PyPI version JSON
download
home_pagehttps://github.com/pereacarlos/SimpleFacturaSDK-python
SummarySDK para la integración con los servicios de SimpleFactura
upload_time2024-12-17 19:00:16
maintainerNone
docs_urlNone
authorCarlos Perea
requires_python>=3.6
licenseMIT
keywords dte factura boleta impuestos internos factura electrónica boleta electrónica documento iva sii documento tributario electrónico
VCS
bugtrack_url
requirements aiohttp requests-toolbelt pydantic httpx python-dotenv requests aiofiles
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # SDK SimpleFactura

El SDK SimpleFactura es una solución en Python diseñada para facilitar la integración con los servicios de SimpleFactura, parte de ChileSystems. Este SDK provee un conjunto de clases y métodos que permiten realizar operaciones como facturación, gestión de productos, proveedores, clientes, sucursales, folios, Datos de empresa y boletas de honorarios.

---

## Características principales

- **Simplifica** la interacción con los servicios de SimpleFactura.
- Proporciona interfaces específicas para operaciones como:
  - **Facturación**: Generación y gestión de documentos tributarios electrónicos.
  - **Gestión** de productos, proveedores y clientes.
  - **Gestión de folios**.
  - **Emisión de boletas de honorarios**.
- Compatible con **Python 3.6 y superior**.

---

## Requisitos

### Dependencias

Las dependencias necesarias para utilizar este SDK son:

- `requests`
- `aiohttp`
- `requests-toolbelt`
- `pydantic`
- `httpx`
- `pytest`
- `requests-mock`
- `python-dotenv`
- `pytest-asyncio`
- `aiofiles`

### Plataforma

El SDK es compatible con **Python 3.6** y versiones superiores.

---

## Instalación

Puedes instalar el SDK y sus dependencias utilizando **pip**:
```bash
pip install SimpleFacturaSDK
```

Si necesitas instalar las dependencias manualmente:
    
```bash
pip install requests requests-toolbelt pydantic aiohttp pytest requests-mock python-dotenv pytest-asyncio httpx aiofiles

```

Opcional(Clonar el repositorio e instalar dependencias desde requirements.txt)
```bash
git clone https://github.com/pereacarlos/SimpleFacturaSDK-python.git
cd SimpleFacturaSDK-python
pip install -r requirements.txt

```

## Configuración del archivo **.env**:
Para usar el SDK, asegúrate de crear un archivo .env en el directorio raíz de tu proyecto. Este archivo debe contener tus credenciales de acceso a la API de SimpleFactura. Aquí tienes un ejemplo de cómo configurarlo:
```bash
SF_USERNAME=tu_usuario
SF_PASSWORD=tu_contraseña
SF_BASE_URL=https://api.simplefactura.cl
PYTHONPATH=.

```
Para garantizar que el archivo **.env** esté disponible en tiempo de ejecución, sigue estos pasos:

1. Crea un archivo llamado .env en el directorio raíz de tu proyecto.
2. Agrega tus credenciales de acceso a la API en el archivo .env como se muestra en el ejemplo anterior.
3. Asegúrate de que el archivo .env esté incluido en tu archivo .gitignore para evitar subir tus credenciales a un repositorio público.

## Configuración del archivo **config.py**:
Para usar el SDK, asegúrate de crear un archivo **config.py** en el directorio raíz de tu proyecto. Este archivo debe contener tus la url de acceso a la API de SimpleFactura. Aquí tienes un ejemplo de cómo configurarlo:
```bash
import os
from dotenv import load_dotenv

load_dotenv()

BASE_URL = os.getenv("SF_BASE_URL")
```

Cómo empezar
Para utilizar el SDK, simplemente inicializa la clase ClientSimpleFactura proporcionando tu nombre de usuario y contraseña:
```bash
from ClientSimpleFactura import ClientSimpleFactura
import os
from dotenv import load_dotenv
load_dotenv()

username = os.getenv("SF_USERNAME")
password = os.getenv("SF_PASSWORD")

def main():
    client_api = ClientSimpleFactura(username, password)
    
    # Ejemplo: Uso de los servicios
    facturacionService = client_api.Facturacion
    productoService = client_api.Productos
    proveedorService = client_api.Proveedores
    clientesService = client_api.Clientes
    sucursalService = client_api.Sucursales
    folioService = client_api.Folios
    configuracionService = client_api.ConfiguracionService
    boletaHonorarioService = client_api.BoletaHonorarioService

if __name__ == "__main__":
    main()

```

### Ejemplo de Uso del SDK SimpleFactura y Descripción General del Código

#### ObtenerPDF
Este ejemplo demuestra cómo utilizar el SDK `SimpleFacturaSdk` para interactuar con el servicio de facturación electrónica SimpleFactura. Específicamente, se realiza una solicitud para descargar el PDF de una factura electrónica. El proceso incluye:

1. **Configuración de Credenciales**: Las credenciales se obtienen de un archivo `.env` para autenticar al usuario.
2. **Creación de Solicitud**: Se configura una solicitud con los datos necesarios, como el RUT del emisor, tipo de documento, y folio.
3. **Llamada al Servicio**: Se utiliza el cliente del SDK para llamar al endpoint `/dte/pdf` y obtener el PDF de la factura.
4. **Guardado del PDF**: Si la respuesta es exitosa, el archivo PDF se guarda localmente.

El código utiliza programación asincrónica para garantizar un manejo eficiente de la comunicación con la API.

```bash
import asyncio
from SimpleFacturaSDK.client_simple_factura import ClientSimpleFactura
from SimpleFacturaSDK.models.GetFactura.Credenciales import Credenciales
from SimpleFacturaSDK.models.GetFactura.DteReferenciadoExterno import DteReferenciadoExterno
from SimpleFacturaSDK.models.GetFactura.SolicitudPdfDte import SolicitudPdfDte
import os
from dotenv import load_dotenv
load_dotenv()

username = os.getenv("SF_USERNAME")
password = os.getenv("SF_PASSWORD")

async def main():

    async with ClientSimpleFactura(username, password) as client_api:
        pdf = SolicitudPdfDte(
            credenciales=Credenciales(
                rut_emisor="76269769-6",
                nombre_sucursal="Casa Matriz"
            ),
            dte_referenciado_externo=DteReferenciadoExterno(
                folio=4117,
                codigoTipoDte=33,
                ambiente=0
            )
        )
        try:
            pdf_response = await client_api.Facturacion.obtener_pdf(pdf)
            if pdf_response.status == 200:
                with open("factura.pdf", "wb") as file:
                    file.write(pdf_response.data)
                print("PDF guardado exitosamente")
            else:
                print(f"Error: {pdf_response.message}")
        except Exception as err:
            print(f"Error: {err}")

if __name__ == "__main__":
    asyncio.run(main())
```
#### ObtenerTimbre

Este ejemplo utiliza el SDK `SimpleFacturaSdk` para obtener el timbre de una factura electrónica desde el servicio SimpleFactura. El proceso incluye:

1. **Configuración de Credenciales**: Las credenciales se obtienen de un archivo `.env` para autenticar al usuario.
2. **Creación de Solicitud**: Se configura una solicitud que incluye datos como el RUT del emisor, nombre de la sucursal, folio, tipo de documento, y ambiente.
3. **Llamada al Servicio**: Se realiza una llamada al endpoint correspondiente para obtener el timbre asociado a la factura.
4. **Guardado del Timbre**: Si la respuesta es exitosa, el timbre recibido en formato Base64 se decodifica y se guarda como una imagen en el archivo `timbre.png`.
El código utiliza programación asincrónica para manejar las solicitudes y asegura un manejo eficiente de los recursos y errores durante la ejecución.

```bash
import asyncio
from SimpleFacturaSDK.client_simple_factura import ClientSimpleFactura
from SimpleFacturaSDK.models.GetFactura.Credenciales import Credenciales
from SimpleFacturaSDK.models.GetFactura.DteReferenciadoExterno import DteReferenciadoExterno
from SimpleFacturaSDK.models.GetFactura.SolicitudPdfDte import SolicitudPdfDte
import base64
import json
import os
from dotenv import load_dotenv
load_dotenv()
username = os.getenv("SF_USERNAME")
password = os.getenv("SF_PASSWORD")
async def main():
    async with ClientSimpleFactura(username, password) as client_api:
        solicitud = SolicitudPdfDte(
            credenciales=Credenciales(
                rut_emisor="76269769-6",
                nombre_sucursal="Casa Matriz"
            ),
            dte_referenciado_externo=DteReferenciadoExterno(
                folio=4117,
                codigoTipoDte=33,
                ambiente=0
            )
        )
        try:
            timbre_response = await client_api.Facturacion.obtener_timbre(solicitud)
            timbre_data = json.loads(timbre_response.data)
            with open("timbre.png", "wb") as f:
                f.write(base64.b64decode(timbre_data["data"]))
            print("Timbre guardado en timbre.png")
        except Exception as err:
            print(f"Error: {err}")
if __name__ == "__main__":
    asyncio.run(main())

```


##### Facturacion_individualV2_Boletas
Este ejemplo muestra cómo utilizar el SDK `SimpleFacturaSdk` para emitir una boleta electrónica mediante el servicio SimpleFactura. El proceso incluye:

1. **Configuración de Credenciales**: Las credenciales se obtienen de un archivo `.env` para autenticar al usuario.
2. **Creación de Solicitud**: Se configura una solicitud detallada con información del documento, encabezado, emisor, receptor, totales, y los productos o servicios incluidos.
3. **Llamada al Servicio**: Se utiliza el cliente del SDK para llamar al endpoint de facturación de boletas, enviando los datos configurados.
4. **Respuesta del Servicio**: Se procesa la respuesta del servicio, mostrando detalles como el tipo de documento, RUT del emisor y receptor, folio, fecha de emisión y el total del documento.

El código utiliza programación asincrónica para manejar eficientemente las solicitudes hacia la API y captura errores para un manejo robusto en caso de fallos.
```bash
import asyncio
from SimpleFacturaSDK.client_simple_factura import ClientSimpleFactura
import base64
import json
from SimpleFacturaSDK.models.GetFactura.Documento import Documento
from SimpleFacturaSDK.models.GetFactura.Encabezado import Encabezado
from SimpleFacturaSDK.models.GetFactura.IdentificacionDTE import IdDoc
from SimpleFacturaSDK.models.GetFactura.Emisor import Emisor
from SimpleFacturaSDK.models.GetFactura.Receptor import Receptor
from SimpleFacturaSDK.models.GetFactura.Totales import Totales
from SimpleFacturaSDK.models.GetFactura.Detalle import Detalle
from SimpleFacturaSDK.models.GetFactura.CodigoItem import CdgItem
from SimpleFacturaSDK.enumeracion.TipoDTE import DTEType
from SimpleFacturaSDK.enumeracion.IndicadorServicio import IndicadorServicioEnum
from SimpleFacturaSDK.models.GetFactura.RequestDTE import RequestDTE
import requests
from models.ResponseDTE import Response
import os
from dotenv import load_dotenv
load_dotenv()

username = os.getenv("SF_USERNAME")
password = os.getenv("SF_PASSWORD") 
async def main():
   async with ClientSimpleFactura(username, password) as client_api:
        solicitud = RequestDTE(
            Documento=Documento(
                Encabezado=Encabezado(
                    IdDoc=IdDoc(
                        TipoDTE=DTEType.BoletaElectronica,
                        FchEmis="2024-09-03",
                        FchVenc="2024-09-03",
                        IndServicio=IndicadorServicioEnum.BoletaVentasYServicios,
                    ),
                    Emisor=Emisor(
                        RUTEmisor="76269769-6",
                        RznSocEmisor="Chilesystems",
                        GiroEmisor="Desarrollo de software",
                        DirOrigen="Calle 7 numero 3",
                        CmnaOrigen="Santiago"
                    ),
                    Receptor=Receptor(
                        RUTRecep="17096073-4",
                        RznSocRecep="Proveedor Test",
                        DirRecep="calle 12",
                        CmnaRecep="Paine",
                        CiudadRecep="Santiago",
                        CorreoRecep="mercocha13@gmail.com",
                    ),
                    Totales=Totales(
                        MntNeto="8320",
                        IVA="1580",
                        MntTotal="9900"
                    )
                ),
                Detalle=[
                    Detalle(
                        NroLinDet="1",
                        DscItem="Desc1",
                        NmbItem="Producto Test",
                        QtyItem="1",
                        UnmdItem="un",
                        PrcItem="100",
                        MontoItem="100",
                        CdgItem=[]
                    ),
                    Detalle(
                        NroLinDet="2",
                        CdgItem=[
                            CdgItem(
                                TpoCodigo="ALFA",
                                VlrCodigo="123"
                            )
                        ],
                        DscItem="Desc2",
                        NmbItem="Producto Test",
                        QtyItem="1",
                        UnmdItem="un",
                        PrcItem="100",
                        MontoItem="100"
                        
                    )
                ]
            ),
            Observaciones="NOTA AL PIE DE PAGINA",
            Cajero="CAJERO",
            TipoPago="CONTADO"
        )
        try:
            Boleta = await client_api.Facturacion.facturacion_individualV2_Boletas(solicitud, "Casa Matriz")
            print("\nDatos de la Respuesta:")
            print(f"Status: {Boleta.status}")
            print(f"Message: {Boleta.message}")
            print(f"TipoDTE: {Boleta.data.tipoDTE}")
            print(f"RUT Emisor: {Boleta.data.rutEmisor}")
            print(f"RUT Receptor: {Boleta.data.rutReceptor}")
            print(f"Folio: {Boleta.data.folio}")
            print(f"Fecha Emision: {Boleta.data.fechaEmision}")
            print(f"Total: {Boleta.data.total}")
            print(Boleta.data)
        except requests.exceptions.HTTPError as http_err:
            print(f"Error HTTP: {http_err}")
            print("Detalle del error:", http_err.response.text)
        except Exception as err:
            print(f"Error: {err}")
  
if __name__ == "__main__":
    asyncio.run(main())

```

## Documentación
La documentación relevante para usar este SDK es:

- Documentación general:
  [Sitio Simple Factura](https://www.simplefactura.cl/).
- Documentacion de APIs [Postman](https://documentacion.simplefactura.cl/).

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/pereacarlos/SimpleFacturaSDK-python",
    "name": "SimpleFacturaSDK",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": null,
    "keywords": "dte, factura, boleta, impuestos internos, factura electr\u00f3nica, boleta electr\u00f3nica, documento, iva, SII, documento tributario electr\u00f3nico",
    "author": "Carlos Perea",
    "author_email": "Carlos Perea <pereacarlos685@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/03/ea/a088baf512c3eac110cc8546cd2c5d425ff995f89ab961c941486fce59b9/simplefacturasdk-1.1.8.tar.gz",
    "platform": null,
    "description": "# SDK SimpleFactura\r\n\r\nEl SDK SimpleFactura es una soluci\u00f3n en Python dise\u00f1ada para facilitar la integraci\u00f3n con los servicios de SimpleFactura, parte de ChileSystems. Este SDK provee un conjunto de clases y m\u00e9todos que permiten realizar operaciones como facturaci\u00f3n, gesti\u00f3n de productos, proveedores, clientes, sucursales, folios, Datos de empresa y boletas de honorarios.\r\n\r\n---\r\n\r\n## Caracter\u00edsticas principales\r\n\r\n- **Simplifica** la interacci\u00f3n con los servicios de SimpleFactura.\r\n- Proporciona interfaces espec\u00edficas para operaciones como:\r\n  - **Facturaci\u00f3n**: Generaci\u00f3n y gesti\u00f3n de documentos tributarios electr\u00f3nicos.\r\n  - **Gesti\u00f3n** de productos, proveedores y clientes.\r\n  - **Gesti\u00f3n de folios**.\r\n  - **Emisi\u00f3n de boletas de honorarios**.\r\n- Compatible con **Python 3.6 y superior**.\r\n\r\n---\r\n\r\n## Requisitos\r\n\r\n### Dependencias\r\n\r\nLas dependencias necesarias para utilizar este SDK son:\r\n\r\n- `requests`\r\n- `aiohttp`\r\n- `requests-toolbelt`\r\n- `pydantic`\r\n- `httpx`\r\n- `pytest`\r\n- `requests-mock`\r\n- `python-dotenv`\r\n- `pytest-asyncio`\r\n- `aiofiles`\r\n\r\n### Plataforma\r\n\r\nEl SDK es compatible con **Python 3.6** y versiones superiores.\r\n\r\n---\r\n\r\n## Instalaci\u00f3n\r\n\r\nPuedes instalar el SDK y sus dependencias utilizando **pip**:\r\n```bash\r\npip install SimpleFacturaSDK\r\n```\r\n\r\nSi necesitas instalar las dependencias manualmente:\r\n    \r\n```bash\r\npip install requests requests-toolbelt pydantic aiohttp pytest requests-mock python-dotenv pytest-asyncio httpx aiofiles\r\n\r\n```\r\n\r\nOpcional(Clonar el repositorio e instalar dependencias desde requirements.txt)\r\n```bash\r\ngit clone https://github.com/pereacarlos/SimpleFacturaSDK-python.git\r\ncd SimpleFacturaSDK-python\r\npip install -r requirements.txt\r\n\r\n```\r\n\r\n## Configuraci\u00f3n del archivo **.env**:\r\nPara usar el SDK, aseg\u00farate de crear un archivo .env en el directorio ra\u00edz de tu proyecto. Este archivo debe contener tus credenciales de acceso a la API de SimpleFactura. Aqu\u00ed tienes un ejemplo de c\u00f3mo configurarlo:\r\n```bash\r\nSF_USERNAME=tu_usuario\r\nSF_PASSWORD=tu_contrase\u00f1a\r\nSF_BASE_URL=https://api.simplefactura.cl\r\nPYTHONPATH=.\r\n\r\n```\r\nPara garantizar que el archivo **.env** est\u00e9 disponible en tiempo de ejecuci\u00f3n, sigue estos pasos:\r\n\r\n1. Crea un archivo llamado .env en el directorio ra\u00edz de tu proyecto.\r\n2. Agrega tus credenciales de acceso a la API en el archivo .env como se muestra en el ejemplo anterior.\r\n3. Aseg\u00farate de que el archivo .env est\u00e9 incluido en tu archivo .gitignore para evitar subir tus credenciales a un repositorio p\u00fablico.\r\n\r\n## Configuraci\u00f3n del archivo **config.py**:\r\nPara usar el SDK, aseg\u00farate de crear un archivo **config.py** en el directorio ra\u00edz de tu proyecto. Este archivo debe contener tus la url de acceso a la API de SimpleFactura. Aqu\u00ed tienes un ejemplo de c\u00f3mo configurarlo:\r\n```bash\r\nimport os\r\nfrom dotenv import load_dotenv\r\n\r\nload_dotenv()\r\n\r\nBASE_URL = os.getenv(\"SF_BASE_URL\")\r\n```\r\n\r\nC\u00f3mo empezar\r\nPara utilizar el SDK, simplemente inicializa la clase ClientSimpleFactura proporcionando tu nombre de usuario y contrase\u00f1a:\r\n```bash\r\nfrom ClientSimpleFactura import ClientSimpleFactura\r\nimport os\r\nfrom dotenv import load_dotenv\r\nload_dotenv()\r\n\r\nusername = os.getenv(\"SF_USERNAME\")\r\npassword = os.getenv(\"SF_PASSWORD\")\r\n\r\ndef main():\r\n    client_api = ClientSimpleFactura(username, password)\r\n    \r\n    # Ejemplo: Uso de los servicios\r\n    facturacionService = client_api.Facturacion\r\n    productoService = client_api.Productos\r\n    proveedorService = client_api.Proveedores\r\n    clientesService = client_api.Clientes\r\n    sucursalService = client_api.Sucursales\r\n    folioService = client_api.Folios\r\n    configuracionService = client_api.ConfiguracionService\r\n    boletaHonorarioService = client_api.BoletaHonorarioService\r\n\r\nif __name__ == \"__main__\":\r\n    main()\r\n\r\n```\r\n\r\n### Ejemplo de Uso del SDK SimpleFactura y Descripci\u00f3n General del C\u00f3digo\r\n\r\n#### ObtenerPDF\r\nEste ejemplo demuestra c\u00f3mo utilizar el SDK `SimpleFacturaSdk` para interactuar con el servicio de facturaci\u00f3n electr\u00f3nica SimpleFactura. Espec\u00edficamente, se realiza una solicitud para descargar el PDF de una factura electr\u00f3nica. El proceso incluye:\r\n\r\n1. **Configuraci\u00f3n de Credenciales**: Las credenciales se obtienen de un archivo `.env` para autenticar al usuario.\r\n2. **Creaci\u00f3n de Solicitud**: Se configura una solicitud con los datos necesarios, como el RUT del emisor, tipo de documento, y folio.\r\n3. **Llamada al Servicio**: Se utiliza el cliente del SDK para llamar al endpoint `/dte/pdf` y obtener el PDF de la factura.\r\n4. **Guardado del PDF**: Si la respuesta es exitosa, el archivo PDF se guarda localmente.\r\n\r\nEl c\u00f3digo utiliza programaci\u00f3n asincr\u00f3nica para garantizar un manejo eficiente de la comunicaci\u00f3n con la API.\r\n\r\n```bash\r\nimport asyncio\r\nfrom SimpleFacturaSDK.client_simple_factura import ClientSimpleFactura\r\nfrom SimpleFacturaSDK.models.GetFactura.Credenciales import Credenciales\r\nfrom SimpleFacturaSDK.models.GetFactura.DteReferenciadoExterno import DteReferenciadoExterno\r\nfrom SimpleFacturaSDK.models.GetFactura.SolicitudPdfDte import SolicitudPdfDte\r\nimport os\r\nfrom dotenv import load_dotenv\r\nload_dotenv()\r\n\r\nusername = os.getenv(\"SF_USERNAME\")\r\npassword = os.getenv(\"SF_PASSWORD\")\r\n\r\nasync def main():\r\n\r\n    async with ClientSimpleFactura(username, password) as client_api:\r\n        pdf = SolicitudPdfDte(\r\n            credenciales=Credenciales(\r\n                rut_emisor=\"76269769-6\",\r\n                nombre_sucursal=\"Casa Matriz\"\r\n            ),\r\n            dte_referenciado_externo=DteReferenciadoExterno(\r\n                folio=4117,\r\n                codigoTipoDte=33,\r\n                ambiente=0\r\n            )\r\n        )\r\n        try:\r\n            pdf_response = await client_api.Facturacion.obtener_pdf(pdf)\r\n            if pdf_response.status == 200:\r\n                with open(\"factura.pdf\", \"wb\") as file:\r\n                    file.write(pdf_response.data)\r\n                print(\"PDF guardado exitosamente\")\r\n            else:\r\n                print(f\"Error: {pdf_response.message}\")\r\n        except Exception as err:\r\n            print(f\"Error: {err}\")\r\n\r\nif __name__ == \"__main__\":\r\n    asyncio.run(main())\r\n```\r\n#### ObtenerTimbre\r\n\r\nEste ejemplo utiliza el SDK `SimpleFacturaSdk` para obtener el timbre de una factura electr\u00f3nica desde el servicio SimpleFactura. El proceso incluye:\r\n\r\n1. **Configuraci\u00f3n de Credenciales**: Las credenciales se obtienen de un archivo `.env` para autenticar al usuario.\r\n2. **Creaci\u00f3n de Solicitud**: Se configura una solicitud que incluye datos como el RUT del emisor, nombre de la sucursal, folio, tipo de documento, y ambiente.\r\n3. **Llamada al Servicio**: Se realiza una llamada al endpoint correspondiente para obtener el timbre asociado a la factura.\r\n4. **Guardado del Timbre**: Si la respuesta es exitosa, el timbre recibido en formato Base64 se decodifica y se guarda como una imagen en el archivo `timbre.png`.\r\nEl c\u00f3digo utiliza programaci\u00f3n asincr\u00f3nica para manejar las solicitudes y asegura un manejo eficiente de los recursos y errores durante la ejecuci\u00f3n.\r\n\r\n```bash\r\nimport asyncio\r\nfrom SimpleFacturaSDK.client_simple_factura import ClientSimpleFactura\r\nfrom SimpleFacturaSDK.models.GetFactura.Credenciales import Credenciales\r\nfrom SimpleFacturaSDK.models.GetFactura.DteReferenciadoExterno import DteReferenciadoExterno\r\nfrom SimpleFacturaSDK.models.GetFactura.SolicitudPdfDte import SolicitudPdfDte\r\nimport base64\r\nimport json\r\nimport os\r\nfrom dotenv import load_dotenv\r\nload_dotenv()\r\nusername = os.getenv(\"SF_USERNAME\")\r\npassword = os.getenv(\"SF_PASSWORD\")\r\nasync def main():\r\n    async with ClientSimpleFactura(username, password) as client_api:\r\n        solicitud = SolicitudPdfDte(\r\n            credenciales=Credenciales(\r\n                rut_emisor=\"76269769-6\",\r\n                nombre_sucursal=\"Casa Matriz\"\r\n            ),\r\n            dte_referenciado_externo=DteReferenciadoExterno(\r\n                folio=4117,\r\n                codigoTipoDte=33,\r\n                ambiente=0\r\n            )\r\n        )\r\n        try:\r\n            timbre_response = await client_api.Facturacion.obtener_timbre(solicitud)\r\n            timbre_data = json.loads(timbre_response.data)\r\n            with open(\"timbre.png\", \"wb\") as f:\r\n                f.write(base64.b64decode(timbre_data[\"data\"]))\r\n            print(\"Timbre guardado en timbre.png\")\r\n        except Exception as err:\r\n            print(f\"Error: {err}\")\r\nif __name__ == \"__main__\":\r\n    asyncio.run(main())\r\n\r\n```\r\n\r\n\r\n##### Facturacion_individualV2_Boletas\r\nEste ejemplo muestra c\u00f3mo utilizar el SDK `SimpleFacturaSdk` para emitir una boleta electr\u00f3nica mediante el servicio SimpleFactura. El proceso incluye:\r\n\r\n1. **Configuraci\u00f3n de Credenciales**: Las credenciales se obtienen de un archivo `.env` para autenticar al usuario.\r\n2. **Creaci\u00f3n de Solicitud**: Se configura una solicitud detallada con informaci\u00f3n del documento, encabezado, emisor, receptor, totales, y los productos o servicios incluidos.\r\n3. **Llamada al Servicio**: Se utiliza el cliente del SDK para llamar al endpoint de facturaci\u00f3n de boletas, enviando los datos configurados.\r\n4. **Respuesta del Servicio**: Se procesa la respuesta del servicio, mostrando detalles como el tipo de documento, RUT del emisor y receptor, folio, fecha de emisi\u00f3n y el total del documento.\r\n\r\nEl c\u00f3digo utiliza programaci\u00f3n asincr\u00f3nica para manejar eficientemente las solicitudes hacia la API y captura errores para un manejo robusto en caso de fallos.\r\n```bash\r\nimport asyncio\r\nfrom SimpleFacturaSDK.client_simple_factura import ClientSimpleFactura\r\nimport base64\r\nimport json\r\nfrom SimpleFacturaSDK.models.GetFactura.Documento import Documento\r\nfrom SimpleFacturaSDK.models.GetFactura.Encabezado import Encabezado\r\nfrom SimpleFacturaSDK.models.GetFactura.IdentificacionDTE import IdDoc\r\nfrom SimpleFacturaSDK.models.GetFactura.Emisor import Emisor\r\nfrom SimpleFacturaSDK.models.GetFactura.Receptor import Receptor\r\nfrom SimpleFacturaSDK.models.GetFactura.Totales import Totales\r\nfrom SimpleFacturaSDK.models.GetFactura.Detalle import Detalle\r\nfrom SimpleFacturaSDK.models.GetFactura.CodigoItem import CdgItem\r\nfrom SimpleFacturaSDK.enumeracion.TipoDTE import DTEType\r\nfrom SimpleFacturaSDK.enumeracion.IndicadorServicio import IndicadorServicioEnum\r\nfrom SimpleFacturaSDK.models.GetFactura.RequestDTE import RequestDTE\r\nimport requests\r\nfrom models.ResponseDTE import Response\r\nimport os\r\nfrom dotenv import load_dotenv\r\nload_dotenv()\r\n\r\nusername = os.getenv(\"SF_USERNAME\")\r\npassword = os.getenv(\"SF_PASSWORD\") \r\nasync def main():\r\n   async with ClientSimpleFactura(username, password) as client_api:\r\n        solicitud = RequestDTE(\r\n            Documento=Documento(\r\n                Encabezado=Encabezado(\r\n                    IdDoc=IdDoc(\r\n                        TipoDTE=DTEType.BoletaElectronica,\r\n                        FchEmis=\"2024-09-03\",\r\n                        FchVenc=\"2024-09-03\",\r\n                        IndServicio=IndicadorServicioEnum.BoletaVentasYServicios,\r\n                    ),\r\n                    Emisor=Emisor(\r\n                        RUTEmisor=\"76269769-6\",\r\n                        RznSocEmisor=\"Chilesystems\",\r\n                        GiroEmisor=\"Desarrollo de software\",\r\n                        DirOrigen=\"Calle 7 numero 3\",\r\n                        CmnaOrigen=\"Santiago\"\r\n                    ),\r\n                    Receptor=Receptor(\r\n                        RUTRecep=\"17096073-4\",\r\n                        RznSocRecep=\"Proveedor Test\",\r\n                        DirRecep=\"calle 12\",\r\n                        CmnaRecep=\"Paine\",\r\n                        CiudadRecep=\"Santiago\",\r\n                        CorreoRecep=\"mercocha13@gmail.com\",\r\n                    ),\r\n                    Totales=Totales(\r\n                        MntNeto=\"8320\",\r\n                        IVA=\"1580\",\r\n                        MntTotal=\"9900\"\r\n                    )\r\n                ),\r\n                Detalle=[\r\n                    Detalle(\r\n                        NroLinDet=\"1\",\r\n                        DscItem=\"Desc1\",\r\n                        NmbItem=\"Producto Test\",\r\n                        QtyItem=\"1\",\r\n                        UnmdItem=\"un\",\r\n                        PrcItem=\"100\",\r\n                        MontoItem=\"100\",\r\n                        CdgItem=[]\r\n                    ),\r\n                    Detalle(\r\n                        NroLinDet=\"2\",\r\n                        CdgItem=[\r\n                            CdgItem(\r\n                                TpoCodigo=\"ALFA\",\r\n                                VlrCodigo=\"123\"\r\n                            )\r\n                        ],\r\n                        DscItem=\"Desc2\",\r\n                        NmbItem=\"Producto Test\",\r\n                        QtyItem=\"1\",\r\n                        UnmdItem=\"un\",\r\n                        PrcItem=\"100\",\r\n                        MontoItem=\"100\"\r\n                        \r\n                    )\r\n                ]\r\n            ),\r\n            Observaciones=\"NOTA AL PIE DE PAGINA\",\r\n            Cajero=\"CAJERO\",\r\n            TipoPago=\"CONTADO\"\r\n        )\r\n        try:\r\n            Boleta = await client_api.Facturacion.facturacion_individualV2_Boletas(solicitud, \"Casa Matriz\")\r\n            print(\"\\nDatos de la Respuesta:\")\r\n            print(f\"Status: {Boleta.status}\")\r\n            print(f\"Message: {Boleta.message}\")\r\n            print(f\"TipoDTE: {Boleta.data.tipoDTE}\")\r\n            print(f\"RUT Emisor: {Boleta.data.rutEmisor}\")\r\n            print(f\"RUT Receptor: {Boleta.data.rutReceptor}\")\r\n            print(f\"Folio: {Boleta.data.folio}\")\r\n            print(f\"Fecha Emision: {Boleta.data.fechaEmision}\")\r\n            print(f\"Total: {Boleta.data.total}\")\r\n            print(Boleta.data)\r\n        except requests.exceptions.HTTPError as http_err:\r\n            print(f\"Error HTTP: {http_err}\")\r\n            print(\"Detalle del error:\", http_err.response.text)\r\n        except Exception as err:\r\n            print(f\"Error: {err}\")\r\n  \r\nif __name__ == \"__main__\":\r\n    asyncio.run(main())\r\n\r\n```\r\n\r\n## Documentaci\u00f3n\r\nLa documentaci\u00f3n relevante para usar este SDK es:\r\n\r\n- Documentaci\u00f3n general:\r\n  [Sitio Simple Factura](https://www.simplefactura.cl/).\r\n- Documentacion de APIs [Postman](https://documentacion.simplefactura.cl/).\r\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "SDK para la integraci\u00f3n con los servicios de SimpleFactura",
    "version": "1.1.8",
    "project_urls": {
        "Homepage": "https://github.com/pereacarlos/SimpleFacturaSDK-python"
    },
    "split_keywords": [
        "dte",
        " factura",
        " boleta",
        " impuestos internos",
        " factura electr\u00f3nica",
        " boleta electr\u00f3nica",
        " documento",
        " iva",
        " sii",
        " documento tributario electr\u00f3nico"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d803212dc88ec1edfc9dc13092f0c758454ed510c712bc193f907317de79ecac",
                "md5": "c83133d6905e2cf27feaaea98b75728a",
                "sha256": "6cfa9ad826ac6488018408d76021875ec1e263f2019491c8886d6e75422fa7f7"
            },
            "downloads": -1,
            "filename": "SimpleFacturaSDK-1.1.8-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "c83133d6905e2cf27feaaea98b75728a",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.6",
            "size": 781031,
            "upload_time": "2024-12-17T19:00:12",
            "upload_time_iso_8601": "2024-12-17T19:00:12.730429Z",
            "url": "https://files.pythonhosted.org/packages/d8/03/212dc88ec1edfc9dc13092f0c758454ed510c712bc193f907317de79ecac/SimpleFacturaSDK-1.1.8-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "03eaa088baf512c3eac110cc8546cd2c5d425ff995f89ab961c941486fce59b9",
                "md5": "d47b0bca6d3973c04e25f8a532dee1d6",
                "sha256": "14e160c413af2e78f5992f72d5f0cc80be7c19bb087ddbb5cc161b6e7db18e0b"
            },
            "downloads": -1,
            "filename": "simplefacturasdk-1.1.8.tar.gz",
            "has_sig": false,
            "md5_digest": "d47b0bca6d3973c04e25f8a532dee1d6",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 70684,
            "upload_time": "2024-12-17T19:00:16",
            "upload_time_iso_8601": "2024-12-17T19:00:16.411832Z",
            "url": "https://files.pythonhosted.org/packages/03/ea/a088baf512c3eac110cc8546cd2c5d425ff995f89ab961c941486fce59b9/simplefacturasdk-1.1.8.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-12-17 19:00:16",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "pereacarlos",
    "github_project": "SimpleFacturaSDK-python",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [
        {
            "name": "aiohttp",
            "specs": []
        },
        {
            "name": "requests-toolbelt",
            "specs": []
        },
        {
            "name": "pydantic",
            "specs": []
        },
        {
            "name": "httpx",
            "specs": []
        },
        {
            "name": "python-dotenv",
            "specs": []
        },
        {
            "name": "requests",
            "specs": []
        },
        {
            "name": "aiofiles",
            "specs": []
        }
    ],
    "lcname": "simplefacturasdk"
}
        
Elapsed time: 0.48933s