Merge PR #132 into 14.0

Signed-off-by DarioLodeiros
This commit is contained in:
OCA-git-bot
2022-09-18 13:29:17 +00:00
38 changed files with 3171 additions and 485 deletions

View File

@@ -4,7 +4,7 @@
{ {
"name": "PMS (Property Management System)", "name": "PMS (Property Management System)",
"summary": "A property management system", "summary": "A property management system",
"version": "14.0.2.35.1", "version": "14.0.2.36.1",
"development_status": "Beta", "development_status": "Beta",
"category": "Generic Modules/Property Management System", "category": "Generic Modules/Property Management System",
"website": "https://github.com/OCA/pms", "website": "https://github.com/OCA/pms",

View File

@@ -22,13 +22,17 @@
})]" })]"
/> />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_door" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_door" />
</record> </record>
<record id="pms_folio_sngx3" model="pms.folio"> <record id="pms_folio_sngx3" model="pms.folio">
<field name="partner_id" ref="base.res_partner_address_10" /> <field name="partner_id" ref="base.res_partner_address_10" />
<field name="user_id" ref="base.user_admin" /> <field name="user_id" ref="base.user_admin" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="agency_id" ref="pms.agency_booking" /> <field name="agency_id" ref="pms.agency_booking" />
<field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
<field <field
name="reservation_ids" name="reservation_ids"
eval="[(5, 0), eval="[(5, 0),
@@ -65,7 +69,7 @@
<field name="partner_id" ref="base.res_partner_12" /> <field name="partner_id" ref="base.res_partner_12" />
<field name="user_id" ref="base.user_admin" /> <field name="user_id" ref="base.user_admin" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_door" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_door" />
<field <field
name="reservation_ids" name="reservation_ids"
eval="[(5, 0), (0, 0, { eval="[(5, 0), (0, 0, {
@@ -83,6 +87,10 @@
<field name="user_id" ref="base.user_demo" /> <field name="user_id" ref="base.user_demo" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="agency_id" ref="pms.agency_airbnb" /> <field name="agency_id" ref="pms.agency_airbnb" />
<field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
<field <field
name="reservation_ids" name="reservation_ids"
eval="[(5, 0), (0, 0, { eval="[(5, 0), (0, 0, {
@@ -104,6 +112,10 @@
<field name="user_id" ref="base.user_demo" /> <field name="user_id" ref="base.user_demo" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="agency_id" ref="pms.agency_airbnb" /> <field name="agency_id" ref="pms.agency_airbnb" />
<field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
<field <field
name="reservation_ids" name="reservation_ids"
eval="[(5, 0), (0, 0, { eval="[(5, 0), (0, 0, {
@@ -125,6 +137,10 @@
<field name="user_id" ref="base.user_demo" /> <field name="user_id" ref="base.user_demo" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="agency_id" ref="agency_booking" /> <field name="agency_id" ref="agency_booking" />
<field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
<field name="internal_comment">Each guest pays his bill</field> <field name="internal_comment">Each guest pays his bill</field>
<field <field
name="reservation_ids" name="reservation_ids"
@@ -135,7 +151,8 @@
'checkin': (DateTime.today() + timedelta(days=14)), 'checkin': (DateTime.today() + timedelta(days=14)),
'checkout': (DateTime.today() + timedelta(days=21)), 'checkout': (DateTime.today() + timedelta(days=21)),
'adults': 4, 'adults': 4,
'partner_requests': '1 extra towel needed.' 'partner_requests': '1 extra towel needed.',
'sale_channel_origin_id': ref('pms.main_pms_sale_channel_mail')
}), }),
(0, 0, { (0, 0, {
'pricelist_id': ref('product.list0'), 'pricelist_id': ref('product.list0'),
@@ -150,7 +167,10 @@
<field name="partner_id" ref="base.res_partner_address_15" /> <field name="partner_id" ref="base.res_partner_address_15" />
<field name="user_id" ref="base.user_demo" /> <field name="user_id" ref="base.user_demo" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_phone" /> <field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
<field <field
name="reservation_ids" name="reservation_ids"
eval="[(5, 0), (0, 0, { eval="[(5, 0), (0, 0, {
@@ -171,7 +191,7 @@
<field name="partner_id" ref="base.res_partner_4" /> <field name="partner_id" ref="base.res_partner_4" />
<field name="user_id" ref="base.user_admin" /> <field name="user_id" ref="base.user_admin" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_mail" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_mail" />
<field <field
name="reservation_ids" name="reservation_ids"
eval="[(5, 0), (0, 0, { eval="[(5, 0), (0, 0, {
@@ -190,6 +210,10 @@
<field name="user_id" ref="base.user_demo" /> <field name="user_id" ref="base.user_demo" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="agency_id" ref="pms.agency_airbnb" /> <field name="agency_id" ref="pms.agency_airbnb" />
<field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
<field <field
name="reservation_ids" name="reservation_ids"
eval="[(5, 0), (0, 0, { eval="[(5, 0), (0, 0, {
@@ -208,7 +232,10 @@
<field name="user_id" ref="base.user_admin" /> <field name="user_id" ref="base.user_admin" />
<field name="reservation_type">out</field> <field name="reservation_type">out</field>
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_phone" /> <field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
<field <field
name="reservation_ids" name="reservation_ids"
eval="[(5, 0), (0, 0, { eval="[(5, 0), (0, 0, {
@@ -228,7 +255,7 @@
<field name="partner_id" ref="base.res_partner_12" /> <field name="partner_id" ref="base.res_partner_12" />
<field name="user_id" ref="base.user_demo" /> <field name="user_id" ref="base.user_demo" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_door" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_door" />
<field <field
name="reservation_ids" name="reservation_ids"
eval="[(5, 0), (0, 0, { eval="[(5, 0), (0, 0, {
@@ -248,6 +275,10 @@
<field name="user_id" ref="base.user_demo" /> <field name="user_id" ref="base.user_demo" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="agency_id" ref="pms.agency_booking" /> <field name="agency_id" ref="pms.agency_booking" />
<field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
<field <field
name="internal_comment" name="internal_comment"
>Do not allow guests to pay anything. The company pays for everything.</field> >Do not allow guests to pay anything. The company pays for everything.</field>
@@ -269,6 +300,7 @@
'checkout': (DateTime.today() + timedelta(days=18)), 'checkout': (DateTime.today() + timedelta(days=18)),
'adults': 1, 'adults': 1,
'state': 'confirm', 'state': 'confirm',
'sale_channel_origin_id': ref('pms.main_pms_sale_channel_door')
}), }),
(0, 0, { (0, 0, {
'pricelist_id': ref('product.list0'), 'pricelist_id': ref('product.list0'),
@@ -285,6 +317,7 @@
'checkout': (DateTime.today() + timedelta(days=18)), 'checkout': (DateTime.today() + timedelta(days=18)),
'adults': 1, 'adults': 1,
'state': 'confirm', 'state': 'confirm',
'sale_channel_origin_id': ref('pms.main_pms_sale_channel_mail')
}), }),
(0, 0, { (0, 0, {
'pricelist_id': ref('product.list0'), 'pricelist_id': ref('product.list0'),
@@ -309,6 +342,7 @@
'checkout': (DateTime.today() + timedelta(days=18)), 'checkout': (DateTime.today() + timedelta(days=18)),
'adults': 3, 'adults': 3,
'state': 'confirm', 'state': 'confirm',
'sale_channel_origin_id': ref('pms.main_pms_sale_channel_mail')
}), }),
(0, 0, { (0, 0, {
'pricelist_id': ref('product.list0'), 'pricelist_id': ref('product.list0'),
@@ -325,6 +359,11 @@
<field name="user_id" ref="base.user_demo" /> <field name="user_id" ref="base.user_demo" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="agency_id" ref="pms.agency_booking" /> <field name="agency_id" ref="pms.agency_booking" />
<field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
<field <field
name="reservation_ids" name="reservation_ids"
eval="[(5, 0), (0, 0, { eval="[(5, 0), (0, 0, {
@@ -343,7 +382,7 @@
<field name="user_id" ref="base.user_admin" /> <field name="user_id" ref="base.user_admin" />
<field name="reservation_type">out</field> <field name="reservation_type">out</field>
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_door" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_door" />
<field <field
name="reservation_ids" name="reservation_ids"
eval="[(5, 0), (0, 0, { eval="[(5, 0), (0, 0, {
@@ -363,7 +402,10 @@
<field name="partner_id" ref="base.res_partner_address_10" /> <field name="partner_id" ref="base.res_partner_address_10" />
<field name="user_id" ref="base.user_demo" /> <field name="user_id" ref="base.user_demo" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_phone" /> <field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
<field name="internal_comment">Each guest pays his bill</field> <field name="internal_comment">Each guest pays his bill</field>
<field <field
name="reservation_ids" name="reservation_ids"
@@ -383,6 +425,7 @@
'checkout': (DateTime.today() + timedelta(days=20)), 'checkout': (DateTime.today() + timedelta(days=20)),
'adults': 1, 'adults': 1,
'state': 'confirm', 'state': 'confirm',
'sale_channel_origin_id': ref('pms.main_pms_sale_channel_door'),
}), }),
(0, 0, { (0, 0, {
'pricelist_id': ref('product.list0'), 'pricelist_id': ref('product.list0'),
@@ -399,7 +442,10 @@
<field name="partner_id" ref="base.res_partner_address_33" /> <field name="partner_id" ref="base.res_partner_address_33" />
<field name="user_id" ref="base.user_admin" /> <field name="user_id" ref="base.user_admin" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_phone" /> <field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
<field name="internal_comment">Each guest pays his bill</field> <field name="internal_comment">Each guest pays his bill</field>
<field <field
name="reservation_ids" name="reservation_ids"
@@ -419,6 +465,7 @@
'checkout': (DateTime.today() + timedelta(days=21)), 'checkout': (DateTime.today() + timedelta(days=21)),
'adults': 2, 'adults': 2,
'state': 'cancel', 'state': 'cancel',
'sale_channel_origin_id': ref('pms.main_pms_sale_channel_door'),
})]" })]"
/> />
@@ -427,7 +474,7 @@
<field name="partner_id" ref="base.res_partner_main2" /> <field name="partner_id" ref="base.res_partner_main2" />
<field name="user_id" ref="base.user_demo" /> <field name="user_id" ref="base.user_demo" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_door" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_door" />
<field <field
name="reservation_ids" name="reservation_ids"
eval="[(5, 0), (0, 0, { eval="[(5, 0), (0, 0, {
@@ -446,7 +493,7 @@
<field name="user_id" ref="base.user_admin" /> <field name="user_id" ref="base.user_admin" />
<field name="reservation_type">normal</field> <field name="reservation_type">normal</field>
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_mail" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_mail" />
<field <field
name="reservation_ids" name="reservation_ids"
eval="[(5, 0), (0, 0, { eval="[(5, 0), (0, 0, {
@@ -464,7 +511,7 @@
<field name="user_id" ref="base.user_demo" /> <field name="user_id" ref="base.user_demo" />
<field name="reservation_type">normal</field> <field name="reservation_type">normal</field>
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_mail" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_mail" />
<field <field
name="reservation_ids" name="reservation_ids"
eval="[(5, 0), (0, 0, { eval="[(5, 0), (0, 0, {
@@ -488,6 +535,10 @@
<field name="reservation_type">normal</field> <field name="reservation_type">normal</field>
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="agency_id" ref="pms.agency_airbnb" /> <field name="agency_id" ref="pms.agency_airbnb" />
<field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
<field name="state">cancel</field> <field name="state">cancel</field>
<field <field
name="reservation_ids" name="reservation_ids"
@@ -502,30 +553,35 @@
})]" })]"
/> />
</record> </record>
<record id="pms_folio_cnf_04" model="pms.folio"> <!-- <record id="pms_folio_cnf_04" model="pms.folio">-->
<field name="partner_id" ref="base.res_partner_18" /> <!-- <field name="partner_id" ref="base.res_partner_18" />-->
<field name="user_id" ref="base.user_demo" /> <!-- <field name="user_id" ref="base.user_demo" />-->
<field name="reservation_type">normal</field> <!-- <field name="reservation_type">normal</field>-->
<field name="pms_property_id" ref="pms.main_pms_property" /> <!-- <field name="pms_property_id" ref="pms.main_pms_property" />-->
<field name="agency_id" ref="pms.agency_booking" /> <!-- <field name="agency_id" ref="pms.agency_booking" />-->
<field <!-- <field-->
name="reservation_ids" <!-- name="sale_channel_origin_id"-->
eval="[(5, 0), (0, 0, { <!-- ref="pms.main_pms_sale_channel_phone"-->
'pricelist_id': ref('product.list0'), <!-- />-->
'room_type_id': ref ('pms_room_type_conference_room'), <!-- <field-->
'checkin': (DateTime.today() + timedelta(days=22)), <!-- name="reservation_ids"-->
'checkout': (DateTime.today() + timedelta(days=23)), <!-- eval="[(5, 0), (0, 0, {-->
'adults': 1, <!-- 'pricelist_id': ref('product.list0'),-->
'state': 'cancel', <!-- 'room_type_id': ref ('pms_room_type_conference_room'),-->
'partner_requests': 'Sound system.' <!-- 'checkin': (DateTime.today() + timedelta(days=22)),-->
})]" <!-- 'checkout': (DateTime.today() + timedelta(days=23)),-->
/> <!-- 'adults': 1,-->
</record> <!-- 'state': 'cancel',-->
<!-- 'partner_requests': 'Sound system.'-->
<!-- })]"-->
<!-- />-->
<!-- </record>-->
<record id="pms_folio_eco_sngx3" model="pms.folio"> <record id="pms_folio_eco_sngx3" model="pms.folio">
<field name="partner_id" ref="base.res_partner_18" /> <field name="partner_id" ref="base.res_partner_18" />
<field name="user_id" ref="base.user_demo" /> <field name="user_id" ref="base.user_demo" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="agency_id" ref="pms.agency_booking" /> <field name="agency_id" ref="pms.agency_booking" />
<field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_door" />
<field name="internal_comment">Each guest pays his bill</field> <field name="internal_comment">Each guest pays his bill</field>
<field <field
name="reservation_ids" name="reservation_ids"
@@ -555,6 +611,7 @@
'adults': 1, 'adults': 1,
'state': 'confirm', 'state': 'confirm',
'board_service_room_id': ref('pms_board_service_room_single_breakfast'), 'board_service_room_id': ref('pms_board_service_room_single_breakfast'),
'sale_channel_origin_id': ref('pms.main_pms_sale_channel_phone')
}), }),
(0, 0, { (0, 0, {
'pricelist_id': ref('product.list0'), 'pricelist_id': ref('product.list0'),
@@ -564,6 +621,7 @@
'adults': 1, 'adults': 1,
'state': 'confirm', 'state': 'confirm',
'board_service_room_id': ref('pms_board_service_room_single_full_board'), 'board_service_room_id': ref('pms_board_service_room_single_full_board'),
'sale_channel_origin_id': ref('pms.main_pms_sale_channel_phone')
})]" })]"
/> />
</record> </record>
@@ -571,7 +629,7 @@
<field name="partner_id" ref="base.res_partner_address_30" /> <field name="partner_id" ref="base.res_partner_address_30" />
<field name="user_id" ref="base.user_demo" /> <field name="user_id" ref="base.user_demo" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_phone" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_door" />
<field name="internal_comment">Each guest pays his bill</field> <field name="internal_comment">Each guest pays his bill</field>
<field <field
name="reservation_ids" name="reservation_ids"
@@ -604,6 +662,7 @@
'children': 1, 'children': 1,
'state': 'confirm', 'state': 'confirm',
'board_service_room_id': ref('pms_board_service_room_triple_full_board'), 'board_service_room_id': ref('pms_board_service_room_triple_full_board'),
'sale_channel_origin_id': ref('main_pms_sale_channel_mail')
})]" })]"
/> />
</record> </record>
@@ -611,7 +670,7 @@
<field name="partner_id" ref="base.res_partner_address_25" /> <field name="partner_id" ref="base.res_partner_address_25" />
<field name="user_id" ref="base.user_admin" /> <field name="user_id" ref="base.user_admin" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_mail" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_mail" />
<field name="internal_comment">Each guest pays his bill</field> <field name="internal_comment">Each guest pays his bill</field>
<field <field
name="reservation_ids" name="reservation_ids"
@@ -645,6 +704,10 @@
<field name="user_id" ref="base.user_admin" /> <field name="user_id" ref="base.user_admin" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="agency_id" ref="pms.agency_booking" /> <field name="agency_id" ref="pms.agency_booking" />
<field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
<field name="internal_comment">Each guest pays his bill</field> <field name="internal_comment">Each guest pays his bill</field>
<field <field
name="reservation_ids" name="reservation_ids"
@@ -677,7 +740,10 @@
<field name="partner_id" ref="base.res_partner_10" /> <field name="partner_id" ref="base.res_partner_10" />
<field name="user_id" ref="base.user_demo" /> <field name="user_id" ref="base.user_demo" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_phone" /> <field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
<field <field
name="reservation_ids" name="reservation_ids"
eval="[(5, 0), eval="[(5, 0),
@@ -697,7 +763,7 @@
<field name="partner_id" ref="base.res_partner_4" /> <field name="partner_id" ref="base.res_partner_4" />
<field name="user_id" ref="base.user_demo" /> <field name="user_id" ref="base.user_demo" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_mail" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_mail" />
<field <field
name="reservation_ids" name="reservation_ids"
eval="[(5, 0), eval="[(5, 0),
@@ -717,7 +783,10 @@
<field name="partner_id" ref="base.res_partner_address_27" /> <field name="partner_id" ref="base.res_partner_address_27" />
<field name="user_id" ref="base.user_demo" /> <field name="user_id" ref="base.user_demo" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_phone" /> <field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
<field <field
name="reservation_ids" name="reservation_ids"
eval="[(5, 0), eval="[(5, 0),
@@ -737,7 +806,10 @@
<field name="partner_id" ref="base.res_partner_12" /> <field name="partner_id" ref="base.res_partner_12" />
<field name="user_id" ref="base.user_demo" /> <field name="user_id" ref="base.user_demo" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_phone" /> <field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
<field <field
name="reservation_ids" name="reservation_ids"
eval="[(5, 0), eval="[(5, 0),
@@ -758,6 +830,10 @@
<field name="user_id" ref="base.user_demo" /> <field name="user_id" ref="base.user_demo" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="agency_id" ref="pms.agency_airbnb" /> <field name="agency_id" ref="pms.agency_airbnb" />
<field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
<field <field
name="reservation_ids" name="reservation_ids"
eval="[(5, 0), eval="[(5, 0),
@@ -785,7 +861,7 @@
<field name="partner_id" ref="base.res_partner_address_17" /> <field name="partner_id" ref="base.res_partner_address_17" />
<field name="user_id" ref="base.user_demo" /> <field name="user_id" ref="base.user_demo" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_door" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_door" />
<field <field
name="reservation_ids" name="reservation_ids"
eval="[(5, 0), (0, 0, { eval="[(5, 0), (0, 0, {
@@ -804,7 +880,10 @@
<field name="partner_id" ref="base.res_partner_3" /> <field name="partner_id" ref="base.res_partner_3" />
<field name="user_id" ref="base.user_admin" /> <field name="user_id" ref="base.user_admin" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_phone" /> <field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
<field <field
name="reservation_ids" name="reservation_ids"
eval="[(5, 0), (0, 0, { eval="[(5, 0), (0, 0, {
@@ -822,7 +901,7 @@
<field name="partner_id" ref="base.res_partner_address_25" /> <field name="partner_id" ref="base.res_partner_address_25" />
<field name="user_id" ref="base.user_demo" /> <field name="user_id" ref="base.user_demo" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_mail" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_mail" />
<field <field
name="reservation_ids" name="reservation_ids"
eval="[(5, 0), (0, 0, { eval="[(5, 0), (0, 0, {
@@ -844,6 +923,10 @@
<field name="user_id" ref="base.user_demo" /> <field name="user_id" ref="base.user_demo" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="agency_id" ref="pms.agency_airbnb" /> <field name="agency_id" ref="pms.agency_airbnb" />
<field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
<field <field
name="reservation_ids" name="reservation_ids"
eval="[(5, 0), (0, 0, { eval="[(5, 0), (0, 0, {

View File

@@ -15,6 +15,7 @@
name="out_service_description" name="out_service_description"
>Extra privacy for school field trip.</field> >Extra privacy for school field trip.</field>
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_mail" />
</record> </record>
<record id="pms_reservation_double_out_01" model="pms.reservation"> <record id="pms_reservation_double_out_01" model="pms.reservation">
<field name="partner_id" ref="main_pms_property" /> <field name="partner_id" ref="main_pms_property" />
@@ -26,6 +27,7 @@
<field name="closure_reason_id" ref="pms_room_closure_reason_maintenance" /> <field name="closure_reason_id" ref="pms_room_closure_reason_maintenance" />
<field name="out_service_description">Carpet replacement.</field> <field name="out_service_description">Carpet replacement.</field>
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_mail" />
</record> </record>
<record id="pms_reservation_double_out_02" model="pms.reservation"> <record id="pms_reservation_double_out_02" model="pms.reservation">
<field name="partner_id" ref="main_pms_property" /> <field name="partner_id" ref="main_pms_property" />
@@ -37,6 +39,7 @@
<field name="closure_reason_id" ref="pms_room_closure_reason_maintenance" /> <field name="closure_reason_id" ref="pms_room_closure_reason_maintenance" />
<field name="out_service_description">Carpet replacement.</field> <field name="out_service_description">Carpet replacement.</field>
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_mail" />
</record> </record>
<!-- out of service--> <!-- out of service-->
<record id="pms_reservation_eco_out_02" model="pms.reservation"> <record id="pms_reservation_eco_out_02" model="pms.reservation">
@@ -49,6 +52,7 @@
<field name="closure_reason_id" ref="pms_room_closure_reason_maintenance" /> <field name="closure_reason_id" ref="pms_room_closure_reason_maintenance" />
<field name="out_service_description">Wall painting.</field> <field name="out_service_description">Wall painting.</field>
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_mail" />
</record> </record>
<!-- done reservations --> <!-- done reservations -->
<!-- 2 nights eco full board service PAST --> <!-- 2 nights eco full board service PAST -->
@@ -65,7 +69,7 @@
ref="pms_board_service_room_eco_full_board" ref="pms_board_service_room_eco_full_board"
/> />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_mail" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_mail" />
<field name="state">done</field> <field name="state">done</field>
<field <field
name="partner_requests" name="partner_requests"
@@ -95,7 +99,7 @@
ref="pms_board_service_room_eco_full_board" ref="pms_board_service_room_eco_full_board"
/> />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_mail" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_mail" />
<field name="state">done</field> <field name="state">done</field>
</record> </record>
<record id="pms_checkin_partner_r_eco_02" model="pms.checkin.partner"> <record id="pms_checkin_partner_r_eco_02" model="pms.checkin.partner">
@@ -124,7 +128,7 @@
ref="pms_board_service_room_eco_full_board" ref="pms_board_service_room_eco_full_board"
/> />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_mail" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_mail" />
<field name="state">done</field> <field name="state">done</field>
<field name="partner_requests">Breakfast at 5:00 am.</field> <field name="partner_requests">Breakfast at 5:00 am.</field>
</record> </record>
@@ -158,7 +162,7 @@
ref="pms_board_service_room_eco_full_board" ref="pms_board_service_room_eco_full_board"
/> />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_mail" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_mail" />
<field name="state">done</field> <field name="state">done</field>
</record> </record>
<record id="pms_checkin_partner_r_eco_04" model="pms.checkin.partner"> <record id="pms_checkin_partner_r_eco_04" model="pms.checkin.partner">
@@ -185,7 +189,7 @@
ref="pms_board_service_room_eco_full_board" ref="pms_board_service_room_eco_full_board"
/> />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_mail" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_mail" />
<field name="state">done</field> <field name="state">done</field>
</record> </record>
<record id="pms_checkin_partner_r_eco_05" model="pms.checkin.partner"> <record id="pms_checkin_partner_r_eco_05" model="pms.checkin.partner">
@@ -212,7 +216,7 @@
ref="pms_board_service_room_eco_full_board" ref="pms_board_service_room_eco_full_board"
/> />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_mail" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_mail" />
<field name="state">done</field> <field name="state">done</field>
<field name="partner_requests">Need lunchs to take away.</field> <field name="partner_requests">Need lunchs to take away.</field>
</record> </record>
@@ -255,6 +259,10 @@
/> />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="agency_id" ref="pms.agency_booking" /> <field name="agency_id" ref="pms.agency_booking" />
<field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
</record> </record>
<!-- 5 nights eco no board service --> <!-- 5 nights eco no board service -->
<record id="pms_reservation_eco_08" model="pms.reservation"> <record id="pms_reservation_eco_08" model="pms.reservation">
@@ -265,6 +273,10 @@
<field name="checkout" eval="DateTime.today() + timedelta(5)" /> <field name="checkout" eval="DateTime.today() + timedelta(5)" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="agency_id" ref="pms.agency_booking" /> <field name="agency_id" ref="pms.agency_booking" />
<field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
<field name="partner_requests">Need 1 extra towel.</field> <field name="partner_requests">Need 1 extra towel.</field>
</record> </record>
<!-- 2 nights eco no board service --> <!-- 2 nights eco no board service -->
@@ -275,7 +287,7 @@
<field name="checkin" eval="DateTime.today()" /> <field name="checkin" eval="DateTime.today()" />
<field name="checkout" eval="DateTime.today() + timedelta(2)" /> <field name="checkout" eval="DateTime.today() + timedelta(2)" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_mail" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_mail" />
</record> </record>
<!-- 5 nights eco no board service --> <!-- 5 nights eco no board service -->
<record id="pms_reservation_eco_10" model="pms.reservation"> <record id="pms_reservation_eco_10" model="pms.reservation">
@@ -285,7 +297,10 @@
<field name="checkin" eval="DateTime.today()" /> <field name="checkin" eval="DateTime.today()" />
<field name="checkout" eval="DateTime.today() + timedelta(5)" /> <field name="checkout" eval="DateTime.today() + timedelta(5)" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_phone" /> <field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
<field name="partner_requests">Need 2 extra towel.</field> <field name="partner_requests">Need 2 extra towel.</field>
</record> </record>
<!-- 7 nights eco no board service --> <!-- 7 nights eco no board service -->
@@ -297,6 +312,10 @@
<field name="checkout" eval="DateTime.today() + timedelta(12)" /> <field name="checkout" eval="DateTime.today() + timedelta(12)" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="agency_id" ref="pms.agency_airbnb" /> <field name="agency_id" ref="pms.agency_airbnb" />
<field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
</record> </record>
<!-- 7 nights eco no board service --> <!-- 7 nights eco no board service -->
<record id="pms_reservation_eco_12" model="pms.reservation"> <record id="pms_reservation_eco_12" model="pms.reservation">
@@ -307,7 +326,7 @@
<field name="checkin" eval="DateTime.today()" /> <field name="checkin" eval="DateTime.today()" />
<field name="checkout" eval="DateTime.today() + timedelta(7)" /> <field name="checkout" eval="DateTime.today() + timedelta(7)" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_door" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_door" />
<field name="partner_requests">Need 2 extra towels.</field> <field name="partner_requests">Need 2 extra towels.</field>
<field name="partner_internal_comment">Friend of manager</field> <field name="partner_internal_comment">Friend of manager</field>
<field name="folio_internal_comment"> <field name="folio_internal_comment">
@@ -325,7 +344,7 @@
<field name="checkin" eval="DateTime.today() + timedelta(1)" /> <field name="checkin" eval="DateTime.today() + timedelta(1)" />
<field name="checkout" eval="DateTime.today() + timedelta(4)" /> <field name="checkout" eval="DateTime.today() + timedelta(4)" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_door" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_door" />
</record> </record>
<!-- 1 night eco no board service --> <!-- 1 night eco no board service -->
<record id="pms_reservation_eco_14" model="pms.reservation"> <record id="pms_reservation_eco_14" model="pms.reservation">
@@ -338,6 +357,10 @@
<field name="checkout" eval="DateTime.today() + timedelta(5)" /> <field name="checkout" eval="DateTime.today() + timedelta(5)" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="agency_id" ref="pms.agency_booking" /> <field name="agency_id" ref="pms.agency_booking" />
<field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
<field name="partner_requests">Preferably street view.</field> <field name="partner_requests">Preferably street view.</field>
</record> </record>
<!-- 2 nights eco no board service --> <!-- 2 nights eco no board service -->
@@ -350,7 +373,10 @@
<field name="checkin" eval="DateTime.today() + timedelta(5)" /> <field name="checkin" eval="DateTime.today() + timedelta(5)" />
<field name="checkout" eval="DateTime.today() + timedelta(7)" /> <field name="checkout" eval="DateTime.today() + timedelta(7)" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_phone" /> <field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
</record> </record>
<!--SINGLE RESERVATIONS (Main Property) --> <!--SINGLE RESERVATIONS (Main Property) -->
<!-- 5 nights sng full board service PAST --> <!-- 5 nights sng full board service PAST -->
@@ -367,7 +393,7 @@
ref="pms_board_service_room_single_full_board" ref="pms_board_service_room_single_full_board"
/> />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_mail" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_mail" />
<field name="state">done</field> <field name="state">done</field>
<field name="partner_requests">Late for dinner. Cold dinner needed.</field> <field name="partner_requests">Late for dinner. Cold dinner needed.</field>
</record> </record>
@@ -395,7 +421,7 @@
ref="pms_board_service_room_single_full_board" ref="pms_board_service_room_single_full_board"
/> />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_mail" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_mail" />
<field name="state">done</field> <field name="state">done</field>
</record> </record>
<record id="pms_checkin_partner_r_sng_02" model="pms.checkin.partner"> <record id="pms_checkin_partner_r_sng_02" model="pms.checkin.partner">
@@ -422,8 +448,8 @@
ref="pms_board_service_room_single_full_board" ref="pms_board_service_room_single_full_board"
/> />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_mail" />
<field name="state">done</field> <field name="state">done</field>
<field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_mail" />
</record> </record>
<record id="pms_checkin_partner_r_sng_03" model="pms.checkin.partner"> <record id="pms_checkin_partner_r_sng_03" model="pms.checkin.partner">
<field name="partner_id" ref="base.res_partner_address_32" /> <field name="partner_id" ref="base.res_partner_address_32" />
@@ -458,7 +484,7 @@
ref="pms_board_service_room_single_full_board" ref="pms_board_service_room_single_full_board"
/> />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_mail" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_mail" />
<field name="partner_requests">breakfast at 5:00 am </field> <field name="partner_requests">breakfast at 5:00 am </field>
</record> </record>
<!-- 3 nights sng breakfast board service --> <!-- 3 nights sng breakfast board service -->
@@ -484,6 +510,10 @@
/> />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="agency_id" ref="pms.agency_booking" /> <field name="agency_id" ref="pms.agency_booking" />
<field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
</record> </record>
<!-- 4 nights sng full board service --> <!-- 4 nights sng full board service -->
<record id="pms_reservation_sng_06" model="pms.reservation"> <record id="pms_reservation_sng_06" model="pms.reservation">
@@ -499,7 +529,7 @@
ref="pms_board_service_room_single_full_board" ref="pms_board_service_room_single_full_board"
/> />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_door" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_door" />
<field name="partner_requests">Breakfast to take away. </field> <field name="partner_requests">Breakfast to take away. </field>
</record> </record>
<!-- 1 night sng half board service --> <!-- 1 night sng half board service -->
@@ -517,6 +547,10 @@
/> />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="agency_id" ref="pms.agency_airbnb" /> <field name="agency_id" ref="pms.agency_airbnb" />
<field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
</record> </record>
<!-- 4 nights sng no board service --> <!-- 4 nights sng no board service -->
<record id="pms_reservation_sng_08" model="pms.reservation"> <record id="pms_reservation_sng_08" model="pms.reservation">
@@ -529,6 +563,10 @@
<field name="checkout" eval="DateTime.today() + timedelta(10)" /> <field name="checkout" eval="DateTime.today() + timedelta(10)" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="agency_id" ref="pms.agency_airbnb" /> <field name="agency_id" ref="pms.agency_airbnb" />
<field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
<field name="partner_requests">preferably street view</field> <field name="partner_requests">preferably street view</field>
</record> </record>
<!-- 4 nights sng no board service --> <!-- 4 nights sng no board service -->
@@ -541,7 +579,10 @@
<field name="checkin" eval="DateTime.today() + timedelta(9)" /> <field name="checkin" eval="DateTime.today() + timedelta(9)" />
<field name="checkout" eval="DateTime.today() + timedelta(13)" /> <field name="checkout" eval="DateTime.today() + timedelta(13)" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_phone" /> <field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
</record> </record>
<!-- 1 night sng no board service --> <!-- 1 night sng no board service -->
<record id="pms_reservation_sng_10" model="pms.reservation"> <record id="pms_reservation_sng_10" model="pms.reservation">
@@ -555,6 +596,10 @@
<field name="checkout" eval="DateTime.today() + timedelta(14)" /> <field name="checkout" eval="DateTime.today() + timedelta(14)" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="agency_id" ref="pms.agency_airbnb" /> <field name="agency_id" ref="pms.agency_airbnb" />
<field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
<field name="partner_requests">Preferably street view.</field> <field name="partner_requests">Preferably street view.</field>
</record> </record>
<!--DOUBLE RESERVATIONS (Main Property) --> <!--DOUBLE RESERVATIONS (Main Property) -->
@@ -567,7 +612,10 @@
<field name="checkin" eval="DateTime.today() + timedelta(-10)" /> <field name="checkin" eval="DateTime.today() + timedelta(-10)" />
<field name="checkout" eval="DateTime.today() + timedelta(-7)" /> <field name="checkout" eval="DateTime.today() + timedelta(-7)" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_phone" /> <field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
</record> </record>
<function model="pms.reservation" name="action_cancel"> <function model="pms.reservation" name="action_cancel">
<value eval="[ref('pms_reservation_dbl_cancel_01')]" /> <value eval="[ref('pms_reservation_dbl_cancel_01')]" />
@@ -581,7 +629,7 @@
<field name="checkin" eval="DateTime.today() + timedelta(-10)" /> <field name="checkin" eval="DateTime.today() + timedelta(-10)" />
<field name="checkout" eval="DateTime.today() + timedelta(-7)" /> <field name="checkout" eval="DateTime.today() + timedelta(-7)" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_door" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_door" />
<field <field
name="checkin_partner_ids" name="checkin_partner_ids"
eval="[(5, 0), eval="[(5, 0),
@@ -607,7 +655,7 @@
<field name="checkin" eval="DateTime.today() + timedelta(-3)" /> <field name="checkin" eval="DateTime.today() + timedelta(-3)" />
<field name="checkout" eval="DateTime.today()" /> <field name="checkout" eval="DateTime.today()" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_door" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_door" />
<field name="partner_requests">1 bottle of champagne upon check-in</field> <field name="partner_requests">1 bottle of champagne upon check-in</field>
</record> </record>
<!-- 3 nights dbl no board service PAST --> <!-- 3 nights dbl no board service PAST -->
@@ -620,7 +668,7 @@
<field name="checkin" eval="DateTime.today() + timedelta(-1)" /> <field name="checkin" eval="DateTime.today() + timedelta(-1)" />
<field name="checkout" eval="DateTime.today() + timedelta(2)" /> <field name="checkout" eval="DateTime.today() + timedelta(2)" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_door" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_door" />
</record> </record>
<!-- 4 nights dbl half board service --> <!-- 4 nights dbl half board service -->
<record id="pms_reservation_dbl_03" model="pms.reservation"> <record id="pms_reservation_dbl_03" model="pms.reservation">
@@ -637,6 +685,10 @@
/> />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="agency_id" ref="pms.agency_booking" /> <field name="agency_id" ref="pms.agency_booking" />
<field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
<field name="partner_requests">3 extra towels</field> <field name="partner_requests">3 extra towels</field>
</record> </record>
<!-- 2 nights dbl no board service --> <!-- 2 nights dbl no board service -->
@@ -649,7 +701,10 @@
<field name="checkin" eval="DateTime.today() + timedelta(4)" /> <field name="checkin" eval="DateTime.today() + timedelta(4)" />
<field name="checkout" eval="DateTime.today() + timedelta(6)" /> <field name="checkout" eval="DateTime.today() + timedelta(6)" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_phone" /> <field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
</record> </record>
<!-- 2 nights dbl breakfast board service --> <!-- 2 nights dbl breakfast board service -->
<record id="pms_reservation_dbl_05" model="pms.reservation"> <record id="pms_reservation_dbl_05" model="pms.reservation">
@@ -666,6 +721,10 @@
/> />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="agency_id" ref="pms.agency_booking" /> <field name="agency_id" ref="pms.agency_booking" />
<field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
<field name="partner_requests">Vegan breakfast</field> <field name="partner_requests">Vegan breakfast</field>
</record> </record>
<!-- 2 nights dbl no board service --> <!-- 2 nights dbl no board service -->
@@ -686,6 +745,10 @@
<field name="checkout" eval="DateTime.today() + timedelta(8)" /> <field name="checkout" eval="DateTime.today() + timedelta(8)" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="agency_id" ref="pms.agency_booking" /> <field name="agency_id" ref="pms.agency_booking" />
<field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
</record> </record>
<!-- 2 nights dbl no board service --> <!-- 2 nights dbl no board service -->
<record id="pms_reservation_dbl_07" model="pms.reservation"> <record id="pms_reservation_dbl_07" model="pms.reservation">
@@ -701,7 +764,7 @@
ref="pms_board_service_room_double_half_board" ref="pms_board_service_room_double_half_board"
/> />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_mail" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_mail" />
<field name="partner_requests">Help needed with the luggage.</field> <field name="partner_requests">Help needed with the luggage.</field>
</record> </record>
<!-- 1 night dbl breakfast board service --> <!-- 1 night dbl breakfast board service -->
@@ -719,7 +782,7 @@
ref="pms_board_service_room_double_breakfast" ref="pms_board_service_room_double_breakfast"
/> />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_mail" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_mail" />
</record> </record>
<!-- 1 night dbl no board service --> <!-- 1 night dbl no board service -->
<record id="pms_reservation_dbl_09" model="pms.reservation"> <record id="pms_reservation_dbl_09" model="pms.reservation">
@@ -732,7 +795,10 @@
<field name="checkin" eval="DateTime.today() + timedelta(10)" /> <field name="checkin" eval="DateTime.today() + timedelta(10)" />
<field name="checkout" eval="DateTime.today() + timedelta(11)" /> <field name="checkout" eval="DateTime.today() + timedelta(11)" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_phone" /> <field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
<field name="partner_requests">Need 1 extra set of bedclothes</field> <field name="partner_requests">Need 1 extra set of bedclothes</field>
</record> </record>
<!-- 2 nights dbl breakfast board service --> <!-- 2 nights dbl breakfast board service -->
@@ -744,6 +810,10 @@
<field name="adults">2</field> <field name="adults">2</field>
<field name="checkin" eval="DateTime.today() + timedelta(11)" /> <field name="checkin" eval="DateTime.today() + timedelta(11)" />
<field name="checkout" eval="DateTime.today() + timedelta(13)" /> <field name="checkout" eval="DateTime.today() + timedelta(13)" />
<field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
<field <field
name="board_service_room_id" name="board_service_room_id"
ref="pms_board_service_room_double_breakfast" ref="pms_board_service_room_double_breakfast"
@@ -767,7 +837,7 @@
<field name="checkin" eval="DateTime.today() + timedelta(11)" /> <field name="checkin" eval="DateTime.today() + timedelta(11)" />
<field name="checkout" eval="DateTime.today() + timedelta(13)" /> <field name="checkout" eval="DateTime.today() + timedelta(13)" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_door" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_door" />
<field name="partner_requests">welcome cocktail</field> <field name="partner_requests">welcome cocktail</field>
</record> </record>
<!-- TRIPLE RESERVATIONS (Main Property) --> <!-- TRIPLE RESERVATIONS (Main Property) -->
@@ -785,7 +855,7 @@
ref="pms_board_service_room_triple_full_board" ref="pms_board_service_room_triple_full_board"
/> />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_mail" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_mail" />
<field name="state">done</field> <field name="state">done</field>
</record> </record>
<record id="pms_checkin_partner_r_trp_01" model="pms.checkin.partner"> <record id="pms_checkin_partner_r_trp_01" model="pms.checkin.partner">
@@ -828,6 +898,10 @@
/> />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="agency_id" ref="pms.agency_booking" /> <field name="agency_id" ref="pms.agency_booking" />
<field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
<field name="partner_requests">Vegetarian food for all guests.</field> <field name="partner_requests">Vegetarian food for all guests.</field>
</record> </record>
<!-- 7 nights trp no board service --> <!-- 7 nights trp no board service -->
@@ -839,6 +913,10 @@
<field name="checkout" eval="DateTime.today() + timedelta(8)" /> <field name="checkout" eval="DateTime.today() + timedelta(8)" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="agency_id" ref="pms.agency_airbnb" /> <field name="agency_id" ref="pms.agency_airbnb" />
<field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
</record> </record>
<!-- 2 nights trp no board service --> <!-- 2 nights trp no board service -->
<record id="pms_reservation_trp_04" model="pms.reservation"> <record id="pms_reservation_trp_04" model="pms.reservation">
@@ -858,7 +936,7 @@
<field name="checkin" eval="DateTime.today() + timedelta(4)" /> <field name="checkin" eval="DateTime.today() + timedelta(4)" />
<field name="checkout" eval="DateTime.today() + timedelta(6)" /> <field name="checkout" eval="DateTime.today() + timedelta(6)" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_mail" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_mail" />
<field name="partner_requests">3 set of keys needed.</field> <field name="partner_requests">3 set of keys needed.</field>
</record> </record>
<!-- 2 nights trp no board service --> <!-- 2 nights trp no board service -->
@@ -879,7 +957,10 @@
<field name="checkin" eval="DateTime.today() + timedelta(6)" /> <field name="checkin" eval="DateTime.today() + timedelta(6)" />
<field name="checkout" eval="DateTime.today() + timedelta(8)" /> <field name="checkout" eval="DateTime.today() + timedelta(8)" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_phone" /> <field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
</record> </record>
<!-- 1 night trp breakfast board service --> <!-- 1 night trp breakfast board service -->
<record id="pms_reservation_trp_06" model="pms.reservation"> <record id="pms_reservation_trp_06" model="pms.reservation">
@@ -902,7 +983,7 @@
ref="pms_board_service_room_triple_breakfast" ref="pms_board_service_room_triple_breakfast"
/> />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_door" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_door" />
<field name="partner_requests">Celiac breakfast</field> <field name="partner_requests">Celiac breakfast</field>
</record> </record>
<!-- 2 nights trp full board service --> <!-- 2 nights trp full board service -->
@@ -919,7 +1000,7 @@
ref="pms_board_service_room_triple_full_board" ref="pms_board_service_room_triple_full_board"
/> />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_mail" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_mail" />
</record> </record>
<!-- 2 nights trp no board service --> <!-- 2 nights trp no board service -->
<record id="pms_reservation_trp_08" model="pms.reservation"> <record id="pms_reservation_trp_08" model="pms.reservation">
@@ -930,6 +1011,10 @@
<field name="checkout" eval="DateTime.today() + timedelta(14)" /> <field name="checkout" eval="DateTime.today() + timedelta(14)" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="agency_id" ref="pms.agency_airbnb" /> <field name="agency_id" ref="pms.agency_airbnb" />
<field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
<field name="partner_requests">room with low noise 24x7</field> <field name="partner_requests">room with low noise 24x7</field>
</record> </record>
<!-- QUADRUPLE RESERVATIONS (Main Property)--> <!-- QUADRUPLE RESERVATIONS (Main Property)-->
@@ -941,7 +1026,7 @@
<field name="checkin" eval="DateTime.today() + timedelta(-10)" /> <field name="checkin" eval="DateTime.today() + timedelta(-10)" />
<field name="checkout" eval="DateTime.today() + timedelta(-7)" /> <field name="checkout" eval="DateTime.today() + timedelta(-7)" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_mail" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_mail" />
<field name="state">done</field> <field name="state">done</field>
</record> </record>
<record id="pms_checkin_partner_r_qdp_01" model="pms.checkin.partner"> <record id="pms_checkin_partner_r_qdp_01" model="pms.checkin.partner">
@@ -963,6 +1048,10 @@
<field name="checkout" eval="DateTime.today() + timedelta(-5)" /> <field name="checkout" eval="DateTime.today() + timedelta(-5)" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="agency_id" ref="pms.agency_booking" /> <field name="agency_id" ref="pms.agency_booking" />
<field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
<field name="state">done</field> <field name="state">done</field>
<field <field
name="partner_requests" name="partner_requests"
@@ -986,7 +1075,10 @@
<field name="checkin" eval="DateTime.today() + timedelta(-4)" /> <field name="checkin" eval="DateTime.today() + timedelta(-4)" />
<field name="checkout" eval="DateTime.today() + timedelta(-2)" /> <field name="checkout" eval="DateTime.today() + timedelta(-2)" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_phone" /> <field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
<field name="state">done</field> <field name="state">done</field>
</record> </record>
<record id="pms_checkin_partner_r_qdp_03" model="pms.checkin.partner"> <record id="pms_checkin_partner_r_qdp_03" model="pms.checkin.partner">
@@ -1008,6 +1100,10 @@
<field name="checkout" eval="DateTime.today() + timedelta(-1)" /> <field name="checkout" eval="DateTime.today() + timedelta(-1)" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="agency_id" ref="pms.agency_booking" /> <field name="agency_id" ref="pms.agency_booking" />
<field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
<field name="partner_requests">Allergic to chemicals</field> <field name="partner_requests">Allergic to chemicals</field>
<field name="state">done</field> <field name="state">done</field>
</record> </record>
@@ -1030,6 +1126,10 @@
<field name="checkout" eval="DateTime.today() + timedelta(2)" /> <field name="checkout" eval="DateTime.today() + timedelta(2)" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="agency_id" ref="pms.agency_booking" /> <field name="agency_id" ref="pms.agency_booking" />
<field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
</record> </record>
<!-- 3 nights qdp no board service --> <!-- 3 nights qdp no board service -->
<record id="pms_reservation_qdp_06" model="pms.reservation"> <record id="pms_reservation_qdp_06" model="pms.reservation">
@@ -1039,8 +1139,25 @@
<field name="checkin" eval="DateTime.today()" /> <field name="checkin" eval="DateTime.today()" />
<field name="checkout" eval="DateTime.today() + timedelta(3)" /> <field name="checkout" eval="DateTime.today() + timedelta(3)" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_door" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_door" />
<field name="partner_requests">Hard mattress needed.</field> <field name="partner_requests">Hard mattress needed.</field>
<field
name="reservation_line_ids"
eval="[(5, 0),
(0, 0, {
'date': (DateTime.today()),
'sale_channel_id': ref('pms.main_pms_sale_channel_door')
}),
(0, 0, {
'date': (DateTime.today() + timedelta(days=1)),
'sale_channel_id': ref('pms.main_pms_sale_channel_phone')
}),
(0, 0, {
'date': (DateTime.today() + timedelta(days=2)),
'sale_channel_id': ref('pms.main_pms_sale_channel_phone')
})
]"
/>
</record> </record>
<!-- 3 nights qdp no board service --> <!-- 3 nights qdp no board service -->
<record id="pms_reservation_qdp_07" model="pms.reservation"> <record id="pms_reservation_qdp_07" model="pms.reservation">
@@ -1050,7 +1167,7 @@
<field name="checkin" eval="DateTime.today() + timedelta(1)" /> <field name="checkin" eval="DateTime.today() + timedelta(1)" />
<field name="checkout" eval="DateTime.today() + timedelta(4)" /> <field name="checkout" eval="DateTime.today() + timedelta(4)" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_mail" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_mail" />
</record> </record>
<!-- CONFERENCE ROOMS RESERVATIONS (Main Property) --> <!-- CONFERENCE ROOMS RESERVATIONS (Main Property) -->
<!-- 5 nights cnf no board service PAST --> <!-- 5 nights cnf no board service PAST -->
@@ -1065,7 +1182,7 @@
<field name="checkin_partner_pending_count">0</field> <field name="checkin_partner_pending_count">0</field>
<field name="folio_payment_state">paid</field> <field name="folio_payment_state">paid</field>
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_mail" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_mail" />
<field name="state">done</field> <field name="state">done</field>
<field name="partner_requests">2 bottles of water each 2 hours.</field> <field name="partner_requests">2 bottles of water each 2 hours.</field>
</record> </record>
@@ -1089,6 +1206,10 @@
<field name="checkout" eval="DateTime.today() + timedelta(4)" /> <field name="checkout" eval="DateTime.today() + timedelta(4)" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="agency_id" ref="pms.agency_airbnb" /> <field name="agency_id" ref="pms.agency_airbnb" />
<field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
</record> </record>
<!-- 2 nights cnf no board service --> <!-- 2 nights cnf no board service -->
<record id="pms_reservation_cnf_03" model="pms.reservation"> <record id="pms_reservation_cnf_03" model="pms.reservation">
@@ -1099,8 +1220,21 @@
<field name="checkin" eval="DateTime.today() + timedelta(6)" /> <field name="checkin" eval="DateTime.today() + timedelta(6)" />
<field name="checkout" eval="DateTime.today() + timedelta(8)" /> <field name="checkout" eval="DateTime.today() + timedelta(8)" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_door" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_door" />
<field name="partner_requests">Projector needed</field> <field name="partner_requests">Projector needed</field>
<field
name="reservation_line_ids"
eval="[(5, 0),
(0, 0, {
'date': (DateTime.today() + timedelta(days=6)),
'sale_channel_id': ref('pms.main_pms_sale_channel_door')
}),
(0, 0, {
'date': (DateTime.today() + timedelta(days=7)),
'sale_channel_id': ref('pms.main_pms_sale_channel_phone')
})
]"
/>
</record> </record>
<!-- 2 nights cnf no board service --> <!-- 2 nights cnf no board service -->
<record id="pms_reservation_cnf_04" model="pms.reservation"> <record id="pms_reservation_cnf_04" model="pms.reservation">
@@ -1111,7 +1245,10 @@
<field name="checkin" eval="DateTime.today() + timedelta(10)" /> <field name="checkin" eval="DateTime.today() + timedelta(10)" />
<field name="checkout" eval="DateTime.today() + timedelta(12)" /> <field name="checkout" eval="DateTime.today() + timedelta(12)" />
<field name="pms_property_id" ref="pms.main_pms_property" /> <field name="pms_property_id" ref="pms.main_pms_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_phone" /> <field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
</record> </record>
<!-- GRAND SUITE RESERVATIONS (SAN CARLOS) --> <!-- GRAND SUITE RESERVATIONS (SAN CARLOS) -->
<!-- 3 nights grsui no board service PAST --> <!-- 3 nights grsui no board service PAST -->
@@ -1122,7 +1259,10 @@
<field name="checkin" eval="DateTime.today() + timedelta(-9)" /> <field name="checkin" eval="DateTime.today() + timedelta(-9)" />
<field name="checkout" eval="DateTime.today() + timedelta(-6)" /> <field name="checkout" eval="DateTime.today() + timedelta(-6)" />
<field name="pms_property_id" ref="pms.san_carlos_property" /> <field name="pms_property_id" ref="pms.san_carlos_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_phone" /> <field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
<field name="state">done</field> <field name="state">done</field>
</record> </record>
<record id="pms_checkin_partner_r_grsui_01" model="pms.checkin.partner"> <record id="pms_checkin_partner_r_grsui_01" model="pms.checkin.partner">
@@ -1143,7 +1283,7 @@
<field name="checkin" eval="DateTime.today() + timedelta(-8)" /> <field name="checkin" eval="DateTime.today() + timedelta(-8)" />
<field name="checkout" eval="DateTime.today() + timedelta(-5)" /> <field name="checkout" eval="DateTime.today() + timedelta(-5)" />
<field name="pms_property_id" ref="pms.san_carlos_property" /> <field name="pms_property_id" ref="pms.san_carlos_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_door" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_door" />
<field name="partner_requests">Need 1 extra shampoo</field> <field name="partner_requests">Need 1 extra shampoo</field>
<field name="state">done</field> <field name="state">done</field>
</record> </record>
@@ -1165,7 +1305,7 @@
<field name="checkin" eval="DateTime.today() + timedelta(-6)" /> <field name="checkin" eval="DateTime.today() + timedelta(-6)" />
<field name="checkout" eval="DateTime.today() + timedelta(-3)" /> <field name="checkout" eval="DateTime.today() + timedelta(-3)" />
<field name="pms_property_id" ref="pms.san_carlos_property" /> <field name="pms_property_id" ref="pms.san_carlos_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_mail" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_mail" />
<field name="state">done</field> <field name="state">done</field>
</record> </record>
<record id="pms_checkin_partner_r_grsui_03" model="pms.checkin.partner"> <record id="pms_checkin_partner_r_grsui_03" model="pms.checkin.partner">
@@ -1186,7 +1326,10 @@
<field name="checkin" eval="DateTime.today() + timedelta(-2)" /> <field name="checkin" eval="DateTime.today() + timedelta(-2)" />
<field name="checkout" eval="DateTime.today() + timedelta(1)" /> <field name="checkout" eval="DateTime.today() + timedelta(1)" />
<field name="pms_property_id" ref="pms.san_carlos_property" /> <field name="pms_property_id" ref="pms.san_carlos_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_phone" /> <field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
<field name="partner_requests">Welcome cocktail.</field> <field name="partner_requests">Welcome cocktail.</field>
</record> </record>
<!-- 4 nights grsui no board service --> <!-- 4 nights grsui no board service -->
@@ -1197,7 +1340,7 @@
<field name="checkin" eval="DateTime.today() + timedelta(-1)" /> <field name="checkin" eval="DateTime.today() + timedelta(-1)" />
<field name="checkout" eval="DateTime.today() + timedelta(3)" /> <field name="checkout" eval="DateTime.today() + timedelta(3)" />
<field name="pms_property_id" ref="pms.san_carlos_property" /> <field name="pms_property_id" ref="pms.san_carlos_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_door" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_door" />
</record> </record>
<!-- 3 nights grsui no board service --> <!-- 3 nights grsui no board service -->
<record id="pms_reservation_grsui_06" model="pms.reservation"> <record id="pms_reservation_grsui_06" model="pms.reservation">
@@ -1207,7 +1350,7 @@
<field name="checkin" eval="DateTime.today() + timedelta(-2)" /> <field name="checkin" eval="DateTime.today() + timedelta(-2)" />
<field name="checkout" eval="DateTime.today() + timedelta(7)" /> <field name="checkout" eval="DateTime.today() + timedelta(7)" />
<field name="pms_property_id" ref="pms.san_carlos_property" /> <field name="pms_property_id" ref="pms.san_carlos_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_mail" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_mail" />
<field name="partner_requests">Basket fruit at bedroom</field> <field name="partner_requests">Basket fruit at bedroom</field>
</record> </record>
<!-- JUNIOR SUITE RESERVATIONS (SAN CARLOS) --> <!-- JUNIOR SUITE RESERVATIONS (SAN CARLOS) -->
@@ -1219,7 +1362,10 @@
<field name="checkin" eval="DateTime.today() + timedelta(-10)" /> <field name="checkin" eval="DateTime.today() + timedelta(-10)" />
<field name="checkout" eval="DateTime.today() + timedelta(-7)" /> <field name="checkout" eval="DateTime.today() + timedelta(-7)" />
<field name="pms_property_id" ref="pms.san_carlos_property" /> <field name="pms_property_id" ref="pms.san_carlos_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_phone" /> <field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
<field name="state">done</field> <field name="state">done</field>
</record> </record>
<record id="pms_checkin_partner_r_jrsui_01" model="pms.checkin.partner"> <record id="pms_checkin_partner_r_jrsui_01" model="pms.checkin.partner">
@@ -1240,7 +1386,7 @@
<field name="checkin" eval="DateTime.today() + timedelta(-8)" /> <field name="checkin" eval="DateTime.today() + timedelta(-8)" />
<field name="checkout" eval="DateTime.today() + timedelta(-3)" /> <field name="checkout" eval="DateTime.today() + timedelta(-3)" />
<field name="pms_property_id" ref="pms.san_carlos_property" /> <field name="pms_property_id" ref="pms.san_carlos_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_door" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_door" />
<field name="partner_requests">allergic to chemicals</field> <field name="partner_requests">allergic to chemicals</field>
<field name="state">done</field> <field name="state">done</field>
</record> </record>
@@ -1262,7 +1408,7 @@
<field name="checkin" eval="DateTime.today() + timedelta(-6)" /> <field name="checkin" eval="DateTime.today() + timedelta(-6)" />
<field name="checkout" eval="DateTime.today() + timedelta(-2)" /> <field name="checkout" eval="DateTime.today() + timedelta(-2)" />
<field name="pms_property_id" ref="pms.san_carlos_property" /> <field name="pms_property_id" ref="pms.san_carlos_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_mail" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_mail" />
<field name="state">done</field> <field name="state">done</field>
</record> </record>
<record id="pms_checkin_partner_jrsui_03" model="pms.checkin.partner"> <record id="pms_checkin_partner_jrsui_03" model="pms.checkin.partner">
@@ -1283,7 +1429,10 @@
<field name="checkin" eval="DateTime.today() + timedelta(-2)" /> <field name="checkin" eval="DateTime.today() + timedelta(-2)" />
<field name="checkout" eval="DateTime.today() + timedelta(2)" /> <field name="checkout" eval="DateTime.today() + timedelta(2)" />
<field name="pms_property_id" ref="pms.san_carlos_property" /> <field name="pms_property_id" ref="pms.san_carlos_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_phone" /> <field
name="sale_channel_origin_id"
ref="pms.main_pms_sale_channel_phone"
/>
<field name="partner_requests">Smoking room.</field> <field name="partner_requests">Smoking room.</field>
</record> </record>
<!-- 4 nights jrsui no board service --> <!-- 4 nights jrsui no board service -->
@@ -1294,7 +1443,7 @@
<field name="checkin" eval="DateTime.today()" /> <field name="checkin" eval="DateTime.today()" />
<field name="checkout" eval="DateTime.today() + timedelta(4)" /> <field name="checkout" eval="DateTime.today() + timedelta(4)" />
<field name="pms_property_id" ref="pms.san_carlos_property" /> <field name="pms_property_id" ref="pms.san_carlos_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_door" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_door" />
</record> </record>
<!-- 4 nights jrsui no board service --> <!-- 4 nights jrsui no board service -->
<record id="pms_reservation_jrsui_06" model="pms.reservation"> <record id="pms_reservation_jrsui_06" model="pms.reservation">
@@ -1304,7 +1453,7 @@
<field name="checkin" eval="DateTime.today() + timedelta(3)" /> <field name="checkin" eval="DateTime.today() + timedelta(3)" />
<field name="checkout" eval="DateTime.today() + timedelta(7)" /> <field name="checkout" eval="DateTime.today() + timedelta(7)" />
<field name="pms_property_id" ref="pms.san_carlos_property" /> <field name="pms_property_id" ref="pms.san_carlos_property" />
<field name="channel_type_id" ref="pms.main_pms_sale_channel_mail" /> <field name="sale_channel_origin_id" ref="pms.main_pms_sale_channel_mail" />
<field name="partner_requests">two bottles of moët</field> <field name="partner_requests">two bottles of moët</field>
</record> </record>
</data> </data>

View File

@@ -7,7 +7,7 @@ def migrate(env, version):
env.cr, env.cr,
""" """
UPDATE pms_reservation UPDATE pms_reservation
SET to_send_confirmation_mail = to_send_mail, SET to_send_confirmation_mail = False,
to_send_cancelation_mail = False, to_send_cancelation_mail = False,
to_send_exit_mail = False, to_send_exit_mail = False,
to_send_modification_mail = False; to_send_modification_mail = False;

View File

@@ -0,0 +1,32 @@
import logging
from openupgradelib import openupgrade
_logger = logging.getLogger(__name__)
@openupgrade.migrate()
def migrate(env, version):
openupgrade.logged_query(
env.cr,
"""
UPDATE pms_reservation_line rl
SET sale_channel_id = r.sale_channel_origin_id
FROM pms_reservation r
WHERE r.id = rl.reservation_id
""",
)
openupgrade.logged_query(
env.cr,
"""
UPDATE pms_service ser
SET sale_channel_origin_id = fol.sale_channel_origin_id
FROM pms_folio fol
WHERE fol.id = ser.folio_id
""",
)
_logger.info("Recompute reservations sale channel ids...")
env["pms.reservation"].search(
[("reservation_type", "!=", "out")]
)._compute_sale_channel_ids()

View File

@@ -0,0 +1,11 @@
from openupgradelib import openupgrade
_field_renames = [
("pms.folio", "pms_folio", "channel_type_id", "sale_channel_origin_id"),
("pms.reservation", "pms_reservation", "channel_type_id", "sale_channel_origin_id"),
]
@openupgrade.migrate()
def migrate(env, version):
openupgrade.rename_fields(env, _field_renames)

View File

@@ -1,9 +1,11 @@
# Copyright 2020 Dario Lodeiros # Copyright 2020 Dario Lodeiros
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from datetime import timedelta
from math import ceil from math import ceil
import babel.dates import babel.dates
from dateutil import relativedelta
from odoo import _, api, fields, models from odoo import _, api, fields, models
from odoo.osv import expression from odoo.osv import expression
@@ -44,6 +46,15 @@ class FolioSaleLine(models.Model):
comodel_name="pms.service", comodel_name="pms.service",
ondelete="cascade", ondelete="cascade",
) )
pms_property_id = fields.Many2one(
string="Property",
help="Property with access to the element;",
readonly=True,
store=True,
comodel_name="pms.property",
related="folio_id.pms_property_id",
check_pms_properties=True,
)
is_board_service = fields.Boolean( is_board_service = fields.Boolean(
string="Board Service", string="Board Service",
help="Indicates if the service included in " help="Indicates if the service included in "
@@ -51,7 +62,6 @@ class FolioSaleLine(models.Model):
store=True, store=True,
related="service_id.is_board_service", related="service_id.is_board_service",
) )
name = fields.Text( name = fields.Text(
string="Description", string="Description",
help="Description of folio sale line", help="Description of folio sale line",
@@ -259,13 +269,6 @@ class FolioSaleLine(models.Model):
index=True, index=True,
related="folio_id.company_id", related="folio_id.company_id",
) )
folio_partner_id = fields.Many2one(
string="Customer",
help="Related customer with Folio Sale Line",
readonly=False,
store=True,
related="folio_id.partner_id",
)
origin_agency_id = fields.Many2one( origin_agency_id = fields.Many2one(
string="Origin Agency", string="Origin Agency",
help="The agency where the folio sale line originates", help="The agency where the folio sale line originates",
@@ -330,14 +333,38 @@ class FolioSaleLine(models.Model):
store=True, store=True,
compute="_compute_date_order", compute="_compute_date_order",
) )
default_invoice_to = fields.Many2one(
string="Invoice to",
help="""Indicates the contact to which this line will be
billed by default, if it is not established,
a guest or the generic contact will be used instead""",
comodel_name="res.partner",
ondelete="restrict",
)
autoinvoice_date = fields.Date(
string="Autoinvoice Date",
compute="_compute_autoinvoice_date",
store=True,
)
@api.depends( @api.depends(
"folio_id.agency_id",
"reservation_line_ids", "reservation_line_ids",
"reservation_id.agency_id", "service_line_ids",
) )
def _compute_origin_agency_id(self): def _compute_origin_agency_id(self):
"""
Set the origin agency if the origin lines channel
match with the agency's channel
"""
for rec in self: for rec in self:
rec.origin_agency_id = rec.folio_id.agency_id # TODO: ServiceLines agency
if rec.folio_id.agency_id and list(
set(rec.reservation_line_ids.mapped("sale_channel_id.id"))
) == rec.folio_id.agency_id.mapped("sale_channel_id.id"):
rec.origin_agency_id = rec.folio_id.agency_id
else:
rec.origin_agency_id = False
@api.depends("qty_to_invoice") @api.depends("qty_to_invoice")
def _compute_service_order(self): def _compute_service_order(self):
@@ -370,6 +397,54 @@ class FolioSaleLine(models.Model):
else: else:
record.date_order = 0 record.date_order = 0
@api.depends(
"default_invoice_to",
"invoice_status",
"folio_id.last_checkout",
"reservation_id.checkout",
"service_id.reservation_id.checkout",
)
def _compute_autoinvoice_date(self):
self.autoinvoice_date = False
for record in self.filtered(lambda r: r.invoice_status == "to_invoice"):
record.autoinvoice_date = record._get_to_invoice_date()
def _get_to_invoice_date(self):
self.ensure_one()
partner = self.default_invoice_to
if self.reservation_id:
last_checkout = self.reservation_id.checkout
elif self.service_id and self.service_id.reservation_id:
last_checkout = self.service_id.reservation_id.checkout
else:
last_checkout = self.folio_id.last_checkout
invoicing_policy = (
self.pms_property_id.default_invoicing_policy
if not partner or partner.invoicing_policy == "property"
else partner.invoicing_policy
)
if invoicing_policy == "manual":
return False
if invoicing_policy == "checkout":
margin_days = (
self.pms_property_id.margin_days_autoinvoice
if not partner or partner.invoicing_policy == "property"
else partner.margin_days_autoinvoice
)
return last_checkout + timedelta(days=margin_days)
if invoicing_policy == "month_day":
month_day = (
self.pms_property_id.invoicing_month_day
if not partner or partner.invoicing_policy == "property"
else partner.invoicing_month_day
)
if last_checkout.day <= month_day:
self.autoinvoice_date = last_checkout.replace(day=month_day)
else:
self.autoinvoice_date = (
last_checkout + relativedelta.relativedelta(months=1)
).replace(day=month_day)
@api.depends("date_order") @api.depends("date_order")
def _compute_reservation_order(self): def _compute_reservation_order(self):
for record in self: for record in self:

View File

@@ -952,7 +952,7 @@ class PmsCheckinPartner(models.Model):
)[self.id] )[self.id]
self.reservation_id.message_post(body=body) self.reservation_id.message_post(body=body)
if self.reservation_id.to_send_mail: if self.reservation_id.to_send_exit_mail:
emails = self.reservation_id.checkin_partner_ids.mapped("email") emails = self.reservation_id.checkin_partner_ids.mapped("email")
if ( if (
self.reservation_id.partner_id self.reservation_id.partner_id
@@ -972,4 +972,4 @@ class PmsCheckinPartner(models.Model):
"body_html", [6, 0, self.id], compute_lang=True, post_process=True "body_html", [6, 0, self.id], compute_lang=True, post_process=True
)[self.id] )[self.id]
self.reservation_id.message_post(body=body) self.reservation_id.message_post(body=body)
self.reservation_id.to_send_mail = False self.reservation_id.to_send_exit_mail = False

View File

@@ -4,11 +4,8 @@
import datetime import datetime
import logging import logging
from datetime import timedelta
from itertools import groupby from itertools import groupby
from dateutil import relativedelta
from odoo import _, api, fields, models from odoo import _, api, fields, models
from odoo.exceptions import AccessError, UserError, ValidationError from odoo.exceptions import AccessError, UserError, ValidationError
from odoo.tools import float_compare, float_is_zero from odoo.tools import float_compare, float_is_zero
@@ -204,17 +201,19 @@ class PmsFolio(models.Model):
ondelete="restrict", ondelete="restrict",
check_pms_properties=True, check_pms_properties=True,
) )
channel_type_id = fields.Many2one( sale_channel_ids = fields.Many2many(
string="Direct Sale Channel", string="Sale Channels",
help="Only allowed if the field of sale channel channel_type is 'direct'", help="Sale Channels through which reservations were managed",
readonly=False,
store=True, store=True,
compute="_compute_sale_channel_ids",
comodel_name="pms.sale.channel", comodel_name="pms.sale.channel",
domain=[("channel_type", "=", "direct")],
ondelete="restrict",
compute="_compute_channel_type_id",
check_pms_properties=True,
) )
sale_channel_origin_id = fields.Many2one(
string="Sale Channel Origin",
help="Sale Channel through which folio was created, the original",
comodel_name="pms.sale.channel",
)
transaction_ids = fields.Many2many( transaction_ids = fields.Many2many(
string="Transactions", string="Transactions",
help="Payments made through payment acquirer", help="Payments made through payment acquirer",
@@ -623,13 +622,11 @@ class PmsFolio(models.Model):
folio_lines_to_invoice = folio.sale_line_ids.filtered( folio_lines_to_invoice = folio.sale_line_ids.filtered(
lambda l: l.id in list(lines_to_invoice.keys()) lambda l: l.id in list(lines_to_invoice.keys())
) )
folio_partner_invoice_id = partner_invoice_id folio._set_default_partner_invoice_id(
if not folio_partner_invoice_id: folio_lines_to_invoice, partner_invoice_id
folio_partner_invoice_id = folio._get_default_partner_invoice_id() )
groups_invoice_lines = folio._get_groups_invoice_lines( groups_invoice_lines = folio._get_groups_invoice_lines(
lines_to_invoice=folio_lines_to_invoice, lines_to_invoice=folio_lines_to_invoice,
partner_invoice_id=folio_partner_invoice_id,
) )
for group in groups_invoice_lines: for group in groups_invoice_lines:
folio = folio.with_company(folio.company_id) folio = folio.with_company(folio.company_id)
@@ -696,60 +693,49 @@ class PmsFolio(models.Model):
invoice_vals_list.append(invoice_vals) invoice_vals_list.append(invoice_vals)
return invoice_vals_list return invoice_vals_list
def _get_groups_invoice_lines(self, lines_to_invoice, partner_invoice_id): def _get_groups_invoice_lines(self, lines_to_invoice):
self.ensure_one() self.ensure_one()
target_lines = lines_to_invoice groups_invoice_lines = []
if self._context.get("lines_auto_add") and partner_invoice_id: partners = lines_to_invoice.mapped("default_invoice_to")
folio_partner_invoice = self.env["res.partner"].browse(partner_invoice_id) for partner in partners:
if folio_partner_invoice.default_invoice_lines == "overnights":
target_lines = target_lines.filtered(
lambda r: r.is_board_service
or (r.reservation_line_ids and r.reservation_id.overnight_room)
)
elif folio_partner_invoice.default_invoice_lines == "reservations":
target_lines = target_lines.filtered(
lambda r: r.is_board_service or r.reservation_line_ids
)
elif folio_partner_invoice.default_invoice_lines == "services":
target_lines = target_lines.filtered(
lambda r: not r.is_board_service or r.service_line_ids
)
groups_invoice_lines = [
{
"partner_id": partner_invoice_id,
"lines": target_lines,
}
]
if (
self.autoinvoice_date
and self.autoinvoice_date <= fields.Date.today()
and len(target_lines) < len(lines_to_invoice)
):
other_partner_to_invoice = self.partner_invoice_ids.filtered(
lambda p: p.id != partner_invoice_id
)
if not other_partner_to_invoice:
other_partner_to_invoice = self.env.ref("pms.various_pms_partner")
groups_invoice_lines.append( groups_invoice_lines.append(
{ {
"partner_id": other_partner_to_invoice.id, "partner_id": partner.id,
"lines": lines_to_invoice - target_lines, "lines": lines_to_invoice.filtered(
lambda l: l.default_invoice_to == partner
),
} }
) )
return groups_invoice_lines return groups_invoice_lines
def _get_default_partner_invoice_id(self): def _set_default_partner_invoice_id(
self, lines_to_invoice, folio_partner_invoice_id=False
):
# By priotiy:
# 1º- Partner set in parameter,
# 2º- Partner in default_invoice_to in line
# 3º- Partner in folio,
# 4º- Partner in checkins,
# 5º- Generic various partner
self.ensure_one() self.ensure_one()
folio_partner_invoice_id = False for line in lines_to_invoice:
if self.partner_id and self.partner_id.vat: if not folio_partner_invoice_id and line.default_invoice_to:
folio_partner_invoice_id = self.partner_id.id folio_partner_invoice_id = line.default_invoice_to
if not folio_partner_invoice_id: if (
folio_partner_invoice_id = ( not folio_partner_invoice_id
self.partner_invoice_ids[0].id if self.partner_invoice_ids else False and self.partner_id
and self.partner_id._check_enought_invoice_data()
and not self.partner_id.is_agency
):
folio_partner_invoice_id = self.partner_id.id
checkin_invoice_partner = self.checkin_partner_ids.filtered(
lambda c: c.partner_id and c.partner_id._check_enought_invoice_data()
) )
if not folio_partner_invoice_id: if not folio_partner_invoice_id and checkin_invoice_partner:
folio_partner_invoice_id = self.env.ref("pms.various_pms_partner").id folio_partner_invoice_id = checkin_invoice_partner[0].partner_id
return folio_partner_invoice_id if not folio_partner_invoice_id:
folio_partner_invoice_id = self.env.ref("pms.various_pms_partner").id
line.default_invoice_to = folio_partner_invoice_id
def _get_tax_amount_by_group(self): def _get_tax_amount_by_group(self):
self.ensure_one() self.ensure_one()
@@ -787,42 +773,6 @@ class PmsFolio(models.Model):
else: else:
return False return False
@api.depends("partner_id", "invoice_status", "last_checkout", "partner_invoice_ids")
def _compute_autoinvoice_date(self):
self.autoinvoice_date = False
for record in self.filtered(lambda r: r.invoice_status == "to_invoice"):
record.autoinvoice_date = record._get_to_invoice_date()
def _get_to_invoice_date(self):
self.ensure_one()
partner = self.partner_id
invoicing_policy = (
self.pms_property_id.default_invoicing_policy
if not partner or partner.invoicing_policy == "property"
else partner.invoicing_policy
)
if invoicing_policy == "manual":
return False
if invoicing_policy == "checkout":
margin_days = (
self.pms_property_id.margin_days_autoinvoice
if not partner or partner.invoicing_policy == "property"
else partner.margin_days_autoinvoice
)
return self.last_checkout + timedelta(days=margin_days)
if invoicing_policy == "month_day":
month_day = (
self.pms_property_id.invoicing_month_day
if not partner or partner.invoicing_policy == "property"
else partner.invoicing_month_day
)
if self.last_checkout.day <= month_day:
self.autoinvoice_date = self.last_checkout.replace(day=month_day)
else:
self.autoinvoice_date = (
self.last_checkout + relativedelta.relativedelta(months=1)
).replace(day=month_day)
@api.depends("reservation_ids", "reservation_ids.state") @api.depends("reservation_ids", "reservation_ids.state")
def _compute_number_of_rooms(self): def _compute_number_of_rooms(self):
for folio in self: for folio in self:
@@ -846,6 +796,7 @@ class PmsFolio(models.Model):
"reservation_ids", "reservation_ids",
"service_ids", "service_ids",
"service_ids.reservation_id", "service_ids.reservation_id",
"service_ids.default_invoice_to",
"service_ids.service_line_ids.price_day_total", "service_ids.service_line_ids.price_day_total",
"service_ids.service_line_ids.discount", "service_ids.service_line_ids.discount",
"service_ids.service_line_ids.cancel_discount", "service_ids.service_line_ids.cancel_discount",
@@ -855,6 +806,7 @@ class PmsFolio(models.Model):
"reservation_ids.reservation_line_ids.price", "reservation_ids.reservation_line_ids.price",
"reservation_ids.reservation_line_ids.discount", "reservation_ids.reservation_line_ids.discount",
"reservation_ids.reservation_line_ids.cancel_discount", "reservation_ids.reservation_line_ids.cancel_discount",
"reservation_ids.reservation_line_ids.default_invoice_to",
"reservation_ids.tax_ids", "reservation_ids.tax_ids",
) )
def _compute_sale_line_ids(self): def _compute_sale_line_ids(self):
@@ -1048,11 +1000,23 @@ class PmsFolio(models.Model):
if reservation.commission_amount != 0: if reservation.commission_amount != 0:
folio.commission = folio.commission + reservation.commission_amount folio.commission = folio.commission + reservation.commission_amount
@api.depends("agency_id") @api.depends(
def _compute_channel_type_id(self): "reservation_ids",
for folio in self: "reservation_ids.sale_channel_ids",
if folio.agency_id: "service_ids",
folio.channel_type_id = folio.agency_id.sale_channel_id.id "service_ids.sale_channel_origin_id",
)
def _compute_sale_channel_ids(self):
for record in self:
sale_channel_ids = []
if record.reservation_ids:
for sale in record.reservation_ids.mapped("sale_channel_ids.id"):
sale_channel_ids.append(sale)
if record.service_ids:
for sale in record.service_ids.mapped("sale_channel_origin_id.id"):
sale_channel_ids.append(sale)
sale_channel_ids = list(set(sale_channel_ids))
record.sale_channel_ids = [(6, 0, sale_channel_ids)]
@api.depends("sale_line_ids.invoice_lines") @api.depends("sale_line_ids.invoice_lines")
def _compute_get_invoiced(self): def _compute_get_invoiced(self):
@@ -1427,7 +1391,7 @@ class PmsFolio(models.Model):
record.days_to_checkin = (record.first_checkin - fields.Date.today()).days record.days_to_checkin = (record.first_checkin - fields.Date.today()).days
def _search_days_to_checkin(self, operator, value): def _search_days_to_checkin(self, operator, value):
target_date = fields.Date.today() + timedelta(days=value) target_date = fields.Date.today() + datetime.timedelta(days=value)
if operator in ("=", ">=", ">", "<=", "<"): if operator in ("=", ">=", ">", "<=", "<"):
return [("first_checkin", operator, target_date)] return [("first_checkin", operator, target_date)]
raise UserError( raise UserError(
@@ -1446,7 +1410,7 @@ class PmsFolio(models.Model):
record.days_to_checkout = (record.last_checkout - fields.Date.today()).days record.days_to_checkout = (record.last_checkout - fields.Date.today()).days
def _search_days_to_checkout(self, operator, value): def _search_days_to_checkout(self, operator, value):
target_date = fields.Date.today() + timedelta(days=value) target_date = fields.Date.today() + datetime.timedelta(days=value)
if operator in ("=", ">=", ">", "<=", "<"): if operator in ("=", ">=", ">", "<=", "<"):
return [("last_checkout", operator, target_date)] return [("last_checkout", operator, target_date)]
raise UserError( raise UserError(
@@ -1491,18 +1455,6 @@ class PmsFolio(models.Model):
("sale_line_ids.invoice_lines.move_id", operator, value), ("sale_line_ids.invoice_lines.move_id", operator, value),
] ]
@api.constrains("agency_id", "channel_type_id")
def _check_only_one_channel(self):
for record in self:
if (
record.agency_id
and record.channel_type_id.channel_type
!= record.agency_id.sale_channel_id.channel_type
):
raise models.ValidationError(
_("The Sale Channel does not correspond to the agency's")
)
@api.constrains("name") @api.constrains("name")
def _check_required_partner_name(self): def _check_required_partner_name(self):
for record in self: for record in self:
@@ -1523,6 +1475,52 @@ class PmsFolio(models.Model):
result.access_token = result._portal_ensure_token() result.access_token = result._portal_ensure_token()
return result return result
def write(self, vals):
reservations_to_update = self.env["pms.reservation"]
services_to_update = self.env["pms.service"]
if "sale_channel_origin_id" in vals:
reservations_to_update = self.get_reservations_to_update_channel(vals)
services_to_update = self.get_services_to_update_channel(vals)
res = super(PmsFolio, self).write(vals)
if reservations_to_update:
reservations_to_update.sale_channel_origin_id = vals[
"sale_channel_origin_id"
]
if services_to_update:
services_to_update.sale_channel_origin_id = vals["sale_channel_origin_id"]
return res
def get_reservations_to_update_channel(self, vals):
reservations_to_update = self.env["pms.reservation"]
for record in self:
for reservation in record.reservation_ids:
if (
reservation.sale_channel_origin_id == self.sale_channel_origin_id
) and (
vals["sale_channel_origin_id"]
!= reservation.sale_channel_origin_id.id
):
reservations_to_update += reservation
return reservations_to_update
def get_services_to_update_channel(self, vals):
services_to_update = self.env["pms.service"]
for record in self:
for service in record.service_ids:
if (
not service.reservation_id
and (service.sale_channel_origin_id == self.sale_channel_origin_id)
and (
vals["sale_channel_origin_id"]
!= service.sale_channel_origin_id.id
)
):
services_to_update += service
return services_to_update
def action_pay(self): def action_pay(self):
self.ensure_one() self.ensure_one()
self.ensure_one() self.ensure_one()
@@ -1860,9 +1858,17 @@ class PmsFolio(models.Model):
self = self.with_context(lines_auto_add=True) self = self.with_context(lines_auto_add=True)
lines_to_invoice = dict() lines_to_invoice = dict()
for line in self.sale_line_ids: for line in self.sale_line_ids:
lines_to_invoice[line.id] = ( if not self._context.get("autoinvoice"):
0 if line.display_type else line.qty_to_invoice lines_to_invoice[line.id] = (
) 0 if line.display_type else line.qty_to_invoice
)
elif (
line.autoinvoice_date
and line.autoinvoice_date <= fields.Date.today()
):
lines_to_invoice[line.id] = (
0 if line.display_type else line.qty_to_invoice
)
invoice_vals_list = self.get_invoice_vals_list( invoice_vals_list = self.get_invoice_vals_list(
final=final, final=final,
lines_to_invoice=lines_to_invoice, lines_to_invoice=lines_to_invoice,
@@ -2325,8 +2331,8 @@ class PmsFolio(models.Model):
("reservation_id", "=", reservation.id), ("reservation_id", "=", reservation.id),
("cancel_discount", "<", 100), ("cancel_discount", "<", 100),
], ],
["price", "discount", "cancel_discount"], ["price", "discount", "cancel_discount", "default_invoice_to"],
["price", "discount", "cancel_discount"], ["price", "discount", "cancel_discount", "default_invoice_to"],
lazy=False, lazy=False,
) )
current_sale_line_ids = reservation.sale_line_ids.filtered( current_sale_line_ids = reservation.sale_line_ids.filtered(
@@ -2341,13 +2347,17 @@ class PmsFolio(models.Model):
final_discount = self.concat_discounts( final_discount = self.concat_discounts(
item["discount"], item["cancel_discount"] item["discount"], item["cancel_discount"]
) )
partner_invoice = lines_to.mapped("default_invoice_to")
if current_sale_line_ids and index <= (len(current_sale_line_ids) - 1): if current_sale_line_ids and index <= (len(current_sale_line_ids) - 1):
current = { current = {
"price_unit": item["price"], "price_unit": item["price"],
"discount": final_discount, "discount": final_discount,
"reservation_line_ids": [(6, 0, lines_to.ids)], "reservation_line_ids": [(6, 0, lines_to.ids)],
"sequence": sequence, "sequence": sequence,
"default_invoice_to": partner_invoice[0].id
if partner_invoice
else current_sale_line_ids[index].default_invoice_to,
} }
sale_reservation_vals.append( sale_reservation_vals.append(
(1, current_sale_line_ids[index].id, current) (1, current_sale_line_ids[index].id, current)
@@ -2362,6 +2372,9 @@ class PmsFolio(models.Model):
"tax_ids": [(6, 0, reservation.tax_ids.ids)], "tax_ids": [(6, 0, reservation.tax_ids.ids)],
"reservation_line_ids": [(6, 0, lines_to.ids)], "reservation_line_ids": [(6, 0, lines_to.ids)],
"sequence": sequence, "sequence": sequence,
"default_invoice_to": partner_invoice[0].id
if partner_invoice
else False,
} }
sale_reservation_vals.append((0, 0, new)) sale_reservation_vals.append((0, 0, new))
folio_sale_lines_to_remove = [] folio_sale_lines_to_remove = []
@@ -2384,8 +2397,8 @@ class PmsFolio(models.Model):
("service_id", "=", service.id), ("service_id", "=", service.id),
("cancel_discount", "<", 100), ("cancel_discount", "<", 100),
], ],
["price_unit", "discount", "cancel_discount"], ["price_unit", "discount", "cancel_discount", "default_invoice_to"],
["price_unit", "discount", "cancel_discount"], ["price_unit", "discount", "cancel_discount", "default_invoice_to"],
lazy=False, lazy=False,
) )
current_sale_service_ids = reservation.sale_line_ids.filtered( current_sale_service_ids = reservation.sale_line_ids.filtered(
@@ -2399,7 +2412,7 @@ class PmsFolio(models.Model):
final_discount = self.concat_discounts( final_discount = self.concat_discounts(
item["discount"], item["cancel_discount"] item["discount"], item["cancel_discount"]
) )
partner_invoice = lines_to.mapped("default_invoice_to")
if current_sale_service_ids and index <= ( if current_sale_service_ids and index <= (
len(current_sale_service_ids) - 1 len(current_sale_service_ids) - 1
): ):
@@ -2408,6 +2421,9 @@ class PmsFolio(models.Model):
"discount": final_discount, "discount": final_discount,
"service_line_ids": [(6, 0, lines_to.ids)], "service_line_ids": [(6, 0, lines_to.ids)],
"sequence": sequence, "sequence": sequence,
"default_invoice_to": partner_invoice[0].id
if partner_invoice
else current_sale_service_ids[index].default_invoice_to,
} }
sale_service_vals.append( sale_service_vals.append(
(1, current_sale_service_ids[index].id, current) (1, current_sale_service_ids[index].id, current)
@@ -2423,6 +2439,9 @@ class PmsFolio(models.Model):
"product_id": service.product_id.id, "product_id": service.product_id.id,
"tax_ids": [(6, 0, service.tax_ids.ids)], "tax_ids": [(6, 0, service.tax_ids.ids)],
"sequence": sequence, "sequence": sequence,
"default_invoice_to": partner_invoice[0].id
if partner_invoice
else False,
} }
sale_service_vals.append((0, 0, new)) sale_service_vals.append((0, 0, new))
sequence = sequence + 1 sequence = sequence + 1

View File

@@ -607,7 +607,7 @@ class PmsProperty(models.Model):
""" """
folios = self.env["pms.folio"].search( folios = self.env["pms.folio"].search(
[ [
("autoinvoice_date", "=", fields.date.today()), ("sale_line_ids.autoinvoice_date", "=", fields.date.today()),
("invoice_status", "=", "to_invoice"), ("invoice_status", "=", "to_invoice"),
] ]
) )

View File

@@ -124,13 +124,33 @@ class PmsReservation(models.Model):
depends=["folio_id.agency_id"], depends=["folio_id.agency_id"],
tracking=True, tracking=True,
) )
channel_type_id = fields.Many2one( sale_channel_ids = fields.Many2many(
string="Channel Type", string="Sale Channels",
help="Sales Channel through which the reservation was managed", help="Sale Channels through which reservation lines were managed",
readonly=False,
store=True, store=True,
related="folio_id.channel_type_id", compute="_compute_sale_channel_ids",
tracking=True, comodel_name="pms.sale.channel",
)
sale_channel_origin_id = fields.Many2one(
string="Sale Channel Origin",
help="Sale Channel through which reservation was created, the original",
default=lambda self: self._get_default_sale_channel_origin(),
comodel_name="pms.sale.channel",
)
force_update_origin = fields.Boolean(
string="Update Sale Channel Origin",
help="This field is for force update in sale channel "
"origin of folio and another reservations",
store=True,
readonly=False,
compute="_compute_force_update_origin",
)
is_origin_channel_check_visible = fields.Boolean(
string="Check force update origin visible",
help="Technical field to make visible update " "origin channel check",
store=True,
readonly=False,
compute="_compute_is_origin_channel_check_visible",
) )
closure_reason_id = fields.Many2one( closure_reason_id = fields.Many2one(
string="Closure Reason", string="Closure Reason",
@@ -1314,7 +1334,13 @@ class PmsReservation(models.Model):
reservation.preferred_room_id = False reservation.preferred_room_id = False
else: else:
reservation.splitted = False reservation.splitted = False
if room_ids: # Set automatically preferred_room_id if, and only if,
# all nights has the same room
if (
len(room_ids) == 1
and len(reservation.reservation_line_ids)
== (reservation.checkout - reservation.checkin).days
):
reservation.preferred_room_id = room_ids[0] reservation.preferred_room_id = room_ids[0]
@api.depends( @api.depends(
@@ -1608,6 +1634,50 @@ class PmsReservation(models.Model):
else: else:
record.lang = self.env["res.lang"].get_installed() record.lang = self.env["res.lang"].get_installed()
@api.depends(
"reservation_line_ids",
"reservation_line_ids.sale_channel_id",
"service_ids",
"service_ids.sale_channel_origin_id",
)
def _compute_sale_channel_ids(self):
for record in self:
sale_channel_ids = []
if record.reservation_line_ids:
for sale in record.reservation_line_ids.mapped("sale_channel_id.id"):
sale_channel_ids.append(sale)
if record.service_ids:
for sale in record.service_ids.mapped("sale_channel_origin_id.id"):
sale_channel_ids.append(sale)
sale_channel_ids = list(set(sale_channel_ids))
record.sale_channel_ids = [(6, 0, sale_channel_ids)]
@api.depends("agency_id")
def _compute_sale_channel_origin_id(self):
for record in self:
# if record.folio_id.sale_channel_origin_id and not record.sale_channel_origin_id:
# record.sale_channel_origin_id = record.folio_id.sale_channel_origin_id
if record.agency_id:
record.sale_channel_origin_id = record.agency_id.sale_channel_id
@api.depends("sale_channel_origin_id")
def _compute_is_origin_channel_check_visible(self):
for record in self:
if (
record.sale_channel_origin_id != record.folio_id.sale_channel_origin_id
and record.folio_id
# and isinstance(self.id, int)
and record._origin.sale_channel_origin_id.id
):
record.is_origin_channel_check_visible = True
else:
record.is_origin_channel_check_visible = False
@api.depends("sale_channel_origin_id")
def _compute_force_update_origin(self):
for record in self:
record.force_update_origin = True
def _search_allowed_checkin(self, operator, value): def _search_allowed_checkin(self, operator, value):
if operator not in ("=",): if operator not in ("=",):
raise UserError( raise UserError(
@@ -1674,6 +1744,17 @@ class PmsReservation(models.Model):
segmentation_ids = folio.segmentation_ids segmentation_ids = folio.segmentation_ids
return segmentation_ids return segmentation_ids
def _get_default_sale_channel_origin(self):
folio = False
sale_channel_origin_id = False
if "default_folio_id" in self._context:
folio = self.env["pms.folio"].search(
[("id", "=", self._context["default_folio_id"])]
)
if folio and folio.sale_channel_origin_id:
sale_channel_origin_id = folio.sale_channel_origin_id
return sale_channel_origin_id
def check_in_out_dates(self): def check_in_out_dates(self):
""" """
1.-When date_order is less then checkin date or 1.-When date_order is less then checkin date or
@@ -1812,6 +1893,19 @@ class PmsReservation(models.Model):
) )
) )
@api.constrains("sale_channel_ids")
def _check_lines_with_sale_channel_id(self):
for record in self.filtered("sale_channel_origin_id"):
if record.reservation_line_ids:
if record.sale_channel_origin_id not in record.sale_channel_ids:
raise ValidationError(
_(
"Reservation must have one reservation line "
"with sale channel equal to sale channel origin of reservation."
"Change sale_channel_origin of reservation before"
)
)
# Action methods # Action methods
def open_partner(self): def open_partner(self):
"""Utility method used to add an "View Customer" button in reservation views""" """Utility method used to add an "View Customer" button in reservation views"""
@@ -1942,36 +2036,23 @@ class PmsReservation(models.Model):
default_vals["email"] = folio.email default_vals["email"] = folio.email
elif vals.get("reservation_type") != "out": elif vals.get("reservation_type") != "out":
raise ValidationError(_("Partner contact name is required")) raise ValidationError(_("Partner contact name is required"))
if folio.sale_channel_origin_id and "sale_channel_origin_id" not in vals:
default_vals["sale_channel_origin_id"] = folio.sale_channel_origin_id.id
vals.update(default_vals) vals.update(default_vals)
elif "pms_property_id" in vals and ( elif (
"partner_name" in vals or "partner_id" in vals or "agency_id" in vals "pms_property_id" in vals
and "sale_channel_origin_id" in vals
and ("partner_name" in vals or "partner_id" in vals or "agency_id" in vals)
): ):
folio_vals = { folio_vals = self._get_folio_vals(vals)
"pms_property_id": vals["pms_property_id"],
} self._check_clousure_reason(
if vals.get("partner_id"): reservation_type=vals.get("reservation_type"),
folio_vals["partner_id"] = vals.get("partner_id") closure_reason_id=vals.get("closure_reason_id"),
elif vals.get("agency_id"): )
folio_vals["agency_id"] = vals.get("agency_id")
elif vals.get("partner_name"):
folio_vals["partner_name"] = vals.get("partner_name")
folio_vals["mobile"] = vals.get("mobile")
folio_vals["email"] = vals.get("email")
elif vals.get("reservation_type") != "out":
raise ValidationError(_("Partner contact name is required"))
# Create the folio in case of need # Create the folio in case of need
# (To allow to create reservations direct) # (To allow to create reservations direct)
if vals.get("reservation_type"):
folio_vals["reservation_type"] = vals.get("reservation_type")
if vals.get("reservation_type") == "out" and not vals.get(
"closure_reason_id"
):
raise ValidationError(
_(
"A closure reason is mandatory when reservation"
" type is 'out of service'"
)
)
folio = self.env["pms.folio"].create(folio_vals) folio = self.env["pms.folio"].create(folio_vals)
vals.update( vals.update(
{ {
@@ -1981,7 +2062,11 @@ class PmsReservation(models.Model):
) )
else: else:
raise ValidationError(_("The Property are mandatory in the reservation")) raise ValidationError(
_(
"The Property and Sale Channel Origin are mandatory in the reservation"
)
)
if vals.get("name", _("New")) == _("New") or "name" not in vals: if vals.get("name", _("New")) == _("New") or "name" not in vals:
folio_sequence = ( folio_sequence = (
max(folio.mapped("reservation_ids.folio_sequence")) + 1 max(folio.mapped("reservation_ids.folio_sequence")) + 1
@@ -2004,13 +2089,62 @@ class PmsReservation(models.Model):
return record return record
def write(self, vals): def write(self, vals):
asset = super(PmsReservation, self).write(vals) folios_to_update_channel = self.env["pms.folio"]
lines_to_update_channel = self.env["pms.reservation.line"]
services_to_update_channel = self.env["pms.service"]
if "sale_channel_origin_id" in vals:
folios_to_update_channel = self.get_folios_to_update_channel(vals)
lines_to_update_channel = self.get_lines_to_update_channel(vals)
services_to_update_channel = self.get_services_to_update_channel(vals)
res = super(PmsReservation, self).write(vals)
if folios_to_update_channel:
folios_to_update_channel.sale_channel_origin_id = vals[
"sale_channel_origin_id"
]
if lines_to_update_channel:
lines_to_update_channel.sale_channel_id = vals["sale_channel_origin_id"]
if services_to_update_channel:
services_to_update_channel.sale_channel_origin_id = vals[
"sale_channel_origin_id"
]
self._check_services(vals) self._check_services(vals)
# Only check if adult to avoid to check capacity in intermediate states (p.e. flush) # Only check if adult to avoid to check capacity in intermediate states (p.e. flush)
# that not take access to possible extra beds service in vals # that not take access to possible extra beds service in vals
if "adults" in vals: if "adults" in vals:
self._check_capacity() self._check_capacity()
return asset return res
def _get_folio_vals(self, reservation_vals):
folio_vals = {
"pms_property_id": reservation_vals["pms_property_id"],
}
if reservation_vals.get("sale_channel_origin_id"):
folio_vals["sale_channel_origin_id"] = reservation_vals.get(
"sale_channel_origin_id"
)
if reservation_vals.get("partner_id"):
folio_vals["partner_id"] = reservation_vals.get("partner_id")
elif reservation_vals.get("agency_id"):
folio_vals["agency_id"] = reservation_vals.get("agency_id")
elif reservation_vals.get("partner_name"):
folio_vals["partner_name"] = reservation_vals.get("partner_name")
folio_vals["mobile"] = reservation_vals.get("mobile")
folio_vals["email"] = reservation_vals.get("email")
elif reservation_vals.get("reservation_type") != "out":
raise ValidationError(_("Partner contact name is required"))
if reservation_vals.get("reservation_type"):
folio_vals["reservation_type"] = reservation_vals.get("reservation_type")
return folio_vals
def _check_clousure_reason(self, reservation_type, closure_reason_id):
if reservation_type == "out" and not closure_reason_id:
raise ValidationError(
_(
"A closure reason is mandatory when reservation"
" type is 'out of service'"
)
)
def _check_services(self, vals): def _check_services(self, vals):
# If we create a reservation with board service and other service at the same time, # If we create a reservation with board service and other service at the same time,
@@ -2019,6 +2153,47 @@ class PmsReservation(models.Model):
if "board_service_room_id" in vals and "service_ids" in vals: if "board_service_room_id" in vals and "service_ids" in vals:
self._compute_service_ids() self._compute_service_ids()
def get_folios_to_update_channel(self, vals):
folios_to_update_channel = self.env["pms.folio"]
for folio in self.mapped("folio_id"):
if (
any(
res.sale_channel_origin_id == folio.sale_channel_origin_id
for res in self.filtered(lambda r: r.folio_id == folio)
)
and vals["sale_channel_origin_id"] != folio.sale_channel_origin_id.id
and (
("force_update_origin" in vals and vals.get("force_update_origin"))
or len(folio.reservation_ids) == 1
)
):
folios_to_update_channel += folio
return folios_to_update_channel
def get_lines_to_update_channel(self, vals):
lines_to_update_channel = self.env["pms.reservation.line"]
for record in self:
for line in record.reservation_line_ids:
if line.sale_channel_id == record.sale_channel_origin_id and (
vals["sale_channel_origin_id"] != line.sale_channel_id.id
):
lines_to_update_channel += line
return lines_to_update_channel
def get_services_to_update_channel(self, vals):
services_to_update_channel = self.env["pms.service"]
for record in self:
for service in record.service_ids:
if (
service.sale_channel_origin_id == record.sale_channel_origin_id
and (
vals["sale_channel_origin_id"]
!= service.sale_channel_origin_id.id
)
):
services_to_update_channel += service
return services_to_update_channel
def update_prices(self): def update_prices(self):
self.ensure_one() self.ensure_one()
for line in self.reservation_line_ids: for line in self.reservation_line_ids:

View File

@@ -45,8 +45,7 @@ class PmsReservationLine(models.Model):
) )
pms_property_id = fields.Many2one( pms_property_id = fields.Many2one(
string="Property", string="Property",
help="Property with access to the element;" help="Property with access to the element",
" if not set, all properties can access",
readonly=True, readonly=True,
store=True, store=True,
comodel_name="pms.property", comodel_name="pms.property",
@@ -113,6 +112,24 @@ class PmsReservationLine(models.Model):
readonly=False, readonly=False,
compute="_compute_overbooking", compute="_compute_overbooking",
) )
sale_channel_id = fields.Many2one(
string="Sale Channel",
help="Sale Channel through which reservation line was created",
comodel_name="pms.sale.channel",
check_pms_properties=True,
)
default_invoice_to = fields.Many2one(
string="Invoice to",
help="""Indicates the contact to which this line will be
billed by default, if it is not established,
a guest or the generic contact will be used instead""",
readonly=False,
store=True,
compute="_compute_default_invoice_to",
comodel_name="res.partner",
ondelete="restrict",
)
_sql_constraints = [ _sql_constraints = [
( (
"rule_availability", "rule_availability",
@@ -480,9 +497,19 @@ class PmsReservationLine(models.Model):
@api.model_create_multi @api.model_create_multi
def create(self, vals_list): def create(self, vals_list):
for vals in vals_list:
if vals.get("reservation_id") and not vals.get("sale_channel_id"):
reservation = self.env["pms.reservation"].browse(
vals.get("reservation_id")
)
vals["sale_channel_id"] = reservation.sale_channel_origin_id.id
records = super().create(vals_list) records = super().create(vals_list)
for line in records: for line in records:
reservation = line.reservation_id reservation = line.reservation_id
# Set default channel
if not line.sale_channel_id:
line.sale_channel_id = reservation.sale_channel_origin_id.id
# Update quota
self.env["pms.availability.plan"].update_quota( self.env["pms.availability.plan"].update_quota(
pricelist_id=reservation.pricelist_id.id, pricelist_id=reservation.pricelist_id.id,
room_type_id=reservation.room_type_id.id, room_type_id=reservation.room_type_id.id,
@@ -491,6 +518,19 @@ class PmsReservationLine(models.Model):
) )
return records return records
@api.depends("sale_channel_id", "reservation_id.agency_id")
def _compute_default_invoice_to(self):
for record in self:
agency = record.reservation_id.agency_id
if (
agency
and agency.invoice_to_agency == "always"
and agency.sale_channel_id == record.sale_channel_id
):
record.default_invoice_to = agency
elif not record.default_invoice_to:
record.default_invoice_to = False
# Constraints and onchanges # Constraints and onchanges
@api.constrains("date") @api.constrains("date")
def constrains_duplicated_date(self): def constrains_duplicated_date(self):

View File

@@ -146,17 +146,11 @@ class PmsService(models.Model):
("no", "Nothing to Invoice"), ("no", "Nothing to Invoice"),
], ],
) )
channel_type = fields.Selection( sale_channel_origin_id = fields.Many2one(
string="Sales Channel", string="Sale Channel Origin",
help="sales channel through which the service was sold." help="Sale Channel through which service was created, the original",
"It can be 'door', 'mail', 'phone', 'call' or 'web'", comodel_name="pms.sale.channel",
selection=[ check_pms_properties=True,
("door", "Door"),
("mail", "Mail"),
("phone", "Phone"),
("call", "Call Center"),
("web", "Web"),
],
) )
price_subtotal = fields.Monetary( price_subtotal = fields.Monetary(
string="Subtotal", string="Subtotal",
@@ -197,6 +191,17 @@ class PmsService(models.Model):
""", """,
default=False, default=False,
) )
default_invoice_to = fields.Many2one(
string="Invoice to",
help="""Indicates the contact to which this line will be
billed by default, if it is not established,
a guest or the generic contact will be used instead""",
readonly=False,
store=True,
compute="_compute_default_invoice_to",
comodel_name="res.partner",
ondelete="restrict",
)
# Compute and Search methods # Compute and Search methods
@api.depends("product_id") @api.depends("product_id")
@@ -425,6 +430,19 @@ class PmsService(models.Model):
line.discount = record.discount line.discount = record.discount
line.cancel_discount = 0 line.cancel_discount = 0
@api.depends("sale_channel_origin_id", "folio_id.agency_id")
def _compute_default_invoice_to(self):
for record in self:
agency = record.folio_id.agency_id
if (
agency
and agency.invoice_to_agency == "always"
and agency.sale_channel_id == record.sale_channel_origin_id
):
record.default_invoice_to = agency
elif not record.default_invoice_to:
record.default_invoice_to = False
def name_get(self): def name_get(self):
result = [] result = []
for rec in self: for rec in self:
@@ -534,3 +552,49 @@ class PmsService(models.Model):
) )
else: else:
return 0 return 0
@api.model
def create(self, vals):
if vals.get("reservation_id") and not vals.get("sale_channel_origin_id"):
reservation = self.env["pms.reservation"].browse(vals["reservation_id"])
if reservation.sale_channel_origin_id:
vals["sale_channel_origin_id"] = reservation.sale_channel_origin_id.id
elif (
vals.get("folio_id")
and not vals.get("reservation_id")
and not vals.get("sale_channel_origin_id")
):
folio = self.env["pms.folio"].browse(vals["folio_id"])
if folio.sale_channel_origin_id:
vals["sale_channel_origin_id"] = folio.sale_channel_origin_id.id
record = super(PmsService, self).create(vals)
return record
def write(self, vals):
folios_to_update_channel = self.env["pms.folio"]
lines_to_update_channel = self.env["pms.service.line"]
if "sale_channel_origin_id" in vals:
folios_to_update_channel = self.get_folios_to_update_channel(vals)
res = super(PmsService, self).write(vals)
if folios_to_update_channel:
folios_to_update_channel.sale_channel_origin_id = vals[
"sale_channel_origin_id"
]
if lines_to_update_channel:
lines_to_update_channel.sale_channel_id = vals["sale_channel_origin_id"]
return res
def get_folios_to_update_channel(self, vals):
folios_to_update_channel = self.env["pms.folio"]
for folio in self.mapped("folio_id"):
if (
any(
service.sale_channel_origin_id == folio.sale_channel_origin_id
for service in self.filtered(lambda r: r.folio_id == folio)
)
and vals["sale_channel_origin_id"] != folio.sale_channel_origin_id.id
and (len(folio.reservation_ids) == 0)
and (len(folio.service_ids) == 1)
):
folios_to_update_channel += folio
return folios_to_update_channel

View File

@@ -133,6 +133,16 @@ class PmsServiceLine(models.Model):
readonly=False, readonly=False,
store=True, store=True,
) )
default_invoice_to = fields.Many2one(
string="Invoice to",
help="""Indicates the contact to which this line will be
billed by default, if it is not established,
a guest or the generic contact will be used instead""",
comodel_name="res.partner",
store=True,
related="service_id.default_invoice_to",
ondelete="restrict",
)
@api.depends("day_qty", "discount", "price_unit", "tax_ids") @api.depends("day_qty", "discount", "price_unit", "tax_ids")
def _compute_day_amount_service(self): def _compute_day_amount_service(self):

View File

@@ -25,5 +25,5 @@ class ResCompany(models.Model):
string="Check minimum partner data for invoices", string="Check minimum partner data for invoices",
help="""Check minimum partner data for invoices: help="""Check minimum partner data for invoices:
- VAT, name, street, city, country""", - VAT, name, street, city, country""",
default=True, default=False,
) )

View File

@@ -192,22 +192,6 @@ class ResPartner(models.Model):
string="Days from Checkout", string="Days from Checkout",
help="Days from Checkout to generate the invoice", help="Days from Checkout to generate the invoice",
) )
default_invoice_lines = fields.Selection(
string="Invoice...",
help="""Use to preconfigure the sale lines to autoinvoice
for this partner. All (invoice reservations and services),
Only overnights to invoice only the reservations
with overnight and board services(exclude parkings, salon, etc...),
All reservations to include all reservations,
and Services only include services not boards""",
selection=[
("all", "All"),
("overnights", "Only Overnights"),
("reservations", "All reservations"),
("services", "Services"),
],
default="all",
)
vat_document_type = fields.Selection( vat_document_type = fields.Selection(
string="Document Type", string="Document Type",
help="""The vat document type of the partner, help="""The vat document type of the partner,

View File

@@ -40,3 +40,4 @@ from . import test_pms_multiproperty
from . import test_shared_room from . import test_shared_room
# from . import test_automated_mails # from . import test_automated_mails
from . import test_pms_service

View File

@@ -25,7 +25,13 @@ class TestPmsRoomTypeAvailabilityRules(TestPms):
], ],
} }
) )
# pms.sale.channel
self.sale_channel_direct1 = self.env["pms.sale.channel"].create(
{
"name": "Door",
"channel_type": "direct",
}
)
# pms.availability.plan # pms.availability.plan
self.test_room_type_availability1 = self.env["pms.availability.plan"].create( self.test_room_type_availability1 = self.env["pms.availability.plan"].create(
{ {
@@ -164,6 +170,7 @@ class TestPmsRoomTypeAvailabilityRules(TestPms):
"checkout": checkout, "checkout": checkout,
"partner_id": self.partner1.id, "partner_id": self.partner1.id,
"room_type_id": room_type.id, "room_type_id": room_type.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
result = self.test_room_type_availability_rule1.plan_avail result = self.test_room_type_availability_rule1.plan_avail
@@ -209,6 +216,7 @@ class TestPmsRoomTypeAvailabilityRules(TestPms):
"checkout": checkout, "checkout": checkout,
"partner_id": self.partner1.id, "partner_id": self.partner1.id,
"room_type_id": room_type.id, "room_type_id": room_type.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
self.env["pms.reservation"].create( self.env["pms.reservation"].create(
@@ -218,6 +226,7 @@ class TestPmsRoomTypeAvailabilityRules(TestPms):
"checkout": checkout, "checkout": checkout,
"partner_id": self.partner1.id, "partner_id": self.partner1.id,
"room_type_id": room_type.id, "room_type_id": room_type.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
result = self.test_room_type_availability_rule1.plan_avail result = self.test_room_type_availability_rule1.plan_avail
@@ -258,6 +267,7 @@ class TestPmsRoomTypeAvailabilityRules(TestPms):
"checkin": checkin, "checkin": checkin,
"checkout": checkout, "checkout": checkout,
"partner_id": self.partner1.id, "partner_id": self.partner1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
@@ -586,6 +596,7 @@ class TestPmsRoomTypeAvailabilityRules(TestPms):
"room_type_id": self.test_room_type_double.id, "room_type_id": self.test_room_type_double.id,
"pricelist_id": self.pricelist2.id, "pricelist_id": self.pricelist2.id,
"partner_id": self.partner1.id, "partner_id": self.partner1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r1.flush() r1.flush()

View File

@@ -57,9 +57,13 @@ class TestPmsCheckinPartner(TestPms):
"gender": "male", "gender": "male",
} }
) )
self.id_category = self.env["res.partner.id_category"].create( self.id_category = self.env["res.partner.id_category"].search(
{"name": "DNI", "code": "D"} [("code", "=", "D")]
) )
if not self.id_category:
self.id_category = self.env["res.partner.id_category"].create(
{"name": "DNI", "code": "D"}
)
self.env["res.partner.id_number"].create( self.env["res.partner.id_number"].create(
{ {
"category_id": self.id_category.id, "category_id": self.id_category.id,
@@ -68,6 +72,12 @@ class TestPmsCheckinPartner(TestPms):
"partner_id": self.host1.id, "partner_id": self.host1.id,
} }
) )
self.sale_channel_direct1 = self.env["pms.sale.channel"].create(
{
"name": "Door",
"channel_type": "direct",
}
)
reservation_vals = { reservation_vals = {
"checkin": datetime.date.today(), "checkin": datetime.date.today(),
"checkout": datetime.date.today() + datetime.timedelta(days=3), "checkout": datetime.date.today() + datetime.timedelta(days=3),
@@ -75,6 +85,7 @@ class TestPmsCheckinPartner(TestPms):
"partner_id": self.host1.id, "partner_id": self.host1.id,
"adults": 3, "adults": 3,
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
self.reservation_1 = self.env["pms.reservation"].create(reservation_vals) self.reservation_1 = self.env["pms.reservation"].create(reservation_vals)
self.checkin1 = self.env["pms.checkin.partner"].create( self.checkin1 = self.env["pms.checkin.partner"].create(
@@ -1091,6 +1102,7 @@ class TestPmsCheckinPartner(TestPms):
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"partner_name": partner.name, "partner_name": partner.name,
"email": partner.email, "email": partner.email,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
# ACT # ACT
@@ -1133,6 +1145,7 @@ class TestPmsCheckinPartner(TestPms):
"room_type_id": self.room_type1.id, "room_type_id": self.room_type1.id,
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"partner_name": partner.name, "partner_name": partner.name,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
# ACT # ACT
@@ -1178,6 +1191,7 @@ class TestPmsCheckinPartner(TestPms):
"room_type_id": self.room_type1.id, "room_type_id": self.room_type1.id,
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"partner_name": partner.name, "partner_name": partner.name,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
checkin = self.env["pms.checkin.partner"].create( checkin = self.env["pms.checkin.partner"].create(
@@ -1239,6 +1253,7 @@ class TestPmsCheckinPartner(TestPms):
"room_type_id": self.room_type1.id, "room_type_id": self.room_type1.id,
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"partner_name": partner1.name, "partner_name": partner1.name,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
@@ -1286,6 +1301,7 @@ class TestPmsCheckinPartner(TestPms):
"room_type_id": self.room_type1.id, "room_type_id": self.room_type1.id,
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"partner_name": "Rosa Costa", "partner_name": "Rosa Costa",
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
checkin = self.env["pms.checkin.partner"].create( checkin = self.env["pms.checkin.partner"].create(
@@ -1539,6 +1555,7 @@ class TestPmsCheckinPartner(TestPms):
"partner_id": self.host1.id, "partner_id": self.host1.id,
"adults": 1, "adults": 1,
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
checkin_partner_id = self.reservation.checkin_partner_ids[0] checkin_partner_id = self.reservation.checkin_partner_ids[0]
@@ -1596,6 +1613,7 @@ class TestPmsCheckinPartner(TestPms):
"partner_id": self.host1.id, "partner_id": self.host1.id,
"adults": 1, "adults": 1,
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
checkin_partner_id = self.reservation.checkin_partner_ids[0] checkin_partner_id = self.reservation.checkin_partner_ids[0]

View File

@@ -55,6 +55,14 @@ class TestPmsFolio(TestPms):
) )
journals.allowed_pms_payments = True journals.allowed_pms_payments = True
# create sale channel direct
self.sale_channel_direct1 = self.env["pms.sale.channel"].create(
{
"name": "Door",
"channel_type": "direct",
}
)
def create_sale_channel_scenario(self): def create_sale_channel_scenario(self):
""" """
Method to simplified scenario on sale channel tests: Method to simplified scenario on sale channel tests:
@@ -410,6 +418,7 @@ class TestPmsFolio(TestPms):
"adults": 2, "adults": 2,
"partner_id": self.env.ref("base.res_partner_12").id, "partner_id": self.env.ref("base.res_partner_12").id,
"room_type_id": self.demo_room_type_double.id, "room_type_id": self.demo_room_type_double.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
@@ -456,6 +465,7 @@ class TestPmsFolio(TestPms):
"adults": 2, "adults": 2,
"partner_id": self.env.ref("base.res_partner_12").id, "partner_id": self.env.ref("base.res_partner_12").id,
"room_type_id": self.demo_room_type_double.id, "room_type_id": self.demo_room_type_double.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
@@ -542,6 +552,7 @@ class TestPmsFolio(TestPms):
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"pricelist_id": self.pricelist1.id, "pricelist_id": self.pricelist1.id,
"reservation_type": "staff", "reservation_type": "staff",
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
# ASSERT # ASSERT
@@ -582,6 +593,7 @@ class TestPmsFolio(TestPms):
"pricelist_id": self.pricelist1.id, "pricelist_id": self.pricelist1.id,
"reservation_type": "out", "reservation_type": "out",
"closure_reason_id": closure_reason.id, "closure_reason_id": closure_reason.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
# ASSERT # ASSERT
@@ -1108,3 +1120,419 @@ class TestPmsFolio(TestPms):
folio1.partner_invoice_ids.ids, folio1.partner_invoice_ids.ids,
"A checkin partner was not added as a billing contact", "A checkin partner was not added as a billing contact",
) )
@freeze_time("2001-10-10")
def test_folio_sale_channel_origin_in_reservation(self):
"""
Check that the reservation has sale_channel_origin_id
as the folio sale_channel_origin_id in
which reservation was created
When a reservation is created on a folio
that already has a sale_channel_origin
that reservation will have the same sale_channel_origin
"""
# ARRANGE
partner1 = self.env["res.partner"].create({"name": "partner1"})
folio1 = self.env["pms.folio"].create(
{
"pms_property_id": self.pms_property1.id,
"partner_name": partner1.name,
"sale_channel_origin_id": self.sale_channel_direct1.id,
}
)
# ACT
reservation1 = self.env["pms.reservation"].create(
{
"checkin": datetime.datetime.now(),
"checkout": datetime.datetime.now() + datetime.timedelta(days=1),
"adults": 2,
"room_type_id": self.room_type_double.id,
"folio_id": folio1.id,
}
)
# ASSERT
self.assertEqual(
reservation1.sale_channel_origin_id.id,
folio1.sale_channel_origin_id.id,
"Sale channel of reservation must be the same that it folio",
)
@freeze_time("2001-10-19")
def test_folio_sale_channel_ids(self):
"""
Check if sale_channel_ids of folio correspond to
sale_channel_origin_id of its reservations at the
time of creating a new reservation in the folio
"""
# ARRANGE
sale_channel_phone = self.env["pms.sale.channel"].create(
{
"name": "phone",
"channel_type": "direct",
}
)
partner1 = self.env["res.partner"].create({"name": "partner1"})
folio1 = self.env["pms.folio"].create(
{
"pms_property_id": self.pms_property1.id,
"partner_name": partner1.name,
"sale_channel_origin_id": self.sale_channel_direct1.id,
}
)
self.env["pms.reservation"].create(
{
"checkin": datetime.datetime.now(),
"checkout": datetime.datetime.now() + datetime.timedelta(days=1),
"adults": 2,
"room_type_id": self.room_type_double.id,
"folio_id": folio1.id,
}
)
self.env["pms.reservation"].create(
{
"checkin": datetime.datetime.now(),
"checkout": datetime.datetime.now() + datetime.timedelta(days=1),
"adults": 2,
"room_type_id": self.room_type_double.id,
"folio_id": folio1.id,
"sale_channel_origin_id": sale_channel_phone.id,
}
)
# ACT
expected_sale_channels = []
for reservation in folio1.reservation_ids:
expected_sale_channels.append(reservation.sale_channel_origin_id.id)
# ASSERT
self.assertItemsEqual(
folio1.sale_channel_ids.ids,
list(set(expected_sale_channels)),
"Sale_channel_ids of folio must be the same as "
"sale_channel_origin of its reservation ",
)
@freeze_time("2001-10-22")
def test_folio_sale_channel_ids_reservations_several_origin(self):
"""
Check that sale_channel_ids of folio correspond to sale_channel_origin_id
of its reservations
In this case, folio1 has two reservations(reservation1, reservation2)
with the same sale_channel_origin.
sale_channel_origin_id sale_channel_ids
-------------------------
Folio1 --------> sale_channel_direct1 || sale_channel_direct1
reservation1 --> sale_channel_direct1
reservation2 --> sale_channel_direct1
Then, reservation2 update sale_channel_origin_id for a diferent one. So the folio
has several reservations with different sale_channel_origin_id.
It should be noted that the check would force having to update
the folio sale_channel_origin_id (force_update_origin) isn't marked.
Expected result:
sale_channel_origin_id sale_channel_ids
----------------------
Folio1 --------> sale_channel_direct1 | (sale_channel_direct1, sale_channel_phone)
reservation1 --> sale_channel_direct1
reservation2 --> sale_channel_phone
In this test case, sale_channel_ids will be checked
"""
# ARRANGE
sale_channel_phone = self.env["pms.sale.channel"].create(
{
"name": "phone",
"channel_type": "direct",
}
)
partner1 = self.env["res.partner"].create({"name": "partner1"})
folio1 = self.env["pms.folio"].create(
{
"pms_property_id": self.pms_property1.id,
"partner_name": partner1.name,
"sale_channel_origin_id": self.sale_channel_direct1.id,
}
)
self.env["pms.reservation"].create(
{
"checkin": datetime.datetime.now(),
"checkout": datetime.datetime.now() + datetime.timedelta(days=1),
"adults": 2,
"room_type_id": self.room_type_double.id,
"folio_id": folio1.id,
}
)
reservation2 = self.env["pms.reservation"].create(
{
"checkin": datetime.datetime.now(),
"checkout": datetime.datetime.now() + datetime.timedelta(days=1),
"adults": 2,
"room_type_id": self.room_type_double.id,
"folio_id": folio1.id,
}
)
# ACT
reservation_vals = {
"sale_channel_origin_id": sale_channel_phone.id,
"force_update_origin": False,
}
reservation2.write(reservation_vals)
expected_sale_channels = []
for reservation in folio1.reservation_ids:
expected_sale_channels.append(reservation.sale_channel_origin_id.id)
# ASSERT
self.assertItemsEqual(
folio1.sale_channel_ids.ids,
list(set(expected_sale_channels)),
"Sale_channel_ids of folio must be the same as "
"sale_channel_origin of its reservation ",
)
@freeze_time("2001-10-22")
def test_sale_channel_origin_id_reservation_not_update_origin(self):
"""
Check that sale_channel_origin_id of folio doesn't change
when sale_channel_origin_id of one of its reservations is updated
but the check isn't checked
In this case, folio1 has two reservations(reservation1, reservation2)
with the same sale_channel_origin.
sale_channel_origin_id
-------------------------
Folio1 --------> sale_channel_direct1
reservation1 --> sale_channel_direct1
reservation2 --> sale_channel_direct1
Then, reservation2 update sale_channel_origin_id for a diferent one. So the folio
has several reservations with different sale_channel_origin_id.
And the check would force having to update
the folio sale_channel_origin_id (force_update_origin) isn't marked.
So sale_channel_origin_id of folio shouldn't change.
Expected result:
sale_channel_origin_id
-------------------------
Folio1 --------> sale_channel_direct1
reservation1 --> sale_channel_direct1
reservation2 --> sale_channel_phone
In this test case, sale_channel_origin_id of folio will be checked
"""
# ARRANGE
sale_channel_phone = self.env["pms.sale.channel"].create(
{
"name": "phone",
"channel_type": "direct",
}
)
partner1 = self.env["res.partner"].create({"name": "partner1"})
folio1 = self.env["pms.folio"].create(
{
"pms_property_id": self.pms_property1.id,
"partner_name": partner1.name,
"sale_channel_origin_id": self.sale_channel_direct1.id,
}
)
self.env["pms.reservation"].create(
{
"checkin": datetime.datetime.now(),
"checkout": datetime.datetime.now() + datetime.timedelta(days=1),
"adults": 2,
"room_type_id": self.room_type_double.id,
"folio_id": folio1.id,
}
)
reservation2 = self.env["pms.reservation"].create(
{
"checkin": datetime.datetime.now(),
"checkout": datetime.datetime.now() + datetime.timedelta(days=1),
"adults": 2,
"room_type_id": self.room_type_double.id,
"folio_id": folio1.id,
}
)
# ACT
reservation_vals = {
"sale_channel_origin_id": sale_channel_phone.id,
"force_update_origin": False,
}
reservation2.write(reservation_vals)
# ASSERT
self.assertNotEqual(
folio1.sale_channel_origin_id,
reservation2.sale_channel_origin_id,
"Sale_channel_origin_id of folio shouldn't be the same as "
"sale_channel_origin of reservation2",
)
@freeze_time("2001-10-25")
def test_sale_channel_origin_id_reservation_update_origin(self):
"""
Check that sale_channel_origin_id of the folio changes when
you change sale_channel_origin_id of one of its reservations
and check that forces the update of sale_channel_origin_id of folio
sale_channel_origin_id
-------------------------
Folio1 --------> sale_channel_direct1
reservation1 --> sale_channel_direct1
reservation2 --> sale_channel_direct1
Then, reservation2 update sale_channel_origin_id for a diferent one. So the folio
has several reservations with different sale_channel_origin_id.
And the check would force having to update
the folio sale_channel_origin_id (force_update_origin) is marked.
So sale_channel_origin_id of folio must change.
Expected result:
sale_channel_origin_id
-------------------------
Folio1 --------> sale_channel_phone
reservation1 --> sale_channel_phone
reservation2 --> sale_channel_phone
In this test case, sale_channel_origin_id of folio1 will be checked
"""
# ARRANGE
sale_channel_phone = self.env["pms.sale.channel"].create(
{
"name": "phone",
"channel_type": "direct",
}
)
partner1 = self.env["res.partner"].create({"name": "partner1"})
folio1 = self.env["pms.folio"].create(
{
"pms_property_id": self.pms_property1.id,
"partner_name": partner1.name,
"sale_channel_origin_id": self.sale_channel_direct1.id,
}
)
self.env["pms.reservation"].create(
{
"checkin": datetime.datetime.now(),
"checkout": datetime.datetime.now() + datetime.timedelta(days=1),
"adults": 2,
"room_type_id": self.room_type_double.id,
"folio_id": folio1.id,
}
)
reservation2 = self.env["pms.reservation"].create(
{
"checkin": datetime.datetime.now(),
"checkout": datetime.datetime.now() + datetime.timedelta(days=1),
"adults": 2,
"room_type_id": self.room_type_double.id,
"folio_id": folio1.id,
}
)
# ACT
reservation_vals = {
"sale_channel_origin_id": sale_channel_phone.id,
"force_update_origin": True,
}
reservation2.write(reservation_vals)
# ASSERT
self.assertEqual(
folio1.sale_channel_origin_id,
reservation2.sale_channel_origin_id,
"Sale_channel_origin_id of folio should be updated",
)
@freeze_time("2001-10-25")
def test_sale_channel_origin_id_reservation_update_reservations(self):
"""
Check that sale_channel_origin_id of a reservation changes when
another reservation of the same folio changes sale_channel_origin_id
and marks the check.
By changing sale_channel_origin_ id of a reservation and marking the check
that forces the update, changes both sale_channel_origin of folio and
sale_channel_origin of reservations that had the same
sale_channel_origin_id
-------------------------
Folio1 --------> sale_channel_direct1
reservation1 --> sale_channel_direct1
reservation2 --> sale_channel_direct1
Then, reservation2 update sale_channel_origin_id for a diferent one.
And the check would force having to update
the folio sale_channel_origin_id (force_update_origin) is marked.
So sale_channel_origin_id of folio and other reservations with the same
sale_channel_origin must change.
Expected result:
sale_channel_origin_id
-------------------------
Folio1 --------> sale_channel_phone
reservation1 --> sale_channel_phone
reservation2 --> sale_channel_phone
In this test case, sale_channel_origin_id of reservation1 will be checked
"""
# ARRANGE
sale_channel_phone = self.env["pms.sale.channel"].create(
{
"name": "phone",
"channel_type": "direct",
}
)
partner1 = self.env["res.partner"].create({"name": "partner1"})
folio1 = self.env["pms.folio"].create(
{
"pms_property_id": self.pms_property1.id,
"partner_name": partner1.name,
"sale_channel_origin_id": self.sale_channel_direct1.id,
}
)
reservation1 = self.env["pms.reservation"].create(
{
"checkin": datetime.datetime.now(),
"checkout": datetime.datetime.now() + datetime.timedelta(days=1),
"adults": 2,
"room_type_id": self.room_type_double.id,
"folio_id": folio1.id,
}
)
reservation2 = self.env["pms.reservation"].create(
{
"checkin": datetime.datetime.now(),
"checkout": datetime.datetime.now() + datetime.timedelta(days=1),
"adults": 2,
"room_type_id": self.room_type_double.id,
"folio_id": folio1.id,
}
)
# ACT
reservation_vals = {
"sale_channel_origin_id": sale_channel_phone.id,
"force_update_origin": True,
}
reservation2.write(reservation_vals)
# ASSERT
self.assertEqual(
reservation1.sale_channel_origin_id,
reservation2.sale_channel_origin_id,
"sale_channel_origin_id of reservations that coincided "
"with sale_channel_origin_id of folio de should be updated",
)

View File

@@ -84,6 +84,14 @@ class TestPmsFolioInvoice(TestPms):
} }
) )
# create a sale channel
self.sale_channel_direct1 = self.env["pms.sale.channel"].create(
{
"name": "Door",
"channel_type": "direct",
}
)
def create_configuration_accounting_scenario(self): def create_configuration_accounting_scenario(self):
""" """
Method to simplified scenario to payments and accounting: Method to simplified scenario to payments and accounting:
@@ -153,6 +161,7 @@ class TestPmsFolioInvoice(TestPms):
"adults": 2, "adults": 2,
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.partner_id.id, "partner_id": self.partner_id.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
state_expected = "invoiced" state_expected = "invoiced"
@@ -183,6 +192,7 @@ class TestPmsFolioInvoice(TestPms):
"adults": 2, "adults": 2,
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.partner_id.id, "partner_id": self.partner_id.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
dict_lines = dict() dict_lines = dict()
@@ -208,6 +218,7 @@ class TestPmsFolioInvoice(TestPms):
"adults": 2, "adults": 2,
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.partner_id.id, "partner_id": self.partner_id.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
dict_lines = dict() dict_lines = dict()
@@ -228,7 +239,6 @@ class TestPmsFolioInvoice(TestPms):
r1.folio_id.invoice_status, r1.folio_id.invoice_status,
"The status after a partial invoicing is not correct", "The status after a partial invoicing is not correct",
) )
# qty to 2 to 1st folio sale line # qty to 2 to 1st folio sale line
dict_lines[ dict_lines[
r1.folio_id.sale_line_ids.filtered(lambda l: not l.display_type)[0].id r1.folio_id.sale_line_ids.filtered(lambda l: not l.display_type)[0].id
@@ -260,6 +270,7 @@ class TestPmsFolioInvoice(TestPms):
"adults": 2, "adults": 2,
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.env.ref("base.res_partner_12").id, "partner_id": self.env.ref("base.res_partner_12").id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
tcs = [-1, 0, 3] tcs = [-1, 0, 3]
@@ -294,6 +305,7 @@ class TestPmsFolioInvoice(TestPms):
"adults": 2, "adults": 2,
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.partner_id.id, "partner_id": self.partner_id.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
@@ -321,6 +333,7 @@ class TestPmsFolioInvoice(TestPms):
"adults": 2, "adults": 2,
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.partner_id.id, "partner_id": self.partner_id.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
qty_to_invoice_expected = sum( qty_to_invoice_expected = sum(
@@ -348,6 +361,7 @@ class TestPmsFolioInvoice(TestPms):
"adults": 2, "adults": 2,
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.partner_id.id, "partner_id": self.partner_id.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r1.folio_id._create_invoices() r1.folio_id._create_invoices()
@@ -376,6 +390,7 @@ class TestPmsFolioInvoice(TestPms):
"adults": 2, "adults": 2,
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.partner_id.id, "partner_id": self.partner_id.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
@@ -418,6 +433,7 @@ class TestPmsFolioInvoice(TestPms):
"adults": 2, "adults": 2,
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.partner_id.id, "partner_id": self.partner_id.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
@@ -461,6 +477,7 @@ class TestPmsFolioInvoice(TestPms):
"adults": 2, "adults": 2,
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.partner_id.id, "partner_id": self.partner_id.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
@@ -523,6 +540,7 @@ class TestPmsFolioInvoice(TestPms):
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.partner_id.id, "partner_id": self.partner_id.id,
"board_service_room_id": self.board_service_room_type1.id, "board_service_room_id": self.board_service_room_type1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
dict_lines = dict() dict_lines = dict()
@@ -578,6 +596,7 @@ class TestPmsFolioInvoice(TestPms):
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.partner_id.id, "partner_id": self.partner_id.id,
"board_service_room_id": self.board_service_room_type1.id, "board_service_room_id": self.board_service_room_type1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
dict_lines = dict() dict_lines = dict()
@@ -634,6 +653,7 @@ class TestPmsFolioInvoice(TestPms):
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.partner_id.id, "partner_id": self.partner_id.id,
"board_service_room_id": self.board_service_room_type1.id, "board_service_room_id": self.board_service_room_type1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
dict_lines = dict() dict_lines = dict()
@@ -673,13 +693,14 @@ class TestPmsFolioInvoice(TestPms):
"adults": 2, "adults": 2,
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.partner_id.id, "partner_id": self.partner_id.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
# ASSERT # ASSERT
self.assertEqual( self.assertIn(
datetime.date.today() + datetime.timedelta(days=3), datetime.date.today() + datetime.timedelta(days=3),
self.reservation1.folio_id.autoinvoice_date, self.reservation1.folio_id.mapped("sale_line_ids.autoinvoice_date"),
"The autoinvoice date in folio with property checkout policy is wrong", "The autoinvoice date in folio with property checkout policy is wrong",
) )
@@ -704,20 +725,24 @@ class TestPmsFolioInvoice(TestPms):
"adults": 2, "adults": 2,
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.partner_id.id, "partner_id": self.partner_id.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
self.reservation1.reservation_line_ids.default_invoice_to = self.partner_id
# ASSERT # ASSERT
self.assertEqual( self.assertEqual(
datetime.date.today() + datetime.timedelta(days=5), datetime.date.today() + datetime.timedelta(days=5),
self.reservation1.folio_id.autoinvoice_date, self.reservation1.folio_id.sale_line_ids.filtered(
lambda l: l.invoice_status == "to_invoice"
)[0].autoinvoice_date,
"The autoinvoice date in folio with property checkout policy is wrong", "The autoinvoice date in folio with property checkout policy is wrong",
) )
def test_autoinvoice_paid_folio_overnights_partner_policy(self): def test_autoinvoice_paid_folio_overnights_partner_policy(self):
""" """
Test create and invoice the cron by partner preconfig automation Test create and invoice the cron by partner preconfig automation
with only overnights reservations (included board services) with partner setted as default invoiced to in reservation lines
-------------------------------------- --------------------------------------
Set partner invoicing_policy to checkout, create a reservation Set partner invoicing_policy to checkout, create a reservation
with room, board service and normal service, run autoinvoicing with room, board service and normal service, run autoinvoicing
@@ -727,9 +752,18 @@ class TestPmsFolioInvoice(TestPms):
""" """
# ARRANGE # ARRANGE
self.create_configuration_accounting_scenario() self.create_configuration_accounting_scenario()
self.partner_id2 = self.env["res.partner"].create(
{
"name": "Sara",
"vat": "ES123456787",
"country_id": self.env.ref("base.es").id,
"city": "Madrid",
"zip": "28013",
"street": "Street 321",
}
)
self.partner_id.invoicing_policy = "checkout" self.partner_id.invoicing_policy = "checkout"
self.partner_id.margin_days_autoinvoice = 0 self.partner_id.margin_days_autoinvoice = 0
self.partner_id.default_invoice_lines = "overnights"
self.product1 = self.env["product.product"].create( self.product1 = self.env["product.product"].create(
{ {
"name": "Test Product 1", "name": "Test Product 1",
@@ -773,8 +807,9 @@ class TestPmsFolioInvoice(TestPms):
"checkout": datetime.date.today(), "checkout": datetime.date.today(),
"adults": 2, "adults": 2,
"room_type_id": self.demo_room_type_double.id, "room_type_id": self.demo_room_type_double.id,
"partner_id": self.partner_id.id, "partner_id": self.partner_id2.id,
"board_service_room_id": self.board_service_room_type1.id, "board_service_room_id": self.board_service_room_type1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
self.service = self.env["pms.service"].create( self.service = self.env["pms.service"].create(
@@ -786,6 +821,11 @@ class TestPmsFolioInvoice(TestPms):
) )
folio = self.reservation1.folio_id folio = self.reservation1.folio_id
reservation1 = self.reservation1 reservation1 = self.reservation1
reservation1.reservation_line_ids.default_invoice_to = self.partner_id
reservation1.service_ids.filtered(
"is_board_service"
).default_invoice_to = self.partner_id
folio.do_payment( folio.do_payment(
journal=self.env["account.journal"].browse( journal=self.env["account.journal"].browse(
reservation1.folio_id.pms_property_id._get_payment_methods().ids[0] reservation1.folio_id.pms_property_id._get_payment_methods().ids[0]
@@ -826,7 +866,6 @@ class TestPmsFolioInvoice(TestPms):
# ARRANGE # ARRANGE
self.partner_id.invoicing_policy = "checkout" self.partner_id.invoicing_policy = "checkout"
self.partner_id.margin_days_autoinvoice = 0 self.partner_id.margin_days_autoinvoice = 0
self.partner_id.default_invoice_lines = "overnights"
self.product1 = self.env["product.product"].create( self.product1 = self.env["product.product"].create(
{ {
"name": "Test Product 1", "name": "Test Product 1",
@@ -872,6 +911,7 @@ class TestPmsFolioInvoice(TestPms):
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.partner_id.id, "partner_id": self.partner_id.id,
"board_service_room_id": self.board_service_room_type1.id, "board_service_room_id": self.board_service_room_type1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
self.service = self.env["pms.service"].create( self.service = self.env["pms.service"].create(

View File

@@ -81,6 +81,13 @@ class TestPmsFolioSaleLine(TestPms):
} }
) )
self.sale_channel_direct1 = self.env["pms.sale.channel"].create(
{
"name": "Door",
"channel_type": "direct",
}
)
# RESERVATION LINES # RESERVATION LINES
def test_comp_fsl_rooms_all_same_group(self): def test_comp_fsl_rooms_all_same_group(self):
""" """
@@ -129,6 +136,7 @@ class TestPmsFolioSaleLine(TestPms):
"adults": 2, "adults": 2,
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.env.ref("base.res_partner_12").id, "partner_id": self.env.ref("base.res_partner_12").id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
@@ -160,6 +168,7 @@ class TestPmsFolioSaleLine(TestPms):
"adults": 2, "adults": 2,
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.env.ref("base.res_partner_12").id, "partner_id": self.env.ref("base.res_partner_12").id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
@@ -196,6 +205,7 @@ class TestPmsFolioSaleLine(TestPms):
"adults": 2, "adults": 2,
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.env.ref("base.res_partner_12").id, "partner_id": self.env.ref("base.res_partner_12").id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
@@ -234,6 +244,7 @@ class TestPmsFolioSaleLine(TestPms):
"adults": 2, "adults": 2,
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.env.ref("base.res_partner_12").id, "partner_id": self.env.ref("base.res_partner_12").id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
@@ -268,6 +279,7 @@ class TestPmsFolioSaleLine(TestPms):
"adults": 2, "adults": 2,
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.env.ref("base.res_partner_12").id, "partner_id": self.env.ref("base.res_partner_12").id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
@@ -304,6 +316,7 @@ class TestPmsFolioSaleLine(TestPms):
"adults": 2, "adults": 2,
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.env.ref("base.res_partner_12").id, "partner_id": self.env.ref("base.res_partner_12").id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r_test.flush() r_test.flush()
@@ -342,6 +355,7 @@ class TestPmsFolioSaleLine(TestPms):
"adults": 2, "adults": 2,
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.env.ref("base.res_partner_12").id, "partner_id": self.env.ref("base.res_partner_12").id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r_test.flush() r_test.flush()
@@ -383,6 +397,7 @@ class TestPmsFolioSaleLine(TestPms):
"adults": 2, "adults": 2,
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.env.ref("base.res_partner_12").id, "partner_id": self.env.ref("base.res_partner_12").id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r_test.flush() r_test.flush()
@@ -426,6 +441,7 @@ class TestPmsFolioSaleLine(TestPms):
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.env.ref("base.res_partner_12").id, "partner_id": self.env.ref("base.res_partner_12").id,
"board_service_room_id": self.board_service_room_type.id, "board_service_room_id": self.board_service_room_type.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
@@ -464,6 +480,7 @@ class TestPmsFolioSaleLine(TestPms):
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.env.ref("base.res_partner_12").id, "partner_id": self.env.ref("base.res_partner_12").id,
"board_service_room_id": self.board_service_room_type.id, "board_service_room_id": self.board_service_room_type.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r_test.service_ids[0].service_line_ids[0].price_unit = 1.0 r_test.service_ids[0].service_line_ids[0].price_unit = 1.0
@@ -503,6 +520,7 @@ class TestPmsFolioSaleLine(TestPms):
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.env.ref("base.res_partner_12").id, "partner_id": self.env.ref("base.res_partner_12").id,
"board_service_room_id": self.board_service_room_type.id, "board_service_room_id": self.board_service_room_type.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
@@ -545,6 +563,7 @@ class TestPmsFolioSaleLine(TestPms):
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.env.ref("base.res_partner_12").id, "partner_id": self.env.ref("base.res_partner_12").id,
"board_service_room_id": self.board_service_room_type.id, "board_service_room_id": self.board_service_room_type.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
@@ -586,6 +605,7 @@ class TestPmsFolioSaleLine(TestPms):
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.env.ref("base.res_partner_12").id, "partner_id": self.env.ref("base.res_partner_12").id,
"board_service_room_id": self.board_service_room_type.id, "board_service_room_id": self.board_service_room_type.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
@@ -628,6 +648,7 @@ class TestPmsFolioSaleLine(TestPms):
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.env.ref("base.res_partner_12").id, "partner_id": self.env.ref("base.res_partner_12").id,
"board_service_room_id": self.board_service_room_type.id, "board_service_room_id": self.board_service_room_type.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
previous_folio_board_service_sale_line = r_test.folio_id.sale_line_ids.filtered( previous_folio_board_service_sale_line = r_test.folio_id.sale_line_ids.filtered(
@@ -670,6 +691,7 @@ class TestPmsFolioSaleLine(TestPms):
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.env.ref("base.res_partner_12").id, "partner_id": self.env.ref("base.res_partner_12").id,
"board_service_room_id": self.board_service_room_type.id, "board_service_room_id": self.board_service_room_type.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
@@ -713,6 +735,7 @@ class TestPmsFolioSaleLine(TestPms):
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.env.ref("base.res_partner_12").id, "partner_id": self.env.ref("base.res_partner_12").id,
"board_service_room_id": self.board_service_room_type.id, "board_service_room_id": self.board_service_room_type.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
@@ -756,6 +779,7 @@ class TestPmsFolioSaleLine(TestPms):
"adults": 2, "adults": 2,
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.env.ref("base.res_partner_12").id, "partner_id": self.env.ref("base.res_partner_12").id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
# ACT # ACT
@@ -797,6 +821,7 @@ class TestPmsFolioSaleLine(TestPms):
"adults": 2, "adults": 2,
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.env.ref("base.res_partner_12").id, "partner_id": self.env.ref("base.res_partner_12").id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r_test.service_ids = [(4, self.extra_service.id)] r_test.service_ids = [(4, self.extra_service.id)]
@@ -841,6 +866,7 @@ class TestPmsFolioSaleLine(TestPms):
"adults": 2, "adults": 2,
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.env.ref("base.res_partner_12").id, "partner_id": self.env.ref("base.res_partner_12").id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r_test.service_ids = [(4, self.extra_service.id)] r_test.service_ids = [(4, self.extra_service.id)]
@@ -886,6 +912,7 @@ class TestPmsFolioSaleLine(TestPms):
"adults": 2, "adults": 2,
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.env.ref("base.res_partner_12").id, "partner_id": self.env.ref("base.res_partner_12").id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r_test.service_ids = [(4, self.extra_service.id)] r_test.service_ids = [(4, self.extra_service.id)]
@@ -929,6 +956,7 @@ class TestPmsFolioSaleLine(TestPms):
"adults": 2, "adults": 2,
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.env.ref("base.res_partner_12").id, "partner_id": self.env.ref("base.res_partner_12").id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r_test.service_ids = [(4, self.extra_service.id)] r_test.service_ids = [(4, self.extra_service.id)]
@@ -973,6 +1001,7 @@ class TestPmsFolioSaleLine(TestPms):
"adults": 2, "adults": 2,
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.env.ref("base.res_partner_12").id, "partner_id": self.env.ref("base.res_partner_12").id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r_test.service_ids = [(4, self.extra_service.id)] r_test.service_ids = [(4, self.extra_service.id)]
@@ -1016,6 +1045,7 @@ class TestPmsFolioSaleLine(TestPms):
"adults": 2, "adults": 2,
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.env.ref("base.res_partner_12").id, "partner_id": self.env.ref("base.res_partner_12").id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r_test.service_ids = [(4, self.extra_service.id)] r_test.service_ids = [(4, self.extra_service.id)]
@@ -1066,6 +1096,7 @@ class TestPmsFolioSaleLine(TestPms):
"adults": 2, "adults": 2,
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.env.ref("base.res_partner_12").id, "partner_id": self.env.ref("base.res_partner_12").id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r_test.service_ids = [(4, self.extra_service.id)] r_test.service_ids = [(4, self.extra_service.id)]
@@ -1114,6 +1145,7 @@ class TestPmsFolioSaleLine(TestPms):
"adults": 2, "adults": 2,
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.env.ref("base.res_partner_12").id, "partner_id": self.env.ref("base.res_partner_12").id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
@@ -1160,6 +1192,7 @@ class TestPmsFolioSaleLine(TestPms):
"adults": 2, "adults": 2,
"room_type_id": self.room_type_double.id, "room_type_id": self.room_type_double.id,
"partner_id": self.env.ref("base.res_partner_12").id, "partner_id": self.env.ref("base.res_partner_12").id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
@@ -1212,6 +1245,7 @@ class TestPmsFolioSaleLine(TestPms):
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"pricelist_id": self.pricelist1.id, "pricelist_id": self.pricelist1.id,
"reservation_type": "staff", "reservation_type": "staff",
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
# ASSERT # ASSERT
@@ -1251,6 +1285,7 @@ class TestPmsFolioSaleLine(TestPms):
"pricelist_id": self.pricelist1.id, "pricelist_id": self.pricelist1.id,
"reservation_type": "out", "reservation_type": "out",
"closure_reason_id": closure_reason.id, "closure_reason_id": closure_reason.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
# ASSERT # ASSERT

View File

@@ -828,12 +828,19 @@ class TestPmsMultiproperty(TestPms):
"email": "miguel@example.com", "email": "miguel@example.com",
} }
) )
self.sale_channel_direct1 = self.env["pms.sale.channel"].create(
{
"name": "Door",
"channel_type": "direct",
}
)
self.reservation1 = self.env["pms.reservation"].create( self.reservation1 = self.env["pms.reservation"].create(
{ {
"checkin": fields.date.today(), "checkin": fields.date.today(),
"checkout": fields.date.today() + datetime.timedelta(days=1), "checkout": fields.date.today() + datetime.timedelta(days=1),
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"partner_id": host1.id, "partner_id": host1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )

View File

@@ -83,6 +83,14 @@ class TestPmsPricelist(TestPms):
self.partner1 = self.env["res.partner"].create({"name": "Carles"}) self.partner1 = self.env["res.partner"].create({"name": "Carles"})
# create a sale channel
self.sale_channel_direct1 = self.env["pms.sale.channel"].create(
{
"name": "Door",
"channel_type": "direct",
}
)
@freeze_time("2000-01-01") @freeze_time("2000-01-01")
def test_board_service_pricelist_item_apply_sale_dates(self): def test_board_service_pricelist_item_apply_sale_dates(self):
""" """
@@ -120,6 +128,7 @@ class TestPmsPricelist(TestPms):
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"pricelist_id": self.pricelist2.id, "pricelist_id": self.pricelist2.id,
"board_service_room_id": self.board_service_room_type1.id, "board_service_room_id": self.board_service_room_type1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
# ASSERT # ASSERT
@@ -167,6 +176,7 @@ class TestPmsPricelist(TestPms):
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"pricelist_id": self.pricelist2.id, "pricelist_id": self.pricelist2.id,
"board_service_room_id": self.board_service_room_type1.id, "board_service_room_id": self.board_service_room_type1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
# ASSERT # ASSERT
@@ -211,6 +221,7 @@ class TestPmsPricelist(TestPms):
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"pricelist_id": self.pricelist2.id, "pricelist_id": self.pricelist2.id,
"board_service_room_id": self.board_service_room_type1.id, "board_service_room_id": self.board_service_room_type1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
# ASSERT # ASSERT
@@ -259,6 +270,7 @@ class TestPmsPricelist(TestPms):
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"pricelist_id": self.pricelist2.id, "pricelist_id": self.pricelist2.id,
"board_service_room_id": self.board_service_room_type1.id, "board_service_room_id": self.board_service_room_type1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
# ASSERT # ASSERT
@@ -305,6 +317,7 @@ class TestPmsPricelist(TestPms):
"preferred_room_id": self.room1.id, "preferred_room_id": self.room1.id,
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"pricelist_id": self.pricelist2.id, "pricelist_id": self.pricelist2.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
# ASSERT # ASSERT
@@ -351,6 +364,7 @@ class TestPmsPricelist(TestPms):
"preferred_room_id": self.room1.id, "preferred_room_id": self.room1.id,
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"pricelist_id": self.pricelist2.id, "pricelist_id": self.pricelist2.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
# ASSERT # ASSERT
@@ -393,6 +407,7 @@ class TestPmsPricelist(TestPms):
"preferred_room_id": self.room1.id, "preferred_room_id": self.room1.id,
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"pricelist_id": self.pricelist2.id, "pricelist_id": self.pricelist2.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
# ASSERT # ASSERT
@@ -439,6 +454,7 @@ class TestPmsPricelist(TestPms):
"preferred_room_id": self.room1.id, "preferred_room_id": self.room1.id,
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"pricelist_id": self.pricelist2.id, "pricelist_id": self.pricelist2.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
# ASSERT # ASSERT
@@ -485,6 +501,7 @@ class TestPmsPricelist(TestPms):
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"pricelist_id": self.pricelist2.id, "pricelist_id": self.pricelist2.id,
"service_ids": [(0, 0, {"product_id": self.product1.id})], "service_ids": [(0, 0, {"product_id": self.product1.id})],
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
# ASSERT # ASSERT
@@ -531,6 +548,7 @@ class TestPmsPricelist(TestPms):
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"pricelist_id": self.pricelist2.id, "pricelist_id": self.pricelist2.id,
"service_ids": [(0, 0, {"product_id": self.product1.id})], "service_ids": [(0, 0, {"product_id": self.product1.id})],
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
# ASSERT # ASSERT
@@ -573,6 +591,7 @@ class TestPmsPricelist(TestPms):
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"pricelist_id": self.pricelist2.id, "pricelist_id": self.pricelist2.id,
"service_ids": [(0, 0, {"product_id": self.product1.id})], "service_ids": [(0, 0, {"product_id": self.product1.id})],
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
# ASSERT # ASSERT
@@ -619,6 +638,7 @@ class TestPmsPricelist(TestPms):
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"pricelist_id": self.pricelist2.id, "pricelist_id": self.pricelist2.id,
"service_ids": [(0, 0, {"product_id": self.product1.id})], "service_ids": [(0, 0, {"product_id": self.product1.id})],
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
# ASSERT # ASSERT
@@ -782,6 +802,7 @@ class TestPmsPricelist(TestPms):
"preferred_room_id": self.room.id, "preferred_room_id": self.room.id,
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"partner_id": self.partner1.id, "partner_id": self.partner1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
# ACT # ACT
@@ -1230,6 +1251,7 @@ class TestPmsPricelist(TestPms):
"preferred_room_id": self.room.id, "preferred_room_id": self.room.id,
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"pricelist_id": self.pricelist1.id, "pricelist_id": self.pricelist1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
reservation_price = reservation.price_subtotal reservation_price = reservation.price_subtotal

File diff suppressed because it is too large Load Diff

View File

@@ -56,6 +56,7 @@ class TestPmsSaleChannel(TestPms):
"checkout": datetime.datetime.now() + datetime.timedelta(days=3), "checkout": datetime.datetime.now() + datetime.timedelta(days=3),
"agency_id": agency1.id, "agency_id": agency1.id,
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"sale_channel_origin_id": sale_channel1.id,
} }
) )
@@ -66,66 +67,6 @@ class TestPmsSaleChannel(TestPms):
"Reservation with a valid agency should be created.", "Reservation with a valid agency should be created.",
) )
def test_reservation_with_partner_direct(self):
"""
Reservation create with partner (no agency) and sale channel
'direct' must be set reservation sale channel to 'direct'.
A reservation with partner and sale channel as 'direct'
should be created.
"""
# ARRANGE
PmsReservation = self.env["pms.reservation"]
PmsSaleChannel = self.env["pms.sale.channel"]
# ACT
sale_channel1 = PmsSaleChannel.create({"channel_type": "direct"})
partner1 = self.env["res.partner"].create({"name": "partner1"})
reservation1 = PmsReservation.create(
{
"checkin": datetime.datetime.now(),
"checkout": datetime.datetime.now() + datetime.timedelta(days=3),
"channel_type_id": sale_channel1.id,
"partner_id": partner1.id,
"pms_property_id": self.pms_property1.id,
}
)
# ASSERT
self.assertEqual(
reservation1.channel_type_id.channel_type,
"direct",
"A reservation with partner and sale channel as 'direct'"
"should be created a 'direct' reservation.",
)
def test_reservation_with_partner_indirect(self):
"""
Reservation create with partner (no agency) and sale channel
'indirect' must be set reservation sale channel to 'direct'.
A reservation with partner and sale channel as 'direct'
should be created.
"""
# ARRANGE
PmsReservation = self.env["pms.reservation"]
PmsSaleChannel = self.env["pms.sale.channel"]
# ACT
sale_channel1 = PmsSaleChannel.create({"channel_type": "indirect"})
partner1 = self.env["res.partner"].create({"name": "partner1"})
reservation1 = PmsReservation.create(
{
"checkin": datetime.datetime.now(),
"checkout": datetime.datetime.now() + datetime.timedelta(days=3),
"channel_type_id": sale_channel1.id,
"partner_id": partner1.id,
"pms_property_id": self.pms_property1.id,
}
)
# ASSERT
self.assertEqual(
reservation1.channel_type_id.channel_type,
"indirect",
"A reservation with partner and sale channel as 'direct'"
"should be created a 'indirect' reservation.",
)
def test_create_agency_with_sale_channel_indirect(self): def test_create_agency_with_sale_channel_indirect(self):
""" """
Agency should be created as partner setted as 'agency' Agency should be created as partner setted as 'agency'

File diff suppressed because it is too large Load Diff

View File

@@ -56,6 +56,14 @@ class TestPmsWizardSplitJoinSwapReservation(TestPms):
self.partner1 = self.env["res.partner"].create({"name": "Antón"}) self.partner1 = self.env["res.partner"].create({"name": "Antón"})
# create a sale channel
self.sale_channel_direct1 = self.env["pms.sale.channel"].create(
{
"name": "Door",
"channel_type": "direct",
}
)
# UNIFY TESTS # review # UNIFY TESTS # review
def test_unify_reservation_avail_should(self): def test_unify_reservation_avail_should(self):
""" """
@@ -83,6 +91,7 @@ class TestPmsWizardSplitJoinSwapReservation(TestPms):
"adults": 2, "adults": 2,
"preferred_room_id": self.room1.id, "preferred_room_id": self.room1.id,
"partner_id": self.partner1.id, "partner_id": self.partner1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r1.flush() r1.flush()
@@ -119,6 +128,7 @@ class TestPmsWizardSplitJoinSwapReservation(TestPms):
"adults": 2, "adults": 2,
"preferred_room_id": self.room2.id, "preferred_room_id": self.room2.id,
"partner_id": self.partner1.id, "partner_id": self.partner1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r2 = self.env["pms.reservation"].create( r2 = self.env["pms.reservation"].create(
@@ -129,6 +139,7 @@ class TestPmsWizardSplitJoinSwapReservation(TestPms):
"adults": 2, "adults": 2,
"preferred_room_id": self.room1.id, "preferred_room_id": self.room1.id,
"partner_id": self.partner1.id, "partner_id": self.partner1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r1 = self.env["pms.reservation"].create( r1 = self.env["pms.reservation"].create(
@@ -139,6 +150,7 @@ class TestPmsWizardSplitJoinSwapReservation(TestPms):
"adults": 2, "adults": 2,
"room_type_id": self.test_room_type_double.id, "room_type_id": self.test_room_type_double.id,
"partner_id": self.partner1.id, "partner_id": self.partner1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r2.flush() r2.flush()
@@ -164,6 +176,7 @@ class TestPmsWizardSplitJoinSwapReservation(TestPms):
"adults": 2, "adults": 2,
"preferred_room_id": self.room1.id, "preferred_room_id": self.room1.id,
"partner_id": self.partner1.id, "partner_id": self.partner1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r2 = self.env["pms.reservation"].create( r2 = self.env["pms.reservation"].create(
@@ -174,6 +187,7 @@ class TestPmsWizardSplitJoinSwapReservation(TestPms):
"adults": 2, "adults": 2,
"preferred_room_id": self.room2.id, "preferred_room_id": self.room2.id,
"partner_id": self.partner1.id, "partner_id": self.partner1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r2.flush() r2.flush()
@@ -215,6 +229,7 @@ class TestPmsWizardSplitJoinSwapReservation(TestPms):
"adults": 2, "adults": 2,
"preferred_room_id": self.room1.id, "preferred_room_id": self.room1.id,
"partner_id": self.partner1.id, "partner_id": self.partner1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r2 = self.env["pms.reservation"].create( r2 = self.env["pms.reservation"].create(
@@ -225,6 +240,7 @@ class TestPmsWizardSplitJoinSwapReservation(TestPms):
"adults": 2, "adults": 2,
"preferred_room_id": self.room2.id, "preferred_room_id": self.room2.id,
"partner_id": self.partner1.id, "partner_id": self.partner1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r1.flush() r1.flush()
@@ -274,6 +290,7 @@ class TestPmsWizardSplitJoinSwapReservation(TestPms):
"adults": 2, "adults": 2,
"preferred_room_id": self.room1.id, "preferred_room_id": self.room1.id,
"partner_id": self.partner1.id, "partner_id": self.partner1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r2 = self.env["pms.reservation"].create( r2 = self.env["pms.reservation"].create(
@@ -284,6 +301,7 @@ class TestPmsWizardSplitJoinSwapReservation(TestPms):
"adults": 2, "adults": 2,
"preferred_room_id": self.room2.id, "preferred_room_id": self.room2.id,
"partner_id": self.partner1.id, "partner_id": self.partner1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r1.flush() r1.flush()
@@ -332,6 +350,7 @@ class TestPmsWizardSplitJoinSwapReservation(TestPms):
"adults": 2, "adults": 2,
"preferred_room_id": self.room1.id, "preferred_room_id": self.room1.id,
"partner_id": self.partner1.id, "partner_id": self.partner1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r2 = self.env["pms.reservation"].create( r2 = self.env["pms.reservation"].create(
@@ -342,6 +361,7 @@ class TestPmsWizardSplitJoinSwapReservation(TestPms):
"adults": 2, "adults": 2,
"preferred_room_id": self.room2.id, "preferred_room_id": self.room2.id,
"partner_id": self.partner1.id, "partner_id": self.partner1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r1.flush() r1.flush()
@@ -394,6 +414,7 @@ class TestPmsWizardSplitJoinSwapReservation(TestPms):
"adults": 2, "adults": 2,
"preferred_room_id": self.room1.id, "preferred_room_id": self.room1.id,
"partner_id": self.partner1.id, "partner_id": self.partner1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r2 = self.env["pms.reservation"].create( r2 = self.env["pms.reservation"].create(
@@ -404,6 +425,7 @@ class TestPmsWizardSplitJoinSwapReservation(TestPms):
"adults": 2, "adults": 2,
"preferred_room_id": self.room2.id, "preferred_room_id": self.room2.id,
"partner_id": self.partner1.id, "partner_id": self.partner1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r1.flush() r1.flush()
@@ -456,6 +478,7 @@ class TestPmsWizardSplitJoinSwapReservation(TestPms):
"adults": 2, "adults": 2,
"preferred_room_id": self.room1.id, "preferred_room_id": self.room1.id,
"partner_id": self.partner1.id, "partner_id": self.partner1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r2 = self.env["pms.reservation"].create( r2 = self.env["pms.reservation"].create(
@@ -466,6 +489,7 @@ class TestPmsWizardSplitJoinSwapReservation(TestPms):
"adults": 2, "adults": 2,
"preferred_room_id": self.room2.id, "preferred_room_id": self.room2.id,
"partner_id": self.partner1.id, "partner_id": self.partner1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r1.flush() r1.flush()
@@ -515,6 +539,7 @@ class TestPmsWizardSplitJoinSwapReservation(TestPms):
"adults": 2, "adults": 2,
"preferred_room_id": self.room2.id, "preferred_room_id": self.room2.id,
"partner_id": self.partner1.id, "partner_id": self.partner1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
@@ -561,6 +586,7 @@ class TestPmsWizardSplitJoinSwapReservation(TestPms):
"adults": 2, "adults": 2,
"preferred_room_id": self.room1.id, "preferred_room_id": self.room1.id,
"partner_id": self.partner1.id, "partner_id": self.partner1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
@@ -572,6 +598,7 @@ class TestPmsWizardSplitJoinSwapReservation(TestPms):
"adults": 2, "adults": 2,
"preferred_room_id": self.room1.id, "preferred_room_id": self.room1.id,
"partner_id": self.partner1.id, "partner_id": self.partner1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r2 = self.env["pms.reservation"].create( r2 = self.env["pms.reservation"].create(
@@ -582,6 +609,7 @@ class TestPmsWizardSplitJoinSwapReservation(TestPms):
"adults": 2, "adults": 2,
"preferred_room_id": self.room2.id, "preferred_room_id": self.room2.id,
"partner_id": self.partner1.id, "partner_id": self.partner1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r1.flush() r1.flush()
@@ -633,6 +661,7 @@ class TestPmsWizardSplitJoinSwapReservation(TestPms):
"adults": 2, "adults": 2,
"preferred_room_id": self.room1.id, "preferred_room_id": self.room1.id,
"partner_id": self.partner1.id, "partner_id": self.partner1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
@@ -644,6 +673,7 @@ class TestPmsWizardSplitJoinSwapReservation(TestPms):
"adults": 2, "adults": 2,
"preferred_room_id": self.room1.id, "preferred_room_id": self.room1.id,
"partner_id": self.partner1.id, "partner_id": self.partner1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r2 = self.env["pms.reservation"].create( r2 = self.env["pms.reservation"].create(
@@ -654,6 +684,7 @@ class TestPmsWizardSplitJoinSwapReservation(TestPms):
"adults": 2, "adults": 2,
"preferred_room_id": self.room2.id, "preferred_room_id": self.room2.id,
"partner_id": self.partner1.id, "partner_id": self.partner1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r1.flush() r1.flush()
@@ -699,6 +730,7 @@ class TestPmsWizardSplitJoinSwapReservation(TestPms):
"adults": 2, "adults": 2,
"preferred_room_id": self.room2.id, "preferred_room_id": self.room2.id,
"partner_id": self.partner1.id, "partner_id": self.partner1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
@@ -736,6 +768,7 @@ class TestPmsWizardSplitJoinSwapReservation(TestPms):
"adults": 2, "adults": 2,
"preferred_room_id": self.room1.id, "preferred_room_id": self.room1.id,
"partner_id": self.partner1.id, "partner_id": self.partner1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r1.flush() r1.flush()
@@ -773,6 +806,7 @@ class TestPmsWizardSplitJoinSwapReservation(TestPms):
"adults": 2, "adults": 2,
"preferred_room_id": self.room1.id, "preferred_room_id": self.room1.id,
"partner_id": self.partner1.id, "partner_id": self.partner1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r1.flush() r1.flush()
@@ -819,6 +853,7 @@ class TestPmsWizardSplitJoinSwapReservation(TestPms):
"adults": 2, "adults": 2,
"preferred_room_id": self.room1.id, "preferred_room_id": self.room1.id,
"partner_id": self.partner1.id, "partner_id": self.partner1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r1.flush() r1.flush()
@@ -861,6 +896,7 @@ class TestPmsWizardSplitJoinSwapReservation(TestPms):
"adults": 2, "adults": 2,
"preferred_room_id": self.room1.id, "preferred_room_id": self.room1.id,
"partner_id": self.partner1.id, "partner_id": self.partner1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r1.flush() r1.flush()
@@ -900,6 +936,7 @@ class TestPmsWizardSplitJoinSwapReservation(TestPms):
"adults": 2, "adults": 2,
"preferred_room_id": self.room1.id, "preferred_room_id": self.room1.id,
"partner_id": self.partner1.id, "partner_id": self.partner1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r1.flush() r1.flush()
@@ -930,6 +967,7 @@ class TestPmsWizardSplitJoinSwapReservation(TestPms):
"adults": 2, "adults": 2,
"preferred_room_id": self.room1.id, "preferred_room_id": self.room1.id,
"partner_id": self.partner1.id, "partner_id": self.partner1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r1.flush() r1.flush()
@@ -959,6 +997,7 @@ class TestPmsWizardSplitJoinSwapReservation(TestPms):
"adults": 2, "adults": 2,
"preferred_room_id": self.room2.id, "preferred_room_id": self.room2.id,
"partner_id": self.partner1.id, "partner_id": self.partner1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r1 = self.env["pms.reservation"].create( r1 = self.env["pms.reservation"].create(
@@ -969,6 +1008,7 @@ class TestPmsWizardSplitJoinSwapReservation(TestPms):
"adults": 2, "adults": 2,
"preferred_room_id": self.room1.id, "preferred_room_id": self.room1.id,
"partner_id": self.partner1.id, "partner_id": self.partner1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r1.flush() r1.flush()

View File

@@ -31,6 +31,13 @@ class TestProductTemplate(TestPms):
"default_code": "BST", "default_code": "BST",
} }
) )
# create a sale channel
self.sale_channel_direct1 = self.env["pms.sale.channel"].create(
{
"name": "Door",
"channel_type": "direct",
}
)
def test_bs_consumed_on_after(self): def test_bs_consumed_on_after(self):
""" """
@@ -69,6 +76,7 @@ class TestProductTemplate(TestPms):
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"partner_id": self.partner.id, "partner_id": self.partner.id,
"board_service_room_id": board_service_room_type.id, "board_service_room_id": board_service_room_type.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
# ASSERT # ASSERT
@@ -115,6 +123,7 @@ class TestProductTemplate(TestPms):
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"partner_id": self.partner.id, "partner_id": self.partner.id,
"board_service_room_id": board_service_room_type.id, "board_service_room_id": board_service_room_type.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
# ASSERT # ASSERT
@@ -162,6 +171,7 @@ class TestProductTemplate(TestPms):
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"partner_id": self.partner.id, "partner_id": self.partner.id,
"board_service_room_id": board_service_room_type.id, "board_service_room_id": board_service_room_type.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
reservation.flush() reservation.flush()
@@ -211,6 +221,7 @@ class TestProductTemplate(TestPms):
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"partner_id": self.partner.id, "partner_id": self.partner.id,
"board_service_room_id": board_service_room_type.id, "board_service_room_id": board_service_room_type.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
reservation.flush() reservation.flush()
@@ -267,6 +278,7 @@ class TestProductTemplate(TestPms):
"partner_id": self.partner.id, "partner_id": self.partner.id,
"board_service_room_id": board_service_room_type.id, "board_service_room_id": board_service_room_type.id,
"adults": 2, "adults": 2,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
@@ -298,6 +310,7 @@ class TestProductTemplate(TestPms):
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"partner_id": self.partner.id, "partner_id": self.partner.id,
"service_ids": [extra_bed_service.id], "service_ids": [extra_bed_service.id],
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
reservation._check_adults() reservation._check_adults()

View File

@@ -85,6 +85,14 @@ class TestPmsSharedRoom(TestPms):
} }
) )
# create a sale channel
self.sale_channel_direct1 = self.env["pms.sale.channel"].create(
{
"name": "Door",
"channel_type": "direct",
}
)
def test_count_avail_beds_with_room_occupied(self): def test_count_avail_beds_with_room_occupied(self):
""" """
Check that not allow to create a bed reservation with a room occupied Check that not allow to create a bed reservation with a room occupied
@@ -104,6 +112,7 @@ class TestPmsSharedRoom(TestPms):
"checkin": today, "checkin": today,
"checkout": tomorrow, "checkout": tomorrow,
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
@@ -137,6 +146,7 @@ class TestPmsSharedRoom(TestPms):
"checkin": today, "checkin": today,
"checkout": tomorrow, "checkout": tomorrow,
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
@@ -182,6 +192,7 @@ class TestPmsSharedRoom(TestPms):
"checkin": today, "checkin": today,
"checkout": tomorrow, "checkout": tomorrow,
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
@@ -217,6 +228,7 @@ class TestPmsSharedRoom(TestPms):
"checkin": today, "checkin": today,
"checkout": tomorrow, "checkout": tomorrow,
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
res1.flush() res1.flush()
@@ -250,6 +262,7 @@ class TestPmsSharedRoom(TestPms):
"checkin": today, "checkin": today,
"checkout": tomorrow, "checkout": tomorrow,
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
@@ -285,6 +298,7 @@ class TestPmsSharedRoom(TestPms):
"checkin": today, "checkin": today,
"checkout": tomorrow, "checkout": tomorrow,
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
@@ -321,6 +335,7 @@ class TestPmsSharedRoom(TestPms):
"checkin": today, "checkin": today,
"checkout": tomorrow, "checkout": tomorrow,
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
@@ -355,6 +370,7 @@ class TestPmsSharedRoom(TestPms):
"checkin": today, "checkin": today,
"checkout": tomorrow, "checkout": tomorrow,
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
@@ -370,6 +386,7 @@ class TestPmsSharedRoom(TestPms):
"checkin": today, "checkin": today,
"checkout": tomorrow, "checkout": tomorrow,
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r_test.flush() r_test.flush()
@@ -394,6 +411,7 @@ class TestPmsSharedRoom(TestPms):
"checkin": today, "checkin": today,
"checkout": tomorrow, "checkout": tomorrow,
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
@@ -410,6 +428,7 @@ class TestPmsSharedRoom(TestPms):
"checkin": today, "checkin": today,
"checkout": tomorrow, "checkout": tomorrow,
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r_test.flush() r_test.flush()
@@ -435,6 +454,7 @@ class TestPmsSharedRoom(TestPms):
"checkin": today, "checkin": today,
"checkout": tomorrow, "checkout": tomorrow,
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r1.action_cancel() r1.action_cancel()
@@ -471,6 +491,7 @@ class TestPmsSharedRoom(TestPms):
"checkin": today, "checkin": today,
"checkout": tomorrow, "checkout": tomorrow,
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
r1.action_cancel() r1.action_cancel()

View File

@@ -348,13 +348,15 @@
name="agency_id" name="agency_id"
attrs="{'invisible': [('reservation_type', 'not in', 'normal')]}" attrs="{'invisible': [('reservation_type', 'not in', 'normal')]}"
/> />
<field name="sale_channel_origin_id" />
<field <field
name="external_reference" name="external_reference"
attrs="{'invisible': [('agency_id', '=', False)]}" attrs="{'invisible': [('agency_id', '=', False)]}"
/> />
<field <field
name="channel_type_id" name="sale_channel_ids"
attrs="{'readonly':[('agency_id','!=', False)], 'invisible':[('reservation_type', 'not in', 'normal')]}" widget="many2many_tags"
options="{'no_create': True,'no_open': True}"
/> />
</group> </group>
<div class="oe_clear" /> <div class="oe_clear" />
@@ -786,12 +788,12 @@
name="group_customer" name="group_customer"
context="{'group_by':'partner_id'}" context="{'group_by':'partner_id'}"
/> />
<filter <!-- <filter-->
string="Channel" <!-- string="Channel"-->
domain="[]" <!-- domain="[]"-->
name="group_channel" <!-- name="group_channel"-->
context="{'group_by':'channel_type_id'}" <!-- context="{'group_by':'sale_channel_ids'}"-->
/> <!-- />-->
<filter <filter
string="Agency" string="Agency"
domain="[]" domain="[]"
@@ -842,13 +844,6 @@
enable_counters="1" enable_counters="1"
select="multi" select="multi"
/> />
<field
name="channel_type_id"
string="Channel"
enable_counters="1"
icon="fa-sitemap"
expand="1"
/>
</searchpanel> </searchpanel>
</search> </search>
</field> </field>

View File

@@ -441,17 +441,28 @@
options="{'no_create': True,'no_open': True}" options="{'no_create': True,'no_open': True}"
attrs="{'invisible': [('reservation_type','in',('out'))]}" attrs="{'invisible': [('reservation_type','in',('out'))]}"
/> />
<field
name="agency_id"
attrs="{'invisible': [('reservation_type', '!=', 'normal')]}"
/>
<field <field
name="external_reference" name="external_reference"
attrs="{'invisible': [('agency_id', '=', False)]}" attrs="{'invisible': [('agency_id', '=', False)]}"
/> />
<field <field
name="channel_type_id" name="agency_id"
attrs="{'readonly':[('agency_id','!=', False)], 'invisible': [('reservation_type', '!=', 'normal')]}" attrs="{'invisible': [('reservation_type', '!=', 'normal')]}"
/>
<field name="sale_channel_origin_id" />
<field
class="oe_edit_only"
name="force_update_origin"
attrs="{'invisible': [('is_origin_channel_check_visible','=',False)]}"
/>
<field
name="is_origin_channel_check_visible"
invisible="1"
/>
<field
name="sale_channel_ids"
widget="many2many_tags"
options="{'no_create': True,'no_open': True}"
/> />
<field placeholder="Arrival Hour" name="arrival_hour" /> <field placeholder="Arrival Hour" name="arrival_hour" />
<field placeholder="Departure Hour" name="departure_hour" /> <field placeholder="Departure Hour" name="departure_hour" />
@@ -491,6 +502,8 @@
name="cancel_discount" name="cancel_discount"
attrs="{'column_invisible': [('parent.state','!=','cancel')]}" attrs="{'column_invisible': [('parent.state','!=','cancel')]}"
/> />
<field name="sale_channel_id" />
<field name="default_invoice_to" />
<field name="pms_property_id" invisible="1" /> <field name="pms_property_id" invisible="1" />
</tree> </tree>
</field> </field>
@@ -554,6 +567,11 @@
attrs="{'readonly': [('per_day','=',True)]}" attrs="{'readonly': [('per_day','=',True)]}"
force_save="1" force_save="1"
/> />
<field name="sale_channel_origin_id" />
<field
name="default_invoice_to"
optional="hide"
/>
<button <button
type="object" type="object"
class="oe_stat_button" class="oe_stat_button"
@@ -786,7 +804,8 @@
<field name="checkin_partner_pending_count" invisible="1" /> <field name="checkin_partner_pending_count" invisible="1" />
<field name="tax_ids" invisible="1" /> <field name="tax_ids" invisible="1" />
<field name="agency_id" optional="show" /> <field name="agency_id" optional="show" />
<field name="channel_type_id" optional="show" /> <field name="sale_channel_origin_id" optional="show" />
<field name="sale_channel_ids" optional="show" />
<field name="price_subtotal" invisible="1" /> <field name="price_subtotal" invisible="1" />
<field name="price_total" optional="hide" sum="Total" /> <field name="price_total" optional="hide" sum="Total" />
<field name="commission_amount" optional="hide" sum="Commission" /> <field name="commission_amount" optional="hide" sum="Commission" />
@@ -1014,12 +1033,12 @@
name="agency" name="agency"
context="{'group_by':'agency_id'}" context="{'group_by':'agency_id'}"
/> />
<filter <!-- <filter-->
string="Channel" <!-- string="Channel"-->
domain="[]" <!-- domain="[]"-->
name="channel" <!-- name="channel"-->
context="{'group_by':'channel_type_id'}" <!-- context="{'group_by':'sale_channel_ids'}"-->
/> <!-- />-->
<filter <filter
string="Room Type" string="Room Type"
domain="[]" domain="[]"
@@ -1078,13 +1097,6 @@
icon="fa-bookmark" icon="fa-bookmark"
color="#875A7B" color="#875A7B"
/> />
<field
name="channel_type_id"
string="Channel"
enable_counters="1"
icon="fa-sitemap"
expand="1"
/>
</searchpanel> </searchpanel>
</search> </search>
</field> </field>

View File

@@ -27,7 +27,10 @@
attrs="{'readonly': [('per_day','=',True)]}" attrs="{'readonly': [('per_day','=',True)]}"
force_save="1" force_save="1"
/> />
<field name="sale_channel_origin_id" />
<field name="default_invoice_to" />
</group> </group>
<field name="tax_ids" widget="many2many_tags" invisible="1" /> <field name="tax_ids" widget="many2many_tags" invisible="1" />
<field name="price_subtotal" invisible="1" /> <field name="price_subtotal" invisible="1" />
<field name="price_tax" invisible="1" /> <field name="price_tax" invisible="1" />
@@ -43,6 +46,7 @@
/> />
<field name="price_day_total" /> <field name="price_day_total" />
<field name="is_board_service" invisible="1" /> <field name="is_board_service" invisible="1" />
<field name="pms_property_id" invisible="1" />
</tree> </tree>
</field> </field>
</sheet> </sheet>
@@ -85,6 +89,8 @@
attrs="{'readonly': [('per_day','=',True)]}" attrs="{'readonly': [('per_day','=',True)]}"
force_save="1" force_save="1"
/> />
<field name="sale_channel_origin_id" />
<field name="default_invoice_to" />
<button <button
type="object" type="object"
class="oe_stat_button" class="oe_stat_button"
@@ -106,6 +112,7 @@
/> />
<field name="price_unit" /> <field name="price_unit" />
<field name="is_board_service" invisible="1" /> <field name="is_board_service" invisible="1" />
<field name="pms_property_id" invisible="1" />
</tree> </tree>
</field> </field>
</tree> </tree>

View File

@@ -157,7 +157,6 @@
name="margin_days_autoinvoice" name="margin_days_autoinvoice"
attrs="{'invisible': [('invoicing_policy', '!=', 'checkout')]}" attrs="{'invisible': [('invoicing_policy', '!=', 'checkout')]}"
/> />
<field name="default_invoice_lines" />
</group> </group>
</xpath> </xpath>
</field> </field>

View File

@@ -145,7 +145,9 @@ class BookingDuplicate(models.TransientModel):
def _compute_channel_type_id(self): def _compute_channel_type_id(self):
for record in self.filtered("reference_folio_id"): for record in self.filtered("reference_folio_id"):
if record.reference_folio_id.agency_id == record.agency_id: if record.reference_folio_id.agency_id == record.agency_id:
record.channel_type_id = record.reference_folio_id.channel_type_id record.channel_type_id = (
record.reference_folio_id.sale_channel_origin_id
)
elif record.agency_id: elif record.agency_id:
record.channel_type_id = record.agency_id.sale_channel_id.id record.channel_type_id = record.agency_id.sale_channel_id.id
@@ -301,7 +303,7 @@ class BookingDuplicate(models.TransientModel):
"partner_name": self.partner_name, "partner_name": self.partner_name,
"pms_property_id": self.pms_property_id.id, "pms_property_id": self.pms_property_id.id,
"agency_id": self.agency_id.id, "agency_id": self.agency_id.id,
"channel_type_id": self.channel_type_id.id, "sale_channel_origin_id": self.channel_type_id.id,
"segmentation_ids": [(6, 0, self.segmentation_ids.ids)], "segmentation_ids": [(6, 0, self.segmentation_ids.ids)],
"internal_comment": self.internal_comment, "internal_comment": self.internal_comment,
} }

View File

@@ -237,7 +237,7 @@ class BookingEngine(models.TransientModel):
"partner_name": record.partner_name, "partner_name": record.partner_name,
"pms_property_id": record.pms_property_id.id, "pms_property_id": record.pms_property_id.id,
"agency_id": record.agency_id.id, "agency_id": record.agency_id.id,
"channel_type_id": record.channel_type_id.id, "sale_channel_origin_id": record.channel_type_id.id,
"segmentation_ids": [(6, 0, record.segmentation_ids.ids)], "segmentation_ids": [(6, 0, record.segmentation_ids.ids)],
"internal_comment": record.internal_comment, "internal_comment": record.internal_comment,
} }
@@ -310,7 +310,7 @@ class AvailabilityWizard(models.TransientModel):
num_rooms_available = fields.Integer( num_rooms_available = fields.Integer(
string="Available rooms", string="Available rooms",
help="Number of rooms that are available", help="Number of rooms that are available",
store="true", store=True,
compute="_compute_num_rooms_available", compute="_compute_num_rooms_available",
) )
num_rooms_selected = fields.Many2one( num_rooms_selected = fields.Many2one(
@@ -429,7 +429,6 @@ class AvailabilityWizard(models.TransientModel):
checkin + datetime.timedelta(days=x) checkin + datetime.timedelta(days=x)
for x in range(0, (checkout - checkin).days) for x in range(0, (checkout - checkin).days)
]: ]:
product = room_type.product_id product = room_type.product_id
product = product.with_company(pms_property.company_id).with_context( product = product.with_company(pms_property.company_id).with_context(
quantity=1, quantity=1,
@@ -450,5 +449,4 @@ class AvailabilityWizard(models.TransientModel):
room_type_total_price_per_room += ( room_type_total_price_per_room += (
board_service_room.amount * nights * adults board_service_room.amount * nights * adults
) )
return room_type_total_price_per_room return room_type_total_price_per_room

View File

@@ -11,6 +11,14 @@ from .common import TestPms
class TestWizardINE(TestPms): class TestWizardINE(TestPms):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.sale_channel_direct1 = self.env["pms.sale.channel"].create(
{
"name": "Door",
"channel_type": "direct",
}
)
# number of seats established in the property # number of seats established in the property
self.pms_property1.ine_seats = 50 self.pms_property1.ine_seats = 50
@@ -235,6 +243,7 @@ class TestWizardINE(TestPms):
"partner_id": self.partner_1.id, "partner_id": self.partner_1.id,
"adults": 2, "adults": 2,
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
self.checkin1 = self.env["pms.checkin.partner"].create( self.checkin1 = self.env["pms.checkin.partner"].create(
@@ -259,6 +268,7 @@ class TestWizardINE(TestPms):
"partner_id": self.partner_3.id, "partner_id": self.partner_3.id,
"adults": 2, "adults": 2,
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
self.checkin3 = self.env["pms.checkin.partner"].create( self.checkin3 = self.env["pms.checkin.partner"].create(
@@ -282,6 +292,7 @@ class TestWizardINE(TestPms):
"partner_id": self.partner_5.id, "partner_id": self.partner_5.id,
"adults": 1, "adults": 1,
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
self.checkin5 = self.env["pms.checkin.partner"].create( self.checkin5 = self.env["pms.checkin.partner"].create(
@@ -299,6 +310,7 @@ class TestWizardINE(TestPms):
"partner_id": self.partner_5.id, "partner_id": self.partner_5.id,
"adults": 1, "adults": 1,
"pms_property_id": self.pms_property2.id, "pms_property_id": self.pms_property2.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
self.checkin5_other_property = self.env["pms.checkin.partner"].create( self.checkin5_other_property = self.env["pms.checkin.partner"].create(
@@ -331,6 +343,7 @@ class TestWizardINE(TestPms):
"adults": 2, "adults": 2,
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"service_ids": [(0, 0, vals_service_extra_bed)], "service_ids": [(0, 0, vals_service_extra_bed)],
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
self.checkin6 = self.env["pms.checkin.partner"].create( self.checkin6 = self.env["pms.checkin.partner"].create(
@@ -431,6 +444,7 @@ class TestWizardINE(TestPms):
"partner_id": self.partner_russia_1.id, "partner_id": self.partner_russia_1.id,
"adults": 2, "adults": 2,
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
self.reservation_2 = self.env["pms.reservation"].create( self.reservation_2 = self.env["pms.reservation"].create(
@@ -441,6 +455,7 @@ class TestWizardINE(TestPms):
"partner_id": self.partner_russia_2.id, "partner_id": self.partner_russia_2.id,
"adults": 2, "adults": 2,
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
self.reservation_3 = self.env["pms.reservation"].create( self.reservation_3 = self.env["pms.reservation"].create(
@@ -451,6 +466,7 @@ class TestWizardINE(TestPms):
"partner_id": self.partner_russia_3.id, "partner_id": self.partner_russia_3.id,
"adults": 2, "adults": 2,
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
# Create 3 checkin partners (1 russian -> r1, 2 russian -> r3 ) # Create 3 checkin partners (1 russian -> r1, 2 russian -> r3 )

View File

@@ -9,6 +9,13 @@ from .common import TestPms
class TestWizardTravellerReport(TestPms): class TestWizardTravellerReport(TestPms):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.sale_channel_direct1 = self.env["pms.sale.channel"].create(
{
"name": "Door",
"channel_type": "direct",
}
)
# number of seats established in the property # number of seats established in the property
self.pms_property1.ine_seats = 50 self.pms_property1.ine_seats = 50
@@ -108,6 +115,7 @@ class TestWizardTravellerReport(TestPms):
"partner_id": self.partner_1.id, "partner_id": self.partner_1.id,
"adults": 1, "adults": 1,
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
self.checkin1 = self.env["pms.checkin.partner"].create( self.checkin1 = self.env["pms.checkin.partner"].create(
@@ -127,6 +135,7 @@ class TestWizardTravellerReport(TestPms):
"partner_id": self.partner_2.id, "partner_id": self.partner_2.id,
"adults": 1, "adults": 1,
"pms_property_id": self.pms_property2.id, "pms_property_id": self.pms_property2.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
self.checkin2 = self.env["pms.checkin.partner"].create( self.checkin2 = self.env["pms.checkin.partner"].create(
@@ -169,6 +178,7 @@ class TestWizardTravellerReport(TestPms):
"partner_id": self.partner_1.id, "partner_id": self.partner_1.id,
"adults": 1, "adults": 1,
"pms_property_id": self.pms_property1.id, "pms_property_id": self.pms_property1.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
self.checkin1 = self.env["pms.checkin.partner"].create( self.checkin1 = self.env["pms.checkin.partner"].create(
@@ -189,6 +199,7 @@ class TestWizardTravellerReport(TestPms):
"partner_id": self.partner_2.id, "partner_id": self.partner_2.id,
"adults": 1, "adults": 1,
"pms_property_id": self.pms_property2.id, "pms_property_id": self.pms_property2.id,
"sale_channel_origin_id": self.sale_channel_direct1.id,
} }
) )
self.checkin2 = self.env["pms.checkin.partner"].create( self.checkin2 = self.env["pms.checkin.partner"].create(