diff --git a/recurring_contract/models/contract_group.py b/recurring_contract/models/contract_group.py index 6e7c2089..fe3a9c38 100644 --- a/recurring_contract/models/contract_group.py +++ b/recurring_contract/models/contract_group.py @@ -589,7 +589,7 @@ def build_inv_line_data( contract = contract_line.contract_id product = contract_line.product_id.with_company(self.company_id.id) line_name = product.name - if contract_line.pricelist_item_count: + if contract_line.amount_from_pricelist: price = self.pricelist_id._get_product_price( product, qty, date=invoicing_date ) diff --git a/recurring_contract/models/move_line.py b/recurring_contract/models/move_line.py index aaeb6a2b..eb485318 100644 --- a/recurring_contract/models/move_line.py +++ b/recurring_contract/models/move_line.py @@ -88,7 +88,7 @@ def _update_invoice_lines_from_contract(self, modified_contract): lambda cl, invl=invoice_line: cl.product_id == invl.product_id ) data_dict = {} - if contract_line.product_id.pricelist_item_count > 0: + if contract_line.amount_from_pricelist: price = modified_contract.pricelist_id._get_product_price( contract_line.product_id, quantity=contract_line.quantity, diff --git a/recurring_contract/models/recurring_contract_line.py b/recurring_contract/models/recurring_contract_line.py index 03264113..f55aa54c 100644 --- a/recurring_contract/models/recurring_contract_line.py +++ b/recurring_contract/models/recurring_contract_line.py @@ -53,6 +53,10 @@ def _compute_display_name(self): quantity = fields.Integer(default=1, required=True) subtotal = fields.Float(compute="_compute_subtotal", store=True) pricelist_item_count = fields.Integer(related="product_id.pricelist_item_count") + amount_from_pricelist = fields.Boolean( + compute="_compute_amount_from_pricelist", + help="The invoiced price comes from the pricelist instead of the line price.", + ) _sql_constraints = [ ( @@ -67,6 +71,11 @@ def _compute_subtotal(self): for contract_line in self: contract_line.subtotal = contract_line.amount * contract_line.quantity + @api.depends("product_id") + def _compute_amount_from_pricelist(self): + for line in self: + line.amount_from_pricelist = line.pricelist_item_count > 0 + @api.onchange("product_id") def on_change_product_id(self): for line in self.filtered("product_id"): diff --git a/recurring_contract/views/recurring_contract_view.xml b/recurring_contract/views/recurring_contract_view.xml index 9884104c..5b684ce1 100644 --- a/recurring_contract/views/recurring_contract_view.xml +++ b/recurring_contract/views/recurring_contract_view.xml @@ -206,12 +206,8 @@ - - + +