# Website Sale Aplicoop - Sistema de Pedidos Colaborativos ![Criptomart Logo](icon.svg) **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)**