addons-cm/website_sale_aplicoop/tests
GitHub Copilot 6ba554c91b [ADD] website_sale_aplicoop: online payment per group order
Members can now pay their eskaera at checkout, through the standard Odoo
payment machinery. Enabled per group order with a new `online_payment`
boolean, off by default: an order without it behaves exactly as before,
members save a draft and the cutoff cron confirms them in bulk.

The flow mirrors website_sale's: the checkout button becomes "Confirm and
pay", saving the cart redirects to a new /eskaera/<slug>/payment step that
renders `payment.form` from `sale`'s `_get_payment_values`, and the standard
/my/orders/<id>/transaction route takes it from there. This addon ships no
provider and configures none; the co-op publishes whichever it wants.

`website_sale`'s `_get_shop_payment_values` is deliberately not reused: it
runs `_get_shop_payment_errors`, which blocks on shippable products without a
delivery method — exactly an eskaera order, collected at the co-op with no
carrier. For the same reason the transaction route stays the portal one,
which does not call `_check_cart_is_ready_to_be_paid()`.

Payment confirms the order, which has three consequences handled here:

* `payment.transaction._check_amount_and_confirm_order` now confirms group
  orders with `from_orderpoint=True`, the way the cutoff cron already does.
  Without it a product with a broken replenishment route raises inside
  `_post_process`, and `/payment/status/poll` rolls back and re-raises: the
  member sees a payment error over a `done` transaction and the retry cron
  fails forever.
* `_confirm_linked_sale_orders` also sweeps the cycle's already confirmed
  orders into the picking batch, scoped by `pickup_date`. Its early return on
  "no drafts" ran before any batching, so a fully prepaid cycle produced no
  batch at all. `_cron_batch_paid_orders_of_closed_cycles` covers the same
  hole for cycles closed by hand.
* A duplicate-order guard answers 409 on save-order, add-to-cart and
  load-draft, and shows a notice on the shop, so a member whose order is
  already placed cannot build and pay for a second one.

The payment policy lives in the model rather than the controller: there are
three sale.order creation paths and two are live, so `_compute_require_payment`
and `_compute_prepayment_percent` are extended instead of patching five vals
dicts. Orders are also created under the group order's company, which is what
filters the payment providers.

Along the way: eskaera drafts were invisible in /my/orders. The portal rule is
`message_partner_ids child_of` and sale.order only subscribes the customer on
send or confirm, never on a draft create, so the `_prepare_orders_domain`
override that includes drafts never had any effect. Fixed with an explicit
`message_subscribe`.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-16 21:59:35 +02:00
..
__init__.py [ADD] website_sale_aplicoop: online payment per group order 2026-08-16 21:59:35 +02:00
COBERTURA_TESTS_ANALISIS.md [FIX] website_sale_aplicoop: Remove redundant string= attributes and fix OCA linting warnings 2026-02-18 17:54:43 +01:00
PHASE3_TEST_SUMMARY.md [DOC] website_sale_aplicoop: Add lazy loading documentation and implement v18.0.1.3.0 feature 2026-02-16 18:39:39 +01:00
test_cron_picking_batch.py [IMP] website_sale_aplicoop: automate non-weekly group order cycles 2026-07-15 16:26:14 +02:00
test_date_calculations.py [FIX] website_sale_aplicoop: harden group order cron 2026-03-31 19:36:20 +02:00
test_draft_persistence.py [REF] Code quality improvements and structure fixes 2026-02-21 13:51:25 +01:00
test_edge_cases.py [REF] Code quality improvements and structure fixes 2026-02-21 13:51:25 +01:00
test_endpoints.py [REF] Code quality improvements and structure fixes 2026-02-21 13:51:25 +01:00
test_eskaera_shop.py [FIX] website_sale_aplicoop: Remove redundant string= attributes and fix OCA linting warnings 2026-02-18 17:54:43 +01:00
test_forecasted_stock.py [IMP] website_sale_aplicoop: filter and cap stock using forecasted net qty 2026-06-12 18:18:40 +02:00
test_group_order.py [REF] Code quality improvements and structure fixes 2026-02-21 13:51:25 +01:00
test_group_order_slug.py [FIX] website_sale_aplicoop: three defects in the group order slug 2026-08-11 22:53:09 +02:00
test_group_order_status_endpoint.py [FIX] website_sale_aplicoop: scope draft lookup to active cycle window 2026-05-29 17:40:48 +02:00
test_helper_methods_phase1.py [REFACTOR] Phase 1: Add 3 helper methods and tests (pre-commit skipped for C901) 2026-02-16 15:41:03 +01:00
test_home_delivery.py [TEST] website_sale_aplicoop: add tests for home_delivery computed field 2026-05-20 17:49:50 +02:00
test_multi_company.py [FIX] website_sale_aplicoop: lint fixes (exception chaining, imports, remove unused vars) 2026-05-20 16:05:14 +02:00
test_online_payment.py [ADD] website_sale_aplicoop: online payment per group order 2026-08-16 21:59:35 +02:00
test_phase2_eskaera_shop.py [IMP] website_sale_aplicoop: Phase 2 - Refactor eskaera_shop() and add_to_eskaera_cart() 2026-02-16 15:47:15 +01:00
test_phase3_confirm_eskaera.py [TEST] website_sale_aplicoop: add tests for home_delivery computed field 2026-05-20 17:49:50 +02:00
test_portal_access.py [REF] Code quality improvements and structure fixes 2026-02-21 13:51:25 +01:00
test_portal_get_routes.py [REF] Code quality improvements and structure fixes 2026-02-21 13:51:25 +01:00
test_portal_product_uom_access.py [REF] Code quality improvements and structure fixes 2026-02-21 13:51:25 +01:00
test_portal_sale_order_creation.py feat(website_sale_aplicoop): ordenar productos por website_sequence y nombre 2026-02-25 19:34:49 +01:00
test_price_with_taxes_included.py Revertir cambio: eliminar cálculo duplicado de impuestos 2026-02-11 19:54:28 +01:00
test_pricing_with_pricelist.py [FIX] website_sale_aplicoop: align pricing and drafts 2026-02-27 19:39:25 +01:00
test_product_discovery.py [ADD] website_sale_aplicoop: Category blacklist with recursive exclusion 2026-02-22 23:04:33 +01:00
test_product_extension.py [FIX] website_sale_aplicoop: Remove redundant string= attributes and fix OCA linting warnings 2026-02-18 17:54:43 +01:00
test_record_rules.py [FIX] website_sale_aplicoop: lint fixes (exception chaining, imports, remove unused vars) 2026-05-20 16:05:14 +02:00
test_res_partner.py [IMP] website_sale_aplicoop: propagate consumer_group_id directly from group_order 2026-03-06 13:49:13 +01:00
test_save_order_endpoints.py [TEST] website_sale_aplicoop: add tests for home_delivery computed field 2026-05-20 17:49:50 +02:00
test_templates_rendering.py [FIX] Resolver 3 fallos de tests en website_sale_aplicoop 2026-03-30 16:21:57 +02:00
test_validations.py [REF] Code quality improvements and structure fixes 2026-02-21 13:51:25 +01:00