mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
@@ -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",
|
||||||
|
|||||||
@@ -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, {
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
32
pms/migrations/14.0.2.36.1/post-migration.py
Normal file
32
pms/migrations/14.0.2.36.1/post-migration.py
Normal 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()
|
||||||
11
pms/migrations/14.0.2.36.1/pre-migration.py
Normal file
11
pms/migrations/14.0.2.36.1/pre-migration.py
Normal 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)
|
||||||
@@ -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:
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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"),
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
@@ -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,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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]
|
||||||
|
|||||||
@@ -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",
|
||||||
|
)
|
||||||
|
|||||||
@@ -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(
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -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
@@ -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'
|
||||||
|
|||||||
1042
pms/tests/test_pms_service.py
Normal file
1042
pms/tests/test_pms_service.py
Normal file
File diff suppressed because it is too large
Load Diff
@@ -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()
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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 )
|
||||||
|
|||||||
@@ -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(
|
||||||
|
|||||||
Reference in New Issue
Block a user