Introduction
Dans Odoo, les modèles définissent comment les données sont structurées et stockées dans la base de données. Chaque élément de données commerciales avec lequel vous travaillez, des commandes de vente aux factures en passant par les contacts, vit dans un modèle.
Comprendre les modèles Odoo est essentiel tant pour les développeurs que pour les consultants fonctionnels. Les modèles sont la base de l'architecture des données d'Odoo. Ils définissent les champs, les relations et la logique commerciale.
Cet article se concentre sur l'un des modèles les plus importants d'Odoo : res.partner. Que vous construisiez des modules personnalisés, intégriez des systèmes externes ou configuriez des flux de travail, vous travaillerez avec ce modèle.
Qu'est-ce que le modèle res.partner
Le modèle res.partner représente les contacts, clients, fournisseurs et entreprises dans Odoo. C'est l'endroit central où toutes les informations sur les parties sont stockées.
Ce modèle dans Odoo est utilisé dans presque tous les modules. Les ventes, le CRM, la facturation, les achats et le commerce électronique font tous référence à res.partner. Lorsque vous créez un client dans les ventes, un lead dans le CRM ou un fournisseur dans les achats, vous créez ou liez un enregistrement res.partner.
Le modèle est défini dans le module de base. D'autres modules l'étendent par le biais de l'héritage des modèles Odoo. Le CRM ajoute des champs liés aux leads. La comptabilité ajoute des conditions de crédit et de paiement. Chaque module ajoute ce dont il a besoin sans dupliquer la structure de base.
Champs clés dans le modèle
Voici les champs Odoo les plus importants dans le modèle res.partner. Comprendre ceux-ci vous aidera à travailler efficacement avec les contacts et les partenaires.
1. nom
Type : Char. Ce champ stocke le nom de l'enregistrement. Pour une entreprise, c'est le nom de l'entreprise. Pour une personne, c'est le nom complet. Il est affiché dans de nombreuses vues Odoo et est l'identifiant principal du partenaire.
2. date_de_creation
Type : Datetime. Stocke la date et l'heure de la création de l'enregistrement. Géré automatiquement par Odoo. Utile pour les rapports et les audits.
3. date_de_modification
Type : Datetime. Stocke la date et l'heure de la dernière modification. Également géré automatiquement. Aide à suivre quand les données ont été mises à jour pour la dernière fois.
4. email
Type : Char. L'adresse e-mail principale. Utilisée pour les communications, la facturation et l'accès au portail. Odoo valide le format de l'e-mail lorsque cela est possible.
5. téléphone
Type : Char. Le numéro de téléphone principal. Affiché dans les formulaires de contact et utilisé pour les flux de communication.
6. mobile
Type : Char. Numéro de téléphone mobile. Souvent utilisé pour les SMS ou les notifications urgentes lorsqu'il est différent du numéro principal.
7. rue
Type : Char. La première ligne de l'adresse. Partie du bloc d'adresse standard utilisé sur les documents et formulaires.
8. rue2
Type : Char. La deuxième ligne de l'adresse. Utilisé pour les numéros d'appartement, les noms de bâtiments ou des détails d'adresse supplémentaires.
9. ville
Type : Char. La ville ou la commune. Le formatage de l'adresse peut varier selon le pays.
10. code postal
Type : Char. Code postal ou ZIP. Utilisé pour la validation d'adresse et les calculs d'expédition.
11. state_id
Type : Many2one (res.country.state). L'état ou la province. Le domaine est filtré par pays. Tous les pays n'utilisent pas d'états.
12. country_id
Type : Many2one (res.country). Le pays. Détermine le formatage des adresses, les règles fiscales et la localisation.
13. is_company
Type : Boolean. Indique si l'enregistrement est une entreprise ou une personne. Les entreprises peuvent avoir des contacts enfants. Les personnes peuvent être liées à une entreprise via parent_id.
14. parent_id
Type : Many2one (res.partner). Pour les enregistrements de contact, cela lie à l'entreprise associée. Permet la hiérarchie entreprise-contact. Lorsqu'il est défini, l'adresse et d'autres champs peuvent hériter du parent.
15. child_ids
Type : One2many (res.partner). L'inverse de parent_id. Liste tous les contacts appartenant à une entreprise. Utilisé pour naviguer d'une entreprise à ses contacts.
16. company_id
Type : Many2one (res.company). Dans les configurations multi-entreprises, cela indique à quelle entreprise Odoo le partenaire appartient. Affecte la visibilité et l'accès aux enregistrements.
17. TVA
Type : Char. Numéro d'identification fiscale ou numéro de TVA. Validé par le format du pays. Utilisez une barre oblique pour indiquer que le partenaire n'est pas soumis à la taxe. Important pour la facturation et la conformité.
18. rang_client
Type : Entier. Indique le statut du client. Odoo l'incrémente lorsque le partenaire a des ventes. Utilisé pour filtrer et prioriser les clients dans les listes et les rapports.
19. rang_fournisseur
Type : Entier. Indique le statut du fournisseur. Incrémenté lorsque le partenaire a des commandes d'achat ou des factures. Utilisé pour identifier les vendeurs.
20. id_utilisateur
Type : Many2one (res.users). Le vendeur ou l'utilisateur responsable. Utilisé pour le CRM, les équipes de vente et l'attribution d'activités.
21. type
Type : Sélection. Type d'adresse pour les contacts enfants : Contact, Facture, Livraison ou Autre. Détermine quelle adresse est utilisée sur les documents. Seulement pertinent pour les contacts sous une entreprise.
22. ref
Type : Char. Référence interne ou code. Utile pour le mapping avec des systèmes externes et la numérotation personnalisée.
23. site web
Type : Char. URL du site web. Utilisé sur le formulaire de contact et dans les contextes de commerce électronique.
24. commentaire
Type : Html. Notes internes. Visibles par les utilisateurs internes. Souvent utilisées pour des notes de vente ou des instructions spéciales.
25. actif
Type : Boolean. Indicateur de suppression douce. Lorsque False, l'enregistrement est archivé et caché des vues par défaut. Les enregistrements ne sont pas physiquement supprimés.
26. langue
Type : Sélection. Langue préférée. Les e-mails et documents envoyés à ce partenaire peuvent être traduits. Hérité du parent lorsque applicable.
27. image_1920
Type : Binaire. Image ou logo du partenaire. Odoo stocke plusieurs tailles. Utilisé dans les formulaires, rapports et le site web.
28. category_id
Type : Many2many (res.partner.category). Étiquettes ou catégories. Utilisé pour la segmentation, le filtrage et le marketing. Flexible pour la classification personnalisée.
Comment ce modèle est utilisé dans les flux de travail d'entreprise
1. Ventes et CRM
Lorsqu'un vendeur crée un devis, il sélectionne un client dans res.partner. Le même enregistrement de partenaire est utilisé pour le lead, l'opportunité et la commande. Le rang du client et user_id déterminent les rapports et l'attribution.
2. Facturation
Les factures et les factures font référence à un partenaire pour l'adresse de facturation. Le champ TVA est utilisé pour les calculs fiscaux. La limite de crédit et les conditions de paiement sont souvent stockées sur le partenaire.
3. Achats et Fournisseurs
Les bons de commande et les factures fournisseurs sont liés à res.partner. Le rang du fournisseur identifie les fournisseurs actifs. Le champ buyer_id attribue un utilisateur responsable pour la gestion des fournisseurs.
4. E-commerce et Portail
Les visiteurs du site peuvent créer des enregistrements de partenaires lors de leur inscription. Ces enregistrements sont utilisés pour les commandes, les devis et l'accès au portail. Les détails d'adresse et de contact proviennent du partenaire.
5. Multi-entreprise et Consolidation
Dans les configurations multi-entreprises, la même entité légale peut exister sous différents enregistrements de partenaires par entreprise. Le champ company_id et les règles inter-entreprises déterminent comment les données sont partagées.
Comment les développeurs étendent ce modèle
Les développeurs étendent res.partner en utilisant plusieurs modèles. L'héritage de modèle Odoo est le principal mécanisme.
Héritage de Modèle
Utilisez _inherit = 'res.partner' pour étendre le modèle. Ajoutez de nouveaux champs, remplacez des méthodes ou ajoutez des contraintes. Le modèle hérité dans Odoo conserve vos modifications dans un module séparé pour des mises à jour faciles.
Ajout de champs
Définissez de nouveaux champs Odoo dans votre modèle hérité. Utilisez le bon type de champ : Char, Many2one, Boolean, Integer, Text, Selection. Envisagez des champs dépendants de l'entreprise pour le multi-entreprise.
Extensions Python
Remplacez create, write ou unlink pour ajouter de la logique. Utilisez super() pour appeler l'original. Faites attention aux champs calculés et à leurs dépendances.
Odoo Studio
Odoo Studio vous permet d'ajouter des champs sans code. Bon pour des personnalisations rapides. Pour une logique complexe ou des mises à jour, les modules personnalisés sont plus faciles à maintenir.
Meilleures pratiques
- Utilisez correctement la hiérarchie des contacts d'entreprise. Créez d'abord l'entreprise, puis ajoutez des contacts avec parent_id.
- Définissez country_id pour un formatage d'adresse approprié et un traitement fiscal.
- Utilisez commercial_partner_id lorsque vous avez besoin de l'entité de niveau supérieur pour le regroupement (par exemple, pour le crédit ou le reporting).
- Lors de la création d'intégrations API, utilisez l'API XML-RPC ou JSON-RPC. Le modèle res.partner est entièrement exposé. Mappez les ID externes avec soin.
- Pour les champs personnalisés, utilisez le préfixe
x_ou un préfixe de module pour éviter les conflits avec les futures versions d'Odoo.
Erreurs courantes
- Créer des partenaires en double au lieu de rechercher ceux existants. Utilisez
email_normalizedourefpour la déduplication. - Confondre parent_id et company_id. parent_id est pour le lien contact-entreprise. company_id est pour Odoo multi-entreprises.
- Oublier de définir le type sur les contacts enfants. Les adresses de facturation et de livraison ont besoin du type correct pour les documents.
- Surcharger des méthodes de base sans appeler super(). Cela peut casser d'autres modules ou des mises à jour futures.
- Ajouter des champs personnalisés requis sans valeurs par défaut. Les enregistrements existants échoueront à la validation lors de la mise à jour.
Conclusion
Le modèle res.partner est central dans Odoo. Il stocke les contacts, les clients et les fournisseurs. Comprendre ses champs et comment les modules l'étendent vous aidera à configurer, personnaliser et intégrer Odoo efficacement.
Que vous soyez un consultant fonctionnel cartographiant des processus d'affaires ou un développeur construisant des modules personnalisés, une bonne compréhension de res.partner vous fera gagner du temps et évitera des erreurs.
Besoin d'aide avec votre mise en œuvre Odoo ?
Dasolo aide les entreprises à mettre en œuvre, personnaliser et optimiser Odoo. Nous sommes spécialisés dans les intégrations API et le développement Odoo. Notre équipe a une grande expérience de l'architecture des données Odoo et de modèles comme res.partner.
Si vous avez besoin d'aide avec votre mise en œuvre Odoo, des modules personnalisés ou des intégrations, nous sommes là pour vous aider. Réservez une démo pour discuter de votre projet.