[DOC] Actualizar documentación a estándares OCA y preparar logo CriptoMart
- Renombrar README.md a README_DEV.md en todos los addons custom - Crear README.rst siguiendo estructura OCA oficial - Crear directorios readme/ con fragmentos .rst (DESCRIPTION, INSTALL, CONFIGURE, USAGE, CONTRIBUTORS, CREDITS) - Actualizar créditos: Criptomart (autor) + Elika Bilbo (financiador) - Actualizar __manifest__.py con maintainers correctos - Crear estructura static/description/ para logo en 5 addons - Agregar documentación de logo (LOGO_INSTRUCTIONS.md, install_logo.sh) - Actualizar copilot-instructions.md con referencias a OCA_DOCUMENTATION.md - Crear docs/OCA_DOCUMENTATION.md con guía completa de estructura - Crear docs/RESUMEN_CAMBIOS_DOCUMENTACION.md con resumen detallado Addons actualizados: - website_sale_aplicoop - product_sale_price_from_pricelist - product_pricelist_total_margin - product_price_category_supplier - account_invoice_triple_discount_readonly
This commit is contained in:
parent
b31df7b9d8
commit
4a4639f13a
56 changed files with 1778 additions and 674 deletions
336
website_sale_aplicoop/README_DEV.md
Normal file
336
website_sale_aplicoop/README_DEV.md
Normal file
|
|
@ -0,0 +1,336 @@
|
|||
# Website Sale - Aplicoop
|
||||
|
||||
**Author:** Criptomart
|
||||
**License:** AGPL-3
|
||||
**Maintainer:** Criptomart SL
|
||||
|
||||
## Summary
|
||||
|
||||
Modern replacement for legacy Aplicoop - Cooperative group ordering system with separate carts and multi-language support.
|
||||
|
||||
## Description
|
||||
|
||||
Website Sale Aplicoop provides a complete group ordering system designed for cooperative consumption groups. It replaces the legacy Aplicoop system with a modern, scalable solution where customers organize collaborative orders, manage group memberships, and handle separate shopping carts. Perfect for food cooperatives, buying groups, and collective purchasing organizations.
|
||||
|
||||
## Features
|
||||
|
||||
- ✅ Group order management with full lifecycle (draft → confirmed → completed)
|
||||
- ✅ Separate shopping carts per order group
|
||||
- ✅ Group membership tracking with active/inactive states
|
||||
- ✅ Order collection and cutoff dates with validation
|
||||
- ✅ Pickup day configuration and fulfillment tracking
|
||||
- ✅ Multi-language support (ES, PT, GL, CA, EU, FR, IT)
|
||||
- ✅ Partner location management for group coordination
|
||||
- ✅ Product ecosystem integration (ribbons, pricing, margins)
|
||||
- ✅ Order state transitions with email notifications
|
||||
- ✅ Delivery tracking and group order fulfillment
|
||||
- ✅ Financial tracking per group member
|
||||
- ✅ Automatic translation of UI elements
|
||||
- ✅ **Lazy Loading**: Configurable product pagination for fast page loads
|
||||
|
||||
## Installation
|
||||
|
||||
1. Place addon in Odoo addons folder: `/addons/website_sale_aplicoop`
|
||||
2. Activate developer mode
|
||||
3. Go to **Apps** → **Update Apps List**
|
||||
4. Search for "Website Sale - Aplicoop"
|
||||
5. Click **Install**
|
||||
|
||||
### Requirements
|
||||
|
||||
- Odoo 18.0+
|
||||
- Website module
|
||||
- Sale module
|
||||
- Product module
|
||||
- Account module
|
||||
|
||||
### Dependencies
|
||||
|
||||
```
|
||||
- base
|
||||
- web
|
||||
- website
|
||||
- sale
|
||||
- product
|
||||
- account
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
### Administrator Setup
|
||||
|
||||
#### 1. Create a Group Order
|
||||
|
||||
1. Go to **Website Sale** → **Group Orders** (or **Coops** → **Órdenes de Grupo**)
|
||||
2. Click **Create**
|
||||
3. Fill in:
|
||||
- **Name**: e.g., "Weekly Cooperative Order #5"
|
||||
- **Group**: Select the cooperative group
|
||||
- **Collection Date**: When orders will be collected
|
||||
- **Cutoff Date**: Last moment to add items
|
||||
- **Pickup Date**: When group members collect their orders
|
||||
4. Save
|
||||
|
||||
#### 2. Configure Pickup Dates
|
||||
|
||||
1. Go to **Settings** → **Website** → **Shop Settings**
|
||||
2. Configure **Pickup Days**: Define which days are available
|
||||
3. Set **Group Settings**: Default locations, delivery partners
|
||||
|
||||
#### 3. Add Group Members
|
||||
|
||||
1. Open a Group Order
|
||||
2. In the **Members** tab, click **Add**
|
||||
3. Select partner(s)
|
||||
4. Set active/inactive status
|
||||
5. Save
|
||||
|
||||
### Customer Experience
|
||||
|
||||
#### For Group Members on Website
|
||||
|
||||
1. **Browse Products**: Members see products with eco-ribbons, pricing, margin info
|
||||
2. **Add to Cart**: Select items (cart is separate per group order)
|
||||
3. **Review Cart**: See order summary before cutoff date
|
||||
4. **Submit Order**: Confirm before cutoff time
|
||||
5. **Receive Notification**: Get email with pickup details
|
||||
6. **Pickup**: Collect order on designated pickup date
|
||||
|
||||
#### Order Workflow
|
||||
|
||||
```
|
||||
Draft → Confirmed → Collected → Invoiced → Completed
|
||||
↓
|
||||
Cancelled (if member opts out)
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
### Basic Configuration
|
||||
|
||||
**Required:**
|
||||
1. Create group orders with collection/cutoff/pickup dates
|
||||
2. Assign group members to orders
|
||||
3. Set available pickup dates
|
||||
|
||||
**Optional:**
|
||||
1. Configure custom email templates
|
||||
2. Set up product-specific group restrictions
|
||||
3. Customize group order report
|
||||
|
||||
### Multi-Language Setup
|
||||
|
||||
The addon automatically translates:
|
||||
- Interface elements
|
||||
- Form labels
|
||||
- Report headers
|
||||
- Email notifications
|
||||
|
||||
**Supported Languages:** ES, PT, GL, CA, EU, FR, IT
|
||||
|
||||
**Translations are managed in:**
|
||||
- `i18n/[language].po` files
|
||||
- Auto-extracted from templates
|
||||
- See `docs/TRANSLATION_CONVENTIONS.md` for translation patterns
|
||||
|
||||
### Website Customization
|
||||
|
||||
Edit templates in: `views/website_templates.xml`
|
||||
|
||||
Key customizable sections:
|
||||
- `eskaera_page`: Main group order display
|
||||
- `eskaera_details`: Order details view
|
||||
- `member_cart`: Individual member cart interface
|
||||
|
||||
## Technical Details
|
||||
|
||||
### Core Models
|
||||
|
||||
**`group.order`** (Main group order)
|
||||
- `name` (Char): Order identifier
|
||||
- `group_id` (Many2one): Link to group
|
||||
- `state` (Selection): draft/confirmed/collected/invoiced/completed/cancelled
|
||||
- `collection_date` (Date): When group collects
|
||||
- `cutoff_date` (Datetime): Last moment to order
|
||||
- `pickup_date` (Date): Member pickup day
|
||||
- `line_ids` (One2many): Order lines
|
||||
- `member_ids` (One2many): Group members
|
||||
- `active` (Boolean): Soft delete
|
||||
|
||||
**`group.order.line`** (Order items per member)
|
||||
- `order_id` (Many2one): Parent group order
|
||||
- `member_id` (Many2one): Which group member
|
||||
- `product_id` (Many2one): Ordered product
|
||||
- `quantity` (Float): Amount ordered
|
||||
- `unit_price` (Float): Price per unit
|
||||
- `subtotal` (Float): Computed (qty × price)
|
||||
|
||||
**`group.partner`** (Group member tracking)
|
||||
- `partner_id` (Many2one): Odoo partner
|
||||
- `group_id` (Many2one): Which group
|
||||
- `active` (Boolean): Active member status
|
||||
- `role` (Selection): admin/member
|
||||
|
||||
### Extended Models
|
||||
|
||||
**`product.template`**
|
||||
- `group_order_allowed` (Boolean): Can be in group orders
|
||||
- `eco_ribbon_id` (Many2one): Environmental ribbon
|
||||
- `margin_type_id` (Many2one): Pricing margin
|
||||
|
||||
**`sale.order`**
|
||||
- `group_order_id` (Many2one): Parent group order (if applicable)
|
||||
|
||||
### Views & Templates
|
||||
|
||||
**Backend Views:**
|
||||
- `group.order` list/form views
|
||||
- `group.order.line` inline form
|
||||
- `group.partner` configuration view
|
||||
|
||||
**Frontend Templates:**
|
||||
- `eskaera_page`: Main group order display
|
||||
- `eskaera_details`: Order details/summary
|
||||
- `member_cart`: Individual cart interface
|
||||
- `group_members`: Member list view
|
||||
|
||||
## Integration Points
|
||||
|
||||
This addon integrates with:
|
||||
|
||||
- **Product Modules**
|
||||
- `product_eco_ribbon` - Eco-friendly product indicators
|
||||
- `product_margin_type` - Dynamic product pricing
|
||||
- `product_pricing_margins` - Cost management
|
||||
|
||||
- **Website/E-commerce**
|
||||
- `elika_bilbo_website_theme` - Custom website theme
|
||||
- `website_sale` - Core shop functionality
|
||||
- `website_legal_es` - Legal compliance (Spanish)
|
||||
|
||||
- **Sales/Accounting**
|
||||
- `sale` - Sales order generation
|
||||
- `account` - Invoicing
|
||||
|
||||
## Testing
|
||||
|
||||
Run tests with:
|
||||
|
||||
```bash
|
||||
cd /home/snt/Documentos/lab/odoo/kidekoop/odoo-addons
|
||||
python -m pytest website_sale_aplicoop/tests/ -v
|
||||
```
|
||||
|
||||
**Test Coverage:**
|
||||
- ✅ Group order creation/deletion
|
||||
- ✅ Member management
|
||||
- ✅ Order line addition/removal
|
||||
- ✅ State transitions
|
||||
- ✅ Cutoff date validation
|
||||
- ✅ Pickup date assignment
|
||||
- ✅ Translation extraction (7 languages)
|
||||
- ✅ Website template rendering
|
||||
|
||||
## Known Limitations
|
||||
|
||||
- Group orders are company-specific
|
||||
- Cannot change pickup date after order is confirmed
|
||||
- Members cannot modify orders after cutoff
|
||||
- Automatic invoicing must be triggered manually
|
||||
|
||||
## Changelog
|
||||
|
||||
### 18.0.1.3.1 (2026-02-18)
|
||||
- **Date Calculation Fixes (Critical)**:
|
||||
- Fixed `_compute_cutoff_date` logic: Changed `days_ahead <= 0` to `days_ahead < 0` to allow cutoff_date to be the same day as today
|
||||
- Enabled `store=True` for `delivery_date` field to persist calculated values and enable database filtering
|
||||
- Added constraint `_check_cutoff_before_pickup` to validate that pickup_day >= cutoff_day in weekly orders
|
||||
- Added `@api.onchange` methods for immediate UI feedback when changing cutoff_day or pickup_day
|
||||
- **Automatic Date Updates**:
|
||||
- Created daily cron job `_cron_update_dates` to automatically recalculate dates for active orders
|
||||
- Ensures computed dates stay current as time passes
|
||||
- **UI Improvements**:
|
||||
- Added "Calculated Dates" section in form view showing readonly cutoff_date, pickup_date, and delivery_date
|
||||
- Improved visibility of automatically calculated dates for administrators
|
||||
- **Testing**:
|
||||
- Added 6 regression tests with `@tagged('post_install', 'date_calculations')`:
|
||||
- `test_cutoff_same_day_as_today_bug_fix`: Validates cutoff can be today
|
||||
- `test_delivery_date_stored_correctly`: Ensures delivery_date persistence
|
||||
- `test_constraint_cutoff_before_pickup_invalid`: Tests invalid configurations are rejected
|
||||
- `test_constraint_cutoff_before_pickup_valid`: Tests valid configurations work
|
||||
- `test_all_weekday_combinations_consistency`: Tests all 49 date combinations
|
||||
- `test_cron_update_dates_executes`: Validates cron job execution
|
||||
- **Documentation**:
|
||||
- Documented that this is a more robust fix than v18.0.1.2.0, addressing edge cases in date calculations
|
||||
|
||||
### 18.0.1.3.0 (2026-02-16)
|
||||
- **Performance**: Lazy loading of products for faster page loads
|
||||
- Configurable product pagination (default: 20 per page)
|
||||
- New Settings: Enable Lazy Loading, Products Per Page
|
||||
- Page 1: 500-800ms load time (vs 10-20s before)
|
||||
- Subsequent pages: 200-400ms via AJAX
|
||||
- New endpoint: `GET /eskaera/<order_id>/load-page?page=N`
|
||||
- **Templates**: Split product rendering into reusable template
|
||||
- New: `eskaera_shop_products` template
|
||||
- Backend: `_get_products_paginated()` in group_order model
|
||||
- **JavaScript**: Load More button with event handling
|
||||
- `_attachLoadMoreListener()` for AJAX pagination
|
||||
- Spinner during load (button disabled + "Loading..." text)
|
||||
- Re-attach event listeners for new products
|
||||
- Auto-hide button when no more products
|
||||
- Documentation: Added `docs/LAZY_LOADING.md` with full technical details
|
||||
|
||||
### 18.0.1.2.0 (2026-02-02)
|
||||
- UI Improvements:
|
||||
- Increased cart text size (2x) for better readability
|
||||
- Increased cart icon sizes (1.2rem) with proper button proportions
|
||||
- Enlarged "Save as Draft" button in checkout (2x text and icon)
|
||||
- Date Calculation Fixes:
|
||||
- Fixed pickup_date calculation (was adding extra week incorrectly)
|
||||
- Simplified pickup_date computation logic
|
||||
- Display Enhancements:
|
||||
- Added delivery_date display to all order pages
|
||||
- Improved date field visibility on order cards and product pages
|
||||
|
||||
### 18.0.1.0.0 (2024-12-20)
|
||||
- Initial release
|
||||
- Core group order functionality
|
||||
- Multi-language translation support
|
||||
- Complete member management
|
||||
- Order state machine implementation
|
||||
|
||||
### 18.0.1.1.0 (2025-01-10)
|
||||
- Fixed translation extraction for "Pickup day" and "Cutoff day"
|
||||
- Improved QWeb template for better performance
|
||||
- Added comprehensive documentation
|
||||
|
||||
## Support
|
||||
|
||||
For issues, feature requests, or contributions:
|
||||
- **Repository**: https://git.criptomart.net/KideKoop/kidekoop/odoo-addons
|
||||
- **Main Documentation**: `/docs/` folder (transversal docs)
|
||||
- **Addon Documentation**: This README + `/docs/ODOO18_TRANSLATIONS_LEARNINGS.md`
|
||||
- **Maintainer**: Criptomart SL
|
||||
|
||||
## Documentation References
|
||||
|
||||
- **Translation Patterns**: See `docs/TRANSLATION_CONVENTIONS.md`
|
||||
- **Translation Examples**: See `docs/TRANSLATION_EXAMPLES.md`
|
||||
- **Odoo 18 Translation Guide**: See `docs/ODOO18_TRANSLATIONS_LEARNINGS.md`
|
||||
- **Project Architecture**: See `docs/ARCHITECTURE.md`
|
||||
|
||||
## Related Modules
|
||||
|
||||
- `product_eco_ribbon` - Product environmental classification
|
||||
- `product_margin_type` - Dynamic product pricing
|
||||
- `product_pricing_margins` - Complete pricing system
|
||||
- `elika_bilbo_website_theme` - Custom website theme
|
||||
- `website_legal_es` - Legal compliance
|
||||
|
||||
---
|
||||
|
||||
**Version:** 18.0.1.3.1
|
||||
**Odoo:** 18.0+
|
||||
**License:** AGPL-3
|
||||
**Maintainer:** Criptomart SL
|
||||
**Repository:** https://git.criptomart.net/KideKoop/kidekoop/odoo-addons
|
||||
Loading…
Add table
Add a link
Reference in a new issue