project.project: campos, relaciones y API
El modelo project.project («Proyecto») es un modelo persistente declarado por el módulo Proyecto y ampliado por 13 módulos más. Expone 129 campos, 84 de ellos declarados directamente en el modelo; 26 campos de otros modelos apuntan a él. A continuación encontrará cada campo con su nombre técnico, tipo, etiqueta en español y relaciones, y un ejemplo de llamada a la API JSON-2 de Odoo 19.
Ficha de identidad
- Nombre técnico
project.project- Etiqueta
- Proyecto
- Tipo
- Persistente (models.Model)
- Tabla SQL
project_project- Módulo de origen
- Proyecto (
project) - Ampliado por
- 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
- Orden por defecto (_order)
sequence, name, id
Campos del modelo
84 campos propios, 39 heredados de mixins y 6 campos automáticos del ORM. Haga clic en un nombre para obtener el enlace directo al campo.
129 de 129 campos mostrados
| Nombre técnico | Etiqueta | Tipo | Detalles |
|---|---|---|---|
| access_instruction_message | Access Instruction Message | char | calculado |
| account_id | Cuenta | many2one | |
| active | Activo | boolean | |
| alias_id | Alias Correo electrónico interno asociado con este proyecto. Los mensajes entrantes se sincronizan automáticamente con las Tareas (u opcionalmente con las incidencias si el módulo de seguimiento de incidencias está instalado). | many2one | |
| allocated_hours | Tiempo asignado | float | añadido por Registros de tareas ( |
| allow_billable | Facturable | boolean | añadido por Ventas - Proyecto ( |
| allow_milestones | Hitos | boolean | |
| allow_recurring_tasks | Tareas recurrentes | boolean | |
| allow_task_dependencies | Dependencias de tareas | boolean | |
| allow_timesheets | Partes de horas | boolean | calculado, almacenado añadido por Registros de tareas ( |
| analytic_account_active | Active Account | boolean | related: añadido por Registros de tareas ( |
| analytic_account_balance | Analytic Account Balance | monetary | related: |
| billing_type | Tipo de facturación | selection | obligatoriocalculado, almacenado Valores: añadido por Partes de horas en ventas ( |
| bom_count | Bom Count | integer | calculado añadido por Proyecto MRP ( |
| can_mark_milestone_as_done | Can Mark Milestone As Done | boolean | calculado |
| closed_task_count | Closed Task Count | integer | calculado |
| collaborator_count | # Collaborators | integer | calculado |
| collaborator_ids | Colaboradores | one2many | inverso: |
| color | Índice de Colores | integer | |
| company_id | Compañía | many2one | calculado, almacenado |
| currency_id | Moneda | many2one | solo lecturacalculado |
| date | Fecha de expiración Fecha en la que termina este proyecto. Se toma en cuenta el calendario definido en el proyecto a la hora de ver su planificación. | date | |
| date_start | Fecha de inicio | date | |
| description | Descripción Texto de descripción para proporcionar más información y contexto sobre este proyecto | html | |
| display_sales_stat_buttons | Display Sales Stat Buttons | boolean | calculado añadido por Ventas - Proyecto ( |
| duration_tracking | Duration Tracking | json | |
| effective_hours | Tiempo dedicado | float | calculado añadido por Registros de tareas ( |
| encode_uom_in_days | Encode Uom In Days | boolean | calculado añadido por Registros de tareas ( |
| favorite_user_ids | Miembros | many2many | |
| has_any_so_to_invoice | Has SO to Invoice | boolean | calculado añadido por Ventas - Proyecto ( |
| has_any_so_with_nothing_to_invoice | Has a SO with an invoice status of No | boolean | calculado añadido por Ventas - Proyecto ( |
| invoice_count | Número de facturas | integer | calculado añadido por Ventas - Proyecto ( |
| is_favorite | Show Project on Dashboard | boolean | calculado |
| is_internal_project | Is Internal Project | boolean | calculado añadido por Registros de tareas ( |
| is_milestone_deadline_exceeded | Is Milestone Deadline Exceeded | boolean | calculado |
| is_milestone_exceeded | Is Milestone Exceeded | boolean | calculado |
| is_project_overtime | Project in Overtime | boolean | calculado añadido por Registros de tareas ( |
| is_template | Es una plantilla | boolean | |
| label_tasks | Usar tareas como Nombre utilizado para referirse a las tareas de su proyecto, por ejemplo, tareas, tickets, sprints, etc. | char | traducible |
| last_update_color | Last Update Color | integer | calculado |
| last_update_id | Última actualización | many2one | |
| last_update_status | Last Update Status | selection | obligatoriocalculado, almacenado Valores: |
| milestone_count | Milestone Count | integer | calculado |
| milestone_count_reached | Milestone Count Reached | integer | calculado |
| milestone_ids | Hito | one2many | inverso: |
| milestone_progress | Milestones Reached | integer | calculado |
| name | Nombre | char | obligatoriotraducible |
| next_milestone_id | Next Milestone | many2one | calculado |
| open_task_count | Open Task Count | integer | calculado |
| partner_id | Cliente | many2one | calculado, almacenado |
| pricing_type | Precio La tarifa por tarea es perfecta si desea factura con diferentes servicios a diferentes clientes con diferentes tarifas. La tarifa fija es perfecta si factura un servicio a una tarifa fija por hora o día empleado, independientemente del empleado que lo haya realizado. La tarifa por empleado es preferible si sus empleados prestan el mismo servicio a una tarifa diferente. Por ejemplo, los consultores junior y senior prestarían el mismo servicio (= consultoría), pero a una tarifa diferente debido a su nivel de experiencia. | selection | calculado Valores: añadido por Partes de horas en ventas ( |
| privacy_visibility | Visibilidad 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 | obligatorio Valores: |
| privacy_visibility_warning | Privacy Visibility Warning | char | calculado |
| production_count | Production Count | integer | calculado añadido por Proyecto MRP ( |
| purchase_orders_count | # Purchase Orders | integer | calculado añadido por Compra del proyecto ( |
| reinvoiced_sale_order_id | Pedido de venta Los productos añadidos a las preparaciones de stock (con el tipo de operación configurado para generar costes analíticos) serán refacturados en este pedido de venta si están configurados para ello. | many2one | añadido por Ventas - Proyecto ( |
| remaining_hours | Tiempo restante | float | calculado añadido por Registros de tareas ( |
| resource_calendar_id | Horario de trabajo | many2one | calculado |
| 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 | inverso: añadido por Partes de horas en ventas ( |
| sale_line_id | Elemento del pedido de venta 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 | calculado, almacenado añadido por Ventas - Proyecto ( |
| sale_order_count | Número de pedidos de venta | integer | calculado añadido por Ventas - Proyecto ( |
| sale_order_id | Pedido de venta | many2one | related: añadido por Ventas - Proyecto ( |
| sale_order_line_count | Sale Order Line Count | integer | calculado añadido por Ventas - Proyecto ( |
| sale_order_state | Sale Order State | selection | related: añadido por Ventas - Proyecto ( |
| sequence | Secuencia | integer | |
| show_ratings | Show Ratings | boolean | calculado |
| stage_id | Etapa | many2one | |
| stage_id_color | Stage Color | integer | related: |
| tag_ids | Etiquetas | many2many | |
| task_completion_percentage | Task Completion Percentage | float | calculado |
| task_count | Task Count | integer | calculado |
| task_ids | Tareas | one2many | inverso: |
| task_properties_definition | Propiedades de la tarea | properties_definition | |
| tasks | Actividades de las tareas | one2many | inverso: |
| timesheet_encode_uom_id | Timesheet Encode Uom | many2one→ uom.uom | calculado añadido por Registros de tareas ( |
| timesheet_ids | Associated Timesheets | one2many | inverso: añadido por Registros de tareas ( |
| timesheet_product_id | Producto de los partes de horas Servicio que se utilizará por defecto al facturar el tiempo dedicado a una tarea. Se puede modificar individualmente en cada tarea al seleccionar un elemento específico en el pedido de venta. | many2one | calculado, almacenado añadido por Partes de horas en ventas ( |
| total_timesheet_time | Total amount of time (in the proper unit) recorded in the project, rounded to the unit. | float | calculado añadido por Registros de tareas ( |
| type_ids | Etapas de tareas | many2many | |
| update_count | Update Count | integer | calculado |
| update_ids | Actualizar | one2many | inverso: |
| user_id | Gestor de proyectos | many2one | |
| vendor_bill_count | Número de facturas de proveedor | integer | related: añadido por Ventas - Proyecto ( |
| warning_employee_rate | Warning Employee Rate | boolean | calculado añadido por Partes de horas en ventas ( |
| access_token | Token de seguridad | char | heredado de portal.mixin |
| access_url | URL de acceso al portal URL del portal de cliente | char | calculado heredado de portal.mixin |
| access_warning | Advertencia de acceso | text | calculado heredado de portal.mixin |
| activity_calendar_event_id | Siguiente evento en el calendario de actividades. | many2one | calculado heredado de mail.activity.mixin |
| activity_date_deadline | Fecha límite de la siguiente actividad | date | solo lecturacalculado heredado de mail.activity.mixin |
| activity_exception_decoration | Decoración de Actividad de Excepción Tipo de actividad de excepción en el registro. | selection | calculado Valores: heredado de mail.activity.mixin |
| activity_exception_icon | Icono Icono para indicar una actividad de excepción. | char | calculado heredado de mail.activity.mixin |
| activity_ids | Actividades | one2many | inverso: heredado de mail.activity.mixin |
| activity_state | Estado de la actividad Status based on activities Overdue: Due date is already passed Today: Activity date is today Planned: Future activities. | selection | calculado Valores: heredado de mail.activity.mixin |
| activity_summary | Resumen de la siguiente actividad | char | related: heredado de mail.activity.mixin |
| activity_type_icon | Icono de tipo de actividad | char | related: heredado de mail.activity.mixin |
| activity_type_id | Tipo de la siguiente actividad | many2one | related: heredado de mail.activity.mixin |
| activity_user_id | Usuario responsable | many2one | solo lecturacalculado heredado de mail.activity.mixin |
| alias_defaults | Alias Defaults | text | heredado de mail.alias.mixin |
| alias_domain | Nombre del dominio de alias | char | related: heredado de mail.alias.mixin.optional |
| alias_domain_id | Dominio de alias | many2one | related: heredado de mail.alias.mixin.optional |
| alias_email | Alias de correo electrónico | char | calculado heredado de mail.alias.mixin.optional |
| alias_name | Nombre del alias | char | heredado de mail.alias.mixin |
| auto_account_id | Cuenta analítica | many2one | calculado heredado de analytic.plan.fields.mixin |
| has_message | Tiene un mensaje | boolean | calculado heredado de mail.thread |
| is_rotting | En espera/estancado | boolean | calculado heredado de mail.tracking.duration.mixin |
| message_attachment_count | Número de archivos adjuntos | integer | calculado heredado de mail.thread |
| message_follower_ids | Seguidores | one2many | inverso: heredado de mail.thread |
| message_has_error | Error de envío de mensaje Si está marcada, algunos mensajes tienen error de envío. | boolean | calculado heredado de mail.thread |
| message_has_error_counter | Número de errores Número de mensajes con error de envío | integer | calculado heredado de mail.thread |
| message_has_sms_error | Error de envío del SMS Si está marcada, algunos mensajes tienen error de envío. | boolean | calculado heredado de mail.thread |
| message_ids | Mensajes | one2many | inverso: heredado de mail.thread |
| message_is_follower | Es un seguidor | boolean | calculado heredado de mail.thread |
| message_needaction | Acción requerida Si está marcada, hay nuevos mensajes que requieren su atención. | boolean | calculado heredado de mail.thread |
| message_needaction_counter | Número de acciones Número de mensajes que requieren una acción | integer | calculado heredado de mail.thread |
| message_partner_ids | Seguidores (Contactos) | many2many | calculado heredado de mail.thread |
| my_activity_date_deadline | Fecha límite de mi actividad | date | solo lecturacalculado heredado de mail.activity.mixin |
| rating_avg | Calificación promedio | float | calculado heredado de rating.parent.mixin |
| rating_avg_percentage | Calificación promedio (%) | float | calculado heredado de rating.parent.mixin |
| rating_count | N.° de calificaciones | integer | calculado heredado de rating.parent.mixin |
| rating_ids | Calificaciones | one2many | inverso: heredado de rating.parent.mixin |
| rating_percentage_satisfaction | Satisfacción de calificación Porcentaje de calificaciones positivas | integer | calculado heredado de rating.parent.mixin |
| rotting_days | Días en espera Número de días desde la última actualización de este recurso | integer | calculado heredado de mail.tracking.duration.mixin |
| website_message_ids | Mensajes del sitio web Historial de comunicación del sitio web | one2many | inverso: heredado de mail.thread |
| create_date | Creado el | datetime | solo lecturaautomático |
| create_uid | Creado por | many2one | solo lecturaautomático |
| display_name | Nombre mostrado | char | solo lecturacalculadoautomático |
| id | ID | integer | solo lecturaautomático |
| write_date | Última actualización el | datetime | solo lecturaautomático |
| write_uid | Última actualización por | many2one | solo lecturaautomático |
Relaciones
Modelos enlazados desde este modelo
- 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
Campos de otros modelos que apuntan aquí
- 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
Leer este modelo por la API
Ejemplo de llamada a la API JSON-2 de Odoo 19: lectura de los cinco primeros registros con campos reales del modelo. Sustituya la instancia, la base y la clave API por las suyas.
curl -X POST "https://su-instancia.odoo.com/json/2/project.project/search_read" \
-H "Authorization: bearer $ODOO_API_KEY" \
-H "X-Odoo-Database: su-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://su-instancia.odoo.com/json/2"
headers = {"Authorization": f"bearer {API_KEY}", "X-Odoo-Database": "su-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())- El acceso a la API externa está reservado al plan Custom de Odoo.
- XML-RPC y JSON-RPC se retirarán en Odoo 22 (otoño de 2028): use JSON-2.
- Se aplican los permisos de acceso y las reglas de registro del usuario de la clave.
Citar esta herramienta
¿Escribe un tutorial, una documentación interna o una respuesta en un foro? Copie este enlace para dirigir a sus lectores a la ficha actualizada.
<a href="https://aidoo.ai/es/outils/explorateur-modeles-odoo/project-project">project.project (Odoo 19.0)</a>Fuentes
- Código fuente del modelo en GitHub
- Documentación de Odoo 19: ORM API
- Documentación de Odoo 19: API externa JSON-2
Datos verificados el 23 de septiembre de 2026 · Odoo 19.0 Community
¿Tiene un proyecto Odoo o quiere aprovechar su ERP con la IA? Hablemos
Implantación, desarrollo de módulos, conexión de Claude o ChatGPT a sus datos: cuéntenos su contexto y le responderemos en 24 horas laborables.