Este artículo explica cómo se relacionan entre sí las distintas piezas de Ceum, para que el enlazado y el filtrado que ves por toda la aplicación tengan sentido. La imagen es deliberadamente pequeña: un puñado de tipos de elemento centrales, una red flexible de enlaces (cada cliente, proyecto y tarea se enlaza con muchos de los demás; las facturas, las transacciones, las suscripciones, los registros de tiempo y los documentos cuelgan de ellos), más una capa de enlaces que puedes definir tú mismo.
Los tipos de elemento centrales
- Clientes — las personas u organizaciones para las que trabajas.
- Proyectos — bloques de trabajo, cada uno asociado a cualquier número de clientes, o sin asociar.
- Tareas — unidades de trabajo, cada una asociada a cualquier número de proyectos, o sin asociar. Una tarea también puede ser una subtarea de otra tarea.
- Facturas — importes que adeuda un único cliente; opcionalmente vinculadas a un proyecto.
- Transacciones — entradas individuales de ingresos y gastos; opcionalmente vinculadas a un cliente, proyecto o tarea.
- Suscripciones — gastos recurrentes; existen por sí solas.
- Registros de tiempo — tiempo de trabajo registrado, cada uno asociado a cualquier número de tareas, o de forma independiente.
- Documentos — notas en Markdown, cada una asociada a cualquier número de clientes y proyectos, o sin asociar.
Cómo se enlazan los elementos entre sí
Varios de los enlaces centrales permiten que un elemento se conecte con muchos otros a la vez, de modo que puedes modelar el trabajo freelance real, donde una misma pieza de trabajo sirve a más de un sitio:
- Un proyecto puede pertenecer a varios clientes a la vez —por ejemplo, un acuerdo compartido que dos clientes se reparten— o a ninguno (un proyecto flotante, independiente de cualquier cliente).
- Una tarea puede pertenecer a varios proyectos a la vez —útil cuando una pieza de trabajo alimenta más de un encargo— o a ninguno (una acción puntual y flotante).
- Un registro de tiempo puede contar para varias tareas a la vez, o existir por sí solo sin ninguna tarea.
- Un documento puede enlazarse a varios clientes y varios proyectos a la vez, o a ninguno.
Cada uno de estos es un conjunto de enlaces, en lugar de una única ranura: añade tantos como necesites, quita cualquiera, en el orden que sea. Por toda la aplicación, estos conjuntos aparecen como etiquetas eliminables en los formularios y como listas con las que puedes interactuar (con un desbordamiento «+N») en las tablas.
Algunos enlaces se mantienen deliberadamente únicos, porque la relación del mundo real es de uno a uno: una factura se emite a exactamente un cliente (y opcionalmente a un proyecto), y una transacción se vincula como mucho a un cliente, un proyecto y una tarea.
Cómo se conecta todo
La red es flexible porque casi todos los enlaces son opcionales:
- Un proyecto puede no tener cliente — útil para trabajo interno.
- Una tarea puede no tener proyecto — útil para acciones puntuales.
- Un registro de tiempo puede no tener tarea — útil para tiempo que no está ligado a una pieza concreta de trabajo.
- Una factura o transacción puede no tener proyecto, o ningún cliente en absoluto.
Cuando sí estableces enlaces, las eliminaciones siguen reglas sensatas. Como los proyectos, las tareas y los registros de tiempo ahora están enlazados de muchos a muchos, eliminar un extremo de un enlace solo quita el enlace, no el elemento del otro extremo:
- Eliminar un cliente quita ese cliente de cualquier proyecto en el que estuviera; los proyectos en sí permanecen (un proyecto enlazado a otros clientes los conserva; un proyecto que se queda sin clientes pasa a ser flotante). También desvincula cualquier factura, transacción y documento que apuntara al cliente.
- Eliminar un proyecto quita ese proyecto de cualquier tarea en la que estuviera; las tareas en sí permanecen (una tarea enlazada a otros proyectos los conserva; una tarea que se queda sin proyectos pasa a ser flotante). También desvincula cualquier factura, documento y transacción que apuntara al proyecto.
- Eliminar una tarea quita esa tarea de cualquier registro de tiempo en el que estuviera; los registros de tiempo en sí permanecen, y tus totales de tiempo registrado no se ven afectados (ver más abajo). También desvincula cualquier transacción que apuntara a la tarea.
Por qué enlazar un registro de tiempo a varias tareas no infla tu total
Como un registro de tiempo puede contar para varias tareas, conviene ser explícito: tu total de tiempo registrado nunca se multiplica. Un registro de tiempo es siempre una entrada de una duración. Los totales principales —«total de hoy», el tiempo registrado de una tarea en un informe— cuentan cada entrada exactamente una vez, sin importar a cuántas tareas se enlace.
El único lugar donde las cifras pueden sumar legítimamente más que el total principal es un desglose por tarea o por proyecto: una entrada enlazada a dos tareas aporta toda su duración al cubo de cada tarea, de modo que los cubos pueden sumar más que el total general. Es así por diseño: un desglose responde a «cuánto tiempo tocó cada tarea», no a «cómo reparten estas porciones el total».
Dónde aparece esto
- Los filtros de cada página de lista te permiten acotar por estos enlaces — filtra las tareas por proyecto, las transacciones por cliente, etc. Una tarea que pertenece a varios proyectos coincide con un filtro de cualquiera de ellos. Consulta Filtros y ordenación.
- Las páginas de detalle muestran los elementos relacionados uno al lado del otro. La página de un cliente lista sus proyectos; la página de un proyecto lista sus tareas; una factura muestra el cliente al que pertenece.
- Las tablas muestran las entidades enlazadas en línea. Donde un elemento puede tener varios enlaces —los clientes de un proyecto, los proyectos de una tarea, las tareas de un registro de tiempo— la columna lista cada uno como una etiqueta en la que puedes hacer clic, colapsándose en un «+N» que puedes pulsar para ver el resto.
- La edición masiva usa los mismos enlaces — reasigna el cliente, el proyecto o la tarea de una transacción en una sola pasada.
La parte que puedes ampliar: las relaciones explícitas
Más allá de la jerarquía integrada, Ceum te permite definir tus propios enlaces direccionales entre dos elementos del mismo tipo: proyecto con proyecto y tarea con tarea. Estos se gestionan a través de Relaciones entre entidades, y eliges qué tipos de enlaces están disponibles en Tipos de relación.
Este enlazado explícito se aplica solo a proyectos y tareas, y está separado de los enlaces integrados de muchos a muchos de arriba: conecta dos elementos del mismo tipo (proyecto↔proyecto, tarea↔tarea), mientras que los enlaces integrados conectan tipos distintos (proyecto↔cliente, tarea↔proyecto, registro de tiempo↔tarea).
IDs visibles
Cada elemento obtiene un ID como C-7, P-12 o T-205. Puedes cambiar el prefijo de letra en Ajustes generales. Estos IDs son estables, nunca se reutilizan y siempre se ordenan en orden numérico.
Consejos y casos límite
- Los elementos sin asociar son de primera clase. Ceum nunca te obliga a asociar un proyecto a un cliente o una tarea a un proyecto. Todas las listas y los filtros admiten una opción «sin proyecto» / «sin cliente» / «sin tarea».
- El modelo de muchos a muchos no cuenta el tiempo por duplicado. Enlazar un registro de tiempo a varias tareas nunca infla tus totales; solo un desglose por tarea o por proyecto puede sumar más que el total principal, por diseño.
- Uno o varios enlaces — tú eliges. Los enlaces de muchos a muchos siguen funcionando igual de bien con exactamente una entrada (un proyecto con un solo cliente se comporta justo como antes). La capacidad para más está ahí cuando la necesitas.
- No hay espacios de trabajo compartidos. Ceum es solo para ti; consulta Espacios de trabajo y usuarios.
- Los enlaces del mismo tipo usan tipos de relación. Para conectar dos proyectos o dos tareas, define una relación entre ellos; los enlaces integrados de muchos a muchos sirven para conectar tipos distintos (una tarea con sus proyectos, un proyecto con sus clientes).