[ADD]pms: multiproperty checks and domains in reservation and folio (#58)

* [IMP] Pms: Add multiproperty checks and domains in reservation and folio

* [IMP] Pms: fix consider mandatory property in reservation create

* [IMP] Pms_l10n_es: Add reservation property tests

* [IMP] Pms: fix travis problem

* [FIX] Rebase and merge

Co-authored-by: Darío Lodeiros <dario@commitsun.com>
This commit is contained in:
Sara
2021-03-07 16:05:20 +01:00
committed by GitHub
parent 7619288892
commit caec88df40
9 changed files with 333 additions and 14 deletions

View File

@@ -3,6 +3,7 @@ import datetime
from freezegun import freeze_time
from odoo import fields
from odoo.exceptions import ValidationError
from .common import TestHotel
@@ -60,8 +61,34 @@ class TestPmsFolio(TestHotel):
}
)
def create_multiproperty_scenario(self):
self.property1 = self.env["pms.property"].create(
{
"name": "Property_1",
"company_id": self.env.ref("base.main_company").id,
"default_pricelist_id": self.env.ref("product.list0").id,
}
)
self.property2 = self.env["pms.property"].create(
{
"name": "Property_2",
"company_id": self.env.ref("base.main_company").id,
"default_pricelist_id": self.env.ref("product.list0").id,
}
)
self.property3 = self.env["pms.property"].create(
{
"name": "Property_3",
"company_id": self.env.ref("base.main_company").id,
"default_pricelist_id": self.env.ref("product.list0").id,
}
)
def test_commission_and_partner_correct(self):
# ARRANGE
self.create_common_scenario()
PmsFolio = self.env["pms.folio"]
PmsReservation = self.env["pms.reservation"]
PmsPartner = self.env["res.partner"]
@@ -83,6 +110,7 @@ class TestPmsFolio(TestHotel):
folio = PmsFolio.create(
{
"agency_id": agency.id,
"pms_property_id": self.property.id,
}
)
@@ -202,3 +230,23 @@ class TestPmsFolio(TestHotel):
date=fields.date.today(),
)
self.assertEqual(r_test.folio_id.pending_amount, left_to_pay)
def test_closure_reason_property(self):
self.create_multiproperty_scenario()
cl_reason = self.env["room.closure.reason"].create(
{
"name": "closure_reason_test",
"pms_property_ids": [
(4, self.property1.id),
(4, self.property2.id),
],
}
)
with self.assertRaises(ValidationError):
self.env["pms.folio"].create(
{
"pms_property_id": self.property3.id,
"closure_reason_id": cl_reason.id,
}
)

View File

@@ -69,6 +69,40 @@ class TestPmsReservations(TestHotel):
)
self.demo_user = self.env.ref("base.user_admin")
def create_multiproperty_scenario(self):
self.property1 = self.env["pms.property"].create(
{
"name": "Property_1",
"company_id": self.env.ref("base.main_company").id,
"default_pricelist_id": self.env.ref("product.list0").id,
}
)
self.property2 = self.env["pms.property"].create(
{
"name": "Property_2",
"company_id": self.env.ref("base.main_company").id,
"default_pricelist_id": self.env.ref("product.list0").id,
}
)
self.property3 = self.env["pms.property"].create(
{
"name": "Property_3",
"company_id": self.env.ref("base.main_company").id,
"default_pricelist_id": self.env.ref("product.list0").id,
}
)
self.room_type_class = self.env["pms.room.type.class"].create(
{"name": "Room Class", "code_class": "RCTEST"}
)
self.board_service = self.env["pms.board.service"].create(
{
"name": "Board Service Test",
}
)
@freeze_time("1980-11-01")
def test_create_reservation_start_date(self):
# TEST CASE
@@ -788,3 +822,84 @@ class TestPmsReservations(TestHotel):
self.assertEqual(
r1.state, "done", "The reservation status should be done after checkout."
)
def test_multiproperty_checks(self):
"""
# TEST CASE
Multiproperty checks in reservation
+---------------+------+------+------+----+----+
| reservation | property1 |
+---------------+------+------+------+----+----+
| room | property2 |
| room_type | property2, property3 |
| board_service | property2, property3 |
| pricelist | property2, property3 |
+---------------+------+------+------+----+----+
"""
# ARRANGE
self.create_multiproperty_scenario()
host = self.env["res.partner"].create(
{
"name": "Miguel",
"phone": "654667733",
"email": "miguel@example.com",
}
)
self.reservation_test = self.env["pms.reservation"].create(
{
"checkin": fields.date.today(),
"checkout": fields.date.today() + datetime.timedelta(days=1),
"pms_property_id": self.property1.id,
"partner_id": host.id,
}
)
room_type_test = self.env["pms.room.type"].create(
{
"pms_property_ids": [
(4, self.property3.id),
(4, self.property2.id),
],
"name": "Single",
"code_type": "SIN",
"class_id": self.room_type_class.id,
"list_price": 30,
}
)
room = self.env["pms.room"].create(
{
"name": "Room 101",
"pms_property_id": self.property2.id,
"room_type_id": room_type_test.id,
}
)
pricelist = self.env["product.pricelist"].create(
{
"name": "pricelist_test",
"pms_property_ids": [
(4, self.property2.id),
(4, self.property3.id),
],
}
)
board_service_room_type = self.env["pms.board.service.room.type"].create(
{
"pms_board_service_id": self.board_service.id,
"pms_room_type_id": room_type_test.id,
"pms_property_ids": [self.property2.id, self.property3.id],
}
)
test_cases = [
{"preferred_room_id": room.id},
{"room_type_id": room_type_test.id},
{"pricelist_id": pricelist.id},
{"board_service_room_id": board_service_room_type.id},
]
for test_case in test_cases:
with self.subTest(k=test_case):
with self.assertRaises(ValidationError):
self.reservation_test.write(test_case)

View File

@@ -9,8 +9,19 @@ from .common import TestHotel
@freeze_time("2010-01-01")
class TestPmsSaleChannel(TestHotel):
def create_common_scenario(self):
# create a property
self.property = self.env["pms.property"].create(
{
"name": "MY PROPERTY TEST",
"company_id": self.env.ref("base.main_company").id,
"default_pricelist_id": self.env.ref("product.list0").id,
}
)
def test_not_agency_as_agency(self):
# ARRANGE
self.create_common_scenario()
PmsReservation = self.env["pms.reservation"]
not_agency = self.env["res.partner"].create(
{"name": "partner1", "is_agency": False}
@@ -23,11 +34,13 @@ class TestPmsSaleChannel(TestHotel):
"checkin": datetime.datetime.now(),
"checkout": datetime.datetime.now() + datetime.timedelta(days=3),
"agency_id": not_agency.id,
"pms_property_id": self.property.id,
}
)
def test_channel_type_id_only_directs(self):
# ARRANGE
self.create_common_scenario()
PmsReservation = self.env["pms.reservation"]
PmsSaleChannel = self.env["pms.sale.channel"]
# ACT
@@ -39,6 +52,7 @@ class TestPmsSaleChannel(TestHotel):
"checkout": datetime.datetime.now() + datetime.timedelta(days=3),
"channel_type_id": salechannel.id,
"partner_id": partner1.id,
"pms_property_id": self.property.id,
}
)
# ASSERT
@@ -50,6 +64,7 @@ class TestPmsSaleChannel(TestHotel):
def test_agency_id_is_agency(self):
# ARRANGE
self.create_common_scenario()
PmsReservation = self.env["pms.reservation"]
PmsSaleChannel = self.env["pms.sale.channel"]
salechannel = PmsSaleChannel.create(
@@ -68,6 +83,7 @@ class TestPmsSaleChannel(TestHotel):
"checkin": datetime.datetime.now(),
"checkout": datetime.datetime.now() + datetime.timedelta(days=3),
"agency_id": agency.id,
"pms_property_id": self.property.id,
}
)
# ASSERT