Scripts de automatizacion para Odoo 17 y WooCommerce usados en las operaciones de Desstenee Beauty Supply (Republica Dominicana, 14 sucursales).
Comunicacion con Odoo via XML-RPC (xmlrpc/2/object). Comunicacion con WooCommerce via REST API (wc/v3).
| Script | Descripcion |
|---|---|
CONCAT.py |
Importar conduces PDF a pickings de transferencia en Odoo |
inventario.py |
Carga masiva de inventario por sucursal desde Excel |
generar_costos_actualizar_odoo.py |
Comparar costos proveedor vs Odoo, genera Excel de diferencias |
generar_precios_actualizar_odoo.py |
Comparar precios de venta proveedor vs Odoo, genera Excel de diferencias |
PriceChangerOdoo.py |
Actualizar precios de venta en Odoo desde Excel |
PriceChangerWeb.py |
Actualizar precios en WooCommerce desde Excel |
Lee archivos PDF de conduces (guias de despacho), extrae codigos de productos y cantidades, y crea pickings de transferencia en Odoo automaticamente.
- Extrae codigos de 6 digitos y cantidades de PDFs con regex
- Crea
stock.pickingconstock.movepor cada producto - Confirma y valida el picking
- Mueve los PDFs procesados a
/procesados/ - Detecta duplicados por nombre de origen para evitar doble carga
Procesa archivos Excel con codigos de barra y cantidades para crear recepciones de inventario por sucursal.
- Seleccion interactiva de sucursal (14 sucursales configuradas)
- Busca productos por barcode principal o alternativo (
product.template.barcode) - Corrige stocks negativos a 0 antes de sumar
- Crea picking de recepcion, confirma y valida
- Genera archivo de resultados por cada Excel procesado
- Elimina pickings vacios si no se encontraron productos
Compara el campo costo de un archivo del proveedor (Adcon.xlsx) contra standard_price de Odoo (Odoo.xlsx). Genera costos_actualizar_odoo.xlsx solo con los productos que tienen diferencias.
Compara Precio de venta del proveedor (Adcon.xlsx) contra list_price de Odoo (Odoo.xlsx). Genera precios_actualizar_odoo.xlsx solo con los productos que tienen diferencias.
Lee precios_actualizar_odoo.xlsx (generado por el script anterior) y actualiza list_price en product.template via XML-RPC. Los codigos se normalizan a 6 digitos con ceros a la izquierda.
Lee Odoo.xlsx con precios actualizados y los sincroniza a WooCommerce via API REST. Soporta:
- Productos simples - actualiza
regular_pricedirectamente - Productos variables - busca la variacion por SKU o actualiza todas
- Variaciones directas - actualiza via
parent_id
Copiar .env.example a .env y completar con los valores reales:
cp .env.example .env| Variable | Usado por | Descripcion |
|---|---|---|
ODOO_URL |
CONCAT, inventario, PriceChangerOdoo | URL del servidor Odoo |
ODOO_DB |
CONCAT, inventario, PriceChangerOdoo | Nombre de la base de datos |
ODOO_USER |
CONCAT, inventario, PriceChangerOdoo | Usuario Odoo |
ODOO_PASSWORD |
CONCAT, inventario, PriceChangerOdoo | Password Odoo |
WC_API_URL |
PriceChangerWeb | URL API WooCommerce |
WC_CONSUMER_KEY |
PriceChangerWeb | Consumer Key WooCommerce |
WC_CONSUMER_SECRET |
PriceChangerWeb | Consumer Secret WooCommerce |
En Windows CMD:
set ODOO_URL=https://tu-dominio-odoo.com
set ODOO_PASSWORD=tu_password
python CONCAT.pyEn PowerShell:
$env:ODOO_URL="https://tu-dominio-odoo.com"
$env:ODOO_PASSWORD="tu_password"
python CONCAT.pypip install pandas openpyxl PyMuPDF requests1. Exportar precios de Odoo a Odoo.xlsx
2. Obtener precios del proveedor en Adcon.xlsx
3. python generar_precios_actualizar_odoo.py
→ Genera: precios_actualizar_odoo.xlsx
4. python PriceChangerOdoo.py
→ Actualiza precios en Odoo
1. Tener Odoo.xlsx con precios actualizados
2. python PriceChangerWeb.py
→ Actualiza precios en la tienda web
1. Preparar Excel con columnas "Codigo Barra" y "Cant"
2. Colocar en la carpeta de inventario
3. python inventario.py
4. Seleccionar sucursal (1-14)
→ Crea recepciones en Odoo
→ Genera resultado_*.xlsx en procesados/
1. Colocar PDFs de conduces en la carpeta configurada
2. python CONCAT.py
→ Crea pickings de transferencia en Odoo
→ Mueve PDFs a procesados/
Andrew Castillo - Desstenee