Delivery Drop-off Sites

delivery_dropoff_site
REPOSITORY
REPOSITORYOCA/delivery-carrier
GIT
GIThttps://github.com/OCA/delivery-carrier.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/delivery-carrier/tree/18.0/delivery_dropoff_site
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYDelivery
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, GRAP
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, GRAP
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, Bhavesh Heliconia
WEBSITE
WEBSITEhttps://github.com/OCA/delivery-carrier
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:16
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base_geolocalize
    - base_setup
    - base
    - web
    - delivery
    - sale
    - sales_team
    - mail
    - bus
    - web_tour
    - html_editor
    - account_payment
    - account
    - onboarding
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - payment
    - utm
    - sale_stock
    - stock_account
    - stock
    - barcodes_gs1_nomenclature
    - barcodes
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module extend Odoo functionnalities, regarding delivery features to
add a new concept of drop-off Sites.

Main international carriers provide transportation services to specific
areas managed by them or by subcontractors.

Then, recipients come pick up their packages in these sites.

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
view_delivery_carrier_form delivery.carrier xpath Inherits delivery.view_delivery_carrier_form
view_partner_dropoff_site_form dropoff.site form New
view_partner_dropoff_site_search dropoff.site search New
view_partner_dropoff_site_tree dropoff.site list New
view_sale_order_form sale.order field Inherits sale.view_order_form
view_stock_picking_form stock.picking field Inherits stock.view_picking_form
view_stock_picking_search stock.picking field Inherits stock.view_picking_internal_search
view_stock_picking_tree stock.picking field Inherits stock.vpicktree
Models touched (8)

New fields (2)
  • dropoff_site_ids One2many → dropoff.site
    comodel_name='dropoff.site' inverse_name='carrier_id' string='Drop-off Sites'
  • with_dropoff_site Boolean
    string='With Drop-off Sites'
Public methods (0)

No public methods.

New fields (5)
  • attendance_ids One2many → resource.calendar.attendance
    related='calendar_id.attendance_ids' string='Working Time' args: 'resource.calendar.attendance'
  • calendar_id Many2one → resource.calendar
    comodel_name='resource.calendar' copy=False string='Calendar'
  • carrier_id Many2one → delivery.carrier
    comodel_name='delivery.carrier' domain="[('with_dropoff_site', '=', True)]" required=True string='Delivery Carrier'
  • code Char
  • partner_id Many2one → res.partner
    comodel_name='res.partner' ondelete='cascade' required=True string='Partner'
Public methods (5)
  • action_disable_calendar(self)
  • action_enable_calendar(self)
  • create(self, vals_list)
    @api.model_create_multi
  • geo_localize(self)
  • unlink(self)

New fields (4)
  • dropoff_site_carrier_id Many2one → delivery.carrier
    comodel_name='delivery.carrier' compute='_compute_multi_dropoff_site' store=True string='Carrier of the Drop-off Site'
  • dropoff_site_id Many2one → dropoff.site
    comodel_name='dropoff.site' compute='_compute_multi_dropoff_site' store=True string='Drop-off Site'
  • dropoff_site_ids One2many → dropoff.site
    comodel_name='dropoff.site' inverse_name='partner_id'
  • is_dropoff_site Boolean
    compute='_compute_multi_dropoff_site' store=True string='Is Drop-off Site'
Public methods (0)

No public methods.

New fields (3)
  • dropoff_site_required Boolean
    related='carrier_id.with_dropoff_site' store=True string='Drop-off Site Required'
  • final_shipping_partner_id Many2one → res.partner
    comodel_name='res.partner' help='It is the partner that will pick up the parcel in the dropoff site.' readonly=True string='Final Recipient'
  • partner_shipping_id_domain Binary
    compute='_compute_partner_shipping_id_domain' readonly=True store=False
Public methods (2)
  • onchange_carrier_id(self)
    @api.onchange('carrier_id')
  • onchange_partner_shipping_id_final(self)
    @api.onchange('partner_shipping_id')

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • final_shipping_partner_id Many2one → res.partner
    comodel_name='res.partner' help='It is the partner that will pick up the parcel in the dropoff site.' string='Final Recipient'
Public methods (0)

No public methods.

New fields (1)
  • final_shipping_partner_id Many2one → res.partner
    comodel_name='res.partner' help='It is the partner that will pick up the parcel in the dropoff site.' string='Final Recipient'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/delivery-carrier
GIT
GIThttps://github.com/OCA/delivery-carrier.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/delivery-carrier/tree/16.0/delivery_dropoff_site
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYDelivery
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, GRAP
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, GRAP
COMMITTERS
COMMITTERSThomas Binsfeld, Weblate, OCA-git-bot, oca-ci, r.perez
WEBSITE
WEBSITEhttps://github.com/OCA/delivery-carrier
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:52
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base_geolocalize
    - base_setup
    - base
    - web
    - delivery
    - sale_stock
    - sale
    - sales_team
    - mail
    - bus
    - web_tour
    - account_payment
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - payment
    - utm
    - stock_account
    - stock
    - barcodes_gs1_nomenclature
    - barcodes
    - sale_management
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
view_delivery_carrier_form delivery.carrier xpath Inherits delivery.view_delivery_carrier_form
view_partner_dropoff_site_form dropoff.site form New
view_partner_dropoff_site_search dropoff.site search New
view_partner_dropoff_site_tree dropoff.site tree New
view_sale_order_form sale.order field Inherits sale.view_order_form
view_stock_picking_form stock.picking field Inherits stock.view_picking_form
view_stock_picking_search stock.picking field Inherits stock.view_picking_internal_search
view_stock_picking_tree stock.picking field Inherits stock.vpicktree
Models touched (8)

New fields (2)
  • dropoff_site_ids One2many → dropoff.site
    comodel_name='dropoff.site' inverse_name='carrier_id' string='Drop-off Sites'
  • with_dropoff_site Boolean
    string='With Drop-off Sites'
Public methods (0)

No public methods.

New fields (5)
  • attendance_ids One2many → resource.calendar.attendance
    related='calendar_id.attendance_ids' string='Working Time' args: 'resource.calendar.attendance'
  • calendar_id Many2one → resource.calendar
    comodel_name='resource.calendar' copy=False string='Calendar'
  • carrier_id Many2one → delivery.carrier
    comodel_name='delivery.carrier' domain="[('with_dropoff_site', '=', True)]" required=True string='Delivery Carrier'
  • code Char
  • partner_id Many2one → res.partner
    comodel_name='res.partner' ondelete='cascade' required=True string='Partner'
Public methods (5)
  • action_disable_calendar(self)
  • action_enable_calendar(self)
  • create(self, vals_list)
    @api.model_create_multi
  • geo_localize(self)
  • unlink(self)

New fields (4)
  • dropoff_site_carrier_id Many2one → delivery.carrier
    comodel_name='delivery.carrier' compute='_compute_multi_dropoff_site' store=True string='Carrier of the Drop-off Site'
  • dropoff_site_id Many2one → dropoff.site
    comodel_name='dropoff.site' compute='_compute_multi_dropoff_site' store=True string='Drop-off Site'
  • dropoff_site_ids One2many → dropoff.site
    comodel_name='dropoff.site' inverse_name='partner_id'
  • is_dropoff_site Boolean
    compute='_compute_multi_dropoff_site' store=True string='Is Drop-off Site'
Public methods (0)

No public methods.

New fields (3)
  • dropoff_site_required Boolean
    related='carrier_id.with_dropoff_site' store=True string='Drop-off Site Required'
  • final_shipping_partner_id Many2one → res.partner
    comodel_name='res.partner' help='It is the partner that will pick up the parcel in the dropoff site.' readonly=True states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} string='Final Recipient'
  • partner_shipping_id_domain Binary
    compute='_compute_partner_shipping_id_domain' readonly=True store=False
Public methods (2)
  • onchange_carrier_id(self)
    @api.onchange('carrier_id')
  • onchange_partner_shipping_id_final(self)
    @api.onchange('partner_shipping_id')

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • final_shipping_partner_id Many2one → res.partner
    comodel_name='res.partner' help='It is the partner that will pick up the parcel in the dropoff site.' string='Final Recipient'
Public methods (0)

No public methods.

New fields (1)
  • final_shipping_partner_id Many2one → res.partner
    comodel_name='res.partner' help='It is the partner that will pick up the parcel in the dropoff site.' string='Final Recipient'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/delivery-carrier
GIT
GIThttps://github.com/OCA/delivery-carrier.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/delivery-carrier/tree/10.0/delivery_dropoff_site
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYDelivery
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, GRAP
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, GRAP
COMMITTERS
COMMITTERSSylvain LE GAL, oca-travis, OCA-git-bot, OCA Git Bot, gael.torrecillas
WEBSITE
WEBSITEhttps://github.com/OCA/delivery-carrier
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:19:59
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - delivery
    - sale_stock
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - web_tour
    - account
    - product
    - decimal_precision
    - report
    - analytic
    - web_planner
    - procurement
    - stock_account
    - stock
    - barcodes
    - base_geolocalize
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
view_delivery_carrier_form delivery.carrier field Inherits delivery.view_delivery_carrier_form
view_partner_dropoff_site_form dropoff.site form New
view_partner_dropoff_site_search dropoff.site search New
view_partner_dropoff_site_tree dropoff.site tree New
view_sale_order_form sale.order field Inherits sale.view_order_form
view_stock_picking_form stock.picking field Inherits stock.view_picking_form
view_stock_picking_search stock.picking field Inherits stock.view_picking_internal_search
view_stock_picking_tree stock.picking field Inherits stock.vpicktree
Models touched (7)

New fields (2)
  • dropoff_site_ids One2many → dropoff.site
    comodel_name='dropoff.site' inverse_name='carrier_id' string='Drop-off Sites'
  • with_dropoff_site Boolean
    string='With Drop-off Sites'
Public methods (0)

No public methods.

New fields (5)
  • attendance_ids One2many → resource.calendar.attendance
    related='calendar_id.attendance_ids' string='Working Time' args: 'resource.calendar.attendance'
  • calendar_id Many2one → resource.calendar
    comodel_name='resource.calendar' copy=False string='Calendar'
  • carrier_id Many2one → delivery.carrier
    comodel_name='delivery.carrier' domain="[('with_dropoff_site', '=', True)]" required=True string='Delivery Method'
  • code Char
    string='Code'
  • partner_id Many2one → res.partner
    comodel_name='res.partner' ondelete='cascade' required=True string='Partner'
Public methods (5)
  • action_disable_calendar(self)
    @api.multi
  • action_enable_calendar(self)
    @api.multi
  • create(self, vals)
    @api.model
  • geo_localize(self)
    @api.multi
  • unlink(self)
    @api.multi

New fields (1)
  • final_shipping_partner_id Many2one → res.partner
    comodel_name='res.partner' help='It is the partner that will pick up the parcel in the dropoff site.' string='Final Recipient'
Public methods (0)

No public methods.

New fields (4)
  • dropoff_site_carrier_id Many2one → delivery.carrier
    comodel_name='delivery.carrier' compute='_compute_multi_dropoff_site' store=True string='Carrier of the Drop-off Site'
  • dropoff_site_id Many2one → dropoff.site
    comodel_name='dropoff.site' compute='_compute_multi_dropoff_site' store=True string='Drop-off Site'
  • dropoff_site_ids One2many → dropoff.site
    comodel_name='dropoff.site' inverse_name='partner_id'
  • is_dropoff_site Boolean
    compute='_compute_multi_dropoff_site' store=True string='Is Drop-off Site'
Public methods (1)
  • name_search(self, name='', args=None, operator='ilike', limit=80)
    @api.model

New fields (2)
  • dropoff_site_required Boolean
    related='carrier_id.with_dropoff_site' store=True string='Drop-off Site Required'
  • final_shipping_partner_id Many2one → res.partner
    comodel_name='res.partner' help='It is the partner that will pick up the parcel in the dropoff site.' readonly=True states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} string='Final Recipient'
Public methods (2)
  • onchange_carrier_id(self)
    @api.onchange('carrier_id')
  • onchange_partner_shipping_id(self)
    @api.onchange('partner_shipping_id')

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • final_shipping_partner_id Many2one → res.partner
    comodel_name='res.partner' help='It is the partner that will pick up the parcel in the dropoff site.' string='Final Recipient'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/delivery-carrier
GIT
GIThttps://github.com/OCA/delivery-carrier.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/delivery-carrier/tree/9.0/delivery_dropoff_site
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYDelivery
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, GRAP
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, GRAP
COMMITTERS
COMMITTERSLaurent Mignon (ACSONE), OCA Transbot, oca-travis, OCA-git-bot
WEBSITE
WEBSITEhttps://github.com/OCA/delivery-carrier
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:15:22
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - delivery
    - sale_stock
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - account
    - product
    - decimal_precision
    - report
    - analytic
    - web_tip
    - web_planner
    - procurement
    - stock_account
    - stock
    - barcodes
    - base_geolocalize
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
view_delivery_carrier_form delivery.carrier field Inherits delivery.view_delivery_carrier_form
view_partner_dropoff_site_form dropoff.site form New
view_partner_dropoff_site_search dropoff.site search New
view_partner_dropoff_site_tree dropoff.site tree New
view_sale_order_form sale.order field Inherits sale.view_order_form
view_stock_picking_form stock.picking field Inherits stock.view_picking_form
view_stock_picking_search stock.picking field Inherits stock.view_picking_internal_search
view_stock_picking_tree stock.picking field Inherits stock.vpicktree
Models touched (7)

New fields (2)
  • dropoff_site_ids One2many → dropoff.site
    comodel_name='dropoff.site' inverse_name='carrier_id' string='Drop-off Sites'
  • with_dropoff_site Boolean
    string='With Drop-off Sites'
Public methods (0)

No public methods.

New fields (5)
  • attendance_ids One2many → resource.calendar.attendance
    related='calendar_id.attendance_ids' string='Working Time' args: 'resource.calendar.attendance'
  • calendar_id Many2one → resource.calendar
    comodel_name='resource.calendar' copy=False string='Calendar'
  • carrier_id Many2one → delivery.carrier
    comodel_name='delivery.carrier' domain="[('with_dropoff_site', '=', True)]" required=True string='Delivery Method'
  • code Char
    string='Code'
  • partner_id Many2one → res.partner
    comodel_name='res.partner' ondelete='cascade' required=True string='Partner'
Public methods (5)
  • action_disable_calendar(self)
    @api.multi
  • action_enable_calendar(self)
    @api.multi
  • create(self, vals)
    @api.model
  • geo_localize(self)
    @api.multi
  • unlink(self)
    @api.multi

New fields (1)
  • final_shipping_partner_id Many2one → res.partner
    comodel_name='res.partner' help='It is the partner that will pick up the parcel in the dropoff site.' string='Final Recipient'
Public methods (0)

No public methods.

New fields (4)
  • dropoff_site_carrier_id Many2one → delivery.carrier
    comodel_name='delivery.carrier' compute='_compute_multi_dropoff_site' store=True string='Carrier of the Drop-off Site'
  • dropoff_site_id Many2one → dropoff.site
    comodel_name='dropoff.site' compute='_compute_multi_dropoff_site' store=True string='Drop-off Site'
  • dropoff_site_ids One2many → dropoff.site
    comodel_name='dropoff.site' inverse_name='partner_id'
  • is_dropoff_site Boolean
    compute='_compute_multi_dropoff_site' store=True string='Is Drop-off Site'
Public methods (1)
  • name_search(self, name='', args=None, operator='ilike', limit=80)
    @api.model

New fields (2)
  • dropoff_site_required Boolean
    related='carrier_id.with_dropoff_site' store=True string='Drop-off Site Required'
  • final_shipping_partner_id Many2one → res.partner
    comodel_name='res.partner' help='It is the partner that will pick up the parcel in the dropoff site.' readonly=True states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} string='Final Recipient'
Public methods (2)
  • onchange_carrier_id(self)
    @api.onchange('carrier_id')
  • onchange_partner_shipping_id(self)
    @api.onchange('partner_shipping_id')

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • final_shipping_partner_id Many2one → res.partner
    comodel_name='res.partner' help='It is the partner that will pick up the parcel in the dropoff site.' string='Final Recipient'
Public methods (0)

No public methods.

STATUS
STATUSOpen migration PR - not merged yet for this version
REPOSITORY
REPOSITORYOCA/delivery-carrier
PULL REQUEST
PULL REQUEST[17.0][MIG] delivery_dropoff_site: Migration to 17.0 (#951)