[ADD] helpdesk_ticket_deadline: add a manual deadline on tickets
Some checks failed
pre-commit / pre-commit (pull_request) Failing after 1m34s
tests / test (pull_request) Successful in 1m10s

This module adds a simple, manually filled ``date_deadline``
Date field, tracked in the chatter, with an overdue flag,
a red kanban decoration and search filters (overdue, due
today, group by deadline).
This commit is contained in:
2026-10-01 17:19:38 +02:00
parent f24d20c9f4
commit 26c20e2fe3
10 changed files with 950 additions and 0 deletions

View File

@@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Form: deadline displayed right after the priority field. -->
<record id="ticket_view_form_deadline" model="ir.ui.view">
<field name="name">helpdesk.ticket.form.deadline</field>
<field name="model">helpdesk.ticket</field>
<field name="inherit_id" ref="helpdesk_mgmt.ticket_view_form" />
<field name="arch" type="xml">
<xpath expr="//field[@name='priority']" position="after">
<field name="date_deadline" />
</xpath>
</field>
</record>
<!-- Kanban: display the deadline on the card. -->
<record id="view_helpdesk_ticket_kanban_deadline" model="ir.ui.view">
<field name="name">helpdesk.ticket.kanban.deadline</field>
<field name="model">helpdesk.ticket</field>
<field name="inherit_id" ref="helpdesk_mgmt.view_helpdesk_ticket_kanban" />
<field name="arch" type="xml">
<xpath expr="//field[@name='tag_ids']" position="after">
<div class="text-muted" t-if="record.date_deadline.raw_value">
<field name="date_deadline" widget="remaining_days" />
</div>
</xpath>
</field>
</record>
<!-- List: optional deadline column after the assigned user. -->
<record id="ticket_view_tree_deadline" model="ir.ui.view">
<field name="name">helpdesk.ticket.list.deadline</field>
<field name="model">helpdesk.ticket</field>
<field name="inherit_id" ref="helpdesk_mgmt.ticket_view_tree" />
<field name="arch" type="xml">
<xpath expr="//field[@name='user_id']" position="after">
<field
name="date_deadline"
widget="remaining_days"
optional="show"
/>
</xpath>
</field>
</record>
<!-- Search: field, overdue/today filters and group by deadline. -->
<record id="helpdesk_ticket_view_search_deadline" model="ir.ui.view">
<field name="name">helpdesk.ticket.search.deadline</field>
<field name="model">helpdesk.ticket</field>
<field name="inherit_id" ref="helpdesk_mgmt.helpdesk_ticket_view_search" />
<field name="arch" type="xml">
<xpath expr="//filter[@name='high_priority']" position="after">
<filter
string="Overdue"
name="deadline_overdue"
domain="[('date_deadline', '&lt;', context_today().strftime('%Y-%m-%d'))]"
help="Tickets whose deadline is before today"
/>
<filter
string="Due Today"
name="deadline_today"
domain="[('date_deadline', '=', context_today().strftime('%Y-%m-%d'))]"
help="Tickets whose deadline is today"
/>
</xpath>
<xpath expr="//filter[@name='group_tag']" position="after">
<filter
string="Deadline"
name="group_deadline"
domain="[]"
context="{'group_by': 'date_deadline'}"
/>
</xpath>
</field>
</record>
</odoo>