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