Skip to content
Extraits de code Groupes Projets
Valider 9e496506 rédigé par Rémi - Le Filament's avatar Rémi - Le Filament
Parcourir les fichiers

Module initialization

parent
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from . import models
# Copyright 2020 Le Filament (<https://le-filament.com>)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
{
"name": "Contacts Ethikis",
"version": "12.0.1.0.0",
"development_status": "Beta",
"category": "Partner Management",
"website": "https://le-filament.com",
"author": "Le Filament",
"license": "AGPL-3",
"application": False,
"installable": True,
"depends": [
"contacts",
],
"data": [
"security/ir.model.access.csv",
"datas/res_partner_prospect_source_data.xml",
"datas/res_partner_qualification_data.xml",
"datas/res_partner_sector_data.xml",
"views/res_partner_view.xml",
]
}
<?xml version="1.0"?>
<odoo>
<data noupdate="1">
<record id="entrant" model="res.partner.prospect.source">
<field name="name">Appel entrant</field>
</record>
<record id="autodiag" model="res.partner.prospect.source">
<field name="name">Auto-diag</field>
</record>
<record id="webform" model="res.partner.prospect.source">
<field name="name">Contact web</field>
</record>
<record id="linkedin" model="res.partner.prospect.source">
<field name="name">LinkedIn</field>
</record>
<record id="partenaire" model="res.partner.prospect.source">
<field name="name">Partenaires</field>
</record>
<record id="prospection" model="res.partner.prospect.source">
<field name="name">Prospection</field>
</record>
<record id="reseau" model="res.partner.prospect.source">
<field name="name">Réseau pro/perso</field>
</record>
<record id="salon" model="res.partner.prospect.source">
<field name="name">Salon-Events</field>
</record>
</data>
</odoo>
<?xml version="1.0"?>
<odoo>
<data noupdate="1">
<record id="suspect" model="res.partner.qualification">
<field name="name">Suspect</field>
</record>
<record id="prospect" model="res.partner.qualification">
<field name="name">Prospect</field>
</record>
<record id="noway" model="res.partner.qualification">
<field name="name">No-way</field>
</record>
<record id="client" model="res.partner.qualification">
<field name="name">Client</field>
</record>
<record id="partenaire" model="res.partner.qualification">
<field name="name">Partenaire</field>
</record>
<record id="ressources" model="res.partner.qualification">
<field name="name">Ressources</field>
</record>
<record id="autre" model="res.partner.qualification">
<field name="name">Autre</field>
</record>
</data>
</odoo>
<?xml version="1.0"?>
<odoo>
<data noupdate="1">
<record id="fabrication" model="res.partner.sector">
<field name="name">Fabrication</field>
</record>
<record id="distribution" model="res.partner.sector">
<field name="name">Distribution</field>
</record>
<record id="reparation" model="res.partner.sector">
<field name="name">Réparation</field>
</record>
<record id="institution" model="res.partner.sector">
<field name="name">Institution</field>
</record>
<record id="federation" model="res.partner.sector">
<field name="name">Fédération</field>
</record>
<record id="onge" model="res.partner.sector">
<field name="name">ONGE</field>
</record>
<record id="medias" model="res.partner.sector">
<field name="name">Médias</field>
</record>
<record id="autres" model="res.partner.sector">
<field name="name">Autres</field>
</record>
</data>
</odoo>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from . import res_partner
# Copyright 2020 Le Filament (<https://le-filament.com>)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import api, fields, models
class ResPartner(models.Model):
_inherit = "res.partner"
is_company = fields.Boolean(default=True)
linkedin = fields.Char('LinkedIn')
sector_id = fields.Many2one(
'res.partner.sector',
string='Secteur',
on_delete='restrict')
qualification_id = fields.Many2one(
'res.partner.qualification',
string='Type',
on_delete='restrict')
siret = fields.Char(string='SIRET', size=14, index=True)
staff = fields.Selection(
[('1', '0-1'),
('10', '2-10'),
('50', '11-50'),
('200', '51-200'),
('500', '201-500'),
('1000', '501-1000'),
('5000', '1001-5000'),
('10000', '5001-10000'),
('10000+', '10001 et plus')],
string='Tranche Effectif')
b2b_target = fields.Boolean('B2B')
b2c_target = fields.Boolean('B2C')
product_category_ids = fields.Many2many(
comodel_name='res.partner.product.family',
relation="res_partner_product_category_rel",
column1='partner_id',
column2='category_id',
string='Catégorie Produit',
domain=[('parent_id', '=', False)],
on_delete='restrict')
product_family_ids = fields.Many2many(
comodel_name='res.partner.product.family',
relation="res_partner_product_family_rel",
column1='partner_id',
column2='family_id',
string='Famille Produit',
domain=[('child_ids', '=', False)],
on_delete='restrict')
prospect_source_id = fields.Many2one(
'res.partner.prospect.source',
string='Source du Prospect',
on_delete='restrict')
class ResPartnerProductFamily(models.Model):
_name = "res.partner.product.family"
_description = "Famille / Catégorie Produit"
_parent_name = "parent_id"
_parent_store = True
_rec_name = 'name'
_order = 'parent_path, name'
name = fields.Char('Catégorie / Famille produit',
index=True, required=True)
color = fields.Integer(string='Couleur')
parent_id = fields.Many2one(
comodel_name='res.partner.product.family',
string='Catégorie produit (parent)',
index=True,
ondelete='cascade')
parent_path = fields.Char(index=True)
child_ids = fields.One2many(
comodel_name='res.partner.product.family',
inverse_name='parent_id',
string='Famille produit')
@api.constrains('parent_id')
def _check_origin_recursion(self):
if not self._check_recursion():
raise ValidationError(
'Vous ne pouvez pas créer des familles récursives.')
class ResPartnerSector(models.Model):
_name = "res.partner.sector"
_description = "Secteur"
_order = 'name'
name = fields.Char('Secteur')
class ResPartnerQualification(models.Model):
_name = "res.partner.qualification"
_description = "Type de contact"
_order = 'name'
name = fields.Char('Type de contact')
class ResPartnerProspectSource(models.Model):
_name = "res.partner.prospect.source"
_description = "Source du Prospect"
_order = 'name'
name = fields.Char('Source du Prospect')
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_product_family_group_user,access_product_family_group_user,model_res_partner_product_family,base.group_user,1,0,0,0
access_product_family_group_admin,access_product_family_group_admin,model_res_partner_product_family,base.group_erp_manager,1,1,1,1
access_sector_group_user,access_sector_group_user,model_res_partner_sector,base.group_user,1,0,0,0
access_sector_group_admin,access_sector_group_admin,model_res_partner_sector,base.group_erp_manager,1,1,1,1
access_qualification_group_user,access_qualification_group_user,model_res_partner_qualification,base.group_user,1,0,0,0
access_qualification_group_admin,access_qualification_group_admin,model_res_partner_qualification,base.group_erp_manager,1,1,1,1
access_prospect_source_group_user,access_prospect_source_group_user,model_res_partner_prospect_source,base.group_user,1,0,0,0
access_prospect_source_group_admin,access_prospect_source_group_admin,model_res_partner_prospect_source,base.group_erp_manager,1,1,1,1
static/description/icon.png

8,95 ko

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2020 Le Filament (<https://le-filament.com>)
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo>
<record id="model_name_view_form" model="ir.ui.view">
<field name="name">res.partner.ethikis.view.form</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml">
<field name="phone" position="before">
<field name="prospect_source_id" options="{'no_open': True, 'no_create': True}" attrs="{'invisible': [('is_company','=', True)]}"/>
</field>
<field name="website" position="after">
<field name="linkedin" widget="url"/>
</field>
<field name="vat" position="after">
<field name="siret" attrs="{'invisible': [('is_company','=', False)]}"/>
</field>
<xpath expr="//sheet/group" position="after">
<group attrs="{'invisible': [('is_company','=', False)]}">
<group>
<field name="sector_id" options="{'no_open': True, 'no_create': True}"/>
<field name="qualification_id" options="{'no_open': True, 'no_create': True}"/>
<field name="staff"/>
<field name="product_category_ids" widget="many2many_tags" options="{'color_field': 'color'}"/>
<field name="product_family_ids" widget="many2many_tags" options="{'color_field': 'color'}"/>
</group>
<group string="Cible">
<field name="b2b_target"/>
<field name="b2c_target"/>
</group>
</group>
</xpath>
</field>
</record>
<record id="view_res_partner_product_family_tree" model="ir.ui.view">
<field name="name">res.partner.product.family.tree</field>
<field name="model">res.partner.product.family</field>
<field name="arch" type="xml">
<tree string="Famille / Catégorie Produits" editable="top">
<field name="name"/>
<field name="parent_id" options="{'no_open': True, 'no_create': True}"/>
</tree>
</field>
</record>
<record id="action_view_res_partner_product_family_tree" model="ir.actions.act_window">
<field name="name">Famille / Catégorie Produits</field>
<field name="res_model">res.partner.product.family</field>
<field name="view_mode">tree</field>
<field name="help">Affiche et gère la liste de Famille / Catégorie Produits.</field>
</record>
<record id="view_res_partner_sector_tree" model="ir.ui.view">
<field name="name">res.partner.sector.tree</field>
<field name="model">res.partner.sector</field>
<field name="arch" type="xml">
<tree string="Secteurs" editable="top">
<field name="name"/>
</tree>
</field>
</record>
<record id="action_view_res_partner_sector_tree" model="ir.actions.act_window">
<field name="name">Secteurs</field>
<field name="res_model">res.partner.sector</field>
<field name="view_mode">tree</field>
<field name="help">Affiche et gère la liste de Secteurs.</field>
</record>
<record id="view_res_partner_qualification_tree" model="ir.ui.view">
<field name="name">res.partner.qualification.tree</field>
<field name="model">res.partner.qualification</field>
<field name="arch" type="xml">
<tree string="Types de Contact" editable="top">
<field name="name"/>
</tree>
</field>
</record>
<record id="action_view_res_partner_qualification_tree" model="ir.actions.act_window">
<field name="name">Types de Contact</field>
<field name="res_model">res.partner.qualification</field>
<field name="view_mode">tree</field>
<field name="help">Affiche et gère la liste de Types de Contact.</field>
</record>
<record id="view_res_partner_prospect_source_tree" model="ir.ui.view">
<field name="name">res.partner.prospect.source.tree</field>
<field name="model">res.partner.prospect.source</field>
<field name="arch" type="xml">
<tree string="Sources du Prospect" editable="top">
<field name="name"/>
</tree>
</field>
</record>
<record id="action_view_res_partner_prospect_source_tree" model="ir.actions.act_window">
<field name="name">Sources du Prospect</field>
<field name="res_model">res.partner.prospect.source</field>
<field name="view_mode">tree</field>
<field name="help">Affiche et gère la liste de Sources du Prospect.</field>
</record>
<!-- MENUS -->
<record model="ir.ui.menu" id="contacts.res_partner_menu_config">
<field name="groups_id" eval="[(6,0, [ref('base.group_erp_manager')])]"/>
</record>
<menuitem id="menu_res_partner_product_family"
parent="contacts.res_partner_menu_config"
action="action_view_res_partner_product_family_tree"/>
<menuitem id="menu_res_partner_sector"
parent="contacts.res_partner_menu_config"
action="action_view_res_partner_sector_tree"/>
<menuitem id="menu_res_partner_qualification"
parent="contacts.res_partner_menu_config"
action="action_view_res_partner_qualification_tree"/>
<menuitem id="menu_res_partner_prospect_source"
parent="contacts.res_partner_menu_config"
action="action_view_res_partner_prospect_source_tree"/>
</odoo>
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