a32863d94517a39fb1531b02d9899e8d8ec66ba0
odoo/api-reference.md
| ... | ... | @@ -13,11 +13,10 @@ confidence: high |
| 13 | 13 | > **Base URL** : `https://sarl-le-relais-de-louest.odoo.com/jsonrpc` |
| 14 | 14 | > **Protocole** : JSON-RPC 2.0 |
| 15 | 15 | > **Auth** : `common.login` + API Key |
| 16 | -> **Modèles documentés** : ~250 modèles standards Odoo 19 |
|
| 17 | 16 | |
| 18 | 17 | --- |
| 19 | 18 | |
| 20 | -## 1. Authentification (inchangée) |
|
| 19 | +## 1. Authentification |
|
| 21 | 20 | |
| 22 | 21 | ### 1.1 Obtenir un UID |
| 23 | 22 | |
| ... | ... | @@ -98,402 +97,367 @@ Tous les modèles supportent : `search`, `search_read`, `search_count`, `read`, |
| 98 | 97 | |
| 99 | 98 | ## 3. Catalogue complet des modèles Odoo 19 |
| 100 | 99 | |
| 101 | -> Organisé par module. Chaque modèle est accessible via `odoo_call("nom.modele", ...)`. |
|
| 102 | -> ⚠️ = piège connu | 📖 = détaillé plus bas |
|
| 100 | +> Chaque modèle est documenté avec son rôle, ses particularités et ses pièges. |
|
| 101 | +> ⚠️ = piège connu | 📖 = détaillé plus bas (section 4) |
|
| 103 | 102 | |
| 104 | 103 | ### 3.0 Technique / Base (ir.*) |
| 105 | 104 | |
| 106 | 105 | | Modèle | Description | |
| 107 | 106 | |--------|-------------| |
| 108 | -| `ir.model` | Registre de tous les modèles | |
|
| 109 | -| `ir.model.fields` | Champs de chaque modèle | |
|
| 110 | -| `ir.module.module` | Modules installés/à installer | |
|
| 111 | -| `ir.ui.view` | Vues XML (form, tree, kanban...) | |
|
| 112 | -| `ir.ui.menu` | Menus | |
|
| 113 | -| `ir.actions.act_window` | Actions fenêtre | |
|
| 114 | -| `ir.actions.server` | Actions serveur / automations | |
|
| 115 | -| `ir.actions.report` | Rapports PDF | |
|
| 116 | -| `ir.actions.url` | Actions URL | |
|
| 117 | -| `ir.cron` | Tâches planifiées | |
|
| 118 | -| `ir.mail_server` | Serveurs SMTP sortants | |
|
| 119 | -| `ir.config_parameter` | Paramètres système (clé/valeur) | |
|
| 120 | -| `ir.sequence` | Séquences de numérotation | |
|
| 121 | -| `ir.translation` | Traductions | |
|
| 122 | -| `ir.attachment` | Pièces jointes / documents | |
|
| 123 | -| `ir.qweb` | Templates QWeb | |
|
| 124 | -| `ir.filters` | Filtres sauvegardés utilisateur | |
|
| 125 | -| `ir.default` | Valeurs par défaut utilisateur | |
|
| 126 | -| `ir.logging` | Logs applicatifs | |
|
| 127 | -| `ir.property` | Propriétés champ | |
|
| 128 | - |
|
| 129 | -### 3.1 Contacts (res.* — resources) |
|
| 107 | +| `ir.model` | Registre central de tous les modèles Odoo. Stocke chaque modèle installé avec son nom technique, son nom affiché, son module propriétaire et ses méta-données. Utilisable pour découvrir les modèles disponibles : `search_read([], {"fields": ["model", "name"]})` | |
|
| 108 | +| `ir.model.fields` | Méta-données complètes de chaque champ : nom, type (char, m2o, int...), relation, taille, aide, obligatoire. Base de `fields_get()`. Permet d'explorer la structure d'un modèle sans y accéder directement | |
|
| 109 | +| `ir.module.module` | Modules Odoo installés ou disponibles. Champs clés : `name` (nom technique), `display_name`, `state` (installed/uninstalled/to install). Permet d'installer des modules : `button_immediate_install([[id]])` | |
|
| 110 | +| `ir.ui.view` | Vues XML qui définissent l'interface utilisateur : formulaires, listes, kanban, graphiques, calendriers. Héritage via `inherit_id`. La clé `arch_base` contient le XML. Chaque vue est liée à un modèle spécifique | |
|
| 111 | +| `ir.ui.menu` | Menus de navigation de l'interface Odoo. Structure arborescente via `parent_id`. Lié à une action (`action`). Définit l'ordre d'affichage (`sequence`), les icônes, et les groupes d'accès | |
|
| 112 | +| `ir.actions.act_window` | Action la plus courante : ouvre une fenêtre (liste/formulaire) pointant vers un modèle (`res_model`). Définit les vues à utiliser (`view_mode` : tree,form,kanban,calendar,graph) et les filtres par défaut | |
|
| 113 | +| `ir.actions.server` | Actions serveur exécutant du code Python côté backend. Utilisé pour les automatisations, les boutons intelligents, les actions planifiées. Le code est stocké dans `code` et exécuté via `eval()` | |
|
| 114 | +| `ir.actions.report` | Rapports PDF (factures, devis, tickets...). Lié à un template QWeb. Définit le type de papier, le nom du fichier généré, et si le rapport est attachable aux emails | |
|
| 115 | +| `ir.actions.url` | Actions qui redirigent vers une URL externe. Utile pour les liens vers des dashboards externes, des contrôleurs custom, ou des sites tiers | |
|
| 116 | +| `ir.cron` | Tâches planifiées (cron jobs). Exécute une méthode à intervalle régulier. Champs : `interval_number`, `interval_type` (minutes/hours/days/weeks/months), `active`, `numbercall` (-1 = infini). Désactiver : `write([id], {"active": False})` | |
|
| 117 | +| `ir.mail_server` | Serveurs SMTP sortants. Définit le relais email : `smtp_host`, `smtp_port`, `smtp_user`, `smtp_encryption` (ssl/tls). Pour bloquer tous les emails sortants : `write([ids], {"active": False})` | |
|
| 118 | +| `ir.config_parameter` | Paramètres de configuration clé/valeur globaux. Stocke les webhooks URLs, les clés API tiers, les seuils. Lecture : `get_param("web.base.url")`. Écriture : `set_param("key", "value")` | |
|
| 119 | +| `ir.sequence` | Séquences de numérotation automatique (SO-XXX, INV-XXX, POS/2026/...). Définit le préfixe, suffixe, padding (`padding`), prochain numéro (`number_next`). Une séquence par type de document | |
|
| 120 | +| `ir.translation` | Traductions de l'interface. Stocke la source, la langue (`lang`), et la valeur (`value`). Permet d'exporter/importer les traductions pour personnaliser les termes | |
|
| 121 | +| `ir.attachment` | Pièces jointes et documents. Stockage binaire (`datas` en base64) ou fichiers. Lié à n'importe quel enregistrement via `res_model` + `res_id`. ⚠️ Utiliser plutôt que `product.image` (obsolète) | |
|
| 122 | +| `ir.qweb` | Templates QWeb pour le rendu HTML/PDF. Syntaxe XML avec directives : `<t t-foreach>`, `<t t-if>`, `<t t-esc>`. Utilisé par les rapports, emails, et le frontend website | |
|
| 123 | +| `ir.filters` | Filtres sauvegardés personnels. Chaque utilisateur peut créer ses propres filtres sur une vue liste. Stocke le `domain`, le `context`, et le `sort` | |
|
| 124 | +| `ir.default` | Valeurs par défaut des champs par utilisateur. Quand un champ est pré-rempli automatiquement, la valeur vient d'ici. Accessible via `ir.default.get(model, field)` | |
|
| 125 | +| `ir.logging` | Logs applicatifs. Niveau (`level` : info/warning/error/critical), message (`message`), traceback (`path`). Utile pour le débogage. ⚠️ Volumineux en production | |
|
| 126 | +| `ir.property` | Propriétés de champ multi-entreprise. Permet des valeurs différentes par société pour un même champ. Principalement utilisé en comptabilité pour les comptes par défaut | |
|
| 127 | + |
|
| 128 | +### 3.1 Contacts (res.*) |
|
| 130 | 129 | |
| 131 | 130 | | Modèle | Description | |
| 132 | 131 | |--------|-------------| |
| 133 | -| `res.partner` | 📖 Contacts, clients, fournisseurs | |
|
| 134 | -| `res.partner.category` | Étiquettes / tags | |
|
| 135 | -| `res.partner.bank` | Comptes bancaires | |
|
| 136 | -| `res.partner.title` | Titres (M., Mme, Dr...) | |
|
| 137 | -| `res.partner.industry` | Secteurs d'activité | |
|
| 138 | -| `res.company` | Sociétés | |
|
| 139 | -| `res.users` | Utilisateurs | |
|
| 140 | -| `res.groups` | Groupes de sécurité | |
|
| 141 | -| `res.lang` | Langues | |
|
| 142 | -| `res.country` | Pays | |
|
| 143 | -| `res.country.state` | Régions/États | |
|
| 144 | -| `res.currency` | Devises | |
|
| 145 | -| `res.currency.rate` | Taux de change | |
|
| 146 | -| `res.bank` | Banques | |
|
| 147 | -| `res.config.settings` | Configuration générale | |
|
| 132 | +| `res.partner` | **Le modèle central de tous les contacts Odoo** : clients, fournisseurs, prospects, employés, sociétés. Champs clés : `name`, `email`, `phone`, `customer_rank` (1 = client), `supplier_rank` (1 = fournisseur), `is_company` (True = société morale), `parent_id` (contacts liés à une société). Modèle le plus utilisé de tout l'écosystème Odoo | |
|
| 133 | +| `res.partner.category` | Étiquettes/tags pour catégoriser les contacts. Exemples : "VIP", "Prospect chaud", "Revendeur agréé". Relation Many2many avec `res.partner` via `category_id` | |
|
| 134 | +| `res.partner.bank` | Comptes bancaires des contacts : IBAN (`acc_number`), code BIC, banque (`bank_id`). Un contact peut avoir plusieurs comptes. Utilisé pour les prélèvements SEPA et les virements | |
|
| 135 | +| `res.partner.title` | Titres de civilité configurables : M., Mme, Dr, Pr, Mlle. Utilisé dans les formulaires de contact et les adresses de facturation/formulaires | |
|
| 136 | +| `res.partner.industry` | Secteurs d'activité : Agriculture, Industrie, Services, Retail, Santé... Aide à la segmentation client et aux rapports par secteur | |
|
| 137 | +| `res.company` | Sociétés de l'instance Odoo. Contient la raison sociale, l'adresse, le n° TVA (`vat`), le logo, la devise par défaut, le pays. En multi-entreprise, chaque entité a sa propre `res.company` avec sa comptabilité séparée | |
|
| 138 | +| `res.users` | Utilisateurs du système. Hérite de `res.partner` (chaque utilisateur est aussi un contact). Champs : `login` (email), `password`, `groups_id` (droits), `company_id`. ⚠️ Ne pas confondre avec `res.partner` qui stocke tous les contacts externes | |
|
| 139 | +| `res.groups` | Groupes de sécurité / droits d'accès. Chaque utilisateur appartient à un ou plusieurs groupes qui définissent ce qu'il peut voir et faire. Exemples : `base.group_user` (tout utilisateur), `sales_team.group_sale_manager` (manager ventes) | |
|
| 140 | +| `res.lang` | Langues disponibles. Définit les traductions chargées et le format des dates/nombres. Code ISO : `fr_FR`, `en_US`. `active=True` = langue activée | |
|
| 141 | +| `res.country` | Pays. Champs : `name`, `code` (ISO 3166), `currency_id`, `phone_code`. ⚠️ Attention : Réunion = ID 187 (pas 75, qui est la France métropolitaine) | |
|
| 142 | +| `res.country.state` | Régions, états, départements. Lié à `res.country`. Pour la France : Île-de-France, Auvergne-Rhône-Alpes, La Réunion... | |
|
| 143 | +| `res.currency` | Devises : EUR, USD, GBP... Champs : `name`, `symbol` (€, $, £), `rounding` (0.01 pour EUR, 1 pour JPY), `position` (before/after). La devise de la société détermine la comptabilité | |
|
| 144 | +| `res.currency.rate` | Taux de change par devise et par date. Permet la comptabilité multi-devises. Un taux est toujours exprimé par rapport à la devise de référence de l'entreprise | |
|
| 145 | +| `res.bank` | Institutions financières : "BNP Paribas", "Crédit Agricole"... Champs : `name`, `bic` (code SWIFT/BIC). Distinct de `res.partner.bank` qui stocke les comptes individuels | |
|
| 146 | +| `res.config.settings` | Configuration générale de l'instance. Interface unique pour tous les paramètres système (durée de validité des devis, devise par défaut...). Les valeurs sont stockées dans `ir.config_parameter` | |
|
| 148 | 147 | |
| 149 | 148 | ### 3.2 Ventes (sale.*) |
| 150 | 149 | |
| 151 | 150 | | Modèle | Description | |
| 152 | 151 | |--------|-------------| |
| 153 | -| `sale.order` | 📖 Commandes / devis | |
|
| 154 | -| `sale.order.line` | 📖 Lignes de commande | |
|
| 155 | -| `sale.order.template` | Modèles de devis | |
|
| 156 | -| `sale.order.template.line` | Lignes de modèle de devis | |
|
| 157 | -| `sale.order.template.option` | Options de modèles | |
|
| 158 | -| `sale.advance.payment.inv` | Assistant facture d'acompte | |
|
| 159 | -| `sale.order.cancel` | Assistant annulation | |
|
| 160 | -| `sale.payment.provider.onboarding.wizard` | Assistant onboarding paiement | |
|
| 161 | -| `sale.order.line.margin` | Marge par ligne (lecture) | |
|
| 152 | +| `sale.order` | **Devis et commandes clients**. Cycle : `draft` (devis) → `sent` (envoyé) → `sale` (commandé) → `done` (livré) → `cancel`. ⚠️ 7 champs obligatoires pour `create` : `name`, `partner_id`, `partner_invoice_id`, `partner_shipping_id`, `company_id`, `date_order`, `picking_policy`. Stocker la référence externe BilletWeb dans `client_order_ref` | |
|
| 153 | +| `sale.order.line` | Lignes de commande. Contient le produit (`product_id`), la quantité (`product_uom_qty`), le prix unitaire (`price_unit`), la remise (`discount`), les taxes. Peut être lié à un billet événement (`event_ticket_id`) et des inscriptions (`registration_ids`) | |
|
| 154 | +| `sale.order.template` | Modèles de devis réutilisables. Prédéfinit un panier de produits/services pour créer des devis en un clic. Contient des lignes via `sale.order.template.line` | |
|
| 155 | +| `sale.order.template.line` | Lignes des modèles de devis. Mêmes champs que `sale.order.line` mais liées à un template plutôt qu'à une commande réelle | |
|
| 156 | +| `sale.order.template.option` | Options de modèle de devis : produits optionnels présentés comme cases à cocher dans le formulaire de création de devis | |
|
| 157 | +| `sale.advance.payment.inv` | Assistant de facture d'acompte (wizard). Depuis un devis, génère une facture pour un pourcentage du montant total avant livraison | |
|
| 158 | +| `sale.order.cancel` | Assistant d'annulation de commande. Propose des raisons et gère le retour en stock automatique des produits livrés | |
|
| 159 | +| `sale.payment.provider.onboarding.wizard` | Assistant de configuration des fournisseurs de paiement en ligne (Stripe, PayPal, etc.) | |
|
| 160 | +| `sale.order.line.margin` | Marge calculée par ligne : prix de vente - prix de revient. Lecture seule, calculé automatiquement à partir du `standard_price` du produit | |
|
| 162 | 161 | |
| 163 | 162 | ### 3.3 PDV / Point de Vente (pos.*) |
| 164 | 163 | |
| 165 | 164 | | Modèle | Description | |
| 166 | 165 | |--------|-------------| |
| 167 | -| `pos.order` | 📖 Commandes PDV | |
|
| 168 | -| `pos.order.line` | 📖 Lignes PDV | |
|
| 169 | -| `pos.session` | 📖 Sessions de caisse | |
|
| 170 | -| `pos.config` | 📖 Configuration PDV | |
|
| 171 | -| `pos.payment` | Paiements PDV | |
|
| 172 | -| `pos.payment.method` | Modes de paiement | |
|
| 173 | -| `pos.category` | Catégories de produits PDV | |
|
| 174 | -| `pos.bill` | Tickets/reçus | |
|
| 175 | -| `pos.session.statement` | Relevés de session | |
|
| 176 | -| `pos.cash.box.in` | Entrée caisse | |
|
| 177 | -| `pos.cash.box.out` | Sortie caisse | |
|
| 178 | -| `pos.order.return` | Remboursement PDV | |
|
| 179 | -| `pos.discount` | Remises PDV | |
|
| 180 | -| `pos.combo` | Combos (menus) | |
|
| 181 | -| `pos.combo.line` | Lignes de combo | |
|
| 182 | -| `pos.close.session.wizard` | Assistant fermeture session | |
|
| 183 | -| `pos.printer` | Imprimantes IoT | |
|
| 184 | -| `pos.pack.operation.lot` | N° de lot/série | |
|
| 166 | +| `pos.order` | **Commandes PDV / tickets de caisse**. Créé automatiquement à chaque vente. Cycle : `draft` → `paid` → `done` → `invoiced`. Contient le total TTC (`amount_total`), les taxes, le rendu monnaie (`amount_return`). Lié à une session via `session_id` | |
|
| 167 | +| `pos.order.line` | Lignes de ticket PDV : produit, quantité (`qty`), prix unitaire, remise, taxes. Lié à `pos.order`. Créées en temps réel pendant l'encaissement | |
|
| 168 | +| `pos.session` | **Session de caisse**. Cycle : `opening_control` (ouverture) → `opened` → `closing_control` (clôture) → `closed`. Contient le solde d'ouverture (`cash_register_balance_start`) et de clôture, l'écart, et le détail par mode de paiement | |
|
| 169 | +| `pos.config` | Configuration du PDV : nom, modes de paiement disponibles, catégories affichées dans la grille, imprimante connectée, comportement (standard/restaurant/bar). Le champ `iface_print_via_proxy` active l'impression ticket | |
|
| 170 | +| `pos.payment` | Enregistrement individuel d'un paiement dans le PDV. Lié à une commande et un mode de paiement. Contient le montant, le rendu monnaie, et le statut | |
|
| 171 | +| `pos.payment.method` | Modes de paiement du PDV : Espèces, Carte bancaire, Chèque, Bon cadeau. Définit le journal comptable associé. Configurable par session | |
|
| 172 | +| `pos.category` | Catégories de produits affichées comme onglets dans la grille du PDV. Permet d'organiser les boutons produits (Billetterie, Snack, Boissons...) | |
|
| 173 | +| `pos.bill` | Tickets/reçus de caisse. Stocke le PDF et les métadonnées d'impression pour réimpression ultérieure | |
|
| 174 | +| `pos.session.statement` | Relevé de session : synthèse des paiements par mode. Généré automatiquement à la clôture | |
|
| 175 | +| `pos.cash.box.in` | Entrée d'argent dans la caisse hors vente (ex: apport de monnaie en cours de session, remise de fonds). Justification obligatoire | |
|
| 176 | +| `pos.cash.box.out` | Sortie d'argent de la caisse (ex: prélèvement pour dépôt en banque). Justification obligatoire | |
|
| 177 | +| `pos.order.return` | Remboursement / retour PDV. Crée un avoir lié à la commande d'origine. Gère la remise en stock si applicable | |
|
| 178 | +| `pos.discount` | Remises PDV prédéfinies (-10%, -20%...) applicables en un clic depuis l'interface de caisse | |
|
| 179 | +| `pos.combo` | Combos / menus groupés : "Menu Enfant" = Luge + Snack + Boisson à prix forfaitaire | |
|
| 180 | +| `pos.combo.line` | Lignes des combos : chaque produit inclus avec sa quantité et son prix dans le combo | |
|
| 181 | +| `pos.close.session.wizard` | Assistant de fermeture de session : étape 1 (compter les espèces), étape 2 (saisir totaux), étape 3 (confirmer) | |
|
| 182 | +| `pos.printer` | Imprimantes connectées au PDV (ticket client, cuisine, bar). Géré via IoT Box Odoo ou connexion IP directe | |
|
| 183 | +| `pos.pack.operation.lot` | N° de lot/série pour les produits tracés vendus en PDV. Obligatoire si le produit a `tracking != "none"` | |
|
| 185 | 184 | |
| 186 | 185 | ### 3.4 Produits (product.*) |
| 187 | 186 | |
| 188 | 187 | | Modèle | Description | |
| 189 | 188 | |--------|-------------| |
| 190 | -| `product.template` | Modèles de produits | |
|
| 191 | -| `product.product` | 📖 Variantes produits | |
|
| 192 | -| `product.category` | 📖 Catégories | |
|
| 193 | -| `product.attribute` | Attributs (taille, couleur...) | |
|
| 194 | -| `product.attribute.value` | Valeurs d'attribut | |
|
| 195 | -| `product.template.attribute.line` | Ligne attribut-modèle | |
|
| 196 | -| `product.template.attribute.value` | Valeur attribut-modèle | |
|
| 197 | -| `product.packaging` | Colisage | |
|
| 198 | -| `product.supplierinfo` | Infos fournisseur par produit | |
|
| 199 | -| `product.pricelist` | Listes de prix | |
|
| 200 | -| `product.pricelist.item` | Règles de prix | |
|
| 201 | -| `product.uom` | Unités de mesure | |
|
| 202 | -| `product.uom.categ` | Catégories d'unités | |
|
| 203 | -| `product.image` | Images (obsolète, utiliser `ir.attachment`) | |
|
| 204 | -| `product.label.layout` | Mise en page étiquettes | |
|
| 205 | -| `product.replenish` | Assistant réapprovisionnement | |
|
| 189 | +| `product.template` | Modèle de produit générique : nom, description, catégorie, prix par défaut, taxes. Si le produit n'a pas de variantes, Odoo crée automatiquement un `product.product` correspondant | |
|
| 190 | +| `product.product` | **Variante spécifique d'un produit**. C'est CE modèle qui est utilisé dans les commandes, le PDV, l'inventaire. Champs propres : `barcode`, `default_code`. ⚠️ Utiliser `type` (consu/service/product), pas `detailed_type` qui n'existe pas sur SaaS | |
|
| 191 | +| `product.category` | Catégories de produits hiérarchiques (`parent_id`). Utilisées pour organiser les produits, appliquer des comptes comptables par défaut, structurer les grilles PDV | |
|
| 192 | +| `product.attribute` | Attributs de variante : Taille, Couleur, Matière. Chaque attribut a des valeurs (`product.attribute.value`) qui se combinent pour générer les variantes | |
|
| 193 | +| `product.attribute.value` | Valeurs d'attribut : "Rouge", "XL", "42", "Cuir". Lié à un attribut. Utilisé pour générer les combinaisons de variantes | |
|
| 194 | +| `product.template.attribute.line` | Ligne liant un attribut à un modèle de produit. Définit quelles valeurs d'attribut sont disponibles pour ce produit spécifique | |
|
| 195 | +| `product.template.attribute.value` | Association valeur → produit avec prix supplémentaire éventuel (ex: +5€ pour XL, +10€ pour Cuir) | |
|
| 196 | +| `product.packaging` | Colisage : carton de 12, palette de 48... Utilisé pour les achats en gros et les propositions de quantité dans les commandes | |
|
| 197 | +| `product.supplierinfo` | Infos fournisseur par produit : prix d'achat, délai (jours), quantité minimum, référence chez le fournisseur. Un produit peut avoir plusieurs entrées (une par fournisseur) | |
|
| 198 | +| `product.pricelist` | Listes de prix / tarifs. Permet des prix différents par client, période, devise. Contient des règles (`product.pricelist.item`) | |
|
| 199 | +| `product.pricelist.item` | Règle de prix dans une liste : produit ou catégorie cible, calcul (fixe/pourcentage/formule), période de validité, quantité minimum | |
|
| 200 | +| `product.uom` | Unités de mesure : unité, kg, litre, mètre, boîte, palette... Avec facteur de conversion (1 boîte = 12 unités). Lié à une catégorie | |
|
| 201 | +| `product.uom.categ` | Catégories d'unités : Volume, Poids, Longueur, Unité. Les unités d'une même catégorie sont convertibles entre elles | |
|
| 202 | +| `product.image` | ⚠️ **Obsolète**. Remplacé par `ir.attachment`. Stockait les images produits en base64 | |
|
| 203 | +| `product.label.layout` | Assistant de mise en page pour impression d'étiquettes produits (format, quantité) | |
|
| 204 | +| `product.replenish` | Assistant de réapprovisionnement : depuis la fiche produit, génère un ordre de réappro directement | |
|
| 206 | 205 | |
| 207 | 206 | ### 3.5 Inventaire / Stock (stock.*) |
| 208 | 207 | |
| 209 | 208 | | Modèle | Description | |
| 210 | 209 | |--------|-------------| |
| 211 | -| `stock.picking` | Transferts / bons de livraison | |
|
| 212 | -| `stock.move` | Mouvements de stock | |
|
| 213 | -| `stock.move.line` | Lignes de mouvement | |
|
| 214 | -| `stock.quant` | 📖 Quantités en stock | |
|
| 215 | -| `stock.location` | Emplacements | |
|
| 216 | -| `stock.warehouse` | Entrepôts | |
|
| 217 | -| `stock.inventory.adjustment.name` | Ajustement d'inventaire | |
|
| 218 | -| `stock.rule` | Règles de réapprovisionnement | |
|
| 219 | -| `stock.picking.type` | Types d'opération | |
|
| 220 | -| `stock.package.type` | Types de colis | |
|
| 221 | -| `stock.package.destination` | Destination colis | |
|
| 222 | -| `stock.package.level` | Niveau colis | |
|
| 223 | -| `stock.lot` | Lots / numéros de série | |
|
| 224 | -| `stock.storage.category` | Catégories de stockage | |
|
| 225 | -| `stock.putaway.rule` | Règles de rangement | |
|
| 226 | -| `stock.scrap` | Mise au rebut | |
|
| 227 | -| `stock.warn.insufficient.qty` | Assistant stock insuffisant | |
|
| 228 | -| `stock.quantity.history` | Historique quantités | |
|
| 229 | -| `stock.track.confirmation` | Traçabilité | |
|
| 230 | -| `stock.track.line` | Ligne de traçabilité | |
|
| 231 | -| `stock.assign.serial` | Assignation n° série | |
|
| 232 | -| `stock.scheduler.compute` | Calcul du scheduler MTS/MTO | |
|
| 233 | -| `stock.change.product.qty` | Modification quantité | |
|
| 234 | -| `stock.return.picking` | Retour de transfert | |
|
| 235 | - |
|
| 236 | -### 3.6 Facturation / Comptabilité (account.*) |
|
| 210 | +| `stock.picking` | **Transferts / bons de livraison**. Déplace des produits entre emplacements. Types : livraison client, réception fournisseur, transfert interne. Cycle : `draft` → `waiting` → `confirmed` → `assigned` → `done` → `cancel` | |
|
| 211 | +| `stock.move` | Mouvement de stock planifié : quel produit, de quel emplacement source, vers quel emplacement destination, quelle quantité. Créés par les commandes et les pickings. Cycle : `draft` → `confirmed` → `assigned` → `done` → `cancel` | |
|
| 212 | +| `stock.move.line` | Ligne de mouvement exécutée physiquement. Spécifie le lot/série, l'emplacement précis, la quantité prélevée. Créé au moment de la réservation ou du transfert réel | |
|
| 213 | +| `stock.quant` | **Quantité physique en stock**. Combinaison unique : produit × emplacement × lot/série × quantité. C'est LA source de vérité de l'inventaire. Le stock total d'un produit = somme de ses quants | |
|
| 214 | +| `stock.location` | Emplacements de stockage hiérarchiques (`location_id` = emplacement parent). Types via `usage` : internal (stock), supplier (fournisseurs), customer (clients), inventory (pertes), production, transit | |
|
| 215 | +| `stock.warehouse` | Entrepôts. Un entrepôt crée 3 emplacements par défaut : stock, entrée, sortie. Plusieurs entrepôts possibles par société | |
|
| 216 | +| `stock.inventory.adjustment.name` | Inventaire physique. Compare les quantités théoriques (quants) avec les quantités comptées. Génère automatiquement les ajustements d'écart | |
|
| 217 | +| `stock.rule` | Règles de réapprovisionnement automatique : quand et comment réapprovisionner (quantité min/max, délai, méthode MTS/MTO) | |
|
| 218 | +| `stock.picking.type` | Types d'opération : Livraison client, Réception fournisseur, Transfert interne. Définit emplacements source/destination par défaut et la séquence de numérotation | |
|
| 219 | +| `stock.package.type` | Types de colis : boîte, palette, conteneur. Définit dimensions, poids, et éventuellement le nombre de produits par colis | |
|
| 220 | +| `stock.package.destination` | Destination d'un colis entier (adresse de livraison). Évite de renseigner l'adresse produit par produit | |
|
| 221 | +| `stock.package.level` | Hiérarchie des colis : palette contient des boîtes, conteneur contient des palettes | |
|
| 222 | +| `stock.lot` | Lots et numéros de série. Traçabilité : date de fabrication, péremption, fournisseur. Obligatoire si `tracking = "lot"` ou `"serial"` sur le produit | |
|
| 223 | +| `stock.storage.category` | Catégories de stockage restreignant quels produits vont où : température contrôlée, dangereux, fragile, zone sécurisée | |
|
| 224 | +| `stock.putaway.rule` | Règle de rangement automatique : quand le produit X arrive, le mettre dans l'emplacement Y. Lié à une catégorie + emplacement destination | |
|
| 225 | +| `stock.scrap` | Mise au rebut : produits endommagés, périmés, perdus. Déplace vers un emplacement "Rebuts" et sort de l'inventaire utilisable | |
|
| 226 | +| `stock.warn.insufficient.qty` | Assistant d'avertissement quand on essaie de livrer plus que le stock disponible (wizard bloquant) | |
|
| 227 | +| `stock.quantity.history` | Historique des quantités en stock à une date donnée. Permet de voir l'état du stock à n'importe quelle date passée | |
|
| 228 | +| `stock.track.confirmation` | Assistant vérifiant que tous les lots/séries obligatoires sont renseignés avant de finaliser un transfert | |
|
| 229 | +| `stock.track.line` | Ligne de suivi traçabilité : fait le lien entre un mouvement et son lot/série d'origine | |
|
| 230 | +| `stock.assign.serial` | Assistant d'assignation de n° de série. Permet de générer ou sélectionner des numéros pour les produits suivis | |
|
| 231 | +| `stock.scheduler.compute` | Déclencheur du calcul MRP complet. Analyse tous les besoins (commandes clients, réappro) et génère les ordres de fabrication/réappro | |
|
| 232 | +| `stock.change.product.qty` | Assistant de modification manuelle de quantité (correction de stock sans inventaire complet) | |
|
| 233 | +| `stock.return.picking` | Assistant de retour : crée un transfert inverse pour retourner des produits au fournisseur ou reprendre une livraison client | |
|
| 234 | + |
|
| 235 | +### 3.6 Comptabilité (account.*) |
|
| 237 | 236 | |
| 238 | 237 | | Modèle | Description | |
| 239 | 238 | |--------|-------------| |
| 240 | -| `account.move` | 📖 Écritures comptables / Factures | |
|
| 241 | -| `account.move.line` | Lignes d'écriture | |
|
| 242 | -| `account.journal` | Journaux (ventes, banque, caisse...) | |
|
| 243 | -| `account.tax` | 📖 Taxes | |
|
| 244 | -| `account.tax.group` | 📖 Groupes de taxes | |
|
| 245 | -| `account.fiscal.position` | Positions fiscales | |
|
| 246 | -| `account.fiscal.position.tax` | Mapping taxes position fiscale | |
|
| 247 | -| `account.fiscal.position.account` | Mapping comptes position fiscale | |
|
| 248 | -| `account.payment` | 📖 Paiements | |
|
| 249 | -| `account.payment.register` | Assistant enregistrement paiement | |
|
| 250 | -| `account.payment.term` | Conditions de paiement | |
|
| 251 | -| `account.payment.term.line` | Lignes conditions de paiement | |
|
| 252 | -| `account.chart.template` | Modèle plan comptable ⚠️ SaaS restreint | |
|
| 253 | -| `account.account` | Comptes comptables | |
|
| 254 | -| `account.account.type` | Types de comptes | |
|
| 255 | -| `account.account.tag` | Étiquettes comptes | |
|
| 256 | -| `account.group` | Groupes de comptes | |
|
| 257 | -| `account.bank.statement` | Relevés bancaires | |
|
| 258 | -| `account.bank.statement.line` | Lignes relevé | |
|
| 259 | -| `account.reconcile.model` | Modèles de lettrage | |
|
| 260 | -| `account.reconcile.model.line` | Lignes modèle | |
|
| 261 | -| `account.analytic.account` | Comptes analytiques | |
|
| 262 | -| `account.analytic.line` | Lignes analytiques | |
|
| 263 | -| `account.analytic.plan` | Plans analytiques | |
|
| 264 | -| `account.analytic.tag` | Étiquettes analytiques | |
|
| 265 | -| `account.asset` | Immobilisations | |
|
| 266 | -| `account.asset.category` | Catégories d'immobilisation | |
|
| 267 | -| `account.budget.post` | Postes budgétaires | |
|
| 268 | -| `account.cash.rounding` | Arrondi espèces | |
|
| 269 | -| `account.financial.year.op` | Ouverture exercice | |
|
| 270 | -| `account.aged.trial.balance` | Balance âgée | |
|
| 271 | -| `account.general.ledger` | Grand livre | |
|
| 272 | -| `account.trial.balance` | Balance | |
|
| 273 | -| `account.tax.report` | Rapport de taxes | |
|
| 274 | -| `account.report` | Rapports comptables | |
|
| 275 | -| `account.report.line` | Lignes de rapport | |
|
| 276 | -| `account.accrued.orders.wizard` | Assistant OD | |
|
| 277 | -| `account.automatic.entry.wizard` | Assistant écritures auto | |
|
| 278 | -| `wizard.multi.charts.accounts` | Assistant plan comptable ⚠️ SaaS restreint | |
|
| 239 | +| `account.move` | **Écritures comptables ET factures**. Modèle central. Une facture client = `move_type: "out_invoice"`, un avoir = `"out_refund"`, facture fournisseur = `"in_invoice"`. États : `draft` → `posted` → `cancel`. Contient totaux, devise, partenaire, date d'échéance | |
|
| 240 | +| `account.move.line` | Lignes d'écriture comptable. Chaque ligne débite ou crédite un compte. Contient : compte (`account_id`), débit, crédit, partenaire, date d'échéance, statut de rapprochement (`reconciled`). Base du lettrage et du reporting | |
|
| 241 | +| `account.journal` | Journaux comptables : Ventes, Achats, Banque, Caisse, Opérations diverses. Chaque pièce comptable est rattachée à un journal. Définit séquence de numérotation, devise, comptes par défaut | |
|
| 242 | +| `account.tax` | **Taxes/TVA**. Taux via `amount` (8.5, 2.1, 20...), type de calcul (`amount_type` : percent/fixed/group), utilisation (`type_tax_use` : sale/purchase/none). Pour La Réunion : créer 8.5% et 2.1%, désactiver les taux métropole (20%/10%/5.5%) | |
|
| 243 | +| `account.tax.group` | Groupe de taxes : réunit vente et achat d'un même taux. ⚠️ DOM : ne pas mettre `country_id` (erreur mismatch Réunion ID 187 ≠ France ID 75). Créer le groupe sans contrainte pays | |
|
| 244 | +| `account.fiscal.position` | Position fiscale : mapping automatique taxes/comptes selon le pays ou le client. Exemple : position "DOM" mappant 20% → 8.5% | |
|
| 245 | +| `account.fiscal.position.tax` | Ligne de mapping : taxe source → taxe destination. "Quand la taxe 20% est appliquée, utiliser 8.5% à la place" | |
|
| 246 | +| `account.fiscal.position.account` | Ligne de mapping : compte source → compte destination. Change le compte de produit selon la position fiscale | |
|
| 247 | +| `account.payment` | **Paiement enregistré**. Type : `inbound` (reçu) / `outbound` (envoyé). Lié à des factures, un journal, un mode de paiement. Montant, date, référence | |
|
| 248 | +| `account.payment.register` | Assistant wizard de paiement : crée un `account.payment` et lettre automatiquement avec les factures ouvertes du partenaire | |
|
| 249 | +| `account.payment.term` | Conditions de paiement : "30 jours fin de mois", "45 jours net", "à réception". Contient des lignes d'échéance | |
|
| 250 | +| `account.payment.term.line` | Ligne de condition : pourcentage dû, nombre de jours, jour du mois. Exemple : 50% à J+30, 50% à J+60 | |
|
| 251 | +| `account.chart.template` | Modèle de plan comptable standard (PCG France, US GAAP...). ⚠️ SaaS : installation via API restreinte, passer par l'interface web | |
|
| 252 | +| `account.account` | **Comptes comptables**. Plan de comptes : 707000 Ventes, 401000 Fournisseurs, 512000 Banque... Type de compte, code, devise, réconciliable ou non | |
|
| 253 | +| `account.account.type` | Types de comptes : Actif, Passif, Produits, Charges, Capitaux propres. Définit le comportement (débit/crédit par défaut, sens du solde) | |
|
| 254 | +| `account.account.tag` | Étiquettes comptes pour reporting fiscal : "TVA déductible", "Charges déductibles", "Produits imposables" | |
|
| 255 | +| `account.group` | Groupes de comptes pour présentation du bilan et compte de résultat. Structure hiérarchique (comptes de bilan, comptes de résultat...) | |
|
| 256 | +| `account.bank.statement` | Relevé bancaire importé (CSV, OFX, CODA) ou saisi. Contient des lignes à rapprocher avec les écritures comptables | |
|
| 257 | +| `account.bank.statement.line` | Ligne de relevé : date, libellé, montant, contrepartie suggérée. À lettrer avec les `account.move.line` | |
|
| 258 | +| `account.reconcile.model` | Modèle de lettrage automatique : règles pour rapprocher les lignes de relevé avec les écritures (ex: si libellé contient "FACT" → chercher la facture) | |
|
| 259 | +| `account.reconcile.model.line` | Ligne de modèle : compte de contrepartie, pourcentage, montant fixe pour répartition automatique | |
|
| 260 | +| `account.analytic.account` | **Comptes analytiques / Centres de coûts**. Suivi coûts/revenus par projet, département, client. Ventilation obligatoire ou optionnelle selon config | |
|
| 261 | +| `account.analytic.line` | Lignes analytiques : temps passé, coûts, revenus par compte analytique. Utilisé par timesheets, notes de frais, ventilation factures | |
|
| 262 | +| `account.analytic.plan` | Plans analytiques : regroupements de comptes pour analyses multi-axes (projet × département × client) | |
|
| 263 | +| `account.analytic.tag` | Étiquettes analytiques pour catégorisation des lignes | |
|
| 264 | +| `account.analytic.distribution.model` | Modèle de répartition analytique automatique (ex: 60% département A, 40% département B) | |
|
| 265 | +| `account.asset` | Immobilisations : machines, véhicules, bâtiments. Gère l'amortissement automatique (durée, méthode linéaire/dégressif, valeur résiduelle) | |
|
| 266 | +| `account.asset.category` | Catégories d'immobilisation : comptes de dotation, amortissement, sortie par défaut | |
|
| 267 | +| `account.budget.post` | Postes budgétaires : Salaires, Marketing, IT... Liés aux comptes comptables pour analyse | |
|
| 268 | +| `account.cash.rounding` | Arrondi espèces : règle d'arrondi aux 5 centimes (Suisse) ou suppression centimes. Appliqué en PDV et facturation | |
|
| 269 | +| `account.financial.year.op` | Assistant ouverture exercice : génère les écritures d'à-nouveaux de clôture | |
|
| 270 | +| `account.aged.trial.balance` | Balance âgée : créances/dettes ventilées par échéance (0-30j, 30-60j, 60-90j, >90j). Rapport de recouvrement | |
|
| 271 | +| `account.general.ledger` | Grand livre : toutes les écritures d'un compte sur une période avec débit, crédit, cumul progressif | |
|
| 272 | +| `account.trial.balance` | Balance générale : par compte, total débit, total crédit, solde. Doit être équilibrée (total débit = total crédit) | |
|
| 273 | +| `account.tax.report` | Rapport de TVA / déclaration fiscale : TVA collectée, TVA déductible, montant à payer ou crédit | |
|
| 274 | +| `account.report` | Rapports financiers configurables : bilan, compte de résultat. Lié à `account.report.line` | |
|
| 275 | +| `account.report.line` | Ligne de rapport : nom, formule (somme de comptes, opérations), niveau hiérarchique | |
|
| 276 | +| `account.accrued.orders.wizard` | Assistant OD (Opérations Diverses) : écritures de régularisation | |
|
| 277 | +| `account.automatic.entry.wizard` | Assistant d'écritures récurrentes automatiques (loyers, abonnements...) | |
|
| 278 | +| `wizard.multi.charts.accounts` | Assistant d'installation du plan comptable. ⚠️ SaaS : API restreinte, à faire via Paramètres → Comptabilité → Localisation fiscale | |
|
| 279 | 279 | |
| 280 | 280 | ### 3.7 Événements (event.*) |
| 281 | 281 | |
| 282 | 282 | | Modèle | Description | |
| 283 | 283 | |--------|-------------| |
| 284 | -| `event.event` | 📖 Événements | |
|
| 285 | -| `event.event.ticket` | 📖 Types de billets | |
|
| 286 | -| `event.registration` | 📖 Participants / inscriptions | |
|
| 287 | -| `event.type` | Catégories d'événements | |
|
| 288 | -| `event.tag` | Étiquettes événements | |
|
| 289 | -| `event.mail` | Emails événement planifiés | |
|
| 290 | -| `event.mail.registration` | Emails inscription | |
|
| 291 | -| `event.track` | Programme / sessions | |
|
| 292 | -| `event.track.location` | Lieux de session | |
|
| 293 | -| `event.track.tag` | Étiquettes session | |
|
| 294 | -| `event.sponsor` | Sponsors | |
|
| 295 | -| `event.sponsor.type` | Types de sponsor | |
|
| 296 | -| `event.registration.cancel` | Assistant annulation inscription | |
|
| 284 | +| `event.event` | **Événement** : nom, dates, lieu, places max, responsable. Contient billets (`event_ticket_ids`) et inscriptions (`registration_ids`). ⚠️ Désactiver `auto_confirm` pour éviter l'envoi d'emails en masse à chaque inscription | |
|
| 285 | +| `event.event.ticket` | **Type de billet**. Lié à un produit (`product_id`) — la vente du produit génère l'inscription. Définit le prix, le nombre de places disponibles. Essentiel pour le flux BilletWeb → Odoo | |
|
| 286 | +| `event.registration` | **Inscription / Participant**. Nom, email, code-barres (`barcode` pour QR BilletWeb), état (`draft`/`open`/`done`/`cancel`), billet, commande liée. ⚠️ `description` n'existe pas → utiliser `barcode` pour les références externes | |
|
| 287 | +| `event.type` | Catégories d'événements : Conférence, Salon, Formation, Concert... Paramètres par défaut (durée, modèle email) | |
|
| 288 | +| `event.tag` | Étiquettes événement pour filtrage et recherche : "Annuel", "Scolaire", "Entreprise" | |
|
| 289 | +| `event.mail` | Emails planifiés liés à un événement (quel template, envoyé quand : X jours avant/après). Utilise `mail.template` | |
|
| 290 | +| `event.mail.registration` | Emails planifiés spécifiques aux inscriptions ("rappel 2 jours avant l'événement", "remerciement après") | |
|
| 291 | +| `event.track` | Programme/Sessions : "10h - Keynote", "14h - Workshop". Lieu, durée, speaker, description | |
|
| 292 | +| `event.track.location` | Lieux de session : Salle A, Auditorium, Stand 12. Lié à l'événement | |
|
| 293 | +| `event.track.tag` | Étiquettes session : "Technique", "Débutant", "Avancé" | |
|
| 294 | +| `event.sponsor` | Sponsors : nom, logo, niveau, URL, description. Affiché sur la page événement | |
|
| 295 | +| `event.sponsor.type` | Niveaux de sponsoring (Platinum, Gold, Silver, Bronze) avec ordre d'affichage | |
|
| 296 | +| `event.registration.cancel` | Assistant annulation inscription avec raison et email optionnel | |
|
| 297 | 297 | |
| 298 | 298 | ### 3.8 CRM (crm.*) |
| 299 | 299 | |
| 300 | 300 | | Modèle | Description | |
| 301 | 301 | |--------|-------------| |
| 302 | -| `crm.lead` | Pistes / Leads | |
|
| 303 | -| `crm.team` | Équipes commerciales | |
|
| 304 | -| `crm.stage` | Étapes du pipeline | |
|
| 305 | -| `crm.tag` | Étiquettes CRM | |
|
| 306 | -| `crm.lead.lost` | Assistant perte de piste | |
|
| 307 | -| `crm.lead.to.opportunity` | Conversion lead → opportunité | |
|
| 308 | -| `crm.merge.opportunity` | Fusion opportunités | |
|
| 309 | -| `crm.iap.lead.mining.request` | Lead Mining IAP | |
|
| 310 | -| `crm.iap.lead.role` | Rôles IAP | |
|
| 311 | -| `crm.iap.lead.seniority` | Séniorité IAP | |
|
| 312 | -| `crm.quotation.partner` | Partenaire de devis | |
|
| 302 | +| `crm.lead` | **Piste / Lead / Opportunité**. Pipeline : étapes (`stage_id`), contact, entreprise, montant attendu, probabilité, date de clôture. Une piste gagnée peut créer un devis automatiquement | |
|
| 303 | +| `crm.team` | Équipe commerciale : vendeurs, pipeline dédié, règles d'assignation auto, alias email. ⚠️ Pas de licence utilisateur requise pour les membres (gratuit) | |
|
| 304 | +| `crm.stage` | Étape du pipeline : Nouveau, Qualifié, Proposition, Négociation, Gagné, Perdu. Probabilité, actions auto, si étape gagnante/perdante | |
|
| 305 | +| `crm.tag` | Étiquettes pistes : "Urgent", "Grand compte", "Salon 2024", "Webinar" | |
|
| 306 | +| `crm.lead.lost` | Assistant perte de piste : oblige à choisir une raison pour analyse des causes | |
|
| 307 | +| `crm.lead.to.opportunity` | Conversion lead → opportunité qualifiée avec fusion des doublons | |
|
| 308 | +| `crm.merge.opportunity` | Fusion de plusieurs pistes en une seule (garde le contact le plus pertinent) | |
|
| 309 | +| `crm.iap.lead.mining.request` | Lead Mining : génération de pistes selon critères (pays, secteur, taille). Service payant IAP | |
|
| 310 | +| `crm.iap.lead.role` | Rôles pour lead mining : CEO, CTO, Marketing Manager, CFO... | |
|
| 311 | +| `crm.iap.lead.seniority` | Séniorité : Junior, Senior, Director, VP, C-Level | |
|
| 312 | +| `crm.quotation.partner` | Partenaire de devis CRM : lie un contact à un template de devis pour envoi rapide | |
|
| 313 | 313 | |
| 314 | 314 | ### 3.9 Ressources Humaines (hr.*) |
| 315 | 315 | |
| 316 | 316 | | Modèle | Description | |
| 317 | 317 | |--------|-------------| |
| 318 | -| `hr.employee` | Employés | |
|
| 319 | -| `hr.employee.category` | Catégories employés | |
|
| 320 | -| `hr.department` | Départements | |
|
| 321 | -| `hr.job` | Postes | |
|
| 322 | -| `hr.contract` | Contrats | |
|
| 323 | -| `hr.leave` | Congés | |
|
| 324 | -| `hr.leave.type` | Types de congés | |
|
| 325 | -| `hr.leave.allocation` | Allocations de congés | |
|
| 326 | -| `hr.expense` | Notes de frais | |
|
| 327 | -| `hr.expense.sheet` | Feuilles de frais | |
|
| 328 | -| `hr.expense.category` | Catégories de frais | |
|
| 329 | -| `hr.attendance` | Présences/pointages | |
|
| 330 | -| `hr.applicant` | Candidats | |
|
| 331 | -| `hr.recruitment.stage` | Étapes recrutement | |
|
| 332 | -| `hr.plan` | Plans RH | |
|
| 333 | -| `hr.plan.activity.type` | Types d'activité plan RH | |
|
| 334 | -| `hr.work.entry.type` | Types d'entrée de travail | |
|
| 318 | +| `hr.employee` | **Employé**. Lié à `res.users` (accès système) ou `res.partner`. Nom, poste (`job_id`), département, manager, coach, date d'entrée | |
|
| 319 | +| `hr.employee.category` | Catégories : CDI, CDD, Stagiaire, Cadre, Non-cadre. Filtrage et regroupement | |
|
| 320 | +| `hr.department` | Départements : Commercial, Technique, RH, Finance. Hiérarchique via `parent_id` | |
|
| 321 | +| `hr.job` | Postes / Fiches de poste : titre, description, compétences, fourchette de salaire. Utilisé en recrutement | |
|
| 322 | +| `hr.contract` | Contrats de travail : type, dates, salaire, temps de travail, avantages. Génère les éléments de paie | |
|
| 323 | +| `hr.leave` | **Congés / Absences**. Employé fait une demande → validée par le manager. Consomme le solde d'allocations | |
|
| 324 | +| `hr.leave.type` | Types de congés : CP, RTT, Maladie, Maternité, Sans solde. Règles de validation, responsable | |
|
| 325 | +| `hr.leave.allocation` | Allocation de jours : "25 jours de CP par an". Période d'acquisition, report possible | |
|
| 326 | +| `hr.expense` | Note de frais : date, description, montant, catégorie, justificatif. Regroupée en feuille | |
|
| 327 | +| `hr.expense.sheet` | Feuille de frais : regroupe plusieurs notes. Cycle : draft → submitted → approved → posted → paid | |
|
| 328 | +| `hr.expense.category` | Catégories : Transport, Hébergement, Repas. Compte comptable et TVA par défaut | |
|
| 329 | +| `hr.attendance` | Pointages : heure arrivée/départ. Calcul automatique du temps travaillé | |
|
| 330 | +| `hr.applicant` | Candidats : CV, coordonnées, poste visé, étapes de recrutement. Lié à `hr.job` | |
|
| 331 | +| `hr.recruitment.stage` | Étapes recrutement : CV reçu, Entretien tel, Entretien technique, Offre, Accepté, Refusé | |
|
| 332 | +| `hr.plan` | Plans RH : prévisions effectifs, recrutements, départs par département | |
|
| 333 | +| `hr.plan.activity.type` | Types d'activité plan RH : Recrutement, Formation, Mobilité | |
|
| 334 | +| `hr.work.entry.type` | Types d'entrée travail : Présent, Absent, Congé payé, Heures sup. Base de la paie | |
|
| 335 | 335 | |
| 336 | 336 | ### 3.10 Projets (project.*) |
| 337 | 337 | |
| 338 | 338 | | Modèle | Description | |
| 339 | 339 | |--------|-------------| |
| 340 | -| `project.project` | Projets | |
|
| 341 | -| `project.task` | Tâches | |
|
| 342 | -| `project.task.type` | Étapes de tâche | |
|
| 343 | -| `project.tags` | Étiquettes projet | |
|
| 344 | -| `project.milestone` | Jalons | |
|
| 345 | -| `project.task.recurrence` | Tâches récurrentes | |
|
| 346 | -| `project.update` | Mises à jour projet | |
|
| 347 | -| `project.share.wizard` | Assistant partage projet | |
|
| 348 | -| `project.delete.wizard` | Assistant suppression projet | |
|
| 349 | - |
|
| 350 | -### 3.11 Facturation / Temps (account.analytic.*) |
|
| 340 | +| `project.project` | **Projet**. Tâches, jalons, documents. Lié à un compte analytique pour suivi coûts. Définit les étapes par défaut | |
|
| 341 | +| `project.task` | **Tâche**. Cœur du module : titre, description, assigné (`user_id`), échéance (`date_deadline`), priorité, kanban state. Sous-tâches via `parent_id` | |
|
| 342 | +| `project.task.type` | Étapes : À faire, En cours, En attente, Terminé, Annulé. Configurable par projet | |
|
| 343 | +| `project.tags` | Étiquettes : "Urgent", "Client", "Bug", "Amélioration". Filtres et vue Kanban | |
|
| 344 | +| `project.milestone` | Jalons : dates clés avec livrables. Suivi d'avancement projet | |
|
| 345 | +| `project.task.recurrence` | Tâche récurrente : "Tous les lundis", "1er du mois". Génération automatique | |
|
| 346 | +| `project.update` | Mise à jour statut projet : "Fait", "Bloque", "Prochaine étape". Compte-rendu périodique | |
|
| 347 | +| `project.share.wizard` | Assistant partage projet avec client/partenaire via portail | |
|
| 348 | +| `project.delete.wizard` | Assistant suppression projet (avec ou sans les tâches) | |
|
| 349 | + |
|
| 350 | +### 3.11 Achats (purchase.*) |
|
| 351 | 351 | |
| 352 | 352 | | Modèle | Description | |
| 353 | 353 | |--------|-------------| |
| 354 | -| `account.analytic.account` | Comptes analytiques | |
|
| 355 | -| `account.analytic.line` | Lignes analytiques (timesheet) | |
|
| 356 | -| `account.analytic.plan` | Plans analytiques | |
|
| 357 | -| `account.analytic.tag` | Étiquettes analytiques | |
|
| 358 | -| `account.analytic.distribution.model` | Modèles de distribution | |
|
| 354 | +| `purchase.order` | **Commande fournisseur**. Mêmes principes que `sale.order` côté achat. Cycle : draft → sent → purchase → done → cancel | |
|
| 355 | +| `purchase.order.line` | Ligne de commande fournisseur : produit, quantité, prix unitaire, date de livraison prévue | |
|
| 356 | +| `purchase.requisition` | Appel d'offres : demande de prix à plusieurs fournisseurs avant de passer commande | |
|
| 357 | +| `purchase.requisition.line` | Ligne d'appel d'offres : produit demandé, quantité | |
|
| 358 | +| `purchase.bill.union` | Assistant regroupement de factures fournisseur en une seule | |
|
| 359 | +| `purchase.bill.line.union` | Ligne de regroupement : associe chaque ligne de facture à la commande | |
|
| 359 | 360 | |
| 360 | -### 3.12 Timesheet (hr_timesheet.*) |
|
| 361 | +### 3.12 Abonnements (sale.subscription.*) |
|
| 361 | 362 | |
| 362 | 363 | | Modèle | Description | |
| 363 | 364 | |--------|-------------| |
| 364 | -| `account.analytic.line` | Feuilles de temps (même modèle que 3.11) | |
|
| 365 | -| `project.task.create.timesheet` | Assistant création timesheet | |
|
| 366 | -| `timesheet.analysis.report` | Rapport d'analyse | |
|
| 365 | +| `sale.subscription` | **Abonnement récurrent**. Génère automatiquement des commandes à intervalle régulier. Champs : date début/fin, période, template | |
|
| 366 | +| `sale.subscription.line` | Ligne d'abonnement : produit, quantité, prix, facturée à chaque renouvellement | |
|
| 367 | +| `sale.subscription.template` | Modèle d'abonnement prédéfini : "Maintenance Mensuelle", "Support Annuel" | |
|
| 368 | +| `sale.subscription.alert` | Alertes : "Arrive à échéance", "Paiement en retard". Déclenche des actions | |
|
| 369 | +| `sale.subscription.close.reason` | Raisons clôture : Résiliation client, Fin de contrat, Impayé | |
|
| 370 | +| `sale.subscription.recurrence.period` | Périodes : Hebdomadaire, Mensuel, Trimestriel, Annuel | |
|
| 367 | 371 | |
| 368 | -### 3.13 Achats (purchase.*) |
|
| 372 | +### 3.13 E-commerce (website.*, payment.*, product.public.*) |
|
| 369 | 373 | |
| 370 | 374 | | Modèle | Description | |
| 371 | 375 | |--------|-------------| |
| 372 | -| `purchase.order` | Commandes fournisseur | |
|
| 373 | -| `purchase.order.line` | Lignes commande fournisseur | |
|
| 374 | -| `purchase.requisition` | Appels d'offres | |
|
| 375 | -| `purchase.requisition.line` | Lignes appel d'offres | |
|
| 376 | -| `purchase.bill.union` | Regroupement factures | |
|
| 377 | -| `purchase.bill.line.union` | Lignes regroupement | |
|
| 378 | - |
|
| 379 | -### 3.14 Abonnements (sale.subscription.*) |
|
| 380 | - |
|
| 381 | -| Modèle | Description | |
|
| 382 | -|--------|-------------| |
|
| 383 | -| `sale.subscription` | Abonnements | |
|
| 384 | -| `sale.subscription.line` | Lignes d'abonnement | |
|
| 385 | -| `sale.subscription.template` | Modèles d'abonnement | |
|
| 386 | -| `sale.subscription.alert` | Alertes abonnement | |
|
| 387 | -| `sale.subscription.close.reason` | Raisons clôture | |
|
| 388 | -| `sale.subscription.recurrence.period` | Périodes récurrentes | |
|
| 389 | - |
|
| 390 | -### 3.15 E-commerce (website.* + product.public.*) |
|
| 391 | - |
|
| 392 | -| Modèle | Description | |
|
| 393 | -|--------|-------------| |
|
| 394 | -| `website` | Sites web | |
|
| 395 | -| `website.page` | Pages | |
|
| 396 | -| `website.menu` | Menus du site | |
|
| 397 | -| `website.rewrite` | Redirections | |
|
| 398 | -| `website.visitor` | Visiteurs | |
|
| 399 | -| `website.track` | Tracking | |
|
| 400 | -| `product.public.category` | Catégories e-commerce | |
|
| 401 | -| `product.ribbon` | Rubans produit | |
|
| 402 | -| `website.sale.extra.field` | Champs supplémentaires checkout | |
|
| 403 | -| `website.sale.extra.line` | Lignes frais supplémentaires | |
|
| 404 | -| `payment.provider` | Fournisseurs de paiement | |
|
| 405 | -| `payment.token` | Tokens de paiement sauvegardés | |
|
| 406 | -| `payment.transaction` | Transactions de paiement | |
|
| 407 | -| `payment.link.wizard` | Assistant lien de paiement | |
|
| 408 | - |
|
| 409 | -### 3.16 Messagerie / Emails (mail.*) |
|
| 410 | - |
|
| 411 | -| Modèle | Description | |
|
| 412 | -|--------|-------------| |
|
| 413 | -| `mail.message` | Messages (fil de discussion) | |
|
| 414 | -| `mail.activity` | Activités planifiées | |
|
| 415 | -| `mail.activity.type` | Types d'activité | |
|
| 416 | -| `mail.template` | Modèles d'email | |
|
| 417 | -| `mail.mail` | 📖 Emails en file d'attente | |
|
| 418 | -| `mail.compose.message` | Assistant composition | |
|
| 419 | -| `mail.channel` | Canaux de discussion | |
|
| 420 | -| `mail.channel.member` | Membres du canal | |
|
| 421 | -| `mail.followers` | Abonnés | |
|
| 422 | -| `mail.notification` | Notifications | |
|
| 423 | -| `mail.tracking.value` | Valeurs de suivi | |
|
| 424 | -| `mail.alias` | Alias email | |
|
| 425 | -| `mail.alias.domain` | Domaines alias | |
|
| 426 | -| `mail.shortcode` | Codes courts | |
|
| 427 | -| `mail.link.preview` | Aperçus de lien | |
|
| 428 | -| `fetchmail.server` | Serveur entrant (IMAP/POP) | |
|
| 429 | - |
|
| 430 | -### 3.17 Marketing / Email (mass_mailing.* + link.tracker.*) |
|
| 376 | +| `website` | **Site web Odoo**. Un par base (ou multi-site). Domaine, langue, thème, menus, pages. Point d'entrée du e-commerce | |
|
| 377 | +| `website.page` | Pages : contenu HTML, URL (`url`), indexation (`website_indexed`), visibilité. Éditable via builder | |
|
| 378 | +| `website.menu` | Menus de navigation hiérarchiques. Liés à une URL ou page | |
|
| 379 | +| `website.rewrite` | Redirections 301/302. Préserve le SEO quand une URL change | |
|
| 380 | +| `website.visitor` | Visiteurs traqués par cookie. Pays, langue, nombre de visites, temps passé. Base du marketing automation | |
|
| 381 | +| `website.track` | Tracking pages : URL vue, temps, source (SEO, campagne, réseau social) | |
|
| 382 | +| `product.public.category` | Catégories e-commerce visibles sur le site. Distinct de `product.category` (interne) | |
|
| 383 | +| `product.ribbon` | Rubans visuels produits : "Nouveau", "Promo -20%", "Épuisé", "Coup de cœur" | |
|
| 384 | +| `website.sale.extra.field` | Champs supplémentaires checkout : "N° TVA", "Nom entreprise", "Instructions livraison" | |
|
| 385 | +| `website.sale.extra.line` | Frais supplémentaires panier : livraison, assurance, emballage cadeau | |
|
| 386 | +| `payment.provider` | Fournisseurs de paiement en ligne : Stripe, PayPal, Ogone, Adyen. Configuré pour e-commerce et factures | |
|
| 387 | +| `payment.token` | Token de paiement sauvegardé. Permet le paiement en 1 clic sans ressaisir la carte | |
|
| 388 | +| `payment.transaction` | Transaction : cycle draft → pending → authorized → done → error → cancel. Liée à facture/commande | |
|
| 389 | +| `payment.link.wizard` | Assistant lien de paiement : génère une URL à envoyer au client pour qu'il paie en ligne | |
|
| 390 | + |
|
| 391 | +### 3.14 Messagerie (mail.*, fetchmail.*) |
|
| 431 | 392 | |
| 432 | 393 | | Modèle | Description | |
| 433 | 394 | |--------|-------------| |
| 434 | -| `mailing.mailing` | Campagnes email | |
|
| 435 | -| `mailing.list` | Listes de diffusion | |
|
| 436 | -| `mailing.contact` | Contacts liste | |
|
| 437 | -| `mailing.trace` | Traces (ouvertures, clics) | |
|
| 438 | -| `link.tracker` | Traqueurs de lien | |
|
| 439 | -| `link.tracker.click` | Clics sur liens | |
|
| 440 | -| `link.tracker.code` | Codes de lien | |
|
| 441 | - |
|
| 442 | -### 3.18 Sondages (survey.*) |
|
| 443 | - |
|
| 444 | -| Modèle | Description | |
|
| 445 | -|--------|-------------| |
|
| 446 | -| `survey.survey` | Sondages | |
|
| 447 | -| `survey.question` | Questions | |
|
| 448 | -| `survey.question.answer` | Réponses possibles | |
|
| 449 | -| `survey.user_input` | Réponses utilisateur | |
|
| 450 | -| `survey.user_input.line` | Lignes de réponse | |
|
| 451 | -| `survey.invite` | Invitations | |
|
| 452 | - |
|
| 453 | -### 3.19 Événements Live / Forum |
|
| 395 | +| `mail.message` | **Messages du chatter**. Lié à tout enregistrement (`res_model` + `res_id`). Corps HTML, auteur, pièces jointes. Supporte les notes internes et les emails entrants | |
|
| 396 | +| `mail.activity` | **Activités planifiées** (to-do). "Appeler ce client dans 3 jours". Apparaît dans le planning. Cycle : planifié → fait → annulé | |
|
| 397 | +| `mail.activity.type` | Types d'activité : Appel, Email, Réunion, Upload document, À faire. Icône, catégorie, actions par défaut | |
|
| 398 | +| `mail.template` | Modèles d'email avec placeholders `${object.name}`. Utilisé pour confirmations, factures, rappels. ⚠️ `auto_delete=True` pour désactiver | |
|
| 399 | +| `mail.mail` | **Emails en file d'attente** à envoyer. États : `outgoing`, `sent`, `exception` (erreur), `cancel`. Les emails bloqués restent en `exception` | |
|
| 400 | +| `mail.compose.message` | Assistant composition d'email depuis n'importe quelle fiche (wizard) | |
|
| 401 | +| `mail.channel` | Canaux de discussion (chat). Publics, privés, directs. Module Discuss | |
|
| 402 | +| `mail.channel.member` | Membres d'un canal avec droits lecture/écriture | |
|
| 403 | +| `mail.followers` | **Abonnés** d'un enregistrement. Reçoivent des notifications aux modifications | |
|
| 404 | +| `mail.notification` | Notifications envoyées : email, in-app, push. Statut : ready, sent, exception, bounced | |
|
| 405 | +| `mail.tracking.value` | Suivi des modifications : "Champ X changé de A à B le JJ/MM par Untel". Affiché dans le chatter | |
|
| 406 | +| `mail.alias` | Alias email : quand un email arrive sur `ventes@`, crée automatiquement une piste CRM | |
|
| 407 | +| `mail.alias.domain` | Domaines autorisés pour les alias (`@odoo.com`, domaine personnalisé) | |
|
| 408 | +| `mail.shortcode` | Codes courts pour réponses rapides : "#merci" insère un message prédéfini | |
|
| 409 | +| `mail.link.preview` | Aperçus de lien automatiques dans le chatter (carte de preview URL) | |
|
| 410 | +| `fetchmail.server` | Serveur email entrant (IMAP/POP). Relève une boîte et transforme les emails en enregistrements. ⚠️ `active=False` pour désactiver la relève | |
|
| 411 | + |
|
| 412 | +### 3.15 Marketing Email (mailing.*, link.tracker.*) |
|
| 454 | 413 | |
| 455 | 414 | | Modèle | Description | |
| 456 | 415 | |--------|-------------| |
| 457 | -| `event.booth` | Stands salon | |
|
| 458 | -| `event.booth.category` | Catégories stand | |
|
| 459 | -| `forum.forum` | Forums | |
|
| 460 | -| `forum.post` | Messages forum | |
|
| 461 | -| `forum.tag` | Étiquettes forum | |
|
| 416 | +| `mailing.mailing` | **Campagne d'emailing**. Destinataires (liste ou domaine M2O), template, date envoi, stats (envoyés, ouverts, cliqués, rebonds) | |
|
| 417 | +| `mailing.list` | Liste de diffusion contenant des contacts. Peut être générée dynamiquement via un domaine | |
|
| 418 | +| `mailing.contact` | Contact d'une liste : email, nom, date opt-in/opt-out. Respecte RGPD | |
|
| 419 | +| `mailing.trace` | Traces de campagne : ouvertures, clics, rebonds, désabonnements. Statistiques détaillées | |
|
| 420 | +| `link.tracker` | Traqueur générant une URL courte pour mesurer les clics. Utilisé en emailing et e-commerce | |
|
| 421 | +| `link.tracker.click` | Clic enregistré : IP, date, pays, navigateur | |
|
| 422 | +| `link.tracker.code` | Code promo lié à un traqueur : "BIENVENUE10" → -10% | |
|
| 462 | 423 | |
| 463 | -### 3.20 Base de connaissances (knowledge.*) |
|
| 424 | +### 3.16 Sondages (survey.*) |
|
| 464 | 425 | |
| 465 | 426 | | Modèle | Description | |
| 466 | 427 | |--------|-------------| |
| 467 | -| `knowledge.article` | Articles base de connaissance | |
|
| 468 | -| `knowledge.article.favorite` | Favoris article | |
|
| 469 | -| `knowledge.article.member` | Membres article | |
|
| 470 | -| `knowledge.cover` | Couverture | |
|
| 428 | +| `survey.survey` | **Sondage / Formulaire**. Questions, mise en page, scoring, tentatives autorisées, certificat | |
|
| 429 | +| `survey.question` | Question : type (QCM, texte libre, matrice, échelle), obligatoire, image, condition d'affichage | |
|
| 430 | +| `survey.question.answer` | Réponse possible à une question QCM avec valeur, score, message conditionnel | |
|
| 431 | +| `survey.user_input` | Réponse d'un participant : score total, temps passé, date début/fin | |
|
| 432 | +| `survey.user_input.line` | Ligne de réponse : question + réponse donnée + score. Analyse détaillée | |
|
| 433 | +| `survey.invite` | Invitation par email avec lien unique pour éviter les doublons | |
|
| 471 | 434 | |
| 472 | -### 3.21 Planning (planning.*) |
|
| 435 | +### 3.17 Autres modules (event.booth, forum, knowledge, planning, documents, approvals) |
|
| 473 | 436 | |
| 474 | 437 | | Modèle | Description | |
| 475 | 438 | |--------|-------------| |
| 476 | -| `planning.slot` | Créneaux planning | |
|
| 477 | -| `planning.slot.template` | Modèles de créneau | |
|
| 478 | -| `planning.role` | Rôles planning | |
|
| 479 | -| `planning.calendar` | Calendriers | |
|
| 439 | +| `event.booth` | Stand d'exposition dans un salon. Réservable par sponsors avec services associés | |
|
| 440 | +| `event.booth.category` | Catégorie stand : Standard, Premium, Gold. Prix et services inclus | |
|
| 441 | +| `forum.forum` | Forum de discussion : catégories, sujets, posts. Support communautaire et FAQ | |
|
| 442 | +| `forum.post` | Message forum : lié à un sujet, votable, signalable | |
|
| 443 | +| `forum.tag` | Étiquettes : "Bug", "Question", "Tutoriel", "Annonce" | |
|
| 444 | +| `knowledge.article` | Article base connaissance : hiérarchique, markdown, propriétés, favoris | |
|
| 445 | +| `knowledge.article.favorite` | Article en favori d'un utilisateur | |
|
| 446 | +| `knowledge.article.member` | Membres avec accès à un article restreint | |
|
| 447 | +| `knowledge.cover` | Image de couverture d'article | |
|
| 448 | +| `planning.slot` | Créneau planning : employé, date/heure début, durée, rôle. Shifts | |
|
| 449 | +| `planning.slot.template` | Modèle créneau récurrent : "Lundi 8h-12h chaque semaine" | |
|
| 450 | +| `planning.role` | Rôle planning : "Caissier", "Agent d'accueil", "Technicien" | |
|
| 451 | +| `planning.calendar` | Calendrier regroupant créneaux avec horaires d'ouverture | |
|
| 452 | +| `documents.document` | Document : fichier + métadonnées + tags + dossier | |
|
| 453 | +| `documents.folder` | Dossier hiérarchique avec droits d'accès | |
|
| 454 | +| `documents.tag` | Étiquette document pour catégorisation | |
|
| 455 | +| `documents.share` | Lien de partage document(s) avec externes | |
|
| 456 | +| `approval.request` | Demande d'approbation : congés, achat, validation devis | |
|
| 457 | +| `approval.category` | Catégorie avec workflow : qui approuve, dans quel ordre | |
|
| 458 | +| `approval.approver` | Approbateur dans une demande. Statut : en attente, approuvé, refusé | |
|
| 480 | 459 | |
| 481 | -### 3.22 Documents (documents.*) |
|
| 482 | 460 | |
| 483 | -| Modèle | Description | |
|
| 484 | -|--------|-------------| |
|
| 485 | -| `documents.document` | Documents | |
|
| 486 | -| `documents.folder` | Dossiers | |
|
| 487 | -| `documents.tag` | Étiquettes document | |
|
| 488 | -| `documents.share` | Partage de documents | |
|
| 489 | - |
|
| 490 | -### 3.23 Approbations (approvals.*) |
|
| 491 | - |
|
| 492 | -| Modèle | Description | |
|
| 493 | -|--------|-------------| |
|
| 494 | -| `approval.request` | Demandes d'approbation | |
|
| 495 | -| `approval.category` | Catégories d'approbation | |
|
| 496 | -| `approval.approver` | Approbateurs | |
|
| 497 | 461 | |
| 498 | 462 | --- |
| 499 | 463 |