diff --git a/data/product_category.xml b/data/product_category.xml index a2692c757c7f5c38099140b661c849c62a754e53..a43eb31af1cc86311ce37b7ca5ef8a67b2dc9c80 100644 --- a/data/product_category.xml +++ b/data/product_category.xml @@ -6,15 +6,24 @@ <field name="name">Fournitures plantation</field> </record> <record id="product_category_mulch" model="product.category"> - <field name="parent_id" ref="ap_sale_project.product_category_plantation_supply" /> + <field + name="parent_id" + ref="ap_sale_project.product_category_plantation_supply" + /> <field name="name">Paillage</field> </record> <record id="product_category_stake" model="product.category"> - <field name="parent_id" ref="ap_sale_project.product_category_plantation_supply" /> + <field + name="parent_id" + ref="ap_sale_project.product_category_plantation_supply" + /> <field name="name">Piquets</field> </record> <record id="product_category_protection" model="product.category"> - <field name="parent_id" ref="ap_sale_project.product_category_plantation_supply" /> + <field + name="parent_id" + ref="ap_sale_project.product_category_plantation_supply" + /> <field name="name">Protections</field> </record> <record id="product_category_protection_high" model="product.category"> @@ -25,6 +34,20 @@ <field name="parent_id" ref="ap_sale_project.product_category_protection" /> <field name="name">Protections Basses</field> </record> + <record id="product_category_marker" model="product.category"> + <field + name="parent_id" + ref="ap_sale_project.product_category_plantation_supply" + /> + <field name="name">Jalons</field> + </record> + <record id="product_category_other_hw" model="product.category"> + <field + name="parent_id" + ref="ap_sale_project.product_category_plantation_supply" + /> + <field name="name">Autres Fournitures</field> + </record> <record id="product_category_plant" model="product.category"> <field name="parent_id" ref="product.product_category_all" /> <field name="name">Plants</field> @@ -44,26 +67,10 @@ <field name="name">Haut jet</field> <field name="symbol">fa-caret-up</field> </record> - <record id="product_category_plant_tree" model="product.category"> - <field name="parent_id" ref="ap_sale_project.product_category_plant" /> - <field name="name">Arbres</field> - </record> - <record id="product_category_plant_shrub" model="product.category"> - <field name="parent_id" ref="ap_sale_project.product_category_plant" /> - <field name="name">Arbustes</field> - </record> - <record id="product_category_marker" model="product.category"> - <field name="parent_id" ref="product.product_category_all" /> - <field name="name">Jalons</field> - </record> <record id="product_category_service" model="product.category"> <field name="parent_id" ref="product.product_category_all" /> <field name="name">Services</field> </record> - <record id="product_category_other_hw" model="product.category"> - <field name="parent_id" ref="product.product_category_all" /> - <field name="name">Autres Fournitures</field> - </record> <record id="product_category_membership" model="product.category"> <field name="parent_id" ref="product.product_category_all" /> <field name="name">Adhésion</field> diff --git a/data/sale_project_advancement_data.xml b/data/sale_project_advancement_data.xml index 4bbb21075809a1a06920c775467f2050e937fddb..a06d1889e9a64a83988543aa74808810749430f3 100644 --- a/data/sale_project_advancement_data.xml +++ b/data/sale_project_advancement_data.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="utf-8" ?> <odoo> <data noupdate="1"> diff --git a/models/product_category.py b/models/product_category.py index 7d8c3dd9ddd0454ccdf5e7aa3573fe5595fdd9b5..ef64a702883373e45b92454f0a4a4a36aa09c5bd 100644 --- a/models/product_category.py +++ b/models/product_category.py @@ -1,7 +1,8 @@ # Copyright 2021 Le Filament (<http://www.le-filament.com>) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from odoo import fields, models, api +from odoo import fields, models + class ProductCategory(models.Model): _inherit = "product.category" diff --git a/models/res_partner.py b/models/res_partner.py index 548b2e1eaed7aa14ce2177d205cd3c1d3da567f6..e1dde58ca3fd347bafc6edf23c79eef6548947d0 100644 --- a/models/res_partner.py +++ b/models/res_partner.py @@ -1,22 +1,20 @@ # Copyright 2021 Le Filament (<http://www.le-filament.com>) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from odoo import fields, models, api +from odoo import api, fields, models class ResPartner(models.Model): - _inherit = 'res.partner' + _inherit = "res.partner" # ------------------------------------------------------ # Fields declaration # ------------------------------------------------------ sale_project_count = fields.Integer( - compute='_compute_sale_project_count', - string='Nombre de projets') + compute="_compute_sale_project_count", string="Nombre de projets" + ) sale_project_ids = fields.One2many( - 'sale.project', - 'partner_id', - "Liste des projets" + "sale.project", "partner_id", "Liste des projets" ) # ------------------------------------------------------ @@ -30,10 +28,13 @@ class ResPartner(models.Model): # ------------------------------------------------------ # Computed fields / Search Fields # ------------------------------------------------------ - @api.depends('sale_project_ids') + @api.depends("sale_project_ids") def _compute_sale_project_count(self): for res in self: - res.sale_project_count = self.env['sale.project'].search_count([('partner_id', '=', self.id)]) + res.sale_project_count = self.env["sale.project"].search_count( + [("partner_id", "=", self.id)] + ) + # ------------------------------------------------------ # Onchange / Constraints # ------------------------------------------------------ diff --git a/models/sale_intervention.py b/models/sale_intervention.py index 0ef436c27582cf9339993f8de11561cf98602e4b..c2746f16257f745068128c1146750e4f10c10942 100644 --- a/models/sale_intervention.py +++ b/models/sale_intervention.py @@ -46,7 +46,8 @@ class SaleIntervention(models.Model): ondelete="restrict", required=True, group_operator="count_distinct", - readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}, + readonly=True, + states={"draft": [("readonly", False)], "sent": [("readonly", False)]}, ) intervention_uom_name = fields.Char( related="intervention_type_id.uom_name", string="Unité de mesure intervention" @@ -66,17 +67,21 @@ class SaleIntervention(models.Model): intervention_length = fields.Float( string="Longueur de Haie (en m)", group_operator="sum", - readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} + readonly=True, + states={"draft": [("readonly", False)], "sent": [("readonly", False)]}, ) plant_interval = fields.Float( - "Intervalle entre les plants (en m)", group_operator="sum", - readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} + "Intervalle entre les plants (en m)", + group_operator="sum", + readonly=True, + states={"draft": [("readonly", False)], "sent": [("readonly", False)]}, ) # If calculated by units plant_qty = fields.Integer( string="Nombre de Plants", group_operator="sum", - readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} + readonly=True, + states={"draft": [("readonly", False)], "sent": [("readonly", False)]}, ) surface = fields.Integer( @@ -92,10 +97,14 @@ class SaleIntervention(models.Model): # FOURNITURES is_collarette = fields.Boolean( string="Collerettes", - readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}) + readonly=True, + states={"draft": [("readonly", False)], "sent": [("readonly", False)]}, + ) collarette_qty = fields.Integer( string="Nombre de collerettes", - readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}) + readonly=True, + states={"draft": [("readonly", False)], "sent": [("readonly", False)]}, + ) # Mulch Fields mulch_id = fields.Many2one( @@ -105,11 +114,14 @@ class SaleIntervention(models.Model): ("categ_id", "=", self.env.ref("ap_sale_project.product_category_mulch").id) ], ondelete="restrict", - readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} + readonly=True, + states={"draft": [("readonly", False)], "sent": [("readonly", False)]}, ) mulch_qty = fields.Float( string="Qté paillage 1", - readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}) + readonly=True, + states={"draft": [("readonly", False)], "sent": [("readonly", False)]}, + ) mulch_unit = fields.Many2one( "uom.uom", related="mulch_id.uom_id", @@ -118,7 +130,8 @@ class SaleIntervention(models.Model): ) mulch_has_staples = fields.Boolean( string="Paillage 1 avec agrafes", - readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} + readonly=True, + states={"draft": [("readonly", False)], "sent": [("readonly", False)]}, ) mulch2_id = fields.Many2one( comodel_name="product.template", @@ -127,23 +140,26 @@ class SaleIntervention(models.Model): ("categ_id", "=", self.env.ref("ap_sale_project.product_category_mulch").id) ], ondelete="restrict", - readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} + readonly=True, + states={"draft": [("readonly", False)], "sent": [("readonly", False)]}, ) mulch2_qty = fields.Float( string="Qté paillage 2", - readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} + readonly=True, + states={"draft": [("readonly", False)], "sent": [("readonly", False)]}, ) mulch2_unit = fields.Many2one( "uom.uom", related="mulch2_id.uom_id", readonly=True, string="Unité de mesure paillage 2", - states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} + states={"draft": [("readonly", False)], "sent": [("readonly", False)]}, ) mulch2_has_staples = fields.Boolean( string="Paillage 2 avec agrafes", - readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} + readonly=True, + states={"draft": [("readonly", False)], "sent": [("readonly", False)]}, ) # High protection @@ -158,13 +174,15 @@ class SaleIntervention(models.Model): ) ], ondelete="restrict", - readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} + readonly=True, + states={"draft": [("readonly", False)], "sent": [("readonly", False)]}, ) high_protection_qty = fields.Integer( string="Qté protégée haut", help="Qté de la plantation que l’on veut protéger par le haut \ (avec protections entrées au dessus)", - readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} + readonly=True, + states={"draft": [("readonly", False)], "sent": [("readonly", False)]}, ) stake_id = fields.Many2one( comodel_name="product.template", @@ -173,11 +191,13 @@ class SaleIntervention(models.Model): ("categ_id", "=", self.env.ref("ap_sale_project.product_category_stake").id) ], ondelete="restrict", - readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} + readonly=True, + states={"draft": [("readonly", False)], "sent": [("readonly", False)]}, ) stake_qty = fields.Float( string="Qté Piquets", - readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} + readonly=True, + states={"draft": [("readonly", False)], "sent": [("readonly", False)]}, ) # Low protection @@ -192,18 +212,21 @@ class SaleIntervention(models.Model): ) ], ondelete="restrict", - readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} + readonly=True, + states={"draft": [("readonly", False)], "sent": [("readonly", False)]}, ) low_protection_qty = fields.Integer( string="Qté protégée bas", help="Qté de la plantation que l’on veut protéger par le bas \ (avec protections entrées au dessus)", - readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} + readonly=True, + states={"draft": [("readonly", False)], "sent": [("readonly", False)]}, ) bamboo_qty = fields.Integer( string="Qté bambous", - readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} + readonly=True, + states={"draft": [("readonly", False)], "sent": [("readonly", False)]}, ) # Markers (Jalons) @@ -218,31 +241,36 @@ class SaleIntervention(models.Model): ) ], ondelete="restrict", - readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} + readonly=True, + states={"draft": [("readonly", False)], "sent": [("readonly", False)]}, ) marker_qty = fields.Integer( string="Qté jalons", - readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} + readonly=True, + states={"draft": [("readonly", False)], "sent": [("readonly", False)]}, ) sequence_type = fields.Selection( [("sequence", "Constuction en séquence"), ("list", "Construction en liste")], string="Type de séquence", - readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} + readonly=True, + states={"draft": [("readonly", False)], "sent": [("readonly", False)]}, ) plant_sequence_ids = fields.One2many( comodel_name="sale.intervention.plant.sequence", inverse_name="intervention_id", domain="[('is_list', '!=', True)]", string="Séquences", - readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} + readonly=True, + states={"draft": [("readonly", False)], "sent": [("readonly", False)]}, ) plant_list_ids = fields.One2many( comodel_name="sale.intervention.plant.sequence", inverse_name="intervention_id", domain="[('is_list', '=', True)]", string="Listes", - readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]} + readonly=True, + states={"draft": [("readonly", False)], "sent": [("readonly", False)]}, ) # Computed fields @@ -388,7 +416,7 @@ class SaleIntervention(models.Model): related="project_id.sale_order_id", string="Devis/Commande", ) - state = fields.Selection(related='sale_order_id.state', store=True) + state = fields.Selection(related="sale_order_id.state", store=True) sale_intervention_stock_ids = fields.One2many( comodel_name="sale.intervention.stock", inverse_name="sale_intervention_id", @@ -468,7 +496,7 @@ class SaleIntervention(models.Model): # ------------------------------------------------------ # Onchange / Constraints # ------------------------------------------------------ - @api.onchange('plant_qty', 'intervention_length', 'mulch_id') + @api.onchange("plant_qty", "intervention_length", "mulch_id") def _onchange_mulch_id(self): if self.mulch_unit == self.env.ref("uom.product_uom_meter"): self.mulch_qty = self.intervention_length @@ -477,7 +505,7 @@ class SaleIntervention(models.Model): else: self.mulch_qty = 0.0 - @api.onchange('plant_qty', 'intervention_length', 'mulch2_id') + @api.onchange("plant_qty", "intervention_length", "mulch2_id") def _onchange_mulch2_id(self): if self.mulch2_unit == self.env.ref("uom.product_uom_meter"): self.mulch2_qty = self.intervention_length @@ -486,7 +514,7 @@ class SaleIntervention(models.Model): else: self.mulch2_qty = 0.0 - @api.onchange('plant_qty') + @api.onchange("plant_qty") def _onchange_plant_qty(self): self.collarette_qty = self.plant_qty @@ -531,10 +559,11 @@ class SaleIntervention(models.Model): if rec.plant_qty != rec.plants_qty: raise UserError( _( - "La quantité de plants renseignée '%f' est différente de la quantité de plants calculée '%f'. " + "La quantité de plants renseignée '%f' est différente de" + "la quantité de plants calculée '%f'.\n " "Les quantités doivent être identiques, vérifier votre compositon." ) - % (rec.plant_qty,rec.plants_qty) + % (rec.plant_qty, rec.plants_qty) ) @api.depends( @@ -894,7 +923,7 @@ class SaleIntervention(models.Model): res = super().create(vals_list) for rec in res: seq = str(rec.project_id.intervention_counter).zfill(3) - rec.name = rec.project_id.name + '-' + seq + rec.name = rec.project_id.name + "-" + seq rec._create_sale_intervention_stock_lines() return res @@ -916,9 +945,7 @@ class SaleIntervention(models.Model): def _update_order_lines(self): product_tmpl = self.intervention_type_id quantity = ( - self.intervention_length - if product_tmpl.uom_name == "m" - else self.plant_qty + self.intervention_length if product_tmpl.uom_name == "m" else self.plant_qty ) if quantity != 0: data = { @@ -934,12 +961,14 @@ class SaleIntervention(models.Model): existing_lines.write(data) else: # Add missing fields and create new lines - data.update({ - 'order_id': self.sale_order_id.id, - 'name': self.project_id.name + " - " + product_tmpl.name, - 'product_id': product_tmpl.product_variant_id.id, - 'sale_project_id': self.project_id.id - }) + data.update( + { + "order_id": self.sale_order_id.id, + "name": self.project_id.name + " - " + product_tmpl.name, + "product_id": product_tmpl.product_variant_id.id, + "sale_project_id": self.project_id.id, + } + ) self.env["sale.order.line"].create(data) @@ -978,7 +1007,7 @@ class SaleInterventionStock(models.Model): price_unit = fields.Float( "Prix Unitaire", required=True, digits="Product Price", default=0.0 ) - taxes_id = fields.Many2many(related='product_template_id.taxes_id') + taxes_id = fields.Many2many(related="product_template_id.taxes_id") price_total = fields.Float( compute="_compute_amount", string="Total", diff --git a/models/sale_order.py b/models/sale_order.py index 80073f95cc039affa6f7d42c5020a3c582475de3..2cc1d453a1f3365dd8e16e3c00b772dedecc2dc2 100644 --- a/models/sale_order.py +++ b/models/sale_order.py @@ -14,7 +14,8 @@ class SaleOrder(models.Model): comodel_name="sale.project", inverse_name="sale_order_id", string="Projets", - readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}, + readonly=True, + states={"draft": [("readonly", False)], "sent": [("readonly", False)]}, ) sale_intervention_stock_ids = fields.One2many( comodel_name="sale.intervention.stock", diff --git a/models/sale_project.py b/models/sale_project.py index 9edc026416bf92388003aa5792453582e8a732cb..1f5b358215febeb9ac59271ef57565f52071ed25 100644 --- a/models/sale_project.py +++ b/models/sale_project.py @@ -1,9 +1,10 @@ # Copyright 2021 Le Filament (https://le-filament.com) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html) -from odoo import api, fields, models, _ from datetime import datetime +from odoo import _, api, fields, models + class SaleProject(models.Model): _name = "sale.project" @@ -11,14 +12,24 @@ class SaleProject(models.Model): _inherit = ["mail.thread", "mail.activity.mixin"] def _get_default_admin_state_id(self): - return self.env['sale.project.admin.state'].search( - [('fold', '=', False), ('is_closed', '=', False)], order='sequence', limit=1).id + return ( + self.env["sale.project.admin.state"] + .search( + [("fold", "=", False), ("is_closed", "=", False)], + order="sequence", + limit=1, + ) + .id + ) def _get_default_saison_id(self): - saison_id = self.env['sale.project.saison'].search([ - ('start_date', '<', datetime.today().date()), - ('end_date', '>=', datetime.today().date()) - ], limit=1) + saison_id = self.env["sale.project.saison"].search( + [ + ("start_date", "<", datetime.today().date()), + ("end_date", ">=", datetime.today().date()), + ], + limit=1, + ) if saison_id: return saison_id.id @@ -31,17 +42,19 @@ class SaleProject(models.Model): required=True, ondelete="cascade", ) - state = fields.Selection(related='sale_order_id.state', store=True) + state = fields.Selection(related="sale_order_id.state", store=True) partner_id = fields.Many2one( - 'res.partner', related='sale_order_id.partner_id', store=True) + "res.partner", related="sale_order_id.partner_id", store=True + ) - name = fields.Char("Nom", default=lambda self: _('Nouveau projet')) + name = fields.Char("Nom", default=lambda self: _("Nouveau projet")) user_id = fields.Many2one( "res.users", string="Référent", default=lambda self: self.env.user, - readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}, + readonly=True, + states={"draft": [("readonly", False)], "sent": [("readonly", False)]}, ) admin_state_id = fields.Many2one( @@ -55,15 +68,16 @@ class SaleProject(models.Model): ) sale_project_suivi_ids = fields.Many2many( comodel_name="sale.project.suivi", - string="Suivi étape", tracking=2, + string="Suivi étape", + tracking=2, ) is_sale_project_suivi_empty = fields.Boolean( - string='Pas de suivi pour cette étape', - compute='_compute_is_sale_project_suivi_empty', - required=False) + string="Pas de suivi pour cette étape", + compute="_compute_is_sale_project_suivi_empty", + required=False, + ) sale_project_advancement_ids = fields.Many2many( - comodel_name="sale.project.advancement", - string="Avancement", tracking=3 + comodel_name="sale.project.advancement", string="Avancement", tracking=3 ) project_subvention_id = fields.Many2one( @@ -71,17 +85,18 @@ class SaleProject(models.Model): string="Programme", ondelete="restrict", required=True, - readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}, + readonly=True, + states={"draft": [("readonly", False)], "sent": [("readonly", False)]}, ) geo_sector_id = fields.Many2one( comodel_name="res.partner.geo.sector", string="Secteur géographique", - readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}, + readonly=True, + states={"draft": [("readonly", False)], "sent": [("readonly", False)]}, ) saison_id = fields.Many2one( - "sale.project.saison", "Saison", - default=_get_default_saison_id + "sale.project.saison", "Saison", default=_get_default_saison_id ) date_visit = fields.Date("Date de visite") @@ -89,11 +104,12 @@ class SaleProject(models.Model): comodel_name="sale.intervention", inverse_name="project_id", string="Interventions", - readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}, + readonly=True, + states={"draft": [("readonly", False)], "sent": [("readonly", False)]}, ) intervention_counter = fields.Integer( - compute='_compute_intervention_counter', - string="Nombre d'interventions") + compute="_compute_intervention_counter", string="Nombre d'interventions" + ) sale_order_line_ids = fields.One2many( comodel_name="sale.order.line", @@ -112,21 +128,21 @@ class SaleProject(models.Model): # ------------------------------------------------------ # Computed fields / Search Fields # ------------------------------------------------------ - @api.depends('intervention_ids') + @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)]) + res.intervention_counter = self.env["sale.intervention"].search_count( + [("project_id", "=", self.id)] + ) def _compute_is_sale_project_suivi_empty(self): for r in self: - sale_project_suivi_count = \ - self.env['sale.project.suivi'].search_count( - [('sale_project_admin_state_id', - '=', self.admin_state_id.id)]) - r.is_sale_project_suivi_empty = True \ - if sale_project_suivi_count == 0 else False + sale_project_suivi_count = self.env["sale.project.suivi"].search_count( + [("sale_project_admin_state_id", "=", self.admin_state_id.id)] + ) + r.is_sale_project_suivi_empty = ( + True if sale_project_suivi_count == 0 else False + ) # ------------------------------------------------------ # Onchange / Constraints @@ -142,7 +158,13 @@ class SaleProject(models.Model): for rec in res: rec.geo_sector_id = rec.sale_order_id.partner_id.geo_sector_id.id 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 + rec.name = ( + rec.sale_order_id.partner_id.ref + + "-" + + datetime.now().strftime("%y") + + "-" + + seq + ) def unlink(self): self.sale_order_line_ids.unlink() @@ -159,7 +181,12 @@ class SaleProject(models.Model): "name": "Interventions", "res_model": "sale.intervention", "view_type": "form", - "views": [[tree_view, "tree"], [False, "form"], [False, "graph"], [False, "pivot"]], + "views": [ + [tree_view, "tree"], + [False, "form"], + [False, "graph"], + [False, "pivot"], + ], "domain": [("project_id", "=", self.id)], "context": { "default_project_id": self.id, @@ -192,7 +219,8 @@ class SaleProjectSuivi(models.Model): _description = "Suivi étape" sale_project_admin_state_id = fields.Many2one( - string="Étape", comodel_name="sale.project.admin.state", required=True) + string="Étape", comodel_name="sale.project.admin.state", required=True + ) name = fields.Char(string="Suivi étape", required=True) @@ -215,7 +243,7 @@ class SaleProjectSaison(models.Model): class SaleProjectAdminState(models.Model): _name = "sale.project.admin.state" _description = "Étapes du projet" - _order = 'sequence, id' + _order = "sequence, id" name = fields.Char(string="Avancement", required=True) sequence = fields.Integer(default=1) diff --git a/views/product_pricelist_view.xml b/views/product_pricelist_view.xml index f09d3e60aeae289ed7f3f8616ac8d9b6784c4a48..396e709074a442622b40b5fb8cafc5a37318eead 100644 --- a/views/product_pricelist_view.xml +++ b/views/product_pricelist_view.xml @@ -29,9 +29,14 @@ </field> </record> - <menuitem id="menu_product_pricelist_item" name="Règles de prix" - parent="sale.product_menu_catalog" action="product.product_pricelist_item_action" - groups="base.group_no_one" sequence="4"/> + <menuitem + id="menu_product_pricelist_item" + name="Règles de prix" + parent="sale.product_menu_catalog" + action="product.product_pricelist_item_action" + groups="base.group_no_one" + sequence="4" + /> </data> </odoo> diff --git a/views/product_template_views.xml b/views/product_template_views.xml index 3096202b36fb9da59e7c02ec8f53d0134d0c8e42..75c9c23e601fa177951bd091c92454cd4c585373 100644 --- a/views/product_template_views.xml +++ b/views/product_template_views.xml @@ -1,14 +1,14 @@ -<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="utf-8" ?> <odoo> <data> <record id="product_category_form_view" model="ir.ui.view"> <field name="name">product.category.form.inherit</field> <field name="model">product.category</field> - <field name="inherit_id" ref="product.product_category_form_view"/> + <field name="inherit_id" ref="product.product_category_form_view" /> <field name="arch" type="xml"> <field name="parent_id" position="after"> - <field name="symbol"/> + <field name="symbol" /> </field> </field> </record> diff --git a/views/sale_intervention_view.xml b/views/sale_intervention_view.xml index 4f1f6a06ad743e487d636b1117f792afe9c6ae98..036a7a8bd26ddd267d3ecbbf4986528db242679f 100644 --- a/views/sale_intervention_view.xml +++ b/views/sale_intervention_view.xml @@ -11,7 +11,7 @@ <form string="Intervention"> <sheet> <group> - <field name="state" invisible="1"/> + <field name="state" invisible="1" /> <field name="project_id" invisible="True" /> <field name="sale_order_id" invisible="True" /> <field @@ -289,7 +289,7 @@ <field name="arch" type="xml"> <tree string="Interventions" expand="True"> <field name="name" optional="show" /> - <field name="state" invisible="1"/> + <field name="state" invisible="1" /> <field name="sale_order_id" optional="hide" /> <field name="project_id" optional="hide" /> <field name="intervention_type_id" optional="show" /> diff --git a/views/sale_order_view.xml b/views/sale_order_view.xml index 1b9c15e472d7cb4bd87a9f57df3112a19e931cb5..a653118f3d6eaee7f2c0d874cb010840874651f1 100644 --- a/views/sale_order_view.xml +++ b/views/sale_order_view.xml @@ -51,8 +51,11 @@ <label for="order_line" string="Lignes de commandes" /> </field> - <xpath expr="//field[@name='order_line']/tree/field[@name='product_id']" position="before"> - <field name="sale_project_id" optional="show" string="Projet"/> + <xpath + expr="//field[@name='order_line']/tree/field[@name='product_id']" + position="before" + > + <field name="sale_project_id" optional="show" string="Projet" /> </xpath> <page name="order_lines" position="after"> @@ -63,7 +66,11 @@ readonly="True" > <tree edit="False" string="Déstockage"> - <field name="project_id" optional="show" options="{'no_create': True, 'no_edit': True}"/> + <field + name="project_id" + optional="show" + options="{'no_create': True, 'no_edit': True}" + /> <field name="name" optional="show" /> <field name="product_uom_qty" optional="show" /> <field name="price_unit" optional="hide" /> @@ -85,7 +92,10 @@ <field name="model">sale.project.suivi</field> <field name="arch" type="xml"> <tree editable="top"> - <field name="sale_project_admin_state_id" options='{"no_open": True, "no_create": True}'/> + <field + name="sale_project_admin_state_id" + options='{"no_open": True, "no_create": True}' + /> <field name="name" /> </tree> </field> diff --git a/views/sale_project_admin_state_views.xml b/views/sale_project_admin_state_views.xml index 91f7757aafabe95231edc0ea57026c03d217ec4d..59e9c978ae206bdb2e4bccea22a0f3c9e18ad31f 100644 --- a/views/sale_project_admin_state_views.xml +++ b/views/sale_project_admin_state_views.xml @@ -18,8 +18,12 @@ <group> <group> <field name="name" /> - <field name="sale_project_suivi_ids" widget="many2many_tags" context="{'default_sale_project_admin_state_id': active_id}"/> - <field name="sequence"/> + <field + name="sale_project_suivi_ids" + widget="many2many_tags" + context="{'default_sale_project_admin_state_id': active_id}" + /> + <field name="sequence" /> </group> <group> <field name="fold" /> diff --git a/views/sale_project_view.xml b/views/sale_project_view.xml index 483c66c067f255f7166b8c9ed41a66451b0b3b9b..324fac948507b9ac84671e936cefc64b661a5ce4 100644 --- a/views/sale_project_view.xml +++ b/views/sale_project_view.xml @@ -36,7 +36,7 @@ <group> <field name="saison_id" /> <field name="date_visit" /> - <field name="state" invisible="1"/> + <field name="state" invisible="1" /> </group> </group> <group> @@ -47,7 +47,10 @@ /> </group> <group> - <field name="is_sale_project_suivi_empty" invisible="1"/> + <field + name="is_sale_project_suivi_empty" + invisible="1" + /> <field name="sale_project_suivi_ids" widget="many2many_checkboxes" @@ -57,12 +60,16 @@ </group> </group> <group name="interventions" class="oe_read_only"> - <field name="intervention_ids" mode="tree" style="pointer-events: none;" - context="{'search_default_group_by_intervention_type': True}"> + <field + name="intervention_ids" + mode="tree" + style="pointer-events: none;" + context="{'search_default_group_by_intervention_type': True}" + > <!-- TODO : group by intervention_type_id --> <tree default_order="intervention_type_id,name"> <field name="name" optional="show" /> - <field name="state" invisible="1"/> + <field name="state" invisible="1" /> <field name="intervention_type_id" optional="show"