project.project : champs, relations et API
Le modèle project.project (« Projet ») est un modèle persistant déclaré par le module Projet, puis enrichi par 13 autres modules. Il expose 129 champs, dont 84 déclarés directement sur le modèle ; 26 champs d'autres modèles pointent vers lui. Retrouvez ci-dessous chaque champ avec son nom technique, son type, son libellé français et ses relations, puis un exemple d'appel à l'API JSON-2 d'Odoo 19.
Fiche d'identité
- Nom technique
project.project- Libellé
- Projet
- Type
- Persistant (models.Model)
- Table SQL
project_project- Module d'origine
- Projet (
project) - Étendu par
- hr_timesheet, project_account, project_hr_expense, project_mrp, project_mrp_account, sale_project, project_purchase, project_stock, project_sale_expense, project_sms, project_stock_account, sale_project_stock, sale_timesheet
- Tri par défaut (_order)
sequence, name, id
Champs du modèle
84 champs propres, 39 hérités des mixins et 6 champs automatiques de l'ORM. Cliquez sur un nom pour obtenir le lien direct vers le champ.
129 champs affichés sur 129
| Nom technique | Libellé | Type | Détails |
|---|---|---|---|
| access_instruction_message | Access Instruction Message | char | calculé |
| account_id | Compte | many2one | |
| active | Actif | boolean | |
| alias_id | Alias E-mail interne associé avec le projet. Les e-mails entrants sont automatiquement synchronisés avec les tâches (ou optionnellement les incidents si le module Suivi des Incidents est installé). | many2one | |
| allocated_hours | Temps alloué | float | ajouté par Journaux des tâches ( |
| allow_billable | Facturable | boolean | ajouté par Ventes - Projet ( |
| allow_milestones | Jalons | boolean | |
| allow_recurring_tasks | Tâches récurrentes | boolean | |
| allow_task_dependencies | Dépendances de tâches | boolean | |
| allow_timesheets | Feuilles de temps | boolean | calculé, stocké ajouté par Journaux des tâches ( |
| analytic_account_active | Active Account | boolean | related : ajouté par Journaux des tâches ( |
| analytic_account_balance | Analytic Account Balance | monetary | related : |
| billing_type | Type de facturation | selection | requiscalculé, stocké Valeurs : ajouté par Feuille de temps des ventes ( |
| bom_count | Bom Count | integer | calculé ajouté par Projet MRP ( |
| can_mark_milestone_as_done | Can Mark Milestone As Done | boolean | calculé |
| closed_task_count | Closed Task Count | integer | calculé |
| collaborator_count | # Collaborators | integer | calculé |
| collaborator_ids | Collaborateurs | one2many | inverse : |
| color | Couleur | integer | |
| company_id | Société | many2one | calculé, stocké |
| currency_id | Devise | many2one | lecture seulecalculé |
| date | Date d'expiration Date à laquelle le projet prend fin. Le délai défini sur le projet est pris en compte lors de la visualisation de son planning. | date | |
| date_start | Date de début | date | |
| description | Description Description pour donner plus d'informations et de contexte sur ce projet | html | |
| display_sales_stat_buttons | Display Sales Stat Buttons | boolean | calculé ajouté par Ventes - Projet ( |
| duration_tracking | Duration Tracking | json | |
| effective_hours | Temps passé | float | calculé ajouté par Journaux des tâches ( |
| encode_uom_in_days | Encode Uom In Days | boolean | calculé ajouté par Journaux des tâches ( |
| favorite_user_ids | Membres | many2many | |
| has_any_so_to_invoice | Has SO to Invoice | boolean | calculé ajouté par Ventes - Projet ( |
| has_any_so_with_nothing_to_invoice | Has a SO with an invoice status of No | boolean | calculé ajouté par Ventes - Projet ( |
| invoice_count | Nombre de factures | integer | calculé ajouté par Ventes - Projet ( |
| is_favorite | Show Project on Dashboard | boolean | calculé |
| is_internal_project | Is Internal Project | boolean | calculé ajouté par Journaux des tâches ( |
| is_milestone_deadline_exceeded | Is Milestone Deadline Exceeded | boolean | calculé |
| is_milestone_exceeded | Is Milestone Exceeded | boolean | calculé |
| is_project_overtime | Project in Overtime | boolean | calculé ajouté par Journaux des tâches ( |
| is_template | Est un modèle | boolean | |
| label_tasks | Utiliser les tâches comme Nom utilisé pour référer aux tâches de votre projet, par ex. tâches, tickets, sprints, etc... | char | traduisible |
| last_update_color | Last Update Color | integer | calculé |
| last_update_id | Dernière mise à jour | many2one | |
| last_update_status | Last Update Status | selection | requiscalculé, stocké Valeurs : |
| milestone_count | Milestone Count | integer | calculé |
| milestone_count_reached | Milestone Count Reached | integer | calculé |
| milestone_ids | Jalon | one2many | inverse : |
| milestone_progress | Milestones Reached | integer | calculé |
| name | Nom | char | requistraduisible |
| next_milestone_id | Next Milestone | many2one | calculé |
| open_task_count | Open Task Count | integer | calculé |
| partner_id | Client | many2one | calculé, stocké |
| pricing_type | Tarif Le taux de la tâche est parfait si vous souhaitez facturer différents services à différents clients à différents taux. Le taux de l'employé est préférable si vos employés fournissent le même service à un taux différent. Par exemple, des consultants junior et senior fourniraient le même service (= la consultance), mais à des taux différents à cause de leur niveau d'ancienneté. | selection | calculé Valeurs : ajouté par Feuille de temps des ventes ( |
| privacy_visibility | Visibilité Project and Task Visibility: - Invited internal users: Can access only the project or tasks they follow. Assignees automatically get access. - Invited internal and portal users: Same as above, extended to portal users. - All internal users: Full access to the project and all its tasks. - All internal and invited portal users: Internal users get full access. Portal users can access only the project or tasks they follow. Portal Access Levels: - Read-only: Portal users see tasks via their portal but can’t edit them. - Edit (limited): Portal users access kanban/list views and can edit limited fields on followed tasks. - Edit: Same as above, with access to all tasks. Other Rules: - Internal users can open a task from a direct link, even without project access. - Project admins have access to private projects, even if not followers. | selection | requis Valeurs : |
| privacy_visibility_warning | Privacy Visibility Warning | char | calculé |
| production_count | Production Count | integer | calculé ajouté par Projet MRP ( |
| purchase_orders_count | # Purchase Orders | integer | calculé ajouté par Projet Achats ( |
| reinvoiced_sale_order_id | Commande client Les produits ajoutés aux transferts de stock, dont le type d'opération est configuré pour générer des coûts analytiques, seront facturés à nouveau dans cette commande client si cela est prévu. | many2one | ajouté par Ventes - Projet ( |
| remaining_hours | Temps restant | float | calculé ajouté par Journaux des tâches ( |
| resource_calendar_id | Temps de travail | many2one | calculé |
| sale_line_employee_ids | Sale line/Employee map Sales order item that will be selected by default on the timesheets of the corresponding employee. It bypasses the sales order item defined on the project and the task, and can be modified on each timesheet entry if necessary. In other words, it defines the rate at which an employee's time is billed based on their expertise, skills or experience, for instance. If you would like to bill the same service at a different rate, you need to create two separate sales order items as each sales order item can only have a single unit price at a time. You can also define the hourly company cost of your employees for their timesheets on this project specifically. It will bypass the timesheet cost set on the employee. | one2many | inverse : ajouté par Feuille de temps des ventes ( |
| sale_line_id | Article de la commande client Sales order item that will be selected by default on the tasks and timesheets of this project, except if the employee set on the timesheets is explicitely linked to another sales order item on the project. It can be modified on each task and timesheet entry individually if necessary. | many2one | calculé, stocké ajouté par Ventes - Projet ( |
| sale_order_count | Nombre de commandes clients | integer | calculé ajouté par Ventes - Projet ( |
| sale_order_id | Commande client | many2one | related : ajouté par Ventes - Projet ( |
| sale_order_line_count | Sale Order Line Count | integer | calculé ajouté par Ventes - Projet ( |
| sale_order_state | Sale Order State | selection | related : ajouté par Ventes - Projet ( |
| sequence | Séquence | integer | |
| show_ratings | Show Ratings | boolean | calculé |
| stage_id | Étape | many2one | |
| stage_id_color | Stage Color | integer | related : |
| tag_ids | Étiquettes | many2many | |
| task_completion_percentage | Task Completion Percentage | float | calculé |
| task_count | Task Count | integer | calculé |
| task_ids | Tâches | one2many | inverse : |
| task_properties_definition | Propriétés de la tâche | properties_definition | |
| tasks | Activités de tâches | one2many | inverse : |
| timesheet_encode_uom_id | Timesheet Encode Uom | many2one→ uom.uom | calculé ajouté par Journaux des tâches ( |
| timesheet_ids | Associated Timesheets | one2many | inverse : ajouté par Journaux des tâches ( |
| timesheet_product_id | Produit de feuille de temps Service qui sera utilisé par défaut lors de la facturation du temps consacré à une tâche. Il peut être modifié sur chaque tâche individuellement en sélectionnant un article de commande spécifique. | many2one | calculé, stocké ajouté par Feuille de temps des ventes ( |
| total_timesheet_time | Total amount of time (in the proper unit) recorded in the project, rounded to the unit. | float | calculé ajouté par Journaux des tâches ( |
| type_ids | Étapes des tâches | many2many | |
| update_count | Update Count | integer | calculé |
| update_ids | Mettre à jour | one2many | inverse : |
| user_id | Chef de projet | many2one | |
| vendor_bill_count | Nombre de factures fournisseurs | integer | related : ajouté par Ventes - Projet ( |
| warning_employee_rate | Warning Employee Rate | boolean | calculé ajouté par Feuille de temps des ventes ( |
| access_token | Jeton de sécurité | char | hérité de portal.mixin |
| access_url | URl d'accès au portail URl du portail client | char | calculé hérité de portal.mixin |
| access_warning | Avertissement d'accès | text | calculé hérité de portal.mixin |
| activity_calendar_event_id | Activité suivante de l'événement du calendrier | many2one | calculé hérité de mail.activity.mixin |
| activity_date_deadline | Date limite de l'activité à venir | date | lecture seulecalculé hérité de mail.activity.mixin |
| activity_exception_decoration | Indicateur d’exception d’activité Type d'activité d'exception enregistrée. | selection | calculé Valeurs : hérité de mail.activity.mixin |
| activity_exception_icon | Icône Icône pour indiquer une activité d'exception. | char | calculé hérité de mail.activity.mixin |
| activity_ids | Activités | one2many | inverse : hérité de mail.activity.mixin |
| activity_state | Statut de l'activité Status based on activities Overdue: Due date is already passed Today: Activity date is today Planned: Future activities. | selection | calculé Valeurs : hérité de mail.activity.mixin |
| activity_summary | Résumé de l'activité suivante | char | related : hérité de mail.activity.mixin |
| activity_type_icon | Icône de type d'activité | char | related : hérité de mail.activity.mixin |
| activity_type_id | Type d'activités à venir | many2one | related : hérité de mail.activity.mixin |
| activity_user_id | Utilisateur responsable | many2one | lecture seulecalculé hérité de mail.activity.mixin |
| alias_defaults | Alias Defaults | text | hérité de mail.alias.mixin |
| alias_domain | Nom d'alias de domaine | char | related : hérité de mail.alias.mixin.optional |
| alias_domain_id | Alias de domaine | many2one | related : hérité de mail.alias.mixin.optional |
| alias_email | Alias de messagerie | char | calculé hérité de mail.alias.mixin.optional |
| alias_name | Nom de l'alias | char | hérité de mail.alias.mixin |
| auto_account_id | Compte analytique | many2one | calculé hérité de analytic.plan.fields.mixin |
| has_message | A un message | boolean | calculé hérité de mail.thread |
| is_rotting | Inactivité | boolean | calculé hérité de mail.tracking.duration.mixin |
| message_attachment_count | Nombre de pièces jointes | integer | calculé hérité de mail.thread |
| message_follower_ids | Abonnés | one2many | inverse : hérité de mail.thread |
| message_has_error | Erreur d'envoi du message Si coché, certains messages ont une erreur de livraison. | boolean | calculé hérité de mail.thread |
| message_has_error_counter | Nombre d'erreurs Nombre de messages avec des erreurs d'envoi | integer | calculé hérité de mail.thread |
| message_has_sms_error | Erreur d'envoi SMS Si coché, certains messages ont une erreur de livraison. | boolean | calculé hérité de mail.thread |
| message_ids | Messages | one2many | inverse : hérité de mail.thread |
| message_is_follower | Est un abonné | boolean | calculé hérité de mail.thread |
| message_needaction | Nécessite une action Si coché, de nouveaux messages demandent votre attention. | boolean | calculé hérité de mail.thread |
| message_needaction_counter | Nombre d'actions Nombre de messages nécessitant une action | integer | calculé hérité de mail.thread |
| message_partner_ids | Abonnés (Partenaires) | many2many | calculé hérité de mail.thread |
| my_activity_date_deadline | Échéance de mon activité | date | lecture seulecalculé hérité de mail.activity.mixin |
| rating_avg | Évaluation moyenne | float | calculé hérité de rating.parent.mixin |
| rating_avg_percentage | Évaluation moyenne (%) | float | calculé hérité de rating.parent.mixin |
| rating_count | # Évaluations | integer | calculé hérité de rating.parent.mixin |
| rating_ids | Évaluations | one2many | inverse : hérité de rating.parent.mixin |
| rating_percentage_satisfaction | Évaluation de la satisfaction Pourcentage d'évaluations positives | integer | calculé hérité de rating.parent.mixin |
| rotting_days | Jours d’inactivité Nombre de jours depuis la dernière mise à jour de cette ressource | integer | calculé hérité de mail.tracking.duration.mixin |
| website_message_ids | Messages du site web Historique de communication du site web | one2many | inverse : hérité de mail.thread |
| create_date | Créé le | datetime | lecture seuleautomatique |
| create_uid | Créé par | many2one | lecture seuleautomatique |
| display_name | Nom affiché | char | lecture seulecalculéautomatique |
| id | ID | integer | lecture seuleautomatique |
| write_date | Dernière mise à jour le | datetime | lecture seuleautomatique |
| write_uid | Dernière mise à jour par | many2one | lecture seuleautomatique |
Relations
Modèles liés depuis ce modèle
- account.analytic.account : account_id
- account.analytic.line : timesheet_ids
- mail.alias : alias_id
- product.product : timesheet_product_id
- project.collaborator : collaborator_ids
- project.milestone : milestone_ids, next_milestone_id
- project.project.stage : stage_id
- project.sale.line.employee.map : sale_line_employee_ids
- project.tags : tag_ids
- project.task : task_ids, tasks
- project.task.type : type_ids
- project.update : last_update_id, update_ids
- res.company : company_id
- res.currency : currency_id
- res.partner : partner_id
- res.users : favorite_user_ids, user_id
- resource.calendar : resource_calendar_id
- sale.order : reinvoiced_sale_order_id, sale_order_id
- sale.order.line : sale_line_id
- uom.uom : timesheet_encode_uom_id
Champs d'autres modèles qui pointent ici
- account.analytic.line : project_id
- mrp.bom : project_id
- mrp.production : project_id
- product.template : project_id, project_template_id
- project.collaborator : project_id
- project.milestone : project_id
- project.sale.line.employee.map : project_id
- project.tags : project_ids
- project.task : project_id
- project.task.burndown.chart.report : project_id
- project.task.type : project_ids
- project.task.type.delete.wizard : project_ids
- project.template.create.wizard : template_id
- project.update : project_id
- purchase.order : project_id
- report.project.task.user : project_id
- res.company : internal_project_id
- res.config.settings : internal_project_id
- res.users : favorite_project_ids
- sale.order : project_id, project_ids
- sale.order.line : project_id
- sale.report : project_id
- stock.picking : project_id
- timesheets.analysis.report : project_id
Lire ce modèle par l'API
Exemple d'appel à l'API JSON-2 d'Odoo 19 : lecture des cinq premiers enregistrements avec des champs réels du modèle. Remplacez l'instance, la base et la clé API par les vôtres.
curl -X POST "https://votre-instance.odoo.com/json/2/project.project/search_read" \
-H "Authorization: bearer $ODOO_API_KEY" \
-H "X-Odoo-Database: votre-base" \
-H "Content-Type: application/json" \
-d '{"domain":[],"fields":["name","billing_type","last_update_status","privacy_visibility","account_id"],"limit":5}'import requests
BASE_URL = "https://votre-instance.odoo.com/json/2"
headers = {"Authorization": f"bearer {API_KEY}", "X-Odoo-Database": "votre-base"}
res = requests.post(
f"{BASE_URL}/project.project/search_read",
headers=headers,
json={"domain": [], "fields": ["name","billing_type","last_update_status","privacy_visibility","account_id"], "limit": 5},
)
res.raise_for_status()
print(res.json())- L'accès à l'API externe est réservé à la formule Custom d'Odoo.
- XML-RPC et JSON-RPC seront retirés dans Odoo 22 (automne 2028) : préférez JSON-2.
- Les droits d'accès et règles d'enregistrement de l'utilisateur de la clé s'appliquent.
Citer cet outil
Vous rédigez un tutoriel, une documentation interne ou une réponse sur un forum ? Copiez ce lien pour renvoyer vos lecteurs vers la fiche à jour.
<a href="https://aidoo.ai/fr/outils/explorateur-modeles-odoo/project-project">project.project (Odoo 19.0)</a>Sources
- Code source du modèle sur GitHub
- Documentation Odoo 19 : ORM API
- Documentation Odoo 19 : API externe JSON-2
Données vérifiées le 23 septembre 2026 · Odoo 19.0 Community
Vous avez un projet Odoo ou souhaitez exploiter votre ERP avec l'IA ? Échangeons
Intégration, développement de modules, connexion de Claude ou ChatGPT à vos données : décrivez-nous votre contexte, nous vous répondons sous 24 heures ouvrées.