Odoo 19.0 Community · Persistant

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
Hérite de (mixins)
portal.mixinmail.alias.mixinrating.parent.mixinmail.activity.mixinmail.tracking.duration.mixinanalytic.plan.fields.mixin

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 techniqueLibelléTypeDétails
access_instruction_messageAccess Instruction Messagechar
calculé
account_idComptemany2one
activeActifboolean
alias_idAlias

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_hoursTemps allouéfloat

ajouté par Journaux des tâches (hr_timesheet)

allow_billableFacturableboolean

ajouté par Ventes - Projet (sale_project)

allow_milestonesJalonsboolean
allow_recurring_tasksTâches récurrentesboolean
allow_task_dependenciesDépendances de tâchesboolean
allow_timesheetsFeuilles de tempsboolean
calculé, stocké

ajouté par Journaux des tâches (hr_timesheet)

analytic_account_activeActive Accountboolean

related : account_id.active

ajouté par Journaux des tâches (hr_timesheet)

analytic_account_balanceAnalytic Account Balancemonetary

related : account_id.balance

billing_typeType de facturationselection
requiscalculé, stocké

Valeurs : not_billable (non facturable), manually (facturé manuellement)

ajouté par Feuille de temps des ventes (sale_timesheet)

bom_countBom Countinteger
calculé

ajouté par Projet MRP (project_mrp)

can_mark_milestone_as_doneCan Mark Milestone As Doneboolean
calculé
closed_task_countClosed Task Countinteger
calculé
collaborator_count# Collaboratorsinteger
calculé
collaborator_idsCollaborateursone2many

inverse : project_id

colorCouleurinteger
company_idSociétémany2one
calculé, stocké
currency_idDevisemany2one
lecture seulecalculé
dateDate 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_startDate de débutdate
descriptionDescription

Description pour donner plus d'informations et de contexte sur ce projet

html
display_sales_stat_buttonsDisplay Sales Stat Buttonsboolean
calculé

ajouté par Ventes - Projet (sale_project)

duration_trackingDuration Trackingjson
effective_hoursTemps passéfloat
calculé

ajouté par Journaux des tâches (hr_timesheet)

encode_uom_in_daysEncode Uom In Daysboolean
calculé

ajouté par Journaux des tâches (hr_timesheet)

favorite_user_idsMembresmany2many
has_any_so_to_invoiceHas SO to Invoiceboolean
calculé

ajouté par Ventes - Projet (sale_project)

has_any_so_with_nothing_to_invoiceHas a SO with an invoice status of Noboolean
calculé

ajouté par Ventes - Projet (sale_project)

invoice_countNombre de facturesinteger
calculé

ajouté par Ventes - Projet (sale_project)

is_favoriteShow Project on Dashboardboolean
calculé
is_internal_projectIs Internal Projectboolean
calculé

ajouté par Journaux des tâches (hr_timesheet)

is_milestone_deadline_exceededIs Milestone Deadline Exceededboolean
calculé
is_milestone_exceededIs Milestone Exceededboolean
calculé
is_project_overtimeProject in Overtimeboolean
calculé

ajouté par Journaux des tâches (hr_timesheet)

is_templateEst un modèleboolean
label_tasksUtiliser 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_colorLast Update Colorinteger
calculé
last_update_idDernière mise à jourmany2one
last_update_statusLast Update Statusselection
requiscalculé, stocké

Valeurs : on_track (En bonne voie), at_risk (En danger), off_track (En retard), on_hold (En attente), to_define (Définir le statut), done (Terminer)

milestone_countMilestone Countinteger
calculé
milestone_count_reachedMilestone Count Reachedinteger
calculé
milestone_idsJalonone2many

inverse : project_id

milestone_progressMilestones Reachedinteger
calculé
nameNomchar
requistraduisible
next_milestone_idNext Milestonemany2one
calculé
open_task_countOpen Task Countinteger
calculé
partner_idClientmany2one
calculé, stocké
pricing_typeTarif

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 : task_rate (Taux de la tâche), fixed_rate (Taux du projet), employee_rate (Taux de l'employé)

ajouté par Feuille de temps des ventes (sale_timesheet)

privacy_visibilityVisibilité

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 : followers (Utilisateurs internes invités), invited_users (Utilisateurs internes et portail invités), employees (Tous les utilisateurs internes), portal (All internal users and invited portal users)

privacy_visibility_warningPrivacy Visibility Warningchar
calculé
production_countProduction Countinteger
calculé

ajouté par Projet MRP (project_mrp)

purchase_orders_count# Purchase Ordersinteger
calculé

ajouté par Projet Achats (project_purchase)

reinvoiced_sale_order_idCommande 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 (sale_project)

remaining_hoursTemps restantfloat
calculé

ajouté par Journaux des tâches (hr_timesheet)

resource_calendar_idTemps de travailmany2one
calculé
sale_line_employee_idsSale 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 : project_id

ajouté par Feuille de temps des ventes (sale_timesheet)

sale_line_idArticle 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_project)

sale_order_countNombre de commandes clientsinteger
calculé

ajouté par Ventes - Projet (sale_project)

sale_order_idCommande clientmany2one

related : sale_line_id.order_id

ajouté par Ventes - Projet (sale_project)

sale_order_line_countSale Order Line Countinteger
calculé

ajouté par Ventes - Projet (sale_project)

sale_order_stateSale Order Stateselection

related : sale_order_id.state

ajouté par Ventes - Projet (sale_project)

sequenceSéquenceinteger
show_ratingsShow Ratingsboolean
calculé
stage_idÉtapemany2one
stage_id_colorStage Colorinteger

related : stage_id.color

tag_idsÉtiquettesmany2many
task_completion_percentageTask Completion Percentagefloat
calculé
task_countTask Countinteger
calculé
task_idsTâchesone2many

inverse : project_id

task_properties_definitionPropriétés de la tâcheproperties_definition
tasksActivités de tâchesone2many

inverse : project_id

timesheet_encode_uom_idTimesheet Encode Uommany2one
calculé

ajouté par Journaux des tâches (hr_timesheet)

timesheet_idsAssociated Timesheetsone2many

inverse : project_id

ajouté par Journaux des tâches (hr_timesheet)

timesheet_product_idProduit 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 (sale_timesheet)

total_timesheet_timeTotal amount of time (in the proper unit) recorded in the project, rounded to the unit.float
calculé

ajouté par Journaux des tâches (hr_timesheet)

type_idsÉtapes des tâchesmany2many
update_countUpdate Countinteger
calculé
update_idsMettre à jourone2many

inverse : project_id

user_idChef de projetmany2one
vendor_bill_countNombre de factures fournisseursinteger

related : account_id.vendor_bill_count

ajouté par Ventes - Projet (sale_project)

warning_employee_rateWarning Employee Rateboolean
calculé

ajouté par Feuille de temps des ventes (sale_timesheet)

access_tokenJeton de sécuritéchar

hérité de portal.mixin

access_urlURl d'accès au portail

URl du portail client

char
calculé

hérité de portal.mixin

access_warningAvertissement d'accèstext
calculé

hérité de portal.mixin

activity_calendar_event_idActivité suivante de l'événement du calendriermany2one
calculé

hérité de mail.activity.mixin

activity_date_deadlineDate limite de l'activité à venirdate
lecture seulecalculé

hérité de mail.activity.mixin

activity_exception_decorationIndicateur d’exception d’activité

Type d'activité d'exception enregistrée.

selection
calculé

Valeurs : warning (Alerte), danger (Erreur)

hérité de mail.activity.mixin

activity_exception_iconIcône

Icône pour indiquer une activité d'exception.

char
calculé

hérité de mail.activity.mixin

activity_idsActivitésone2many

inverse : res_id

hérité de mail.activity.mixin

activity_stateStatut de l'activité

Status based on activities Overdue: Due date is already passed Today: Activity date is today Planned: Future activities.

selection
calculé

Valeurs : overdue (En retard), today (Aujourd'hui), planned (Planifié)

hérité de mail.activity.mixin

activity_summaryRésumé de l'activité suivantechar

related : activity_ids.summary

hérité de mail.activity.mixin

activity_type_iconIcône de type d'activitéchar

related : activity_ids.icon

hérité de mail.activity.mixin

activity_type_idType d'activités à venirmany2one

related : activity_ids.activity_type_id

hérité de mail.activity.mixin

activity_user_idUtilisateur responsablemany2one
lecture seulecalculé

hérité de mail.activity.mixin

alias_defaultsAlias Defaultstext

hérité de mail.alias.mixin

alias_domainNom d'alias de domainechar

related : alias_id.alias_domain

hérité de mail.alias.mixin.optional

alias_domain_idAlias de domainemany2one

related : alias_id.alias_domain_id

hérité de mail.alias.mixin.optional

alias_emailAlias de messageriechar
calculé

hérité de mail.alias.mixin.optional

alias_nameNom de l'aliaschar

hérité de mail.alias.mixin

auto_account_idCompte analytiquemany2one
calculé

hérité de analytic.plan.fields.mixin

has_messageA un messageboolean
calculé

hérité de mail.thread

is_rottingInactivitéboolean
calculé

hérité de mail.tracking.duration.mixin

message_attachment_countNombre de pièces jointesinteger
calculé

hérité de mail.thread

message_follower_idsAbonnésone2many

inverse : res_id

hérité de mail.thread

message_has_errorErreur d'envoi du message

Si coché, certains messages ont une erreur de livraison.

boolean
calculé

hérité de mail.thread

message_has_error_counterNombre d'erreurs

Nombre de messages avec des erreurs d'envoi

integer
calculé

hérité de mail.thread

message_has_sms_errorErreur d'envoi SMS

Si coché, certains messages ont une erreur de livraison.

boolean
calculé

hérité de mail.thread

message_idsMessagesone2many

inverse : res_id

hérité de mail.thread

message_is_followerEst un abonnéboolean
calculé

hérité de mail.thread

message_needactionNécessite une action

Si coché, de nouveaux messages demandent votre attention.

boolean
calculé

hérité de mail.thread

message_needaction_counterNombre d'actions

Nombre de messages nécessitant une action

integer
calculé

hérité de mail.thread

message_partner_idsAbonné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 moyennefloat
calculé

hérité de rating.parent.mixin

rating_avg_percentageÉvaluation moyenne (%)float
calculé

hérité de rating.parent.mixin

rating_count# Évaluationsinteger
calculé

hérité de rating.parent.mixin

rating_idsÉvaluationsone2many

inverse : parent_res_id

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_daysJours 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_idsMessages du site web

Historique de communication du site web

one2many

inverse : res_id

hérité de mail.thread

create_dateCréé ledatetime
lecture seuleautomatique
create_uidCréé parmany2one
lecture seuleautomatique
display_nameNom affichéchar
lecture seulecalculéautomatique
idIDinteger
lecture seuleautomatique
write_dateDernière mise à jour ledatetime
lecture seuleautomatique
write_uidDernière mise à jour parmany2one
lecture seuleautomatique

Relations

Modèles liés depuis ce modèle

Champs d'autres modèles qui pointent ici

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
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}'
Python (requests)
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

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.