| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/pms |
| GIT | |
| GIT | https://github.com/OCA/pms.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/pms/tree/16.0/pms |
| VERSION | |
| VERSION | 4.10.0 |
| CATEGORY | |
| CATEGORY | Generic Modules/Property Management System |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Commit [Sun] |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Commit [Sun] |
| COMMITTERS | |
| COMMITTERS | Omar (Comunitea), Weblate, OCA-git-bot, Darío Lodeiros, oca-ci, DarioLodeiros, irluidev, jesusvmayor |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/pms |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:53:58 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/partner-contact: - partner_firstname - partner_contact_gender - partner_contact_personal_information_page - partner_contact_birthdate - partner_contact_nationality OCA/pms: - multi_pms_properties OCA/web: - web_timeline odoo/odoo: - base - base_automation - resource - web - base_setup - bus - web_tour - sales_team - analytic - uom - account - product - portal - web_editor - http_routing - auth_signup - digest - sale - account_payment - payment - utm |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
openupgradelib |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_analytic_distribution_model_form_inherit |
account.analytic.distribution.model.inherit.form | account.analytic.distribution.model | field | Inherits account.account_analytic_distribution_model_form_inherit |
account_analytic_distribution_model_tree_inherit |
account.analytic.distribution.model.inherit.tree | account.analytic.distribution.model | field | Inherits account.account_analytic_distribution_model_tree_inherit |
account_journal_dashboard_kanban_view |
account.journal | xpath | Inherits account.account_journal_dashboard_kanban_view | |
account_journal_view_form |
account.journal | xpath | Inherits account.view_account_journal_form | |
account_payment_view_form |
account.payment | xpath | Inherits account.view_account_payment_form | |
advanced_filters_wizard |
Filter by dates | pms.advanced.filters.wizard | form | New |
availability_plan_rule_view_form |
pms.availability.plan.rule.form | pms.availability.plan.rule | form | New |
availability_plan_rule_view_tree |
pms.availability.plan.rule.tree | pms.availability.plan.rule | tree | New |
availability_view_form |
pms.availability.plan.form | pms.availability.plan | form | New |
availability_view_tree |
pms.availability.plan.tree | pms.availability.plan | tree | New |
bank_statement_form |
account.bank.statement | xpath | Inherits account.view_bank_statement_form | |
booking_duplicate |
Duplicate Folio | pms.booking.duplicate | form | New |
booking_engine |
Folio Wizard | pms.booking.engine | form | New |
company_view_form |
res.company | xpath | Inherits base.view_company_form | |
folio_portal_template |
Folio Portal Template | ir.ui.view | qweb | Inherits portal.portal_sidebar |
massive_changes_wizard |
Availability Wizard | pms.massive.changes.wizard | form | New |
move_form |
account.move | xpath | Inherits account.view_move_form | |
payment_checkout_inherit |
payment_checkout_inherit | ir.ui.view | qweb | Inherits payment.checkout |
payment_manage_inherit |
payment_manage_inherit | ir.ui.view | qweb | Inherits payment.manage |
payment_provider_form |
muliproperty.payment.provider.form | payment.provider | field | Inherits payment.payment_provider_form |
payment_transaction_inherit_view_form |
payment.transaction | xpath | Inherits payment.payment_transaction_form | |
pms_amenity_search |
pms.room_amenity_search | pms.amenity | search | New |
pms_amenity_view_form |
pms.amenity.form | pms.amenity | form | New |
pms_amenity_view_list |
pms.room_amenity_list | pms.amenity | tree | New |
pms_board_service_form |
pms.board.service.form | pms.board.service | form | New |
pms_board_service_room_type_form |
pms.board.service.room.type.form | pms.board.service.room.type | form | New |
pms_board_service_view_search |
pms.board.service.search | pms.board.service | search | New |
pms_board_service_view_tree |
pms.board.service.tree | pms.board.service | tree | New |
pms_cancelation_rule_form |
pms.cancelation.rule.form | pms.cancelation.rule | form | New |
pms_cancelation_rule_view_tree |
pms.cancelation.rule.tree | pms.cancelation.rule | tree | New |
pms_checkin_partner_folio_view_tree |
pms.checkin.partner.folio.view.tree | pms.checkin.partner | tree | New |
pms_checkin_partner_graph |
pms.checkin.partner.graph | pms.checkin.partner | graph | New |
pms_checkin_partner_kanban_view |
pms.checkin.partner.kanban | pms.checkin.partner | kanban | New |
pms_checkin_partner_pivot |
pms.checkin.partner.pivot | pms.checkin.partner | pivot | New |
pms_checkin_partner_reservation_view_tree |
pms.checkin.partner.reservation.view.tree | pms.checkin.partner | tree | New |
pms_checkin_partner_view_calendar |
pms.checkin.partner.view.calendar | pms.checkin.partner | calendar | New |
pms_checkin_partner_view_folio_search |
pms.checkin.partner.search | pms.checkin.partner | search | New |
pms_checkin_partner_view_form |
Checkin Form | pms.checkin.partner | form | New |
pms_checkin_partner_view_search |
pms.checkin.partner.search | pms.checkin.partner | search | New |
pms_checkin_partner_view_tree |
pms.checkin.partner.view.tree | pms.checkin.partner | tree | New |
pms_folio_pivot |
pms.folio.pivot | pms.folio | pivot | New |
pms_folio_view_form |
pms.folio.form | pms.folio | form | New |
pms_folio_view_graph |
view.pms.folio.graph | pms.folio | graph | New |
pms_folio_view_kanban |
pms.folio.kanban | pms.folio | kanban | New |
pms_folio_view_search |
pms.folio.search | pms.folio | search | New |
pms_folio_view_tree |
pms.folio.tree | pms.folio | tree | New |
pms_proforma_invoice_template |
Invoice Proforma Portal Template | ir.ui.view | qweb | Inherits account.portal_invoice_page |
pms_property_views_form |
pms_property_views_form | pms.property | form | New |
pms_property_views_tree |
pms_property_views_tree | pms.property | tree | New |
pms_reservation_graph |
pms.reservation.graph | pms.reservation | graph | New |
pms_reservation_pivot |
pms.reservation.pivot | pms.reservation | pivot | New |
pms_reservation_view_bottom_tree |
pms.reservation.tree | pms.reservation | tree | Inherits pms.pms_reservation_view_tree |
pms_reservation_view_calendar |
pms.reservation.view.calendar | pms.reservation | calendar | New |
pms_reservation_view_form |
pms.reservation.form | pms.reservation | form | New |
pms_reservation_view_search |
pms.reservation.search | pms.reservation | search | New |
pms_reservation_view_timeline |
pms.reservation.view.timeline | pms.reservation | timeline | New |
pms_reservation_view_tree |
pms.reservation.tree | pms.reservation | tree | New |
pms_room_amenity_type_view_form |
pms.room_amenity_type_form | pms.amenity.type | form | New |
pms_room_amenity_type_view_list |
pms.room_amenity_type_list | pms.amenity.type | tree | New |
pms_room_closure_reason_view_form |
pms.room.closure.reason.form | room.closure.reason | form | New |
pms_room_closure_reason_view_search |
pms.room.closure.reason.search | room.closure.reason | search | New |
pms_room_closure_reason_view_tree |
>pms.room.closure.reason.tree | room.closure.reason | tree | New |
pms_room_type_class_view_form |
pms.room.type.class.form | pms.room.type.class | form | New |
pms_room_type_class_view_tree |
pms.room.type.class.tree | pms.room.type.class | tree | New |
pms_room_type_view_form |
pms.room_type.form | pms.room.type | form | New |
pms_room_type_view_search |
pms.room.type.search | pms.room.type | search | New |
pms_room_type_view_tree |
pms.room_type.tree | pms.room.type | tree | New |
pms_room_view_form |
pms.room.form | pms.room | form | New |
pms_room_view_kanban |
pms.room.kanban | pms.room | kanban | New |
pms_room_view_search |
pms.room.search | pms.room | search | New |
pms_room_view_tree |
pms.room.tree | pms.room | tree | New |
pms_sale_channel_view_form |
pms.sale.channel.form | pms.sale.channel | form | New |
pms_sale_channel_view_tree |
pms.sale.channel.tree | pms.sale.channel | tree | New |
pms_service_line_graph |
pms.service.line.graph | pms.service.line | graph | New |
pms_service_line_pivot |
pms.service.line.pivot | pms.service.line | pivot | New |
pms_service_line_report_view_tree |
pms.service.line.report.tree | pms.service.line | tree | New |
pms_service_line_view_calendar |
pms.service.line.view.calendar | pms.service.line | calendar | New |
pms_service_line_view_form |
pms.service.line.form | pms.service.line | form | New |
pms_service_line_view_search |
pms.service.line.search | pms.service.line | search | New |
pms_service_line_view_tree |
pms.service.line.tree | pms.service.line | tree | New |
pms_service_view_form |
.pms.service.form | pms.service | form | New |
pms_service_view_search |
pms.service.search | pms.service | search | New |
pms_service_view_tree |
.pms.service.view.tree | pms.service | tree | New |
pms_ubication_view_form |
pms.ubication.form | pms.ubication | form | New |
pms_ubication_view_tree |
pms.ubication.tree | pms.ubication | tree | New |
portal_folio_error |
Folio error/warning display | ir.ui.view | qweb | New |
portal_folio_success |
Invoice success display | ir.ui.view | qweb | New |
portal_my_folio |
My Folios | ir.ui.view | qweb | New |
portal_my_folios |
Folios | ir.ui.view | qweb | Inherits portal.portal_my_home |
portal_my_home_menu_folio |
Portal layout : folio menu entries | ir.ui.view | qweb | Inherits portal.portal_breadcrumbs |
portal_my_home_menu_reservation |
Portal layout : reservation menu entries | ir.ui.view | qweb | Inherits portal.portal_breadcrumbs |
portal_my_reservation |
My Reservations | ir.ui.view | qweb | New |
portal_my_reservation_detail |
My Reservation | ir.ui.view | qweb | New |
portal_my_reservations |
Reservations | ir.ui.view | qweb | Inherits portal.portal_my_home |
product_pricelist_item_view_form |
product.pricelist.item | xpath | Inherits product.product_pricelist_item_form_view | |
product_pricelist_item_view_tree |
product.pricelist.item | tree | New | |
product_pricelist_view_form |
product.pricelist | xpath | Inherits product.product_pricelist_view | |
product_template_view_form |
view.product.template.form.inherited | product.template | xpath | Inherits product.product_template_form_view |
report_folio |
report_folio | ir.ui.view | qweb | New |
report_folio_document |
report_folio_document | ir.ui.view | qweb | New |
report_invoice_document |
report_invoice_document | ir.ui.view | qweb | Inherits account.report_invoice_document |
report_pms_pro_forma |
report_pms_pro_forma | ir.ui.view | qweb | New |
res_partner_view_form |
res.partner.view.form | res.partner | xpath | Inherits base.view_partner_form |
res_users_view_form |
User Properties fields | res.users | xpath | Inherits base.view_users_form |
reservation_wizard |
Split, join or swap reservations | pms.reservation.split.join.swap.wizard | form | New |
several_partners_wizard |
Several Partners | pms.several.partners.wizard | form | New |
template_footer |
template_footer | ir.ui.view | qweb | New |
template_header |
template_header | ir.ui.view | qweb | New |
template_reservation |
template_reservation | ir.ui.view | qweb | New |
template_reservation_confirmed |
Property Reservation Confirmed | ir.ui.view | qweb | New |
template_reservation_details |
template_reservation_details | ir.ui.view | qweb | New |
traveller_report |
traveller_report | ir.ui.view | qweb | New |
view_account_analytic_line_tree_inherit_account |
account.analytic.line.tree.inherit.account | account.analytic.line | field | Inherits account.view_account_analytic_line_tree_inherit_account |
view_account_invoice_filter |
account.move | xpath | Inherits account.view_account_invoice_filter | |
view_account_journal_search |
account.journal | xpath | Inherits account.view_account_journal_search | |
view_account_move_filter |
account.move | xpath | Inherits account.view_account_move_filter | |
view_account_move_line_filter |
account.move.line | xpath | Inherits account.view_account_move_line_filter | |
view_country_form |
view.country.form | res.country | xpath | Inherits base.view_country_form |
view_folio_advance_payment_inv |
Invoice Orders | folio.advance.payment.inv | form | New |
view_move_line_tree |
account.move.line | xpath | Inherits account.view_move_line_tree | |
view_move_tree |
account.move | xpath | Inherits account.view_move_tree | |
view_partner_category_form_inherited |
view.partner.category.form.inherited | res.partner.category | xpath | Inherits base.view_partner_category_form |
view_partner_data_form |
res.partner.form.data | res.partner | form | New |
wizard_folio_changes_view_form |
wizard.folio.changes.view.form | wizard.folio.changes | form | New |
wizard_payment_folio_view_form |
wizard.payment.folio.view.form | wizard.payment.folio | form | New |
pms_property_id
Many2one → pms.property
check_pms_properties=True
comodel_name='pms.property'
index=True
name='Property'
default_get(self, fields)
journal_id
Many2one
check_pms_properties=True
readonly=False
pms_property_id
Many2one → pms.property
check_pms_properties=True
comodel_name='pms.property'
compute='_compute_pms_property_id'
copy=False
help='Properties with access to the element'
index=True
readonly=False
store=True
string='Property'
No public methods.
folio_ids
Many2many → pms.folio
check_pms_properties=True
column1='account_journal_id'
column2='folio_id'
comodel_name='pms.folio'
ondelete='cascade'
relation='account_bank_statement_folio_rel'
string='Folios'
reservation_ids
Many2many → pms.reservation
check_pms_properties=True
column1='account_bank_statement_id'
column2='reservation_id'
comodel_name='pms.reservation'
help='Reservations in which the Account Bank Statement Lines are included'
ondelete='cascade'
relation='account_bank_statement_reservation_rel'
string='Reservations'
service_ids
Many2many → pms.service
check_pms_properties=True
column1='account_bank_statement_id'
column2='service_id'
comodel_name='pms.service'
help='Services in which the Account Bank Statement Lines are included'
ondelete='cascade'
relation='account_bank_statement_service_rel'
string='Services'
No public methods.
allowed_room_ids
Many2many → pms.room
column1='account_journal_id'
column2='room_id'
comodel_name='pms.room'
compute='_compute_allowed_room_ids'
help='Room to filter the room in the reservation'
relation='account_journal_allow_room_rel'
string='Rooms Filter allowed'
is_simplified_invoice
Boolean
compute='_compute_is_simplified_invoice'
help='Use to simplified invoice'
readonly=False
store=True
string='Simplified invoice'
pms_property_ids
Many2many → pms.property
check_pms_properties=True
column1='account_journal_id'
column2='pms_property_id'
comodel_name='pms.property'
help='Properties with access to the element; if not set, all properties can access'
ondelete='restrict'
relation='account_journal_pms_property_rel'
string='Properties'
room_filter_ids
Many2many → pms.room
column1='account_journal_id'
column2='room_id'
comodel_name='pms.room'
domain="[('id', 'in', allowed_room_ids)]"
help='Room to filter the room types in the reservation'
relation='account_journal_room_rel'
string='Apply Rooms'
No public methods.
folio_ids
Many2many → pms.folio
column1='account_move_id'
column2='folio_ids_id'
comodel_name='pms.folio'
compute='_compute_folio_origin'
help='Folios where the account move are included'
readonly=False
relation='account_move_folio_ids_rel'
store=True
string='Folios'
is_simplified_invoice
Boolean
help='Technical field to know if the invoice is simplified'
related='journal_id.is_simplified_invoice'
store=True
origin_agency_id
Many2one → res.partner
comodel_name='res.partner'
compute='_compute_origin_agency_id'
domain="[('is_agency', '=', True)]"
help='The agency where the folio account move originates'
index=True
readonly=False
store=True
string='Origin Agency'
pms_property_id
Many2one → pms.property
comodel_name='pms.property'
compute='_compute_pms_property_id'
help='The property associated to the account move'
index=True
readonly=False
store=True
string='Property'
get_proforma_portal_url(self, suffix=None, report_type=None, download=None, query_string=None, anchor=None)
folio_ids
Many2many → pms.folio
check_pms_properties=True
comodel_name='pms.folio'
compute='_compute_folio_ids'
store=True
string='Folios'
folio_line_ids
Many2many → folio.sale.line
column1='invoice_line_id'
column2='sale_line_id'
comodel_name='folio.sale.line'
copy=True
help='The folio lines in the account move lines'
relation='folio_sale_line_invoice_rel'
string='Folio Lines'
move_id
Many2one
check_pms_properties=True
name
Char
compute='_compute_name'
readonly=False
store=True
name_changed_by_user
Boolean
default=True
help='Techinal field to know if the name was set manually by the user\n or by the system. If the name was set manually, the system will not\n change it when the qty days are changed'
string='Name set manually'
origin_agency_id
Many2one → res.partner
comodel_name='res.partner'
compute='_compute_origin_agency_id'
domain="[('is_agency', '=', True)]"
help='The agency where the folio account move originates'
index=True
readonly=False
store=True
string='Origin Agency'
pms_property_id
Many2one → pms.property
check_pms_properties=True
comodel_name='pms.property'
compute='_compute_pms_property_id'
index=True
name='Property'
readonly=False
store=True
reconcile(self)
folio_ids
Many2many → pms.folio
column1='payment_id'
column2='folio_id'
comodel_name='pms.folio'
compute='_compute_folio_ids'
readonly=False
relation='account_payment_folio_rel'
store=True
string='Folios'
origin_agency_id
Many2one → res.partner
comodel_name='res.partner'
compute='_compute_origin_agency_id'
domain="[('is_agency', '=', True)]"
help='The agency where the folio account move originates'
index=True
readonly=True
store=True
string='Origin Agency'
origin_reference
Char
help='The reference of the payment origin'
action_draft(self)
allowed_on_pms
Boolean
help='Use to pay for reservations'
args: 'Allowed on PMS'
No public methods.
advance_payment_method
Selection
default='delivered'
help='A standard invoice is issued with all the order lines ready for invoicing, according to their invoicing policy (based on ordered or delivered quantity).'
required=True
selection=[('delivered', 'Regular invoice'), ('percentage', 'Down payment (percentage)'), ('fixed', 'Down payment (fixed amount)')]
string='Create Invoice'
amount
Float
digits='Account'
help='The percentage of amount to be invoiced in advance, taxes excluded.'
string='Down Payment Amount'
bill_rooms
Boolean
default=True
help='Bill Rooms'
bill_services
Boolean
default=True
help='Bill Services'
count
Integer
default=<expr>
string='Order Count'
currency_id
Many2one → res.currency
comodel_name='res.currency'
default=<expr>
help='Currency used in invoices'
string='Currency'
deduct_down_payments
Boolean
default=True
help='Deduct down payments'
deposit_account_id
Many2one → account.account
comodel_name='account.account'
default=<expr>
domain=[('deprecated', '=', False)]
help='Account used for deposits'
string='Income Account'
deposit_taxes_id
Many2many → account.tax
comodel_name='account.tax'
default=<expr>
help='Taxes used for deposits'
string='Customer Taxes'
fixed_amount
Monetary
help='The fixed amount to be invoiced in advance, taxes excluded.'
string='Down Payment Amount (Fixed)'
has_down_payments
Boolean
default=<expr>
help='Has down payments'
readonly=True
partner_invoice_id
Many2one → res.partner
comodel_name='res.partner'
default=<expr>
help='Invoice address for current partner'
string='Billing contact'
product_id
Many2one → product.product
comodel_name='product.product'
default=<expr>
domain=[('type', '=', 'service')]
string='Down Payment Product'
create_invoices(self)
onchange_advance_payment_method(self)
auto_reservation_note
Boolean
default=False
help='Indicates if the folio sale line is an auto reservation note'
readonly=True
company_id
Many2one
help='The company in the folio sale line'
index=True
readonly=True
related='folio_id.company_id'
store=True
string='Company'
currency_id
Many2one
depends=['folio_id.currency_id']
help='The currency for the folio'
readonly=True
related='folio_id.currency_id'
store=True
string='Currency'
date_order
Date
compute='_compute_date_order'
help='Field to order by service'
readonly=True
store=True
string='Date'
default_invoice_to
Many2one → res.partner
comodel_name='res.partner'
help='Indicates the contact to which this line will be\n billed by default, if it is not established,\n a guest or the generic contact will be used instead'
index=True
ondelete='restrict'
string='Invoice to'
discount
Float
compute='_compute_discount'
digits='Discount'
help='Discount of total price in folio sale line'
readonly=False
store=True
string='Discount (%)'
display_type
Selection
default=False
help='Technical field for UX purpose.'
selection=[('line_section', 'Section'), ('line_note', 'Note')]
folio_id
Many2one → pms.folio
comodel_name='pms.folio'
copy=False
help='Folio to which folio sale line belongs'
index=True
ondelete='cascade'
required=True
string='Folio Reference'
invoice_lines
Many2many → account.move.line
column1='sale_line_id'
column2='invoice_line_id'
comodel_name='account.move.line'
copy=False
help='Folio sale line invoice lines'
relation='folio_sale_line_invoice_rel'
invoice_status
Selection
compute='_compute_invoice_status'
help='Invoice Status; it can be: invoiced, to invoice, no'
readonly=True
selection=[('invoiced', 'Fully Invoiced'), ('to_invoice', 'To Invoice'), ('no', 'Nothing to Invoice')]
store=True
is_board_service
Boolean
help='Indicates if the service included in folio sale line is part of a board service'
related='service_id.is_board_service'
store=True
string='Board Service'
is_downpayment
Boolean
help='Down payments are made when creating invoices from a folio. They are not copied when duplicating a folio.'
string='Is a down payment'
name
Text
compute='_compute_name'
help='Description of folio sale line'
readonly=False
store=True
string='Description'
origin_agency_id
Many2one → res.partner
comodel_name='res.partner'
compute='_compute_origin_agency_id'
domain="[('is_agency', '=', True)]"
help='The agency where the folio sale line originates'
index=True
readonly=False
store=True
string='Origin Agency'
pms_property_id
Many2one → pms.property
check_pms_properties=True
comodel_name='pms.property'
help='Property with access to the element;'
index=True
readonly=True
related='folio_id.pms_property_id'
store=True
string='Property'
price_reduce
Float
compute='_compute_get_price_reduce'
digits='Product Price'
help='Reduced price amount, that is, total price with discounts applied'
readonly=True
store=True
price_reduce_taxexcl
Monetary
compute='_compute_get_price_reduce_notax'
help='Price with discounts applied without taxes'
readonly=True
store=True
string='Price Reduce Tax excluded'
price_reduce_taxinc
Monetary
compute='_compute_get_price_reduce_tax'
help='Price with discounts applied and taxes included'
readonly=True
store=True
string='Price Reduce Tax included'
price_subtotal
Monetary
compute='_compute_amount'
help='Subtotal price without taxes'
readonly=True
store=True
string='Subtotal'
price_tax
Float
compute='_compute_amount'
help='Total of taxes in a reservation'
readonly=True
store=True
string='Total Tax'
price_total
Monetary
compute='_compute_amount'
help='Total price with taxes'
readonly=True
store=True
string='Total'
price_unit
Float
digits='Product Price'
help='Unit Price of folio sale line'
product_id
Many2one → product.product
change_default=True
check_company=True
comodel_name='product.product'
compute='_compute_product_id'
domain="[('sale_ok', '=', True), ('is_pms_available', '=', True), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help="Product associated with folio sale line, can be product associated with service or product associated withreservation's room type, in other case it's false"
index=True
ondelete='restrict'
store=True
string='Product'
product_uom
Many2one → uom.uom
comodel_name='uom.uom'
domain="[('category_id', '=', product_uom_category_id)]"
help=''
index=True
string='Unit of Measure'
product_uom_category_id
Many2one
help=''
readonly=True
related='product_id.uom_id.category_id'
string='Unit of Measure Category'
product_uom_qty
Float
compute='_compute_product_uom_qty'
digits='Product Unit of Measure'
help=''
readonly=False
store=True
string='Quantity'
product_uom_readonly
Boolean
compute='_compute_product_uom_readonly'
help=''
string=''
qty_invoiced
Float
compute='_compute_get_invoice_qty'
compute_sudo=True
digits='Product Unit of Measure'
help='It is the amount invoiced when an invoice is issued'
readonly=True
store=True
string='Invoiced Quantity'
qty_to_invoice
Float
compute='_compute_get_to_invoice_qty'
digits='Product Unit of Measure'
help='The quantity to invoice. If the invoice policy is order, the quantity to invoice is calculated from the ordered quantity. Otherwise, the quantity delivered is used.'
readonly=True
store=True
string='To Invoice Quantity'
reservation_id
Many2one → pms.reservation
comodel_name='pms.reservation'
copy=False
help='Reservation to which folio sale line belongs'
index=True
ondelete='cascade'
string='Reservation Reference'
reservation_line_ids
Many2many → pms.reservation.line
comodel_name='pms.reservation.line'
help='Reservation lines associated with folio sale line, they corresponds with nights'
string='Nights'
reservation_order
Integer
compute='_compute_reservation_order'
help='Field to order by reservation id'
readonly=True
store=True
string='Reservation Id'
section_id
Many2one → folio.sale.line
comodel_name='folio.sale.line'
compute='_compute_section_id'
help='The section of the folio sale line'
index=True
string='Section'
sequence
Integer
default=10
service_id
Many2one → pms.service
comodel_name='pms.service'
copy=False
help='Sevice included in folio sale line'
index=True
ondelete='cascade'
string='Service Reference'
service_line_ids
Many2many → pms.service.line
comodel_name='pms.service.line'
help='Subservices included in folio sale line service'
string='Service Lines'
service_order
Integer
compute='_compute_service_order'
help='Field to order by service id'
readonly=True
store=True
string='Service Id'
state
Selection
copy=False
help='The status of the folio related with folio sale line'
readonly=True
related='folio_id.state'
store=True
string='Folio Status'
tax_ids
Many2many → account.tax
comodel_name='account.tax'
compute='_compute_tax_ids'
domain=['|', ('active', '=', False), ('active', '=', True)]
help='Taxes applied in the folio sale line'
store=True
string='Taxes'
untaxed_amount_invoiced
Monetary
compute='_compute_untaxed_amount_invoiced'
compute_sudo=True
help='The amount to invoice without taxes in the line of folio'
store=True
string='Untaxed Invoiced Amount'
untaxed_amount_to_invoice
Monetary
compute='_compute_untaxed_amount_to_invoice'
compute_sudo=True
help='The invoiced amount without taxes in the line of the folio'
store=True
generate_folio_sale_name(self, reservation_id, product_id, service_id, reservation_line_ids, service_line_ids, qty=False)
name_get(self)
unlink(self)
write(self, values)
No new fields.
Public methods (2)check_value(self)
unlink(self)
No new fields.
Public methods (1)session_info(self)
field_id
Many2one → ir.model.fields
comodel_name='ir.model.fields'
index=True
string='Field'
field_name
Char
compute='_compute_field_name'
readonly=False
store=True
model_id
Many2one → ir.model
comodel_name='ir.model'
index=True
string='Model'
model_name
Char
compute='_compute_model_name'
readonly=False
store=True
pms_property_id
Many2one → pms.property
comodel_name='pms.property'
help=''
index=True
string='Properties'
record
Integer
string='Record Id'
value_float
Float
string='Float Field Value'
value_integer
Integer
string='Integer Field Value'
value_reference
Text
string='Reference Field Value'
create(self, vals_list)
get_field_value(self, pms_property_id, model_name, field_name, record_id, value_type)
set_field_value(self, pms_property_id, model_name, field_name, record_id, value)
No new fields.
Public methods (1)send_mail(self, auto_commit=False)
No new fields.
Public methods (0)No public methods.
pms_property_ids
Many2many → pms.property
check_pms_properties=True
column1='acquirer_id'
column2='property_id'
comodel_name='pms.property'
help='Properties with access to the element; if not set, all properties can access'
relation='pms_acquirer_property_rel'
required=False
string='Properties'
No public methods.
folio_ids
Many2many → pms.folio
column1='payment_transaction_id'
column2='folio_id'
comodel_name='pms.folio'
ondelete='cascade'
relation='payment_transaction_folio_rel'
string='Folios'
folio_ids_nbr
Integer
compute='_compute_folio_ids_nbr'
string='# of Folios'
action_view_folios(self)
render_folio_button(self, folio, submit_txt=None, render_values=None, custom_amount=None)
pms_domain
Char
string='Domain'
pms_model_id
Many2one → ir.model
comodel_name='ir.model'
default=<expr>
domain=[('model', 'in', PMS_BUSINESS_MODELS)]
ondelete='cascade'
required=True
string='Recipients Model'
pms_model_name
Char
readonly=True
related='pms_model_id.model'
related_sudo=True
string='Recipients Model Name'
action_filter(self)
active
Boolean
default=True
help='Determines if amenity is active'
default_code
Char
help='Internal unique identifier of the amenity'
string='Internal Reference'
is_add_code_room_name
Boolean
help='True if the Internal Reference should appear in the display name of the rooms'
string='Add in room name'
name
Char
help='Amenity Name'
required=True
string='Amenity Name'
translate=True
pms_amenity_type_id
Many2one → pms.amenity.type
check_pms_properties=True
comodel_name='pms.amenity.type'
help='Segment the amenities by categories (multimedia, comfort, etc ...)'
index=True
string='Amenity Category'
pms_property_ids
Many2many → pms.property
check_pms_properties=True
column1='amenity_id'
column2='pms_property_id'
comodel_name='pms.property'
help='Properties with access to the element; if not set, all properties can access'
ondelete='restrict'
relation='pms_amenity_pms_property_rel'
string='Properties'
No public methods.
active
Boolean
default=True
help='Determines if amenity type is active'
name
Char
help='Amenity Type Name'
required=True
string='Amenity Type Name'
translate=True
pms_amenity_ids
One2many → pms.amenity
check_pms_properties=True
comodel_name='pms.amenity'
help='Amenities included in this type'
inverse_name='pms_amenity_type_id'
string='Amenities In This Category'
pms_property_ids
Many2many → pms.property
check_pms_properties=True
column1='amenity_type_id'
column2='pms_property_id'
comodel_name='pms.property'
help='Properties with access to the element; if not set, all properties can access'
ondelete='restrict'
relation='pms_amenity_type_pms_property_rel'
string='Properties'
No public methods.
name
Char
help='Name of the automated mail.'
required=True
No public methods.
avail_rule_ids
One2many → pms.availability.plan.rule
check_pms_properties=True
comodel_name='pms.availability.plan.rule'
inverse_name='avail_id'
string='Avail record rules'
child_avail_ids
One2many → pms.availability
check_pms_properties=True
comodel_name='pms.availability'
compute='_compute_child_avail_ids'
help='Child availabilities for this availability'
inverse_name='parent_avail_id'
store=True
string='Child Avails'
date
Date
help='Date for which availability applies'
readonly=True
required=True
parent_avail_id
Many2one → pms.availability
check_pms_properties=True
comodel_name='pms.availability'
compute='_compute_parent_avail_id'
help='Parent availability for this availability'
index=True
ondelete='restrict'
store=True
string='Parent Avail'
pms_property_id
Many2one → pms.property
check_pms_properties=True
comodel_name='pms.property'
help='Property to which the availability is directed'
index=True
ondelete='restrict'
readonly=True
required=True
string='Property'
real_avail
Integer
compute='_compute_real_avail'
readonly=True
store=True
reservation_line_ids
One2many → pms.reservation.line
check_pms_properties=True
comodel_name='pms.reservation.line'
help='They are the lines of the reservation into a reservation,they corresponds to the nights'
inverse_name='avail_id'
readonly=True
string='Reservation Lines'
room_type_id
Many2one → pms.room.type
check_pms_properties=True
comodel_name='pms.room.type'
help='Room type for which availability is indicated'
index=True
ondelete='cascade'
readonly=True
required=True
string='Room Type'
get_occupied_child_rooms(self, rooms, checkin, checkout)
get_occupied_parent_rooms(self, room, checkin, checkout)
get_rooms_not_avail(self, checkin, checkout, room_ids, pms_property_id, current_lines=False)
active
Boolean
default=True
help='If unchecked, it will allow you to hide the Availability plan without removing it.'
name
Char
help='Name of availability plan'
required=True
string='Availability Plan Name'
pms_pricelist_ids
One2many → product.pricelist
check_pms_properties=True
comodel_name='product.pricelist'
domain="[('is_pms_available', '=', True)]"
help='Pricelists of the availability plan '
inverse_name='availability_plan_id'
string='Pricelists'
pms_property_ids
Many2many → pms.property
check_pms_properties=True
column1='availability_plan_id'
column2='pms_property_id'
comodel_name='pms.property'
help='Properties with access to the element; if not set, all properties can access'
ondelete='restrict'
relation='pms_availability_plan_pms_property_rel'
string='Properties'
rule_ids
One2many → pms.availability.plan.rule
check_pms_properties=True
comodel_name='pms.availability.plan.rule'
help='Rules in a availability plan'
inverse_name='availability_plan_id'
string='Availability Rules'
any_rule_applies(cls, checkin, checkout, item)
open_massive_changes_wizard(self)
update_quota(self, pricelist_id, room_type_id, date, pms_property_id)
avail_id
Many2one → pms.availability
check_pms_properties=True
comodel_name='pms.availability'
compute='_compute_avail_id'
index=True
ondelete='restrict'
readonly=False
store=True
string='Avail record'
availability_plan_id
Many2one → pms.availability.plan
check_pms_properties=True
comodel_name='pms.availability.plan'
help='The availability plan that include the Availabilty Rule'
index=True
ondelete='cascade'
string='Availability Plan'
closed
Boolean
default=False
help='Indicate if property is closed or not'
closed_arrival
Boolean
default=False
closed_departure
Boolean
default=False
date
Date
help='Date for which availability rule applies'
max_avail
Integer
compute='_compute_max_avail'
help='Maximum simultaneous availability on own Booking Engine'
readonly=False
store=True
max_stay
Integer
default=0
help='Maximum stay'
string='Max. Stay'
max_stay_arrival
Integer
default=0
help='Maximum stay if checkin is today'
string='Max. Stay Arrival'
min_stay
Integer
default=0
help='Minimum stay'
string='Min. Stay'
min_stay_arrival
Integer
default=0
help='Minimum stay if checkin is today'
string='Min. Stay Arrival'
plan_avail
Integer
compute='_compute_plan_avail'
store='True'
pms_property_id
Many2one → pms.property
check_pms_properties=True
comodel_name='pms.property'
help='Properties with access to the element'
index=True
ondelete='restrict'
required=True
string='Property'
quota
Integer
compute='_compute_quota'
help='Generic Quota assigned.'
readonly=False
store=True
real_avail
Integer
related='avail_id.real_avail'
store='True'
string='Real availability'
room_type_id
Many2one → pms.room.type
check_pms_properties=True
comodel_name='pms.room.type'
help='Room type for which availability rule is applied'
index=True
ondelete='cascade'
required=True
string='Room Type'
No public methods.
active
Boolean
default=True
help='If unchecked, this board service will be archived and hidden from selections without affecting historical records that reference it.'
amount
Float
compute='_compute_board_amount'
digits='Product Price'
help='Price for this Board Service. It corresponds to the sum of his board service lines'
store=True
board_service_line_ids
One2many → pms.board.service.line
comodel_name='pms.board.service.line'
help='Services included in this Board Service'
inverse_name='pms_board_service_id'
string='Board Service Lines'
default_code
Char
help='Unique Board Service identification code per property'
required=True
string='Board Service Code'
name
Char
help='Board Service Name'
index=True
required=True
size=64
string='Board Service Name'
translate=True
pms_board_service_room_type_ids
One2many → pms.board.service.room.type
comodel_name='pms.board.service.room.type'
help='Board Services Room Type corresponding to this Board Service,One board service for several room types'
inverse_name='pms_board_service_id'
string='Board Services Room Type'
pms_property_ids
Many2many → pms.property
check_pms_properties=True
column1='board_service_id'
column2='pms_property_id'
comodel_name='pms.property'
help='Properties with access to the element; if not set, all properties can access'
ondelete='restrict'
relation='pms_board_service_pms_property_rel'
required=False
string='Properties'
show_detail_report
Boolean
help='True if you want that board service detail to be shown on the report'
get_unique_by_property_code(self, pms_property_id, default_code=None)
write(self, vals)
active
Boolean
default=True
help='Lines of an archived board service are archived as well.'
adults
Boolean
default=False
help='Apply service to adults'
amount
Float
default=<expr>
digits='Product Price'
help='Price for this Board Service Line/Product'
children
Boolean
default=False
help='Apply service to children'
pms_board_service_id
Many2one → pms.board.service
check_pms_properties=True
comodel_name='pms.board.service'
help='Board Service in which this line is included'
index=True
ondelete='cascade'
required=True
string='Board Service'
pms_property_ids
Many2many → pms.property
check_pms_properties=True
column1='pms_board_service_line_id'
column2='pms_property_id'
comodel_name='pms.property'
help='Properties with access to the element; if not set, all properties can access'
relation='pms_board_service_line_pms_property_rel'
store=True
string='Properties'
product_id
Many2one → product.product
check_pms_properties=True
comodel_name='product.product'
help='Product associated with this board service line'
index=True
required=True
string='Product'
create(self, vals_list)
onchange_product_id(self)
write(self, vals)
active
Boolean
default=True
help='If unchecked, this board service room type assignment will be archived and hidden from selections without affecting historical reservations that reference it.'
amount
Float
compute='_compute_board_amount'
digits='Product Price'
help='Price for this Board Service. It corresponds to the sum of his board service lines'
store=True
board_service_line_ids
One2many → pms.board.service.room.type.line
comodel_name='pms.board.service.room.type.line'
help='Services included in this Board Service'
inverse_name='pms_board_service_room_type_id'
required=True
string='Board Service Lines'
by_default
Boolean
help='Indicates if this board service is applied by default in the room type'
string='Apply by Default'
pms_board_service_id
Many2one → pms.board.service
check_pms_properties=True
comodel_name='pms.board.service'
help='Board Service corresponding to this Board Service Room Type'
index=True
ondelete='cascade'
required=True
string='Board Service'
pms_property_id
Many2one → pms.property
check_pms_properties=True
comodel_name='pms.property'
help='Property with access to the element; if not set, all property can access'
index=True
ondelete='restrict'
required=False
store=True
string='Property'
pms_room_type_id
Many2one → pms.room.type
check_pms_properties=True
comodel_name='pms.room.type'
help='Room Type for which this Board Service is available'
index=True
ondelete='cascade'
required=True
string='Room Type'
pricelist_ids
Many2many → product.pricelist
comodel_name='product.pricelist'
help='Pricelists where this Board Service is available'
string='Pricelists'
constrains_duplicated_board_default(self)
create(self, vals_list)
init(self)
name_get(self)
open_board_lines_form(self)
prepare_board_service_reservation_ids(self, board_service_id)
write(self, vals)
active
Boolean
default=True
help='Lines of an archived board service room type are archived as well.'
adults
Boolean
default=False
help='Apply service to adults'
amount
Float
default=<expr>
digits='Product Price'
help='Price for this Board Service Room Type Line/Product'
children
Boolean
default=False
help='Apply service to children'
pms_board_service_room_type_id
Many2one → pms.board.service.room.type
comodel_name='pms.board.service.room.type'
help='Board Service Room Type in which this line is included'
index=True
ondelete='cascade'
required=True
string='Board Service Room'
pms_property_id
Many2one → pms.property
check_pms_properties=True
comodel_name='pms.property'
help='Property with access to the element; if not set, all properties can access'
related='pms_board_service_room_type_id.pms_property_id'
string='Property'
product_id
Many2one → product.product
check_pms_properties=True
comodel_name='product.product'
domain="[('is_pms_available', '=', True)]"
help='Product associated with this board service room type line'
index=True
readonly=True
string='Product'
No public methods.
agency_id
Many2one → res.partner
comodel_name='res.partner'
domain=[('is_agency', '=', True)]
help='Agency that made the reservation'
ondelete='restrict'
string='Agency'
channel_type_id
Many2one → pms.sale.channel
comodel_name='pms.sale.channel'
compute='_compute_channel_type_id'
domain=[('channel_type', '=', 'direct')]
help='Sales Channel through which the reservation was managed'
ondelete='restrict'
readonly=False
store=True
string='Direct Sale Channel'
created_folio_ids
Many2many → pms.folio
comodel_name='pms.folio'
help='Folios already created'
string='Folios'
discount
Float
default=0
help='Discount that be applied in total price'
internal_comment
Text
help='Internal Folio notes for Staff'
string='Internal Folio Notes'
line_ids
One2many → pms.reservation.duplicate
check_pms_properties=True
comodel_name='pms.reservation.duplicate'
compute='_compute_line_ids'
help='Rooms to create'
inverse_name='booking_duplicate_id'
readonly=False
store=True
string='Rooms'
partner_id
Many2one → res.partner
check_pms_properties=True
comodel_name='res.partner'
compute='_compute_partner_id'
help='Partner who made the reservation'
readonly=False
store=True
string='Partner'
partner_name
Char
compute='_compute_partner_name'
help='In whose name is the reservation'
readonly=False
store=True
pms_property_id
Many2one → pms.property
check_pms_properties=True
comodel_name='pms.property'
help='Property to which the folio belongs'
related='reference_folio_id.pms_property_id'
string='Property'
pricelist_id
Many2one → product.pricelist
check_pms_properties=True
comodel_name='product.pricelist'
compute='_compute_pricelist_id'
domain="[('is_pms_available', '=', True)]"
help='Pricelist applied in folio'
readonly=False
store=True
string='Pricelist'
recompute_prices
Boolean
default=False
help='Leave unchecked if you want to respect\n the price of the original reservation regardless\n of what is marked in the rate'
string='Recompute Price'
reference_folio_id
Many2one → pms.folio
check_pms_properties=True
comodel_name='pms.folio'
help='Folio to copy data'
string='Folio Reference'
reservation_type
Selection
compute='_compute_reservation_type'
help="The type of the reservation. Can be 'Normal', 'Staff' or 'Out of Service'"
readonly=False
selection=[('normal', 'Normal'), ('staff', 'Staff'), ('out', 'Out of Service')]
store=True
string='Type'
segmentation_ids
Many2many → res.partner.category
comodel_name='res.partner.category'
compute='_compute_segmentation_ids'
domain="[('is_used_in_checkin', '=', True)]"
help='Partner Tags'
ondelete='restrict'
readonly=False
store=True
string='Segmentation'
start_date
Date
help='Date from first copy Checkin (reference min checkin folio reservation)'
required=True
string='From:'
total_price_folio
Float
compute='_compute_total_price_folio'
help='Total price of folio with taxes'
string='Total Price'
used_room_ids
Many2many → pms.room
comodel_name='pms.room'
compute='_compute_used_room_ids'
string='Used Rooms'
create_and_close(self)
create_and_new(self)
create_folio(self)
view_folios(self)
agency_id
Many2one → res.partner
comodel_name='res.partner'
domain=[('is_agency', '=', True)]
help='Agency that made the reservation'
ondelete='restrict'
string='Agency'
availability_results
One2many → pms.folio.availability.wizard
check_pms_properties=True
comodel_name='pms.folio.availability.wizard'
compute='_compute_availability_results'
help='Availability Results'
inverse_name='booking_engine_id'
readonly=False
store=True
can_create_folio
Boolean
compute='_compute_can_create_folio'
channel_type_id
Many2one → pms.sale.channel
comodel_name='pms.sale.channel'
compute='_compute_channel_type_id'
domain=[('channel_type', '=', 'direct')]
help='Sales Channel through which the reservation was managed'
ondelete='restrict'
readonly=False
required=True
store=True
string='Direct Sale Channel'
discount
Float
default=0
help='Discount that be applied in total price'
end_date
Date
help='End date for creation of reservations and folios'
required=True
string='To:'
folio_id
Many2one → pms.folio
check_pms_properties=True
comodel_name='pms.folio'
help='Folio in which are included new reservations'
string='Folio'
internal_comment
Text
help='Internal Folio notes for Staff'
string='Internal Folio Notes'
partner_id
Many2one → res.partner
check_pms_properties=True
comodel_name='res.partner'
compute='_compute_partner_id'
help='Partner who made the reservation'
readonly=False
store=True
string='Partner'
partner_name
Char
compute='_compute_partner_name'
help='In whose name is the reservation'
readonly=False
store=True
pms_property_id
Many2one → pms.property
check_pms_properties=True
comodel_name='pms.property'
default=<expr>
help='Property to which the folio belongs'
string='Property'
pricelist_id
Many2one → product.pricelist
check_pms_properties=True
comodel_name='product.pricelist'
compute='_compute_pricelist_id'
domain="[('is_pms_available', '=', True)]"
help='Pricelist applied in folio'
readonly=False
store=True
string='Pricelist'
reservation_type
Selection
default=<expr>
help="The type of the reservation. Can be 'Normal', 'Staff' or 'Out of Service'"
selection=[('normal', 'Normal'), ('staff', 'Staff'), ('out', 'Out of Service')]
string='Type'
segmentation_ids
Many2many → res.partner.category
comodel_name='res.partner.category'
domain="[('is_used_in_checkin', '=', True)]"
help='Partner Tags'
ondelete='restrict'
string='Segmentation'
start_date
Date
help='Start date for creation of reservations and folios'
required=True
string='From:'
total_price_folio
Float
compute='_compute_total_price_folio'
help='Total price of folio with taxes'
string='Total Price'
create_folio(self)
active
Boolean
default=True
help='Determines if cancelation rule is active'
apply_on_late
Selection
default='first'
help='Days on which the cancelation rule applies when the reason is late arrival. Can be first, all days or specify the days.'
selection=[('first', 'First Day'), ('all', 'All Days'), ('days', 'Specify days')]
string='Late apply on'
apply_on_noshow
Selection
default='all'
help='Days on which the cancelation rule applies when the reason is no show. Can be first, all days or specify the days.'
selection=[('first', 'First Day'), ('all', 'All Days'), ('days', 'Specify days')]
string='No Show apply on'
days_intime
Integer
help='Maximum number of days for free cancellation before Checkin'
string='Days Late'
days_late
Integer
default='2'
help='Is number of days late in the cancelation rule if the value of the apply_on_late field is specify days.'
string='Late first days'
days_noshow
Integer
default='2'
help='Is number of days no show in the cancelation rule if the value of the apply_on_show field is specify days.'
string='NoShow first days'
name
Char
required=True
string='Cancelation Rule'
translate=True
penalty_late
Integer
default='100'
help='Percentage of the total price that partner has to pay in case of late arrival'
string='% Penalty Late'
penalty_noshow
Integer
default='100'
help='Percentage of the total price that partner has to pay in case of no show'
string='% Penalty No Show'
pms_property_ids
Many2many → pms.property
check_pms_properties=True
column1='pms_cancelation_rule_id'
column2='pms_property_id'
comodel_name='pms.property'
help='Properties with access to the element; if not set, all properties can access'
ondelete='restrict'
relation='pms_cancelation_rule_pms_property_rel'
required=False
string='Properties'
pricelist_ids
One2many → product.pricelist
check_pms_properties=True
comodel_name='product.pricelist'
domain="[('is_pms_available', '=', True)]"
help='Pricelist that use this rule'
inverse_name='cancelation_rule_id'
string='Pricelist'
No public methods.
arrival
Datetime
help='Checkin partner arrival date and time'
args: 'Enter'
birthdate_date
Date
compute='_compute_birth_date'
help='host birthdate'
inverse=<expr>
readonly=False
store=True
string='Birthdate'
checkin
Date
depends=['reservation_id.checkin']
help='Checkin date'
related='reservation_id.checkin'
store=True
string='Check in'
checkout
Date
depends=['reservation_id.checkout']
help='Checkout date'
related='reservation_id.checkout'
store=True
string='Check out'
city
Char
compute='_compute_city'
help='City of the guest'
readonly=False
store=True
country_id
Many2one → res.country
comodel_name='res.country'
compute='_compute_country_id'
help='Country of the guest'
index=True
readonly=False
store=True
string='Country of residence'
departure
Datetime
help='Checkin partner departure date and time'
string='Exit'
email
Char
compute='_compute_email'
help='Checkin Partner Email'
inverse=<expr>
readonly=False
store=True
string='E-mail'
firstname
Char
compute='_compute_firstname'
help='host firstname'
inverse=<expr>
readonly=False
store=True
string='First Name'
folio_id
Many2one → pms.folio
comodel_name='pms.folio'
help='Folio to which reservation of checkin partner belongs'
index=True
related='reservation_id.folio_id'
store=True
string='Folio'
gender
Selection
compute='_compute_gender'
help='host gender'
inverse=<expr>
readonly=False
selection=[('male', 'Male'), ('female', 'Female'), ('other', 'Other')]
store=True
identifier
Char
default=<expr>
help='Checkin Partner Id'
index=True
readonly=True
image_128
Image
help='Checkin Partner Image, it corresponds with Partner Image associated'
related='partner_id.image_128'
string='Image'
lastname
Char
compute='_compute_lastname'
help='host lastname'
inverse=<expr>
readonly=False
store=True
string='Last Name'
mobile
Char
compute='_compute_mobile'
help='Checkin Partner Mobile'
inverse=<expr>
readonly=False
store=True
name
Char
compute='_compute_name'
help='Checkin partner name'
store=True
nationality_id
Many2one → res.country
comodel_name='res.country'
compute='_compute_nationality_id'
help='host nationality'
index=True
inverse=<expr>
readonly=False
store=True
string='Nationality'
partner_id
Many2one → res.partner
comodel_name='res.partner'
domain="[('is_company', '=', False)]"
help='Partner associated with checkin partner'
index=True
string='Partner'
partner_incongruences
Char
compute='_compute_partner_incongruences'
help='indicates that some partner fields on the checkin do not correspond to that of the associated partner'
partner_relationship
Char
help='Family relationship between travelers'
phone
Char
compute='_compute_phone'
help='Checkin Partner Phone'
inverse=<expr>
readonly=False
store=True
pms_property_id
Many2one → pms.property
comodel_name='pms.property'
help='Property to which the folio associated belongs'
index=True
readonly=True
related='reservation_id.pms_property_id'
store=True
string='Property'
possible_existing_customer_ids
One2many → res.partner
comodel_name='res.partner'
compute='_compute_possible_existing_customer_ids'
string='Possible existing customer'
reservation_id
Many2one → pms.reservation
comodel_name='pms.reservation'
help='Reservation to which checkin partners belong'
index=True
string='Reservation'
segmentation_ids
Many2many
domain="[('is_used_in_checkin', '=', True)]"
help='Segmentation tags to classify checkin partners'
readonly=True
related='reservation_id.segmentation_ids'
string='Segmentation'
sign_on
Datetime
compute='_compute_sign_on'
help='Date and time of the signature'
signature
Image
help='Signature of the guest'
state
Selection
compute='_compute_state'
help='Status of the checkin partner regarding the reservation'
readonly=True
selection=[('dummy', 'Unkown Guest'), ('draft', 'Incomplete data'), ('precheckin', 'Pending arrival'), ('onboard', 'On Board'), ('done', 'Out'), ('cancel', 'Cancelled')]
store=True
string='Status'
state_id
Many2one → res.country.state
comodel_name='res.country.state'
compute='_compute_state_id'
help='State of the guest'
index=True
readonly=False
store=True
string='State of residence'
street
Char
compute='_compute_street'
help='Street of the guest'
readonly=False
store=True
street2
Char
compute='_compute_street2'
help='Second street of the guest'
readonly=False
store=True
zip
Char
change_default=True
compute='_compute_zip'
help='Zip of the guest'
readonly=False
store=True
action_done(self)
action_on_board(self)
action_undo_onboard(self)
create(self, vals_list)
import_room_list_json(self, roomlist_json)
open_partner(self)
open_wizard_several_partners(self)
send_exit_email(self, template_id)
send_portal_invitation_email(self, invitation_firstname=None, email=None)
set_partner_address(self, residence_vals=None)
set_partner_id(self)
unlink(self)
write(self, vals)
administrative_user_id
Many2one → res.users
comodel_name='res.users'
compute='_compute_administrative_user_id'
help='The administrative manager in the folio'
index=True
ondelete='restrict'
readonly=False
store=True
string='Administrative Manager'
tracking=True
agency_id
Many2one → res.partner
check_pms_properties=True
comodel_name='res.partner'
domain=[('is_agency', '=', True)]
help='Only allowed if the field of partner is_agency is True'
index=True
ondelete='restrict'
string='Agency'
amount_tax
Monetary
compute='_compute_amount_all'
help='Price with taxes on a folio'
readonly=True
store=True
string='Taxes'
amount_total
Monetary
compute='_compute_amount_all'
help='Total amount to be paid'
readonly=True
store=True
string='Total'
tracking=True
amount_untaxed
Monetary
compute='_compute_amount_all'
help='The price without taxes on a folio'
readonly=True
store=True
string='Untaxed Amount'
tracking=True
analytic_account_id
Many2one → account.analytic.account
comodel_name='account.analytic.account'
copy=False
help='The analytic account related to a folio.'
index=True
readonly=True
states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}
string='Analytic Account'
cancelled_reason
Text
help='Indicates cause of cancelled'
string='Cause of cancelled'
checkin_partner_ids
One2many → pms.checkin.partner
comodel_name='pms.checkin.partner'
help='The checkin partners on a folio'
inverse_name='folio_id'
string='Checkin Partners'
closure_reason_id
Many2one → room.closure.reason
check_pms_properties=True
comodel_name='room.closure.reason'
help='The closure reason for a closure room'
index=True
string='Closure Reason'
commission
Monetary
compute='_compute_commission'
readonly=True
store=True
company_id
Many2one → res.company
comodel_name='res.company'
compute='_compute_company_id'
help='The company for folio'
index=True
store=True
string='Company'
confirmation_date
Datetime
copy=False
help='Date on which the folio is confirmed.'
index=True
readonly=True
count_rooms_pending_arrival
Integer
compute='_compute_count_rooms_pending_arrival'
help='The number of rooms left to occupy.'
store=True
string='Pending Arrival'
credit_card_details
Text
help='Details of partner credit card'
currency_id
Many2one
depends=['pricelist_id']
ondelete='restrict'
related='pricelist_id.currency_id'
store=True
date_order
Datetime
copy=False
default=fields.Datetime.now
help='Date on which folio is sold'
index=True
readonly=True
required=True
states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}
days_to_checkin
Integer
compute='_compute_days_to_checkin'
help='Technical field to facilitate\n filtering by dates related to checkin'
search='_search_days_to_checkin'
days_to_checkout
Integer
compute='_compute_days_to_checkout'
help='Technical field to facilitate\n filtering by dates related to checkout'
search='_search_days_to_checkout'
email
Char
compute='_compute_email'
help='Customer E-mail'
readonly=False
store=True
string='E-mail'
external_reference
Char
compute='_compute_external_reference'
help='Reference of this folio in an external system'
readonly=False
store=True
first_checkin
Date
compute='_compute_first_checkin'
readonly=False
store=True
string='First Folio Checkin'
fiscal_position_id
Many2one → account.fiscal.position
comodel_name='account.fiscal.position'
compute='_compute_fiscal_position_id'
domain="[('company_id', '=', company_id)]"
help='The fiscal position depends on the location of the client'
index=True
readonly=False
store=True
string='Fiscal Position'
force_nothing_to_invoice
Boolean
compute='_compute_force_nothing_to_invoice'
copy=False
help='When you set this field, the folio will be considered as nothin to invoice, even when there may be ordered quantities pending to invoice.'
readonly=False
store=True
string='Force no invoice'
internal_comment
Text
help='Internal Folio notes for Staff'
string='Internal Folio Notes'
invoice_count
Integer
compute='_compute_get_invoiced'
help='The amount of invoices in out invoice and out refund status'
readonly=True
invoice_status
Selection
compute='_compute_get_invoice_status'
compute_sudo=True
default='no'
help='Invoice Status; it can be: invoiced, to invoice, to confirm, no'
readonly=True
selection=[('invoiced', 'Fully Invoiced'), ('to_invoice', 'To Invoice'), ('to_confirm', 'To Confirm'), ('no', 'Nothing to Invoice')]
store=True
invoice_to_agency
Boolean
compute='_compute_invoice_to_agengy'
help='Indicates if agency invoices partner\n (it only affects those nights/services sold through the agency)'
readonly=False
store=True
string='Invoice Agency'
invoices_paid
Monetary
compute='_compute_amount'
help='Amount of invoices paid'
store=True
string='Paid Out'
tracking=True
lang
Selection
compute='_compute_lang'
help='Language used for the folio'
readonly=False
selection=<expr>
store=True
string='Language'
last_checkout
Date
compute='_compute_last_checkout'
readonly=False
store=True
string='Last Folio Checkout'
manager_user_id
Many2one → res.users
comodel_name='res.users'
compute='_compute_manager_user_id'
help='The main manager in the folio'
index=True
ondelete='restrict'
readonly=False
store=True
string='Main Manager'
tracking=True
mobile
Char
compute='_compute_mobile'
help='Customer Mobile'
readonly=False
store=True
move_ids
Many2many → account.move
comodel_name='account.move'
compute='_compute_get_invoiced'
copy=False
help='Folio invoices related to account move.'
readonly=True
search='_search_invoice_ids'
string='Invoices'
name
Char
default=<expr>
help='Folio name. When creating a folio the name is automatically formed with a sequence'
index=True
readonly=True
string='Folio Number'
note
Text
default=<expr>
help='Folio billing terms and conditions'
string='Terms and conditions'
number_of_cancelled_rooms
Integer
compute='_compute_number_of_cancelled_rooms'
help='Number of cancelled rooms in folio.'
store='True'
number_of_rooms
Integer
compute='_compute_number_of_rooms'
help='Number of rooms in folio. Canceled rooms do not count.'
store='True'
number_of_services
Integer
compute='_compute_number_of_services'
help='Number of services in the folio'
store='True'
out_service_description
Text
help='Indicates the cause of out of service'
string='Cause of out of service'
partner_id
Many2one → res.partner
check_pms_properties=True
comodel_name='res.partner'
compute='_compute_partner_id'
help='The folio customer'
index=True
ondelete='restrict'
readonly=False
store=True
string='Partner'
tracking=True
partner_incongruences
Char
compute='_compute_partner_incongruences'
help='indicates that some partner fields on the folio do not correspond to that of the associated partner'
partner_internal_comment
Text
help='Internal notes of the partner'
readonly=False
related='partner_id.comment'
store=True
string='Internal Partner Notes'
partner_invoice_ids
Many2many → res.partner
check_pms_properties=True
column1='folio'
column2='partner'
comodel_name='res.partner'
compute='_compute_partner_invoice_ids'
help='Invoice address for current group.'
readonly=False
relation='pms_folio_partner_rel'
store=True
string='Billing addresses'
partner_name
Char
compute='_compute_partner_name'
help='In the name of whom the reservation is made'
readonly=False
store=True
string='Customer Name'
payment_ids
Many2many → account.payment
column1='folio_id'
column2='payment_id'
comodel_name='account.payment'
copy=False
help='Payments'
readonly=True
relation='account_payment_folio_rel'
string='Bank Payments'
payment_multi
Boolean
compute='_compute_amount'
help='Technical field for manage payments with multiple folios assigned'
readonly=True
store=True
string='Folio paid with payments assigned to other folios'
payment_state
Selection
compute='_compute_amount'
copy=False
help='The state of the payment'
readonly=True
selection=[('not_paid', 'Not Paid'), ('paid', 'Paid'), ('partial', 'Partially Paid'), ('overpayment', 'Overpayment'), ('nothing_to_pay', 'Nothing to pay')]
store=True
string='Payment Status'
tracking=True
payment_term_id
Many2one → account.payment.term
comodel_name='account.payment.term'
compute='_compute_payment_term_id'
help='Payment terms for current folio.'
index=True
ondelete='restrict'
readonly=False
store=True
string='Payment Terms'
pending_amount
Monetary
compute='_compute_amount'
help='The amount that remains to be paid'
store=True
pending_checkin_data
Integer
compute='_compute_pending_checkin_data'
store=True
string='Checkin Data'
pms_property_id
Many2one → pms.property
check_pms_properties=True
comodel_name='pms.property'
help='The property for folios'
index=True
required=True
string='Property'
possible_existing_customer_ids
One2many → res.partner
comodel_name='res.partner'
compute='_compute_possible_existing_customer_ids'
string='Possible existing customer'
prepaid_warning_days
Integer
help='Margin in days to create a notice if a payment advance has not been recorded'
pricelist_id
Many2one → product.pricelist
check_pms_properties=True
comodel_name='product.pricelist'
compute='_compute_pricelist_id'
help='Pricelist for current folio.'
index=True
ondelete='restrict'
readonly=False
store=True
string='Pricelist'
ratio_checkin_data
Integer
compute='_compute_ratio_checkin_data'
help='Field that stores the number of checkin partners pending to checkin (with the state = draft)'
string='Pending Checkin Data'
reference
Char
copy=False
help='The payment communication of this sale order.'
string='Payment Ref.'
reservation_ids
One2many → pms.reservation
check_company=True
check_pms_properties=True
comodel_name='pms.reservation'
help='Room reservation detail'
inverse_name='folio_id'
readonly=False
states={'done': [('readonly', True)]}
string='Reservations'
reservation_type
Selection
default=<expr>
help="The type of the reservation. Can be 'Normal', 'Staff' or 'Out of Service'"
selection=[('normal', 'Normal'), ('staff', 'Staff'), ('out', 'Out of Service')]
string='Type'
revenue_user_id
Many2one → res.users
comodel_name='res.users'
compute='_compute_revenue_user_id'
help='The revenue manager in the folio'
index=True
ondelete='restrict'
readonly=False
store=True
string='Revenue Manager'
tracking=True
sale_channel_ids
Many2many → pms.sale.channel
comodel_name='pms.sale.channel'
compute='_compute_sale_channel_ids'
help='Sale Channels through which reservations were managed'
store=True
string='Sale Channels'
sale_channel_origin_id
Many2one → pms.sale.channel
comodel_name='pms.sale.channel'
help='Sale Channel through which folio was created, the original'
index=True
string='Sale Channel Origin'
sale_line_ids
One2many → folio.sale.line
comodel_name='folio.sale.line'
compute='_compute_sale_line_ids'
compute_sudo=True
help='Sale lines in folio. It correspond with reservation nights'
inverse_name='folio_id'
store='True'
string='Sale lines'
segmentation_ids
Many2many → res.partner.category
comodel_name='res.partner.category'
domain="[('is_used_in_checkin', '=', True)]"
help='Segmentation tags to classify folios'
ondelete='restrict'
string='Segmentation'
sequence
Integer
default=10
help='Sequence used to form the name of the folio'
service_ids
One2many → pms.service
check_company=True
check_pms_properties=True
comodel_name='pms.service'
help='Services detail provide to customer and it will include in main Invoice.'
inverse_name='folio_id'
readonly=False
states={'done': [('readonly', True)]}
string='Services'
state
Selection
copy=False
default='draft'
help='Folio status; it can be Quotation, Quotation Sent, Confirmed, Locked or Cancelled'
index=True
readonly=True
selection=[('draft', 'Quotation'), ('sent', 'Quotation Sent'), ('confirm', 'Confirmed'), ('done', 'Locked'), ('cancel', 'Cancelled')]
string='Status'
tracking=True
statement_line_ids
Many2many → account.bank.statement.line
column1='folio_id'
column2='account_journal_id'
comodel_name='account.bank.statement.line'
copy=False
help='Statement lines'
readonly=True
relation='account_bank_statement_folio_rel'
string='Cash Payments'
transaction_ids
Many2many → payment.transaction
column1='folio_id'
column2='payment_transaction_id'
comodel_name='payment.transaction'
copy=False
help='Payments made through payment acquirer'
readonly=True
relation='payment_transaction_folio_rel'
string='Transactions'
untaxed_amount_to_invoice
Monetary
compute='_compute_untaxed_amount_to_invoice'
help='The amount to invoice'
readonly=True
store=True
string='Amount to invoice'
user_id
Many2one → res.users
comodel_name='res.users'
compute='_compute_user_id'
help='The reception manager in the folio'
index=True
ondelete='restrict'
readonly=False
store=True
string='Reception Manager'
tracking=True
action_cancel(self)
action_checks(self)
action_confirm(self)
action_done(self)
action_open_cancelation_mail_composer(self)
action_open_confirmation_mail_composer(self)
action_open_exit_mail_composer(self)
action_open_mail_composer(self, ctx, res_id=False, res_ids=False)
action_open_modification_mail_composer(self)
action_pay(self)
action_to_arrive(self)
action_view_invoice(self)
concat_discounts(self, discount, cancel_discount)
create(self, vals_list)
do_payment(self, payment_method_line, user, amount, folio, reservations=False, services=False, partner=False, date=False, pay_type=False, ref=False)
do_refund(self, journal, receivable_account, user, amount, folio, reservations=False, services=False, partner=False, date=False, pay_type=False, ref=False)
folio_multi_changes(self)
get_invoice_vals_list(self, final=False, lines_to_invoice=False, partner_invoice_id=False)
get_reservation_notes(self, reservation)
get_reservations_to_update_channel(self, vals)
get_services_to_update_channel(self, vals)
name_get(self)
open_moves_folio(self)
open_partner(self)
open_wizard_several_partners(self)
preview_folio(self)
write(self, vals)
board_service_room_id
Many2one → pms.board.service.room.type
check_pms_properties=True
comodel_name='pms.board.service.room.type'
domain="\n [\n ('pms_room_type_id','=',room_type_id),\n ('pms_property_id','=',pms_property_id)\n ]\n "
help='Board Service included in the room'
string='Board Service'
booking_engine_id
Many2one → pms.booking.engine
comodel_name='pms.booking.engine'
string='Folio Wizard ID'
checkin
Date
help='Date Reservation starts '
required=True
string='From:'
checkout
Date
help='Date Reservation ends'
required=True
string='To:'
pms_property_id
Many2one
help='Propertiy with access to the element;'
related='booking_engine_id.pms_property_id'
string='Property'
price_per_room
Float
compute='_compute_price_per_room'
help='Price per room in folio'
string='Price per room'
price_total
Float
compute='_compute_price_total'
help='The total price in the folio'
string='Total price'
room_type_id
Many2one → pms.room.type
check_pms_properties=True
comodel_name='pms.room.type'
help='Room Type reserved'
string='Room Type'
rooms_available_qty
Integer
compute='_compute_rooms_available_qty'
help='Number of rooms that are available'
store=True
string='Available rooms'
rooms_selected_qty
Integer
string='Number of Rooms Selected'
onchange_rooms_selected_qty(self)
allowed_board_services
Many2many → product.product
comodel_name='product.product'
compute='_compute_allowed_board_services'
readonly=False
store=True
string='Allowed services'
allowed_pricelist_ids
One2many → product.pricelist
comodel_name='product.pricelist'
compute='_compute_allowed_pricelist_ids'
string='Allowed pricelists'
apply_closed
Boolean
default=False
string='Apply changes to Closed'
apply_closed_arrival
Boolean
default=False
string='Apply changes to Closed Arrival'
apply_closed_departure
Boolean
default=False
string='Apply changes to Closed Departure'
apply_max_avail
Boolean
default=False
string='Apply changes to Max. Avail.'
apply_max_stay
Boolean
default=False
string='Apply changes to Max. Stay'
apply_max_stay_arrival
Boolean
default=False
string='Apply changes to Max. Stay Arrival'
apply_min_stay
Boolean
default=False
string='Apply changes to Min. Stay'
apply_min_stay_arrival
Boolean
default=False
string='Apply changes to Min. Stay Arrival'
apply_on_all_week
Boolean
default=True
string='Apply Availability Rule for the whole week'
apply_on_friday
Boolean
default=False
string='Apply Availability Rule on fridays'
apply_on_monday
Boolean
default=False
string='Apply Availability Rule on mondays'
apply_on_saturday
Boolean
default=False
string='Apply Availability Rule on saturdays'
apply_on_sunday
Boolean
default=False
string='Apply Availability Rule on sundays'
apply_on_thursday
Boolean
default=False
string='Apply Availability Rule on thursdays'
apply_on_tuesday
Boolean
default=False
string='Apply Availability Rule on tuesdays'
apply_on_wednesday
Boolean
default=False
string='Apply Availability Rule on wednesdays'
apply_pricelists_on
Selection
default='room_types'
selection=[('room_types', 'Room Types'), ('board_services', 'Board Services'), ('service', 'Service')]
apply_quota
Boolean
default=False
string='Apply changes to Quota'
avail_readonly
Boolean
default=<expr>
string='Avialability Readonly'
availability_plan_ids
Many2many → pms.availability.plan
check_pms_properties=True
comodel_name='pms.availability.plan'
string='Availability Plan to apply massive changes'
board_service
Many2one → product.product
check_pms_properties=True
comodel_name='product.product'
domain="[('id', 'in',allowed_board_services)]"
board_service_room_type_ids
Many2many → pms.board.service.room.type
check_pms_properties=True
comodel_name='pms.board.service.room.type'
compute='_compute_board_service_room_type_ids'
readonly=False
store=True
string="Room type's board services"
closed
Boolean
default=False
closed_arrival
Boolean
default=False
closed_departure
Boolean
default=False
date_types
Selection
default='consumption_dates'
selection=[('sale_dates', 'Sale Dates'), ('consumption_dates', 'Consumption Dates')]
string='Date types'
end_date
Date
required=True
string='To'
massive_changes_on
Selection
default=<expr>
required=True
selection=[('pricelist', 'Pricelist'), ('availability_plan', 'Availability Plan')]
string='On'
max_avail
Integer
default=-1
help='Maximum simultaneous availability on own Booking Engine.'
string='Max. Availability'
max_stay
Integer
default=0
string='Max. Stay'
max_stay_arrival
Integer
default=0
string='Max. Stay Arrival'
min_quantity
Float
string='Min. Quantity'
min_stay
Integer
default=0
string='Min. Stay'
min_stay_arrival
Integer
default=0
string='Min. Stay Arrival'
num_pricelist_items_to_overwrite
Integer
compute='_compute_num_pricelist_items_to_overwrite'
readonly=True
store=False
string='Pricelist items to overwrite on massive changes'
num_rules_to_overwrite
Integer
compute='_compute_num_rules_to_overwrite'
readonly=True
store=False
string='Rules to overwrite on massive changes'
pms_property_ids
Many2many → pms.property
check_pms_properties=True
comodel_name='pms.property'
required=True
string='Property'
price
Float
pricelist_ids
Many2many → product.pricelist
check_pms_properties=True
comodel_name='product.pricelist'
string='Pricelist to apply massive changes'
pricelist_items_to_overwrite
One2many → product.pricelist.item
comodel_name='product.pricelist.item'
compute='_compute_pricelist_items_to_overwrite'
readonly=True
store=False
pricelist_readonly
Boolean
default=<expr>
quota
Integer
default=-1
help='Generic Quota assigned.'
room_type_ids
Many2many → pms.room.type
check_pms_properties=True
comodel_name='pms.room.type'
compute='_compute_room_type_ids'
readonly=False
store=True
string='Room Type'
rules_to_overwrite
One2many → pms.availability.plan.rule
comodel_name='pms.availability.plan.rule'
compute='_compute_rules_to_overwrite'
readonly=True
store=False
service
Many2one → product.product
check_pms_properties=True
comodel_name='product.product'
compute='_compute_service'
readonly=False
store=True
start_date
Date
required=True
string='From'
apply_massive_changes(self)
continue_massive_changes(self)
create_availability_plans_rules(self, room_types, availability_plan_ids, min_stay, apply_min_stay, min_stay_arrival, apply_min_stay_arrival, max_stay, apply_max_stay, max_stay_arrival, apply_max_stay_arrival, quota, apply_quota, max_avail, apply_max_avail, closed, apply_closed, closed_arrival, apply_closed_arrival, closed_departure, apply_closed_departure, date, rules_to_overwrite, pms_property)
create_pricelists_items_board_services(self, board_service_room_type_ids, pricelist_ids, board_service, price, min_quantity, pms_property, date_types, date)
create_pricelists_items_room_types(self, room_types, pricelist_ids, price, min_quantity, pms_property, date, date_types)
generate_dates_vals(self, date_types, vals, date)
generate_product_ids_to_filter(self, apply_pricelists_on, room_type_ids, board_service_room_type_ids, board_service, service)
save_and_close(self)
analytic_account_id
Many2one → account.analytic.account
comodel_name='account.analytic.account'
copy=False
readonly=True
availability
Integer
compute='_compute_availability'
help='allows you to send different parameters in the context (checkin(required), checkout(required), room_type_id, ubication_id, capacity,amenity_ids and / or pricelist_id) check the availability for the hotel'
string='Number of rooms available'
avoid_simplified_max_amount_downpayment
Boolean
default=True
help='Avoid simplified invoice max amount downpayment'
string='Downpayment Invoive without limit amount'
block_create_past_reservations
Boolean
default=False
help='Block the creation of reservations in the past'
block_modify_past_out_service
Boolean
default=False
help='Block deletion or cancellation of out-of-service reservations with dates already in the past'
cardex_warning
Text
default="Time to access rooms: 14: 00h. Departure time: 12: 00h. If the accommodation is not left at that time, the establishment will charge a day's stay according to current rate that day"
help="Notice under the signature on the traveler's ticket."
string='Warning in Cardex'
checkin_sequence_id
Many2one → ir.sequence
check_company=True
comodel_name='ir.sequence'
copy=False
help='Field used to create the name of the checkin partner'
index=True
string='Checkin Sequence'
child_ids
One2many → pms.property
comodel_name='pms.property'
inverse_name='parent_id'
string='Child Properties'
company_id
Many2one → res.company
comodel_name='res.company'
help='The company that owns or operates this property.'
index=True
required=True
string='Company'
default_arrival_hour
Char
default='14:00'
help='HH:mm Format'
string='Arrival Hour'
default_departure_hour
Char
default='12:00'
help='HH:mm Format'
string='Departure Hour'
default_pricelist_id
Many2one → product.pricelist
comodel_name='product.pricelist'
default=<expr>
domain="[('is_pms_available', '=', True)]"
help='The default pricelist used in this property.'
index=True
required=True
string='Product Pricelist'
folio_sequence_id
Many2one → ir.sequence
check_company=True
comodel_name='ir.sequence'
copy=False
help='The sequence that formed the name of the folio.'
index=True
string='Folio Sequence'
free_room_ids
One2many → pms.room
comodel_name='pms.room'
compute='_compute_free_room_ids'
help='allows you to send different parameters in the context (checkin(required), checkout(required), room_type_id, ubication_id, capacity, amenity_ids and / or pricelist_id) and return rooms available'
string='Rooms available'
invoice_reservation_note_template
Text
help='\n Template for reservation note to be added in the invoice.\n You can use variables like {{ object.checkin }}, etc.\n '
translate=True
is_canceled_auto_mail
Boolean
string='Auto Send Cancellation Mail'
is_confirmed_auto_mail
Boolean
string='Auto Send Confirmation Mail'
is_exit_auto_mail
Boolean
string='Auto Send Exit Mail'
is_modified_auto_mail
Boolean
string='Auto Send Modification Mail'
journal_normal_invoice_id
Many2one → account.journal
check_company=True
check_pms_properties=True
comodel_name='account.journal'
domain=[('type', '=', 'sale'), ('is_simplified_invoice', '=', False)]
help='Journal used to create the normal invoice'
string='Normal Invoice Journal'
journal_simplified_invoice_id
Many2one → account.journal
check_company=True
check_pms_properties=True
comodel_name='account.journal'
domain=[('type', '=', 'sale')]
help='Journal used to create the simplified invoice'
string='Simplified Invoice Journal'
logo
Binary
default=get_default_logo()
string='Image in checkin'
mail_information
Html
help='Additional information of the mail'
max_amount_simplified_invoice
Float
default=400.0
help='Maximum amount to create the simplified invoice'
member_ids
One2many → pms.team.member
comodel_name='pms.team.member'
copy=False
inverse_name='pms_property_id'
string='Team Members'
parent_id
Many2one → pms.property
comodel_name='pms.property'
index=True
string='Parent Property'
partner_id
Many2one → res.partner
comodel_name='res.partner'
help='Current property'
index=True
ondelete='restrict'
required=True
string='Property'
pms_property_code
Char
help='Short name property'
string='Property Code'
privacy_policy
Html
help='Mail privacy policy '
property_canceled_template
Many2one → mail.template
comodel_name='mail.template'
help='Cancellation email template'
string='Cancellation Email'
property_confirmed_template
Many2one → mail.template
comodel_name='mail.template'
help='Confirmation email template'
string='Confirmation Email'
property_exit_template
Many2one → mail.template
comodel_name='mail.template'
string='Exit Email'
property_modified_template
Many2one → mail.template
comodel_name='mail.template'
help='Modification email template'
string='Modification Email'
room_ids
One2many → pms.room
comodel_name='pms.room'
help='Rooms that a property has.'
inverse_name='pms_property_id'
string='Rooms'
tz
Selection
default=<expr>
help='This field is used to determine de timezone of the property.'
required=True
selection=_tz_get
string='Timezone'
user_id
Many2one → res.users
comodel_name='res.users'
copy=False
ondelete='restrict'
string='Team Leader'
tracking=True
user_ids
Many2many → res.users
column1='pms_property_id'
column2='user_id'
comodel_name='res.users'
help='Field related to res.users. Allowed users on the property'
relation='pms_property_users_rel'
string='Accepted Users'
create(self, vals_list)
daily_closing(self, pms_property_ids, room_type_ids=False, availability_plan_ids=False)
date_property_timezone(self, dt)
get_real_free_rooms(self, checkin, checkout, current_lines=False)
name_get(self)
splitted_availability(self, checkin, checkout, pms_property_id, room_type_id=False, current_lines=False, pricelist=False, real_avail=False)
adults
Integer
compute='_compute_adults'
help='List of adults there in guest list'
readonly=False
store=True
tracking=True
agency_id
Many2one
depends=['folio_id.agency_id']
help='Agency that made the reservation'
index=True
readonly=False
related='folio_id.agency_id'
store=True
string='Agency'
tracking=True
allowed_cancel
Boolean
compute='_compute_allowed_cancel'
help="Technical field, Indicates that reservation can be cancelled,that happened when state is 'cancel', 'done', or 'departure_delayed'"
search='_search_allowed_cancel'
string='Allowed cancel'
allowed_checkin
Boolean
compute='_compute_allowed_checkin'
help="Technical field, Indicates if there isn't a checkin_partner dataOnly can be true if checkin is today or was in the past"
search='_search_allowed_checkin'
string='Allowed checkin'
allowed_checkout
Boolean
compute='_compute_allowed_checkout'
help="Technical field, Indicates that reservation is ready for checkoutonly can be true if reservation state is 'onboard' or departure_delayedand checkout is today or will be in the future"
search='_search_allowed_checkout'
string='Allowed checkout'
allowed_room_ids
Many2many → pms.room
comodel_name='pms.room'
compute='_compute_allowed_room_ids'
help='It contains all available rooms for this reservation'
string='Allowed Rooms'
arrival_hour
Char
compute='_compute_arrival_hour'
help='Arrival Hour (HH:MM)'
readonly=False
store=True
avoid_mails
Boolean
compute='_compute_avoid_mails'
help='Field to indicate not sent mail comunications'
readonly=False
store=True
string='Avoid comunication mails'
blocked
Boolean
default=False
help='Indicates if the reservation is blocked'
board_service_room_id
Many2one → pms.board.service.room.type
check_pms_properties=True
comodel_name='pms.board.service.room.type'
compute='_compute_board_service_room_id'
help='Board Service included in the room'
index=True
inverse='_inverse_board_service_room_id'
readonly=False
store=True
string='Board Service'
tracking=True
board_service_room_manual
Boolean
default=False
help='When enabled, the reservation will NOT auto-assign a default board service even if the field is empty. This is set automatically when the user edits or clears the board service.'
string='Board Service Manually Set'
cancel_datetime
Datetime
copy=False
help='Date when the reservation was cancelled'
readonly=True
string='Cancel Date'
cancelled_reason
Selection
copy=False
help="Field indicating type of cancellation. It can be 'late', 'intime' or 'noshow'"
selection=[('late', 'Late'), ('intime', 'In time'), ('noshow', 'No Show'), ('modified', 'Modified')]
store=True
string='Reason of cancellation'
tracking=True
check_adults
Boolean
compute='_compute_check_adults'
help='Internal field to force room capacity validations'
readonly=False
store=True
checkin
Date
compute='_compute_checkin'
copy=False
help='It is the checkin date of the reservation, '
readonly=False
store=True
string='Check In'
tracking=True
checkin_datetime
Datetime
compute='_compute_checkin_datetime'
help='This field is the day and time of arrival of the reservation.It is formed with the checkin and arrival_hour fields'
string='Exact Arrival'
checkin_partner_count
Integer
compute='_compute_checkin_partner_count'
help='Number of checkin partners in a reservation'
string='Checkin counter'
checkin_partner_ids
One2many → pms.checkin.partner
check_pms_properties=True
comodel_name='pms.checkin.partner'
compute='_compute_checkin_partner_ids'
copy=False
help='Guests who will occupy the room'
inverse_name='reservation_id'
readonly=False
store=True
string='Checkin Partners'
checkin_partner_pending_count
Integer
compute='_compute_checkin_partner_count'
help='Number of checkin partners pending to checkin in a reservation'
search='_search_checkin_partner_pending'
string='Checkin Pending Num'
checkins_ratio
Integer
compute='_compute_checkins_ratio'
help='Proportion of guest pending checkin'
string='Pending Arrival Ratio'
checkout
Date
compute='_compute_checkout'
copy=False
help='It is the checkout date of the reservation, '
readonly=False
store=True
string='Check Out'
tracking=True
checkout_datetime
Datetime
compute='_compute_checkout_datetime'
help='This field is the day and time of departure of the reservation.It is formed with the checkout and departure_hour fields'
string='Exact Departure'
children
Integer
help='Number total of children there in guest list,whose presence counts or not'
readonly=False
tracking=True
children_occupying
Integer
help='Number of children there in guest list whose presence counts'
closure_reason_id
Many2one
check_pms_properties=True
help='Reason why the reservation cannot be made'
readonly=False
related='folio_id.closure_reason_id'
string='Closure Reason'
commission_amount
Monetary
compute='_compute_commission_amount'
help='Amount corresponding to commission'
store=True
string='Commission amount'
commission_percent
Float
compute='_compute_commission_percent'
help='Percentage corresponding to commission'
readonly=False
store=True
string='Commission percent (%)'
tracking=True
company_id
Many2one
help='Company to which the reservation belongs'
index=True
readonly=True
related='folio_id.company_id'
store=True
string='Company'
count_alternative_free_rooms
Integer
compute='_compute_count_alternative_free_rooms'
count_pending_arrival
Integer
compute='_compute_count_pending_arrival'
help='Number of guest with pending checkin'
store=True
string='Pending Arrival'
credit_card_details
Text
related='folio_id.credit_card_details'
currency_id
Many2one
depends=['pricelist_id']
ondelete='restrict'
related='pricelist_id.currency_id'
store=True
date_order
Datetime
default=fields.Datetime.now
help='Order date of reservation'
readonly=False
store=True
departure_hour
Char
compute='_compute_departure_hour'
help='Departure Hour (HH:MM)'
readonly=False
store=True
discount
Monetary
compute='_compute_discount'
digits='Discount'
help='Discount of total price in reservation'
readonly=False
store=True
tracking=True
email
Char
compute='_compute_email'
help='Customer E-mail'
readonly=False
store=True
string='E-mail'
external_reference
Char
compute='_compute_external_reference'
help='Reference of this folio in an external system'
readonly=False
store=True
folio_id
Many2one → pms.folio
check_company=True
comodel_name='pms.folio'
copy=False
help='The folio where the reservations are included'
index=True
ondelete='restrict'
string='Folio'
tracking=True
folio_internal_comment
Text
help='Internal comment for folio'
readonly=False
related='folio_id.internal_comment'
store=True
string='Internal Folio Notes'
folio_payment_state
Selection
help='The status of the folio payment'
related='folio_id.payment_state'
store=True
string='Payment State'
tracking=True
folio_pending_amount
Monetary
help='The amount that remains to be paid from folio'
related='folio_id.pending_amount'
string='Pending Amount'
tracking=True
folio_sequence
Integer
help='Techinal field to get reservation name'
readonly=True
force_update_origin
Boolean
compute='_compute_force_update_origin'
help='This field is for force update in sale channel origin of folio and another reservations'
readonly=False
store=True
string='Update Sale Channel Origin'
invoice_status
Selection
compute='_compute_invoice_status'
help="The status of the invoices in folio. Can be 'invoiced', 'to_invoice' or 'no'."
readonly=True
selection=[('invoiced', 'Fully Invoiced'), ('to_invoice', 'To Invoice'), ('no', 'Nothing to Invoice')]
store=True
is_origin_channel_check_visible
Boolean
compute='_compute_is_origin_channel_check_visible'
help='Technical field to make visible update origin channel check'
readonly=False
store=True
string='Check force update origin visible'
is_reselling
Boolean
compute='_compute_is_reselling'
help='Indicate if exists reselling in any reservation line'
readonly=False
store=True
string='Reselling'
lang
Many2one → res.lang
comodel_name='res.lang'
compute='_compute_lang'
string='Language'
mobile
Char
compute='_compute_mobile'
help='Customer Mobile'
readonly=False
store=True
name
Text
help='Reservation Code Identification'
readonly=True
string='Reservation Code'
nights
Integer
compute='_compute_nights'
help='Number of nights of a reservation'
store=True
out_service_description
Text
help='Indicates the cause of out of service'
readonly=False
related='folio_id.out_service_description'
string='Cause of out of service'
overbooking
Boolean
compute='_compute_overbooking'
help='Indicate if exists overbooking'
store=True
string='Is Overbooking'
overnight_room
Boolean
related='room_type_id.overnight_room'
store=True
partner_id
Many2one → res.partner
check_pms_properties=True
comodel_name='res.partner'
compute='_compute_partner_id'
help='Name of who made the reservation'
index=True
ondelete='restrict'
readonly=False
store=True
string='Customer'
tracking=True
partner_incongruences
Char
compute='_compute_partner_incongruences'
help='indicates that some partner fields on the reservation do not correspond to that of the associated partner'
partner_internal_comment
Text
help='Internal notes of the partner'
readonly=False
related='partner_id.comment'
store=True
string='Internal Partner Notes'
partner_name
Char
compute='_compute_partner_name'
help='To whom the room is assigned'
readonly=False
store=True
string='Customer Name'
partner_requests
Text
help='Guest requests'
pending_checkin_data
Integer
compute='_compute_pending_checkin_data'
help='Data missing at checkin'
store=True
string='Checkin Data'
pms_property_id
Many2one → pms.property
check_pms_properties=True
comodel_name='pms.property'
help='Property to which the reservation belongs'
index=True
readonly=False
related='folio_id.pms_property_id'
store=True
string='Pms Property'
possible_existing_customer_ids
One2many → res.partner
comodel_name='res.partner'
compute='_compute_possible_existing_customer_ids'
string='Possible existing customer'
preconfirm
Boolean
default=True
help='Technical field that indicates the reservation is not comfirm yet'
string='Auto confirm to Save'
preferred_room_id
Many2one → pms.room
check_pms_properties=True
comodel_name='pms.room'
copy=False
domain="[('id', 'in', allowed_room_ids),('pms_property_id', '=', pms_property_id),]"
help="It's the preferred room assigned to reservation, empty if reservation is splitted"
index=True
ondelete='restrict'
string='Room'
tracking=True
price_room_services_set
Monetary
compute='_compute_price_room_services_set'
help='Total price of room and services'
readonly=True
store=True
string='Room Services Total'
price_services
Monetary
compute='_compute_price_services'
help='Total price from services of a reservation'
readonly=True
store=True
string='Services Total'
price_subtotal
Monetary
compute='_compute_amount_reservation'
help='Subtotal price without taxes'
readonly=True
store=True
string='Subtotal'
price_tax
Monetary
compute='_compute_amount_reservation'
help='Total of taxes in a reservation'
readonly=True
store=True
string='Taxes Amount'
price_total
Monetary
compute='_compute_amount_reservation'
help='Total price with taxes'
readonly=True
store=True
string='Total'
tracking=True
pricelist_id
Many2one → product.pricelist
check_pms_properties=True
comodel_name='product.pricelist'
compute='_compute_pricelist_id'
domain="[('is_pms_available', '=', True)]"
help='Pricelist that guides the prices of the reservation'
index=True
ondelete='restrict'
readonly=False
store=True
string='Pricelist'
tracking=True
ratio_checkin_data
Integer
compute='_compute_ratio_checkin_data'
help='Proportion of guest data complete at checkin'
string='Complete cardex'
ready_for_checkin
Boolean
compute='_compute_ready_for_checkin'
help='Indicates the reservations with checkin_partner data enought to checkin'
string='Ready for checkin'
reservation_line_ids
One2many → pms.reservation.line
check_pms_properties=True
comodel_name='pms.reservation.line'
compute='_compute_reservation_line_ids'
copy=False
help='They are the lines of the reservation into a reservation,they corresponds to the nights'
inverse_name='reservation_id'
readonly=False
store=True
string='Reservation Lines'
reservation_type
Selection
compute='_compute_reservation_type'
help="Type of reservations. It can be 'normal', 'staff' or 'out of service"
readonly=False
selection=[('normal', 'Normal'), ('staff', 'Staff'), ('out', 'Out of Service')]
store=True
room_type_id
Many2one → pms.room.type
check_pms_properties=True
comodel_name='pms.room.type'
compute='_compute_room_type_id'
copy=False
help="Room Type sold on the reservation,it doesn't necessarily correspond to the room actually assigned"
index=True
ondelete='restrict'
readonly=False
store=True
string='Room Type'
tracking=True
rooms
Char
compute='_compute_rooms'
help='Rooms that are reserved'
store=True
string='Room/s'
tracking=True
sale_channel_ids
Many2many → pms.sale.channel
comodel_name='pms.sale.channel'
compute='_compute_sale_channel_ids'
help='Sale Channels through which reservation lines were managed'
store=True
string='Sale Channels'
sale_channel_origin_id
Many2one → pms.sale.channel
comodel_name='pms.sale.channel'
default=<expr>
help='Sale Channel through which reservation was created, the original'
index=True
string='Sale Channel Origin'
sale_line_ids
One2many → folio.sale.line
comodel_name='folio.sale.line'
copy=False
inverse_name='reservation_id'
string='Sale Lines'
segmentation_ids
Many2many → res.partner.category
comodel_name='res.partner.category'
default=<expr>
domain="[('is_used_in_checkin', '=', True)]"
help='Segmentation tags to classify reservations'
ondelete='restrict'
string='Segmentation'
service_ids
One2many → pms.service
check_company=True
check_pms_properties=True
comodel_name='pms.service'
compute='_compute_board_service_ids'
help='Included services in the reservation'
inverse_name='reservation_id'
readonly=False
store=True
string='Services'
services_discount
Monetary
compute='_compute_services_discount'
digits='Discount'
help='Services discount'
readonly=False
store=True
tracking=True
shared_folio
Boolean
compute='_compute_shared_folio'
help='Used to notify is the reservation folio has other reservations/services'
show_update_pricelist
Boolean
compute='_compute_show_update_pricelist'
help='Technical Field, True if the pricelist was changed;\n this will then display a recomputation button'
store=True
string='Has Pricelist Changed'
splitted
Boolean
compute='_compute_splitted'
help="Field that indicates if the reservation is split. A reservation is split when guests don't sleep in the same room every night"
store=True
state
Selection
copy=False
default=<expr>
help="The state of the reservation. It can be 'Pre-reservation', 'Pending arrival', 'On Board', 'Out', 'Cancelled', 'Arrival Delayed' or 'Departure Delayed'"
index=True
readonly=True
selection=[('draft', 'Pre-reservation'), ('confirm', 'Pending arrival'), ('onboard', 'On Board'), ('done', 'Out'), ('cancel', 'Cancelled'), ('arrival_delayed', 'Arrival Delayed'), ('departure_delayed', 'Departure delayed')]
tracking=True
tax_ids
Many2many → account.tax
comodel_name='account.tax'
compute='_compute_tax_ids'
domain=['|', ('active', '=', False), ('active', '=', True)]
help='Taxes applied in the reservation'
readonly=False
store=True
string='Taxes'
to_assign
Boolean
default=True
help='It is True if the room of the reservation has been assigned automatically, False if it was confirmed by a person in charge'
to_send_cancelation_mail
Boolean
compute='_compute_to_send_cancelation_mail'
readonly=False
store=True
to_send_confirmation_mail
Boolean
compute='_compute_to_send_confirmation_mail'
readonly=False
store=True
to_send_exit_mail
Boolean
compute='_compute_to_send_exit_mail'
readonly=False
store=True
to_send_modification_mail
Boolean
compute='_compute_to_send_modification_mail'
readonly=False
store=True
user_id
Many2one → res.users
comodel_name='res.users'
compute='_compute_user_id'
help='The reception manager in the folio'
index=True
ondelete='restrict'
readonly=False
store=True
string='Reception Manager'
tracking=True
action_assign(self)
action_cancel(self)
action_checkin_partner_onboard_view(self)
action_checkin_partner_view(self)
action_confirm(self)
action_open_cancelation_mail_composer(self)
action_open_confirmation_mail_composer(self)
action_open_exit_mail_composer(self)
action_open_modification_mail_composer(self)
action_pay_folio(self)
action_reservation_checkout(self)
action_undo_onboard(self)
auto_arrival_delayed(self)
auto_departure_delayed(self)
autocheckout(self, reservation)
check_in_out_dates(self)
checkin_checkout_consecutive_dates(self)
create(self, vals_list)
get_folios_to_update_channel(self, vals)
get_lines_to_update_channel(self, vals)
get_services_to_update_channel(self, vals)
name_get(self)
name_search(self, name='', args=None, operator='ilike', limit=100)
open_folio(self)
open_partner(self)
open_reservation_form(self)
open_reservation_wizard(self)
open_wizard_several_partners(self)
preview_reservation(self)
print_all_checkins(self)
unlink(self)
update_prices(self)
write(self, vals)
adults
Integer
allowed_room_ids
Many2many → pms.room
comodel_name='pms.room'
compute='_compute_allowed_room_ids'
help='It contains all available rooms for this reservation'
string='Allowed Rooms'
board_service_room_id
Many2one → pms.board.service.room.type
check_pms_properties=True
comodel_name='pms.board.service.room.type'
domain="[('pms_room_type_id','=',room_type_id)]"
help='Board Service included in the room'
string='Board Service'
booking_duplicate_id
Many2one → pms.booking.duplicate
comodel_name='pms.booking.duplicate'
string='Folio Wizard ID'
checkin
Date
compute='_compute_checkin'
help='Date Reservation starts '
string='From:'
checkout
Date
compute='_compute_checkout'
help='Date Reservation ends'
string='To:'
occupied_room
Boolean
compute='_compute_occupied_room'
help='Check if the room is occupied'
pms_property_id
Many2one
help='Propertiy with access to the element;'
related='booking_duplicate_id.pms_property_id'
string='Property'
preferred_room_id
Many2one → pms.room
check_pms_properties=True
comodel_name='pms.room'
domain="[('id', 'in', allowed_room_ids),('id', 'not in', used_room_ids),('pms_property_id', '=', pms_property_id),]"
help='Room reserved'
string='Room'
price_total
Float
compute='_compute_price_total'
help='The total price in the folio'
string='Total price'
pricelist_id
Many2one → product.pricelist
check_pms_properties=True
comodel_name='product.pricelist'
domain="[('is_pms_available', '=', True)]"
help='Pricelist used for this reservation'
string='Pricelist'
reference_reservation_id
Many2one → pms.reservation
check_pms_properties=True
comodel_name='pms.reservation'
help='Reservation to copy data'
string='Reservation Reference'
room_type_id
Many2one → pms.room.type
check_pms_properties=True
comodel_name='pms.room.type'
help='Room Type reserved'
string='Room Type'
service_ids
Many2many → product.product
column1='reservation_duplicate_id'
column2='product_id'
comodel_name='product.product'
compute='_compute_service_ids'
readonly=False
relation='reservation_duplicate_product_rel'
store=True
string='Services'
used_room_ids
Many2many → pms.room
comodel_name='pms.room'
compute='_compute_used_room_ids'
string='Used Rooms'
No public methods.
avail_id
Many2one → pms.availability
check_pms_properties=True
comodel_name='pms.availability'
compute='_compute_avail_id'
help=''
index=True
ondelete='restrict'
store=True
string='Availability Day'
cancel_discount
Float
compute='_compute_cancel_discount'
default=0.0
digits='Discount'
help=''
readonly=True
store=True
string='Cancelation Discount (%)'
currency_id
Many2one
depends=['reservation_id.currency_id']
precompute=True
related='reservation_id.currency_id'
store=True
date
Date
help='The date of the reservation in reservation line'
default_invoice_to
Many2one → res.partner
comodel_name='res.partner'
compute='_compute_default_invoice_to'
help='Indicates the contact to which this line will be\n billed by default, if it is not established,\n a guest or the generic contact will be used instead'
index=True
ondelete='restrict'
readonly=False
store=True
string='Invoice to'
discount
Float
default=0.0
digits='Discount'
help=''
string='Discount (%)'
is_reselling
Boolean
help='Indicates if the reservation line is reselling'
readonly=False
store=True
string='Reselling'
occupies_availability
Boolean
compute='_compute_occupies_availability'
help='This record is taken into account to calculate availability'
store=True
string='Occupies'
overbooking
Boolean
compute='_compute_overbooking'
help='Indicate if exists overbooking in the reservation line'
readonly=False
store=True
overnight_room
Boolean
related='reservation_id.overnight_room'
store=True
pms_property_id
Many2one → pms.property
check_pms_properties=True
comodel_name='pms.property'
help='Property with access to the element'
index=True
readonly=True
related='reservation_id.pms_property_id'
store=True
string='Property'
price
Monetary
compute='_compute_price'
digits='Product Price'
help='The price in a reservation line'
readonly=False
store=True
price_day_total
Monetary
compute='_compute_price_day_total'
help='Get the price with discount applied'
store=True
string='Final price'
pricelist_item_id
Many2one → product.pricelist.item
comodel_name='product.pricelist.item'
compute='_compute_pricelist_item_id'
reservation_id
Many2one → pms.reservation
check_pms_properties=True
comodel_name='pms.reservation'
copy=False
help='It is the reservation in a reservation line'
index=True
ondelete='cascade'
required=True
string='Reservation'
room_id
Many2one → pms.room
check_pms_properties=True
comodel_name='pms.room'
compute='_compute_room_id'
help='The room of a reservation. '
index=True
ondelete='restrict'
readonly=False
store=True
string='Room'
sale_channel_id
Many2one → pms.sale.channel
check_pms_properties=True
comodel_name='pms.sale.channel'
help='Sale Channel through which reservation line was created'
index=True
string='Sale Channel'
sale_line_ids
Many2many → folio.sale.line
check_pms_properties=True
comodel_name='folio.sale.line'
copy=False
readonly=True
string='Sales Lines'
state
Selection
help='State of the reservation line.'
related='reservation_id.state'
store=True
constrains_duplicated_date(self)
create(self, vals_list)
name_get(self)
unlink(self)
write(self, vals)
allowed_rooms_sources
Many2many → pms.room
column1='wizard_id'
column2='room_id'
comodel_name='pms.room'
compute='_compute_allowed_rooms_source'
readonly=False
relation='pms_wizard_split_join_swap_reservation_rooms_source'
store=True
allowed_rooms_target
Many2many → pms.room
column1='wizard_id'
column2='room_id'
comodel_name='pms.room'
compute='_compute_allowed_rooms_target'
readonly=False
relation='pms_wizard_split_join_swap_reservation_rooms_target'
store=True
checkin
Date
default=<expr>
help='Checkin in reservation'
string='Check In'
checkout
Date
default=<expr>
help='checkout in reservation'
string='Check Out'
operation
Selection
default=<expr>
help='Operation to be applied on the reservation'
selection=[('swap', 'Swap rooms'), ('split', 'Split reservation'), ('join', 'Join reservation')]
reservation_id
Many2one → pms.reservation
comodel_name='pms.reservation'
default=<expr>
string='Reservation'
reservation_ids
Many2many → pms.reservation
comodel_name='pms.reservation'
compute='_compute_reservation_ids'
readonly=False
store=True
string='Reservations'
reservation_lines_to_change
One2many → pms.wizard.reservation.lines.split
comodel_name='pms.wizard.reservation.lines.split'
compute='_compute_reservation_lines'
inverse_name='reservation_wizard_id'
readonly=False
store=True
room_source
Many2one → pms.room
comodel_name='pms.room'
default=<expr>
domain="[('id', 'in', allowed_rooms_sources)]"
room_target
Many2one → pms.room
comodel_name='pms.room'
domain="[('id', 'in', allowed_rooms_target)]"
action_join(self)
action_split(self)
action_swap(self)
reservation_join(self, reservation, room)
reservation_split(self, reservation, date, room)
reservations_swap(self, checkin, checkout, source, target)
active
Boolean
default=True
help='Determines if room is active'
address_id
Many2one → res.partner
comodel_name='res.partner'
compute='_compute_address_id'
help='Address of the room'
index=True
ondelete='restrict'
store=True
string='Address'
address_is_independent
Boolean
help='Indicates that the address of the room is independent of the property'
capacity
Integer
help='The maximum number of people that can occupy a room'
child_ids
One2many → pms.room
check_pms_properties=True
comodel_name='pms.room'
help='Child rooms of the room'
inverse_name='parent_id'
string='Child Rooms'
city
Char
readonly=False
related='address_id.city'
country_id
Many2one → res.country
ondelete='restrict'
readonly=False
related='address_id.country_id'
string='Country'
args: 'res.country'
description_sale
Text
help='A description of the Product that you want to communicate to your customers. This description will be copied to every Sales Order, Delivery Order and Customer Invoice/Credit Note'
string='Sale Description'
translate=True
email
Char
readonly=False
related='address_id.email'
email_formatted
Char
compute='_compute_email_formatted'
help='Format email address "Name <email@domain>"'
args: 'Formatted Email'
extra_beds_allowed
Integer
default='0'
help='Number of extra beds allowed in room'
required=True
image_1920
Image
max_height=1920
max_width=1920
readonly=False
related='address_id.image_1920'
is_shared_room
Boolean
compute='_compute_is_shared_room'
help='allows you to reserve units smaller than the room itself (eg beds)'
readonly=False
store=True
string='Is a Shared Room'
mobile
Char
readonly=False
related='address_id.mobile'
name
Char
help='Room Name'
required=True
string='Room Name'
parent_id
Many2one → pms.room
check_pms_properties=True
comodel_name='pms.room'
help='Indicates that this room is a child of another room'
index=True
ondelete='restrict'
string='Parent Room'
partner_latitude
Float
digits=(16, 5)
readonly=False
related='address_id.partner_latitude'
string='Geo Latitude'
partner_longitude
Float
digits=(16, 5)
readonly=False
related='address_id.partner_longitude'
string='Geo Longitude'
phone
Char
readonly=False
related='address_id.phone'
pms_property_id
Many2one → pms.property
comodel_name='pms.property'
help='Properties with access to the element; if not set, all properties can access'
index=True
ondelete='restrict'
required=True
string='Property'
room_amenity_ids
Many2many → pms.amenity
check_pms_properties=True
column1='room_id'
column2='amenity_id'
comodel_name='pms.amenity'
help='List of amenities included in room'
relation='pms_room_amenity_rel'
string='Room Amenities'
room_type_id
Many2one → pms.room.type
check_pms_properties=True
comodel_name='pms.room.type'
help='Unique room type for the rooms'
index=True
ondelete='restrict'
required=True
string='Property Room Type'
sequence
Integer
default=0
help='Field used to change the position of the rooms in tree view.Changing the position changes the sequence'
short_name
Char
help='Four character name, if not set, autocompletes with the first two letters of the room name and two incremental numbers'
state_id
Many2one → res.country.state
domain="[('country_id', '=?', country_id)]"
ondelete='restrict'
readonly=False
related='address_id.state_id'
string='State'
args: 'res.country.state'
street
Char
readonly=False
related='address_id.street'
street2
Char
readonly=False
related='address_id.street2'
ubication_id
Many2one → pms.ubication
check_pms_properties=True
comodel_name='pms.ubication'
help='At which ubication the room is located.'
index=True
string='Ubication'
website
Char
readonly=False
related='address_id.website'
zip
Char
readonly=False
related='address_id.zip'
calculate_short_name(self, vals)
create(self, vals_list)
get_capacity(self, extra_bed=0)
name_get(self)
unlink(self)
write(self, vals)
board_service_room_type_ids
One2many → pms.board.service.room.type
check_pms_properties=True
comodel_name='pms.board.service.room.type'
help='Board Service included in room type'
inverse_name='pms_room_type_id'
string='Board Services'
class_id
Many2one → pms.room.type.class
check_pms_properties=True
comodel_name='pms.room.type.class'
help='Class to which the room type belongs'
index=True
required=True
string='Property Type Class'
default_code
Char
help='Identification code for a room type'
required=True
string='Code'
default_max_avail
Integer
default=-1
help='Maximum simultaneous availability on own Booking Engine given no availability rules. Use `-1` for using maximum simultaneous availability.'
string='Default Max. Availability'
default_quota
Integer
default=-1
help='Quota assigned to the own Booking Engine given no availability rules. Use `-1` for managing no quota.'
min_price
Float
default=5.0
help='Minimum price for a room type'
string='Min. Price'
overnight_room
Boolean
related='class_id.overnight'
store=True
product_id
Many2one → product.product
comodel_name='product.product'
delegate=True
help='Product identifier associated with room type'
index=True
ondelete='cascade'
required=True
string='Product Room Type'
room_amenity_ids
Many2many → pms.amenity
check_pms_properties=True
column1='room_type_id'
column2='amenity_id'
comodel_name='pms.amenity'
help='List of amenities included in room type'
relation='pms_room_type_amenity_rel'
string='Room Type Amenities'
room_ids
One2many → pms.room
check_pms_properties=True
comodel_name='pms.room'
help='Rooms that belong to room type.'
inverse_name='room_type_id'
string='Rooms'
sequence
Integer
default=0
help='Field used to change the position of the room types in tree view.'
total_rooms_count
Integer
compute='_compute_total_rooms_count'
help='The number of rooms in a room type'
store=True
create(self, vals_list)
get_default_board_service(self, pms_property_id, room_type_id, pricelist_id)
get_room_type_capacity(self, pms_property_id)
get_room_types_by_property(self, pms_property_id, default_code=None)
name_get(self)
active
Boolean
default=True
help='If unchecked, it will allow you to hide the room type'
default_code
Char
help='Room type class identification code'
required=True
string='Code'
name
Char
help='Name of the room type class'
required=True
string='Class Name'
translate=True
overnight
Boolean
default=True
help='Set False if if these types of spaces are not used for overnight stays'
string='Use for overnight stays'
pms_property_ids
Many2many → pms.property
check_pms_properties=True
column1='room_type_class_id'
column2='pms_property_id'
comodel_name='pms.property'
help='Properties with access to the element; if not set, all properties can access'
ondelete='restrict'
relation='pms_room_type_class_property_rel'
string='Properties'
room_type_ids
One2many → pms.room.type
check_pms_properties=True
comodel_name='pms.room.type'
help='Room Types that belong to this Room Type Class'
inverse_name='class_id'
string='Types'
sequence
Integer
default=0
help='Field used to change the position of the room type classes in tree view.'
get_unique_by_property_code(self, pms_property_id, default_code=None)
active
Boolean
default=True
channel_type
Selection
help="Type of sale channel; it can be 'direct'(if there isno intermediary) or 'indirect'(if there areintermediaries between partner and property"
selection=[('direct', 'Direct'), ('indirect', 'Indirect')]
string='Sale Channel Type'
icon
Image
max_height=1024
max_width=1024
store=True
string='Logo'
is_on_line
Boolean
help='Indicates if the sale channel is on-line'
string='On Line'
name
Text
help='The name of the sale channel'
string='Sale Channel Name'
pms_property_ids
Many2many → pms.property
check_pms_properties=True
column1='pms_sale_channel_id'
column2='pms_property_id'
comodel_name='pms.property'
help='Properties with access to the element; if not set, all properties can access'
ondelete='restrict'
relation='pms_sale_channel_pms_property_rel'
required=False
string='Properties'
product_pricelist_ids
Many2many → product.pricelist
check_pms_properties=True
column1='pms_sale_channel_id'
column2='product_pricelist_id'
comodel_name='product.pricelist'
domain="[('is_pms_available', '=', True)]"
help='Pricelists for a sale channel'
relation='pms_sale_channel_product_pricelist_rel'
string='Pricelists'
No public methods.
board_service_line_id
Many2one → pms.board.service.room.type.line
check_pms_properties=True
comodel_name='pms.board.service.room.type.line'
help='Board Service Line in which this service is included'
string='Board Service Line'
company_id
Many2one
help='Company to which the service belongs'
index=True
readonly=True
related='folio_id.company_id'
store=True
string='Company'
currency_id
Many2one
help='The currency used in relation to the folio'
index=True
readonly=True
related='folio_id.currency_id'
store=True
string='Currency'
default_invoice_to
Many2one → res.partner
comodel_name='res.partner'
compute='_compute_default_invoice_to'
help='Indicates the contact to which this line will be\n billed by default, if it is not established,\n a guest or the generic contact will be used instead'
index=True
ondelete='restrict'
readonly=False
store=True
string='Invoice to'
discount
Monetary
compute='_compute_discount'
digits='Discount'
help='Discount of total price'
inverse='_inverse_discount'
readonly=False
store=True
folio_id
Many2one → pms.folio
check_pms_properties=True
comodel_name='pms.folio'
compute='_compute_folio_id'
help='Folio in which the service is included'
index=True
readonly=False
store=True
string='Folio'
invoice_status
Selection
compute='_compute_invoice_status'
default='no'
help="State in which the service is with respect to invoices.It can be 'invoiced', 'to_invoice' or 'no'"
readonly=True
selection=[('invoiced', 'Fully Invoiced'), ('to_invoice', 'To Invoice'), ('no', 'Nothing to Invoice')]
store=True
is_board_service
Boolean
help='Indicates if the service is part of a board service'
is_cancel_penalty
Boolean
compute='_compute_is_cancel_penalty'
help='Indicates if the service is a cancel penalty'
readonly=True
name
Char
compute='_compute_name'
help='Service description'
readonly=False
store=True
string='Service description'
no_auto_add_lines
Boolean
default=False
help='Technical field to avoid add service lines to service\n automatically when creating a new service. It is used when\n creating a new service with lines in vals\n '
string='Force No Auto Add Lines'
per_day
Boolean
help='Indicates if service is sold by days'
related='product_id.per_day'
related_sudo=True
pms_property_id
Many2one → pms.property
check_pms_properties=True
comodel_name='pms.property'
help='Property to which the service belongs'
index=True
readonly=True
related='folio_id.pms_property_id'
store=True
string='Property'
price_subtotal
Monetary
compute='_compute_amount_service'
help='Subtotal price without taxes'
readonly=True
store=True
string='Subtotal'
price_tax
Monetary
compute='_compute_amount_service'
help='Total of taxes in service'
readonly=True
store=True
string='Taxes Amount'
price_total
Monetary
compute='_compute_amount_service'
help='Total price with taxes'
readonly=True
store=True
string='Total'
pricelist_id
Many2one → product.pricelist
comodel_name='product.pricelist'
compute='_compute_pricelist_id'
help='Pricelist used in the service'
index=True
store=True
string='Pricelist'
product_id
Many2one → product.product
check_pms_properties=True
comodel_name='product.product'
domain="[(is_pms_available, '=', True)]"
help='Product associated with this service'
index=True
ondelete='restrict'
required=True
string='Service'
product_image
Binary
help='Image of the service'
related='product_id.image_1024'
related_sudo=True
store=False
product_qty
Integer
compute='_compute_product_qty'
help='Number of services that were sold'
readonly=False
store=True
string='Quantity'
reservation_id
Many2one → pms.reservation
check_pms_properties=True
comodel_name='pms.reservation'
default=<expr>
help='Reservation in which the service is included'
index=True
ondelete='cascade'
string='Room'
sale_channel_origin_id
Many2one → pms.sale.channel
check_pms_properties=True
comodel_name='pms.sale.channel'
help='Sale Channel through which service was created, the original'
index=True
string='Sale Channel Origin'
sale_line_ids
One2many → folio.sale.line
check_pms_properties=True
comodel_name='folio.sale.line'
copy=False
help=''
inverse_name='service_id'
string='Sale Lines'
sequence
Integer
default=10
service_line_ids
One2many → pms.service.line
check_pms_properties=True
comodel_name='pms.service.line'
compute='_compute_service_line_ids'
help='Subservices included in this service'
inverse_name='service_id'
readonly=False
store=True
string='Service Lines'
state
Selection
help='Service status, it corresponds with folio status'
related='folio_id.state'
store=True
tax_ids
Many2many → account.tax
comodel_name='account.tax'
compute='_compute_tax_ids'
domain=['|', ('active', '=', False), ('active', '=', True)]
help='Taxes applied in the service'
readonly=False
store=True
string='Taxes'
create(self, vals_list)
get_folios_to_update_channel(self, vals)
name_get(self)
name_search(self, name='', args=None, operator='ilike', limit=100)
open_service_ids(self)
write(self, vals)
auto_qty
Boolean
compute='_compute_auto_qty'
help='Show if the day qty was calculated automatically'
readonly=False
store=True
string='Qty automated setted'
cancel_discount
Float
compute='_compute_cancel_discount'
help=''
readonly=True
store=True
string='Cancelation Discount'
currency_id
Many2one
depends=['pricelist_id']
ondelete='restrict'
precompute=True
related='pricelist_id.currency_id'
store=True
date
Date
help='Sate on which the product is to be consumed'
day_qty
Integer
help='Amount to be consumed per day'
string='Units'
default_invoice_to
Many2one → res.partner
comodel_name='res.partner'
help='Indicates the contact to which this line will be\n billed by default, if it is not established,\n a guest or the generic contact will be used instead'
index=True
ondelete='restrict'
related='service_id.default_invoice_to'
store=True
string='Invoice to'
discount
Float
compute='_compute_discount'
default=0.0
digits='Discount'
help='Discount in the price of the service.'
readonly=False
store=True
string='Discount (%)'
is_board_service
Boolean
help='Indicates if the service line is part of a board service'
related='service_id.is_board_service'
store=True
pms_property_id
Many2one → pms.property
check_pms_properties=True
comodel_name='pms.property'
help='Property to which the service belongs'
index=True
readonly=True
related='service_id.pms_property_id'
store=True
string='Property'
price_day_subtotal
Monetary
compute='_compute_day_amount_service'
help='Subtotal price without taxes'
readonly=True
store=True
string='Subtotal'
price_day_tax
Monetary
compute='_compute_day_amount_service'
help=''
readonly=True
store=True
string='Taxes Amount'
price_day_total
Monetary
compute='_compute_day_amount_service'
help='Total price with taxes'
readonly=True
store=True
string='Total'
price_unit
Monetary
digits='Product Price'
help='Price per unit of service'
string='Unit Price'
pricelist_id
Many2one
depends=['service_id']
ondelete='restrict'
precompute=True
related='service_id.pricelist_id'
store=True
product_id
Many2one
check_pms_properties=True
help='Product associated with this service line'
index=True
related='service_id.product_id'
store=True
string='Product'
reservation_id
Many2one
check_pms_properties=True
help='Room to which the services will be applied'
index=True
readonly=True
related='service_id.reservation_id'
store=True
string='Reservation'
sale_line_ids
Many2many → folio.sale.line
check_pms_properties=True
comodel_name='folio.sale.line'
copy=False
readonly=True
string='Sales Lines'
service_id
Many2one → pms.service
comodel_name='pms.service'
copy=False
help='Service identifier'
index=True
ondelete='cascade'
required=True
string='Service Room'
tax_ids
Many2many → account.tax
comodel_name='account.tax'
help='Taxes applied in the service line'
readonly='True'
related='service_id.tax_ids'
string='Taxes'
no_free_resources(self)
checkin_partner_id
Many2one → pms.checkin.partner
comodel_name='pms.checkin.partner'
string='Checkin Partner'
folio_id
Many2one → pms.folio
comodel_name='pms.folio'
string='Folio'
possible_existing_customer_ids
Many2many → res.partner
comodel_name='res.partner'
readonly=False
store=True
string='Customers'
reservation_id
Many2one → pms.reservation
comodel_name='pms.reservation'
string='Reservation'
add_partner(self)
default_get(self, fields)
active
Boolean
default=True
name
Char
related='user_id.name'
store=True
pms_property_id
Many2one → pms.property
comodel_name='pms.property'
index=True
ondelete='restrict'
store=True
string='Property'
pms_role
Selection
copy=False
help="The member role in the organizationIt can be 'Reception', 'Revenue', 'Administrative', or 'Manager'"
required=True
selection=[('reception', 'Reception'), ('revenue', 'Revenue'), ('administrative', 'Administrative'), ('manager', 'Operational Manager')]
sequence
Integer
default=10
user_id
Many2one → res.users
comodel_name='res.users'
copy=False
index=True
ondelete='restrict'
string='User Member'
No public methods.
name
Char
help='Ubication Name'
required=True
string='Ubication Name'
translate=True
pms_property_ids
Many2many → pms.property
check_pms_properties=True
column1='ubication_type_id'
column2='pms_property_id'
comodel_name='pms.property'
help='Properties with access to the element; if not set, all properties can access'
ondelete='restrict'
relation='pms_ubication_pms_property_rel'
string='Properties'
pms_room_ids
One2many → pms.room
check_pms_properties=True
comodel_name='pms.room'
help='Rooms found in this location'
inverse_name='ubication_id'
string='Rooms'
sequence
Integer
help='Field used to change the position of the ubications in tree view.Changing the position changes the sequence'
No public methods.
allowed_room_ids
Many2many → pms.room
comodel_name='pms.room'
compute='_compute_allowed_room_ids'
help='It contains all available rooms for this line'
store=True
string='Allowed Rooms'
date
Date
reservation_wizard_id
Many2one → pms.reservation.split.join.swap.wizard
comodel_name='pms.reservation.split.join.swap.wizard'
string='Reservation Wizard'
room_id
Many2one → pms.room
comodel_name='pms.room'
domain="[('id', 'in', allowed_room_ids)]"
string='Room'
No public methods.
availability_plan_id
Many2one → pms.availability.plan
check_pms_properties=True
comodel_name='pms.availability.plan'
help='Availability Plan for which the pricelist is included'
index=True
ondelete='restrict'
string='Availability Plan'
cancelation_rule_id
Many2one → pms.cancelation.rule
check_pms_properties=True
comodel_name='pms.cancelation.rule'
help='Cancelation Policy included in the room'
index=True
string='Cancelation Policy'
company_id
Many2one
help='Company to which the pricelist belongs'
index=True
string='Company'
is_pms_available
Boolean
default=False
help='If the pricelist is available in the PMS'
string='Available in PMS'
item_ids
One2many
check_pms_properties=True
help='Items for which the pricelist is made up'
string='Items'
pms_property_ids
Many2many → pms.property
check_pms_properties=True
column1='product_pricelist_id'
column2='pms_property_id'
comodel_name='pms.property'
help='Properties with access to the element; if not set, all properties can access'
ondelete='restrict'
relation='product_pricelist_pms_property_rel'
required=False
string='Properties'
pms_sale_channel_ids
Many2many → pms.sale.channel
check_pms_properties=True
comodel_name='pms.sale.channel'
help='Sale channel for which the pricelist is included'
string='Available Channels'
pricelist_type
Selection
default='daily'
help='Pricelist types, it can be Daily Plan'
selection=[('daily', 'Daily Plan')]
open_massive_changes_wizard(self)
allowed_board_service_product_ids
Many2many → product.product
comodel_name='product.product'
compute='_compute_allowed_board_service_product_ids'
string='Allowed board service products'
allowed_board_service_room_type_ids
Many2many → pms.board.service.room.type
comodel_name='pms.board.service.room.type'
compute='_compute_allowed_board_service_room_type_ids'
string='Allowed board service room types'
board_service_room_type_id
Many2one → pms.board.service.room.type
check_pms_properties=True
comodel_name='pms.board.service.room.type'
help='Specify a Board services on Room Types.'
index=True
string='Board Service'
date_end_consumption
Date
help='End date to apply daily pricelist items'
string='End Date Consumption'
date_start_consumption
Date
help='Start date to apply daily pricelist items'
string='Start Date Consumption'
has_properties
Boolean
compute='_compute_has_properties'
store=True
pms_property_ids
Many2many → pms.property
check_pms_properties=True
column1='product_pricelist_item_id'
column2='pms_property_id'
comodel_name='pms.property'
help='Properties with access to the element; if not set, all properties can access'
ondelete='restrict'
relation='product_pricelist_item_pms_property_rel'
string='Properties'
pricelist_id
Many2one
check_pms_properties=True
help='Pricelist in which this item is included'
index=True
string='Pricelist'
product_id
Many2one
help='Product associated with the item'
index=True
string='Product'
product_tmpl_id
Many2one
check_pms_properties=True
help='Product template associated with the item'
index=True
string='Product Template'
create(self, vals)
write(self, vals)
board_price
Float
compute='_compute_board_price'
digits='Product Price'
help='Get price on board service'
string='Board Service Price'
room_type_id
Many2one → pms.room.type
comodel_name='pms.room.type'
compute='_compute_room_type_id'
string='Room Type'
price_compute(self, price_type, uom=False, currency=False, company=None, date=False)
consumed_on
Selection
default='before'
help='Indicates when the product is consumed'
selection=[('before', 'All before night'), ('after', 'All after night'), ('checkin', 'Only first day'), ('checkout', 'Only last day')]
string='Consumed'
daily_limit
Integer
compute='_compute_daily_limit'
help='Indicates how much products can consumed in one day'
inverse='_inverse_daily_limit'
is_crib
Boolean
default=False
help='Indicates if that product is a crib'
string='Is a baby crib'
is_extra_bed
Boolean
default=False
help='Indicates if that product is a extra bed, add +1 capacity in the room'
is_pms_available
Boolean
default=True
help='Indicates if that product is available in PMS'
string='Is available in PMS'
is_tourist_tax
Boolean
default=False
help='Indicates if that product is a tourist tax'
string='Is tourist tax'
per_day
Boolean
help='Indicates that the product is sold by days'
string='Unit increment per day'
per_person
Boolean
help='Indicates that the product is sold per person'
string='Unit increment per person'
pms_property_ids
Many2many → pms.property
check_pms_properties=True
column1='product_tmpl_id'
column2='pms_property_id'
comodel_name='pms.property'
help='Properties with access to the element; if not set, all properties can access'
ondelete='restrict'
relation='product_template_pms_property_rel'
required=False
string='Properties'
property_daily_limits
One2many → ir.pms.property
comodel_name='ir.pms.property'
domain=<expr>
inverse_name='record'
string='Daily Limits per Property'
tourist_tax_apply_from_night
Integer
default=1
help='Night number the rule starts applying (e.g., 1 = first night)'
string='Apply From Night'
tourist_tax_apply_to_night
Integer
help='Night number the rule stops applying (optional)'
string='Apply Until Night'
tourist_tax_date_end
Selection
required=False
selection=<expr>
string='End Date (Annual)'
tourist_tax_date_start
Selection
required=False
selection=<expr>
string='Start Date (Annual)'
tourist_tax_max_age
Integer
help='Applies only to guests up to this age'
string='Maximum Age'
tourist_tax_min_age
Integer
help='Applies only to guests with this age or older'
string='Minimum Age'
write(self, vals)
cancel_penalty_product_id
Many2one → product.product
comodel_name='product.product'
help='Product used to calculate the cancel penalty'
index=True
ondelete='restrict'
string='Cancel penalty product'
check_min_partner_data_invoice
Boolean
default=False
help='Check minimum partner data for invoices:\n - VAT, name, street, city, country'
string='Check minimum partner data for invoices'
pms_property_ids
One2many → pms.property
comodel_name='pms.property'
help='Properties with access to the element'
inverse_name='company_id'
string='Properties'
privacy_policy
Html
help='Authorization by the user for themanage of their personal data'
url_advert
Char
help='Url to identify the ad'
No public methods.
priority
Integer
default=1000
No public methods.
apply_pricelist
Boolean
help='Indicates if agency pricelist is applied to his reservations'
comment
Text
tracking=True
commission_type
Selection
default='included'
help='\n If select subtract commission, for automatic import of reservations,\n the commission is calculated as price - (price * commission / 100)\n '
selection=[('included', 'Commission Included in Price'), ('subtract', 'Commission Subtracts from Price')]
default_commission
Float
help='Default commission'
string='Commission'
folios_count
Integer
compute='_compute_folios_count'
help='Number of folios of the partner'
string='Number of Folios'
invoice_to_agency
Selection
default='never'
help='Indicates if agency invoices partner'
required=True
selection=[('never', 'Never'), ('manual', 'Manual'), ('always', 'Always')]
string='Invoice Agency'
is_agency
Boolean
help='Indicates if the partner is an agency'
pms_checkin_partner_ids
One2many → pms.checkin.partner
comodel_name='pms.checkin.partner'
help='Associated checkin partners'
inverse_name='partner_id'
string='Checkin Partners'
pms_folio_ids
One2many → pms.folio
comodel_name='pms.folio'
help='Associated Folios'
inverse_name='partner_id'
string='Folios'
pms_property_ids
Many2many → pms.property
check_pms_properties=True
column1='res_partner_id'
column2='pms_property_id'
comodel_name='pms.property'
help='Properties with access to the element if not set, all properties can access'
ondelete='restrict'
relation='res_partner_pms_property_rel'
required=False
string='Properties'
pms_reservation_ids
One2many → pms.reservation
comodel_name='pms.reservation'
help='Associated reservation'
inverse_name='partner_id'
string='Reservations'
reservations_count
Integer
compute='_compute_reservations_count'
help='Number of reservations of the partner'
string='Number of Reservations'
sale_channel_id
Many2one → pms.sale.channel
comodel_name='pms.sale.channel'
domain=[('channel_type', '=', 'indirect')]
help='The sale channel of the partner'
index=True
ondelete='restrict'
string='Sale Channel'
action_partner_folios(self)
action_partner_reservations(self)
get_vat(self)
is_used_in_checkin
Boolean
string='Used in checkin'
No public methods.
pms_property_id
Many2one → pms.property
comodel_name='pms.property'
context={'user_preference': True}
domain="[('id','in',pms_property_ids)]"
help='The property that is selected within those allowed for the user'
index=True
string='Default Property'
pms_property_ids
Many2many → pms.property
column1='user_id'
column2='pms_property_id'
comodel_name='pms.property'
domain="[('company_id','in',company_ids)]"
help='The properties allowed for this user'
relation='pms_property_users_rel'
string='Properties'
create(self, vals_list)
write(self, vals)
active
Boolean
default=True
help='Uncheck to archive the room closure reason and hide it from selection lists without removing the historical records that already reference it.'
description
Text
help='Explanation of the reason for closing a room'
translate=True
name
Char
help='The name that identifies the room closure reason'
required=True
translate=True
pms_property_ids
Many2many → pms.property
column1='room_closure_reason_type_id'
column2='pms_property_id'
comodel_name='pms.property'
help='Properties with access to the element; if not set, all properties can access'
ondelete='restrict'
relation='pms_room_closure_reason_pms_property_rel'
string='Properties'
No public methods.
allowed_reservation_ids
Many2many → pms.reservation
column1='folio_changes_id'
column2='allowed_reservation_ids'
comodel_name='pms.reservation'
compute='_compute_allowed_reservation_ids'
relation='folio_changes_allowed_reservation_rel'
string='Allowed Reservations'
allowed_room_type_ids
Many2many → pms.room.type
column1='folio_changes_id'
column2='allowed_room_type_ids'
comodel_name='pms.room.type'
compute='_compute_allowed_room_type_ids'
relation='folio_changes_allowed_room_type_rel'
string='Allowed Room Types'
allowed_service_ids
Many2many → pms.service
column1='folio_changes_id'
column2='allowed_service_ids'
comodel_name='pms.service'
compute='_compute_allowed_service_ids'
relation='folio_changes_allowed_service_rel'
string='Allowed Services'
apply_board_service
Boolean
default=False
string='Add Board Service to reservations'
apply_day_qty
Boolean
default=False
help='If not set, it will use the default product day qty'
string='Change cuantity service per day'
apply_discount
Boolean
default=False
string='Apply Discount update'
apply_new_checkin
Boolean
default=False
string='Apply Checkin Update'
apply_new_checkout
Boolean
default=False
string='Apply Checkout Update'
apply_on_all_week
Boolean
default=True
string='Apply Availability Rule for the whole week'
apply_on_friday
Boolean
default=False
string='Apply Availability Rule on fridays'
apply_on_monday
Boolean
default=False
string='Apply Availability Rule on mondays'
apply_on_saturday
Boolean
default=False
string='Apply Availability Rule on saturdays'
apply_on_sunday
Boolean
default=False
string='Apply Availability Rule on sundays'
apply_on_thursday
Boolean
default=False
string='Apply Availability Rule on thursdays'
apply_on_tuesday
Boolean
default=False
string='Apply Availability Rule on tuesdays'
apply_on_wednesday
Boolean
default=False
string='Apply Availability Rule on wednesdays'
apply_partner_id
Boolean
default=False
string='Apply Customer'
apply_price
Boolean
default=False
string='Apply Price update'
apply_pricelist_id
Boolean
default=False
string='Apply Pricelist'
apply_service
Boolean
default=False
string='Add Service to reservations'
change_from_date
Date
default=<expr>
string='Apply From'
change_to_date
Date
default=<expr>
string='Apply To'
dates_incongruence
Boolean
compute='_compute_dates_incongruence'
help='Indicates that there are reservations with different checkin and/or checkout'
store=True
day_qty
Integer
string='Quantity per day'
folio_id
Many2one → pms.folio
comodel_name='pms.folio'
default=<expr>
string='Folio'
modification_type
Selection
default='reservations'
selection=[('reservations', 'Reservations'), ('dates', 'Dates'), ('services', 'Services Prices')]
new_board_service_id
Many2one → pms.board.service
comodel_name='pms.board.service'
string='New Board Service'
new_checkin
Date
default=<expr>
new_checkout
Date
default=<expr>
new_discount
Float
string='New Discount %'
new_partner_id
Many2one → res.partner
comodel_name='res.partner'
string='Customer'
new_price
Float
new_pricelist_id
Many2one → product.pricelist
comodel_name='product.pricelist'
domain="[('is_pms_available', '=', True)]"
string='Pricelist'
new_service_id
Many2one → product.product
comodel_name='product.product'
domain="[('sale_ok','=',True)]"
string='New Service'
nights
Integer
compute='_compute_nights'
reservation_ids
Many2many → pms.reservation
column1='folio_changes_id'
column2='reservation_ids'
comodel_name='pms.reservation'
default=<expr>
domain="[('id', 'in', allowed_reservation_ids)]"
relation='folio_changes_reservation_rel'
string='Reservations'
room_type_filter_ids
Many2many → pms.room.type
column1='folio_changes_id'
column2='room_type_ids'
comodel_name='pms.room.type'
default=<expr>
domain="[('id', 'in', allowed_room_type_ids)]"
relation='folio_changes_room_type_rel'
string='Room types'
service_ids
Many2many → pms.service
column1='folio_changes_id'
column2='service_ids'
comodel_name='pms.service'
default=<expr>
domain="[('id', 'in', allowed_service_ids)]"
relation='folio_changes_service_rel'
string='Services'
button_change(self)
default_change_from_date(self)
default_change_new_checkin(self)
default_change_new_checkout(self)
default_change_to_date(self)
amount
Float
digits='Product Price'
available_journal_ids
Many2many → account.journal
comodel_name='account.journal'
compute='_compute_available_journal_ids'
available_payment_method_line_ids
Many2many → account.payment.method.line
comodel_name='account.payment.method.line'
compute='_compute_available_payment_method_line_ids'
date
Date
default=fields.Date.context_today
required=True
folio_id
Many2one → pms.folio
comodel_name='pms.folio'
required=True
string='Folio'
journal_id
Many2one → account.journal
comodel_name='account.journal'
domain="[('id', 'in', available_journal_ids)]"
required=True
string='Journal'
partner_id
Many2one → res.partner
comodel_name='res.partner'
string='Partner'
payment_method_line_id
Many2one → account.payment.method.line
comodel_name='account.payment.method.line'
domain="[('id', 'in', available_payment_method_line_ids)]"
required=True
string='Payment Method'
reservation_ids
Many2many → pms.reservation
comodel_name='pms.reservation'
string='Reservations'
service_ids
Many2many → pms.service
comodel_name='pms.service'
string='Services'
button_payment(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/pms |
| GIT | |
| GIT | https://github.com/OCA/pms.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/pms/tree/14.0/pms |
| VERSION | |
| VERSION | 3.51.0 |
| CATEGORY | |
| CATEGORY | Generic Modules/Property Management System |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Commit [Sun] |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Commit [Sun] |
| COMMITTERS | |
| COMMITTERS | GitHub, OCA Transbot, oca-travis, Weblate, OCA-git-bot, Eric Antones, Darío Lodeiros, JesusVMayor, oca-ci, Dario Lodeiros, oca-git-bot, braisab, Henrik Norlin, Sara Lago, padomi, miguelpadin, DarioLodeiros, Josue, Pablo Quesada Barriuso, Jose Luis Algara, Brais Abeijón |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/pms |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:41:11 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/account-reconcile: - account_reconciliation_widget OCA/partner-contact: - partner_firstname - partner_second_lastname - partner_contact_gender - partner_contact_personal_information_page - partner_contact_birthdate - partner_contact_nationality - partner_identification OCA/pms: - multi_pms_properties OCA/queue: - queue_job OCA/web: - web_timeline odoo/odoo: - base - base_automation - resource - web - base_setup - bus - web_tour - sales_team - account - product - uom - analytic - portal - web_editor - http_routing - auth_signup - digest - base_sparse_field - contacts - sale - payment - utm |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
requests |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_analytic_tag_form_view_add_distribution_tags |
account.analytic.tag.form.add_distribution_tags | account.analytic.tag | xpath | Inherits analytic.account_analytic_tag_form_view |
account_journal_dashboard_kanban_view |
account.journal | xpath | Inherits account.account_journal_dashboard_kanban_view | |
account_journal_view_form |
account.journal | xpath | Inherits account.view_account_journal_form | |
account_payment_view_form |
account.payment | xpath | Inherits account.view_account_payment_form | |
advanced_filters_wizard |
Filter by dates | pms.advanced.filters.wizard | form | New |
assets_backend |
pms assets | ir.ui.view | qweb | Inherits web.assets_backend |
assets_frontend |
assets_frontend | ir.ui.view | qweb | Inherits portal.assets_frontend |
availability_plan_rule_view_form |
pms.availability.plan.rule.form | pms.availability.plan.rule | form | New |
availability_plan_rule_view_tree |
pms.availability.plan.rule.tree | pms.availability.plan.rule | tree | New |
availability_view_form |
pms.availability.plan.form | pms.availability.plan | form | New |
availability_view_tree |
pms.availability.plan.tree | pms.availability.plan | tree | New |
bank_statement_form |
account.bank.statement | xpath | Inherits account.view_bank_statement_form | |
booking_duplicate |
Duplicate Folio | pms.booking.duplicate | form | New |
booking_engine |
Folio Wizard | pms.booking.engine | form | New |
company_view_form |
res.company | xpath | Inherits base.view_company_form | |
folio_portal_template |
Folio Portal Template | ir.ui.view | qweb | Inherits portal.portal_sidebar |
inherit_partner_id_numbers_form |
inherit.res.partner.id_number.form | res.partner.id_number | xpath | Inherits partner_identification.view_partner_id_numbers_form |
inherit_partner_id_numbers_tree |
inherit.res.partner.id_number.tree | res.partner.id_number | xpath | Inherits partner_identification.view_partner_id_numbers_tree |
massive_changes_wizard |
Availability Wizard | pms.massive.changes.wizard | form | New |
move_form |
account.move | xpath | Inherits account.view_move_form | |
payment_acquirer_form |
muliproperty.payment.acquirer.form | payment.acquirer | field | Inherits payment.acquirer_form |
payment_transaction_inherit_view_form |
payment.transaction | xpath | Inherits payment.transaction_form | |
pms_amenity_search |
pms.room_amenity_search | pms.amenity | search | New |
pms_amenity_view_form |
pms.amenity.form | pms.amenity | form | New |
pms_amenity_view_list |
pms.room_amenity_list | pms.amenity | tree | New |
pms_board_service_form |
pms.board.service.form | pms.board.service | form | New |
pms_board_service_room_type_form |
pms.board.service.room.type.form | pms.board.service.room.type | form | New |
pms_board_service_view_tree |
pms.board.service.tree | pms.board.service | tree | New |
pms_cancelation_rule_form |
pms.cancelation.rule.form | pms.cancelation.rule | form | New |
pms_cancelation_rule_view_tree |
pms.cancelation.rule.tree | pms.cancelation.rule | tree | New |
pms_checkin_partner_folio_view_tree |
pms.checkin.partner.folio.view.tree | pms.checkin.partner | tree | New |
pms_checkin_partner_graph |
pms.checkin.partner.graph | pms.checkin.partner | graph | New |
pms_checkin_partner_kanban_view |
pms.checkin.partner.kanban | pms.checkin.partner | kanban | New |
pms_checkin_partner_pivot |
pms.checkin.partner.pivot | pms.checkin.partner | pivot | New |
pms_checkin_partner_reservation_view_tree |
pms.checkin.partner.reservation.view.tree | pms.checkin.partner | tree | New |
pms_checkin_partner_view_calendar |
pms.checkin.partner.view.calendar | pms.checkin.partner | calendar | New |
pms_checkin_partner_view_folio_search |
pms.checkin.partner.search | pms.checkin.partner | search | New |
pms_checkin_partner_view_form |
Checkin Form | pms.checkin.partner | form | New |
pms_checkin_partner_view_search |
pms.checkin.partner.search | pms.checkin.partner | search | New |
pms_checkin_partner_view_tree |
pms.checkin.partner.view.tree | pms.checkin.partner | tree | New |
pms_folio_pivot |
pms.folio.pivot | pms.folio | pivot | New |
pms_folio_view_form |
pms.folio.form | pms.folio | form | New |
pms_folio_view_graph |
view.pms.folio.graph | pms.folio | graph | New |
pms_folio_view_kanban |
pms.folio.kanban | pms.folio | kanban | New |
pms_folio_view_search |
pms.folio.search | pms.folio | search | New |
pms_folio_view_tree |
pms.folio.tree | pms.folio | tree | New |
pms_proforma_invoice_template |
Invoice Proforma Portal Template | ir.ui.view | qweb | Inherits account.portal_invoice_page |
pms_property_views_form |
pms_property_views_form | pms.property | form | New |
pms_property_views_tree |
pms_property_views_tree | pms.property | tree | New |
pms_reservation_graph |
pms.reservation.graph | pms.reservation | graph | New |
pms_reservation_pivot |
pms.reservation.pivot | pms.reservation | pivot | New |
pms_reservation_view_bottom_tree |
pms.reservation.tree | pms.reservation | tree | Inherits pms.pms_reservation_view_tree |
pms_reservation_view_calendar |
pms.reservation.view.calendar | pms.reservation | calendar | New |
pms_reservation_view_form |
pms.reservation.form | pms.reservation | form | New |
pms_reservation_view_search |
pms.reservation.search | pms.reservation | search | New |
pms_reservation_view_timeline |
pms.reservation.view.timeline | pms.reservation | timeline | New |
pms_reservation_view_tree |
pms.reservation.tree | pms.reservation | tree | New |
pms_room_amenity_type_view_form |
pms.room_amenity_type_form | pms.amenity.type | form | New |
pms_room_amenity_type_view_list |
pms.room_amenity_type_list | pms.amenity.type | tree | New |
pms_room_closure_reason_view_form |
pms.room.closure.reason.form | room.closure.reason | form | New |
pms_room_closure_reason_view_tree |
>pms.room.closure.reason.tree | room.closure.reason | tree | New |
pms_room_type_class_view_form |
pms.room.type.class.form | pms.room.type.class | form | New |
pms_room_type_class_view_tree |
pms.room.type.class.tree | pms.room.type.class | tree | New |
pms_room_type_view_form |
pms.room_type.form | pms.room.type | form | New |
pms_room_type_view_search |
pms.room.type.search | pms.room.type | search | New |
pms_room_type_view_tree |
pms.room_type.tree | pms.room.type | tree | New |
pms_room_view_form |
pms.room.form | pms.room | form | New |
pms_room_view_kanban |
pms.room.kanban | pms.room | kanban | New |
pms_room_view_search |
pms.room.search | pms.room | search | New |
pms_room_view_tree |
pms.room.tree | pms.room | tree | New |
pms_sale_channel_view_form |
pms.sale.channel.form | pms.sale.channel | form | New |
pms_sale_channel_view_tree |
pms.sale.channel.tree | pms.sale.channel | tree | New |
pms_service_line_graph |
pms.service.line.graph | pms.service.line | graph | New |
pms_service_line_pivot |
pms.service.line.pivot | pms.service.line | pivot | New |
pms_service_line_report_view_tree |
pms.service.line.report.tree | pms.service.line | tree | New |
pms_service_line_view_calendar |
pms.service.line.view.calendar | pms.service.line | calendar | New |
pms_service_line_view_form |
pms.service.line.form | pms.service.line | form | New |
pms_service_line_view_search |
pms.service.line.search | pms.service.line | search | New |
pms_service_line_view_tree |
pms.service.line.tree | pms.service.line | tree | New |
pms_service_view_form |
.pms.service.form | pms.service | form | New |
pms_service_view_search |
pms.service.search | pms.service | search | New |
pms_service_view_tree |
.pms.service.view.tree | pms.service | tree | New |
pms_ubication_view_form |
pms.ubication.form | pms.ubication | form | New |
pms_ubication_view_tree |
pms.ubication.tree | pms.ubication | tree | New |
portal_folio_error |
Folio error/warning display | ir.ui.view | qweb | New |
portal_folio_page_payment |
Payment on My Folios | ir.ui.view | qweb | New |
portal_folio_payment |
Folio Payment | ir.ui.view | qweb | New |
portal_folio_success |
Invoice success display | ir.ui.view | qweb | New |
portal_my_folio |
My Folios | ir.ui.view | qweb | New |
portal_my_folio_invitations |
Precheckin Folio | ir.ui.view | qweb | New |
portal_my_folios |
Folios | ir.ui.view | qweb | Inherits portal.portal_my_home |
portal_my_home_menu_folio |
Portal layout : folio menu entries | ir.ui.view | qweb | Inherits portal.portal_breadcrumbs |
portal_my_home_menu_reservation |
Portal layout : reservation menu entries | ir.ui.view | qweb | Inherits portal.portal_breadcrumbs |
portal_my_precheckin_detail |
My Precheckin | ir.ui.view | qweb | New |
portal_my_precheckin_end |
Precheckin End | ir.ui.view | qweb | New |
portal_my_prechekin_folio |
My precheckin in folio | ir.ui.view | qweb | New |
portal_my_prechekin_reservation |
My precheckin in folio | ir.ui.view | qweb | New |
portal_my_reservation |
My Reservations | ir.ui.view | qweb | New |
portal_my_reservation_detail |
My Reservation | ir.ui.view | qweb | New |
portal_my_reservation_precheckin |
Precheckin Reservation | ir.ui.view | qweb | New |
portal_my_reservations |
Reservations | ir.ui.view | qweb | Inherits portal.portal_my_home |
portal_not_checkin |
Not Checkin | ir.ui.view | qweb | New |
product_pricelist_item_view_form |
product.pricelist.item | xpath | Inherits product.product_pricelist_item_form_view | |
product_pricelist_item_view_tree |
product.pricelist.item | tree | New | |
product_pricelist_view_form |
product.pricelist | xpath | Inherits product.product_pricelist_view | |
product_template_view_form |
view.product.template.form.inherited | product.template | xpath | Inherits product.product_template_form_view |
report_folio |
report_folio | ir.ui.view | qweb | New |
report_folio_document |
report_folio_document | ir.ui.view | qweb | New |
report_invoice_document |
report_invoice_document | ir.ui.view | qweb | Inherits account.report_invoice_document |
report_pms_pro_forma |
report_pms_pro_forma | ir.ui.view | qweb | New |
res_partner_view_form |
res.partner.view.form | res.partner | xpath | Inherits base.view_partner_form |
res_users_view_form |
User Properties fields | res.users | xpath | Inherits base.view_users_form |
reservation_wizard |
Split, join or swap reservations | pms.reservation.split.join.swap.wizard | form | New |
several_partners_wizard |
Several Partners | pms.several.partners.wizard | form | New |
template_footer |
template_footer | ir.ui.view | qweb | New |
template_header |
template_header | ir.ui.view | qweb | New |
template_reservation |
template_reservation | ir.ui.view | qweb | New |
template_reservation_confirmed |
Property Reservation Confirmed | ir.ui.view | qweb | New |
template_reservation_details |
template_reservation_details | ir.ui.view | qweb | New |
traveller_report |
traveller_report | ir.ui.view | qweb | New |
view_account_analytic_line_tree_inherit_account |
account.analytic.line.tree.inherit.account | account.analytic.line | field | Inherits account.view_account_analytic_line_tree_inherit_account |
view_account_invoice_filter |
account.move | xpath | Inherits account.view_account_invoice_filter | |
view_account_journal_search |
account.journal | xpath | Inherits account.view_account_journal_search | |
view_account_move_filter |
account.move | xpath | Inherits account.view_account_move_filter | |
view_account_move_line_filter |
account.move.line | xpath | Inherits account.view_account_move_line_filter | |
view_account_payment_search |
account.payment | xpath | Inherits account.view_account_payment_search | |
view_account_payment_tree |
account.payment | xpath | Inherits account.view_account_payment_tree | |
view_country_form |
view.country.form | res.country | xpath | Inherits base.view_country_form |
view_folio_advance_payment_inv |
Invoice Orders | folio.advance.payment.inv | form | New |
view_move_line_tree |
account.move.line | xpath | Inherits account.view_move_line_tree | |
view_move_tree |
account.move | xpath | Inherits account.view_move_tree | |
view_partner_category_form_inherited |
view.partner.category.form.inherited | res.partner.category | xpath | Inherits base.view_partner_category_form |
view_partner_data_form |
res.partner.form.data | res.partner | form | New |
view_partner_id_category_form_inherited |
view.partner.id.category.form.inherited | res.partner.id_category | xpath | Inherits partner_identification.view_partner_id_category_form |
view_partner_id_category_tree_inherited |
view.partner.id.category.tree.inherited | res.partner.id_category | xpath | Inherits partner_identification.view_partner_id_category_tree |
view_partner_property_form |
view.partner.property.form | res.partner | xpath | Inherits account.view_partner_property_form |
wizard_folio_changes_view_form |
wizard.folio.changes.view.form | wizard.folio.changes | form | New |
wizard_payment_folio_view_form |
wizard.payment.folio.view.form | wizard.payment.folio | form | New |
pms_property_id
Many2one → pms.property
check_pms_properties=True
comodel_name='pms.property'
index=True
name='Property'
No public methods.
pms_property_id
Many2one → pms.property
check_pms_properties=True
comodel_name='pms.property'
compute='_compute_pms_property_id'
index=True
name='Property'
readonly=False
store=True
No public methods.
journal_id
Many2one
check_pms_properties=True
pms_property_id
Many2one → pms.property
check_pms_properties=True
comodel_name='pms.property'
compute='_compute_pms_property_id'
copy=False
help='Properties with access to the element'
index=True
readonly=False
store=True
string='Property'
button_post(self)
folio_ids
Many2many → pms.folio
check_pms_properties=True
column1='account_journal_id'
column2='folio_id'
comodel_name='pms.folio'
ondelete='cascade'
relation='account_bank_statement_folio_rel'
string='Folios'
reservation_ids
Many2many → pms.reservation
check_pms_properties=True
column1='account_bank_statement_id'
column2='reservation_id'
comodel_name='pms.reservation'
help='Reservations in which the Account Bank Statement Lines are included'
ondelete='cascade'
relation='account_bank_statement_reservation_rel'
string='Reservations'
service_ids
Many2many → pms.service
check_pms_properties=True
column1='account_bank_statement_id'
column2='service_id'
comodel_name='pms.service'
help='Services in which the Account Bank Statement Lines are included'
ondelete='cascade'
relation='account_bank_statement_service_rel'
string='Services'
No public methods.
allowed_pms_payments
Boolean
help='Use to pay for reservations'
string='For manual payments'
allowed_room_ids
Many2many → pms.room
column1='account_journal_id'
column2='room_id'
comodel_name='pms.room'
compute='_compute_allowed_room_ids'
help='Room to filter the room in the reservation'
relation='account_journal_allow_room_rel'
string='Rooms Filter allowed'
avoid_autoinvoice_downpayment
Boolean
default=False
help='Avoid autoinvoice downpayment'
string='Avoid autoinvoice downpayment'
is_simplified_invoice
Boolean
compute='_compute_is_simplified_invoice'
help='Use to simplified invoice'
readonly=False
store=True
string='Simplified invoice'
pms_property_ids
Many2many → pms.property
check_pms_properties=True
column1='account_journal_id'
column2='pms_property_id'
comodel_name='pms.property'
help='Properties with access to the element; if not set, all properties can access'
ondelete='restrict'
relation='account_journal_pms_property_rel'
string='Properties'
room_filter_ids
Many2many → pms.room
column1='account_journal_id'
column2='room_id'
comodel_name='pms.room'
domain="[('id', 'in', allowed_room_ids)]"
help='Room to filter the room types in the reservation'
relation='account_journal_room_rel'
string='Apply Rooms'
No public methods.
folio_ids
Many2many → pms.folio
column1='account_move_id'
column2='folio_ids_id'
comodel_name='pms.folio'
compute='_compute_folio_origin'
help='Folios where the account move are included'
readonly=False
relation='account_move_folio_ids_rel'
store=True
string='Folios'
is_simplified_invoice
Boolean
help='Technical field to know if the invoice is simplified'
related='journal_id.is_simplified_invoice'
store=True
origin_agency_id
Many2one → res.partner
comodel_name='res.partner'
compute='_compute_origin_agency_id'
domain="[('is_agency', '=', True)]"
help='The agency where the folio account move originates'
index=True
readonly=False
store=True
string='Origin Agency'
pms_property_id
Many2one → pms.property
comodel_name='pms.property'
compute='_compute_pms_property_id'
help='The property associated to the account move'
index=True
readonly=False
store=True
string='Property'
get_proforma_portal_url(self, suffix=None, report_type=None, download=None, query_string=None, anchor=None)
match_pays_by_amount(self, payments, invoice)
folio_ids
Many2many → pms.folio
check_pms_properties=True
comodel_name='pms.folio'
compute='_compute_folio_ids'
store=True
string='Folios'
folio_line_ids
Many2many → folio.sale.line
column1='invoice_line_id'
column2='sale_line_id'
comodel_name='folio.sale.line'
copy=True
help='The folio lines in the account move lines'
relation='folio_sale_line_invoice_rel'
string='Folio Lines'
move_id
Many2one
check_pms_properties=True
name
Char
compute='_compute_name'
readonly=False
store=True
name_changed_by_user
Boolean
default=True
help='Techinal field to know if the name was set manually by the user\n or by the system. If the name was set manually, the system will not\n change it when the qty days are changed'
string='Name set manually'
origin_agency_id
Many2one → res.partner
comodel_name='res.partner'
compute='_compute_origin_agency_id'
domain="[('is_agency', '=', True)]"
help='The agency where the folio account move originates'
index=True
readonly=False
store=True
string='Origin Agency'
pms_property_id
Many2one → pms.property
check_pms_properties=True
comodel_name='pms.property'
compute='_compute_pms_property_id'
index=True
name='Property'
readonly=False
store=True
reconcile(self)
folio_ids
Many2many → pms.folio
column1='payment_id'
column2='folio_id'
comodel_name='pms.folio'
compute='_compute_folio_ids'
readonly=False
relation='account_payment_folio_rel'
store=True
string='Folios'
origin_agency_id
Many2one → res.partner
comodel_name='res.partner'
compute='_compute_origin_agency_id'
domain="[('is_agency', '=', True)]"
help='The agency where the folio account move originates'
index=True
readonly=True
store=True
string='Origin Agency'
origin_reference
Char
help='The reference of the payment origin'
string='Origin Reference'
action_draft(self)
auto_invoice_downpayments(self, offset=0)
advance_payment_method
Selection
default='delivered'
help='A standard invoice is issued with all the order lines ready for invoicing, according to their invoicing policy (based on ordered or delivered quantity).'
required=True
selection=[('delivered', 'Regular invoice'), ('percentage', 'Down payment (percentage)'), ('fixed', 'Down payment (fixed amount)')]
string='Create Invoice'
amount
Float
digits='Account'
help='The percentage of amount to be invoiced in advance, taxes excluded.'
string='Down Payment Amount'
bill_rooms
Boolean
default=True
help='Bill Rooms'
string='Bill Rooms'
bill_services
Boolean
default=True
help='Bill Services'
string='Bill Services'
count
Integer
default=<expr>
string='Order Count'
currency_id
Many2one → res.currency
comodel_name='res.currency'
default=<expr>
help='Currency used in invoices'
string='Currency'
deduct_down_payments
Boolean
default=True
help='Deduct down payments'
string='Deduct down payments'
deposit_account_id
Many2one → account.account
comodel_name='account.account'
default=<expr>
domain=[('deprecated', '=', False)]
help='Account used for deposits'
string='Income Account'
deposit_taxes_id
Many2many → account.tax
comodel_name='account.tax'
default=<expr>
help='Taxes used for deposits'
string='Customer Taxes'
fixed_amount
Monetary
help='The fixed amount to be invoiced in advance, taxes excluded.'
string='Down Payment Amount (Fixed)'
has_down_payments
Boolean
default=<expr>
help='Has down payments'
readonly=True
string='Has down payments'
partner_invoice_id
Many2one → res.partner
comodel_name='res.partner'
default=<expr>
help='Invoice address for current partner'
string='Billing contact'
product_id
Many2one → product.product
comodel_name='product.product'
default=<expr>
domain=[('type', '=', 'service')]
string='Down Payment Product'
create_invoices(self)
onchange_advance_payment_method(self)
analytic_tag_ids
Many2many → account.analytic.tag
comodel_name='account.analytic.tag'
domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]"
string='Analytic Tags'
autoinvoice_date
Date
compute='_compute_autoinvoice_date'
store=True
string='Autoinvoice Date'
company_id
Many2one
help='The company in the folio sale line'
index=True
readonly=True
related='folio_id.company_id'
store=True
string='Company'
currency_id
Many2one
depends=['folio_id.currency_id']
help='The currency for the folio'
readonly=True
related='folio_id.currency_id'
store=True
string='Currency'
date_order
Date
compute='_compute_date_order'
help='Field to order by service'
readonly=True
store=True
string='Date'
default_invoice_to
Many2one → res.partner
comodel_name='res.partner'
help='Indicates the contact to which this line will be\n billed by default, if it is not established,\n a guest or the generic contact will be used instead'
index=True
ondelete='restrict'
string='Invoice to'
discount
Float
compute='_compute_discount'
digits='Discount'
help='Discount of total price in folio sale line'
readonly=False
store=True
string='Discount (%)'
display_type
Selection
default=False
help='Technical field for UX purpose.'
selection=[('line_section', 'Section'), ('line_note', 'Note')]
string='Display Type'
folio_id
Many2one → pms.folio
comodel_name='pms.folio'
copy=False
help='Folio to which folio sale line belongs'
index=True
ondelete='cascade'
required=True
string='Folio Reference'
invoice_lines
Many2many → account.move.line
column1='sale_line_id'
column2='invoice_line_id'
comodel_name='account.move.line'
copy=False
help='Folio sale line invoice lines'
relation='folio_sale_line_invoice_rel'
string='Invoice Lines'
invoice_status
Selection
compute='_compute_invoice_status'
help='Invoice Status; it can be: invoiced, to invoice, no'
readonly=True
selection=[('invoiced', 'Fully Invoiced'), ('to_invoice', 'To Invoice'), ('no', 'Nothing to Invoice')]
store=True
string='Invoice Status'
is_board_service
Boolean
help='Indicates if the service included in folio sale line is part of a board service'
related='service_id.is_board_service'
store=True
string='Board Service'
is_downpayment
Boolean
help='Down payments are made when creating invoices from a folio. They are not copied when duplicating a folio.'
string='Is a down payment'
name
Text
compute='_compute_name'
help='Description of folio sale line'
readonly=False
store=True
string='Description'
origin_agency_id
Many2one → res.partner
comodel_name='res.partner'
compute='_compute_origin_agency_id'
domain="[('is_agency', '=', True)]"
help='The agency where the folio sale line originates'
index=True
readonly=False
store=True
string='Origin Agency'
pms_property_id
Many2one → pms.property
check_pms_properties=True
comodel_name='pms.property'
help='Property with access to the element;'
index=True
readonly=True
related='folio_id.pms_property_id'
store=True
string='Property'
price_reduce
Float
compute='_compute_get_price_reduce'
digits='Product Price'
help='Reduced price amount, that is, total price with discounts applied'
readonly=True
store=True
string='Price Reduce'
price_reduce_taxexcl
Monetary
compute='_compute_get_price_reduce_notax'
help='Price with discounts applied without taxes'
readonly=True
store=True
string='Price Reduce Tax excl'
price_reduce_taxinc
Monetary
compute='_compute_get_price_reduce_tax'
help='Price with discounts applied and taxes included'
readonly=True
store=True
string='Price Reduce Tax inc'
price_subtotal
Monetary
compute='_compute_amount'
help='Subtotal price without taxes'
readonly=True
store=True
string='Subtotal'
price_tax
Float
compute='_compute_amount'
help='Total of taxes in a reservation'
readonly=True
store=True
string='Total Tax'
price_total
Monetary
compute='_compute_amount'
help='Total price with taxes'
readonly=True
store=True
string='Total'
price_unit
Float
digits='Product Price'
help='Unit Price of folio sale line'
string='Unit Price'
product_id
Many2one → product.product
change_default=True
check_company=True
comodel_name='product.product'
compute='_compute_product_id'
domain="[('sale_ok', '=', True), ('is_pms_available', '=', True), '|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help="Product associated with folio sale line, can be product associated with service or product associated withreservation's room type, in other case it's false"
index=True
ondelete='restrict'
store=True
string='Product'
product_uom
Many2one → uom.uom
comodel_name='uom.uom'
domain="[('category_id', '=', product_uom_category_id)]"
help=''
index=True
string='Unit of Measure'
product_uom_category_id
Many2one
help=''
readonly=True
related='product_id.uom_id.category_id'
string='Unit of Measure Category'
product_uom_qty
Float
compute='_compute_product_uom_qty'
digits='Product Unit of Measure'
help=''
readonly=False
store=True
string='Quantity'
product_uom_readonly
Boolean
compute='_compute_product_uom_readonly'
help=''
string=''
qty_invoiced
Float
compute='_compute_get_invoice_qty'
compute_sudo=True
digits='Product Unit of Measure'
help='It is the amount invoiced when an invoice is issued'
readonly=True
store=True
string='Invoiced Quantity'
qty_to_invoice
Float
compute='_compute_get_to_invoice_qty'
digits='Product Unit of Measure'
help='The quantity to invoice. If the invoice policy is order, the quantity to invoice is calculated from the ordered quantity. Otherwise, the quantity delivered is used.'
readonly=True
store=True
string='To Invoice Quantity'
reservation_id
Many2one → pms.reservation
comodel_name='pms.reservation'
copy=False
help='Reservation to which folio sale line belongs'
index=True
ondelete='cascade'
string='Reservation Reference'
reservation_line_ids
Many2many → pms.reservation.line
comodel_name='pms.reservation.line'
help='Reservation lines associated with folio sale line, they corresponds with nights'
string='Nights'
reservation_order
Integer
compute='_compute_reservation_order'
help='Field to order by reservation id'
readonly=True
store=True
string='Reservation Id'
section_id
Many2one → folio.sale.line
comodel_name='folio.sale.line'
compute='_compute_section_id'
help='The section of the folio sale line'
index=True
string='Section'
sequence
Integer
default=10
help=''
string='Sequence'
service_id
Many2one → pms.service
comodel_name='pms.service'
copy=False
help='Sevice included in folio sale line'
index=True
ondelete='cascade'
string='Service Reference'
service_line_ids
Many2many → pms.service.line
comodel_name='pms.service.line'
help='Subservices included in folio sale line service'
string='Service Lines'
service_order
Integer
compute='_compute_service_order'
help='Field to order by service id'
readonly=True
store=True
string='Service Id'
state
Selection
copy=False
help='The status of the folio related with folio sale line'
readonly=True
related='folio_id.state'
store=True
string='Folio Status'
tax_ids
Many2many → account.tax
comodel_name='account.tax'
compute='_compute_tax_ids'
domain=['|', ('active', '=', False), ('active', '=', True)]
help='Taxes applied in the folio sale line'
store=True
string='Taxes'
untaxed_amount_invoiced
Monetary
compute='_compute_untaxed_amount_invoiced'
compute_sudo=True
help='The amount to invoice without taxes in the line of folio'
store=True
string='Untaxed Invoiced Amount'
untaxed_amount_to_invoice
Monetary
compute='_compute_untaxed_amount_to_invoice'
compute_sudo=True
help='The invoiced amount without taxes in the line of the folio'
store=True
string='Untaxed Amount To Invoice'
generate_folio_sale_name(self, reservation_id, product_id, service_id, reservation_line_ids, service_line_ids, qty=False)
name_get(self)
unlink(self)
write(self, values)
No new fields.
Public methods (2)check_value(self)
unlink(self)
No new fields.
Public methods (1)session_info(self)
field_id
Many2one → ir.model.fields
comodel_name='ir.model.fields'
index=True
string='Field'
field_name
Char
compute='_compute_field_name'
readonly=False
store=True
string='Field Name'
model_id
Many2one → ir.model
comodel_name='ir.model'
index=True
string='Model'
model_name
Char
compute='_compute_model_name'
readonly=False
store=True
string='Model Name'
pms_property_id
Many2one → pms.property
comodel_name='pms.property'
help=''
index=True
string='Properties'
record
Integer
string='Record Id'
value_float
Float
string='Float Field Value'
value_integer
Integer
string='Integer Field Value'
value_reference
Text
string='Reference Field Value'
create(self, vals_list)
get_field_value(self, pms_property_id, model_name, field_name, record_id, value_type)
set_field_value(self, pms_property_id, model_name, field_name, record_id, value)
No new fields.
Public methods (1)send_mail(self, auto_commit=False)
pms_property_ids
Many2many → pms.property
check_pms_properties=True
column1='acquirer_id'
column2='property_id'
comodel_name='pms.property'
help='Properties with access to the element; if not set, all properties can access'
relation='pms_acquirer_property_rel'
required=False
string='Properties'
No public methods.
No new fields.
Public methods (1)default_get(self, fields)
folio_ids
Many2many → pms.folio
column1='payment_transaction_id'
column2='folio_id'
comodel_name='pms.folio'
ondelete='cascade'
relation='payment_transaction_folio_rel'
string='Folios'
render_folio_button(self, folio, submit_txt=None, render_values=None, custom_amount=None)
pms_domain
Char
string='Domain'
pms_model_id
Many2one → ir.model
comodel_name='ir.model'
default=<expr>
domain=[('model', 'in', PMS_BUSINESS_MODELS)]
ondelete='cascade'
required=True
string='Recipients Model'
pms_model_name
Char
readonly=True
related='pms_model_id.model'
related_sudo=True
string='Recipients Model Name'
action_filter(self)
active
Boolean
default=True
help='Determines if amenity is active'
string='Active'
default_code
Char
help='Internal unique identifier of the amenity'
string='Internal Reference'
is_add_code_room_name
Boolean
help='True if the Internal Reference should appear in the display name of the rooms'
string='Add in room name'
name
Char
help='Amenity Name'
required=True
string='Amenity Name'
translate=True
pms_amenity_type_id
Many2one → pms.amenity.type
check_pms_properties=True
comodel_name='pms.amenity.type'
help='Segment the amenities by categories (multimedia, comfort, etc ...)'
index=True
string='Amenity Category'
pms_property_ids
Many2many → pms.property
check_pms_properties=True
column1='amenity_id'
column2='pms_property_id'
comodel_name='pms.property'
help='Properties with access to the element; if not set, all properties can access'
ondelete='restrict'
relation='pms_amenity_pms_property_rel'
string='Properties'
No public methods.
active
Boolean
default=True
help='Determines if amenity type is active'
string='Active'
name
Char
help='Amenity Type Name'
required=True
string='Amenity Type Name'
translate=True
pms_amenity_ids
One2many → pms.amenity
check_pms_properties=True
comodel_name='pms.amenity'
help='Amenities included in this type'
inverse_name='pms_amenity_type_id'
string='Amenities In This Category'
pms_property_ids
Many2many → pms.property
check_pms_properties=True
column1='amenity_type_id'
column2='pms_property_id'
comodel_name='pms.property'
help='Properties with access to the element; if not set, all properties can access'
ondelete='restrict'
relation='pms_amenity_type_pms_property_rel'
string='Properties'
No public methods.
name
Char
help='Name of the automated mail.'
required=True
string='Name'
No public methods.
avail_rule_ids
One2many → pms.availability.plan.rule
check_pms_properties=True
comodel_name='pms.availability.plan.rule'
inverse_name='avail_id'
string='Avail record rules'
child_avail_ids
One2many → pms.availability
check_pms_properties=True
comodel_name='pms.availability'
compute='_compute_child_avail_ids'
help='Child availabilities for this availability'
inverse_name='parent_avail_id'
store=True
string='Child Avails'
date
Date
help='Date for which availability applies'
readonly=True
required=True
string='Date'
parent_avail_id
Many2one → pms.availability
check_pms_properties=True
comodel_name='pms.availability'
compute='_compute_parent_avail_id'
help='Parent availability for this availability'
index=True
ondelete='restrict'
store=True
string='Parent Avail'
pms_property_id
Many2one → pms.property
check_pms_properties=True
comodel_name='pms.property'
help='Property to which the availability is directed'
index=True
ondelete='restrict'
readonly=True
required=True
string='Property'
real_avail
Integer
compute='_compute_real_avail'
help=''
readonly=True
store=True
string='Real Avail'
reservation_line_ids
One2many → pms.reservation.line
check_pms_properties=True
comodel_name='pms.reservation.line'
help='They are the lines of the reservation into a reservation,they corresponds to the nights'
inverse_name='avail_id'
readonly=True
string='Reservation Lines'
room_type_id
Many2one → pms.room.type
check_pms_properties=True
comodel_name='pms.room.type'
help='Room type for which availability is indicated'
index=True
ondelete='cascade'
readonly=True
required=True
string='Room Type'
get_occupied_child_rooms(self, rooms, checkin, checkout)
get_occupied_parent_rooms(self, room, checkin, checkout)
get_rooms_not_avail(self, checkin, checkout, room_ids, pms_property_id, current_lines=False)
active
Boolean
default=True
help='If unchecked, it will allow you to hide the Availability plan without removing it.'
string='Active'
name
Char
help='Name of availability plan'
required=True
string='Availability Plan Name'
pms_pricelist_ids
One2many → product.pricelist
check_pms_properties=True
comodel_name='product.pricelist'
domain="[('is_pms_available', '=', True)]"
help='Pricelists of the availability plan '
inverse_name='availability_plan_id'
string='Pricelists'
pms_property_ids
Many2many → pms.property
check_pms_properties=True
column1='availability_plan_id'
column2='pms_property_id'
comodel_name='pms.property'
help='Properties with access to the element; if not set, all properties can access'
ondelete='restrict'
relation='pms_availability_plan_pms_property_rel'
string='Properties'
rule_ids
One2many → pms.availability.plan.rule
check_pms_properties=True
comodel_name='pms.availability.plan.rule'
help='Rules in a availability plan'
inverse_name='availability_plan_id'
string='Availability Rules'
any_rule_applies(cls, checkin, checkout, item)
open_massive_changes_wizard(self)
update_quota(self, pricelist_id, room_type_id, date, pms_property_id)
avail_id
Many2one → pms.availability
check_pms_properties=True
comodel_name='pms.availability'
compute='_compute_avail_id'
index=True
ondelete='restrict'
readonly=False
store=True
string='Avail record'
availability_plan_id
Many2one → pms.availability.plan
check_pms_properties=True
comodel_name='pms.availability.plan'
help='The availability plan that include the Availabilty Rule'
index=True
ondelete='cascade'
string='Availability Plan'
closed
Boolean
default=False
help='Indicate if property is closed or not'
string='Closed'
closed_arrival
Boolean
default=False
help=''
string='Closed Arrival'
closed_departure
Boolean
default=False
help=''
string='Closed Departure'
date
Date
help='Date for which availability rule applies'
string='Date'
max_avail
Integer
compute='_compute_max_avail'
help='Maximum simultaneous availability on own Booking Engine'
readonly=False
store=True
string='Max. Availability'
max_stay
Integer
default=0
help='Maximum stay'
string='Max. Stay'
max_stay_arrival
Integer
default=0
help='Maximum stay if checkin is today'
string='Max. Stay Arrival'
min_stay
Integer
default=0
help='Minimum stay'
string='Min. Stay'
min_stay_arrival
Integer
default=0
help='Minimum stay if checkin is today'
string='Min. Stay Arrival'
plan_avail
Integer
compute='_compute_plan_avail'
store='True'
pms_property_id
Many2one → pms.property
check_pms_properties=True
comodel_name='pms.property'
help='Properties with access to the element'
index=True
ondelete='restrict'
required=True
string='Property'
quota
Integer
compute='_compute_quota'
help='Generic Quota assigned.'
readonly=False
store=True
string='Quota'
real_avail
Integer
related='avail_id.real_avail'
store='True'
string='Real availability'
room_type_id
Many2one → pms.room.type
check_pms_properties=True
comodel_name='pms.room.type'
help='Room type for which availability rule is applied'
index=True
ondelete='cascade'
required=True
string='Room Type'
No public methods.
amount
Float
compute='_compute_board_amount'
digits='Product Price'
help='Price for this Board Service. It corresponds to the sum of his board service lines'
store=True
string='Amount'
board_service_line_ids
One2many → pms.board.service.line
comodel_name='pms.board.service.line'
help='Services included in this Board Service'
inverse_name='pms_board_service_id'
string='Board Service Lines'
default_code
Char
help='Unique Board Service identification code per property'
required=True
string='Board Service Code'
name
Char
help='Board Service Name'
index=True
required=True
size=64
string='Board Service Name'
translate=True
pms_board_service_room_type_ids
One2many → pms.board.service.room.type
comodel_name='pms.board.service.room.type'
help='Board Services Room Type corresponding to this Board Service,One board service for several room types'
inverse_name='pms_board_service_id'
string='Board Services Room Type'
pms_property_ids
Many2many → pms.property
check_pms_properties=True
column1='board_service_id'
column2='pms_property_id'
comodel_name='pms.property'
help='Properties with access to the element; if not set, all properties can access'
ondelete='restrict'
relation='pms_board_service_pms_property_rel'
required=False
string='Properties'
show_detail_report
Boolean
help='True if you want that board service detail to be shown on the report'
string='Show Detail Report'
get_unique_by_property_code(self, pms_property_id, default_code=None)
adults
Boolean
default=False
help='Apply service to adults'
string='Adults'
amount
Float
default=<expr>
digits='Product Price'
help='Price for this Board Service Line/Product'
string='Amount'
children
Boolean
default=False
help='Apply service to children'
string='Children'
pms_board_service_id
Many2one → pms.board.service
check_pms_properties=True
comodel_name='pms.board.service'
help='Board Service in which this line is included'
index=True
ondelete='cascade'
required=True
string='Board Service'
pms_property_ids
Many2many → pms.property
check_pms_properties=True
column1='pms_board_service_line_id'
column2='pms_property_id'
comodel_name='pms.property'
help='Properties with access to the element; if not set, all properties can access'
relation='pms_board_service_line_pms_property_rel'
store=True
string='Properties'
product_id
Many2one → product.product
check_pms_properties=True
comodel_name='product.product'
help='Product associated with this board service line'
index=True
required=True
string='Product'
create(self, vals)
onchange_product_id(self)
write(self, vals)
amount
Float
compute='_compute_board_amount'
digits='Product Price'
help='Price for this Board Service. It corresponds to the sum of his board service lines'
store=True
string='Amount'
board_service_line_ids
One2many → pms.board.service.room.type.line
comodel_name='pms.board.service.room.type.line'
help='Services included in this Board Service'
inverse_name='pms_board_service_room_type_id'
required=True
string='Board Service Lines'
by_default
Boolean
help='Indicates if this board service is applied by default in the room type'
string='Apply by Default'
pms_board_service_id
Many2one → pms.board.service
check_pms_properties=True
comodel_name='pms.board.service'
help='Board Service corresponding to this Board Service Room Type'
index=True
ondelete='cascade'
required=True
string='Board Service'
pms_property_id
Many2one → pms.property
check_pms_properties=True
comodel_name='pms.property'
help='Property with access to the element; if not set, all property can access'
index=True
ondelete='restrict'
required=False
store=True
string='Property'
pms_room_type_id
Many2one → pms.room.type
check_pms_properties=True
comodel_name='pms.room.type'
help='Room Type for which this Board Service is available'
index=True
ondelete='cascade'
required=True
string='Room Type'
pricelist_ids
Many2many → product.pricelist
comodel_name='product.pricelist'
help='Pricelists where this Board Service is available'
string='Pricelists'
constrains_duplicated_board_default(self)
create(self, vals)
init(self)
name_get(self)
open_board_lines_form(self)
prepare_board_service_reservation_ids(self, board_service_id)
write(self, vals)
adults
Boolean
default=False
help='Apply service to adults'
string='Adults'
amount
Float
default=<expr>
digits='Product Price'
help='Price for this Board Service Room Type Line/Product'
string='Amount'
children
Boolean
default=False
help='Apply service to children'
string='Children'
pms_board_service_room_type_id
Many2one → pms.board.service.room.type
comodel_name='pms.board.service.room.type'
help='Board Service Room Type in which this line is included'
index=True
ondelete='cascade'
required=True
string='Board Service Room'
pms_property_id
Many2one → pms.property
check_pms_properties=True
comodel_name='pms.property'
help='Property with access to the element; if not set, all properties can access'
related='pms_board_service_room_type_id.pms_property_id'
string='Property'
product_id
Many2one → product.product
check_pms_properties=True
comodel_name='product.product'
domain="[('is_pms_available', '=', True)]"
help='Product associated with this board service room type line'
index=True
readonly=True
string='Product'
No public methods.
agency_id
Many2one → res.partner
comodel_name='res.partner'
domain=[('is_agency', '=', True)]
help='Agency that made the reservation'
ondelete='restrict'
string='Agency'
channel_type_id
Many2one → pms.sale.channel
comodel_name='pms.sale.channel'
compute='_compute_channel_type_id'
domain=[('channel_type', '=', 'direct')]
help='Sales Channel through which the reservation was managed'
ondelete='restrict'
readonly=False
store=True
string='Direct Sale Channel'
created_folio_ids
Many2many → pms.folio
comodel_name='pms.folio'
help='Folios already created'
string='Folios'
discount
Float
default=0
help='Discount that be applied in total price'
string='Discount'
internal_comment
Text
help='Internal Folio notes for Staff'
string='Internal Folio Notes'
line_ids
One2many → pms.reservation.duplicate
check_pms_properties=True
comodel_name='pms.reservation.duplicate'
compute='_compute_line_ids'
help='Rooms to create'
inverse_name='booking_duplicate_id'
readonly=False
store=True
string='Rooms'
partner_id
Many2one → res.partner
check_pms_properties=True
comodel_name='res.partner'
compute='_compute_partner_id'
help='Partner who made the reservation'
readonly=False
store=True
string='Partner'
partner_name
Char
compute='_compute_partner_name'
help='In whose name is the reservation'
readonly=False
store=True
string='Partner name'
pms_property_id
Many2one → pms.property
check_pms_properties=True
comodel_name='pms.property'
help='Property to which the folio belongs'
related='reference_folio_id.pms_property_id'
string='Property'
pricelist_id
Many2one → product.pricelist
check_pms_properties=True
comodel_name='product.pricelist'
compute='_compute_pricelist_id'
domain="[('is_pms_available', '=', True)]"
help='Pricelist applied in folio'
readonly=False
store=True
string='Pricelist'
recompute_prices
Boolean
default=False
help='Leave unchecked if you want to respect\n the price of the original reservation regardless\n of what is marked in the rate'
string='Recompute Price'
reference_folio_id
Many2one → pms.folio
check_pms_properties=True
comodel_name='pms.folio'
help='Folio to copy data'
string='Folio Reference'
reservation_type
Selection
compute='_compute_reservation_type'
help="The type of the reservation. Can be 'Normal', 'Staff' or 'Out of Service'"
readonly=False
selection=[('normal', 'Normal'), ('staff', 'Staff'), ('out', 'Out of Service')]
store=True
string='Type'
segmentation_ids
Many2many → res.partner.category
comodel_name='res.partner.category'
compute='_compute_segmentation_ids'
domain="[('is_used_in_checkin', '=', True)]"
help='Partner Tags'
ondelete='restrict'
readonly=False
store=True
string='Segmentation'
start_date
Date
help='Date from first copy Checkin (reference min checkin folio reservation)'
required=True
string='From:'
total_price_folio
Float
compute='_compute_total_price_folio'
help='Total price of folio with taxes'
string='Total Price'
used_room_ids
Many2many → pms.room
comodel_name='pms.room'
compute='_compute_used_room_ids'
string='Used Rooms'
create_and_close(self)
create_and_new(self)
create_folio(self)
view_folios(self)
agency_id
Many2one → res.partner
comodel_name='res.partner'
domain=[('is_agency', '=', True)]
help='Agency that made the reservation'
ondelete='restrict'
string='Agency'
availability_results
One2many → pms.folio.availability.wizard
check_pms_properties=True
comodel_name='pms.folio.availability.wizard'
compute='_compute_availability_results'
help='Availability Results'
inverse_name='booking_engine_id'
readonly=False
store=True
string='Availability Results'
can_create_folio
Boolean
compute='_compute_can_create_folio'
string='Can create folio'
channel_type_id
Many2one → pms.sale.channel
comodel_name='pms.sale.channel'
compute='_compute_channel_type_id'
domain=[('channel_type', '=', 'direct')]
help='Sales Channel through which the reservation was managed'
ondelete='restrict'
readonly=False
required=True
store=True
string='Direct Sale Channel'
discount
Float
default=0
help='Discount that be applied in total price'
string='Discount'
end_date
Date
help='End date for creation of reservations and folios'
required=True
string='To:'
folio_id
Many2one → pms.folio
check_pms_properties=True
comodel_name='pms.folio'
help='Folio in which are included new reservations'
string='Folio'
internal_comment
Text
help='Internal Folio notes for Staff'
string='Internal Folio Notes'
partner_id
Many2one → res.partner
check_pms_properties=True
comodel_name='res.partner'
compute='_compute_partner_id'
help='Partner who made the reservation'
readonly=False
store=True
string='Partner'
partner_name
Char
compute='_compute_partner_name'
help='In whose name is the reservation'
readonly=False
store=True
string='Partner name'
pms_property_id
Many2one → pms.property
check_pms_properties=True
comodel_name='pms.property'
default=<expr>
help='Property to which the folio belongs'
string='Property'
pricelist_id
Many2one → product.pricelist
check_pms_properties=True
comodel_name='product.pricelist'
compute='_compute_pricelist_id'
domain="[('is_pms_available', '=', True)]"
help='Pricelist applied in folio'
readonly=False
store=True
string='Pricelist'
reservation_type
Selection
default=<expr>
help="The type of the reservation. Can be 'Normal', 'Staff' or 'Out of Service'"
selection=[('normal', 'Normal'), ('staff', 'Staff'), ('out', 'Out of Service')]
string='Type'
segmentation_ids
Many2many → res.partner.category
comodel_name='res.partner.category'
domain="[('is_used_in_checkin', '=', True)]"
help='Partner Tags'
ondelete='restrict'
string='Segmentation'
start_date
Date
help='Start date for creation of reservations and folios'
required=True
string='From:'
total_price_folio
Float
compute='_compute_total_price_folio'
help='Total price of folio with taxes'
string='Total Price'
create_folio(self)
active
Boolean
default=True
help='Determines if cancelation rule is active'
string='Active'
apply_on_late
Selection
default='first'
help='Days on which the cancelation rule applies when the reason is late arrival. Can be first, all days or specify the days.'
selection=[('first', 'First Day'), ('all', 'All Days'), ('days', 'Specify days')]
string='Late apply on'
apply_on_noshow
Selection
default='all'
help='Days on which the cancelation rule applies when the reason is no show. Can be first, all days or specify the days.'
selection=[('first', 'First Day'), ('all', 'All Days'), ('days', 'Specify days')]
string='No Show apply on'
days_intime
Integer
help='Maximum number of days for free cancellation before Checkin'
string='Days Late'
days_late
Integer
default='2'
help='Is number of days late in the cancelation rule if the value of the apply_on_late field is specify days.'
string='Late first days'
days_noshow
Integer
default='2'
help='Is number of days no show in the cancelation rule if the value of the apply_on_show field is specify days.'
string='NoShow first days'
name
Char
required=True
string='Cancelation Rule'
translate=True
penalty_late
Integer
default='100'
help='Percentage of the total price that partner has to pay in case of late arrival'
string='% Penalty Late'
penalty_noshow
Integer
default='100'
help='Percentage of the total price that partner has to pay in case of no show'
string='% Penalty No Show'
pms_property_ids
Many2many → pms.property
check_pms_properties=True
column1='pms_cancelation_rule_id'
column2='pms_property_id'
comodel_name='pms.property'
help='Properties with access to the element; if not set, all properties can access'
ondelete='restrict'
relation='pms_cancelation_rule_pms_property_rel'
required=False
string='Properties'
pricelist_ids
One2many → product.pricelist
check_pms_properties=True
comodel_name='product.pricelist'
domain="[('is_pms_available', '=', True)]"
help='Pricelist that use this rule'
inverse_name='cancelation_rule_id'
string='Pricelist'
No public methods.
arrival
Datetime
help='Checkin partner arrival date and time'
args: 'Enter'
birthdate_date
Date
compute='_compute_birth_date'
help='host birthdate'
readonly=False
store=True
string='Birthdate'
checkin
Date
depends=['reservation_id.checkin']
help='Checkin date'
related='reservation_id.checkin'
store=True
string='Checkin'
checkout
Date
depends=['reservation_id.checkout']
help='Checkout date'
related='reservation_id.checkout'
store=True
string='Checkout'
departure
Datetime
help='Checkin partner departure date and time'
string='Exit'
document_country_id
Many2one → res.country
comodel_name='res.country'
compute='_compute_document_country_id'
help='Country of the document'
readonly=False
store=True
string='Document Country'
document_expedition_date
Date
compute='_compute_document_expedition_date'
help='Date on which document_type was issued'
readonly=False
store=True
string='Expedition Date'
document_id
Many2one → res.partner.id_number
comodel_name='res.partner.id_number'
compute='_compute_document_id'
help='Technical field'
index=True
ondelete='restrict'
readonly=False
store=True
string='Document'
document_number
Char
compute='_compute_document_number'
help='Host document number'
readonly=False
store=True
string='Document Number'
document_type
Many2one → res.partner.id_category
comodel_name='res.partner.id_category'
compute='_compute_document_type'
domain="['|', ('country_ids', '=', False), ('country_ids', 'in', document_country_id)]"
help='Select a valid document type'
index=True
readonly=False
store=True
string='Document Type'
email
Char
compute='_compute_email'
help='Checkin Partner Email'
readonly=False
store=True
string='E-mail'
firstname
Char
compute='_compute_firstname'
help='host firstname'
readonly=False
store=True
string='First Name'
folio_id
Many2one → pms.folio
comodel_name='pms.folio'
help='Folio to which reservation of checkin partner belongs'
index=True
related='reservation_id.folio_id'
store=True
string='Folio'
gender
Selection
compute='_compute_gender'
help='host gender'
readonly=False
selection=[('male', 'Male'), ('female', 'Female'), ('other', 'Other')]
store=True
string='Gender'
identifier
Char
default=<expr>
help='Checkin Partner Id'
index=True
readonly=True
string='Identifier'
image_128
Image
help='Checkin Partner Image, it corresponds with Partner Image associated'
related='partner_id.image_128'
string='Image'
lastname
Char
compute='_compute_lastname'
help='host lastname'
readonly=False
store=True
string='Last Name'
lastname2
Char
compute='_compute_lastname2'
help='host second lastname'
readonly=False
store=True
string='Second Last Name'
mobile
Char
compute='_compute_mobile'
help='Checkin Partner Mobile'
readonly=False
store=True
string='Mobile'
name
Char
help='Checkin partner name'
related='partner_id.name'
string='Name'
nationality_id
Many2one → res.country
comodel_name='res.country'
compute='_compute_nationality_id'
help='host nationality'
index=True
readonly=False
store=True
string='Nationality'
partner_id
Many2one → res.partner
comodel_name='res.partner'
compute='_compute_partner_id'
domain="[('is_company', '=', False)]"
help='Partner associated with checkin partner'
index=True
readonly=False
store=True
string='Partner'
partner_incongruences
Char
compute='_compute_partner_incongruences'
help='indicates that some partner fields on the checkin do not correspond to that of the associated partner'
string='partner_incongruences'
phone
Char
compute='_compute_phone'
help='Checkin Partner Phone'
readonly=False
store=True
string='Phone'
pms_property_id
Many2one → pms.property
comodel_name='pms.property'
help='Property to which the folio associated belongs'
index=True
readonly=True
related='reservation_id.pms_property_id'
store=True
string='Property'
possible_existing_customer_ids
One2many → res.partner
comodel_name='res.partner'
compute='_compute_possible_existing_customer_ids'
inverse_name='checkin_partner_possible_customer_id'
string='Possible existing customer'
reservation_id
Many2one → pms.reservation
comodel_name='pms.reservation'
help='Reservation to which checkin partners belong'
index=True
string='Reservation'
residence_city
Char
compute='_compute_residence_city'
help="City of the guest's residence"
readonly=False
store=True
string='City'
residence_country_id
Many2one → res.country
comodel_name='res.country'
compute='_compute_residence_country_id'
help="Country of the guest's residence"
index=True
readonly=False
store=True
string='Country of residence'
residence_state_id
Many2one → res.country.state
comodel_name='res.country.state'
compute='_compute_residence_state_id'
help="State of the guest's residence"
index=True
readonly=False
store=True
string='State of residence'
residence_street
Char
compute='_compute_residence_street'
help="Street of the guest's residence"
readonly=False
store=True
string='Street'
residence_street2
Char
compute='_compute_residence_street2'
help="Second street of the guest's residence"
readonly=False
store=True
string='Street2'
residence_zip
Char
change_default=True
compute='_compute_residence_zip'
help="Zip of the guest's residence"
readonly=False
store=True
string='Zip'
segmentation_ids
Many2many
domain="[('is_used_in_checkin', '=', True)]"
help='Segmentation tags to classify checkin partners'
readonly=True
related='reservation_id.segmentation_ids'
string='Segmentation'
sign_on
Datetime
compute='_compute_sign_on'
help='Date and time of the signature'
string='Sign on'
signature
Image
help='Signature of the guest'
string='Signature'
state
Selection
compute='_compute_state'
help='Status of the checkin partner regarding the reservation'
readonly=True
selection=[('dummy', 'Unkown Guest'), ('draft', 'Incomplete data'), ('precheckin', 'Pending arrival'), ('onboard', 'On Board'), ('done', 'Out'), ('cancel', 'Cancelled')]
store=True
string='Status'
action_done(self)
action_on_board(self)
action_undo_onboard(self)
calculate_doc_type_expedition_date_from_validity_date(self, doc_type, doc_date, birthdate)
check_document_number(self)
create(self, vals)
get_document_vals(self)
import_room_list_json(self, roomlist_json)
open_partner(self)
open_wizard_several_partners(self)
send_exit_email(self, template_id)
send_portal_invitation_email(self, invitation_firstname=None, email=None)
unlink(self)
validate_id_number(self)
write(self, vals)
administrative_user_id
Many2one → res.users
comodel_name='res.users'
compute='_compute_administrative_user_id'
help='The administrative manager in the folio'
index=True
ondelete='restrict'
readonly=False
store=True
string='Administrative Manager'
tracking=True
agency_id
Many2one → res.partner
check_pms_properties=True
comodel_name='res.partner'
domain=[('is_agency', '=', True)]
help='Only allowed if the field of partner is_agency is True'
index=True
ondelete='restrict'
string='Agency'
amount_tax
Monetary
compute='_compute_amount_all'
help='Price with taxes on a folio'
readonly=True
store=True
string='Taxes'
amount_total
Monetary
compute='_compute_amount_all'
help='Total amount to be paid'
readonly=True
store=True
string='Total'
tracking=True
amount_untaxed
Monetary
compute='_compute_amount_all'
help='The price without taxes on a folio'
readonly=True
store=True
string='Untaxed Amount'
tracking=True
analytic_account_id
Many2one → account.analytic.account
comodel_name='account.analytic.account'
copy=False
help='The analytic account related to a folio.'
index=True
readonly=True
states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}
string='Analytic Account'
cancelled_reason
Text
help='Indicates cause of cancelled'
string='Cause of cancelled'
checkin_partner_ids
One2many → pms.checkin.partner
comodel_name='pms.checkin.partner'
help='The checkin partners on a folio'
inverse_name='folio_id'
string='Checkin Partners'
closure_reason_id
Many2one → room.closure.reason
check_pms_properties=True
comodel_name='room.closure.reason'
help='The closure reason for a closure room'
index=True
string='Closure Reason'
commission
Float
compute='_compute_commission'
readonly=True
store=True
string='Commission'
company_id
Many2one → res.company
comodel_name='res.company'
compute='_compute_company_id'
help='The company for folio'
index=True
store=True
string='Company'
confirmation_date
Datetime
copy=False
help='Date on which the folio is confirmed.'
index=True
readonly=True
string='Confirmation Date'
count_rooms_pending_arrival
Integer
compute='_compute_count_rooms_pending_arrival'
help='The number of rooms left to occupy.'
store=True
string='Pending Arrival'
credit_card_details
Text
help='Details of partner credit card'
string='Credit Card Details'
currency_id
Many2one
help='The currency of the property location'
index=True
ondelete='restrict'
readonly=True
related='pricelist_id.currency_id'
required=True
string='Currency'
date_order
Datetime
copy=False
default=fields.Datetime.now
help='Date on which folio is sold'
index=True
readonly=True
required=True
states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}
string='Order Date'
days_to_checkin
Integer
compute='_compute_days_to_checkin'
help='Technical field to facilitate\n filtering by dates related to checkin'
search='_search_days_to_checkin'
string='Days to Checkin'
days_to_checkout
Integer
compute='_compute_days_to_checkout'
help='Technical field to facilitate\n filtering by dates related to checkout'
search='_search_days_to_checkout'
string='Days to Checkout'
email
Char
compute='_compute_email'
help='Customer E-mail'
readonly=False
store=True
string='E-mail'
external_reference
Char
compute='_compute_external_reference'
help='Reference of this folio in an external system'
readonly=False
store=True
string='External Reference'
first_checkin
Date
compute='_compute_first_checkin'
readonly=False
store=True
string='First Folio Checkin'
fiscal_position_id
Many2one → account.fiscal.position
comodel_name='account.fiscal.position'
help='The fiscal position depends on the location of the client'
index=True
string='Fiscal Position'
force_nothing_to_invoice
Boolean
compute='_compute_force_nothing_to_invoice'
copy=False
help='When you set this field, the folio will be considered as nothin to invoice, even when there may be ordered quantities pending to invoice.'
readonly=False
store=True
string='Force no invoice'
internal_comment
Text
help='Internal Folio notes for Staff'
string='Internal Folio Notes'
invoice_count
Integer
compute='_compute_get_invoiced'
help='The amount of invoices in out invoice and out refund status'
readonly=True
string='Invoice Count'
invoice_status
Selection
compute='_compute_get_invoice_status'
compute_sudo=True
default='no'
help='Invoice Status; it can be: invoiced, to invoice, to confirm, no'
readonly=True
selection=[('invoiced', 'Fully Invoiced'), ('to_invoice', 'To Invoice'), ('to_confirm', 'To Confirm'), ('no', 'Nothing to Invoice')]
store=True
string='Invoice Status'
invoice_to_agency
Boolean
compute='_compute_invoice_to_agengy'
help='Indicates if agency invoices partner\n (it only affects those nights/services sold through the agency)'
readonly=False
store=True
string='Invoice Agency'
invoices_paid
Monetary
compute='_compute_amount'
help='Amount of invoices paid'
store=True
string='Paid Out'
tracking=True
lang
Selection
compute='_compute_lang'
help='Language used for the folio'
readonly=False
selection=<expr>
store=True
string='Language'
last_checkout
Date
compute='_compute_last_checkout'
readonly=False
store=True
string='Last Folio Checkout'
manager_user_id
Many2one → res.users
comodel_name='res.users'
compute='_compute_manager_user_id'
help='The main manager in the folio'
index=True
ondelete='restrict'
readonly=False
store=True
string='Main Manager'
tracking=True
mobile
Char
compute='_compute_mobile'
help='Customer Mobile'
readonly=False
store=True
string='Mobile'
move_ids
Many2many → account.move
comodel_name='account.move'
compute='_compute_get_invoiced'
copy=False
help='Folio invoices related to account move.'
readonly=True
search='_search_invoice_ids'
string='Invoices'
name
Char
default=<expr>
help='Folio name. When creating a folio the name is automatically formed with a sequence'
index=True
readonly=True
string='Folio Number'
note
Text
default=<expr>
help='Folio billing terms and conditions'
string='Terms and conditions'
number_of_cancelled_rooms
Integer
compute='_compute_number_of_cancelled_rooms'
help='Number of cancelled rooms in folio.'
store='True'
string='Number of Cancelled Rooms'
number_of_rooms
Integer
compute='_compute_number_of_rooms'
help='Number of rooms in folio. Canceled rooms do not count.'
store='True'
string='Number of Rooms'
number_of_services
Integer
compute='_compute_number_of_services'
help='Number of services in the folio'
store='True'
string='Number of Services'
out_service_description
Text
help='Indicates the cause of out of service'
string='Cause of out of service'
partner_id
Many2one → res.partner
check_pms_properties=True
comodel_name='res.partner'
compute='_compute_partner_id'
help='The folio customer'
index=True
ondelete='restrict'
readonly=False
store=True
string='Partner'
tracking=True
partner_incongruences
Char
compute='_compute_partner_incongruences'
help='indicates that some partner fields on the folio do not correspond to that of the associated partner'
string='partner_incongruences'
partner_internal_comment
Text
help='Internal notes of the partner'
readonly=False
related='partner_id.comment'
store=True
string='Internal Partner Notes'
partner_invoice_ids
Many2many → res.partner
check_pms_properties=True
column1='folio'
column2='partner'
comodel_name='res.partner'
compute='_compute_partner_invoice_ids'
help='Invoice address for current group.'
readonly=False
relation='pms_folio_partner_rel'
store=True
string='Billing addresses'
partner_name
Char
compute='_compute_partner_name'
help='In the name of whom the reservation is made'
readonly=False
store=True
string='Customer Name'
payment_ids
Many2many → account.payment
column1='folio_id'
column2='payment_id'
comodel_name='account.payment'
copy=False
help='Payments'
readonly=True
relation='account_payment_folio_rel'
string='Bank Payments'
payment_multi
Boolean
compute='_compute_amount'
help='Technical field for manage payments with multiple folios assigned'
readonly=True
store=True
string='Folio paid with payments assigned to other folios'
payment_state
Selection
compute='_compute_amount'
copy=False
help='The state of the payment'
readonly=True
selection=[('not_paid', 'Not Paid'), ('paid', 'Paid'), ('partial', 'Partially Paid'), ('overpayment', 'Overpayment'), ('nothing_to_pay', 'Nothing to pay')]
store=True
string='Payment Status'
tracking=True
payment_term_id
Many2one → account.payment.term
comodel_name='account.payment.term'
compute='_compute_payment_term_id'
help='Payment terms for current folio.'
index=True
ondelete='restrict'
readonly=False
store=True
string='Payment Terms'
pending_amount
Monetary
compute='_compute_amount'
help='The amount that remains to be paid'
store=True
string='Pending Amount'
pending_checkin_data
Integer
compute='_compute_pending_checkin_data'
store=True
string='Checkin Data'
pms_property_id
Many2one → pms.property
check_pms_properties=True
comodel_name='pms.property'
help='The property for folios'
index=True
required=True
string='Property'
possible_existing_customer_ids
One2many → res.partner
comodel_name='res.partner'
compute='_compute_possible_existing_customer_ids'
inverse_name='folio_possible_customer_id'
string='Possible existing customer'
prepaid_warning_days
Integer
help='Margin in days to create a notice if a payment advance has not been recorded'
string='Prepaid Warning Days'
pricelist_id
Many2one → product.pricelist
check_pms_properties=True
comodel_name='product.pricelist'
compute='_compute_pricelist_id'
help='Pricelist for current folio.'
index=True
ondelete='restrict'
readonly=False
store=True
string='Pricelist'
ratio_checkin_data
Integer
compute='_compute_ratio_checkin_data'
help='Field that stores the number of checkin partners pending to checkin (with the state = draft)'
string='Pending Checkin Data'
reference
Char
copy=False
help='The payment communication of this sale order.'
string='Payment Ref.'
reservation_ids
One2many → pms.reservation
check_company=True
check_pms_properties=True
comodel_name='pms.reservation'
help='Room reservation detail'
inverse_name='folio_id'
readonly=False
states={'done': [('readonly', True)]}
string='Reservations'
reservation_type
Selection
default=<expr>
help="The type of the reservation. Can be 'Normal', 'Staff' or 'Out of Service'"
selection=[('normal', 'Normal'), ('staff', 'Staff'), ('out', 'Out of Service')]
string='Type'
revenue_user_id
Many2one → res.users
comodel_name='res.users'
compute='_compute_revenue_user_id'
help='The revenue manager in the folio'
index=True
ondelete='restrict'
readonly=False
store=True
string='Revenue Manager'
tracking=True
sale_channel_ids
Many2many → pms.sale.channel
comodel_name='pms.sale.channel'
compute='_compute_sale_channel_ids'
help='Sale Channels through which reservations were managed'
store=True
string='Sale Channels'
sale_channel_origin_id
Many2one → pms.sale.channel
comodel_name='pms.sale.channel'
help='Sale Channel through which folio was created, the original'
index=True
string='Sale Channel Origin'
sale_line_ids
One2many → folio.sale.line
comodel_name='folio.sale.line'
compute='_compute_sale_line_ids'
compute_sudo=True
help='Sale lines in folio. It correspond with reservation nights'
inverse_name='folio_id'
store='True'
string='Sale lines'
segmentation_ids
Many2many → res.partner.category
comodel_name='res.partner.category'
domain="[('is_used_in_checkin', '=', True)]"
help='Segmentation tags to classify folios'
ondelete='restrict'
string='Segmentation'
sequence
Integer
default=10
help='Sequence used to form the name of the folio'
string='Sequence'
service_ids
One2many → pms.service
check_company=True
check_pms_properties=True
comodel_name='pms.service'
help='Services detail provide to customer and it will include in main Invoice.'
inverse_name='folio_id'
readonly=False
states={'done': [('readonly', True)]}
string='Service'
state
Selection
copy=False
default='draft'
help='Folio status; it can be Quotation, Quotation Sent, Confirmed, Locked or Cancelled'
index=True
readonly=True
selection=[('draft', 'Quotation'), ('sent', 'Quotation Sent'), ('confirm', 'Confirmed'), ('done', 'Locked'), ('cancel', 'Cancelled')]
string='Status'
tracking=True
statement_line_ids
Many2many → account.bank.statement.line
column1='folio_id'
column2='account_journal_id'
comodel_name='account.bank.statement.line'
copy=False
help='Statement lines'
readonly=True
relation='account_bank_statement_folio_rel'
string='Cash Payments'
transaction_ids
Many2many → payment.transaction
column1='folio_id'
column2='payment_transaction_id'
comodel_name='payment.transaction'
copy=False
help='Payments made through payment acquirer'
readonly=True
relation='payment_transaction_folio_rel'
string='Transactions'
untaxed_amount_to_invoice
Monetary
compute='_compute_untaxed_amount_to_invoice'
help='The amount to invoice'
readonly=True
store=True
string='Amount to invoice'
user_id
Many2one → res.users
comodel_name='res.users'
compute='_compute_user_id'
help='The reception manager in the folio'
index=True
ondelete='restrict'
readonly=False
store=True
string='Reception Manager'
tracking=True
action_cancel(self)
action_checks(self)
action_confirm(self)
action_done(self)
action_open_cancelation_mail_composer(self)
action_open_confirmation_mail_composer(self)
action_open_exit_mail_composer(self)
action_open_mail_composer(self, ctx, res_id=False, res_ids=False)
action_open_modification_mail_composer(self)
action_pay(self)
action_to_arrive(self)
action_view_invoice(self)
concat_discounts(self, discount, cancel_discount)
create(self, vals)
do_payment(self, journal, receivable_account, user, amount, folio, reservations=False, services=False, partner=False, date=False, pay_type=False, ref=False)
do_refund(self, journal, receivable_account, user, amount, folio, reservations=False, services=False, partner=False, date=False, pay_type=False, ref=False)
folio_multi_changes(self)
get_invoice_vals_list(self, final=False, lines_to_invoice=False, partner_invoice_id=False)
get_reservations_to_update_channel(self, vals)
get_services_to_update_channel(self, vals)
name_get(self)
open_moves_folio(self)
open_partner(self)
open_wizard_several_partners(self)
preview_folio(self)
write(self, vals)
board_service_room_id
Many2one → pms.board.service.room.type
check_pms_properties=True
comodel_name='pms.board.service.room.type'
domain="\n [\n ('pms_room_type_id','=',room_type_id),\n ('pms_property_id','=',pms_property_id)\n ]\n "
help='Board Service included in the room'
string='Board Service'
booking_engine_id
Many2one → pms.booking.engine
comodel_name='pms.booking.engine'
string='Folio Wizard ID'
checkin
Date
help='Date Reservation starts '
required=True
string='From:'
checkout
Date
help='Date Reservation ends'
required=True
string='To:'
num_rooms_available
Integer
compute='_compute_num_rooms_available'
help='Number of rooms that are available'
store=True
string='Available rooms'
num_rooms_selected
Many2one → pms.num.rooms.selection
comodel_name='pms.num.rooms.selection'
compute='_compute_num_rooms_selected'
domain="[('value', '<=', num_rooms_available), ('room_type_id', '=', room_type_id)]"
readonly=False
store=True
string='Selected rooms'
pms_property_id
Many2one
help='Propertiy with access to the element;'
related='booking_engine_id.pms_property_id'
string='Property'
price_per_room
Float
compute='_compute_price_per_room'
help='Price per room in folio'
string='Price per room'
price_total
Float
compute='_compute_price_total'
help='The total price in the folio'
string='Total price'
room_type_id
Many2one → pms.room.type
check_pms_properties=True
comodel_name='pms.room.type'
help='Room Type reserved'
string='Room Type'
value_num_rooms_selected
Integer
compute='_compute_value_num_rooms_selected'
readonly=False
store=True
string='Number of Rooms Selected'
No public methods.
allowed_board_services
Many2many → product.product
comodel_name='product.product'
compute='_compute_allowed_board_services'
readonly=False
store=True
string='Allowed services'
allowed_pricelist_ids
One2many → product.pricelist
comodel_name='product.pricelist'
compute='_compute_allowed_pricelist_ids'
string='Allowed pricelists'
apply_closed
Boolean
default=False
string='Apply changes to Closed'
apply_closed_arrival
Boolean
default=False
string='Apply changes to Closed Arrival'
apply_closed_departure
Boolean
default=False
string='Apply changes to Closed Departure'
apply_max_avail
Boolean
default=False
string='Apply changes to Max. Avail.'
apply_max_stay
Boolean
default=False
string='Apply changes to Max. Stay'
apply_max_stay_arrival
Boolean
default=False
string='Apply changes to Max. Stay Arrival'
apply_min_stay
Boolean
default=False
string='Apply changes to Min. Stay'
apply_min_stay_arrival
Boolean
default=False
string='Apply changes to Min. Stay Arrival'
apply_on_all_week
Boolean
default=True
string='Apply Availability Rule for the whole week'
apply_on_friday
Boolean
default=False
string='Apply Availability Rule on fridays'
apply_on_monday
Boolean
default=False
string='Apply Availability Rule on mondays'
apply_on_saturday
Boolean
default=False
string='Apply Availability Rule on saturdays'
apply_on_sunday
Boolean
default=False
string='Apply Availability Rule on sundays'
apply_on_thursday
Boolean
default=False
string='Apply Availability Rule on thursdays'
apply_on_tuesday
Boolean
default=False
string='Apply Availability Rule on tuesdays'
apply_on_wednesday
Boolean
default=False
string='Apply Availability Rule on wednesdays'
apply_pricelists_on
Selection
default='room_types'
selection=[('room_types', 'Room Types'), ('board_services', 'Board Services'), ('service', 'Service')]
string='Apply pricelists on'
apply_quota
Boolean
default=False
string='Apply changes to Quota'
avail_readonly
Boolean
default=<expr>
string='Avialability Readonly'
availability_plan_ids
Many2many → pms.availability.plan
check_pms_properties=True
comodel_name='pms.availability.plan'
string='Availability Plan to apply massive changes'
board_service
Many2one → product.product
check_pms_properties=True
comodel_name='product.product'
domain="[('id', 'in',allowed_board_services)]"
string='Board service'
board_service_room_type_ids
Many2many → pms.board.service.room.type
check_pms_properties=True
comodel_name='pms.board.service.room.type'
compute='_compute_board_service_room_type_ids'
readonly=False
store=True
string="Room type's board services"
closed
Boolean
default=False
string='Closed'
closed_arrival
Boolean
default=False
string='Closed Arrival'
closed_departure
Boolean
default=False
string='Closed Departure'
date_types
Selection
default='consumption_dates'
selection=[('sale_dates', 'Sale Dates'), ('consumption_dates', 'Consumption Dates')]
string='Date types'
end_date
Date
required=True
string='To'
massive_changes_on
Selection
default=<expr>
required=True
selection=[('pricelist', 'Pricelist'), ('availability_plan', 'Availability Plan')]
string='On'
max_avail
Integer
default=-1
help='Maximum simultaneous availability on own Booking Engine.'
string='Max. Availability'
max_stay
Integer
default=0
string='Max. Stay'
max_stay_arrival
Integer
default=0
string='Max. Stay Arrival'
min_quantity
Float
string='Min. Quantity'
min_stay
Integer
default=0
string='Min. Stay'
min_stay_arrival
Integer
default=0
string='Min. Stay Arrival'
num_pricelist_items_to_overwrite
Integer
compute='_compute_num_pricelist_items_to_overwrite'
readonly=True
store=False
string='Pricelist items to overwrite on massive changes'
num_rules_to_overwrite
Integer
compute='_compute_num_rules_to_overwrite'
readonly=True
store=False
string='Rules to overwrite on massive changes'
pms_property_ids
Many2many → pms.property
check_pms_properties=True
comodel_name='pms.property'
default=<expr>
required=True
string='Property'
price
Float
string='Price'
pricelist_ids
Many2many → product.pricelist
check_pms_properties=True
comodel_name='product.pricelist'
string='Pricelist to apply massive changes'
pricelist_items_to_overwrite
One2many → product.pricelist.item
comodel_name='product.pricelist.item'
compute='_compute_pricelist_items_to_overwrite'
readonly=True
store=False
string='Pricelist Items to Override'
pricelist_readonly
Boolean
default=<expr>
string='Pricelist Readonly'
quota
Integer
default=-1
help='Generic Quota assigned.'
string='Quota'
room_type_ids
Many2many → pms.room.type
check_pms_properties=True
comodel_name='pms.room.type'
compute='_compute_room_type_ids'
readonly=False
store=True
string='Room Type'
rules_to_overwrite
One2many → pms.availability.plan.rule
comodel_name='pms.availability.plan.rule'
compute='_compute_rules_to_overwrite'
readonly=True
store=False
string='Rule to Overwrite'
service
Many2one → product.product
check_pms_properties=True
comodel_name='product.product'
compute='_compute_service'
readonly=False
store=True
string='Service'
start_date
Date
required=True
string='From'
apply_massive_changes(self)
continue_massive_changes(self)
create_availability_plans_rules(self, room_types, availability_plan_ids, min_stay, apply_min_stay, min_stay_arrival, apply_min_stay_arrival, max_stay, apply_max_stay, max_stay_arrival, apply_max_stay_arrival, quota, apply_quota, max_avail, apply_max_avail, closed, apply_closed, closed_arrival, apply_closed_arrival, closed_departure, apply_closed_departure, date, rules_to_overwrite, pms_property)
create_pricelists_items_board_services(self, board_service_room_type_ids, pricelist_ids, board_service, price, min_quantity, pms_property, date_types, date)
create_pricelists_items_room_types(self, room_types, pricelist_ids, price, min_quantity, pms_property, date, date_types)
generate_dates_vals(self, date_types, vals, date)
generate_product_ids_to_filter(self, apply_pricelists_on, room_type_ids, board_service_room_type_ids, board_service, service)
save_and_close(self)
booking_engine_id
One2many → pms.folio.availability.wizard
comodel_name='pms.folio.availability.wizard'
inverse_name='num_rooms_selected'
room_type_id
Char
value
Integer
No public methods.
availability
Integer
compute='_compute_availability'
help='allows you to send different parameters in the context (checkin(required), checkout(required), room_type_id, ubication_id, capacity,amenity_ids and / or pricelist_id) check the availability for the hotel'
string='Number of rooms available'
avoid_simplified_max_amount_downpayment
Boolean
default=True
help='Avoid simplified invoice max amount downpayment'
string='Downpayment Invoive without limit amount'
block_create_past_reservations
Boolean
default=False
help='Block the creation of reservations in the past'
string='Block Create Past Reservations'
cardex_warning
Text
default="Time to access rooms: 14: 00h. Departure time: 12: 00h. If the accommodation is not left at that time, the establishment will charge a day's stay according to current rate that day"
help="Notice under the signature on the traveler's ticket."
string='Warning in Cardex'
checkin_sequence_id
Many2one → ir.sequence
check_company=True
comodel_name='ir.sequence'
copy=False
help='Field used to create the name of the checkin partner'
index=True
string='Checkin Sequence'
child_ids
One2many → pms.property
comodel_name='pms.property'
inverse_name='parent_id'
string='Child Properties'
company_id
Many2one → res.company
comodel_name='res.company'
help='The company that owns or operates this property.'
index=True
required=True
string='Company'
default_arrival_hour
Char
default='14:00'
help='HH:mm Format'
string='Arrival Hour'
default_departure_hour
Char
default='12:00'
help='HH:mm Format'
string='Departure Hour'
default_invoicing_policy
Selection
default='manual'
selection=[('manual', 'Manual'), ('checkout', 'Checkout'), ('month_day', 'Month Day Invoice')]
string='Default Invoicing Policy'
default_pricelist_id
Many2one → product.pricelist
comodel_name='product.pricelist'
default=<expr>
domain="[('is_pms_available', '=', True)]"
help='The default pricelist used in this property.'
index=True
required=True
string='Product Pricelist'
folio_sequence_id
Many2one → ir.sequence
check_company=True
comodel_name='ir.sequence'
copy=False
help='The sequence that formed the name of the folio.'
index=True
string='Folio Sequence'
free_room_ids
One2many → pms.room
comodel_name='pms.room'
compute='_compute_free_room_ids'
help='allows you to send different parameters in the context (checkin(required), checkout(required), room_type_id, ubication_id, capacity, amenity_ids and / or pricelist_id) and return rooms available'
string='Rooms available'
invoicing_month_day
Integer
help='The day of the month to invoice'
string='Invoicing Month Day'
is_canceled_auto_mail
Boolean
string='Auto Send Cancellation Mail'
is_confirmed_auto_mail
Boolean
string='Auto Send Confirmation Mail'
is_exit_auto_mail
Boolean
string='Auto Send Exit Mail'
is_modified_auto_mail
Boolean
string='Auto Send Modification Mail'
journal_normal_invoice_id
Many2one → account.journal
check_company=True
check_pms_properties=True
comodel_name='account.journal'
domain=[('type', '=', 'sale'), ('is_simplified_invoice', '=', False)]
help='Journal used to create the normal invoice'
string='Normal Invoice Journal'
journal_simplified_invoice_id
Many2one → account.journal
check_company=True
check_pms_properties=True
comodel_name='account.journal'
domain=[('type', '=', 'sale')]
help='Journal used to create the simplified invoice'
string='Simplified Invoice Journal'
logo
Binary
default=get_default_logo()
string='Image in checkin'
mail_information
Html
help='Additional information of the mail'
string='Mail Information'
margin_days_autoinvoice
Integer
help='Days from Checkout to generate the invoice'
string='Margin Days'
max_amount_simplified_invoice
Float
default=400.0
help='Maximum amount to create the simplified invoice'
string='Max Amount Simplified Invoice'
member_ids
One2many → pms.team.member
comodel_name='pms.team.member'
copy=False
inverse_name='pms_property_id'
string='Team Members'
parent_id
Many2one → pms.property
comodel_name='pms.property'
index=True
string='Parent Property'
partner_id
Many2one → res.partner
comodel_name='res.partner'
help='Current property'
index=True
ondelete='restrict'
required=True
string='Property'
pms_property_code
Char
help='Short name property'
string='Property Code'
privacy_policy
Html
help='Mail privacy policy '
string='Privacy Policy'
property_canceled_template
Many2one → mail.template
comodel_name='mail.template'
help='Cancellation email template'
string='Cancellation Email'
property_confirmed_template
Many2one → mail.template
comodel_name='mail.template'
help='Confirmation email template'
string='Confirmation Email'
property_exit_template
Many2one → mail.template
comodel_name='mail.template'
string='Exit Email'
property_modified_template
Many2one → mail.template
comodel_name='mail.template'
help='Modification email template'
string='Modification Email'
room_ids
One2many → pms.room
comodel_name='pms.room'
help='Rooms that a property has.'
inverse_name='pms_property_id'
string='Rooms'
tz
Selection
default=<expr>
help='This field is used to determine de timezone of the property.'
required=True
selection=_tz_get
string='Timezone'
user_id
Many2one → res.users
comodel_name='res.users'
copy=False
ondelete='restrict'
string='Team Leader'
tracking=True
user_ids
Many2many → res.users
column1='pms_property_id'
column2='user_id'
comodel_name='res.users'
help='Field related to res.users. Allowed users on the property'
relation='pms_property_users_rel'
string='Accepted Users'
autoinvoice_folio(self, folio)
autoinvoicing(self, offset=0, with_delay=False, autocommit=False)
autovalidate_folio_invoice(self, invoice)
clean_date_on_past_draft_invoices(self, date_reference)
create(self, vals)
daily_closing(self, pms_property_ids, room_type_ids=False, availability_plan_ids=False)
date_property_timezone(self, dt)
get_real_free_rooms(self, checkin, checkout, current_lines=False)
name_get(self)
splitted_availability(self, checkin, checkout, pms_property_id, room_type_id=False, current_lines=False, pricelist=False, real_avail=False)
adults
Integer
compute='_compute_adults'
help='List of adults there in guest list'
readonly=False
store=True
string='Adults'
tracking=True
agency_id
Many2one
depends=['folio_id.agency_id']
help='Agency that made the reservation'
index=True
readonly=False
related='folio_id.agency_id'
store=True
string='Agency'
tracking=True
allowed_cancel
Boolean
compute='_compute_allowed_cancel'
help="Technical field, Indicates that reservation can be cancelled,that happened when state is 'cancel', 'done', or 'departure_delayed'"
search='_search_allowed_cancel'
string='Allowed cancel'
allowed_checkin
Boolean
compute='_compute_allowed_checkin'
help="Technical field, Indicates if there isn't a checkin_partner dataOnly can be true if checkin is today or was in the past"
search='_search_allowed_checkin'
string='Allowed checkin'
allowed_checkout
Boolean
compute='_compute_allowed_checkout'
help="Technical field, Indicates that reservation is ready for checkoutonly can be true if reservation state is 'onboard' or departure_delayedand checkout is today or will be in the future"
search='_search_allowed_checkout'
string='Allowed checkout'
allowed_room_ids
Many2many → pms.room
comodel_name='pms.room'
compute='_compute_allowed_room_ids'
help='It contains all available rooms for this reservation'
string='Allowed Rooms'
analytic_tag_ids
Many2many → account.analytic.tag
column1='reservation_id'
column2='account_analytic_tag_id'
comodel_name='account.analytic.tag'
domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]"
relation='pms_reservation_account_analytic_tag'
string='Analytic Tags'
arrival_hour
Char
compute='_compute_arrival_hour'
help='Arrival Hour (HH:MM)'
readonly=False
store=True
string='Arrival Hour'
avoid_mails
Boolean
compute='_compute_avoid_mails'
help='Field to indicate not sent mail comunications'
readonly=False
store=True
string='Avoid comunication mails'
blocked
Boolean
default=False
help='Indicates if the reservation is blocked'
string='Blocked'
board_service_room_id
Many2one → pms.board.service.room.type
check_pms_properties=True
comodel_name='pms.board.service.room.type'
compute='_compute_board_service_room_id'
help='Board Service included in the room'
index=True
readonly=False
store=True
string='Board Service'
tracking=True
cancel_datetime
Datetime
copy=False
help='Date when the reservation was cancelled'
readonly=True
string='Cancel Date'
cancelled_reason
Selection
copy=False
help="Field indicating type of cancellation. It can be 'late', 'intime' or 'noshow'"
selection=[('late', 'Late'), ('intime', 'In time'), ('noshow', 'No Show'), ('modified', 'Modified')]
store=True
string='Reason of cancellation'
tracking=True
check_adults
Boolean
compute='_compute_check_adults'
help='Internal field to force room capacity validations'
readonly=False
store=True
checkin
Date
compute='_compute_checkin'
copy=False
help='It is the checkin date of the reservation, '
readonly=False
store=True
string='Check In'
tracking=True
checkin_datetime
Datetime
compute='_compute_checkin_datetime'
help='This field is the day and time of arrival of the reservation.It is formed with the checkin and arrival_hour fields'
string='Exact Arrival'
checkin_partner_count
Integer
compute='_compute_checkin_partner_count'
help='Number of checkin partners in a reservation'
string='Checkin counter'
checkin_partner_ids
One2many → pms.checkin.partner
check_pms_properties=True
comodel_name='pms.checkin.partner'
compute='_compute_checkin_partner_ids'
copy=False
help='Guests who will occupy the room'
inverse_name='reservation_id'
readonly=False
store=True
string='Checkin Partners'
checkin_partner_pending_count
Integer
compute='_compute_checkin_partner_count'
help='Number of checkin partners pending to checkin in a reservation'
search='_search_checkin_partner_pending'
string='Checkin Pending Num'
checkins_ratio
Integer
compute='_compute_checkins_ratio'
help='Proportion of guest pending checkin'
string='Pending Arrival Ratio'
checkout
Date
compute='_compute_checkout'
copy=False
help='It is the checkout date of the reservation, '
readonly=False
store=True
string='Check Out'
tracking=True
checkout_datetime
Datetime
compute='_compute_checkout_datetime'
help='This field is the day and time of departure of the reservation.It is formed with the checkout and departure_hour fields'
string='Exact Departure'
children
Integer
help='Number total of children there in guest list,whose presence counts or not'
readonly=False
string='Children'
tracking=True
children_occupying
Integer
help='Number of children there in guest list whose presence counts'
string='Children occupying'
closure_reason_id
Many2one
check_pms_properties=True
help='Reason why the reservation cannot be made'
readonly=False
related='folio_id.closure_reason_id'
string='Closure Reason'
commission_amount
Float
compute='_compute_commission_amount'
help='Amount corresponding to commission'
store=True
string='Commission amount'
commission_percent
Float
compute='_compute_commission_percent'
help='Percentage corresponding to commission'
readonly=False
store=True
string='Commission percent (%)'
tracking=True
company_id
Many2one
help='Company to which the reservation belongs'
index=True
readonly=True
related='folio_id.company_id'
store=True
string='Company'
count_alternative_free_rooms
Integer
compute='_compute_count_alternative_free_rooms'
string='Count alternative free rooms'
count_pending_arrival
Integer
compute='_compute_count_pending_arrival'
help='Number of guest with pending checkin'
store=True
string='Pending Arrival'
credit_card_details
Text
help=''
related='folio_id.credit_card_details'
string='Credit Card Details'
currency_id
Many2one
depends=['pricelist_id']
help='The currency used in relation to the pricelist'
index=True
readonly=True
related='pricelist_id.currency_id'
store=True
string='Currency'
date_order
Datetime
default=fields.Datetime.now
help='Order date of reservation'
readonly=False
store=True
string='Date Order'
departure_hour
Char
compute='_compute_departure_hour'
help='Departure Hour (HH:MM)'
readonly=False
store=True
string='Departure Hour'
discount
Float
compute='_compute_discount'
digits='Discount'
help='Discount of total price in reservation'
readonly=False
store=True
string='Discount (€)'
tracking=True
email
Char
compute='_compute_email'
help='Customer E-mail'
readonly=False
store=True
string='E-mail'
external_reference
Char
compute='_compute_external_reference'
help='Reference of this folio in an external system'
readonly=False
store=True
string='External Reference'
folio_id
Many2one → pms.folio
check_company=True
comodel_name='pms.folio'
copy=False
help='The folio where the reservations are included'
index=True
ondelete='restrict'
string='Folio'
tracking=True
folio_internal_comment
Text
help='Internal comment for folio'
readonly=False
related='folio_id.internal_comment'
store=True
string='Internal Folio Notes'
folio_payment_state
Selection
help='The status of the folio payment'
related='folio_id.payment_state'
store=True
string='Payment State'
tracking=True
folio_pending_amount
Monetary
help='The amount that remains to be paid from folio'
related='folio_id.pending_amount'
string='Pending Amount'
tracking=True
folio_sequence
Integer
help='Techinal field to get reservation name'
readonly=True
string='Folio Sequence'
force_update_origin
Boolean
compute='_compute_force_update_origin'
help='This field is for force update in sale channel origin of folio and another reservations'
readonly=False
store=True
string='Update Sale Channel Origin'
invoice_status
Selection
compute='_compute_invoice_status'
help="The status of the invoices in folio. Can be 'invoiced', 'to_invoice' or 'no'."
readonly=True
selection=[('invoiced', 'Fully Invoiced'), ('to_invoice', 'To Invoice'), ('no', 'Nothing to Invoice')]
store=True
string='Invoice Status'
is_origin_channel_check_visible
Boolean
compute='_compute_is_origin_channel_check_visible'
help='Technical field to make visible update origin channel check'
readonly=False
store=True
string='Check force update origin visible'
is_reselling
Boolean
compute='_compute_is_reselling'
help='Indicate if exists reselling in any reservation line'
readonly=False
store=True
string='Reselling'
lang
Many2one → res.lang
comodel_name='res.lang'
compute='_compute_lang'
string='Language'
mobile
Char
compute='_compute_mobile'
help='Customer Mobile'
readonly=False
store=True
string='Mobile'
name
Text
help='Reservation Code Identification'
readonly=True
string='Reservation Code'
nights
Integer
compute='_compute_nights'
help='Number of nights of a reservation'
store=True
string='Nights'
out_service_description
Text
help='Indicates the cause of out of service'
readonly=False
related='folio_id.out_service_description'
string='Cause of out of service'
overbooking
Boolean
compute='_compute_overbooking'
help='Indicate if exists overbooking'
store=True
string='Is Overbooking'
overnight_room
Boolean
related='room_type_id.overnight_room'
store=True
partner_id
Many2one → res.partner
check_pms_properties=True
comodel_name='res.partner'
compute='_compute_partner_id'
help='Name of who made the reservation'
index=True
ondelete='restrict'
readonly=False
store=True
string='Customer'
tracking=True
partner_incongruences
Char
compute='_compute_partner_incongruences'
help='indicates that some partner fields on the reservation do not correspond to that of the associated partner'
string='partner_incongruences'
partner_internal_comment
Text
help='Internal notes of the partner'
readonly=False
related='partner_id.comment'
store=True
string='Internal Partner Notes'
partner_name
Char
compute='_compute_partner_name'
help='To whom the room is assigned'
readonly=False
store=True
string='Customer Name'
partner_requests
Text
help='Guest requests'
string='Partner Requests'
pending_checkin_data
Integer
compute='_compute_pending_checkin_data'
help='Data missing at checkin'
store=True
string='Checkin Data'
pms_property_id
Many2one → pms.property
check_pms_properties=True
comodel_name='pms.property'
help='Property to which the reservation belongs'
index=True
readonly=False
related='folio_id.pms_property_id'
store=True
string='Pms Property'
possible_existing_customer_ids
One2many → res.partner
comodel_name='res.partner'
compute='_compute_possible_existing_customer_ids'
inverse_name='reservation_possible_customer_id'
string='Possible existing customer'
preconfirm
Boolean
default=True
help='Technical field that indicates the reservation is not comfirm yet'
string='Auto confirm to Save'
preferred_room_id
Many2one → pms.room
check_pms_properties=True
comodel_name='pms.room'
copy=False
domain="[('id', 'in', allowed_room_ids),('pms_property_id', '=', pms_property_id),]"
help="It's the preferred room assigned to reservation, empty if reservation is splitted"
index=True
ondelete='restrict'
string='Room'
tracking=True
price_room_services_set
Monetary
compute='_compute_price_room_services_set'
help='Total price of room and services'
readonly=True
store=True
string='Room Services Total'
price_services
Monetary
compute='_compute_price_services'
help='Total price from services of a reservation'
readonly=True
store=True
string='Services Total'
price_subtotal
Monetary
compute='_compute_amount_reservation'
help='Subtotal price without taxes'
readonly=True
store=True
string='Subtotal'
price_tax
Float
compute='_compute_amount_reservation'
help='Total of taxes in a reservation'
readonly=True
store=True
string='Taxes Amount'
price_total
Monetary
compute='_compute_amount_reservation'
help='Total price with taxes'
readonly=True
store=True
string='Total'
tracking=True
pricelist_id
Many2one → product.pricelist
check_pms_properties=True
comodel_name='product.pricelist'
compute='_compute_pricelist_id'
domain="[('is_pms_available', '=', True)]"
help='Pricelist that guides the prices of the reservation'
index=True
ondelete='restrict'
readonly=False
store=True
string='Pricelist'
tracking=True
ratio_checkin_data
Integer
compute='_compute_ratio_checkin_data'
help='Proportion of guest data complete at checkin'
string='Complete cardex'
ready_for_checkin
Boolean
compute='_compute_ready_for_checkin'
help='Indicates the reservations with checkin_partner data enought to checkin'
string='Ready for checkin'
reservation_line_ids
One2many → pms.reservation.line
check_pms_properties=True
comodel_name='pms.reservation.line'
compute='_compute_reservation_line_ids'
copy=False
help='They are the lines of the reservation into a reservation,they corresponds to the nights'
inverse_name='reservation_id'
readonly=False
store=True
string='Reservation Lines'
reservation_type
Selection
compute='_compute_reservation_type'
help="Type of reservations. It can be 'normal', 'staff' or 'out of service"
readonly=False
selection=[('normal', 'Normal'), ('staff', 'Staff'), ('out', 'Out of Service')]
store=True
string='Reservation Type'
room_type_id
Many2one → pms.room.type
check_pms_properties=True
comodel_name='pms.room.type'
compute='_compute_room_type_id'
copy=False
help="Room Type sold on the reservation,it doesn't necessarily correspond to the room actually assigned"
index=True
ondelete='restrict'
readonly=False
store=True
string='Room Type'
tracking=True
rooms
Char
compute='_compute_rooms'
help='Rooms that are reserved'
store=True
string='Room/s'
tracking=True
sale_channel_ids
Many2many → pms.sale.channel
comodel_name='pms.sale.channel'
compute='_compute_sale_channel_ids'
help='Sale Channels through which reservation lines were managed'
store=True
string='Sale Channels'
sale_channel_origin_id
Many2one → pms.sale.channel
comodel_name='pms.sale.channel'
default=<expr>
help='Sale Channel through which reservation was created, the original'
index=True
string='Sale Channel Origin'
sale_line_ids
One2many → folio.sale.line
comodel_name='folio.sale.line'
copy=False
inverse_name='reservation_id'
string='Sale Lines'
segmentation_ids
Many2many → res.partner.category
comodel_name='res.partner.category'
default=<expr>
domain="[('is_used_in_checkin', '=', True)]"
help='Segmentation tags to classify reservations'
ondelete='restrict'
string='Segmentation'
service_ids
One2many → pms.service
check_company=True
check_pms_properties=True
comodel_name='pms.service'
compute='_compute_board_service_ids'
help='Included services in the reservation'
inverse_name='reservation_id'
readonly=False
store=True
string='Services'
services_discount
Float
compute='_compute_services_discount'
digits='Discount'
help='Services discount'
readonly=False
store=True
string='Services discount (€)'
tracking=True
shared_folio
Boolean
compute='_compute_shared_folio'
help='Used to notify is the reservation folio has other reservations/services'
string='Shared Folio'
show_update_pricelist
Boolean
compute='_compute_show_update_pricelist'
help='Technical Field, True if the pricelist was changed;\n this will then display a recomputation button'
store=True
string='Has Pricelist Changed'
splitted
Boolean
compute='_compute_splitted'
help="Field that indicates if the reservation is split. A reservation is split when guests don't sleep in the same room every night"
store=True
string='Splitted'
state
Selection
copy=False
default=<expr>
help="The state of the reservation. It can be 'Pre-reservation', 'Pending arrival', 'On Board', 'Out', 'Cancelled', 'Arrival Delayed' or 'Departure Delayed'"
index=True
readonly=True
selection=[('draft', 'Pre-reservation'), ('confirm', 'Pending arrival'), ('onboard', 'On Board'), ('done', 'Out'), ('cancel', 'Cancelled'), ('arrival_delayed', 'Arrival Delayed'), ('departure_delayed', 'Departure delayed')]
string='State'
tracking=True
tax_ids
Many2many → account.tax
comodel_name='account.tax'
compute='_compute_tax_ids'
domain=['|', ('active', '=', False), ('active', '=', True)]
help='Taxes applied in the reservation'
readonly=False
store=True
string='Taxes'
to_assign
Boolean
default=True
help='It is True if the room of the reservation has been assigned automatically, False if it was confirmed by a person in charge'
string='To Assign'
to_send_cancelation_mail
Boolean
compute='_compute_to_send_cancelation_mail'
readonly=False
store=True
string='To Send Cancelation Mail'
to_send_confirmation_mail
Boolean
compute='_compute_to_send_confirmation_mail'
readonly=False
store=True
string='To Send Confirmation Mail'
to_send_exit_mail
Boolean
compute='_compute_to_send_exit_mail'
readonly=False
store=True
string='To Send Exit Mail'
to_send_modification_mail
Boolean
compute='_compute_to_send_modification_mail'
readonly=False
store=True
string='To Send Modification Mail'
user_id
Many2one → res.users
comodel_name='res.users'
compute='_compute_user_id'
help='The reception manager in the folio'
index=True
ondelete='restrict'
readonly=False
store=True
string='Reception Manager'
tracking=True
action_assign(self)
action_cancel(self)
action_checkin_partner_onboard_view(self)
action_checkin_partner_view(self)
action_confirm(self)
action_open_cancelation_mail_composer(self)
action_open_confirmation_mail_composer(self)
action_open_exit_mail_composer(self)
action_open_modification_mail_composer(self)
action_pay_folio(self)
action_reservation_checkout(self)
action_undo_onboard(self)
auto_arrival_delayed(self)
auto_departure_delayed(self)
autocheckout(self, reservation)
check_in_out_dates(self)
checkin_checkout_consecutive_dates(self)
create(self, vals)
get_folios_to_update_channel(self, vals)
get_lines_to_update_channel(self, vals)
get_services_to_update_channel(self, vals)
name_get(self)
name_search(self, name='', args=None, operator='ilike', limit=100)
open_folio(self)
open_partner(self)
open_reservation_form(self)
open_reservation_wizard(self)
open_wizard_several_partners(self)
preview_reservation(self)
print_all_checkins(self)
update_prices(self)
write(self, vals)
adults
Integer
string='Adults'
allowed_room_ids
Many2many → pms.room
comodel_name='pms.room'
compute='_compute_allowed_room_ids'
help='It contains all available rooms for this reservation'
string='Allowed Rooms'
board_service_room_id
Many2one → pms.board.service.room.type
check_pms_properties=True
comodel_name='pms.board.service.room.type'
domain="[('pms_room_type_id','=',room_type_id)]"
help='Board Service included in the room'
string='Board Service'
booking_duplicate_id
Many2one → pms.booking.duplicate
comodel_name='pms.booking.duplicate'
string='Folio Wizard ID'
checkin
Date
compute='_compute_checkin'
help='Date Reservation starts '
string='From:'
checkout
Date
compute='_compute_checkout'
help='Date Reservation ends'
string='To:'
occupied_room
Boolean
compute='_compute_occupied_room'
help='Check if the room is occupied'
string='Occupied Room'
pms_property_id
Many2one
help='Propertiy with access to the element;'
related='booking_duplicate_id.pms_property_id'
string='Property'
preferred_room_id
Many2one → pms.room
check_pms_properties=True
comodel_name='pms.room'
domain="[('id', 'in', allowed_room_ids),('id', 'not in', used_room_ids),('pms_property_id', '=', pms_property_id),]"
help='Room reserved'
string='Room'
price_total
Float
compute='_compute_price_total'
help='The total price in the folio'
string='Total price'
pricelist_id
Many2one → product.pricelist
check_pms_properties=True
comodel_name='product.pricelist'
domain="[('is_pms_available', '=', True)]"
help='Pricelist used for this reservation'
string='Pricelist'
reference_reservation_id
Many2one → pms.reservation
check_pms_properties=True
comodel_name='pms.reservation'
help='Reservation to copy data'
string='Reservation Reference'
room_type_id
Many2one → pms.room.type
check_pms_properties=True
comodel_name='pms.room.type'
help='Room Type reserved'
string='Room Type'
service_ids
Many2many → product.product
column1='reservation_duplicate_id'
column2='product_id'
comodel_name='product.product'
compute='_compute_service_ids'
readonly=False
relation='reservation_duplicate_product_rel'
store=True
string='Services'
used_room_ids
Many2many → pms.room
comodel_name='pms.room'
compute='_compute_used_room_ids'
string='Used Rooms'
No public methods.
avail_id
Many2one → pms.availability
check_pms_properties=True
comodel_name='pms.availability'
compute='_compute_avail_id'
help=''
index=True
ondelete='restrict'
store=True
string='Availability Day'
cancel_discount
Float
compute='_compute_cancel_discount'
default=0.0
digits='Discount'
help=''
readonly=True
store=True
string='Cancelation Discount (%)'
date
Date
help='The date of the reservation in reservation line'
string='Date'
default_invoice_to
Many2one → res.partner
comodel_name='res.partner'
compute='_compute_default_invoice_to'
help='Indicates the contact to which this line will be\n billed by default, if it is not established,\n a guest or the generic contact will be used instead'
index=True
ondelete='restrict'
readonly=False
store=True
string='Invoice to'
discount
Float
default=0.0
digits='Discount'
help=''
string='Discount (%)'
is_reselling
Boolean
help='Indicates if the reservation line is reselling'
readonly=False
store=True
string='Reselling'
occupies_availability
Boolean
compute='_compute_occupies_availability'
help='This record is taken into account to calculate availability'
store=True
string='Occupies'
overbooking
Boolean
compute='_compute_overbooking'
help='Indicate if exists overbooking in the reservation line'
readonly=False
store=True
string='Overbooking'
overnight_room
Boolean
related='reservation_id.overnight_room'
store=True
pms_property_id
Many2one → pms.property
check_pms_properties=True
comodel_name='pms.property'
help='Property with access to the element'
index=True
readonly=True
related='reservation_id.pms_property_id'
store=True
string='Property'
price
Float
compute='_compute_price'
digits='Product Price'
help='The price in a reservation line'
readonly=False
store=True
string='Price'
price_day_total
Float
compute='_compute_price_day_total'
help='Get the price with discount applied'
store=True
string='Final price'
reservation_id
Many2one → pms.reservation
check_pms_properties=True
comodel_name='pms.reservation'
copy=False
help='It is the reservation in a reservation line'
index=True
ondelete='cascade'
required=True
string='Reservation'
room_id
Many2one → pms.room
check_pms_properties=True
comodel_name='pms.room'
compute='_compute_room_id'
help='The room of a reservation. '
index=True
ondelete='restrict'
readonly=False
store=True
string='Room'
sale_channel_id
Many2one → pms.sale.channel
check_pms_properties=True
comodel_name='pms.sale.channel'
help='Sale Channel through which reservation line was created'
index=True
string='Sale Channel'
sale_line_ids
Many2many → folio.sale.line
check_pms_properties=True
comodel_name='folio.sale.line'
copy=False
readonly=True
string='Sales Lines'
state
Selection
help='State of the reservation line.'
related='reservation_id.state'
store=True
string='State'
constrains_duplicated_date(self)
create(self, vals_list)
name_get(self)
write(self, vals)
allowed_rooms_sources
Many2many → pms.room
column1='wizard_id'
column2='room_id'
comodel_name='pms.room'
compute='_compute_allowed_rooms_source'
readonly=False
relation='pms_wizard_split_join_swap_reservation_rooms_source'
store=True
string='Allowed rooms source'
allowed_rooms_target
Many2many → pms.room
column1='wizard_id'
column2='room_id'
comodel_name='pms.room'
compute='_compute_allowed_rooms_target'
readonly=False
relation='pms_wizard_split_join_swap_reservation_rooms_target'
store=True
string='Allowed rooms target'
checkin
Date
default=<expr>
help='Checkin in reservation'
string='Check In'
checkout
Date
default=<expr>
help='checkout in reservation'
string='Check Out'
operation
Selection
default=<expr>
help='Operation to be applied on the reservation'
selection=[('swap', 'Swap rooms'), ('split', 'Split reservation'), ('join', 'Join reservation')]
string='Operation'
reservation_id
Many2one → pms.reservation
comodel_name='pms.reservation'
default=<expr>
string='Reservation'
reservation_ids
Many2many → pms.reservation
comodel_name='pms.reservation'
compute='_compute_reservation_ids'
readonly=False
store=True
string='Reservations'
reservation_lines_to_change
One2many → pms.wizard.reservation.lines.split
comodel_name='pms.wizard.reservation.lines.split'
compute='_compute_reservation_lines'
inverse_name='reservation_wizard_id'
readonly=False
store=True
string='Reservations Lines To Change'
room_source
Many2one → pms.room
comodel_name='pms.room'
default=<expr>
domain="[('id', 'in', allowed_rooms_sources)]"
string='Room Source'
room_target
Many2one → pms.room
comodel_name='pms.room'
domain="[('id', 'in', allowed_rooms_target)]"
string='Room Target'
action_join(self)
action_split(self)
action_swap(self)
reservation_join(self, reservation, room)
reservation_split(self, reservation, date, room)
reservations_swap(self, checkin, checkout, source, target)
active
Boolean
default=True
help='Determines if room is active'
string='Active'
address_id
Many2one → res.partner
comodel_name='res.partner'
compute='_compute_address_id'
help='Address of the room'
index=True
ondelete='restrict'
store=True
string='Address'
address_is_independent
Boolean
help='Indicates that the address of the room is independent of the property'
string='Address is Independent'
capacity
Integer
help='The maximum number of people that can occupy a room'
string='Capacity'
child_ids
One2many → pms.room
check_pms_properties=True
comodel_name='pms.room'
help='Child rooms of the room'
inverse_name='parent_id'
string='Child Rooms'
city
Char
readonly=False
related='address_id.city'
country_id
Many2one → res.country
ondelete='restrict'
readonly=False
related='address_id.country_id'
string='Country'
args: 'res.country'
description_sale
Text
help='A description of the Product that you want to communicate to your customers. This description will be copied to every Sales Order, Delivery Order and Customer Invoice/Credit Note'
string='Sale Description'
translate=True
email
Char
readonly=False
related='address_id.email'
email_formatted
Char
compute='_compute_email_formatted'
help='Format email address "Name <email@domain>"'
args: 'Formatted Email'
extra_beds_allowed
Integer
default='0'
help='Number of extra beds allowed in room'
required=True
string='Extra Beds Allowed'
image_1920
Image
max_height=1920
max_width=1920
readonly=False
related='address_id.image_1920'
is_shared_room
Boolean
compute='_compute_is_shared_room'
help='allows you to reserve units smaller than the room itself (eg beds)'
readonly=False
store=True
string='Is a Shared Room'
mobile
Char
readonly=False
related='address_id.mobile'
name
Char
help='Room Name'
required=True
string='Room Name'
parent_id
Many2one → pms.room
check_pms_properties=True
comodel_name='pms.room'
help='Indicates that this room is a child of another room'
index=True
ondelete='restrict'
string='Parent Room'
partner_latitude
Float
digits=(16, 5)
readonly=False
related='address_id.partner_latitude'
string='Geo Latitude'
partner_longitude
Float
digits=(16, 5)
readonly=False
related='address_id.partner_longitude'
string='Geo Longitude'
phone
Char
readonly=False
related='address_id.phone'
pms_property_id
Many2one → pms.property
comodel_name='pms.property'
help='Properties with access to the element; if not set, all properties can access'
index=True
ondelete='restrict'
required=True
string='Property'
room_amenity_ids
Many2many → pms.amenity
check_pms_properties=True
column1='room_id'
column2='amenity_id'
comodel_name='pms.amenity'
help='List of amenities included in room'
relation='pms_room_amenity_rel'
string='Room Amenities'
room_type_id
Many2one → pms.room.type
check_pms_properties=True
comodel_name='pms.room.type'
help='Unique room type for the rooms'
index=True
ondelete='restrict'
required=True
string='Property Room Type'
sequence
Integer
default=0
help='Field used to change the position of the rooms in tree view.Changing the position changes the sequence'
string='Sequence'
short_name
Char
help='Four character name, if not set, autocompletes with the first two letters of the room name and two incremental numbers'
string='Short Name'
state_id
Many2one → res.country.state
domain="[('country_id', '=?', country_id)]"
ondelete='restrict'
readonly=False
related='address_id.state_id'
string='State'
args: 'res.country.state'
street
Char
readonly=False
related='address_id.street'
street2
Char
readonly=False
related='address_id.street2'
ubication_id
Many2one → pms.ubication
check_pms_properties=True
comodel_name='pms.ubication'
help='At which ubication the room is located.'
index=True
string='Ubication'
website
Char
readonly=False
related='address_id.website'
zip
Char
readonly=False
related='address_id.zip'
calculate_short_name(self, vals)
create(self, vals)
get_capacity(self, extra_bed=0)
name_get(self)
write(self, vals)
board_service_room_type_ids
One2many → pms.board.service.room.type
check_pms_properties=True
comodel_name='pms.board.service.room.type'
help='Board Service included in room type'
inverse_name='pms_room_type_id'
string='Board Services'
class_id
Many2one → pms.room.type.class
check_pms_properties=True
comodel_name='pms.room.type.class'
help='Class to which the room type belongs'
index=True
required=True
string='Property Type Class'
default_code
Char
help='Identification code for a room type'
required=True
string='Code'
default_max_avail
Integer
default=-1
help='Maximum simultaneous availability on own Booking Engine given no availability rules. Use `-1` for using maximum simultaneous availability.'
string='Default Max. Availability'
default_quota
Integer
default=-1
help='Quota assigned to the own Booking Engine given no availability rules. Use `-1` for managing no quota.'
string='Default Quota'
min_price
Float
default=5.0
help='Minimum price for a room type'
string='Min. Price'
overnight_room
Boolean
related='class_id.overnight'
store=True
product_id
Many2one → product.product
comodel_name='product.product'
delegate=True
help='Product identifier associated with room type'
index=True
ondelete='cascade'
required=True
string='Product Room Type'
room_amenity_ids
Many2many → pms.amenity
check_pms_properties=True
column1='room_type_id'
column2='amenity_id'
comodel_name='pms.amenity'
help='List of amenities included in room type'
relation='pms_room_type_amenity_rel'
string='Room Type Amenities'
room_ids
One2many → pms.room
check_pms_properties=True
comodel_name='pms.room'
help='Rooms that belong to room type.'
inverse_name='room_type_id'
string='Rooms'
sequence
Integer
default=0
help='Field used to change the position of the room types in tree view.'
string='Sequence'
total_rooms_count
Integer
compute='_compute_total_rooms_count'
help='The number of rooms in a room type'
store=True
string='Total Rooms Count'
create(self, vals)
get_room_type_capacity(self, pms_property_id)
get_room_types_by_property(self, pms_property_id, default_code=None)
name_get(self)
active
Boolean
default=True
help='If unchecked, it will allow you to hide the room type'
string='Active'
default_code
Char
help='Room type class identification code'
required=True
string='Code'
name
Char
help='Name of the room type class'
required=True
string='Class Name'
translate=True
overnight
Boolean
default=True
help='Set False if if these types of spaces are not used for overnight stays'
string='Use for overnight stays'
pms_property_ids
Many2many → pms.property
check_pms_properties=True
column1='room_type_class_id'
column2='pms_property_id'
comodel_name='pms.property'
help='Properties with access to the element; if not set, all properties can access'
ondelete='restrict'
relation='pms_room_type_class_property_rel'
string='Properties'
room_type_ids
One2many → pms.room.type
check_pms_properties=True
comodel_name='pms.room.type'
help='Room Types that belong to this Room Type Class'
inverse_name='class_id'
string='Types'
sequence
Integer
default=0
help='Field used to change the position of the room type classes in tree view.'
string='Sequence'
get_unique_by_property_code(self, pms_property_id, default_code=None)
active
Boolean
default=True
string='Active'
channel_type
Selection
help="Type of sale channel; it can be 'direct'(if there isno intermediary) or 'indirect'(if there areintermediaries between partner and property"
selection=[('direct', 'Direct'), ('indirect', 'Indirect')]
string='Sale Channel Type'
icon
Image
max_height=1024
max_width=1024
store=True
string='Logo'
is_on_line
Boolean
help='Indicates if the sale channel is on-line'
string='On Line'
name
Text
help='The name of the sale channel'
string='Sale Channel Name'
pms_property_ids
Many2many → pms.property
check_pms_properties=True
column1='pms_sale_channel_id'
column2='pms_property_id'
comodel_name='pms.property'
help='Properties with access to the element; if not set, all properties can access'
ondelete='restrict'
relation='pms_sale_channel_pms_property_rel'
required=False
string='Properties'
product_pricelist_ids
Many2many → product.pricelist
check_pms_properties=True
column1='pms_sale_channel_id'
column2='product_pricelist_id'
comodel_name='product.pricelist'
domain="[('is_pms_available', '=', True)]"
help='Pricelists for a sale channel'
relation='pms_sale_channel_product_pricelist_rel'
string='Pricelists'
No public methods.
analytic_tag_ids
Many2many → account.analytic.tag
comodel_name='account.analytic.tag'
help=''
string='Analytic Tags'
board_service_line_id
Many2one → pms.board.service.room.type.line
check_pms_properties=True
comodel_name='pms.board.service.room.type.line'
help='Board Service Line in which this service is included'
string='Board Service Line'
company_id
Many2one
help='Company to which the service belongs'
index=True
readonly=True
related='folio_id.company_id'
store=True
string='Company'
currency_id
Many2one
help='The currency used in relation to the folio'
index=True
readonly=True
related='folio_id.currency_id'
store=True
string='Currency'
default_invoice_to
Many2one → res.partner
comodel_name='res.partner'
compute='_compute_default_invoice_to'
help='Indicates the contact to which this line will be\n billed by default, if it is not established,\n a guest or the generic contact will be used instead'
index=True
ondelete='restrict'
readonly=False
store=True
string='Invoice to'
discount
Float
compute='_compute_discount'
digits='Discount'
help='Discount of total price'
inverse='_inverse_discount'
readonly=False
store=True
string='Discount (€/ud)'
folio_id
Many2one → pms.folio
check_pms_properties=True
comodel_name='pms.folio'
compute='_compute_folio_id'
help='Folio in which the service is included'
index=True
readonly=False
store=True
string='Folio'
invoice_status
Selection
compute='_compute_invoice_status'
default='no'
help="State in which the service is with respect to invoices.It can be 'invoiced', 'to_invoice' or 'no'"
readonly=True
selection=[('invoiced', 'Fully Invoiced'), ('to_invoice', 'To Invoice'), ('no', 'Nothing to Invoice')]
store=True
string='Invoice Status'
is_board_service
Boolean
help='Indicates if the service is part of a board service'
string='Is Board Service'
is_cancel_penalty
Boolean
compute='_compute_is_cancel_penalty'
help='Indicates if the service is a cancel penalty'
readonly=True
string='Is Cancel Penalty'
name
Char
compute='_compute_name'
help='Service description'
readonly=False
store=True
string='Service description'
no_auto_add_lines
Boolean
default=False
help='Technical field to avoid add service lines to service\n automatically when creating a new service. It is used when\n creating a new service with lines in vals\n '
string='Force No Auto Add Lines'
per_day
Boolean
help='Indicates if service is sold by days'
related='product_id.per_day'
related_sudo=True
string='Per Day'
pms_property_id
Many2one → pms.property
check_pms_properties=True
comodel_name='pms.property'
help='Property to which the service belongs'
index=True
readonly=True
related='folio_id.pms_property_id'
store=True
string='Property'
price_subtotal
Monetary
compute='_compute_amount_service'
help='Subtotal price without taxes'
readonly=True
store=True
string='Subtotal'
price_tax
Float
compute='_compute_amount_service'
help='Total of taxes in service'
readonly=True
store=True
string='Taxes Amount'
price_total
Monetary
compute='_compute_amount_service'
help='Total price with taxes'
readonly=True
store=True
string='Total'
product_id
Many2one → product.product
check_pms_properties=True
comodel_name='product.product'
domain="[(is_pms_available, '=', True)]"
help='Product associated with this service'
index=True
ondelete='restrict'
required=True
string='Service'
product_image
Binary
help='Image of the service'
related='product_id.image_1024'
related_sudo=True
store=False
string='Product Image'
product_qty
Integer
compute='_compute_product_qty'
help='Number of services that were sold'
readonly=False
store=True
string='Quantity'
reservation_id
Many2one → pms.reservation
check_pms_properties=True
comodel_name='pms.reservation'
default=<expr>
help='Reservation in which the service is included'
index=True
ondelete='cascade'
string='Room'
sale_channel_origin_id
Many2one → pms.sale.channel
check_pms_properties=True
comodel_name='pms.sale.channel'
help='Sale Channel through which service was created, the original'
index=True
string='Sale Channel Origin'
sale_line_ids
One2many → folio.sale.line
check_pms_properties=True
comodel_name='folio.sale.line'
copy=False
help=''
inverse_name='service_id'
string='Sale Lines'
sequence
Integer
default=10
help=''
string='Sequence'
service_line_ids
One2many → pms.service.line
check_pms_properties=True
comodel_name='pms.service.line'
compute='_compute_service_line_ids'
help='Subservices included in this service'
inverse_name='service_id'
readonly=False
store=True
string='Service Lines'
state
Selection
help='Service status, it corresponds with folio status'
related='folio_id.state'
store=True
string='State'
tax_ids
Many2many → account.tax
comodel_name='account.tax'
compute='_compute_tax_ids'
domain=['|', ('active', '=', False), ('active', '=', True)]
help='Taxes applied in the service'
readonly=False
store=True
string='Taxes'
create(self, vals)
get_folios_to_update_channel(self, vals)
name_get(self)
name_search(self, name='', args=None, operator='ilike', limit=100)
open_service_ids(self)
write(self, vals)
auto_qty
Boolean
compute='_compute_auto_qty'
help='Show if the day qty was calculated automatically'
readonly=False
store=True
string='Qty automated setted'
cancel_discount
Float
compute='_compute_cancel_discount'
help=''
readonly=True
store=True
string='Cancelation Discount'
currency_id
Many2one
help="The currency used in relation to the service where it's included"
index=True
readonly=True
related='service_id.currency_id'
store=True
string='Currency'
date
Date
help='Sate on which the product is to be consumed'
string='Date'
day_qty
Integer
help='Amount to be consumed per day'
string='Units'
default_invoice_to
Many2one → res.partner
comodel_name='res.partner'
help='Indicates the contact to which this line will be\n billed by default, if it is not established,\n a guest or the generic contact will be used instead'
index=True
ondelete='restrict'
related='service_id.default_invoice_to'
store=True
string='Invoice to'
discount
Float
compute='_compute_discount'
default=0.0
digits='Discount'
help='Discount in the price of the service.'
readonly=False
store=True
string='Discount (%)'
is_board_service
Boolean
help='Indicates if the service line is part of a board service'
related='service_id.is_board_service'
store=True
string='Is Board Service'
pms_property_id
Many2one → pms.property
check_pms_properties=True
comodel_name='pms.property'
help='Property to which the service belongs'
index=True
readonly=True
related='service_id.pms_property_id'
store=True
string='Property'
price_day_subtotal
Monetary
compute='_compute_day_amount_service'
help='Subtotal price without taxes'
readonly=True
store=True
string='Subtotal'
price_day_tax
Float
compute='_compute_day_amount_service'
help=''
readonly=True
store=True
string='Taxes Amount'
price_day_total
Monetary
compute='_compute_day_amount_service'
help='Total price with taxes'
readonly=True
store=True
string='Total'
price_unit
Float
digits='Product Price'
help='Price per unit of service'
string='Unit Price'
product_id
Many2one
check_pms_properties=True
help='Product associated with this service line'
index=True
related='service_id.product_id'
store=True
string='Product'
reservation_id
Many2one
check_pms_properties=True
help='Room to which the services will be applied'
index=True
readonly=True
related='service_id.reservation_id'
store=True
string='Reservation'
sale_line_ids
Many2many → folio.sale.line
check_pms_properties=True
comodel_name='folio.sale.line'
copy=False
readonly=True
string='Sales Lines'
service_id
Many2one → pms.service
comodel_name='pms.service'
copy=False
help='Service identifier'
index=True
ondelete='cascade'
required=True
string='Service Room'
tax_ids
Many2many → account.tax
comodel_name='account.tax'
help='Taxes applied in the service line'
readonly='True'
related='service_id.tax_ids'
string='Taxes'
no_free_resources(self)
checkin_partner_id
Many2one → pms.checkin.partner
comodel_name='pms.checkin.partner'
string='Checkin Partner'
folio_id
Many2one → pms.folio
comodel_name='pms.folio'
string='Folio'
possible_existing_customer_ids
Many2many → res.partner
comodel_name='res.partner'
readonly=False
store=True
string='Customers'
reservation_id
Many2one → pms.reservation
comodel_name='pms.reservation'
string='Reservation'
add_partner(self)
default_get(self, fields)
active
Boolean
default=True
string='Active'
name
Char
related='user_id.name'
store=True
string='Name'
pms_property_id
Many2one → pms.property
comodel_name='pms.property'
index=True
ondelete='restrict'
store=True
string='Property'
pms_role
Selection
copy=False
help="The member role in the organizationIt can be 'Reception', 'Revenue', 'Administrative', or 'Manager'"
required=True
selection=[('reception', 'Reception'), ('revenue', 'Revenue'), ('administrative', 'Administrative'), ('manager', 'Operational Manager')]
string='PMS Role'
sequence
Integer
default=10
string='Sequence'
user_id
Many2one → res.users
comodel_name='res.users'
copy=False
index=True
ondelete='restrict'
string='User Member'
No public methods.
name
Char
help='Ubication Name'
required=True
string='Ubication Name'
translate=True
pms_property_ids
Many2many → pms.property
check_pms_properties=True
column1='ubication_type_id'
column2='pms_property_id'
comodel_name='pms.property'
help='Properties with access to the element; if not set, all properties can access'
ondelete='restrict'
relation='pms_ubication_pms_property_rel'
string='Properties'
pms_room_ids
One2many → pms.room
check_pms_properties=True
comodel_name='pms.room'
help='Rooms found in this location'
inverse_name='ubication_id'
string='Rooms'
sequence
Integer
help='Field used to change the position of the ubications in tree view.Changing the position changes the sequence'
string='Sequence'
No public methods.
allowed_room_ids
Many2many → pms.room
comodel_name='pms.room'
compute='_compute_allowed_room_ids'
help='It contains all available rooms for this line'
store=True
string='Allowed Rooms'
date
Date
string='Date'
reservation_wizard_id
Many2one → pms.reservation.split.join.swap.wizard
comodel_name='pms.reservation.split.join.swap.wizard'
string='Reservation Wizard'
room_id
Many2one → pms.room
comodel_name='pms.room'
domain="[('id', 'in', allowed_room_ids)]"
string='Room'
No public methods.
availability_plan_id
Many2one → pms.availability.plan
check_pms_properties=True
comodel_name='pms.availability.plan'
help='Availability Plan for which the pricelist is included'
index=True
ondelete='restrict'
string='Availability Plan'
cancelation_rule_id
Many2one → pms.cancelation.rule
check_pms_properties=True
comodel_name='pms.cancelation.rule'
help='Cancelation Policy included in the room'
index=True
string='Cancelation Policy'
company_id
Many2one
help='Company to which the pricelist belongs'
index=True
string='Company'
is_pms_available
Boolean
default=False
help='If the pricelist is available in the PMS'
string='Available in PMS'
item_ids
One2many
check_pms_properties=True
help='Items for which the pricelist is made up'
string='Items'
pms_property_ids
Many2many → pms.property
check_pms_properties=True
column1='product_pricelist_id'
column2='pms_property_id'
comodel_name='pms.property'
help='Properties with access to the element; if not set, all properties can access'
ondelete='restrict'
relation='product_pricelist_pms_property_rel'
required=False
string='Properties'
pms_sale_channel_ids
Many2many → pms.sale.channel
check_pms_properties=True
comodel_name='pms.sale.channel'
help='Sale channel for which the pricelist is included'
string='Available Channels'
pricelist_type
Selection
default='daily'
help='Pricelist types, it can be Daily Plan'
selection=[('daily', 'Daily Plan')]
string='Pricelist Type'
open_massive_changes_wizard(self)
allowed_board_service_product_ids
Many2many → product.product
comodel_name='product.product'
compute='_compute_allowed_board_service_product_ids'
readonly=False
store=True
string='Allowed board service products'
allowed_board_service_room_type_ids
Many2many → pms.board.service.room.type
comodel_name='pms.board.service.room.type'
compute='_compute_allowed_board_service_room_type_ids'
readonly=False
store=True
string='Allowed board service room types'
board_service_room_type_id
Many2one → pms.board.service.room.type
check_pms_properties=True
comodel_name='pms.board.service.room.type'
help='Specify a Board services on Room Types.'
index=True
string='Board Service'
date_end_consumption
Date
help='End date to apply daily pricelist items'
string='End Date Consumption'
date_start_consumption
Date
help='Start date to apply daily pricelist items'
string='Start Date Consumption'
pms_property_ids
Many2many → pms.property
check_pms_properties=True
column1='product_pricelist_item_id'
column2='pms_property_id'
comodel_name='pms.property'
help='Properties with access to the element; if not set, all properties can access'
ondelete='restrict'
relation='product_pricelist_item_pms_property_rel'
string='Properties'
pricelist_id
Many2one
check_pms_properties=True
help='Pricelist in which this item is included'
index=True
string='Pricelist'
product_id
Many2one
check_pms_properties=True
help='Product associated with the item'
index=True
string='Product'
product_tmpl_id
Many2one
check_pms_properties=True
help='Product template associated with the item'
index=True
string='Product Template'
create(self, vals)
write(self, vals)
board_price
Float
compute='_compute_board_price'
digits='Product Price'
help='Get price on board service'
string='Board Service Price'
room_type_id
Many2one → pms.room.type
comodel_name='pms.room.type'
compute='_compute_room_type_id'
string='Room Type'
price_compute(self, price_type, uom=False, currency=False, company=None)
consumed_on
Selection
default='before'
help='Indicates when the product is consumed'
selection=[('before', 'All before night'), ('after', 'All after night'), ('checkin', 'Only first day'), ('checkout', 'Only last day')]
string='Consumed'
daily_limit
Integer
compute='_compute_daily_limit'
help='Indicates how much products can consumed in one day'
inverse='_inverse_daily_limit'
string='Daily limit'
is_crib
Boolean
default=False
help='Indicates if that product is a crib'
string='Is a baby crib'
is_extra_bed
Boolean
default=False
help='Indicates if that product is a extra bed, add +1 capacity in the room'
string='Is extra bed'
is_pms_available
Boolean
default=True
help='Indicates if that product is available in PMS'
string='Is available in PMS'
is_tourist_tax
Boolean
default=False
help='Indicates if that product is a tourist tax'
string='Is tourist tax'
per_day
Boolean
help='Indicates that the product is sold by days'
string='Unit increment per day'
per_person
Boolean
help='Indicates that the product is sold per person'
string='Unit increment per person'
pms_property_ids
Many2many → pms.property
check_pms_properties=True
column1='product_tmpl_id'
column2='pms_property_id'
comodel_name='pms.property'
help='Properties with access to the element; if not set, all properties can access'
ondelete='restrict'
relation='product_template_pms_property_rel'
required=False
string='Properties'
property_daily_limits
One2many → ir.pms.property
comodel_name='ir.pms.property'
domain=<expr>
inverse_name='record'
string='Daily Limits per Property'
tourist_tax_apply_from_night
Integer
default=1
help='Night number the rule starts applying (e.g., 1 = first night)'
string='Apply From Night'
tourist_tax_apply_to_night
Integer
help='Night number the rule stops applying (optional)'
string='Apply Until Night'
tourist_tax_date_end
Selection
required=False
selection=<expr>
string='End Date (Annual)'
tourist_tax_date_start
Selection
required=False
selection=<expr>
string='Start Date (Annual)'
tourist_tax_max_age
Integer
help='Applies only to guests up to this age'
string='Maximum Age'
tourist_tax_min_age
Integer
help='Applies only to guests with this age or older'
string='Minimum Age'
write(self, vals)
cancel_penalty_product_id
Many2one → product.product
comodel_name='product.product'
help='Product used to calculate the cancel penalty'
index=True
ondelete='restrict'
string='Cancel penalty product'
check_min_partner_data_invoice
Boolean
default=False
help='Check minimum partner data for invoices:\n - VAT, name, street, city, country'
string='Check minimum partner data for invoices'
document_partner_required
Boolean
default=False
help='If true, the partner document is required\n to create a new contact'
string='Document partner required'
pms_invoice_downpayment_policy
Selection
default='no'
help='\n - Manual: Downpayment invoice will be created manually\n - All: Downpayment invoice will be created automatically\n - Current Month: Downpayment invoice will be created automatically\n only for reservations with checkout date past of current month\n '
selection=[('no', 'Manual'), ('all', 'All'), ('checkout_past_month', 'Checkout past month')]
string='Downpayment policy invoce'
pms_property_ids
One2many → pms.property
comodel_name='pms.property'
help='Properties with access to the element'
inverse_name='company_id'
string='Properties'
privacy_policy
Html
help='Authorization by the user for themanage of their personal data'
string='Privacy Policy'
self_billed_journal_id
Many2one → account.journal
comodel_name='account.journal'
help='Journal used to create self billing'
index=True
ondelete='restrict'
string='Self billed journal'
self_billed_tax_ids
Many2many → account.tax
column1='company_id'
column2='tax_id'
comodel_name='account.tax'
domain="[('company_id', '=', id)]"
help='Taxes used to create self billing'
relation='company_autoinvoicing_tax_rel'
string='Self billed taxes'
url_advert
Char
help='Url to identify the ad'
string='Url Advert'
No public methods.
priority
Integer
default=1000
string='Priority'
No public methods.
apply_pricelist
Boolean
help='Indicates if agency pricelist is applied to his reservations'
string='Apply Pricelist'
birthdate_date
Date
compute='_compute_birthdate_date'
readonly=False
store=True
checkin_partner_possible_customer_id
Many2one → pms.checkin.partner
comodel_name='pms.checkin.partner'
string='Possible Customer In Checkin Partner'
city
Char
compute='_compute_city'
readonly=False
store=True
comment
Text
tracking=True
commission_type
Selection
default='included'
help='\n If select subtract commission, for automatic import of reservations,\n the commission is calculated as price - (price * commission / 100)\n '
selection=[('included', 'Commission Included in Price'), ('subtract', 'Commission Subtracts from Price')]
string='Commission Type'
country_id
Many2one
compute='_compute_country_id'
index=True
readonly=False
store=True
default_commission
Integer
help='Default commission'
string='Commission'
email
Char
compute='_compute_email'
readonly=False
store=True
firstname
Char
compute='_compute_firstname'
readonly=False
store=True
folio_possible_customer_id
Many2one → pms.folio
comodel_name='pms.folio'
string='Possible Customer In Folio'
folios_count
Integer
compute='_compute_folios_count'
help='Number of folios of the partner'
string='Number of Folios'
gender
Selection
compute='_compute_gender'
readonly=False
store=True
invoice_to_agency
Selection
default='never'
help='Indicates if agency invoices partner'
required=True
selection=[('never', 'Never'), ('manual', 'Manual'), ('always', 'Always')]
string='Invoice Agency'
invoicing_month_day
Integer
help='The day of the month to invoice'
string='Invoicing Month Day'
invoicing_policy
Selection
default='property'
help='The invoicing policy of the partner,\n set Property to user the policy configured in the Property'
selection=[('property', 'Property Policy Invoice'), ('manual', 'Manual'), ('checkout', 'From Checkout'), ('month_day', 'Month Day Invoice')]
string='Invoicing Policy'
is_agency
Boolean
help='Indicates if the partner is an agency'
string='Is Agency'
lastname
Char
compute='_compute_lastname'
readonly=False
store=True
lastname2
Char
compute='_compute_lastname2'
readonly=False
store=True
margin_days_autoinvoice
Integer
help='Days from Checkout to generate the invoice'
string='Days from Checkout'
mobile
Char
compute='_compute_mobile'
readonly=False
store=True
nationality_id
Many2one
compute='_compute_nationality_id'
index=True
readonly=False
store=True
phone
Char
compute='_compute_phone'
readonly=False
store=True
pms_checkin_partner_ids
One2many → pms.checkin.partner
comodel_name='pms.checkin.partner'
help='Associated checkin partners'
inverse_name='partner_id'
string='Checkin Partners'
pms_folio_ids
One2many → pms.folio
comodel_name='pms.folio'
help='Associated Folios'
inverse_name='partner_id'
string='Folios'
pms_property_ids
Many2many → pms.property
check_pms_properties=True
column1='res_partner_id'
column2='pms_property_id'
comodel_name='pms.property'
help='Properties with access to the element if not set, all properties can access'
ondelete='restrict'
relation='res_partner_pms_property_rel'
required=False
string='Properties'
pms_reservation_ids
One2many → pms.reservation
comodel_name='pms.reservation'
help='Associated reservation'
inverse_name='partner_id'
string='Reservations'
reservation_possible_customer_id
Many2one → pms.reservation
comodel_name='pms.reservation'
string='Possible Customer In Reservation'
reservations_count
Integer
compute='_compute_reservations_count'
help='Number of reservations of the partner'
string='Number of Reservations'
residence_city
Char
compute='_compute_residence_city'
help="City of the guest's residence"
readonly=False
store=True
string='city of residence'
residence_country_id
Many2one → res.country
comodel_name='res.country'
compute='_compute_residence_country_id'
help='Partner country of residence'
index=True
readonly=False
store=True
string='Country of residence'
residence_state_id
Many2one → res.country.state
comodel_name='res.country.state'
compute='_compute_residence_state_id'
help='Partner state of residence'
index=True
readonly=False
store=True
string='State of residence'
residence_street
Char
compute='_compute_residence_street'
help="Street of the guest's residence"
readonly=False
store=True
string='Street of residence'
residence_street2
Char
compute='_compute_residence_street2'
help="Second street of the guest's residence"
readonly=False
store=True
string='Second street of residence'
residence_zip
Char
change_default=True
compute='_compute_residence_zip'
help="Zip of the guest's residence"
readonly=False
store=True
string='Zip of residence'
sale_channel_id
Many2one → pms.sale.channel
comodel_name='pms.sale.channel'
domain=[('channel_type', '=', 'indirect')]
help='The sale channel of the partner'
index=True
ondelete='restrict'
string='Sale Channel'
state_id
Many2one
compute='_compute_state_id'
index=True
readonly=False
store=True
street
Char
compute='_compute_street'
readonly=False
store=True
street2
Char
compute='_compute_street2'
readonly=False
store=True
zip
Char
compute='_compute_zip'
readonly=False
store=True
action_partner_folios(self)
action_partner_reservations(self)
create(self, values)
unlink(self)
write(self, vals)
is_used_in_checkin
Boolean
string='Used in checkin'
No public methods.
country_ids
Many2many → res.country
comodel_name='res.country'
string='Countries'
priority
Integer
default=100
string='Priority'
No public methods.
category_id
Many2one
compute='_compute_category_id'
readonly=False
store=True
country_id
Many2one → res.country
comodel_name='res.country'
compute='_compute_country_id'
help='Country of the document'
readonly=False
store=True
string='Country'
name
Char
compute='_compute_name'
readonly=False
store=True
valid_from
Date
compute='_compute_valid_from'
readonly=False
store=True
No public methods.
pms_property_id
Many2one → pms.property
comodel_name='pms.property'
context={'user_preference': True}
domain="[('id','in',pms_property_ids)]"
help='The property that is selected within those allowed for the user'
index=True
string='Default Property'
pms_property_ids
Many2many → pms.property
column1='user_id'
column2='pms_property_id'
comodel_name='pms.property'
domain="[('company_id','in',company_ids)]"
help='The properties allowed for this user'
relation='pms_property_users_rel'
string='Properties'
create(self, vals)
write(self, vals)
description
Text
help='Explanation of the reason for closing a room'
string='Description'
translate=True
name
Char
help='The name that identifies the room closure reason'
required=True
string='Name'
translate=True
pms_property_ids
Many2many → pms.property
column1='room_closure_reason_type_id'
column2='pms_property_id'
comodel_name='pms.property'
help='Properties with access to the element; if not set, all properties can access'
ondelete='restrict'
relation='pms_room_closure_reason_pms_property_rel'
string='Properties'
No public methods.
allowed_reservation_ids
Many2many → pms.reservation
column1='folio_changes_id'
column2='allowed_reservation_ids'
comodel_name='pms.reservation'
compute='_compute_allowed_reservation_ids'
relation='folio_changes_allowed_reservation_rel'
string='Allowed Reservations'
allowed_room_type_ids
Many2many → pms.room.type
column1='folio_changes_id'
column2='allowed_room_type_ids'
comodel_name='pms.room.type'
compute='_compute_allowed_room_type_ids'
relation='folio_changes_allowed_room_type_rel'
string='Allowed Room Types'
allowed_service_ids
Many2many → pms.service
column1='folio_changes_id'
column2='allowed_service_ids'
comodel_name='pms.service'
compute='_compute_allowed_service_ids'
relation='folio_changes_allowed_service_rel'
string='Allowed Services'
apply_board_service
Boolean
default=False
string='Add Board Service to reservations'
apply_day_qty
Boolean
default=False
help='If not set, it will use the default product day qty'
string='Change cuantity service per day'
apply_discount
Boolean
default=False
string='Apply Discount update'
apply_new_checkin
Boolean
default=False
string='Apply Checkin Update'
apply_new_checkout
Boolean
default=False
string='Apply Checkout Update'
apply_on_all_week
Boolean
default=True
string='Apply Availability Rule for the whole week'
apply_on_friday
Boolean
default=False
string='Apply Availability Rule on fridays'
apply_on_monday
Boolean
default=False
string='Apply Availability Rule on mondays'
apply_on_saturday
Boolean
default=False
string='Apply Availability Rule on saturdays'
apply_on_sunday
Boolean
default=False
string='Apply Availability Rule on sundays'
apply_on_thursday
Boolean
default=False
string='Apply Availability Rule on thursdays'
apply_on_tuesday
Boolean
default=False
string='Apply Availability Rule on tuesdays'
apply_on_wednesday
Boolean
default=False
string='Apply Availability Rule on wednesdays'
apply_partner_id
Boolean
default=False
string='Apply Customer'
apply_price
Boolean
default=False
string='Apply Price update'
apply_pricelist_id
Boolean
default=False
string='Apply Pricelist'
apply_service
Boolean
default=False
string='Add Service to reservations'
change_from_date
Date
default=<expr>
string='Apply From'
change_to_date
Date
default=<expr>
string='Apply To'
dates_incongruence
Boolean
compute='_compute_dates_incongruence'
help='Indicates that there are reservations with different checkin and/or checkout'
store=True
string='Dates incrongruence'
day_qty
Integer
string='Quantity per day'
folio_id
Many2one → pms.folio
comodel_name='pms.folio'
default=<expr>
string='Folio'
modification_type
Selection
default='reservations'
selection=[('reservations', 'Reservations'), ('dates', 'Dates'), ('services', 'Services Prices')]
string='Modification Type'
new_board_service_id
Many2one → pms.board.service
comodel_name='pms.board.service'
string='New Board Service'
new_checkin
Date
default=<expr>
string='New Checkin'
new_checkout
Date
default=<expr>
string='New Checkout'
new_discount
Float
string='New Discount %'
new_partner_id
Many2one → res.partner
comodel_name='res.partner'
string='Customer'
new_price
Float
string='New Price'
new_pricelist_id
Many2one → product.pricelist
comodel_name='product.pricelist'
domain="[('is_pms_available', '=', True)]"
string='Pricelist'
new_service_id
Many2one → product.product
comodel_name='product.product'
domain="[('sale_ok','=',True)]"
string='New Service'
nights
Integer
compute='_compute_nights'
string='Nights'
reservation_ids
Many2many → pms.reservation
column1='folio_changes_id'
column2='reservation_ids'
comodel_name='pms.reservation'
default=<expr>
domain="[('id', 'in', allowed_reservation_ids)]"
relation='folio_changes_reservation_rel'
string='Reservations'
room_type_filter_ids
Many2many → pms.room.type
column1='folio_changes_id'
column2='room_type_ids'
comodel_name='pms.room.type'
default=<expr>
domain="[('id', 'in', allowed_room_type_ids)]"
relation='folio_changes_room_type_rel'
string='Room types'
service_ids
Many2many → pms.service
column1='folio_changes_id'
column2='service_ids'
comodel_name='pms.service'
default=<expr>
domain="[('id', 'in', allowed_service_ids)]"
relation='folio_changes_service_rel'
string='Services'
button_change(self)
default_change_from_date(self)
default_change_new_checkin(self)
default_change_new_checkout(self)
default_change_to_date(self)
allowed_method_ids
Many2many → account.journal
column1='payment_id'
column2='journal_id'
comodel_name='account.journal'
compute='_compute_allowed_method_ids'
relation='allowed_payment_journal_rel'
store='True'
amount
Float
digits='Product Price'
string='Amount'
date
Date
default=fields.Date.context_today
required=True
string='Date'
folio_id
Many2one → pms.folio
comodel_name='pms.folio'
required=True
string='Folio'
partner_id
Many2one → res.partner
comodel_name='res.partner'
string='Partner'
payment_method_id
Many2one → account.journal
comodel_name='account.journal'
domain="[('id', 'in', allowed_method_ids)]"
required=True
string='Payment Method'
reservation_ids
Many2many → pms.reservation
comodel_name='pms.reservation'
string='Reservations'
service_ids
Many2many → pms.service
comodel_name='pms.service'
string='Services'
button_payment(self)