feat: add Pending status for delivery/technician tasks

- New 'pending' status allows tasks to be created without a schedule,
  acting as a queue for unscheduled work that gets assigned later
- Pending group appears in the Delivery Map sidebar with amber color
- Other modules can create tasks in pending state for scheduling
- scheduled_date no longer required (null for pending tasks)
- New Pending Tasks menu item under Field Service
- Pending filter added to search view

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
gsinghpal
2026-02-24 04:21:05 -05:00
parent 84c009416e
commit 0e1aebe60b
26 changed files with 2735 additions and 9 deletions

View File

@@ -0,0 +1,110 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Poynt Terminal Tree View -->
<record id="poynt_terminal_view_list" model="ir.ui.view">
<field name="name">poynt.terminal.list</field>
<field name="model">poynt.terminal</field>
<field name="arch" type="xml">
<list string="Poynt Terminals">
<field name="name"/>
<field name="device_id"/>
<field name="serial_number"/>
<field name="provider_id"/>
<field name="store_id_poynt"/>
<field name="status" widget="badge"
decoration-success="status == 'online'"
decoration-danger="status == 'offline'"
decoration-warning="status == 'unknown'"/>
<field name="last_seen"/>
</list>
</field>
</record>
<!-- Poynt Terminal Form View -->
<record id="poynt_terminal_view_form" model="ir.ui.view">
<field name="name">poynt.terminal.form</field>
<field name="model">poynt.terminal</field>
<field name="arch" type="xml">
<form string="Poynt Terminal">
<header>
<button string="Refresh Status"
type="object"
name="action_refresh_status"
class="btn-primary"/>
</header>
<sheet>
<div class="oe_title">
<h1>
<field name="name" placeholder="Terminal Name"/>
</h1>
</div>
<group>
<group string="Device Information">
<field name="device_id"/>
<field name="serial_number"/>
<field name="status" widget="badge"
decoration-success="status == 'online'"
decoration-danger="status == 'offline'"
decoration-warning="status == 'unknown'"/>
<field name="last_seen"/>
</group>
<group string="Configuration">
<field name="provider_id"/>
<field name="store_id_poynt"/>
<field name="active"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<!-- Poynt Terminal Search View -->
<record id="poynt_terminal_view_search" model="ir.ui.view">
<field name="name">poynt.terminal.search</field>
<field name="model">poynt.terminal</field>
<field name="arch" type="xml">
<search string="Poynt Terminals">
<field name="name"/>
<field name="device_id"/>
<field name="serial_number"/>
<field name="provider_id"/>
<filter string="Online" name="online"
domain="[('status', '=', 'online')]"/>
<filter string="Offline" name="offline"
domain="[('status', '=', 'offline')]"/>
<separator/>
<filter string="Status" name="group_status"
context="{'group_by': 'status'}"/>
<filter string="Provider" name="group_provider"
context="{'group_by': 'provider_id'}"/>
</search>
</field>
</record>
<!-- Poynt Terminal Action -->
<record id="action_poynt_terminal" model="ir.actions.act_window">
<field name="name">Poynt Terminals</field>
<field name="res_model">poynt.terminal</field>
<field name="view_mode">list,form</field>
<field name="search_view_id" ref="poynt_terminal_view_search"/>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
No Poynt terminals configured yet.
</p>
<p>
Click "Fetch Terminals" on your Poynt payment provider to sync
terminal devices from the Poynt Cloud, or add one manually.
</p>
</field>
</record>
<!-- Menu entry under Payment Providers -->
<menuitem id="menu_poynt_terminal"
name="Poynt Terminals"
parent="account_payment.payment_provider_menu"
action="action_poynt_terminal"
sequence="30"/>
</odoo>