Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions pms/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,22 @@ You will find the hotel settings in PMS Management > Configuration > Properties

This module required additional configuration for company, accounting, invoicing and user privileges.

Children and room capacity
~~~~~~~~~~~~~~~~~~~~~~~~~~

By default children take no place in the room, so only the adults are checked
against its capacity. Properties that want to count them can set the system
parameter ``pms.children_occupy_capacity`` to ``True``, in Settings > Technical
> System Parameters.

Once it is on, children take the regular places of the room first and only
overflow into its children places, the ones where only a child can sleep, such
as child bunk beds. Adults never occupy those, so a room with free children
places can still be full.

Mind that turning it on refuses reservations that the property may have been
taking until then.

Usage
=====

Expand Down
5 changes: 2 additions & 3 deletions pms/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
{
"name": "PMS (Property Management System)",
"summary": "A property management system",
"version": "16.0.4.24.0",
"version": "16.0.4.26.0",
"development_status": "Beta",
"category": "Generic Modules/Property Management System",
"website": "https://github.com/OCA/pms",
Expand Down Expand Up @@ -38,6 +38,7 @@
"data/pms_modified_reservation_email_template.xml",
"data/pms_cancelled_reservation_email_template.xml",
"data/pms_precheckin_invitation_email_template.xml",
"data/pms_board_service_data.xml",
"data/pms_data.xml",
"data/traveller_report_paperformat.xml",
"report/pms_folio.xml",
Expand All @@ -54,8 +55,6 @@
"wizards/pms_booking_duplicate_views.xml",
"views/pms_amenity_views.xml",
"views/pms_amenity_type_views.xml",
"views/pms_board_service_views.xml",
"views/pms_board_service_room_type_views.xml",
"views/pms_cancelation_rule_views.xml",
"views/pms_checkin_partner_views.xml",
"views/pms_ubication_views.xml",
Expand Down
38 changes: 38 additions & 0 deletions pms/data/pms_board_service_data.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo noupdate="1">
<!-- The guests a board service variant is consumed by. A board service
without this attribute is consumed by every guest -->
<record id="product_attribute_board_guest" model="product.attribute">
<field name="name">Guest</field>
<field name="create_variant">always</field>
<field name="display_type">radio</field>
</record>
<record
id="product_attribute_value_board_guest_adult"
model="product.attribute.value"
>
<field name="name">Adult</field>
<field name="attribute_id" ref="product_attribute_board_guest" />
<field name="sequence">1</field>
</record>
<record
id="product_attribute_value_board_guest_child"
model="product.attribute.value"
>
<field name="name">Child</field>
<field name="attribute_id" ref="product_attribute_board_guest" />
<field name="sequence">2</field>
</record>
<!-- Selling a stay without board service. It is never added to a
reservation: pricelists list it to sell rooms only, and availability
plans close it to force a board service on some dates -->
<record id="product_template_board_room_only" model="product.template">
<field name="name">Room Only</field>
<field name="default_code">RO</field>
<field name="type">service</field>
<field name="list_price">0</field>
<field name="purchase_ok" eval="False" />
<field name="is_board_service" eval="True" />
<field name="is_pms_available" eval="False" />
</record>
</odoo>
4 changes: 4 additions & 0 deletions pms/data/pms_data.xml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@
<record id="product.list0" model="product.pricelist">
<field name="availability_plan_id" ref="main_pms_availability_plan" />
<field name="is_pms_available" eval="True" />
<field
name="board_service_ids"
eval="[(4, ref('pms.product_template_board_room_only'))]"
/>
</record>
<!-- default partner simplified invoices -->
<record id="various_pms_partner" model="res.partner">
Expand Down
40 changes: 20 additions & 20 deletions pms/demo/pms_folio.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
'checkin': (DateTime.today() + timedelta(days=14)),
'checkout': (DateTime.today() + timedelta(days=16)),
'adults': 2,
'board_service_room_id': ref('pms_board_service_room_eco_half_board'),
'board_service_id': ref('pms_board_service_half_board'),
'partner_requests': 'Vegan breakfast',
})]"
/>
Expand Down Expand Up @@ -85,7 +85,7 @@
'checkin': (DateTime.today() + timedelta(days=14)),
'checkout': (DateTime.today() + timedelta(days=15)),
'adults': 3,
'board_service_room_id': ref('pms_board_service_room_triple_full_board'),
'board_service_id': ref('pms_board_service_full_board'),
})]"
/>
</record>
Expand Down Expand Up @@ -187,7 +187,7 @@
'checkout': (DateTime.today() + timedelta(days=16)),
'adults': 1,
'children':1,
'board_service_room_id': ref('pms_board_service_room_double_half_board'),
'board_service_id': ref('pms_board_service_half_board'),
'partner_requests': 'Vegan food.'

})]"
Expand All @@ -212,7 +212,7 @@
'checkin': (DateTime.today() + timedelta(days=15)),
'checkout': (DateTime.today() + timedelta(days=16)),
'adults': 1,
'board_service_room_id': ref('pms_board_service_room_triple_full_board'),
'board_service_id': ref('pms_board_service_full_board'),
})]"
/>
</record>
Expand Down Expand Up @@ -292,7 +292,7 @@
'checkout': (DateTime.today() + timedelta(days=17)),
'adults': 2,
'children':1,
'board_service_room_id': ref('pms_board_service_room_triple_breakfast'),
'board_service_id': ref('pms_board_service_breakfast'),
'partner_requests': 'Soy milf for breakfast.'
})]"
/>
Expand Down Expand Up @@ -581,7 +581,7 @@
'children': 1,
'arrival_hour': '12:00',
'departure_hour': '12:30',
'board_service_room_id': ref('pms_board_service_room_double_half_board'),
'board_service_id': ref('pms_board_service_half_board'),
'partner_requests': 'allergic to nuts.'
})]"
/>
Expand Down Expand Up @@ -666,15 +666,15 @@
'checkin': (DateTime.today() + timedelta(days=23)),
'checkout': (DateTime.today() + timedelta(days=24)),
'adults': 1,
'board_service_room_id': ref('pms_board_service_room_single_half_board'),
'board_service_id': ref('pms_board_service_half_board'),
}),
(0, 0, {
'pricelist_id': ref('product.list0'),
'room_type_id': ref('pms_room_type_single'),
'checkin': (DateTime.today() + timedelta(days=23)),
'checkout': (DateTime.today() + timedelta(days=24)),
'adults': 1,
'board_service_room_id': ref('pms_board_service_room_single_breakfast'),
'board_service_id': ref('pms_board_service_breakfast'),
'sale_channel_origin_id': ref('pms.main_pms_sale_channel_phone')
}),
(0, 0, {
Expand All @@ -683,7 +683,7 @@
'checkin': (DateTime.today() + timedelta(days=23)),
'checkout': (DateTime.today() + timedelta(days=24)),
'adults': 1,
'board_service_room_id': ref('pms_board_service_room_single_full_board'),
'board_service_id': ref('pms_board_service_full_board'),
'sale_channel_origin_id': ref('pms.main_pms_sale_channel_phone')
})]"
/>
Expand Down Expand Up @@ -727,7 +727,7 @@
'checkout': (DateTime.today() + timedelta(days=24)),
'adults': 2,
'children': 1,
'board_service_room_id': ref('pms_board_service_room_triple_full_board'),
'board_service_id': ref('pms_board_service_full_board'),
'sale_channel_origin_id': ref('main_pms_sale_channel_mail')
})]"
/>
Expand Down Expand Up @@ -755,7 +755,7 @@
'adults': 1,
'arrival_hour': '17:00',
'departure_hour': '12:15',
'board_service_room_id': ref('pms_board_service_room_single_full_board'),
'board_service_id': ref('pms_board_service_full_board'),
}),
(0, 0, {
'pricelist_id': ref('product.list0'),
Expand All @@ -765,7 +765,7 @@
'adults': 1,
'arrival_hour': '16:00',
'departure_hour': '11:15',
'board_service_room_id': ref('pms_board_service_room_single_full_board'),
'board_service_id': ref('pms_board_service_full_board'),
})]"
/>
</record>
Expand Down Expand Up @@ -796,7 +796,7 @@
'adults': 1,
'arrival_hour': '17:00',
'departure_hour': '12:15',
'board_service_room_id': ref('pms_board_service_room_double_half_board'),
'board_service_id': ref('pms_board_service_half_board'),
'partner_requests': 'Cold dinner 1st night'
}),
(0, 0, {
Expand Down Expand Up @@ -858,7 +858,7 @@
'checkin': (DateTime.today() + timedelta(days=25)),
'checkout': (DateTime.today() + timedelta(days=32)),
'adults': 1,
'board_service_room_id': ref('pms_board_service_room_eco_full_board'),
'board_service_id': ref('pms_board_service_full_board'),
'partner_requests': 'Vegan food.'
})]"
/>
Expand Down Expand Up @@ -887,7 +887,7 @@
'checkin': (DateTime.today() + timedelta(days=25)),
'checkout': (DateTime.today() + timedelta(days=32)),
'adults': 1,
'board_service_room_id': ref('pms_board_service_room_single_half_board'),
'board_service_id': ref('pms_board_service_half_board'),
})]"
/>
</record>
Expand All @@ -914,7 +914,7 @@
'checkin': (DateTime.today() + timedelta(days=25)),
'checkout': (DateTime.today() + timedelta(days=32)),
'adults': 1,
'board_service_room_id': ref('pms_board_service_room_single_full_board'),
'board_service_id': ref('pms_board_service_full_board'),
'partner_requests': 'picnic for 1st lunch'
})]"
/>
Expand Down Expand Up @@ -943,15 +943,15 @@
'checkin': (DateTime.today() + timedelta(days=25)),
'checkout': (DateTime.today() + timedelta(days=31)),
'adults': 2,
'board_service_room_id': ref('pms_board_service_room_double_half_board'),
'board_service_id': ref('pms_board_service_half_board'),
}),
(0, 0, {
'pricelist_id': ref('product.list0'),
'room_type_id': ref('pms_room_type_double'),
'checkin': (DateTime.today() + timedelta(days=25)),
'checkout': (DateTime.today() + timedelta(days=32)),
'adults': 2,
'board_service_room_id': ref('pms_board_service_room_double_half_board'),
'board_service_id': ref('pms_board_service_half_board'),
})]"
/>
</record>
Expand All @@ -975,7 +975,7 @@
'checkout': (DateTime.today() + timedelta(days=27)),
'adults': 1,
'children': 2,
'board_service_room_id': ref('pms_board_service_room_triple_full_board'),
'board_service_id': ref('pms_board_service_full_board'),
'partner_requests': 'Seafood meals are needed for at least one day'
})]"
/>
Expand Down Expand Up @@ -1022,7 +1022,7 @@
'children': 2,
'arrival_hour': '09:00',
'departure_hour': '11:00',
'board_service_room_id': ref('pms_board_service_room_triple_full_board'),
'board_service_id': ref('pms_board_service_full_board'),
'partner_requests': '1 extra towel needed.'
})]"
/>
Expand Down
Loading