The "shop as a read-only catalog" behaviour lived inside website_sale_aplicoop, so every site that wanted the eskaera flow also lost the standard cart. It now ships as its own installable addon, with the redirect target configurable instead of hardcoded to /eskaera. - website_sale_disable_cart: hides the cart UI (12 header styles + the product card quick-add) and overrides the standard cart endpoints. Redirect URL is configurable in Website settings (default /shop); only site-internal paths are accepted, so a misconfigured value cannot turn the shop into an open redirect nor loop back into a disabled route. - Fixes carried over from the original code: /shop/cart/quantity is the Odoo 18 path (it was /shop/cart_quantity, which never matched), the boxed, sidebar and sales two/three/four headers were not covered (the cart link stayed visible on them), and the routes now override the standard methods instead of registering duplicate ones. - website_sale_aplicoop 18.0.1.12.0: drops the view file and the four redirect routes; installing it no longer touches the standard shop. Upgrade order matters: update website_sale_aplicoop first, then install website_sale_disable_cart in a second Odoo run — both use the same XPaths and obsolete records are only cleaned up at the end of a run. Tests: 8/8 in website_sale_disable_cart, aplicoop unaffected (its 2 failures predate this change). Verified live on a DB clone: /shop/cart returns 303 to the configured URL and no cart markup remains on /shop. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
163 lines
6.4 KiB
ReStructuredText
163 lines
6.4 KiB
ReStructuredText
========================
|
|
Website Sale - Aplicoop
|
|
========================
|
|
|
|
.. image:: https://img.shields.io/badge/license-AGPL--3-blue.svg
|
|
:target: https://www.gnu.org/licenses/agpl-3.0-standalone.html
|
|
:alt: License: AGPL-3
|
|
.. image:: https://img.shields.io/badge/Python-3.9%2B-blue
|
|
:alt: Python: 3.9+
|
|
.. image:: https://img.shields.io/badge/Odoo-18.0-blue
|
|
:alt: Odoo: 18.0
|
|
|
|
**Website Sale - Aplicoop** is a modern Odoo 18 module that replaces the legacy Aplicoop application with a complete solution for managing collaborative consumption group orders (*eskaera* in Basque).
|
|
|
|
Description
|
|
===========
|
|
|
|
This module replaces the legacy Aplicoop application with a modern, scalable solution for managing collaborative consumption group orders (*eskaera* in Basque) within Odoo's standard website sales framework.
|
|
|
|
Features
|
|
~~~~~~~~
|
|
|
|
- **Group Order Management**: Create and manage group orders (eskaera) with customizable state transitions (draft → open → closed/cancelled)
|
|
- **Weekly Activity Filtering**: Automatically filter active orders for the current week based on start/end dates and time windows
|
|
- **Flexible Scheduling**: Support for optional start/end times to define order availability windows within a day
|
|
- **Cutoff Day Support**: Define weekly cutoff days for group orders to control when purchases can be made
|
|
- **Product Association**: Link products to specific group orders through Many2many relationships
|
|
- **Partner Group Association**: Link partners (users) to groups via Many2many relationships for group-based shopping
|
|
- **i18n Support**: Full internationalization with translations for 7 languages (Spanish, French, Catalan, Basque, Galician, Italian, Portuguese)
|
|
- **OCA Compliant**: AGPL-3.0 licensed, follows OCA standards for documentation, testing, and code structure
|
|
|
|
Context / Use Cases
|
|
===================
|
|
|
|
Group orders (*eskaera*) are a business model for collaborative consumption where groups of users collectively purchase products within defined time windows. This module was created to replace the legacy Aplicoop application, providing:
|
|
|
|
**Business Value:**
|
|
|
|
- Streamlined group purchasing workflows within Odoo's standard sales framework
|
|
- Flexible scheduling to accommodate different group shopping patterns (daily, weekly, biweekly, monthly)
|
|
- Clear separation between temporary shopping carts and permanent sales orders
|
|
- Support for multiple groups with different suppliers, products, and categories
|
|
|
|
**Use Cases:**
|
|
|
|
- Cooperative grocery purchasing groups
|
|
- Bulk order consolidation for community members
|
|
- Time-limited promotional campaigns with group participation
|
|
- Multi-location organizations with shared procurement
|
|
|
|
Usage
|
|
=====
|
|
|
|
Creating a Group Order
|
|
~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
1. Go to **Website Sale > Group Orders > Create**
|
|
2. Fill in the order details:
|
|
|
|
- **Order Name**: Descriptive name (e.g., "Weekly Vegetable Order")
|
|
- **Start Date**: When the order opens for shopping (mandatory)
|
|
- **End Date**: When the order closes (optional; leave empty for permanent orders)
|
|
- **Cutoff Day**: Day of week when purchases stop (0=Monday, 6=Sunday) - mandatory
|
|
- **Start Time**: Optional time when order becomes active (0-24 hours)
|
|
- **End Time**: Optional time when order closes (0-24 hours)
|
|
- **Recurrence Period**: How often the order repeats (daily, weekly, biweekly, monthly)
|
|
- **Suppliers**: Link to product suppliers
|
|
- **Categories**: Product categories available in this order
|
|
- **Groups**: Which user groups can participate
|
|
|
|
3. Click **Save** and transition the order to **Open** state to allow shopping
|
|
|
|
Shopping for a Group Order
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
1. Navigate to the website storefront at ``/eskaera`` (group orders page)
|
|
2. View active group orders for your participating groups
|
|
3. Select an order to view available products
|
|
4. Add products to your cart (separate cart per order)
|
|
5. At checkout, confirm your order to convert items to a sales order draft
|
|
6. Proceed through standard Odoo checkout workflow
|
|
|
|
Configuration
|
|
~~~~~~~~~~~~~~
|
|
|
|
**Managing Groups**
|
|
|
|
1. Go to **Contacts > Groups** (res.partner with is_group=True)
|
|
2. Create groups for user communities
|
|
3. Add partners/users to groups via the **Members** tab
|
|
|
|
**Managing Products**
|
|
|
|
1. Products are linked to group orders via the **Group Orders** field in product settings
|
|
2. Set pricing and availability per group order
|
|
3. Assign products to categories used in group orders
|
|
|
|
**Date & Time Validation**
|
|
|
|
- ``start_date`` must be ≤ ``end_date`` (when both filled)
|
|
- ``start_time`` must be < ``end_time`` (when both filled)
|
|
- Times must be between 0-24 hours
|
|
- Empty end_date = permanent order
|
|
- Empty times = no time-based restrictions
|
|
|
|
Credits
|
|
=======
|
|
|
|
This module was developed by Criptomart in 2025 as a modernization of the Aplicoop application, integrating collaborative consumption group order management directly into Odoo's website sales framework.
|
|
|
|
The implementation follows OCA standards for:
|
|
|
|
- Code quality and testing (26 passing tests)
|
|
- Documentation structure and multilingual support
|
|
- Security and access control
|
|
- API design for extensibility
|
|
|
|
Authors
|
|
=======
|
|
|
|
* Criptomart
|
|
|
|
Funding
|
|
=======
|
|
|
|
* Elika Bilbo
|
|
|
|
Contributors
|
|
============
|
|
|
|
* `Criptomart <https://criptomart.net>`_:
|
|
|
|
* Project lead and main development
|
|
* Architecture and implementation
|
|
|
|
**Historical References:**
|
|
|
|
This module was inspired by the original **Aplicoop** project:
|
|
|
|
* https://sourceforge.net/projects/aplicoop/
|
|
* Original creators: Ekaitz Mendiluze, Joseba Legarreta, and other contributors
|
|
|
|
The original Aplicoop project served as a pioneering solution for collaborative consumption group orders, and this module brings its functionality to the modern Odoo platform.
|
|
|
|
Notes - Standard shop and cart
|
|
==============================
|
|
|
|
This module adds the "eskaera" group order flow (``/eskaera``); it no longer
|
|
touches the standard ``website_sale`` storefront. The default ``/shop`` and its
|
|
shopping cart keep working as usual after installing it.
|
|
|
|
Sites that want the standard cart disabled — so that the group order flow is
|
|
the single shopping experience — should additionally install
|
|
``website_sale_disable_cart``, which hides the cart UI and redirects the
|
|
standard cart endpoints to a configurable URL. That behaviour used to live in
|
|
this module (up to 18.0.1.11.0) and was extracted in 18.0.1.12.0.
|
|
|
|
::
|
|
|
|
docker-compose run --rm odoo odoo -d odoo -i website_sale_disable_cart --stop-after-init
|
|
|
|
Then set *Website > Configuration > Settings > Disabled Cart > Cart Redirect
|
|
URL* to ``/eskaera``.
|