mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
[IMP]: product_template daily_limit and list_price depends of property
This commit is contained in:
@@ -3,11 +3,14 @@ from odoo import fields, models
|
|||||||
|
|
||||||
class IrPmsProperty(models.Model):
|
class IrPmsProperty(models.Model):
|
||||||
_name = "ir.pms.property"
|
_name = "ir.pms.property"
|
||||||
|
_description = "IrPmsProperty"
|
||||||
pms_property_id = fields.Many2one(string="Properties", comodel_name="pms.property")
|
pms_property_id = fields.Many2one(string="Properties", comodel_name="pms.property")
|
||||||
|
|
||||||
model_id = fields.Many2one(string="Model", comodel_name="ir.model")
|
model_id = fields.Many2one(string="Model", comodel_name="ir.model")
|
||||||
|
|
||||||
field_id = fields.Many2one(string="Field", comodel_name="ir.model.fields")
|
field_id = fields.Many2one(string="Field", comodel_name="ir.model.fields")
|
||||||
|
record = fields.Integer(string="Record Id")
|
||||||
|
|
||||||
value = fields.Integer(string="Field Value")
|
value_integer = fields.Integer(string="Integer Field Value")
|
||||||
|
|
||||||
|
value_float = fields.Float(string="Float Field Value")
|
||||||
|
|
||||||
|
value_reference = fields.Text(string="Reference Field Value")
|
||||||
|
|||||||
@@ -38,6 +38,8 @@ class PmsBoardServiceLine(models.Model):
|
|||||||
string="Amount",
|
string="Amount",
|
||||||
help="Price for this Board Service Line/Product",
|
help="Price for this Board Service Line/Product",
|
||||||
default=lambda self: self._get_default_price(),
|
default=lambda self: self._get_default_price(),
|
||||||
|
compute="_compute_amount",
|
||||||
|
inverse="_inverse_ir_pms_property",
|
||||||
digits=("Product Price"),
|
digits=("Product Price"),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -45,6 +47,58 @@ class PmsBoardServiceLine(models.Model):
|
|||||||
if self.product_id:
|
if self.product_id:
|
||||||
return self.product_id.list_price
|
return self.product_id.list_price
|
||||||
|
|
||||||
|
@api.depends_context("allowed_pms_property_ids")
|
||||||
|
# @api.depends("pms_property_ids")
|
||||||
|
def _compute_amount(self):
|
||||||
|
for record in self:
|
||||||
|
pms_property_id = self.env.user.get_active_property_ids()[0]
|
||||||
|
if pms_property_id:
|
||||||
|
model_id = self.env["ir.model"].browse(self._name).id
|
||||||
|
model = self.env["ir.model"].search([("model", "=", model_id)])
|
||||||
|
if model:
|
||||||
|
field_id = self.env["ir.model.fields"].search(
|
||||||
|
[("name", "=", "amount"), ("model_id", "=", model.id)]
|
||||||
|
)
|
||||||
|
ir_pms_property = self.env["ir.pms.property"].search(
|
||||||
|
[
|
||||||
|
("pms_property_id", "=", pms_property_id),
|
||||||
|
("field_id", "=", field_id[0].id),
|
||||||
|
("record", "=", record.id),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
if ir_pms_property:
|
||||||
|
record.amount = ir_pms_property.value_float
|
||||||
|
|
||||||
|
def _inverse_ir_pms_property(self):
|
||||||
|
for record in self:
|
||||||
|
pms_property_id = self.env.user.get_active_property_ids()[0]
|
||||||
|
if pms_property_id:
|
||||||
|
model_id = self.env["ir.model"].browse(self._name).id
|
||||||
|
model = self.env["ir.model"].search([("model", "=", model_id)])
|
||||||
|
if model:
|
||||||
|
field_id = self.env["ir.model.fields"].search(
|
||||||
|
[("name", "=", "amount"), ("model_id", "=", model.id)]
|
||||||
|
)
|
||||||
|
ir_pms_property = self.env["ir.pms.property"].search(
|
||||||
|
[
|
||||||
|
("pms_property_id", "=", pms_property_id),
|
||||||
|
("field_id", "=", field_id[0].id),
|
||||||
|
("record", "=", record.id),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
if ir_pms_property:
|
||||||
|
ir_pms_property.value_float = record.amount
|
||||||
|
else:
|
||||||
|
self.env["ir.pms.property"].create(
|
||||||
|
{
|
||||||
|
"pms_property_id": pms_property_id,
|
||||||
|
"model_id": model.id,
|
||||||
|
"field_id": field_id[0].id,
|
||||||
|
"value_float": record.amount,
|
||||||
|
"record": record.id,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
@api.onchange("product_id")
|
@api.onchange("product_id")
|
||||||
def onchange_product_id(self):
|
def onchange_product_id(self):
|
||||||
if self.product_id:
|
if self.product_id:
|
||||||
|
|||||||
@@ -38,9 +38,11 @@ class ProductTemplate(models.Model):
|
|||||||
string="Daily limit",
|
string="Daily limit",
|
||||||
help="Indicates how much products can consumed in one day",
|
help="Indicates how much products can consumed in one day",
|
||||||
compute="_compute_daily_limit",
|
compute="_compute_daily_limit",
|
||||||
inverse="_inverse_ir_pms_property",
|
inverse="_inverse_daily_limit",
|
||||||
readonly=False,
|
)
|
||||||
store=True,
|
list_price = fields.Float(
|
||||||
|
compute="_compute_list_price",
|
||||||
|
inverse="_inverse_list_price",
|
||||||
)
|
)
|
||||||
is_extra_bed = fields.Boolean(
|
is_extra_bed = fields.Boolean(
|
||||||
string="Is extra bed",
|
string="Is extra bed",
|
||||||
@@ -53,47 +55,108 @@ class ProductTemplate(models.Model):
|
|||||||
default=False,
|
default=False,
|
||||||
)
|
)
|
||||||
|
|
||||||
# @api.depends_context("allowed_pms_property_ids")
|
@api.depends_context("allowed_pms_property_ids")
|
||||||
@api.depends("pms_property_ids")
|
# @api.depends("pms_property_ids")
|
||||||
def _compute_daily_limit(self):
|
def _compute_daily_limit(self):
|
||||||
for record in self:
|
for record in self:
|
||||||
pms_property_id = False
|
pms_property_id = self.env.user.get_active_property_ids()[0]
|
||||||
if record.pms_property_ids:
|
|
||||||
pms_property_id = self.env.user.get_active_property_ids()[0]
|
|
||||||
if pms_property_id:
|
if pms_property_id:
|
||||||
property = self.env["pms.property"].browse(pms_property_id)
|
model_id = self.env["ir.model"].browse(self._name).id
|
||||||
else:
|
model = self.env["ir.model"].search([("model", "=", model_id)])
|
||||||
property = False
|
if model:
|
||||||
if property:
|
field_id = self.env["ir.model.fields"].search(
|
||||||
model_id = self.env["ir.model"].browse(self._name)
|
[("name", "=", "daily_limit"), ("model_id", "=", model.id)]
|
||||||
model = self.env["ir.model"].search([("id", "=", model_id)])
|
)
|
||||||
field_id = self.env["ir.model.fields"].search(
|
ir_pms_property = self.env["ir.pms.property"].search(
|
||||||
[("name", "=", "daily_limit"), ("model_id", "=", model)]
|
[
|
||||||
)
|
("pms_property_id", "=", pms_property_id),
|
||||||
ir_pms_property = self.env["ir.pms.property"].search(
|
("field_id", "=", field_id[0].id),
|
||||||
[
|
("record", "=", record.id),
|
||||||
("pms_property_id", "=", property.id),
|
]
|
||||||
("field_id", "=", field_id.id),
|
)
|
||||||
("res_id", "=", record),
|
if ir_pms_property:
|
||||||
]
|
record.daily_limit = ir_pms_property.value_integer
|
||||||
)
|
else:
|
||||||
record.daily_limit = ir_pms_property.value
|
record.daily_limit = False
|
||||||
|
|
||||||
def _inverse_ir_pms_property(self):
|
@api.depends_context("allowed_pms_property_ids")
|
||||||
|
# @api.depends("pms_property_ids")
|
||||||
|
def _compute_list_price(self):
|
||||||
for record in self:
|
for record in self:
|
||||||
pms_property_id = self.env.user.get_active_property_ids()[0]
|
pms_property_id = self.env.user.get_active_property_ids()[0]
|
||||||
field_id = self.env["ir.model.fields"].search(
|
if pms_property_id:
|
||||||
[("name", "=", "daily_limit")]
|
model_id = self.env["ir.model"].browse(self._name).id
|
||||||
)
|
model = self.env["ir.model"].search([("model", "=", model_id)])
|
||||||
model_id = self.env["ir.model"].search([("field_id", "=", field_id[1].id)])
|
if model:
|
||||||
ir_pms_property = self.env["ir.pms.property"].search(
|
field_id = self.env["ir.model.fields"].search(
|
||||||
[
|
[("name", "=", "list_price"), ("model_id", "=", model.id)]
|
||||||
("pms_property_id", "=", pms_property_id),
|
)
|
||||||
("model_id", "=", model_id.id),
|
ir_pms_property = self.env["ir.pms.property"].search(
|
||||||
("field_id", "=", field_id[1].id),
|
[
|
||||||
]
|
("pms_property_id", "=", pms_property_id),
|
||||||
)
|
("field_id", "=", field_id[0].id),
|
||||||
if ir_pms_property:
|
("record", "=", record.id),
|
||||||
ir_pms_property.value = record.daily_limit
|
]
|
||||||
# else:
|
)
|
||||||
# crear
|
if ir_pms_property:
|
||||||
|
record.list_price = ir_pms_property.value_float
|
||||||
|
|
||||||
|
def _inverse_daily_limit(self):
|
||||||
|
for record in self:
|
||||||
|
pms_property_id = self.env.user.get_active_property_ids()[0]
|
||||||
|
if pms_property_id:
|
||||||
|
model_id = self.env["ir.model"].browse(self._name).id
|
||||||
|
model = self.env["ir.model"].search([("model", "=", model_id)])
|
||||||
|
if model:
|
||||||
|
field_id = self.env["ir.model.fields"].search(
|
||||||
|
[("name", "=", "daily_limit"), ("model_id", "=", model.id)]
|
||||||
|
)
|
||||||
|
ir_pms_property = self.env["ir.pms.property"].search(
|
||||||
|
[
|
||||||
|
("pms_property_id", "=", pms_property_id),
|
||||||
|
("field_id", "=", field_id[0].id),
|
||||||
|
("record", "=", record.id),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
if ir_pms_property:
|
||||||
|
ir_pms_property.value_integer = record.daily_limit
|
||||||
|
else:
|
||||||
|
self.env["ir.pms.property"].create(
|
||||||
|
{
|
||||||
|
"pms_property_id": pms_property_id,
|
||||||
|
"model_id": model.id,
|
||||||
|
"field_id": field_id[0].id,
|
||||||
|
"value_integer": record.daily_limit,
|
||||||
|
"record": record.id,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
def _inverse_list_price(self):
|
||||||
|
for record in self:
|
||||||
|
pms_property_id = self.env.user.get_active_property_ids()[0]
|
||||||
|
if pms_property_id:
|
||||||
|
model_id = self.env["ir.model"].browse(self._name).id
|
||||||
|
model = self.env["ir.model"].search([("model", "=", model_id)])
|
||||||
|
if model:
|
||||||
|
field_id = self.env["ir.model.fields"].search(
|
||||||
|
[("name", "=", "list_price"), ("model_id", "=", model.id)]
|
||||||
|
)
|
||||||
|
ir_pms_property = self.env["ir.pms.property"].search(
|
||||||
|
[
|
||||||
|
("pms_property_id", "=", pms_property_id),
|
||||||
|
("field_id", "=", field_id[0].id),
|
||||||
|
("record", "=", record.id),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
if ir_pms_property:
|
||||||
|
ir_pms_property.value_float = record.list_price
|
||||||
|
else:
|
||||||
|
self.env["ir.pms.property"].create(
|
||||||
|
{
|
||||||
|
"pms_property_id": pms_property_id,
|
||||||
|
"model_id": model.id,
|
||||||
|
"field_id": field_id[0].id,
|
||||||
|
"value_float": record.list_price,
|
||||||
|
"record": record.id,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user