Aggressive sheet override: flex-basis 100%%, !important on width and max-width to beat parent flex/media-query constraints. Also overrides the o_form_sheet_bg wrapper. Layout at xl (>=1200px) now splits into 3 columns: - Col 1 (3/12): Your Activities + Bottlenecks - Col 2 (5/12): ADP Pre + ADP Post + MOD - Col 3 (4/12): Aging + Other Funders + Recent ADP Exports Falls back to 5/7 on lg (Col 3 wraps below as full row) and stacked single column on md and below. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
560 lines
33 KiB
XML
560 lines
33 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
||
<odoo>
|
||
<record id="view_fusion_claims_dashboard_form" model="ir.ui.view">
|
||
<field name="name">fusion.claims.dashboard.form</field>
|
||
<field name="model">fusion.claims.dashboard</field>
|
||
<field name="arch" type="xml">
|
||
<form string="Dashboard" create="0" delete="0" edit="0"
|
||
class="o_fc_dashboard">
|
||
<sheet class="o_fc_dashboard_sheet">
|
||
|
||
<!-- Hidden invariants used by buttons + widgets -->
|
||
<field name="currency_id" invisible="1"/>
|
||
<field name="posting_period_start" invisible="1"/>
|
||
<field name="is_manager" invisible="1"/>
|
||
<field name="is_pre_first_posting" invisible="1"/>
|
||
|
||
<!-- BANNER -->
|
||
<div class="o_fc_banner mb-3">
|
||
<div class="o_fc_banner__label">
|
||
<i class="fa fa-calendar me-2"/>
|
||
<span>Posting Period: </span>
|
||
<field name="posting_period_label" nolabel="1"
|
||
class="fw-bold"/>
|
||
</div>
|
||
<div class="o_fc_banner__deadline">
|
||
<field name="submission_deadline_dt"
|
||
widget="fc_posting_countdown"
|
||
nolabel="1" readonly="1"/>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- "Showing your cases" hint when role-filtered -->
|
||
<div class="alert alert-info py-2 mb-2"
|
||
invisible="is_manager">
|
||
Showing your assigned cases only.
|
||
</div>
|
||
|
||
<!-- KPI TILES (3-up) -->
|
||
<div class="row g-2 mb-3">
|
||
<div class="col-12 col-md-4">
|
||
<button name="action_open_kpi_ready" type="object"
|
||
class="btn p-0 w-100 border-0">
|
||
<div class="o_fc_kpi">
|
||
<span class="o_fc_kpi__num">
|
||
<field name="kpi_ready_amount"
|
||
widget="monetary" nolabel="1"
|
||
options="{'currency_field': 'currency_id'}"/>
|
||
</span>
|
||
<span class="o_fc_kpi__lbl">Ready to Claim
|
||
(<field name="kpi_ready_count" nolabel="1"/>)
|
||
</span>
|
||
</div>
|
||
</button>
|
||
</div>
|
||
<div class="col-12 col-md-4">
|
||
<button name="action_open_kpi_claimed" type="object"
|
||
class="btn p-0 w-100 border-0">
|
||
<div class="o_fc_kpi">
|
||
<span class="o_fc_kpi__num">
|
||
<field name="kpi_claimed_amount"
|
||
widget="monetary" nolabel="1"
|
||
options="{'currency_field': 'currency_id'}"/>
|
||
</span>
|
||
<span class="o_fc_kpi__lbl">Claimed This Period
|
||
(<field name="kpi_claimed_count" nolabel="1"/>)
|
||
</span>
|
||
</div>
|
||
</button>
|
||
</div>
|
||
<div class="col-12 col-md-4">
|
||
<button name="action_open_kpi_ar" type="object"
|
||
class="btn p-0 w-100 border-0">
|
||
<div class="o_fc_kpi">
|
||
<span class="o_fc_kpi__num">
|
||
<field name="kpi_ar_amount"
|
||
widget="monetary" nolabel="1"
|
||
options="{'currency_field': 'currency_id'}"/>
|
||
</span>
|
||
<span class="o_fc_kpi__lbl">Total AR
|
||
(<field name="kpi_ar_count" nolabel="1"/>)
|
||
</span>
|
||
</div>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- THIS MONTH ROLLUP (4 count tiles) -->
|
||
<div class="row g-2 mb-3">
|
||
<div class="col-6 col-md-3">
|
||
<button name="action_open_month_submitted" type="object"
|
||
class="btn p-0 w-100 border-0">
|
||
<div class="o_fc_kpi o_fc_kpi--secondary">
|
||
<span class="o_fc_kpi__num"><field name="count_month_submitted" nolabel="1"/></span>
|
||
<span class="o_fc_kpi__lbl">Submitted MTD</span>
|
||
</div>
|
||
</button>
|
||
</div>
|
||
<div class="col-6 col-md-3">
|
||
<button name="action_open_month_approved" type="object"
|
||
class="btn p-0 w-100 border-0">
|
||
<div class="o_fc_kpi o_fc_kpi--secondary">
|
||
<span class="o_fc_kpi__num"><field name="count_month_approved" nolabel="1"/></span>
|
||
<span class="o_fc_kpi__lbl">Approved MTD</span>
|
||
</div>
|
||
</button>
|
||
</div>
|
||
<div class="col-6 col-md-3">
|
||
<button name="action_open_month_delivered" type="object"
|
||
class="btn p-0 w-100 border-0">
|
||
<div class="o_fc_kpi o_fc_kpi--secondary">
|
||
<span class="o_fc_kpi__num"><field name="count_month_delivered" nolabel="1"/></span>
|
||
<span class="o_fc_kpi__lbl">Delivered MTD</span>
|
||
</div>
|
||
</button>
|
||
</div>
|
||
<div class="col-6 col-md-3">
|
||
<button name="action_open_month_billed" type="object"
|
||
class="btn p-0 w-100 border-0">
|
||
<div class="o_fc_kpi o_fc_kpi--secondary">
|
||
<span class="o_fc_kpi__num"><field name="count_month_billed" nolabel="1"/></span>
|
||
<span class="o_fc_kpi__lbl">Billed MTD</span>
|
||
</div>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- PIPELINE $ BY STAGE (4 amount tiles) -->
|
||
<div class="row g-2 mb-3">
|
||
<div class="col-6 col-md-3">
|
||
<button name="action_open_pipeline_pre" type="object"
|
||
class="btn p-0 w-100 border-0">
|
||
<div class="o_fc_kpi o_fc_kpi--secondary">
|
||
<span class="o_fc_kpi__num">
|
||
<field name="pipeline_pre_amount"
|
||
widget="monetary" nolabel="1"
|
||
options="{'currency_field': 'currency_id'}"/>
|
||
</span>
|
||
<span class="o_fc_kpi__lbl">Pipeline · Pre-Submit</span>
|
||
</div>
|
||
</button>
|
||
</div>
|
||
<div class="col-6 col-md-3">
|
||
<button name="action_open_pipeline_submitted" type="object"
|
||
class="btn p-0 w-100 border-0">
|
||
<div class="o_fc_kpi o_fc_kpi--secondary">
|
||
<span class="o_fc_kpi__num">
|
||
<field name="pipeline_submitted_amount"
|
||
widget="monetary" nolabel="1"
|
||
options="{'currency_field': 'currency_id'}"/>
|
||
</span>
|
||
<span class="o_fc_kpi__lbl">Pipeline · Submitted</span>
|
||
</div>
|
||
</button>
|
||
</div>
|
||
<div class="col-6 col-md-3">
|
||
<button name="action_open_adp_approved" type="object"
|
||
class="btn p-0 w-100 border-0">
|
||
<div class="o_fc_kpi o_fc_kpi--secondary">
|
||
<span class="o_fc_kpi__num">
|
||
<field name="pipeline_approved_amount"
|
||
widget="monetary" nolabel="1"
|
||
options="{'currency_field': 'currency_id'}"/>
|
||
</span>
|
||
<span class="o_fc_kpi__lbl">Pipeline · Approved</span>
|
||
</div>
|
||
</button>
|
||
</div>
|
||
<div class="col-6 col-md-3">
|
||
<button name="action_open_adp_ready_bill" type="object"
|
||
class="btn p-0 w-100 border-0">
|
||
<div class="o_fc_kpi o_fc_kpi--secondary">
|
||
<span class="o_fc_kpi__num">
|
||
<field name="pipeline_ready_bill_amount"
|
||
widget="monetary" nolabel="1"
|
||
options="{'currency_field': 'currency_id'}"/>
|
||
</span>
|
||
<span class="o_fc_kpi__lbl">Pipeline · Ready to Bill</span>
|
||
</div>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- QUICK ACTION PILLS -->
|
||
<div class="o_fc_actions mb-3">
|
||
<button name="action_create_adp_so" type="object"
|
||
class="o_fc_pill">+ ADP</button>
|
||
<button name="action_create_mod_so" type="object"
|
||
class="o_fc_pill">+ MOD</button>
|
||
<button name="action_create_odsp_so" type="object"
|
||
class="o_fc_pill">+ ODSP</button>
|
||
<button name="action_create_wsib_so" type="object"
|
||
class="o_fc_pill">+ WSIB</button>
|
||
<button name="action_create_insurance_so" type="object"
|
||
class="o_fc_pill">+ Insurance</button>
|
||
<button name="action_create_mdc_so" type="object"
|
||
class="o_fc_pill">+ MDC</button>
|
||
<button name="action_create_hardship_so" type="object"
|
||
class="o_fc_pill">+ Hardship</button>
|
||
<button name="action_create_private_so" type="object"
|
||
class="o_fc_pill">+ Private</button>
|
||
</div>
|
||
|
||
<!-- RESPONSIVE GRID — 5/7 on lg, 3/5/4 on xl (≥1200px) -->
|
||
<div class="row g-3">
|
||
|
||
<!-- COLUMN 1: Personal / actionable (Activities + Bottlenecks) -->
|
||
<div class="col-12 col-lg-5 col-xl-3">
|
||
|
||
<!-- Your Activities -->
|
||
<div class="o_fc_activities mb-3">
|
||
<h6 class="o_fc_h6">
|
||
<i class="fa fa-thumb-tack me-2"/>
|
||
Your Activities
|
||
<span class="o_fc_tag">
|
||
<field name="my_activities_count" nolabel="1"/>
|
||
</span>
|
||
<button name="action_open_my_activities" type="object"
|
||
class="btn btn-link btn-sm ms-auto p-0">
|
||
View all
|
||
</button>
|
||
</h6>
|
||
<field name="my_activities_html" nolabel="1"/>
|
||
</div>
|
||
|
||
<!-- Bottlenecks -->
|
||
<div class="o_fc_bottleneck mb-3">
|
||
<h6 class="o_fc_h6">
|
||
<i class="fa fa-exclamation-triangle me-2"/>
|
||
Bottlenecks
|
||
</h6>
|
||
<button name="action_open_bottleneck_no_pod" type="object"
|
||
class="o_fc_bottleneck_row btn btn-link p-0">
|
||
Approved without POD:
|
||
<span class="fw-bold ms-1">
|
||
<field name="bottleneck_no_pod_count" nolabel="1"/>
|
||
</span>
|
||
</button>
|
||
<button name="action_open_bottleneck_no_response" type="object"
|
||
class="o_fc_bottleneck_row btn btn-link p-0">
|
||
Submitted > 14d, no response:
|
||
<span class="fw-bold ms-1">
|
||
<field name="bottleneck_no_response_count" nolabel="1"/>
|
||
</span>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- COLUMN 2: Workflow center (ADP + MOD) -->
|
||
<div class="col-12 col-lg-7 col-xl-5">
|
||
|
||
<!-- ADP Pre-Approval -->
|
||
<div class="o_fc_section mb-3">
|
||
<h6 class="o_fc_h6">ADP
|
||
<span class="o_fc_tag">Pre-Approval</span>
|
||
</h6>
|
||
<div class="row g-2">
|
||
<div class="col-6 col-md-3">
|
||
<button name="action_open_adp_waiting_app" type="object"
|
||
class="btn p-0 w-100 border-0">
|
||
<div class="o_fc_tile o_fc_tile--urgent">
|
||
<span class="o_fc_tile__num">
|
||
<field name="adp_waiting_app_count" nolabel="1"/>
|
||
</span>Waiting App
|
||
</div>
|
||
</button>
|
||
</div>
|
||
<div class="col-6 col-md-3">
|
||
<button name="action_open_adp_app_received" type="object"
|
||
class="btn p-0 w-100 border-0">
|
||
<div class="o_fc_tile">
|
||
<span class="o_fc_tile__num">
|
||
<field name="adp_app_received_count" nolabel="1"/>
|
||
</span>App Received
|
||
</div>
|
||
</button>
|
||
</div>
|
||
<div class="col-6 col-md-3">
|
||
<button name="action_open_adp_ready_submit" type="object"
|
||
class="btn p-0 w-100 border-0">
|
||
<div class="o_fc_tile">
|
||
<span class="o_fc_tile__num">
|
||
<field name="adp_ready_submit_count" nolabel="1"/>
|
||
</span>Ready Submit
|
||
</div>
|
||
</button>
|
||
</div>
|
||
<div class="col-6 col-md-3">
|
||
<button name="action_open_adp_needs_correction" type="object"
|
||
class="btn p-0 w-100 border-0">
|
||
<div class="o_fc_tile o_fc_tile--urgent">
|
||
<span class="o_fc_tile__num">
|
||
<field name="adp_needs_correction_count" nolabel="1"/>
|
||
</span>Needs Correction
|
||
</div>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- ADP Post-Approval -->
|
||
<div class="o_fc_section mb-3">
|
||
<h6 class="o_fc_h6">ADP
|
||
<span class="o_fc_tag">Post-Approval</span>
|
||
</h6>
|
||
<div class="row g-2">
|
||
<div class="col-6 col-md-3">
|
||
<button name="action_open_adp_approved" type="object"
|
||
class="btn p-0 w-100 border-0">
|
||
<div class="o_fc_tile">
|
||
<span class="o_fc_tile__num">
|
||
<field name="adp_approved_count" nolabel="1"/>
|
||
</span>Approved
|
||
</div>
|
||
</button>
|
||
</div>
|
||
<div class="col-6 col-md-3">
|
||
<button name="action_open_adp_ready_delivery" type="object"
|
||
class="btn p-0 w-100 border-0">
|
||
<div class="o_fc_tile">
|
||
<span class="o_fc_tile__num">
|
||
<field name="adp_ready_delivery_count" nolabel="1"/>
|
||
</span>Ready Delivery
|
||
</div>
|
||
</button>
|
||
</div>
|
||
<div class="col-6 col-md-3">
|
||
<button name="action_open_adp_ready_bill" type="object"
|
||
class="btn p-0 w-100 border-0">
|
||
<div class="o_fc_tile">
|
||
<span class="o_fc_tile__num">
|
||
<field name="adp_ready_bill_count" nolabel="1"/>
|
||
</span>Ready Bill
|
||
</div>
|
||
</button>
|
||
</div>
|
||
<div class="col-6 col-md-3">
|
||
<button name="action_open_adp_on_hold" type="object"
|
||
class="btn p-0 w-100 border-0">
|
||
<div class="o_fc_tile o_fc_tile--urgent">
|
||
<span class="o_fc_tile__num">
|
||
<field name="adp_on_hold_count" nolabel="1"/>
|
||
</span>On Hold
|
||
</div>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- MOD -->
|
||
<div class="o_fc_section mb-3">
|
||
<h6 class="o_fc_h6">MOD</h6>
|
||
<div class="row g-2">
|
||
<div class="col-6 col-md-2">
|
||
<button name="action_open_mod_awaiting_funding" type="object"
|
||
class="btn p-0 w-100 border-0">
|
||
<div class="o_fc_tile">
|
||
<span class="o_fc_tile__num">
|
||
<field name="mod_awaiting_funding_count" nolabel="1"/>
|
||
</span>Awaiting
|
||
</div>
|
||
</button>
|
||
</div>
|
||
<div class="col-6 col-md-2">
|
||
<button name="action_open_mod_funding_approved" type="object"
|
||
class="btn p-0 w-100 border-0">
|
||
<div class="o_fc_tile">
|
||
<span class="o_fc_tile__num">
|
||
<field name="mod_funding_approved_count" nolabel="1"/>
|
||
</span>Approved
|
||
</div>
|
||
</button>
|
||
</div>
|
||
<div class="col-6 col-md-2">
|
||
<button name="action_open_mod_pca_received" type="object"
|
||
class="btn p-0 w-100 border-0">
|
||
<div class="o_fc_tile">
|
||
<span class="o_fc_tile__num">
|
||
<field name="mod_pca_received_count" nolabel="1"/>
|
||
</span>PCA
|
||
</div>
|
||
</button>
|
||
</div>
|
||
<div class="col-6 col-md-3">
|
||
<button name="action_open_mod_project_complete" type="object"
|
||
class="btn p-0 w-100 border-0">
|
||
<div class="o_fc_tile">
|
||
<span class="o_fc_tile__num">
|
||
<field name="mod_project_complete_count" nolabel="1"/>
|
||
</span>Proj. Done
|
||
</div>
|
||
</button>
|
||
</div>
|
||
<div class="col-6 col-md-3">
|
||
<button name="action_open_mod_pod_submitted" type="object"
|
||
class="btn p-0 w-100 border-0">
|
||
<div class="o_fc_tile">
|
||
<span class="o_fc_tile__num">
|
||
<field name="mod_pod_submitted_count" nolabel="1"/>
|
||
</span>POD Submitted
|
||
</div>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<!-- COLUMN 3: Analytics (Aging + Other Funders + Recent Exports)
|
||
Full-width below cols 1+2 on lg, dedicated right-column on xl -->
|
||
<div class="col-12 col-xl-4">
|
||
|
||
<!-- Aging buckets -->
|
||
<div class="o_fc_section mb-3">
|
||
<h6 class="o_fc_h6">
|
||
<i class="fa fa-clock-o me-2"/>
|
||
Aging
|
||
</h6>
|
||
<div class="row g-2">
|
||
<div class="col-4">
|
||
<button name="action_open_aging_30" type="object"
|
||
class="btn p-0 w-100 border-0">
|
||
<div class="o_fc_tile">
|
||
<span class="o_fc_tile__num">
|
||
<field name="aging_30_count" nolabel="1"/>
|
||
</span>30 – 59d
|
||
</div>
|
||
</button>
|
||
</div>
|
||
<div class="col-4">
|
||
<button name="action_open_aging_60" type="object"
|
||
class="btn p-0 w-100 border-0">
|
||
<div class="o_fc_tile o_fc_tile--urgent">
|
||
<span class="o_fc_tile__num">
|
||
<field name="aging_60_count" nolabel="1"/>
|
||
</span>60 – 89d
|
||
</div>
|
||
</button>
|
||
</div>
|
||
<div class="col-4">
|
||
<button name="action_open_aging_90" type="object"
|
||
class="btn p-0 w-100 border-0">
|
||
<div class="o_fc_tile o_fc_tile--urgent">
|
||
<span class="o_fc_tile__num">
|
||
<field name="aging_90_count" nolabel="1"/>
|
||
</span>90+ d
|
||
</div>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Other Funders -->
|
||
<div class="o_fc_section mb-3">
|
||
<h6 class="o_fc_h6">Other Funders</h6>
|
||
<div class="row g-2">
|
||
<div class="col-4">
|
||
<button name="action_open_odsp_cases" type="object"
|
||
class="btn p-0 w-100 border-0">
|
||
<div class="o_fc_tile">
|
||
<span class="o_fc_tile__num">
|
||
<field name="count_odsp" nolabel="1"/>
|
||
</span>ODSP
|
||
</div>
|
||
</button>
|
||
</div>
|
||
<div class="col-4">
|
||
<button name="action_open_wsib_cases" type="object"
|
||
class="btn p-0 w-100 border-0">
|
||
<div class="o_fc_tile">
|
||
<span class="o_fc_tile__num">
|
||
<field name="count_wsib" nolabel="1"/>
|
||
</span>WSIB
|
||
</div>
|
||
</button>
|
||
</div>
|
||
<div class="col-4">
|
||
<button name="action_open_insurance_cases" type="object"
|
||
class="btn p-0 w-100 border-0">
|
||
<div class="o_fc_tile">
|
||
<span class="o_fc_tile__num">
|
||
<field name="count_insurance" nolabel="1"/>
|
||
</span>Insurance
|
||
</div>
|
||
</button>
|
||
</div>
|
||
<div class="col-4">
|
||
<button name="action_open_mdc_cases" type="object"
|
||
class="btn p-0 w-100 border-0">
|
||
<div class="o_fc_tile">
|
||
<span class="o_fc_tile__num">
|
||
<field name="count_mdc" nolabel="1"/>
|
||
</span>MDC
|
||
</div>
|
||
</button>
|
||
</div>
|
||
<div class="col-4">
|
||
<button name="action_open_hardship_cases" type="object"
|
||
class="btn p-0 w-100 border-0">
|
||
<div class="o_fc_tile">
|
||
<span class="o_fc_tile__num">
|
||
<field name="count_hardship" nolabel="1"/>
|
||
</span>Hardship
|
||
</div>
|
||
</button>
|
||
</div>
|
||
<div class="col-4">
|
||
<button name="action_open_acsd_cases" type="object"
|
||
class="btn p-0 w-100 border-0">
|
||
<div class="o_fc_tile">
|
||
<span class="o_fc_tile__num">
|
||
<field name="count_acsd" nolabel="1"/>
|
||
</span>ACSD
|
||
</div>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Recent ADP Exports (last 5) -->
|
||
<div class="o_fc_section mb-3">
|
||
<h6 class="o_fc_h6">
|
||
<i class="fa fa-file-text-o me-2"/>
|
||
Recent ADP Exports
|
||
<span class="o_fc_tag">
|
||
<field name="recent_exports_count" nolabel="1"/>
|
||
</span>
|
||
<button name="action_open_recent_exports" type="object"
|
||
class="btn btn-link btn-sm ms-auto p-0">
|
||
View all
|
||
</button>
|
||
</h6>
|
||
<field name="recent_exports_html" nolabel="1"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
</sheet>
|
||
</form>
|
||
</field>
|
||
</record>
|
||
|
||
<!-- Dashboard Action -->
|
||
<record id="action_fusion_claims_dashboard" model="ir.actions.act_window">
|
||
<field name="name">Dashboard</field>
|
||
<field name="res_model">fusion.claims.dashboard</field>
|
||
<field name="view_mode">form</field>
|
||
<field name="view_id" ref="view_fusion_claims_dashboard_form"/>
|
||
<field name="target">current</field>
|
||
</record>
|
||
|
||
<!-- Dashboard Menu — top of the Fusion Claims app, sequence=1 so it
|
||
renders before "All Orders" (sequence=2) and becomes the default
|
||
landing when clicking the app icon. -->
|
||
<menuitem id="menu_fusion_claims_dashboard"
|
||
name="Dashboard"
|
||
parent="menu_adp_claims_root"
|
||
action="action_fusion_claims_dashboard"
|
||
sequence="1"/>
|
||
</odoo>
|