Stock Reserve Sales

stock_reserve_sale
REPOSITORY
REPOSITORYOCA/stock-logistics-warehouse
GIT
GIThttps://github.com/OCA/stock-logistics-warehouse.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/stock-logistics-warehouse/tree/17.0/stock_reserve_sale
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYWarehouse
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, Andreu Orensanz
WEBSITE
WEBSITEhttps://github.com/OCA/stock-logistics-warehouse
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:00
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/stock-logistics-warehouse:
    - stock_reserve
odoo/odoo:
    - sale_stock
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - account_payment
    - account
    - onboarding
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - payment
    - utm
    - stock_account
    - stock
    - barcodes_gs1_nomenclature
    - barcodes
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Allows to create stock reservations for quotation lines before the
confirmation of the quotation. The reservations might have a validity
date and in any case they are lifted when the quotation is canceled or
confirmed.

Reservations can be done only on "make to stock" and stockable products.

The reserved products are subtracted from the virtual stock. It means
that if you reserved a quantity of products which bring the virtual
stock below the minimum, the orderpoint will be triggered and new
purchase orders will be generated. It also implies that the max may be
exceeded if the reservations are canceled.

If you want to prevent sales orders to be confirmed when the stock is
insufficient at the order date, you may want to install the
sale_exception_nostock module.

Additionally, if the sale_owner_stock_sourcing module is installed, the
owner specified on the sale order line will be proposed as owner of the
reservation. If you try to make a reservation for an order whose lines
have different, you will get a message suggesting to reserve each line
individually. There is no module dependency: this modules is fully
functional even without ownership management.

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
view_order_form_reserve sale.order.form.reserve sale.order xpath Inherits sale_stock.view_order_form_inherit_sale_stock
view_sale_stock_reserve_form sale.stock.reserve.form sale.stock.reserve form New
view_sale_stock_reserve_release_form sale.stock.reserve.release.form sale.stock.reserve.release form New
view_stock_reservation_form stock.reservation.form stock.reservation group Inherits stock_reserve.view_stock_reservation_form
view_stock_reservation_tree stock.reservation.tree stock.reservation field Inherits stock_reserve.view_stock_reservation_tree
Models touched (6)

New fields (5)
  • all_lines_reserved Boolean
    compute='_compute_reserves_count' compute_sudo=False default=False store=True
  • has_stock_reservation Boolean
    compute='_compute_stock_reservation' readonly=True store=True string='Has Stock Reservations'
  • is_stock_reservable Boolean
    compute='_compute_stock_reservation' readonly=True store=True string='Can Have Stock Reservations'
  • reserves_count Integer
    compute='_compute_reserves_count' compute_sudo=False store=True
  • stock_reservation_ids One2many → stock.reservation
    string='Stock Reservations' args: 'stock.reservation', 'sale_id'
Public methods (8)
  • action_cancel(self)
  • action_confirm(self)
  • action_open_release_reservation_wizard(self)
  • action_view_reserves_products(self)
  • get_message(self, old_vals, new_vals)
    @api.model
  • release_all_stock_reservation(self)
  • unlink(self)
  • write(self, vals)

New fields (3)
  • is_readonly Boolean
    compute='_compute_is_readonly' store=False
  • is_stock_reservable Boolean
    compute='_compute_is_stock_reservable' readonly=True string='Can be reserved'
  • reservation_ids One2many → stock.reservation
    copy=False string='Stock Reservation' args: 'stock.reservation', 'sale_line_id'
Public methods (3)
  • release_stock_reservation(self)
  • unlink(self)
  • write(self, vals)

New fields (5)
  • date_validity Date
    help='If a date is given, the reservations will be released at the end of the validity.' args: 'Validity Date'
  • location_dest_id Many2one → stock.location
    default=_default_location_dest_id help='Location where the system will reserve the products.' required=True args: 'stock.location', 'Reservation Location'
  • location_id Many2one → stock.location
    default=_default_location_id required=True args: 'stock.location', 'Source Location'
  • note Text
    args: 'Notes'
  • owner_id Many2one → res.partner
    args: 'res.partner', 'Stock Owner'
Public methods (2)
  • button_reserve(self)
  • stock_reserve(self, line_ids)

New fields (2)
  • reservation_ids Many2many → stock.reservation
    readonly=True string='Stock Reservations' args: 'stock.reservation'
  • sale_order_id Many2one → sale.order
    readonly=True args: 'sale.order'
Public methods (1)
  • button_release(self)

New fields (1)
  • sale_reserve_id Many2one → sale.order
    args: 'sale.order', 'Sale Stock Reserve'
Public methods (0)

No public methods.

New fields (2)
  • sale_id Many2one → sale.order
    related='sale_line_id.order_id' store=True string='Sale Order' args: 'sale.order'
  • sale_line_id Many2one → sale.order.line
    copy=False ondelete='cascade' string='Sale Order Line' args: 'sale.order.line'
Public methods (2)
  • action_view_reserves_stock_picking_reservation(self)
  • release_reserve(self)
REPOSITORY
REPOSITORYOCA/stock-logistics-warehouse
GIT
GIThttps://github.com/OCA/stock-logistics-warehouse.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/stock-logistics-warehouse/tree/13.0/stock_reserve_sale
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYWarehouse
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSPedro M. Baeza, Víctor Martínez, oca-travis, Weblate, OCA-git-bot, Carlos Roca
WEBSITE
WEBSITEhttps://github.com/OCA/stock-logistics-warehouse
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:12
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/stock-logistics-warehouse:
    - stock_reserve
odoo/odoo:
    - sale_stock
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - payment
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - utm
    - stock_account
    - stock
    - barcodes
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
view_order_form_reserve sale.order.form.reserve sale.order button Inherits sale_stock.view_order_form_inherit_sale_stock
view_sale_stock_reserve_form sale.stock.reserve.form sale.stock.reserve form New
view_stock_reservation_form stock.reservation.form stock.reservation group Inherits stock_reserve.view_stock_reservation_form
view_stock_reservation_tree stock.reservation.tree stock.reservation field Inherits stock_reserve.view_stock_reservation_tree
Models touched (4)

New fields (2)
  • has_stock_reservation Boolean
    compute='_compute_stock_reservation' multi='stock_reservation' readonly=True store=True string='Has Stock Reservations'
  • is_stock_reservable Boolean
    compute='_compute_stock_reservation' multi='stock_reservation' readonly=True store=True string='Can Have Stock Reservations'
Public methods (6)
  • action_cancel(self)
  • action_confirm(self)
  • get_message(self, old_vals, new_vals)
    @api.model
  • release_all_stock_reservation(self)
  • unlink(self)
  • write(self, vals)

New fields (3)
  • is_readonly Boolean
    compute='_compute_is_readonly' store=False
  • is_stock_reservable Boolean
    compute='_compute_is_stock_reservable' readonly=True string='Can be reserved'
  • reservation_ids One2many → stock.reservation
    copy=False string='Stock Reservation' args: 'stock.reservation', 'sale_line_id'
Public methods (3)
  • release_stock_reservation(self)
  • unlink(self)
  • write(self, vals)

New fields (5)
  • date_validity Date
    help='If a date is given, the reservations will be released at the end of the validity.' args: 'Validity Date'
  • location_dest_id Many2one → stock.location
    default=_default_location_dest_id help='Location where the system will reserve the products.' required=True args: 'stock.location', 'Reservation Location'
  • location_id Many2one → stock.location
    default=_default_location_id required=True args: 'stock.location', 'Source Location'
  • note Text
    args: 'Notes'
  • owner_id Many2one → res.partner
    default=_default_owner args: 'res.partner', 'Stock Owner'
Public methods (2)
  • button_reserve(self)
  • stock_reserve(self, line_ids)

New fields (2)
  • sale_id Many2one → sale.order
    related='sale_line_id.order_id' string='Sale Order' args: 'sale.order'
  • sale_line_id Many2one → sale.order.line
    copy=False ondelete='cascade' string='Sale Order Line' args: 'sale.order.line'
Public methods (1)
  • release_reserve(self)
REPOSITORY
REPOSITORYOCA/stock-logistics-warehouse
GIT
GIThttps://github.com/OCA/stock-logistics-warehouse.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/stock-logistics-warehouse/tree/10.0/stock_reserve_sale
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYWarehouse
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSPedro M. Baeza, Denis Roussel, Stéphane Bidoul (ACSONE)
WEBSITE
WEBSITEhttps://github.com/OCA/stock-logistics-warehouse
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:19:55
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/stock-logistics-warehouse:
    - stock_reserve
odoo/odoo:
    - 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
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
view_order_form_reserve sale.order.form.reserve sale.order button Inherits sale_stock.view_order_form_inherit
view_sale_stock_reserve_form sale.stock.reserve.form sale.stock.reserve form New
view_stock_reservation_form stock.reservation.form stock.reservation group Inherits stock_reserve.view_stock_reservation_form
view_stock_reservation_tree stock.reservation.tree stock.reservation field Inherits stock_reserve.view_stock_reservation_tree
Models touched (4)

New fields (2)
  • has_stock_reservation Boolean
    compute='_stock_reservation' multi='stock_reservation' readonly=True store=True string='Has Stock Reservations'
  • is_stock_reservable Boolean
    compute='_stock_reservation' multi='stock_reservation' readonly=True store=True string='Can Have Stock Reservations'
Public methods (3)
  • action_button_confirm(self)
    @api.multi
  • action_cancel(self)
    @api.multi
  • release_all_stock_reservation(self)
    @api.multi

New fields (2)
  • is_stock_reservable Boolean
    compute='_is_stock_reservable' readonly=True string='Can be reserved'
  • reservation_ids One2many → stock.reservation
    copy=False string='Stock Reservation' args: 'stock.reservation', 'sale_line_id'
Public methods (3)
  • product_id_change(self, cr, uid, ids, pricelist, product, qty=0, uom=False, qty_uos=0, uos=False, name='', partner_id=False, lang=False, update_tax=True, date_order=False, packaging=False, fiscal_position=False, flag=False, context=None)
  • release_stock_reservation(self)
    @api.multi
  • write(self, vals)
    @api.multi

New fields (5)
  • date_validity Date
    help='If a date is given, the reservations will be released at the end of the validity.' args: 'Validity Date'
  • location_dest_id Many2one → stock.location
    default=_default_location_dest_id help='Location where the system will reserve the products.' required=True args: 'stock.location', 'Reservation Location'
  • location_id Many2one → stock.location
    default=_default_location_id required=True args: 'stock.location', 'Source Location'
  • note Text
    args: 'Notes'
  • owner_id Many2one → res.partner
    default=_default_owner args: 'res.partner', 'Stock Owner'
Public methods (2)
  • button_reserve(self)
    @api.multi
  • stock_reserve(self, line_ids)
    @api.multi

New fields (2)
  • sale_id Many2one → sale.order
    related='sale_line_id.order_id' string='Sale Order' args: 'sale.order'
  • sale_line_id Many2one → sale.order.line
    copy=False ondelete='cascade' string='Sale Order Line' args: 'sale.order.line'
Public methods (1)
  • release(self)
    @api.multi
REPOSITORY
REPOSITORYOCA/stock-logistics-warehouse
GIT
GIThttps://github.com/OCA/stock-logistics-warehouse.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/stock-logistics-warehouse/tree/9.0/stock_reserve_sale
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYWarehouse
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSPedro M. Baeza, Stéphane Bidoul (ACSONE), OCA Transbot, Дмитро Катюха, oca-travis, OCA-git-bot
WEBSITE
WEBSITEhttp://www.camptocamp.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:15:20
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/stock-logistics-warehouse:
    - stock_reserve
odoo/odoo:
    - 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
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
view_order_form_reserve sale.order.form.reserve sale.order button Inherits sale_stock.view_order_form_inherit_sale_stock
view_sale_stock_reserve_form sale.stock.reserve.form sale.stock.reserve form New
view_stock_reservation_form stock.reservation.form stock.reservation group Inherits stock_reserve.view_stock_reservation_form
view_stock_reservation_tree stock.reservation.tree stock.reservation field Inherits stock_reserve.view_stock_reservation_tree
Models touched (4)

New fields (2)
  • has_stock_reservation Boolean
    compute='_compute_stock_reservation' readonly=True store=True string='Has Stock Reservations'
  • is_stock_reservable Boolean
    compute='_compute_stock_reservation' readonly=True store=True string='Can Have Stock Reservations'
Public methods (3)
  • action_cancel(self)
    @api.multi
  • action_confirm(self)
    @api.multi
  • release_all_stock_reservation(self)
    @api.multi

New fields (2)
  • is_stock_reservable Boolean
    compute='_compute_is_stock_reservation' readonly=True string='Can be reserved'
  • reservation_ids One2many → stock.reservation
    copy=False string='Stock Reservation' args: 'stock.reservation', 'sale_line_id'
Public methods (4)
  • acquire_stock_reservation(self, date_validity=False, note=False)
    @api.multi
  • onchange_product_id_qty(self)
    @api.onchange('product_id', 'product_uom_qty')
  • release_stock_reservation(self)
    @api.multi
  • write(self, vals)
    @api.multi

New fields (2)
  • date_validity Date
    help='If a date is given, the reservations will be released at the end of the validity.' args: 'Validity Date'
  • note Text
    args: 'Notes'
Public methods (1)
  • button_reserve(self)
    @api.multi

New fields (2)
  • sale_id Many2one → sale.order
    related='sale_line_id.order_id' string='Sale Order' args: 'sale.order'
  • sale_line_id Many2one → sale.order.line
    copy=False ondelete='cascade' string='Sale Order Line' args: 'sale.order.line'
Public methods (1)
  • release(self)
    @api.multi
REPOSITORY
REPOSITORYOCA/stock-logistics-warehouse
GIT
GIThttps://github.com/OCA/stock-logistics-warehouse.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/stock-logistics-warehouse/tree/8.0/stock_reserve_sale
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYWarehouse
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSStéphane Bidoul, Yannick Vaucher, Alexandre Fayolle, Lionel Sausin, Leonardo Pistone, Pedro M. Baeza, GitHub, Stéphane Bidoul (ACSONE), OCA Transbot, oca-travis, Weblate, OCA-git-bot, Ismael Calvo, Alexandre MOREAU, Miku Laitinen
WEBSITE
WEBSITEhttp://www.camptocamp.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:11:21
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/stock-logistics-warehouse:
    - stock_reserve
odoo/odoo:
    - sale_stock
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web_kanban
    - web
    - web_kanban_sparkline
    - account_voucher
    - account
    - product
    - decimal_precision
    - report
    - analytic
    - board
    - edi
    - email_template
    - procurement
    - stock_account
    - stock
    - web_kanban_gauge
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
view_order_form_reserve sale.order.form.reserve sale.order button Inherits sale_stock.view_order_form_inherit
view_sale_stock_reserve_form sale.stock.reserve.form sale.stock.reserve form New
view_stock_reservation_form stock.reservation.form stock.reservation group Inherits stock_reserve.view_stock_reservation_form
view_stock_reservation_tree stock.reservation.tree stock.reservation field Inherits stock_reserve.view_stock_reservation_tree
Models touched (4)

New fields (2)
  • has_stock_reservation Boolean
    compute='_compute_stock_reservation' multi='stock_reservation' readonly=True store=True string='Has Stock Reservations'
  • is_stock_reservable Boolean
    compute='_compute_stock_reservation' multi='stock_reservation' readonly=True store=True string='Can Have Stock Reservations'
Public methods (4)
  • action_button_confirm(self)
    @api.multi
  • action_cancel(self)
    @api.multi
  • release_all_stock_reservation(self)
    @api.multi
  • unlink(self)
    @api.multi
    Force unlink of order lines to make sure that all reservations are removed as well.

New fields (2)
  • is_stock_reservable Boolean
    compute='_compute_is_stock_reservable' readonly=True string='Can be reserved'
  • reservation_ids One2many → stock.reservation
    copy=False string='Stock Reservation' args: 'stock.reservation', 'sale_line_id'
Public methods (4)
  • product_id_change(self, cr, uid, ids, pricelist, product, qty=0, uom=False, qty_uos=0, uos=False, name='', partner_id=False, lang=False, update_tax=True, date_order=False, packaging=False, fiscal_position=False, flag=False, context=None)
  • release_stock_reservation(self)
    @api.multi
  • unlink(self)
    @api.multi
    Force remove the reservations. This is necessary because even though sale_line_id of stock.reservation has ondelete=cascade, the unlink method of the reservations is never called.
  • write(self, vals)
    @api.multi

New fields (5)
  • date_validity Date
    help='If a date is given, the reservations will be released at the end of the validity.' args: 'Validity Date'
  • location_dest_id Many2one → stock.location
    default=_default_location_dest_id help='Location where the system will reserve the products.' required=True args: 'stock.location', 'Reservation Location'
  • location_id Many2one → stock.location
    default=_default_location_id required=True args: 'stock.location', 'Source Location'
  • note Text
    args: 'Notes'
  • owner_id Many2one → res.partner
    default=_default_owner args: 'res.partner', 'Stock Owner'
Public methods (2)
  • button_reserve(self)
    @api.multi
  • stock_reserve(self, line_ids)
    @api.multi

New fields (2)
  • sale_id Many2one → sale.order
    related='sale_line_id.order_id' string='Sale Order' args: 'sale.order'
  • sale_line_id Many2one → sale.order.line
    copy=False ondelete='cascade' string='Sale Order Line' args: 'sale.order.line'
Public methods (1)
  • release(self)
    @api.multi
REPOSITORY
REPOSITORYOCA/stock-logistics-warehouse
GIT
GIThttps://github.com/OCA/stock-logistics-warehouse.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/stock-logistics-warehouse/tree/7.0/stock_reserve_sale
VERSION
VERSION 0.1
CATEGORY
CATEGORYWarehouse
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSGuewen Baconnier, Alexandre Fayolle, GitHub
WEBSITE
WEBSITEhttp://www.camptocamp.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:07:13
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/stock-logistics-warehouse:
    - stock_reserve
odoo/odoo:
    - sale_stock
    - sale
    - account_voucher
    - account
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - process
    - decimal_precision
    - mail
    - analytic
    - board
    - edi
    - email_template
    - stock
    - procurement
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Stock Reserve Sales
===================

Allows to create stock reservations for quotation lines before the
confirmation of the quotation.  The reservations might have a validity
date and in any case they are lifted when the quotation is canceled or
confirmed.

Reservations can be done only on "make to stock" and stockable products.

The reserved products are substracted from the virtual stock. It means
that if you reserved a quantity of products which bring the virtual
stock below the minimum, the orderpoint will be triggered and new
purchase orders will be generated. It also implies that the max may be
exceeded if the reservations are canceled.

If you want to prevent sales orders to be confirmed when the stock is
insufficient at the order date, you may want to install the
`sale_exception_nostock` module.

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
view_order_form_reserve sale.order.form.reserve sale.order button Inherits sale_stock.view_order_form_inherit
view_sale_stock_reserve_form sale.stock.reserve.form sale.stock.reserve form New
view_stock_reservation_form stock.reservation.form stock.reservation group Inherits stock_reserve.view_stock_reservation_form
view_stock_reservation_tree stock.reservation.tree stock.reservation field Inherits stock_reserve.view_stock_reservation_tree
Models touched (4)

New fields (0)

No new fields.

Public methods (3)
  • action_button_confirm(self, cr, uid, ids, context=None)
  • action_cancel(self, cr, uid, ids, context=None)
  • release_all_stock_reservation(self, cr, uid, ids, context=None)

New fields (0)

No new fields.

Public methods (4)
  • copy_data(self, cr, uid, id, default=None, context=None)
  • product_id_change(self, cr, uid, ids, pricelist, product, qty=0, uom=False, qty_uos=0, uos=False, name='', partner_id=False, lang=False, update_tax=True, date_order=False, packaging=False, fiscal_position=False, flag=False, context=None)
  • release_stock_reservation(self, cr, uid, ids, context=None)
  • write(self, cr, uid, ids, vals, context=None)

New fields (0)

No new fields.

Public methods (2)
  • button_reserve(self, cr, uid, ids, context=None)
  • stock_reserve(self, cr, uid, ids, line_ids, context=None)

New fields (0)

No new fields.

Public methods (2)
  • copy_data(self, cr, uid, id, default=None, context=None)
  • release(self, cr, uid, ids, context=None)
STATUS
STATUSOpen migration PR - not merged yet for this version
REPOSITORY
REPOSITORYOCA/stock-logistics-reservation
PULL REQUEST
PULL REQUEST[MIG] stock_reserve_sale: Migration to 18.0 (#54)