PMS - Sale

pms_sale
REPOSITORY
REPOSITORYOCA/pms
GIT
GIThttps://github.com/OCA/pms.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/pms/tree/19.0/pms_sale
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYGeneric Modules/Property Management System
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Gray Matter Logic
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Gray Matter Logic
COMMITTERS
COMMITTERSMaxime Chambreuil, OCA-git-bot, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/pms
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 09:18:10
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/pms:
    - pms_account
    - pms_base
OCA/web:
    - web_timeline
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - html_editor
    - uom
    - analytic
    - portal
    - http_routing
    - auth_signup
    - digest
    - resource
    - base_geolocalize
    - sale
    - sales_team
    - account_payment
    - payment
    - utm
    - calendar
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (22)
XML IDNameModelTypeStatus
pms_configurator_view_form pms.configurator.view.form pms.configurator form New
pms_mail_view_search pms.mail.search pms.mail search New
pms_property_reservation_view_form pms.property.reservation.view.from pms.property.reservation form New
pms_property_reservation_view_tree pms.property.reservation.view.tree pms.property.reservation list New
pms_reservation_guest_view_form pms.reservation.guest.view.form pms.reservation.guest form New
pms_reservation_guest_view_tree pms.reservation.guest.view.tree pms.reservation.guest list New
product_template_form_view_inherit_pms_sale product.template.event.form.inherit.pms.sale product.template group Inherits product.product_template_form_view
product_template_search_view_inherit_pms_sale product.template.search product.template field Inherits product.product_template_search_view
sale_order_view_form_inherit_pms_sale sale.order.form.inherit.pms.sale sale.order xpath Inherits sale.view_order_form
view_move_form_inherit_pms_sale pms.property.invoice.form.pms account.move div Inherits account.view_move_form
view_pms_mail_form pms.mail.form pms.mail form New
view_pms_mail_tree pms.mail.tree pms.mail list New
view_pms_property_form_inherit_pms_sale pms.property.form.inherit.pms.sale pms.property xpath Inherits pms_base.view_pms_property_form
view_pms_team_kanban_inherit_pms_sale pms.team.kanban pms.team field Inherits pms_base.view_pms_team_kanban
view_reservation_calendar pms.reservation.calendar pms.reservation calendar New
view_reservation_form pms.reservation.form pms.reservation form New
view_reservation_graph pms.reservation.graph pms.reservation graph New
view_reservation_kanban pms.reservation.kanban pms.reservation kanban New
view_reservation_pivot pms.reservation.pivot pms.reservation pivot New
view_reservation_search pms.reservation.search pms.reservation search New
view_reservation_timeline pms.reservation.timeline pms.reservation timeline New
view_reservation_tree pms.reservation.tree pms.reservation list New
Models touched (16)

New fields (1)
  • reservation_count Integer
    compute='_compute_reservation_count' args: 'Reservations Count'
Public methods (1)
  • action_view_reservation_list(self)

New fields (1)
  • pms_reservation_id Many2one → pms.reservation
    copy=False readonly=True string='Reservation' args: 'pms.reservation'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (13)
  • currency_id Many2one → res.currency
    string='Currency' args: 'res.currency'
  • duration Integer
    compute='_compute_duration' readonly=False store=True args: 'Nights'
  • existing_reservation_id Integer
  • guest_ids One2many → pms.reservation.guest.wizard
    string='Guests' args: 'pms.reservation.guest.wizard', 'configurator_id'
  • no_of_guests Integer
    compute='_compute_no_of_guests' store=True args: 'Number of Guests'
  • price Float
    readonly=True related='reservation_id.price'
  • product_id Many2one → product.product
    readonly=True string='Product' args: 'product.product'
  • property_id Many2one → pms.property
    string='Property' args: 'pms.property'
  • reservation_id Many2one → pms.property.reservation
    string='Reservation Type' args: 'pms.property.reservation'
  • reservation_ids Many2many → pms.reservation
    args: 'pms.reservation'
  • start Datetime
    help='Start date of the reservation' required=True args: 'From'
  • stop Datetime
    compute='_compute_stop' help='Stop date of the reservation' readonly=False required=True store=True args: 'To'
  • timeline_html Html
    readonly=True args: 'Timeline HTML'
Public methods (3)
  • default_get(self, fields_vals)
    @api.model
  • onchange_dates(self)
    @api.onchange('start', 'stop')
  • onchange_property_id(self)
    @api.onchange('property_id')

New fields (7)
  • interval Integer
    default=1
  • interval_trigger Selection
    string='Trigger' args: [('after_resev', 'After the reservation'), ('before_checkin', 'Before Checkin'), ('after_checkin', 'After Checkin'), ('before_checkout', 'Before Checkout'), ('after_checkout', 'After Checkout')]
  • interval_unit Many2one → uom.uom
    domain=<expr> string='Unit' args: 'uom.uom'
  • name Char
    required=True
  • notification_type Selection
    default='Email' string='Send' args: [('email', 'Email')]
  • property_id Many2one → pms.property
    string='Property' args: 'pms.property'
  • template_id Many2one → mail.template
    string='Email Template' args: 'mail.template'
Public methods (0)

No public methods.

New fields (8)
  • checkin Float
  • checkout Float
  • listing_type Selection
    selection=[('private_room', 'Private Room'), ('entire_home', 'Entire Home'), ('shared_room', 'Shared Room')]
  • max_nights Integer
    args: 'Maximum Nights'
  • min_nights Integer
    args: 'Minimum Nights'
  • no_of_guests Integer
    args: 'Number of Guests'
  • pms_mail_ids One2many → pms.mail
    string='Communication' args: 'pms.mail', 'property_id'
  • reservation_ids One2many → pms.property.reservation
    string='Reservation Types' args: 'pms.property.reservation', 'property_id'
Public methods (1)
  • get_property_information(self, vals, domain=False)
    @api.model

New fields (5)
  • currency_id Many2one → res.currency
    default=<expr> string='Currency' args: 'res.currency'
  • name Char
    required=True
  • price Float
    compute='_compute_price' digits='Product Price' readonly=False store=True
  • product_id Many2one → product.product
    default=<expr> domain=[('reservation_ok', '=', True)] required=True string='Product' args: 'product.product'
  • property_id Many2one → pms.property
    string='Property' args: 'pms.property'
Public methods (0)

No public methods.

New fields (23)
  • adults Integer
  • children Integer
  • color Integer
    default=0 args: 'Color Index'
  • company_id Many2one → res.company
    default=<expr> string='Company' args: 'res.company'
  • date Datetime
    default=<expr>
  • duration Integer
    compute='_compute_duration' readonly=False store=True args: 'Nights'
  • guest_ids One2many → pms.reservation.guest
    string='Guests' args: 'pms.reservation.guest', 'reservation_id'
  • invoice_count Integer
    compute='_compute_invoice_count' copy=False readonly=True
  • invoice_status Selection
    index=True related='sale_order_id.invoice_status' store=True
  • name Char
    copy=False default=<expr> help='Reservation Number' index=True readonly=True required=True string='Reservation #'
  • no_of_guests Integer
    compute='_compute_no_of_guests' store=True args: 'Number of Guests'
  • partner_id Many2one → res.partner
    string='Booked by' args: 'res.partner'
  • priority Selection
    default=<expr> index=True args: AVAILABLE_PRIORITIES
  • property_id Many2one → pms.property
    string='Property' args: 'pms.property'
  • reservation_type_id Many2one → pms.property.reservation
    string='Reservation Type' args: 'pms.property.reservation'
  • sale_order_id Many2one → sale.order
    string='Sales Order' args: 'sale.order'
  • sale_order_line_id Many2one → sale.order.line
    string='Sales Order Line' args: 'sale.order.line'
  • stage_id Many2one → pms.stage
    default=<expr> group_expand='_read_group_stage_ids' index=True store=True string='Stage' tracking=True args: 'pms.stage'
  • start Datetime
    default=fields.Date.today help='Start date of the reservation' required=True tracking=True args: 'Checkin'
  • stop Datetime
    compute='_compute_stop' default=fields.Date.today help='Stop date of the reservation' readonly=False required=True store=True tracking=True args: 'Checkout'
  • tag_ids Many2many → pms.tag
    string='Tags' args: 'pms.tag'
  • team_id Many2one → pms.team
    related='property_id.team_id' store=True string='Team' args: 'pms.team'
  • user_id Many2one → res.users
    default=<expr> string='Responsible' args: 'res.users'
Public methods (9)
  • action_book(self)
  • action_cancel(self)
  • action_check_in(self)
  • action_check_out(self)
  • action_confirm(self)
  • action_view_invoices(self)
  • create(self, vals_list)
    @api.model_create_multi
  • get_selections(self)
    @api.model
  • onchange_property_id(self)
    @api.onchange('property_id')

New fields (6)
  • email Char
  • name Char
    required=True
  • order_line_id Many2one → sale.order.line
    string='Sale Order' args: 'sale.order.line'
  • partner_id Many2one → res.partner
    string='Partner' args: 'res.partner'
  • phone Char
  • reservation_id Many2one → pms.reservation
    string='Reservation' args: 'pms.reservation'
Public methods (0)

No public methods.

New fields (5)
  • configurator_id Many2one → pms.configurator
    string='Configurator' args: 'pms.configurator'
  • email Char
  • name Char
    required=True
  • partner_id Many2one → res.partner
    string='Partner' args: 'res.partner'
  • phone Char
Public methods (0)

No public methods.

New fields (1)
  • stage_type Selection
    ondelete={'reservation': 'cascade'} selection_add=[('reservation', 'Reservation')]
Public methods (1)
  • get_color_information(self)

New fields (4)
  • no_today_reservation Integer
    compute='_compute_no_reservations' string='Today Reservations'
  • no_tomorrow_reservation Integer
    compute='_compute_no_reservations' string='Tomorrow Reservations'
  • no_week_reservation Integer
    compute='_compute_no_reservations' string='This Week Reservations'
  • total_reservation Integer
    compute='_compute_no_reservations' string='Total Reservations'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • reservation_ok Boolean
    string='Reservation'
Public methods (0)

No public methods.

New fields (1)
  • reservation_count Integer
    compute='_compute_reservation_count' args: 'Reservations Count'
Public methods (2)
  • action_confirm(self)
  • action_view_reservation_list(self)

New fields (2)
  • pms_reservation_id Many2one → pms.reservation
    string='Reservation' args: 'pms.reservation'
  • reservation_ok Boolean
    readonly=True related='product_id.reservation_ok' string='Is Reservation?'
Public methods (3)
  • create(self, vals_list)
    @api.model_create_multi
  • unlink(self)
  • write(self, values)