Por completar la pregunta y que se entienda (corrígeme si me equivoco):
- Tienes un modelo (helpdesk.ticket) relacionado con project.task y con account.analytic.line, y a su vez project.task está relacionado con account.analytic.line. Quieres que si en tu ticket, se establece una tarea, los partes de tiempo (los account.analytic.line) se asocien también a esa tarea.
Al igual que en helpdesk.ticket, tienes un campo en account.analyic.line que es task_id, cuando cambias el task_id de helpdesk.ticket, o cuando cambias los timesheet_ids de tu ticket, debes asegurarte de que todos las líneas de timesheet_ids (account_analytic_line asociados al ticket) se actualicen al campo task_id correspondiente.
Puedes hacerlo con una api.constrains('task_id','timesheet_ids') en helpdesk.ticket, dentro de ese método (que se ejecutará cada vez que se modifique uno u otro campo, te aseguras de que todas las líneas de timesheet_ids que tengas se correspondan con el task_id establecido, y si no es así, lo modificas.
Un onchange en el task_id de helpdesk.ticket que al modificar la tarea compruebe si hay ya líneas en timesheet_ids y lance un warning para avisar de que si continúas modificarás los partes de tiempo existentes (asociandolos a otra tarea) tampoco estaría de más para evitar cambios inadvertidos para el usuario.