Odoo 19 · Ingenio Construcciones · Proyectos

Facturar las horas registradas

Este manual cubre el circuito de facturación de horas: las tres formas en que Odoo puede tarificar el tiempo de un proyecto, el mapeo de tarifas por empleado, y el asistente que convierte las horas cargadas en una factura. Da por sentado que las horas ya están registradas en las tareas y que el proyecto tiene un cliente asignado.

1

Antes de facturar: de dónde sale la cantidad

La factura no se arma sobre lo que alguien escribe: se arma sobre la suma de las horas que ya quedaron cargadas en las tareas.

Para que un proyecto pueda facturar horas hacen falta dos condiciones a la vez, las dos en la pestaña Ajustes de la ficha del proyecto: el interruptor Facturable tiene que estar activado, y el campo Cliente tiene que estar completo. Sin cliente, Odoo no tiene a quién facturarle y el resto de esta página no aparece.

Con esas dos condiciones, el proyecto trae un Producto de la hoja de horas por defecto —el servicio que se va a facturar—. Ese producto es el que decide, en su propia configuración, que la cantidad a facturar salga de las horas cargadas y no de un número que alguien tipeó a mano: es lo que Odoo llama cantidad entregada, y en la línea de la orden de venta correspondiente aparece bajo la columna Entregado. Cada vez que se guarda una hoja de horas en una tarea de este proyecto, ese número sube solo. Este manual no explica cómo se cargan esas horas —eso está en «Registro de horas en las tareas»— sino qué pasa con ellas una vez cargadas.

Si el proyecto no tiene todavía ninguna hora facturable, las tareas siguen mostrando de qué manera van a quedar registradas cuando no traigan un artículo de venta propio: el aviso debajo de Facturable dice «Las hojas de horas sin un artículo de orden de venta se registran como» seguido de un valor, no facturable o facturado manualmente según cómo esté configurado el proyecto. Es una clasificación para los reportes, no una traba: de cualquiera de los dos estados se puede pasar a facturable asignando el artículo correspondiente.

🖼️
Captura pendiente
Un proyecto facturable abierto en Proyectos, pestaña Ajustes. Tienen que verse juntos: el interruptor Facturable activado, el campo Cliente completo, el Producto de la hoja de horas con su valor, y la línea «Las hojas de horas sin un artículo de orden de venta se registran como» con su desplegable visible debajo. Usar un proyecto y un cliente de prueba, no uno real.
🖼️
Captura pendiente
La orden de venta vinculada a ese proyecto, con la línea del servicio de horas. Tienen que quedar visibles las columnas Cantidad, Entregado y Facturado de esa línea, después de haber cargado algunas horas en una tarea, para que se note que Entregado subió solo sin haber tocado la orden.
2

Las tres formas de tarificar: por tarea, por proyecto o por empleado

No es un campo que se elige de un desplegable: Odoo lo calcula solo, según qué artículo de venta se haya asignado y dónde.

Internamente Odoo distingue tres esquemas de tarificación para un proyecto facturable por horas. No hay ningún campo «Tarificación» que se pueda abrir y elegir a mano: el esquema sale de la combinación de dos cosas —si el proyecto tiene un Artículo de la orden de venta propio, y si además existen filas cargadas en la pestaña Facturación (que se ve en la próxima sección)—.

EsquemaCómo se activaCuándo conviene
Tasa de actividadEs el valor por defecto: ni el proyecto ni la pestaña Facturación tienen un artículo de venta asignado. Cada tarea trae su propio campo Artículo de la orden de venta, independiente del de las demás.Cuando se quiere facturar distintos servicios a distintas tarifas dentro del mismo proyecto —por ejemplo, una tarea que es «Mano de obra» y otra que es «Inspección»—.
Tasa del proyectoEl proyecto tiene un Artículo de la orden de venta cargado directamente en su pestaña Ajustes. Todas las tareas heredan ese mismo artículo, sin importar quién cargó las horas.Cuando se factura un servicio a una tarifa fija por hora o por día, sin distinguir quién trabajó.
Tarifa de empleadoHay al menos una fila cargada en la pestaña Facturación, mapeando un empleado a un artículo de venta. Este esquema tiene prioridad sobre los otros dos: si existe aunque sea una fila, gana.Cuando el mismo servicio se cobra distinto según quién lo hizo —por ejemplo, un oficial y un ayudante—.

La tabla anterior usa las etiquetas reales que Odoo muestra en pantalla, y vale la pena decirlo porque no son del todo consistentes entre sí: dos de los tres valores dicen «Tasa» y el tercero dice «Tarifa», aunque los tres son la misma idea —a qué artículo de venta se carga la hora—. No es un error de esta guía: es así como están traducidas en el propio sistema.

No hay un campo para elegir el esquemaBuscar un desplegable que diga «Tarificación» o «Pricing» en la ficha del proyecto es tiempo perdido: no existe en pantalla. El esquema se deduce de lo que ya se configuró —el artículo de venta del proyecto y las filas de la pestaña Facturación—, y cambia solo, en el momento, si se agrega o se saca una fila de esa pestaña.
🖼️
Captura pendiente
Una tarea abierta de un proyecto en esquema de Tasa de actividad, con el campo Artículo de la orden de venta visible justo debajo del campo Cliente, completado con un artículo distinto al de otra tarea del mismo proyecto (para poder mostrar, si se quiere, dos tareas con artículos distintos).
🖼️
Captura pendiente
La pestaña Ajustes de un proyecto distinto, esta vez con el campo Artículo de la orden de venta del proyecto ya completado (no vacío, a diferencia de la primera captura de este manual). Esto ilustra el esquema Tasa del proyecto.
3

La pestaña Facturación: mapear empleados y tarifas

Un empleado, un artículo de venta y, si hace falta, un costo interno distinto al que tiene cargado en su legajo.

La pestaña Facturación del proyecto —visible solo si es facturable y tiene cliente— trae una tabla con una fila por empleado. Cada fila tiene cuatro datos:

ColumnaQué es
EmpleadoA quién se le aplica esta fila. Un mismo empleado no puede repetirse dos veces en la tabla del mismo proyecto.
Artículo de la orden de ventaContra qué línea de la orden se factura el tiempo de ese empleado en este proyecto.
Precio unitarioNo se edita acá: lo trae el artículo de venta elegido. Es lo que efectivamente se le cobra al cliente por hora.
Costo por horaEditable. Por defecto trae el costo horario cargado en el legajo del empleado, pero se puede pisar puntualmente para este proyecto.

Si un empleado carga horas en el proyecto pero no tiene fila propia en esta tabla, Odoo no lo deja sin facturar de cualquier manera: primero busca si la tarea puntual tiene su propio artículo de venta, y si tampoco lo tiene, cae en el artículo general del proyecto. Recién si ninguno de los dos existe, esas horas quedan sin artículo asignado.

🖼️
Captura pendiente
La pestaña Facturación de un proyecto en esquema de tarifa de empleado, con al menos dos filas cargadas. Tienen que verse las cuatro columnas: Empleado, Artículo de la orden de venta, Precio unitario y Costo por hora, con valores distintos entre las dos filas para que se note la diferencia de tarifa.
El Costo por hora no es lo que se le cobra al clienteEs el error más común de esta pestaña: pensar que el «Costo por hora» es el precio de la hora facturada. No lo es. El precio que ve el cliente en la factura sale siempre del Precio unitario del artículo de venta. El «Costo por hora» es un dato interno —cuánto le cuesta a la empresa esa hora de ese empleado en este proyecto puntual— que solo se usa para calcular la rentabilidad del proyecto, no para armar la factura. Se desarrolla en «Actualizaciones, rentabilidad y calificaciones del proyecto».
4

El botón Crear factura y el período de hojas de horas

Se factura desde la orden de venta, no desde el proyecto ni desde la hoja de horas.

El punto de partida es la orden de venta del cliente —la misma que trae el artículo de venta usado en cualquiera de los tres esquemas anteriores—. Con la orden confirmada, el botón Crear factura abre un asistente con tres modos posibles; el que corresponde a horas trabajadas es Factura normal, que es además el que viene tildado por defecto.

Cuando la orden tiene al menos una línea que se factura por horas, el asistente agrega un campo que no aparece para una orden común: Periodo de hojas de horas, con una fecha de inicio y una de finalización. Si se deja vacío, Odoo factura todas las horas de esa orden que todavía no se facturaron. Si se completa un rango, solo entran las horas cargadas dentro de esas fechas —las de afuera quedan pendientes para una factura posterior—. Es la forma prevista de facturar, por ejemplo, «lo trabajado en septiembre» sin tener que tocar nada en las tareas.

Una vez que una hoja de horas quedó incluida en una factura, Odoo la bloquea para edición: no se puede cambiar su cantidad de horas, el empleado, el proyecto, la tarea ni la fecha. Sí se puede seguir viendo, y la propia línea de la hoja de horas guarda una referencia a qué factura la incluyó.

🖼️
Captura pendiente
La orden de venta confirmada de un proyecto facturable, con el botón Crear factura visible en la cabecera y, en las líneas, alguna con Entregado mayor a Facturado (para mostrar que hay algo pendiente de facturar).
🖼️
Captura pendiente
El asistente que abre Crear factura, con el modo Factura normal seleccionado y el campo Periodo de hojas de horas visible con sus dos fechas (inicio y finalización) completadas con un rango de ejemplo.
5

Elegir qué horas cuentan para facturar

Por defecto entra cualquier hora cargada, esté o no validada por un responsable.

Hay un ajuste general, no por proyecto, que decide qué hojas de horas se toman en cuenta al facturar: en Ajustes > Hoja de horas, bloque Facturación, el campo Facturación de las hojas de horas tiene dos opciones. Todas las hojas de horas registradas es el valor por defecto: cualquier hora cargada entra al facturar, se haya validado o no. Solo hojas de horas validadas cambia esa regla: una hora que nadie aprobó todavía no cuenta para la cantidad entregada, y tampoco se muestra en el portal del cliente hasta que se valide.

Con el valor por defecto («Todas»), si al momento de facturar hay un cronómetro corriendo sobre una hoja de horas de esa orden, Odoo lo detiene automáticamente antes de generar la factura, para no dejar afuera el tiempo que se estaba cargando en ese instante.

Esto es de Odoo EnterpriseEl campo Facturación de las hojas de horas —y por lo tanto la posibilidad de exigir validación antes de facturar— lo agrega el módulo de Enterprise. En una instalación solo Community, este mismo ajuste aparece pero deshabilitado, como invitación a pasar a Enterprise: siempre se factura con «todas las hojas de horas registradas», sin la opción de exigir validación previa.
🖼️
Captura pendiente
La pantalla de Ajustes > Hoja de horas, bloque Facturación, con el campo Facturación de las hojas de horas y sus dos opciones —Todas las hojas de horas registradas / Solo hojas de horas validadas— visibles como radio buttons.
6

La factura que queda y la localización argentina

Nada de lo anterior cambia el circuito de comprobantes: la factura que sale de acá es una factura como cualquier otra.

Todo lo que hace este asistente, en cualquiera de sus variantes, termina en un mismo lugar: una factura de cliente común, del mismo modelo que cualquier otra factura del sistema. No hay ningún módulo de la localización argentina que toque el circuito de facturación de horas —ni el mapeo de tarifas por empleado, ni el asistente de Crear factura, ni las hojas de horas en sí—: la revisión del código de la localización no encontró ninguna referencia a hojas de horas ni a proyectos en ninguno de sus módulos. En la práctica, esto quiere decir que la factura que se genera acá pasa por el mismo circuito de comprobantes y de ARCA que cualquier otra factura de venta, sin ningún campo, botón o control adicional por tratarse de horas trabajadas.