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.2.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.2-py3-none-any.whl (27.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: chesserp_api-0.1.2.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.2.tar.gz
Algorithm Hash digest
SHA256 7f0daf9d9647f8f1b694a51fb46a87058c3bf70a97cb6cf1d51b1267e8e718a8
MD5 6e2fabc4f910b5c7bcac5001503328fb
BLAKE2b-256 8011e1a45cca258406e6699f54b55628e2421b6687231238ea7b270dbfd9fe37

See more details on using hashes here.

File details

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

File metadata

  • Download URL: chesserp_api-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 27.8 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 343f3ac5f255279f327875beafb5b2070f2d7313df284209b0a909fccac73d10
MD5 37e70ddf6960ff1736854b258dab4ae9
BLAKE2b-256 5703c3bdf1132c5424e84631359d2a161c338d1b4282d4d45a294f3f500e62a0

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