Skip to content
Extraits de code Groupes Projets
Valider 2c062df1 rédigé par Juliana's avatar Juliana
Parcourir les fichiers

[ADD]Add computed name project and intervention

parent e284b8e4
Branches
Étiquettes
Aucune requête de fusion associée trouvée
...@@ -8,3 +8,4 @@ from . import sale_order_line ...@@ -8,3 +8,4 @@ from . import sale_order_line
from . import sale_project from . import sale_project
from . import sale_intervention_plant_sequence from . import sale_intervention_plant_sequence
from . import sale_intervention from . import sale_intervention
from . import res_partner
...@@ -5,14 +5,19 @@ from odoo import fields, models, api ...@@ -5,14 +5,19 @@ from odoo import fields, models, api
class ResPartner(models.Model): class ResPartner(models.Model):
_inherit = 'rs.patner' _inherit = 'res.partner'
# ------------------------------------------------------ # ------------------------------------------------------
# Fields declaration # Fields declaration
# ------------------------------------------------------ # ------------------------------------------------------
sale_project_count = fields.Integer( sale_project_count = fields.Integer(
# compute='_compute_sale_project_count', compute='_compute_sale_project_count',
string='Nombre de projets') string='Nombre de projets')
sale_project_ids = fields.One2many(
'sale.project',
'partner_id',
"Liste des projets"
)
# ------------------------------------------------------ # ------------------------------------------------------
# SQL Constraints # SQL Constraints
...@@ -25,21 +30,10 @@ class ResPartner(models.Model): ...@@ -25,21 +30,10 @@ class ResPartner(models.Model):
# ------------------------------------------------------ # ------------------------------------------------------
# Computed fields / Search Fields # Computed fields / Search Fields
# ------------------------------------------------------ # ------------------------------------------------------
# def _compute_sale_project_count(self): @api.depends('sale_project_ids')
# # retrieve all children partners and prefetch 'parent_id' on them def _compute_sale_project_count(self):
# all_partners = self.with_context(active_test=False).search([('id', 'child_of', self.ids)]) for res in self:
# all_partners.read(['parent_id']) res.sale_project_count = self.env['sale.project'].search_count([('partner_id', '=', self.id)])
#
# sale_order_groups = self.env['sale.order'].read_group(
# domain=[('partner_id', 'in', all_partners.ids)],
# fields=['partner_id'], groupby=['partner_id']
# )
# for group in sale_order_groups:
# partner = self.browse(group['partner_id'][0])
# while partner:
# if partner in self:
# partner.sale_order_count += group['partner_id_count']
# partner = partner.parent_id
# ------------------------------------------------------ # ------------------------------------------------------
# Onchange / Constraints # Onchange / Constraints
# ------------------------------------------------------ # ------------------------------------------------------
......
...@@ -27,8 +27,6 @@ class SaleIntervention(models.Model): ...@@ -27,8 +27,6 @@ class SaleIntervention(models.Model):
# ------------------------------------------------------ # ------------------------------------------------------
# TODO: lock almost all fields (at least the ones with impact on price) # TODO: lock almost all fields (at least the ones with impact on price)
# when sale order confirmed # when sale order confirmed
# TODO: implement sequence on name (project.name-number), order by name
# make this field as required auto-calculated and remove sequence field
name = fields.Char("Nom", group_operator="count") name = fields.Char("Nom", group_operator="count")
sequence = fields.Integer("Sequence", default=10) sequence = fields.Integer("Sequence", default=10)
project_id = fields.Many2one( project_id = fields.Many2one(
...@@ -798,6 +796,8 @@ class SaleIntervention(models.Model): ...@@ -798,6 +796,8 @@ class SaleIntervention(models.Model):
def create(self, vals_list): def create(self, vals_list):
res = super().create(vals_list) res = super().create(vals_list)
for rec in res: for rec in res:
seq = str(rec.project_id.intervention_counter).zfill(3)
rec.name = rec.project_id.name + '-' + seq
rec._create_sale_intervention_stock_lines() rec._create_sale_intervention_stock_lines()
return res return res
......
...@@ -20,9 +20,9 @@ class SaleProject(models.Model): ...@@ -20,9 +20,9 @@ class SaleProject(models.Model):
required=True, required=True,
ondelete="cascade", ondelete="cascade",
) )
partner_id = fields.Many2one(
'res.partner', related='sale_order_id.partner_id', store=True)
# TODO: implement sequence on name (partner.ref-year-number) - use sequence for year-number
# make this field as required auto-calculated, order by name and remove sequence field
name = fields.Char("Nom", default=lambda self: _('Nouveau projet')) name = fields.Char("Nom", default=lambda self: _('Nouveau projet'))
user_id = fields.Many2one( user_id = fields.Many2one(
...@@ -69,6 +69,9 @@ class SaleProject(models.Model): ...@@ -69,6 +69,9 @@ class SaleProject(models.Model):
inverse_name="project_id", inverse_name="project_id",
string="Interventions", string="Interventions",
) )
intervention_counter = fields.Integer(
compute='_compute_intervention_counter',
string="Nombre d'interventions")
sale_order_line_ids = fields.One2many( sale_order_line_ids = fields.One2many(
comodel_name="sale.order.line", comodel_name="sale.order.line",
...@@ -87,7 +90,10 @@ class SaleProject(models.Model): ...@@ -87,7 +90,10 @@ class SaleProject(models.Model):
# ------------------------------------------------------ # ------------------------------------------------------
# Computed fields / Search Fields # Computed fields / Search Fields
# ------------------------------------------------------ # ------------------------------------------------------
@api.depends('intervention_ids')
def _compute_intervention_counter(self):
for res in self:
res.intervention_counter = self.env['sale.intervention'].search_count([('project_id', '=', self.id)])
# ------------------------------------------------------ # ------------------------------------------------------
# Onchange / Constraints # Onchange / Constraints
# ------------------------------------------------------ # ------------------------------------------------------
...@@ -101,7 +107,8 @@ class SaleProject(models.Model): ...@@ -101,7 +107,8 @@ class SaleProject(models.Model):
res = super().create(vals_list) res = super().create(vals_list)
for rec in res: for rec in res:
rec.geo_sector_id = rec.sale_order_id.partner_id.geo_sector_id.id rec.geo_sector_id = rec.sale_order_id.partner_id.geo_sector_id.id
rec.name = rec.sale_order_id.partner_id.ref + '-' + datetime.now().strftime("%y") seq = str(rec.sale_order_id.partner_id.sale_project_count).zfill(3)
rec.name = rec.sale_order_id.partner_id.ref + '-' + datetime.now().strftime("%y") + '-' + seq
def unlink(self): def unlink(self):
self.sale_order_line_ids.unlink() self.sale_order_line_ids.unlink()
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter