Skip to main content

Python client library for ChessERP API

Project description

ChessERP API Python Library

Python Version License

Libreria Python robusta y reutilizable para interactuar con la API de ChessERP. Abstrae la complejidad de la autenticacion, manejo de sesiones y paginacion automatica, permitiendo a los desarrolladores trabajar con objetos Python tipados y validados.

Caracteristicas Principales

  • Cliente Unificado: Interfaz simple para acceder a todos los endpoints de ChessERP
  • Validacion Automatica: Modelos Pydantic v2 para garantizar integridad de datos
  • Manejo de Sesiones: Autenticacion automatica con reintentos en caso de expiracion (401)
  • Paginacion Transparente: Obtencion automatica de todos los lotes de datos
  • Tipado Estatico: Soporte completo para autocompletado en IDEs
  • Metodos Raw & Parsed: Acceso a datos crudos (JSON) o validados (Pydantic)
  • Logging Integrado: Trazabilidad completa de operaciones (file + console)

Endpoints Soportados

Recurso Metodos Paginado
Ventas get_sales(), get_sales_raw(), export_sales_report() Si
Articulos get_articles(), get_articles_raw() Si
Stock get_stock(), get_stock_raw() No
Clientes get_customers(), get_customers_raw() Si
Pedidos get_orders(), get_orders_raw() No
Personal Comercial get_staff(), get_staff_raw() No
Rutas de Venta get_routes(), get_routes_raw() No
Marketing get_marketing(), get_marketing_raw() No

Instalacion

Clonar el Repositorio

git clone https://github.com/tuusuario/chesserp-api.git
cd chesserp-api

Instalar

pip install -e .          # Modo desarrollo (editable)
pip install -e ".[dev]"   # Con dependencias de testing

Configuracion

Copia el archivo de ejemplo y completa con tus credenciales:

cp .env.example .env

El .env usa un patron de prefijos por empresa:

# Empresa 1
EMPRESA1_API_URL=http://tu-servidor:puerto/
EMPRESA1_USERNAME=tu_usuario
EMPRESA1_PASSWORD=tu_password

# Empresa 2 (opcional)
EMPRESA2_API_URL=http://otro-servidor:puerto/
EMPRESA2_USERNAME=tu_usuario
EMPRESA2_PASSWORD=tu_password

Uso Rapido

Inicializacion del Cliente

from chesserp import ChessClient

# Desde variables de entorno con prefijo
client = ChessClient.from_env(prefix="EMPRESA1_")

# O directo con credenciales
client = ChessClient(
    api_url="http://tu-servidor:puerto",
    username="usuario",
    password="clave"
)

Consultar Ventas

ventas = client.get_sales(
    fecha_desde="2025-01-01",
    fecha_hasta="2025-01-31",
    detallado=True
)

for venta in ventas:
    print(f"{venta.letra} {venta.serie}-{venta.nro_doc}")
    print(f"Cliente: {venta.nombre_cliente}")
    print(f"Total: ${venta.imp_total}")

    for linea in venta.lines:
        print(f"  - {linea.ds_articulo} x{linea.cantidad_solicitada}")

Consultar Stock

stock = client.get_stock(id_deposito=1)

for item in stock:
    print(f"{item.ds_articulo}: {item.cant_bultos} bultos")

Exportar Reporte de Ventas a Excel

excel_bytes = client.export_sales_report(
    fecha_desde="2025-01-01",
    fecha_hasta="2025-01-31",
    empresas="1",
    tiposdoc="FCVTA,DVVTA"
)

with open("reporte_ventas.xlsx", "wb") as f:
    f.write(excel_bytes)

Acceso a Datos Raw (JSON)

Para pipelines ETL o cuando se necesita el JSON sin validar:

raw_data = client.get_sales_raw(
    fecha_desde="2025-01-01",
    fecha_hasta="2025-01-31",
    nro_lote=1
)

Todos los metodos get_*() aceptan raw=True para retornar listas de dicts en vez de objetos Pydantic.

Mas Ejemplos

# Clientes
clientes = client.get_customers(anulado=False)

# Pedidos
pedidos = client.get_orders(fecha_pedido="2025-01-15")

# Personal comercial
personal = client.get_staff(sucursal=1)

# Rutas de venta
rutas = client.get_routes(sucursal=1, fuerza_venta=10)

# Jerarquia de marketing
segmentos = client.get_marketing(cod_scan=0)

Manejo de Errores

from chesserp import ChessClient, AuthError, ApiError, ChessError

try:
    ventas = client.get_sales("2025-01-01", "2025-01-31")
except AuthError as e:
    print(f"Error de autenticacion: {e}")
except ApiError as e:
    print(f"Error en la API: {e.status_code} - {e.message}")
except ChessError as e:
    print(f"Error general: {e}")

Estructura del Proyecto

chesserp-api/
├── chesserp/                    # Paquete principal
│   ├── __init__.py              # Exports: ChessClient, excepciones
│   ├── client.py                # Cliente principal (auth, paginacion, endpoints)
│   ├── exceptions.py            # ChessError, AuthError, ApiError
│   ├── logger.py                # Logger centralizado (file + console)
│   ├── sales.py                 # Servicio de ventas
│   ├── stock.py                 # Servicio de stock (pandas)
│   ├── config/
│   │   └── settings.py          # PathConfig, LogLevel, Settings
│   └── models/                  # Modelos Pydantic v2
│       ├── __init__.py          # Re-exports de todos los modelos
│       ├── sales.py             # Sale
│       ├── inventory.py         # Articulo, StockFisico
│       ├── clients.py           # Cliente
│       ├── orders.py            # Pedido, LineaPedido
│       ├── routes.py            # RutaVenta, ClienteRuta
│       ├── staff.py             # PersonalComercial
│       └── marketing.py         # JerarquiaMkt, CanalMkt, SubCanalMkt
├── live_test.py                 # Tests contra API real
├── usage_example.py             # Menu interactivo de pruebas
├── main.py                      # Script batch de exportacion
├── pyproject.toml               # Config de proyecto y dependencias
├── requirements.txt             # Dependencias
└── .env.example                 # Plantilla de variables de entorno

Scripts de Prueba

Testing contra API real

python live_test.py --prefix EMPRESA1_ --test all
python live_test.py --prefix EMPRESA1_ --test sales
python live_test.py --test quick

Menu interactivo

python usage_example.py

Dependencias

Paquete Uso
requests HTTP client
python-dotenv Variables de entorno desde .env
pydantic Validacion de modelos
pandas Manipulacion de datos
openpyxl Export Excel
numpy Operaciones numericas

Roadmap

  • Empaquetado PyPI (pip install chesserp-api)
  • Soporte para operaciones POST/PUT (crear pedidos, actualizar stock)
  • Cache de resultados con TTL configurable
  • Async support (httpx)
  • CLI para operaciones comunes

Licencia

Este proyecto esta bajo la licencia MIT. Ver archivo LICENSE para mas detalles.


Python 3.10+ | Pydantic v2 | Requests

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

chesserp_api-0.1.4.tar.gz (29.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

chesserp_api-0.1.4-py3-none-any.whl (27.9 kB view details)

Uploaded Python 3

File details

Details for the file chesserp_api-0.1.4.tar.gz.

File metadata

  • Download URL: chesserp_api-0.1.4.tar.gz
  • Upload date:
  • Size: 29.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for chesserp_api-0.1.4.tar.gz
Algorithm Hash digest
SHA256 1dd747baa6b3adff894269483fdf27585023e4edbb5e24a518077063ab62dc91
MD5 92a39a5a2ac0f78bbebcf33aa82d4729
BLAKE2b-256 764230aff74ebb4475ba3c7269cf6da5533f591e1146452b7602fa3b82900f7e

See more details on using hashes here.

File details

Details for the file chesserp_api-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: chesserp_api-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 27.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for chesserp_api-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 e40a7d00f9380b154a0aa09df8c8dc4772ddcb3a1e63d1f6019e9031b7d60ee9
MD5 7fe9fd8ea74e1ba1fcdc41bd6efff6af
BLAKE2b-256 3731b1900e97fb794885469904a1288549d427377258124c7ab2ed185c0530ac

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page