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

wip

parent 7c89d4ec
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
"data": [ "data": [
"security/ir.model.access.csv", "security/ir.model.access.csv",
# datas # datas
"data/company_size.xml",
# views # views
"views/res_partner.xml", "views/res_partner.xml",
"views/union_regionale.xml", "views/union_regionale.xml",
......
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<record id="1-5" model="company.size">
<field name="name">1 à 5</field>
</record>
<record id="5-15" model="company.size">
<field name="name">5 à 15</field>
</record>
<record id="15-50" model="company.size">
<field name="name">15 à 50</field>
</record>
<record id="50-100" model="company.size">
<field name="name">50 à 100</field>
</record>
<record id="+100" model="company.size">
<field name="name">plus de 100</field>
</record>
</data>
</odoo>
from . import res_partner from . import res_partner
from . import union_regionale from . import union_regionale
from . import company_size
from . import mucs_contract
from . import meeting_event
from . import mgmt_event
# Copyright 2024- Le Filament (https://le-filament.com)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
from odoo import models, fields, api
from odoo.exceptions import ValidationError
class CompanySize(models.Model):
_name = "company.size"
# ------------------------------------------------------
# Fields declaration
# ------------------------------------------------------
name = fields.Char("Taille d'entreprise")
# ------------------------------------------------------
# SQL Constraints
# ------------------------------------------------------
# ------------------------------------------------------
# Default methods
# ------------------------------------------------------
# ------------------------------------------------------
# Computed fields / Search Fields
# ------------------------------------------------------
# ------------------------------------------------------
# Onchange / Constraints
# ------------------------------------------------------
# ------------------------------------------------------
# CRUD methods (ORM overrides)
# ------------------------------------------------------
# ------------------------------------------------------
# Actions
# ------------------------------------------------------
# ------------------------------------------------------
# Business methods
# ------------------------------------------------------
# Copyright 2024- Le Filament (https://le-filament.com)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
from odoo import models, fields, api
class MeetingEvent(models.Model):
_name = "meeting.event"
date = fields.Date("Date")
name = fields.Char("Sujet")
description = fields.Char("Description")
# TODO tags ?
# categ_ids = fields.Many2one("X")
# relations
partner_id = fields.Many2one(comodel_name="res.partner")
# ------------------------------------------------------
# Fields declaration
# ------------------------------------------------------
# ------------------------------------------------------
# SQL Constraints
# ------------------------------------------------------
# ------------------------------------------------------
# Default methods
# ------------------------------------------------------
# ------------------------------------------------------
# Computed fields / Search Fields
# ------------------------------------------------------
# ------------------------------------------------------
# Onchange / Constraints
# ------------------------------------------------------
# ------------------------------------------------------
# CRUD methods (ORM overrides)
# ------------------------------------------------------
# ------------------------------------------------------
# Actions
# ------------------------------------------------------
# ------------------------------------------------------
# Business methods
# ------------------------------------------------------
# Copyright 2024- Le Filament (https://le-filament.com)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
from odoo import models, fields, api
class MgmtEvent(models.Model):
_name = "mgmt.event"
qs = fields.Selection(string="Qualité de service", selection=[("s", "Satisfait")])
# TODO catégories ?
# theme = fields.Many2one(string="Thématique", comodel_name="")
topic = fields.Char("Sujet")
resolution = fields.Char("Résolution")
# relations
partner_id = fields.Many2one(comodel_name="res.partner")
# ------------------------------------------------------
# Fields declaration
# ------------------------------------------------------
# ------------------------------------------------------
# SQL Constraints
# ------------------------------------------------------
# ------------------------------------------------------
# Default methods
# ------------------------------------------------------
# ------------------------------------------------------
# Computed fields / Search Fields
# ------------------------------------------------------
# ------------------------------------------------------
# Onchange / Constraints
# ------------------------------------------------------
# ------------------------------------------------------
# CRUD methods (ORM overrides)
# ------------------------------------------------------
# ------------------------------------------------------
# Actions
# ------------------------------------------------------
# ------------------------------------------------------
# Business methods
# ------------------------------------------------------
# Copyright 2024- Le Filament (https://le-filament.com)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
from odoo import models, fields, api
class Contract(models.Model):
_name = "mucs.contract"
number = fields.Char("Numéro de contrat")
# On attend d'avoir des données
# product_id = fields.Many2one("Type de couverture")
member_count = fields.Integer("Effectifs adhérents")
maybe_member_count = fields.Integer("Potentiel adhérents")
# relations
partner_id = fields.Many2one(comodel_name="res.partner")
# ------------------------------------------------------
# Fields declaration
# ------------------------------------------------------
# ------------------------------------------------------
# SQL Constraints
# ------------------------------------------------------
# ------------------------------------------------------
# Default methods
# ------------------------------------------------------
# ------------------------------------------------------
# Computed fields / Search Fields
# ------------------------------------------------------
# ------------------------------------------------------
# Onchange / Constraints
# ------------------------------------------------------
# ------------------------------------------------------
# CRUD methods (ORM overrides)
# ------------------------------------------------------
# ------------------------------------------------------
# Actions
# ------------------------------------------------------
# ------------------------------------------------------
# Business methods
# ------------------------------------------------------
...@@ -14,11 +14,12 @@ class ResPartner(models.Model): ...@@ -14,11 +14,12 @@ class ResPartner(models.Model):
is_cooperative = fields.Boolean("Est une coopérative") is_cooperative = fields.Boolean("Est une coopérative")
is_member_cgscop = fields.Boolean("Est adhérent à la CG SCOP") is_member_cgscop = fields.Boolean("Est adhérent à la CG SCOP")
size_group = fields.Selection( company_size_id = fields.Many2one("company.size",
[("1-5", "1 à 5"), ("5-15", "5 à 15"), ("15-50", "15 à 50"),
("50-100", "50 à 100"), ("+100", "plus de 100")],
string="Tranche d'effectif") string="Tranche d'effectif")
company_size = fields.Integer(string="Effectif approximatif")
# Note : peut-être utiliser l10n-france/l10n_fr_siret_lookup
# en 18.0 qui gère la récupération des codes APE et forme juridique
siret = fields.Char(index=True, tracking=True, copy=False) siret = fields.Char(index=True, tracking=True, copy=False)
siren = fields.Char( siren = fields.Char(
string="SIREN", string="SIREN",
...@@ -28,6 +29,17 @@ class ResPartner(models.Model): ...@@ -28,6 +29,17 @@ class ResPartner(models.Model):
copy=False, copy=False,
tracking=True tracking=True
) )
# Note : pour l'instant str, à changer vers m2o quand on y verra plus clair
ape = fields.Char("APE Code")
ape_label = fields.Char("APE Label")
ccn = fields.Char("CCN Code")
ccn_label = fields.Char("CCN Label")
is_member_sante = fields.Boolean("Adhérent Santé", compute="_compute_is_member_sante")
is_member_unmi = fields.Boolean("Adhérent UNMI")
is_member_mutex = fields.Boolean("Adhérent MUTEX")
type_rma_aid = fields.Selection(string="Assistance RMA",
selection=[("base", "Base")])
# overwrite state to compute it based on department which itself is computed from zip # overwrite state to compute it based on department which itself is computed from zip
state_id = fields.Many2one("res.country.state", string='State', state_id = fields.Many2one("res.country.state", string='State',
...@@ -45,6 +57,28 @@ class ResPartner(models.Model): ...@@ -45,6 +57,28 @@ class ResPartner(models.Model):
ondelete="restrict", ondelete="restrict",
) )
contract_id = fields.One2many(
string="Contrats",
comodel_name="mucs.contract",
inverse_name="partner_id",
)
# child_ids (odoo) Contacts
lead_ids = fields.One2many(
string="Opportunités",
comodel_name="crm.lead",
inverse_name="partner_id",
)
meeting_ids = fields.One2many(
string="Suivi commercial",
comodel_name="meeting.event",
inverse_name="partner_id",
)
mgmt_event_ids = fields.One2many(
string="Suivi de gestion",
comodel_name="mgmt.event",
inverse_name="partner_id",
)
# ------------------------------------------------------ # ------------------------------------------------------
# SQL Constraints # SQL Constraints
# ------------------------------------------------------ # ------------------------------------------------------
...@@ -63,6 +97,11 @@ class ResPartner(models.Model): ...@@ -63,6 +97,11 @@ class ResPartner(models.Model):
if partner.siret: if partner.siret:
partner.siren = partner.siret.replace(" ", "")[0:9] partner.siren = partner.siret.replace(" ", "")[0:9]
# TODO compute this
@api.depends("contract_id")
def _compute_is_member_sante(self):
for partner in self:
pass
# ------------------------------------------------------ # ------------------------------------------------------
# Onchange / Constraints # Onchange / Constraints
# ------------------------------------------------------ # ------------------------------------------------------
......
id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
access_union_regionale,access_union_regionale,model_union_regionale,base.group_user,1,0,0,0 access_union_regionale,access_union_regionale,model_union_regionale,base.group_user,1,0,0,0
admin_union_regionale,admin_union_regionale,model_union_regionale,base.group_erp_manager,1,1,1,1 admin_union_regionale,admin_union_regionale,model_union_regionale,base.group_erp_manager,1,1,1,1
access_company_size,access_company_size,model_company_size,base.group_user,1,0,0,0
access_mucs_contract,access_mucs_contract,model_mucs_contract,base.group_user,1,1,1,1
access_meeting_event,access_meeting_event,model_meeting_event,base.group_user,1,1,1,1
access_mgmt_event,access_mgmt_event,model_mgmt_event,base.group_user,1,1,1,1
...@@ -10,31 +10,60 @@ ...@@ -10,31 +10,60 @@
<field name="model">res.partner</field> <field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form"/> <field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml"> <field name="arch" type="xml">
<xpath expr="//h1" position="before"> <xpath expr="//page[@name='contact_addresses']" position="before">
<span invisible="not is_company"> <page
<label for="is_cooperative" string="Coopérative"/> name="company"
<field name="is_cooperative"/> string="Entreprise"
</span> invisible="not is_company"
</xpath> >
<xpath expr="//h1" position="after">
<group invisible="not is_company">
<group> <group>
<group>
<field name="siret" readonly="1"
widget="CopyClipboardChar"/>
<field name="siren" readonly="1"
widget="CopyClipboardChar"/>
<field name="company_size_id"/>
<field name="company_size"/>
</group>
<group>
<field name="is_cooperative"/>
<field name="ur_id" invisible="not is_cooperative"/> <field name="ur_id" invisible="not is_cooperative"/>
<field name="size_group"/>
</group> </group>
</group> </group>
</xpath> </page>
<xpath expr="//field[@name='vat']" position="after">
<field name="siret" readonly="1" widget="CopyClipboardChar"/>
<field name="siren" readonly="1" widget="CopyClipboardChar"/>
</xpath>
<xpath expr="//page[@name='contact_addresses']" position="before">
<page <page
name="company" name="leads"
string="Company" string="Opportunités"
>
<group>
<!-- <field name="leads_id"/>-->
</group>
</page>
<page
name="contracts"
string="Contrats"
invisible="not is_company"
>
<group>
<field name="contract_id"/>
</group>
</page>
<page
name="suivi_commercial"
string="Suivi commercial"
invisible="not is_company"
>
<group>
<field name="meeting_ids"/>
</group>
</page>
<page
name="suivi_gestion"
string="Suivi gestion"
invisible="not is_company" invisible="not is_company"
> >
<group> <group>
<field name="mgmt_event_ids"/>
</group> </group>
</page> </page>
</xpath> </xpath>
......
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