Repository
OCA/e-commerce · module folder · Try on Runboat
Module version
1.0.0
Category
Website
Folder size
0.07 MB
License
AGPL-3
Application
No
Auto-installable
No
Website
https://github.com/OCA/e-commerce
Last tracking update
2026-07-29 12:43:00
Authors
Odoo Community Association (OCA), Camptocamp
Maintainers
Odoo Community Association (OCA), Camptocamp
Committers
OCA-git-bot, oca-ci, Ricardoalso
Odoo dependencies
Python dependencies
geoip2
System dependencies
None
Required by
None
Description
This module extends the website checkout delivery flow for
reseller-driven orders.

When the shopper enables the one-time delivery option during checkout,
the delivery address entered on the website is stored as a child contact
of the reseller with type `one_time_delivery`.

This allows downstream processes such as EDI to keep a dedicated
recipient contact on the sale order while preserving the reseller as the
billing partner.

Main behavior:

- adds an *Allow Drop-shipping* flag on the customer that gates the whole
  flow: the one-time delivery option is only shown for customers that
  allow drop-shipping
- adds a one-time delivery toggle to the checkout page
- creates checkout delivery contacts with type `one_time_delivery`
- keeps the invoice address on the reseller
- keeps the shipping address on the temporary end-customer contact
- makes one-time delivery contacts available in the checkout delivery
  address list

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
address_card_one_time_delivery_badge Address Card - One-Time Delivery Badge ir.ui.view qweb Inherits portal.address_card
address_card_partner_type Checkout - Address Card Partner Type ir.ui.view qweb Inherits website_sale.address_card
checkout_hide_use_delivery_as_billing Checkout - Hide Same As Delivery Address ir.ui.view qweb Inherits website_sale.billing_address_list
checkout_one_time_delivery Checkout - One-Time Delivery ir.ui.view qweb Inherits website_sale.checkout
one_time_delivery_section one_time_delivery_section ir.ui.view qweb New
view_partner_form res.partner.form.allow.dropship res.partner form Inherits base.view_partner_form
HTTP endpoints (3)
Route(s)HandlerAuthTypeMethodsFlags
/shop/address/submit WebsiteSaleOneTimeDeliveryAddress.shop_address_submit public http POST website
/shop/update_address WebsiteSaleOneTimeDeliveryAddress.shop_update_address public jsonrpc ALL sudo website
/shop/update_one_time_delivery WebsiteSaleOneTimeDeliveryAddress.shop_update_one_time_delivery public jsonrpc POST website
Models touched (2)

New fields (2)
  • allow_dropship Boolean
    help="When enabled, this customer can use the one-time delivery flow during the website checkout: the delivery address is stored as a temporary 'one_time_delivery' contact while billing stays on the customer. The one-time delivery option is hidden for customers that do not allow drop-shipping." string='Allow Drop-shipping'
  • type Selection
    ondelete={'one_time_delivery': 'set default'} selection_add=[('one_time_delivery', 'One-Time Delivery Address')]
Public methods (0)

No public methods.

New fields (2)
  • allow_dropship Boolean
    related='partner_id.commercial_partner_id.allow_dropship'
  • one_time_delivery Boolean
    help="When enabled, the delivery address created during the website checkout is stored as a temporary contact with type 'one_time_delivery' instead of the standard 'delivery' type. This keeps the recipient out of the customer's regular address book and is useful for reseller orders shipped to an end customer." string='One-Time Delivery Address'
Public methods (1)
  • action_confirm(self)
    Archive one-time delivery contacts once the order is confirmed. A one_time_delivery contact is a temporary recipient that is no longer needed for editing once the order is placed. Archiving (not deleting) keeps it out of the address book while remaining readable on the related pickings and order history.