Commit graph

373 commits

Author SHA1 Message Date
GitHub Copilot
591dd5f2b2 [IMP] stock_picking_batch_custom: larger bold quantity in operator view
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-29 18:53:22 +02:00
GitHub Copilot
a9a14e7db5 [IMP] stock_picking_batch_custom: add full-screen operator view for batch picking
Add a "Vista Operarios" button in the batch form header (visible when
in_progress) that opens a full-screen list of stock.move.line filtered
by the current batch. The view shows only the fields operators need
(category, product, partner, home_delivery, consumer_group, collected,
quantity) with larger rows and touch-friendly quantity input via CSS.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-29 18:30:46 +02:00
GitHub Copilot
c8e0461120 [IMP] website_sale_aplicoop: render user-defined website_sale ribbon alongside stock ribbon
Eskaera shop cards now display the standard website_sale ribbon
(variant_ribbon_id or website_ribbon_id, e.g. "Novedad") in addition
to the dynamic stock ribbon. Stock ribbons move to the right so they
coexist with user-defined ribbons (which default to the left).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 18:11:47 +02:00
GitHub Copilot
3b8cb7582b [FIX] website_sale_aplicoop: scope draft lookup to active cycle window
The /eskaera/load-draft endpoint was returning previous-cycle drafts when
group_order.cutoff_date was still in the future but group_order.pickup_date
had not yet been recomputed (its compute only depends on pickup_day and
start_date). Both the stale group_order.pickup_date and the old draft's
pickup_date held the same past value, so the exact-pickup-date filter in
_find_recent_draft_order matched the stale draft and the cart was
repopulated with old products immediately after being cleared.

Replace the pickup_date exact-match + current-week fallback with a single
cutoff-anchored window: create_date in [cutoff_date - 6 days, cutoff_date].
Drafts created outside that window belong to a previous cycle and must
not be reused. The change applies to all four callers (load-draft,
clear-cart, save-order, confirm) so the merge/confirm paths also stop
attaching to stale drafts.

Covered by a new regression test that mirrors the production setup
(matching pickup_date, draft create_date backdated 10 days).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 17:40:48 +02:00
GitHub Copilot
6125515772 [IMP] stock_picking_batch_custom: order detailed ops by category, product, partner
Override _order on stock.move.line using the existing stored Many2one fields.
Odoo JOINs product.category and uses its _order (complete_name, which is stored)
so the full category path is used for sorting without any extra fields.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 20:22:18 +02:00
GitHub Copilot
f5670906f9 [IMP] stock_picking_batch_custom: order detailed ops by category, product, partner
Override _order on stock.move.line with stored Char fields so the server
returns records in the correct order on initial load (default_order in the
view only applies to interactive client-side sorting, not the initial fetch).

Add product_name and partner_name stored related fields to avoid SQL JOINs
in ORDER BY. Use the same fields in the view's default_order for consistency.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 20:12:39 +02:00
GitHub Copilot
8b9995526e [IMP] stock_picking_batch_custom: order detailed ops by category, product, partner
Store picking_partner_id on stock.move.line and set default_order to
product_categ_complete_name, product_id, picking_partner_id in the
detailed operations view so sorting uses the full category path
(e.g. 'SECO ENVASADO / Aperitivos') instead of only the leaf name.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 20:01:17 +02:00
GitHub Copilot
16941b8183 [IMP] stock_picking_batch_custom: increase quantity column size for touch usability
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 19:32:20 +02:00
GitHub Copilot
72da09715d [IMP] stock_picking_batch_custom: widen quantity column for easier touch interaction
Add o_batch_move_line_list class to the detailed ops list and use it to
set min-width: 100px on the quantity column header and cells.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 19:31:34 +02:00
GitHub Copilot
c9188e4f10 [IMP] stock_picking_batch_custom: order detailed ops by category, product, partner
Store picking_partner_id on stock.move.line and set default_order to
product_categ_id, product_id, picking_partner_id in the detailed operations view.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 19:25:46 +02:00
GitHub Copilot
e2a22c5d71 Save Draft transation 2026-05-28 13:53:00 +02:00
GitHub Copilot
b01794c319 [FIX] website_sale_aplicoop: clear cart when group order cutoff has passed
Previously, when a user reopened a group order whose cutoff day had
already passed, the /eskaera/check-status response correctly triggered
the localStorage cart clear, but _autoLoadDraftOnInit immediately
re-fetched the previous cycle's draft sale.order from /eskaera/load-draft
(which only guarded on group_order.state, not cutoff_date) and the stale
items reappeared in the cart, confusing users.

Add a cutoff_date < today guard to load_draft_cart so the endpoint
returns the existing clear_cart unavailable response, and short-circuit
_autoLoadDraftOnInit on the frontend via a _skipDraftAutoLoad flag set
in _checkGroupOrderStatus to avoid the now-pointless XHR round trip.

Covered by a new regression test in tests/test_group_order_status_endpoint.py.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-28 13:51:37 +02:00
GitHub Copilot
98ffcdaefb [IMP] l10n_es_edi_tbai_reagyp_recibidas: add Criptomart module icon
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-25 14:18:46 +02:00
GitHub Copilot
66a5e31060 [ADD] l10n_es_edi_tbai_reagyp_recibidas: fix REAGYP vendor bill regime key
Native l10n_es_edi_tbai hardcodes ClaveRegimenIvaOpTrascendencia '19' for
REAGYP vendor bills, but '19' only exists in the issued-invoices book. The
Batuz LROE schema for received invoices rejects it (cvc-enumeration-valid),
where the valid REAGYP-compensation key is '02'.

Override _l10n_es_tbai_get_vendor_bill_values_batuz to remap 19 -> 02.
Upstream: https://github.com/odoo/odoo/pull/266214

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-25 14:12:16 +02:00
GitHub Copilot
eb515c28e1 [FIX] website_sale_aplicoop: show pickup slots on checkout page
Replace old pickup_day/pickup_date display with the slot-based logic
(pickup_slot_ids) on the checkout page, consistent with the shop page.
Falls back to legacy pickup_day if no slots are configured.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 13:44:34 +02:00
GitHub Copilot
5eb8274192 [IMP] stock_picking_batch_custom: add partner column to detailed operations
Show picking_partner_id after product_id in the detailed operations
list so the destination contact is visible next to the product.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 12:38:15 +02:00
GitHub Copilot
5eea3e2a23 [IMP] website_sale_aplicoop: improve i18n label fallbacks and response parsing
Add hardcoded fallback translations for es/eu when PO-based translation
returns the source string unchanged. Expand labels dict with all keys
needed by the frontend. Fix JSON response parsing in template
(data.result || data). Add js_translations keys. Add pot file for
stock_picking_batch_custom.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 12:28:33 +02:00
GitHub Copilot
647438e012 [FIX] website_sale_aplicoop: home delivery unchecked by default
The checkout home-delivery checkbox had a fixed checked="checked"
attribute, so it always rendered checked even when the delivery
product was not in the cart. Remove it and let checkDeliveryInCart()
mark it only when the delivery product is actually present.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-25 12:26:04 +02:00
GitHub Copilot
98fe8676ea group order form notebook 2026-05-21 17:37:22 +02:00
GitHub Copilot
1b20142b6f [IMP] stock_picking_batch_custom: add is_collected to detailed operations view
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 16:47:19 +02:00
GitHub Copilot
a6e8c975f2 [IMP] stock_picking_batch_custom: add home_delivery and consumer_group_id to detailed ops view
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 16:46:21 +02:00
GitHub Copilot
9547193083 [IMP] stock_picking_batch_custom: show product code as separate optional column
Add product_default_code related field to stock.move.line and
stock.picking.batch.summary.line. Show it as a hidden-by-default column
to the right of product_id in both detailed operations and product summary
views. Hide the code prefix from the product name via display_default_code
context so sorting is alphabetical.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 16:44:54 +02:00
GitHub Copilot
f25d2b5e2c [IMP] stock_picking_batch_custom: hide location and picking fields by default in detailed ops
Hide location_id, location_dest_id and picking_id (optional=hide) in the
detailed operations list view to reduce visual clutter.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 16:40:26 +02:00
GitHub Copilot
4d5e0c5502 [IMP] stock_picking_batch_custom: show product category in detailed operations view
Add product_categ_id before product_id (visible by default) and hide
company and unit of measure fields by default in the detailed operations tab.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 16:22:57 +02:00
GitHub Copilot
b0dc189708 traducciones 2026-05-21 16:14:04 +02:00
GitHub Copilot
e1c3da6246 traducciones 2026-05-21 15:29:45 +02:00
GitHub Copilot
876e7b1fbf traducciones 2026-05-21 15:15:30 +02:00
GitHub Copilot
d3d1231d29 disable load in cart portal buttons 2026-05-21 13:50:50 +02:00
GitHub Copilot
4ea0286b52 cron update sale order lines 2026-05-21 13:37:10 +02:00
GitHub Copilot
56509892e6 [FIX] stock_picking_batch_custom: fix zebra striping selectors for Odoo 18
Replace old Odoo 16/17 class names (.o_list_view_table) with Odoo 18
equivalents (table.o_list_table, tr.o_data_row) so zebra striping
renders correctly in the detailed operations list view.

Remove background:transparent rule on .o_field_widget * that was
breaking the boolean_toggle widget appearance on striped rows.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 12:25:55 +02:00
GitHub Copilot
07bd632537 [FIX] stock_picking_batch_custom: fix zebra striping selectors for Odoo 18
Replace old Odoo 16/17 class names (.o_list_view_table) with Odoo 18
equivalents (table.o_list_table, tr.o_data_row) so zebra striping
renders correctly in the detailed operations list view.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 18:23:55 +02:00
GitHub Copilot
f983d71ea3 [FIX] website_sale_aplicoop: fix account.tax access error and duplicate home-delivery handler
Add sudo() to pricelist_item and fiscal position fallback in _get_pricing_info
so portal users can price the delivery product without triggering an AccessError
on account.tax. Remove the redundant #home-delivery-btn click handler from
website_sale.js — home_delivery.js already owns that button via
bindShopHomeDeliveryButton(), which manages the active class and localStorage cart.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 18:20:02 +02:00
GitHub Copilot
27097004fb [FIX] website_sale_aplicoop: wire home delivery preference through all save flows
Three bugs prevented home_delivery from reaching sale.order:

1. #home-delivery-btn (shop sidebar) had no JS handler — clicking it did
   nothing. Now it toggles active state and persists choice to sessionStorage.

2. _executeSaveCartAsDraft (Save Cart button) never included is_delivery in
   the request body. Now reads the toggle button state (or the page-level
   data-home-delivery-enabled fallback) and sends is_delivery correctly.

3. #home-delivery-checkbox on checkout page was unchecked by default and
   always shown. Now it is pre-checked when group_order.home_delivery is
   True, wrapped in t-if to hide it when delivery is not configured, and
   synced bidirectionally with sessionStorage so the shop-page toggle state
   carries over to checkout.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 17:57:07 +02:00
GitHub Copilot
a1899483c5 [TEST] website_sale_aplicoop: add tests for home_delivery computed field
- New test_home_delivery.py: verifies group.order.home_delivery derives
  from delivery_product_id (compute), and that sale.order.home_delivery
  is set correctly through _get_effective_delivery_context
- Fix test_save_order_endpoints: replace home_delivery=True (now ignored
  on computed field) with delivery_product_id to enable delivery
- Fix test_phase3_confirm_eskaera: same fix for integration test setUp

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 17:49:50 +02:00
GitHub Copilot
9d614ed79e [FIX] website_sale_aplicoop: auto-derive home_delivery from delivery_product_id
Make group.order.home_delivery a computed stored field that is True
whenever delivery_product_id is set, eliminating the manual checkbox
that could be forgotten. This fixes sale.order.home_delivery not being
set when the delivery product was configured but the boolean was left
unchecked.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 17:37:33 +02:00
GitHub Copilot
fb1efb0474 [IMP] website_sale_aplicoop: mostrar día y horario completo en pickup slots
Antes: si el slot tenía label, solo se mostraba el label (sin día ni hora).
Ahora: siempre se muestra día + rango horario (09:00–13:00), con el label
entre paréntesis como información adicional opcional.

Aplicado en eskaera_order_card_meta (tarjeta compacta) y en la vista
detalle de la tienda (group_order.pickup_slot_ids).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 17:28:39 +02:00
GitHub Copilot
91301fc271 [FIX] website_sale_aplicoop: corregir error QWeb pickup_slot_ids|length
El operador | en expresiones t-if de QWeb es el OR bitwise de Python,
no un filtro Jinja2. Como 'length' no existe en el contexto QWeb, evaluaba
recordset | None y lanzaba TypeError. Simplificado a solo pickup_slot_ids
(recordset vacío ya es falsy en Python).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 17:21:57 +02:00
GitHub Copilot
b14a6f84ed [IMP] website_sale_aplicoop: mostrar franjas de recogida en formulario group.order
- Añadir reglas de acceso para group.order.slot en ir.model.access.csv
- Añadir pestaña "Pickup Slots" en el formulario de group.order con lista
  editable (handle de secuencia, día, etiqueta, hora inicio/fin, activo)
- Corregir valores del campo weekday: de dígitos numéricos a nombres de día
  (Monday...Sunday) para mejor usabilidad

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 17:06:38 +02:00
GitHub Copilot
eb81e7db6a [IMP] website_sale_aplicoop: ajustar CSS tarjeta producto — placeholder y compresión móvil
- product-img-cover: max-height → height fija para que placeholder y imagen
  real ocupen exactamente el mismo bloque (120px/90px/60px según breakpoint)
- product-img-placeholder: reemplaza SVG inline por flex centrado, más limpio
- Reducir padding/márgenes generales en card-body, title, supplier, tags y precio
- Dos breakpoints responsivos: ≤768px (tablet, imagen 90px) y ≤480px (móvil,
  imagen 60px, fuentes y márgenes mínimos)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 17:02:33 +02:00
GitHub Copilot
a4410b9b9e [DOC] actualizar y sincronizar documentación de todos los addons
- README.md: reescrito con tabla completa de los 14 addons (6 OCA + 8 custom),
  versiones actuales, árbol de dependencias y comandos de desarrollo
- docs/README.md: simplificado a índice limpio, eliminadas referencias rotas
- website_sale_aplicoop/CHANGELOG.md: añadidas versiones 1.7.0, 1.8.0 y 1.9.0
  con los cambios agrupados por temática desde el último registro (1.6.0)
- website_sale_aplicoop/README_DEV.md: reescrito para reflejar v1.9.0 —
  modelos actuales (group.order.slot), controladores /eskaera, catálogo
  whitelist/blacklist, lazy loading, crons y árbol de dependencias

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 16:27:17 +02:00
GitHub Copilot
91cfb9e137 [FIX] website_sale_aplicoop: lint fixes (exception chaining, imports, remove unused vars) 2026-05-20 16:05:14 +02:00
snt
a997331c2d lint: fix linter warnings (log exceptions, disable attribute-string-redundant, suppress C901 where necessary) 2026-05-20 16:05:14 +02:00
snt
f8ef927a9e [IMP] website_sale_aplicoop: add sequence field to product.category for web ordering
- Add sequence field (default 10) to product.category with _order = "sequence, name"
- Inherit product.category tree view to add drag-handle widget
- Sort category hierarchy and available categories by sequence in controller
- Migration 18.0.1.9.0: add sequence column to product_category table
- Bump version to 18.0.1.9.0
2026-05-20 16:05:14 +02:00
snt
5bb5d20244 [IMP] stock_picking_batch_custom: add home_delivery indicator to move line view
Add related field home_delivery on stock.move.line from picking_id,
and expose it in the batch move line list view as an optional boolean toggle.
2026-05-20 16:05:14 +02:00
snt
8f7eca45b8 [IMP] website_sale_aplicoop: disable standard website_sale cart — hide header cart, remove add-to-cart, redirect cart routes to /eskaera 2026-05-20 16:05:14 +02:00
snt
3ca90578ae [IMP] website_sale_aplicoop: Validar disponibilidad de productos al cargar órdenes históricas
- Backend: Agregar método _validate_items_for_group_order() para validar que los productos históricos sigan siendo disponibles en la orden de grupo actual
- Backend: Modificar load_order_from_history() para filtrar solo items disponibles antes de pasar al template
- Backend: Generar mensaje de aviso traducido cuando hay productos no disponibles
- Template: Pasar información de productos no disponibles y warnings al JavaScript
- Frontend: Mostrar notificación de advertencia si hubo productos excluidos durante la carga histórica
- Notas: Esto evita cargar productos que ya no existen en la orden actual debido a cambios en categorías, proveedores o listas negras
2026-05-20 16:05:14 +02:00
snt
4a928e92dd [FIX] stock_picking_batch_custom: mover inclusión de CSS a manifest assets 2026-05-20 16:05:14 +02:00
snt
3372cb453b [FIX] stock_picking_batch_custom: quitar company_id inexistente en summary line view 2026-05-20 16:05:14 +02:00
snt
1b20b23fc0 [IMP] stock_picking_batch_custom: UX - zebra rows, mostrar categoría a la izquierda, company+uom ocultables, añadir CSS assets 2026-05-20 16:05:14 +02:00
snt
1d4971c803 [IMP] website_sale_aplicoop: mejora card producto (placeholder, responsive móvil, accesibilidad y estilo profesional) 2026-05-20 16:05:14 +02:00