mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
[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:
@@ -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,
|
||||
}
|
||||
)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user