180 lines
5.2 KiB
HTML
180 lines
5.2 KiB
HTML
# Website Sale Aplicoop - Sistema de Pedidos Colaborativos
|
||
|
||

|
||
|
||
**Versión:** 18.0.1.0.0-beta
|
||
**Licencia:** AGPL-3.0
|
||
**Autor:** [Criptomart](https://criptomart.net)
|
||
|
||
## Descripción
|
||
|
||
Website Sale Aplicoop es un módulo de Odoo 18 que implementa un sistema moderno y escalable para gestionar **pedidos colaborativos de compra grupal** (*eskaera* en euskera).
|
||
|
||
Este módulo reemplaza la antigua aplicación Aplicoop con una solución integrada en Odoo que permite a grupos de usuarios realizar compras coordinadas con productos específicos, fechas de corte y períodos de recogida.
|
||
|
||
## Características Principales
|
||
|
||
### 🛒 Gestión de Pedidos de Grupo
|
||
- Crear pedidos colaborativos con fechas de inicio/fin configurables
|
||
- Sistema de máquina de estados (draft → open → closed/cancelled)
|
||
- Asignación de productos por:
|
||
- Producto directo (lista explícita)
|
||
- Categoría (todos los productos en categorías seleccionadas)
|
||
- Proveedor (todos los productos del proveedor)
|
||
|
||
### 🔍 Experiencia de Compra
|
||
- Búsqueda y filtrado de productos por:
|
||
- Nombre y descripción
|
||
- Categoría
|
||
- Imágenes en miniatura de productos
|
||
- Carrito persistente por pedido (localStorage)
|
||
- Interfaz responsive (móvil-friendly)
|
||
|
||
### 👥 Control de Acceso
|
||
- Grupos de usuarios (res.partner)
|
||
- Solo usuarios miembros de grupos pueden ver/comprar en pedidos
|
||
- Dos niveles de permisos:
|
||
- Lectora (portal): ver y comprar
|
||
- Gestora: crear y editar pedidos
|
||
|
||
### 📅 Fechas y Períodos
|
||
- Fecha de inicio/fin del pedido
|
||
- Horas de apertura/cierre opcionales
|
||
- Día de corte de compras (cutoff_day)
|
||
- Día de recogida del pedido
|
||
- Períodos de recurrencia (diario, semanal, quincenal, mensual)
|
||
|
||
### 🌍 Internacionalización
|
||
Disponible en 7 idiomas:
|
||
- 🇪🇸 Español
|
||
- 🇫🇷 Francés
|
||
- 🇨🇦 Catalán
|
||
- 🇪🇺 Euskera
|
||
- 🇬🇦 Gallego
|
||
- 🇮🇹 Italiano
|
||
- 🇵🇹 Portugués
|
||
|
||
## Flujo de Compra
|
||
|
||
```
|
||
1. Usuario ve lista de pedidos activos (/eskaera)
|
||
↓
|
||
2. Selecciona un pedido y ve productos (/eskaera/<id>)
|
||
↓
|
||
3. Busca/filtra productos (search, category)
|
||
↓
|
||
4. Agrega productos al carrito (localStorage)
|
||
↓
|
||
5. Confirma el carrito (/eskaera/confirm)
|
||
↓
|
||
6. Sale.order creada automáticamente en BD
|
||
↓
|
||
7. Flujo estándar de Odoo (quotation → order → invoice)
|
||
```
|
||
|
||
## Instalación
|
||
|
||
1. Descargar el módulo en la carpeta de addons
|
||
2. Actualizar la lista de módulos en Odoo
|
||
3. Instalar "Website Sale Aplicoop"
|
||
4. Ir a **Website Sale > Group Orders** para crear pedidos
|
||
|
||
## Uso
|
||
|
||
### Crear un Pedido de Grupo
|
||
|
||
1. **Website Sale > Group Orders > Create**
|
||
2. Completar campos:
|
||
- Nombre del pedido
|
||
- Grupos que pueden participar (requerido)
|
||
- Productos, categorías o proveedores
|
||
- Fechas y horarios
|
||
- Día de corte y recogida
|
||
3. Cambiar estado a "Open"
|
||
4. Los usuarios pueden empezar a comprar
|
||
|
||
### Buscar y Filtrar Productos
|
||
|
||
En la página de tienda (/eskaera/<id>):
|
||
- Barra de búsqueda para buscar por nombre/descripción
|
||
- Dropdown de categorías para filtrar
|
||
- Botón "Filtrar" para aplicar
|
||
|
||
## Estructura Técnica
|
||
|
||
### Modelos
|
||
- `group.order`: Pedido de grupo (máquina de estados)
|
||
- Extensiones de `product.product` y `res.partner`
|
||
|
||
### Controlador
|
||
- `/eskaera`: Lista de pedidos activos
|
||
- `/eskaera/<id>`: Tienda de productos
|
||
- `/eskaera/add-to-cart`: Validación de productos (POST JSON)
|
||
- `/eskaera/confirm`: Crear sale.order (POST JSON)
|
||
|
||
### Vistas
|
||
- Plantillas para website (eskaera_page, eskaera_shop, eskaera_checkout)
|
||
- Formularios backend para gestión de pedidos
|
||
|
||
### Internacionalización
|
||
- Traducciones al 100% en 7 idiomas
|
||
- Basado en POT master con msgmerge
|
||
|
||
## Validaciones
|
||
|
||
- `cutoff_day`: Campo requerido
|
||
- `start_date`: Opcional (si vacío, pedido siempre abierto)
|
||
- `end_date`: Opcional (si vacío, pedido permanente)
|
||
- Validación de fechas: `start_date ≤ end_date`
|
||
- Validación de horarios: `start_time < end_time` (0-24)
|
||
|
||
## Seguridad
|
||
|
||
- CSRF token en rutas JSON
|
||
- Validación de acceso por grupo en todas las rutas
|
||
- Verificación de estado del pedido (solo open)
|
||
- ACL basado en grupos de usuario
|
||
|
||
## Performance
|
||
|
||
- Búsqueda de productos optimizada (filtered en lugar de search)
|
||
- Carrito en localStorage (sin DB writes hasta confirmación)
|
||
- Logging detallado para debugging
|
||
|
||
## Testing
|
||
|
||
Suite completa de tests:
|
||
- `test_group_order.py`: Validaciones del modelo
|
||
- `test_product_extension.py`: Extensión de productos
|
||
- `test_res_partner.py`: Extensión de partner
|
||
- `test_eskaera_shop.py`: Lógica de descubrimiento de productos
|
||
|
||
Ejecutar tests:
|
||
```bash
|
||
docker-compose exec -T odoo odoo -d odoo -p 8070 -i website_sale_aplicoop --test-enable --stop-after-init
|
||
```
|
||
|
||
## Soporte
|
||
|
||
- Documentación: Ver carpeta `readme/`
|
||
- Diagnóstico de problemas: Ver `DIAGNOSTIC_PRODUCTS.md`
|
||
- Estado del módulo: Ver `STATUS_REPORT.md`
|
||
|
||
## Licencia
|
||
|
||
AGPL-3.0 - Copyright 2025 Criptomart
|
||
|
||
## Cambios Recientes
|
||
|
||
**v18.0.1.0.0-beta:**
|
||
- ✅ Traducción completa a 7 idiomas
|
||
- ✅ Correcciones de tipos de pedido
|
||
- ✅ Descubrimiento de productos por categorías/proveedores
|
||
- ✅ Búsqueda y filtros en la tienda
|
||
- ✅ Imágenes en miniatura de productos
|
||
- ✅ Información de fechas de corte y recogida
|
||
- ✅ Suite de tests completa
|
||
|
||
---
|
||
|
||
**Desarrollado con ❤️ por [Criptomart](https://criptomart.net)**
|