From 3c9aa38a2ab96dac6c85788c27b025501020d387 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20BEAU?= Date: Thu, 1 Aug 2024 08:01:03 +0200 Subject: [PATCH 1/2] shopinvader_schema_sale: allow to hide some line in the schema (like delivery...) --- shopinvader_schema_sale/__init__.py | 1 + shopinvader_schema_sale/models/__init__.py | 1 + .../models/sale_order_line.py | 21 +++++++++++++++++++ shopinvader_schema_sale/schemas/sale.py | 6 +++++- 4 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 shopinvader_schema_sale/models/__init__.py create mode 100644 shopinvader_schema_sale/models/sale_order_line.py diff --git a/shopinvader_schema_sale/__init__.py b/shopinvader_schema_sale/__init__.py index a51a83a6f8..c4def59b59 100644 --- a/shopinvader_schema_sale/__init__.py +++ b/shopinvader_schema_sale/__init__.py @@ -1 +1,2 @@ from . import schemas +from . import models diff --git a/shopinvader_schema_sale/models/__init__.py b/shopinvader_schema_sale/models/__init__.py new file mode 100644 index 0000000000..8eb9d1d404 --- /dev/null +++ b/shopinvader_schema_sale/models/__init__.py @@ -0,0 +1 @@ +from . import sale_order_line diff --git a/shopinvader_schema_sale/models/sale_order_line.py b/shopinvader_schema_sale/models/sale_order_line.py new file mode 100644 index 0000000000..fea2495be8 --- /dev/null +++ b/shopinvader_schema_sale/models/sale_order_line.py @@ -0,0 +1,21 @@ +# Copyright 2024 Akretion (https://www.akretion.com). +# @author Sébastien BEAU +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class SaleOrderLine(models.Model): + _inherit = "sale.order.line" + + visible_in_shopinvader_api = fields.Boolean( + compute="_compute_visible_in_shopinvader_api", store=True + ) + + def _is_visible_in_shopinvader_api(self): + self.ensure_one() + return True + + def _compute_visible_in_shopinvader_api(self): + for record in self: + record.visible_in_shopinvader_api = record._is_visible_in_shopinvader_api() diff --git a/shopinvader_schema_sale/schemas/sale.py b/shopinvader_schema_sale/schemas/sale.py index 0b0fa195ec..01c9c216b8 100644 --- a/shopinvader_schema_sale/schemas/sale.py +++ b/shopinvader_schema_sale/schemas/sale.py @@ -40,7 +40,11 @@ def from_sale_order(cls, odoo_rec): client_order_ref=odoo_rec.client_order_ref or None, date_order=odoo_rec.date_order, date_commitment=odoo_rec.commitment_date or None, - lines=[SaleLine.from_sale_order_line(line) for line in odoo_rec.order_line], + lines=[ + SaleLine.from_sale_order_line(line) + for line in odoo_rec.order_line + if line.visible_in_shopinvader_api + ], amount=SaleAmount.from_sale_order(odoo_rec), delivery=DeliveryInfo.from_sale_order(odoo_rec), invoicing=InvoicingInfo.from_sale_order(odoo_rec), From 74268a5823a9a6fc5663122309ed6d5cff50772c Mon Sep 17 00:00:00 2001 From: Benoit Date: Wed, 16 Oct 2024 10:29:45 +0200 Subject: [PATCH 2/2] [FIX] force compute of the field at creation --- shopinvader_schema_sale/models/sale_order_line.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/shopinvader_schema_sale/models/sale_order_line.py b/shopinvader_schema_sale/models/sale_order_line.py index fea2495be8..4f5c872735 100644 --- a/shopinvader_schema_sale/models/sale_order_line.py +++ b/shopinvader_schema_sale/models/sale_order_line.py @@ -2,7 +2,7 @@ # @author Sébastien BEAU # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -from odoo import fields, models +from odoo import api, fields, models class SaleOrderLine(models.Model): @@ -16,6 +16,7 @@ def _is_visible_in_shopinvader_api(self): self.ensure_one() return True + @api.depends("product_id") def _compute_visible_in_shopinvader_api(self): for record in self: record.visible_in_shopinvader_api = record._is_visible_in_shopinvader_api()