| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/sale-workflow |
| GIT | |
| GIT | https://github.com/OCA/sale-workflow.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/sale-workflow/tree/18.0/sale_resource_booking |
| VERSION | |
| VERSION | 1.0.0 |
| CATEGORY | |
| CATEGORY | Appointments |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | OCA-git-bot, oca-ci, Anusha |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/sale-workflow |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:30:11 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/calendar: - resource_booking OCA/web: - web_calendar_slot_duration - web_ir_actions_act_multi odoo/odoo: - sale - sales_team - base - base_setup - web - bus - web_tour - html_editor - account_payment - account - onboarding - product - uom - analytic - portal - web_editor - http_routing - auth_signup - digest - resource - payment - utm - calendar |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
cssselect |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | This module extends the functionality of sale and resource bookings to support creating pending resource bookings automatically when confirming a sale order and to allow you to generate those sale orders easily from a resource booking type. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
product_template_form_view |
Display resource booking info in form | product.template | group | Inherits product.product_template_form_view |
resource_booking_form |
Display sale order info in booking form | resource.booking | group | Inherits resource_booking.resource_booking_view_form |
resource_booking_sale_view_form |
resource.booking.sale.view.form | resource.booking.sale | form | New |
resource_booking_type_form |
Sale order generator from booking type form | resource.booking.type | header | Inherits resource_booking.resource_booking_type_view_form |
sale_order_booking_confirm_view_form |
sale.order.booking.confirm.view.form | sale.order.booking.confirm | form | New |
view_order_form |
Display resource booking info in form | sale.order | button | Inherits sale.view_order_form |
resource_booking_type_combination_rel_id
Many2one → resource.booking.type.combination.rel
domain="[('type_id', '=', resource_booking_type_id)]"
help='If set, the booking will be created with this resource combination. Otherwise, the combination will be assigned automatically later, when the requester schedules the booking.'
index=True
ondelete='restrict'
string='Resource combination'
args: 'resource.booking.type.combination.rel'
resource_booking_type_id
Many2one → resource.booking.type
help='If set, one pending booking will be generated when sold.'
index=True
ondelete='restrict'
string='Booking type'
args: 'resource.booking.type'
No public methods.
sale_order_id
Many2one
help='Sale order that origins this booking.'
readonly=True
related='sale_order_line_id.order_id'
sale_order_line_id
Many2one → sale.order.line
copy=False
index=True
ondelete='cascade'
string='Sale order line'
tracking=True
args: 'sale.order.line'
sale_order_state
Selection
help='If there is a related quotation and it is not confirmed, the booking will not be able to become confirmed.'
readonly=True
related='sale_order_id.state'
string='Sale order state'
No public methods.
partner_id
Many2one → res.partner
ondelete='cascade'
required=True
string='Customer'
args: 'res.partner'
product_id
Many2one → product.product
domain="[('resource_booking_type_id', '=', type_id)]"
ondelete='cascade'
required=True
args: 'product.product', 'Product'
product_uom_qty
Integer
default=1
required=True
string='Quantity'
type_id
Many2one → resource.booking.type
index=True
ondelete='cascade'
required=True
string='Booking type'
args: 'resource.booking.type'
action_generate(self)
No new fields.
Public methods (1)action_sale_order_wizard(self)
resource_booking_count
Integer
compute='_compute_resource_bookings'
args: 'Resource bookings count'
resource_booking_ids
Many2many → resource.booking
compute='_compute_resource_bookings'
args: 'resource.booking'
action_bookings_resync(self)
action_confirm(self)
action_open_resource_bookings(self)
create(self, vals_list)
write(self, vals)
order_id
Many2one → sale.order
index=True
ondelete='cascade'
readonly=True
required=True
string='Order'
args: 'sale.order'
resource_booking_ids
Many2many → resource.booking
default=_default_resource_booking_ids
string='Bookings'
args: 'resource.booking', 'sale_order_booking_confirm_rel', 'sale_order_booking_confirm_id', 'booking_id'
action_invite(self)
action_noop(self)
resource_booking_ids
One2many → resource.booking
copy=False
string='Resource bookings'
args: 'resource.booking', 'sale_order_line_id'
create(self, vals_list)
write(self, vals)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/sale-workflow |
| GIT | |
| GIT | https://github.com/OCA/sale-workflow.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/sale-workflow/tree/17.0/sale_resource_booking |
| VERSION | |
| VERSION | 1.0.0 |
| CATEGORY | |
| CATEGORY | Appointments |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | Víctor Martínez, Weblate, OCA-git-bot, oca-ci |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/sale-workflow |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:20:05 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/calendar: - resource_booking OCA/web: - web_calendar_slot_duration - web_ir_actions_act_multi odoo/odoo: - sale - sales_team - base - base_setup - web - bus - web_tour - account_payment - account - onboarding - product - uom - analytic - portal - web_editor - http_routing - auth_signup - digest - resource - payment - utm - calendar |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
cssselect |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | This module extends the functionality of sale and resource bookings to support creating pending resource bookings automatically when confirming a sale order and to allow you to generate those sale orders easily from a resource booking type. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
product_template_form_view |
Display resource booking info in form | product.template | group | Inherits product.product_template_form_view |
resource_booking_form |
Display sale order info in booking form | resource.booking | group | Inherits resource_booking.resource_booking_view_form |
resource_booking_sale_view_form |
resource.booking.sale.view.form | resource.booking.sale | form | New |
resource_booking_type_form |
Sale order generator from booking type form | resource.booking.type | header | Inherits resource_booking.resource_booking_type_view_form |
sale_order_booking_confirm_view_form |
sale.order.booking.confirm.view.form | sale.order.booking.confirm | form | New |
view_order_form |
Display resource booking info in form | sale.order | button | Inherits sale.view_order_form |
resource_booking_type_combination_rel_id
Many2one → resource.booking.type.combination.rel
domain="[('type_id', '=', resource_booking_type_id)]"
help='If set, the booking will be created with this resource combination. Otherwise, the combination will be assigned automatically later, when the requester schedules the booking.'
index=True
ondelete='restrict'
string='Resource combination'
args: 'resource.booking.type.combination.rel'
resource_booking_type_id
Many2one → resource.booking.type
help='If set, one pending booking will be generated when sold.'
index=True
ondelete='restrict'
string='Booking type'
args: 'resource.booking.type'
No public methods.
sale_order_id
Many2one
help='Sale order that origins this booking.'
readonly=True
related='sale_order_line_id.order_id'
sale_order_line_id
Many2one → sale.order.line
copy=False
index=True
ondelete='cascade'
string='Sale order line'
tracking=True
args: 'sale.order.line'
sale_order_state
Selection
help='If there is a related quotation and it is not confirmed, the booking will not be able to become confirmed.'
readonly=True
related='sale_order_id.state'
string='Sale order state'
No public methods.
partner_id
Many2one → res.partner
ondelete='cascade'
required=True
string='Customer'
args: 'res.partner'
product_id
Many2one → product.product
domain="[('resource_booking_type_id', '=', type_id)]"
ondelete='cascade'
required=True
args: 'product.product', 'Product'
product_uom_qty
Integer
default=1
required=True
string='Quantity'
type_id
Many2one → resource.booking.type
index=True
ondelete='cascade'
required=True
string='Booking type'
args: 'resource.booking.type'
action_generate(self)
No new fields.
Public methods (1)action_sale_order_wizard(self)
resource_booking_count
Integer
compute='_compute_resource_bookings'
args: 'Resource bookings count'
resource_booking_ids
Many2many → resource.booking
compute='_compute_resource_bookings'
args: 'resource.booking'
action_bookings_resync(self)
action_confirm(self)
action_open_resource_bookings(self)
create(self, vals_list)
write(self, vals)
order_id
Many2one → sale.order
index=True
ondelete='cascade'
readonly=True
required=True
string='Order'
args: 'sale.order'
resource_booking_ids
One2many
readonly=False
related='order_id.order_line.resource_booking_ids'
action_invite(self)
action_noop(self)
resource_booking_ids
One2many → resource.booking
copy=False
string='Resource bookings'
args: 'resource.booking', 'sale_order_line_id'
create(self, vals_list)
write(self, vals)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/sale-workflow |
| GIT | |
| GIT | https://github.com/OCA/sale-workflow.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/sale-workflow/tree/16.0/sale_resource_booking |
| VERSION | |
| VERSION | 1.0.0 |
| CATEGORY | |
| CATEGORY | Appointments |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | oca-ci, r.perez |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/sale-workflow |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:53:45 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/calendar: - resource_booking OCA/web: - web_calendar_slot_duration - web_ir_actions_act_multi odoo/odoo: - sale - sales_team - base - base_setup - web - bus - web_tour - account_payment - account - product - uom - analytic - portal - web_editor - http_routing - auth_signup - digest - resource - payment - utm - calendar |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
cssselect |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
product_template_form_view |
Display resource booking info in form | product.template | group | Inherits product.product_template_form_view |
resource_booking_form |
Display sale order info in booking form | resource.booking | group | Inherits resource_booking.resource_booking_view_form |
resource_booking_sale_view_form |
resource.booking.sale.view.form | resource.booking.sale | form | New |
resource_booking_type_form |
Sale order generator from booking type form | resource.booking.type | header | Inherits resource_booking.resource_booking_type_view_form |
sale_order_booking_confirm_view_form |
sale.order.booking.confirm.view.form | sale.order.booking.confirm | form | New |
view_order_form |
Display resource booking info in form | sale.order | button | Inherits sale.view_order_form |
resource_booking_type_combination_rel_id
Many2one → resource.booking.type.combination.rel
domain="[('type_id', '=', resource_booking_type_id)]"
help='If set, the booking will be created with this resource combination. Otherwise, the combination will be assigned automatically later, when the requester schedules the booking.'
index=True
ondelete='restrict'
string='Resource combination'
args: 'resource.booking.type.combination.rel'
resource_booking_type_id
Many2one → resource.booking.type
help='If set, one pending booking will be generated when sold.'
index=True
ondelete='restrict'
string='Booking type'
args: 'resource.booking.type'
No public methods.
sale_order_id
Many2one
help='Sale order that origins this booking.'
readonly=True
related='sale_order_line_id.order_id'
sale_order_line_id
Many2one → sale.order.line
copy=False
index=True
ondelete='cascade'
string='Sale order line'
tracking=True
args: 'sale.order.line'
sale_order_state
Selection
help='If there is a related quotation and it is not confirmed, the booking will not be able to become confirmed.'
readonly=True
related='sale_order_id.state'
string='Sale order state'
No public methods.
partner_id
Many2one → res.partner
index=True
ondelete='cascade'
required=True
string='Customer'
args: 'res.partner'
product_id
Many2one → product.product
context="{'default_resource_booking_type_id': type_id}"
domain="[('resource_booking_type_id', '=', type_id)]"
index=True
ondelete='cascade'
required=True
args: 'product.product', 'Product'
product_uom_qty
Integer
default=1
required=True
string='Quantity'
type_id
Many2one → resource.booking.type
index=True
ondelete='cascade'
required=True
string='Booking type'
args: 'resource.booking.type'
action_generate(self)
No new fields.
Public methods (1)action_sale_order_wizard(self)
resource_booking_count
Integer
compute='_compute_resource_bookings'
args: 'Resource bookings count'
resource_booking_ids
Many2many → resource.booking
compute='_compute_resource_bookings'
args: 'resource.booking'
action_bookings_resync(self)
action_confirm(self)
action_open_resource_bookings(self)
create(self, vals_list)
write(self, vals)
order_id
Many2one → sale.order
index=True
ondelete='cascade'
readonly=True
required=True
string='Order'
args: 'sale.order'
resource_booking_ids
Many2many → resource.booking
default=_default_resource_booking_ids
string='Bookings'
args: 'resource.booking', 'sale_order_booking_confirm_resource_booking_rel', 'sale_order_booking_confirm_id', 'resource_booking_id'
action_invite(self)
action_noop(self)
resource_booking_ids
One2many → resource.booking
copy=False
string='Resource bookings'
args: 'resource.booking', 'sale_order_line_id'
create(self, vals_list)
write(self, vals)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/sale-workflow |
| GIT | |
| GIT | https://github.com/OCA/sale-workflow.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/sale-workflow/tree/15.0/sale_resource_booking |
| VERSION | |
| VERSION | 1.0.1 |
| CATEGORY | |
| CATEGORY | Appointments |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, Weblate, OCA-git-bot, oca-ci, angel |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/sale-workflow |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:46:33 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/calendar: - resource_booking OCA/web: - web_calendar_slot_duration - web_ir_actions_act_multi odoo/odoo: - sale - sales_team - base - base_setup - web - bus - web_tour - payment - account - product - uom - analytic - portal - web_editor - http_routing - auth_signup - digest - resource - utm - calendar |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
cssselect |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
product_template_form_view |
Display resource booking info in form | product.template | group | Inherits product.product_template_form_view |
resource_booking_form |
Display sale order info in booking form | resource.booking | group | Inherits resource_booking.resource_booking_form |
resource_booking_sale_view_form |
resource.booking.sale.view.form | resource.booking.sale | form | New |
resource_booking_type_form |
Sale order generator from booking type form | resource.booking.type | header | Inherits resource_booking.resource_booking_type_form |
sale_order_booking_confirm_view_form |
sale.order.booking.confirm.view.form | sale.order.booking.confirm | form | New |
view_order_form |
Display resource booking info in form | sale.order | button | Inherits sale.view_order_form |
resource_booking_type_combination_rel_id
Many2one → resource.booking.type.combination.rel
domain="[('type_id', '=', resource_booking_type_id)]"
help='If set, the booking will be created with this resource combination. Otherwise, the combination will be assigned automatically later, when the requester schedules the booking.'
index=True
ondelete='restrict'
string='Resource combination'
args: 'resource.booking.type.combination.rel'
resource_booking_type_id
Many2one → resource.booking.type
help='If set, one pending booking will be generated when sold.'
index=True
ondelete='restrict'
string='Booking type'
args: 'resource.booking.type'
No public methods.
sale_order_id
Many2one
help='Sale order that origins this booking.'
readonly=True
related='sale_order_line_id.order_id'
sale_order_line_id
Many2one → sale.order.line
copy=False
index=True
ondelete='cascade'
string='Sale order line'
tracking=True
args: 'sale.order.line'
sale_order_state
Selection
help='If there is a related quotation and it is not confirmed, the booking will not be able to become confirmed.'
readonly=True
related='sale_order_id.state'
string='Sale order state'
No public methods.
partner_id
Many2one → res.partner
index=True
ondelete='cascade'
required=True
string='Customer'
args: 'res.partner'
product_id
Many2one → product.product
context="{'default_resource_booking_type_id': type_id}"
domain="[('resource_booking_type_id', '=', type_id)]"
index=True
ondelete='cascade'
required=True
args: 'product.product', 'Product'
product_uom_qty
Integer
default=1
required=True
string='Quantity'
type_id
Many2one → resource.booking.type
index=True
ondelete='cascade'
required=True
string='Booking type'
args: 'resource.booking.type'
action_generate(self)
No new fields.
Public methods (1)action_sale_order_wizard(self)
resource_booking_count
Integer
compute='_compute_resource_bookings'
args: 'Resource bookings count'
resource_booking_ids
Many2many → resource.booking
compute='_compute_resource_bookings'
args: 'resource.booking'
action_bookings_resync(self)
action_confirm(self)
action_open_resource_bookings(self)
create(self, vals_list)
write(self, vals)
order_id
Many2one → sale.order
index=True
ondelete='cascade'
readonly=True
required=True
string='Order'
args: 'sale.order'
resource_booking_ids
One2many
readonly=False
related='order_id.order_line.resource_booking_ids'
action_invite(self)
action_noop(self)
resource_booking_ids
One2many → resource.booking
copy=False
string='Resource bookings'
args: 'resource.booking', 'sale_order_line_id'
create(self, vals_list)
write(self, vals)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/sale-workflow |
| GIT | |
| GIT | https://github.com/OCA/sale-workflow.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/sale-workflow/tree/13.0/sale_resource_booking |
| VERSION | |
| VERSION | 1.0.0 |
| CATEGORY | |
| CATEGORY | Appointments |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, Víctor Martínez, oca-travis, Weblate, OCA-git-bot |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/sale-workflow |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:34:12 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/calendar: - resource_booking OCA/web: - web_calendar_slot_duration - web_ir_actions_act_multi odoo/odoo: - sale - sales_team - base - base_setup - web - bus - web_tour - payment - account - product - uom - analytic - portal - web_editor - http_routing - auth_signup - digest - resource - utm - calendar |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
cssselect freezegun |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
product_template_form_view |
Display resource booking info in form | product.template | group | Inherits product.product_template_form_view |
resource_booking_form |
Display sale order info in booking form | resource.booking | group | Inherits resource_booking.resource_booking_form |
resource_booking_sale_view_form |
resource.booking.sale.view.form | resource.booking.sale | form | New |
resource_booking_type_form |
Sale order generator from booking type form | resource.booking.type | header | Inherits resource_booking.resource_booking_type_form |
sale_order_booking_confirm_view_form |
sale.order.booking.confirm.view.form | sale.order.booking.confirm | form | New |
view_order_form |
Display resource booking info in form | sale.order | button | Inherits sale.view_order_form |
resource_booking_type_combination_rel_id
Many2one → resource.booking.type.combination.rel
domain="[('type_id', '=', resource_booking_type_id)]"
help='If set, the booking will be created with this resource combination. Otherwise, the combination will be assigned automatically later, when the requester schedules the booking.'
index=True
ondelete='restrict'
string='Resource combination'
args: 'resource.booking.type.combination.rel'
resource_booking_type_id
Many2one → resource.booking.type
help='If set, one pending booking will be generated when sold.'
index=True
ondelete='restrict'
string='Booking type'
args: 'resource.booking.type'
No public methods.
sale_order_id
Many2one
help='Sale order that origins this booking.'
readonly=True
related='sale_order_line_id.order_id'
sale_order_line_id
Many2one → sale.order.line
copy=False
index=True
ondelete='cascade'
string='Sale order line'
tracking=True
args: 'sale.order.line'
sale_order_state
Selection
help='If there is a related quotation and it is not confirmed, the booking will not be able to become confirmed.'
readonly=True
related='sale_order_id.state'
string='Sale order state'
No public methods.
partner_id
Many2one → res.partner
index=True
ondelete='cascade'
required=True
string='Customer'
args: 'res.partner'
product_id
Many2one → product.product
context="{'default_resource_booking_type_id': type_id}"
domain="[('resource_booking_type_id', '=', type_id)]"
index=True
ondelete='cascade'
required=True
args: 'product.product', 'Product'
product_uom_qty
Integer
default=1
required=True
string='Quantity'
type_id
Many2one → resource.booking.type
index=True
ondelete='cascade'
required=True
string='Booking type'
args: 'resource.booking.type'
action_generate(self)
No new fields.
Public methods (1)action_sale_order_wizard(self)
resource_booking_count
Integer
compute='_compute_resource_bookings'
args: 'Resource bookings count'
resource_booking_ids
Many2many → resource.booking
compute='_compute_resource_bookings'
args: 'resource.booking'
action_bookings_resync(self)
action_confirm(self)
action_open_resource_bookings(self)
create(self, vals_list)
write(self, vals)
order_id
Many2one → sale.order
index=True
ondelete='cascade'
readonly=True
required=True
string='Order'
args: 'sale.order'
resource_booking_ids
One2many
readonly=False
related='order_id.order_line.resource_booking_ids'
action_invite(self)
action_noop(self)
resource_booking_ids
One2many → resource.booking
copy=False
string='Resource bookings'
args: 'resource.booking', 'sale_order_line_id'
create(self, vals_list)
write(self, vals)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/sale-workflow |
| GIT | |
| GIT | https://github.com/OCA/sale-workflow.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/sale-workflow/tree/12.0/sale_resource_booking |
| VERSION | |
| VERSION | 1.0.1 |
| CATEGORY | |
| CATEGORY | Appointments |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | Jairo Llopis, OCA Transbot, oca-travis, Weblate, OCA-git-bot, sergiocorato |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/sale-workflow |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:29:17 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/calendar: - resource_booking OCA/web: - web_calendar_slot_duration - web_ir_actions_act_multi odoo/odoo: - sale - sales_team - base - base_setup - web - bus - web_tour - payment - account - product - decimal_precision - uom - analytic - portal - http_routing - digest - calendar - resource |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
cssselect freezegun |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
product_template_form_view |
Display resource booking info in form | product.template | group | Inherits product.product_template_form_view |
resource_booking_form |
Display sale order info in booking form | resource.booking | group | Inherits resource_booking.resource_booking_form |
resource_booking_sale_view_form |
resource.booking.sale.view.form | resource.booking.sale | form | New |
resource_booking_type_form |
Sale order generator from booking type form | resource.booking.type | header | Inherits resource_booking.resource_booking_type_form |
sale_order_booking_confirm_view_form |
sale.order.booking.confirm.view.form | sale.order.booking.confirm | form | New |
view_order_form |
Display resource booking info in form | sale.order | button | Inherits sale.view_order_form |
resource_booking_type_combination_rel_id
Many2one → resource.booking.type.combination.rel
domain="[('type_id', '=', resource_booking_type_id)]"
help='If set, the booking will be created with this resource combination. Otherwise, the combination will be assigned automatically later, when the requester schedules the booking.'
index=True
ondelete='restrict'
string='Resource combination'
args: 'resource.booking.type.combination.rel'
resource_booking_type_id
Many2one → resource.booking.type
help='If set, one pending booking will be generated when sold.'
index=True
ondelete='restrict'
string='Booking type'
args: 'resource.booking.type'
No public methods.
sale_order_id
Many2one
help='Sale order that origins this booking.'
readonly=True
related='sale_order_line_id.order_id'
sale_order_line_id
Many2one → sale.order.line
copy=False
index=True
ondelete='cascade'
string='Sale order line'
track_visibility='onchange'
args: 'sale.order.line'
sale_order_state
Selection
help='If there is a related quotation and it is not confirmed, the booking will not be able to become confirmed.'
readonly=True
related='sale_order_id.state'
string='Sale order state'
No public methods.
partner_id
Many2one → res.partner
index=True
ondelete='cascade'
required=True
string='Customer'
args: 'res.partner'
product_id
Many2one → product.product
context="{'default_resource_booking_type_id': type_id}"
domain="[('resource_booking_type_id', '=', type_id)]"
index=True
ondelete='cascade'
required=True
args: 'product.product', 'Product'
product_uom_qty
Integer
default=1
required=True
string='Quantity'
type_id
Many2one → resource.booking.type
index=True
ondelete='cascade'
required=True
string='Booking type'
args: 'resource.booking.type'
action_generate(self)
No new fields.
Public methods (1)action_sale_order_wizard(self)
resource_booking_count
Integer
compute='_compute_resource_bookings'
args: 'Resource bookings count'
resource_booking_ids
Many2many → resource.booking
compute='_compute_resource_bookings'
args: 'resource.booking'
action_bookings_resync(self)
action_confirm(self)
action_open_resource_bookings(self)
create(self, vals_list)
write(self, vals)
order_id
Many2one → sale.order
index=True
ondelete='cascade'
readonly=True
required=True
string='Order'
args: 'sale.order'
resource_booking_ids
One2many
readonly=False
related='order_id.order_line.resource_booking_ids'
action_invite(self)
action_noop(self)
resource_booking_ids
One2many → resource.booking
copy=False
string='Resource bookings'
args: 'resource.booking', 'sale_order_line_id'
create(self, vals_list)
write(self, vals)