Multiproperty Constrains (#30)

* [IMP] add multiproperties demo data

* [IMP] add multiproperties checks in res_users

* [IMP] add test case in test_res_users

* [IMP] Add multiproperty checks in pms_amenity and pms_amenity_type

* [IMP] Add multiproperty in pms_board_service_room_type(pending review)

* [IMP] Add test case in test_pms_room_type_availability_rule to check multiproperties

* [IMP] Fixing test case in test_pms_room_type_availability_rule to check multiproperties

* [IMP] Add test case in test_pms_room_type_availability_rule

* [IMP] Removed field default_availability_plan_id from pms_property

* [IMP] Add multiproperty in pms_room_type_available_plan

* [IMP] pms: adding property in rooms_available

* [IMP] Add multiproperty in pms_room_type_availability_rule and product_pricelist(work in progress)

* [IMP] Add multiproperty in product_pricelist and product_pricelist_item

* [IMP] add multiproperties demo data

* [IMP] add multiproperties checks in res_users

* [IMP] add test case in test_res_users and pms_room_type_availability_rule

* [IMP] Add multiproperty checks in pms_amenity and pms_amenity_type

* [IMP] Add multiproperty in pms_board_service_room_type(pending review)

* [IMP] Removed field default_availability_plan_id from pms_property

* [IMP] Add multiproperty in pms_room_type_available_plan

* [IMP] pms: adding property in rooms_available

* [IMP] Add multiproperty in pms_room_type_availability_rule and product_pricelist(work in progress)

* [IMP] Add multiproperty in product_pricelist and product_pricelist_item

* [IMP] Pms: add compute_folio method in pms.service

* [IMP] Pms: add multiproperty integrity checks between room_type and its class

* [IMP] Pms: pms_property_id related to folio

* [IMP] Pms: add multiproperty integrity checks in pms_room with pms_room_type and pms_floor

* [IMP] Pms: adding multiproperty checks in room_type(work in progress)

* [IMP] Pms: Add property rules

* [FIX]pms: external ids security rules

* [FIX]pms: property checks

* [FIX]pms: get product on pricelist item multiproperty check

* [FIX]pms: delete test field default_plan

* [FIX]pms: property constrain to product from room type model

* [FIX]pms: ids references

* [IMP]pms: folio wizard price flow on odoo standar

Co-authored-by: Darío Lodeiros <dario@commitsun.com>
This commit is contained in:
Sara
2021-01-31 13:07:03 +01:00
committed by GitHub
parent 6cd01fb0d2
commit 57d3ab0c8a
34 changed files with 1298 additions and 241 deletions

View File

@@ -25,6 +25,11 @@ class FolioWizard(models.TransientModel):
store=True,
readonly=False,
)
pms_property_id = fields.Many2one(
comodel_name="pms.property",
string="Property",
default=lambda self: self.env.user.get_active_property_ids()[0],
)
partner_id = fields.Many2one(
"res.partner",
)
@@ -99,33 +104,18 @@ class FolioWizard(models.TransientModel):
)
num_rooms_available_by_date.append(len(rooms_available))
pricelist_item = self.env["product.pricelist.item"].search(
[
("pricelist_id", "=", record.pricelist_id.id),
("date_start_overnight", ">=", date_iterator),
("date_end_overnight", "<=", date_iterator),
("applied_on", "=", "1_product"),
(
"product_tmpl_id",
"=",
room_type_iterator.product_id.product_tmpl_id.id,
),
]
product = room_type_iterator
product = product.with_context(
lang=record.partner_id.lang,
partner=record.partner_id.id,
quantity=1,
date=fields.Date.today(),
date_overnight=date_iterator,
pricelist=record.pricelist_id.id,
uom=product.uom_id.id,
property=record.pms_property_id.id,
)
# if pricelist_item exists for the date and without
# min_quantity (min_quantity = 0)
if pricelist_item and pricelist_item.min_quantity == 0:
pricelist_item.ensure_one()
room_type_total_price_per_room += float(
pricelist_item.price[2:]
)
else:
# default price from room_type
room_type_total_price_per_room += (
room_type_iterator.product_id.list_price
)
room_type_total_price_per_room += product.price
# check there are rooms of the type
if room_type_iterator.total_rooms_count > 0:

View File

@@ -78,33 +78,19 @@ class AvailabilityWizard(models.TransientModel):
pricelist=record.folio_wizard_id.pricelist_id.id,
)
num_rooms_available_by_date.append(len(rooms_available))
# get pricelist item
pricelist_item = self.env["product.pricelist.item"].search(
[
("pricelist_id", "=", record.folio_wizard_id.pricelist_id.id),
("date_start_overnight", ">=", date_iterator),
("date_end_overnight", "<=", date_iterator),
("applied_on", "=", "1_product"),
(
"product_tmpl_id",
"=",
record.room_type_id.product_id.product_tmpl_id.id,
),
]
partner = record.folio_wizard_id.partner_id
product = record.room_type_id.product_id
product = product.with_context(
lang=partner.lang,
partner=partner.id,
quantity=1,
date=fields.Date.today(),
date_overnight=date_iterator,
pricelist=record.folio_wizard_id.pricelist_id.id,
uom=product.uom_id.id,
property=record.folio_wizard_id.pms_property_id.id,
)
# check if applies pricelist item
if (
pricelist_item
and record.num_rooms_selected.value >= pricelist_item.min_quantity
):
pricelist_item.ensure_one()
room_type_total_price_per_room += float(pricelist_item.price[2:])
else:
room_type_total_price_per_room += (
record.room_type_id.product_id.list_price
)
room_type_total_price_per_room += product.price
# get the availability for the entire stay (min of all dates)
if num_rooms_available_by_date: