Files
Odoo-Modules/fusion_repairs/views/technician_task_views.xml
gsinghpal b4b59cc3c9 feat(fusion_repairs): Bundle 7 - tech mobile (T3 + T4 + T6 + T7)
T3 Labour timer on technician task
- Two new fields on fusion.technician.task: x_fc_timer_running_since
  (Datetime) + x_fc_timer_accumulated_minutes (Float).
- action_timer_start / action_timer_stop methods, idempotent (start when
  already running is a no-op, stop when not running is a no-op).
- Multiple start/stop cycles accumulate into the same total.
- Two header buttons (Start Timer green / Stop Timer amber), invisible
  based on the running_since field so the right one shows at any time.
- Stop posts a chatter line 'Labour timer stopped. Added X.X min, total
  Y.Y min.' so audit history shows every shift.

T4 Client signature on visit report
- New client_signature Binary field on the visit-report wizard with
  Odoo native widget='signature' that draws on canvas + base64-encodes
  the PNG.
- client_signature_name Char for typed name (audit).
- Persisted as an ir.attachment on the repair.order via the new
  _persist_mobile_artefacts helper.
- Chatter post 'Client signature captured (Jane Smith).'.

T6 Replaced parts - serial capture
- parts_serial_capture Text on the wizard (one per line per the spec).
- On confirm, posted to chatter wrapped in <pre> so line breaks survive.
- Used by OEM warranty filing in future M8.

T7 Client no-show photo proof
- no_show Boolean + no_show_photo Binary with widget='image' (visible
  only when no_show=True via Odoo 19 invisible= conditional).
- Photo saved as ir.attachment on the repair when present.
- Chatter post 'Visit recorded as client no-show (photo attached)'.

Verified end-to-end on local westin-v19:
  T3 timer started -> 2s sleep -> stopped -> 0.0357 min recorded
  T4 attachment 'signature-RO-202605-17.png' created on repair
  T6 chatter shows 'SN-AAA-111 / SN-BBB-222'
  T4 chatter shows 'Client signature captured (Jane Smith)'

Bumped to 19.0.1.7.0.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-21 00:24:35 -04:00

50 lines
2.2 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Add Maps + View Repair buttons to the technician task form
(header so they're prominent on mobile). -->
<record id="view_technician_task_form_inherit_fusion_repairs"
model="ir.ui.view">
<field name="name">fusion.technician.task.form.inherit.fusion_repairs</field>
<field name="model">fusion.technician.task</field>
<field name="inherit_id" ref="fusion_tasks.view_technician_task_form"/>
<field name="arch" type="xml">
<xpath expr="//header" position="inside">
<button name="action_open_in_maps"
type="object"
string="Open in Maps"
class="btn-secondary"
icon="fa-map-marker"
invisible="not address_display and not partner_id"/>
<button name="action_view_repair_order"
type="object"
string="View Repair"
class="btn-secondary"
icon="fa-wrench"
invisible="not x_fc_repair_order_id"/>
<button name="action_timer_start"
type="object"
string="Start Timer"
class="btn-success"
icon="fa-play-circle"
invisible="x_fc_timer_running_since"/>
<button name="action_timer_stop"
type="object"
string="Stop Timer"
class="btn-warning"
icon="fa-stop-circle"
invisible="not x_fc_timer_running_since"/>
</xpath>
<xpath expr="//field[@name='partner_id']" position="after">
<field name="x_fc_repair_order_id" readonly="1"
invisible="not x_fc_repair_order_id"/>
<field name="x_fc_timer_running_since" readonly="1"
invisible="not x_fc_timer_running_since"/>
<field name="x_fc_timer_accumulated_minutes" readonly="1"
widget="float" digits="[12,1]"/>
</xpath>
</field>
</record>
</odoo>