RemiFr82
10 months ago
5 changed files with 156 additions and 6 deletions
-
1event_sale_balance/__manifest__.py
-
49event_sale_balance/i18n/fr.po
-
85event_sale_balance/models/product_template.py
-
7event_sale_balance/views/product_product.xml
-
20event_sale_balance/views/product_template.xml
@ -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" |
@ -1,8 +1,87 @@ |
|||||
from odoo import models, fields |
|
||||
|
from odoo import models, fields, api |
||||
|
|
||||
|
|
||||
class ProductTemplate(models.Model): |
class ProductTemplate(models.Model): |
||||
_inherit = "product.template" |
_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", |
||||
|
] |
@ -0,0 +1,20 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<odoo> |
||||
|
|
||||
|
<record id="product_template_form_view_inherit" model="ir.ui.view"> |
||||
|
<field name="name">product.template.common.form.inherit</field> |
||||
|
<field name="model">product.template</field> |
||||
|
<field name="inherit_id" ref="product.product_template_form_view" /> |
||||
|
<field name="arch" type="xml"> |
||||
|
<group name="description" position="after"> |
||||
|
<group name="event" string="Event sale" |
||||
|
attrs="{'invisible': ['|',('detailed_type','!=','event'),'&',('product_variant_count','>', 1), ('is_product_variant', '=', False)]}"> |
||||
|
<field name="is_event_deposit" /> |
||||
|
<field name="balance_variant_id" options="{'no_create': 1}" |
||||
|
attrs="{'invisible':[('is_event_deposit','=',False)],'required':[('is_event_deposit','=',True)]}" /> |
||||
|
</group> |
||||
|
</group> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
</odoo> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue