diff --git a/event_sale_balance/__manifest__.py b/event_sale_balance/__manifest__.py index 006d92d..a696e66 100644 --- a/event_sale_balance/__manifest__.py +++ b/event_sale_balance/__manifest__.py @@ -28,6 +28,7 @@ ], "data": [ "views/product_product.xml", + "views/product_template.xml", ], "css": [], "images": [], diff --git a/event_sale_balance/i18n/fr.po b/event_sale_balance/i18n/fr.po new file mode 100644 index 0000000..99cdb6f --- /dev/null +++ b/event_sale_balance/i18n/fr.po @@ -0,0 +1,49 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * event_sale_balance +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0+e-20230613\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-01-13 13:10+0000\n" +"PO-Revision-Date: 2024-01-13 13:10+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: event_sale_balance +#: model:ir.model.fields,field_description:event_sale_balance.field_product_product__balance_variant_id +#: model:ir.model.fields,field_description:event_sale_balance.field_product_template__balance_variant_id +msgid "Balance variant" +msgstr "Article de solde" + +#. module: event_sale_balance +#: model:ir.model,name:event_sale_balance.model_event_registration +msgid "Event Registration" +msgstr "Inscription à l'événement" + +#. module: event_sale_balance +#: model:ir.model.fields,field_description:event_sale_balance.field_product_product__is_event_deposit +#: model:ir.model.fields,field_description:event_sale_balance.field_product_template__is_event_deposit +msgid "Event deposit" +msgstr "Arrhe d'évènement" + +#. module: event_sale_balance +#: model_terms:ir.ui.view,arch_db:event_sale_balance.product_template_form_view_inherit +#: model_terms:ir.ui.view,arch_db:event_sale_balance.product_variant_easy_edit_view_inherit +msgid "Event sale" +msgstr "Ventes sur évènements" + +#. module: event_sale_balance +#: model:ir.model,name:event_sale_balance.model_product_template +msgid "Product" +msgstr "Produit" + +#. module: event_sale_balance +#: model:ir.model,name:event_sale_balance.model_product_product +msgid "Product Variant" +msgstr "Variante de produit" diff --git a/event_sale_balance/models/product_template.py b/event_sale_balance/models/product_template.py index 3bfbf6b..c20b0ce 100644 --- a/event_sale_balance/models/product_template.py +++ b/event_sale_balance/models/product_template.py @@ -1,8 +1,87 @@ -from odoo import models, fields +from odoo import models, fields, api class ProductTemplate(models.Model): _inherit = "product.template" - is_event_deposit = fields.Boolean("Event deposit") - balance_variant_id = fields.Many2one("product.product", string="Balance variant") + is_event_deposit = fields.Boolean( + string="Event deposit", + compute="_compute_is_event_deposit", + inverse="_set_is_event_deposit", + search="_search_is_event_deposit", + ) + balance_variant_id = fields.Many2one( + comodel_name="product.product", + string="Balance variant", + compute="_compute_balance_variant_id", + inverse="_set_balance_variant_id", + search="_search_balance_variant_id", + ) + + @api.depends("product_variant_ids.is_event_deposit") + def _compute_is_event_deposit(self): + self.is_event_deposit = False + for template in self: + variant_count = len(template.product_variant_ids) + if variant_count == 1: + template.is_event_deposit = ( + template.product_variant_ids.is_event_deposit + ) + elif variant_count == 0: + archived_variants = template.with_context( + active_test=False + ).product_variant_ids + if len(archived_variants) == 1: + template.is_event_deposit = archived_variants.is_event_deposit + + def _search_is_event_deposit(self, operator, value): + query = self.with_context(active_test=False)._search( + [("product_variant_ids.is_event_deposit", operator, value)] + ) + return [("id", "in", query)] + + def _set_is_event_deposit(self): + variant_count = len(self.product_variant_ids) + if variant_count == 1: + self.product_variant_ids.is_event_deposit = self.is_event_deposit + elif variant_count == 0: + archived_variants = self.with_context(active_test=False).product_variant_ids + if len(archived_variants) == 1: + archived_variants.is_event_deposit = self.is_event_deposit + + @api.depends("product_variant_ids.balance_variant_id") + def _compute_balance_variant_id(self): + self.balance_variant_id = False + for template in self: + variant_count = len(template.product_variant_ids) + if variant_count == 1: + template.balance_variant_id = ( + template.product_variant_ids.balance_variant_id + ) + elif variant_count == 0: + archived_variants = template.with_context( + active_test=False + ).product_variant_ids + if len(archived_variants) == 1: + template.balance_variant_id = archived_variants.balance_variant_id + + def _search_balance_variant_id(self, operator, value): + query = self.with_context(active_test=False)._search( + [("product_variant_ids.balance_variant_id", operator, value)] + ) + return [("id", "in", query)] + + def _set_balance_variant_id(self): + variant_count = len(self.product_variant_ids) + if variant_count == 1: + self.product_variant_ids.balance_variant_id = self.balance_variant_id + elif variant_count == 0: + archived_variants = self.with_context(active_test=False).product_variant_ids + if len(archived_variants) == 1: + archived_variants.balance_variant_id = self.balance_variant_id + + def _get_related_fields_variant_template(self): + return super()._get_related_fields_variant_template() + [ + "is_event_deposit", + "balance_variant_id", + ] diff --git a/event_sale_balance/views/product_product.xml b/event_sale_balance/views/product_product.xml index bfc5c27..9d63b22 100644 --- a/event_sale_balance/views/product_product.xml +++ b/event_sale_balance/views/product_product.xml @@ -12,13 +12,14 @@ - + - + \ No newline at end of file diff --git a/event_sale_balance/views/product_template.xml b/event_sale_balance/views/product_template.xml new file mode 100644 index 0000000..ecf17d1 --- /dev/null +++ b/event_sale_balance/views/product_template.xml @@ -0,0 +1,20 @@ + + + + + product.template.common.form.inherit + product.template + + + + + + + + + + + + \ No newline at end of file