changes
This commit is contained in:
@@ -237,47 +237,55 @@
|
||||
<field name="partner_id"/>
|
||||
<field name="x_fc_claim_number"/>
|
||||
<field name="x_fc_authorizer_id"/>
|
||||
<field name="x_fc_client_ref_1" string="Client Reference 1"/>
|
||||
<field name="x_fc_client_ref_2" string="Client Reference 2"/>
|
||||
<separator/>
|
||||
<!-- Status Filters - Active Workflow -->
|
||||
<filter string="Quotation" name="filter_quotation"
|
||||
<filter string="Quotation" name="filter_quotation"
|
||||
domain="[('x_fc_adp_application_status', '=', 'quotation')]"/>
|
||||
<filter string="Assessment Scheduled" name="filter_assessment_scheduled"
|
||||
<filter string="Assessment Scheduled" name="filter_assessment_scheduled"
|
||||
domain="[('x_fc_adp_application_status', '=', 'assessment_scheduled')]"/>
|
||||
<filter string="Assessment Completed" name="filter_assessment_completed"
|
||||
<filter string="Assessment Completed" name="filter_assessment_completed"
|
||||
domain="[('x_fc_adp_application_status', '=', 'assessment_completed')]"/>
|
||||
<filter string="Waiting for Application" name="filter_waiting_for_application"
|
||||
<filter string="Waiting for Application" name="filter_waiting_for_application"
|
||||
domain="[('x_fc_adp_application_status', '=', 'waiting_for_application')]"/>
|
||||
<filter string="Application Received" name="filter_application_received"
|
||||
<filter string="Application Received" name="filter_application_received"
|
||||
domain="[('x_fc_adp_application_status', '=', 'application_received')]"/>
|
||||
<filter string="Ready for Submission" name="filter_ready_submission"
|
||||
<filter string="Ready for Submission" name="filter_ready_submission"
|
||||
domain="[('x_fc_adp_application_status', '=', 'ready_submission')]"/>
|
||||
<filter string="Submitted" name="filter_submitted"
|
||||
<filter string="Submitted" name="filter_submitted"
|
||||
domain="[('x_fc_adp_application_status', '=', 'submitted')]"/>
|
||||
<filter string="Resubmitted" name="filter_resubmitted"
|
||||
<filter string="Accepted by ADP" name="filter_accepted"
|
||||
domain="[('x_fc_adp_application_status', '=', 'accepted')]"/>
|
||||
<filter string="Rejected by ADP" name="filter_rejected"
|
||||
domain="[('x_fc_adp_application_status', '=', 'rejected')]"/>
|
||||
<filter string="Resubmitted" name="filter_resubmitted"
|
||||
domain="[('x_fc_adp_application_status', '=', 'resubmitted')]"/>
|
||||
<filter string="Needs Correction" name="filter_needs_correction"
|
||||
<filter string="Needs Correction" name="filter_needs_correction"
|
||||
domain="[('x_fc_adp_application_status', '=', 'needs_correction')]"/>
|
||||
<filter string="Approved" name="filter_approved"
|
||||
<filter string="Approved" name="filter_approved"
|
||||
domain="[('x_fc_adp_application_status', '=', 'approved')]"/>
|
||||
<filter string="Approved with Deduction" name="filter_approved_deduction"
|
||||
<filter string="Approved with Deduction" name="filter_approved_deduction"
|
||||
domain="[('x_fc_adp_application_status', '=', 'approved_deduction')]"/>
|
||||
<filter string="Ready to Bill" name="filter_ready_bill"
|
||||
<filter string="Ready for Delivery" name="filter_ready_delivery"
|
||||
domain="[('x_fc_adp_application_status', '=', 'ready_delivery')]"/>
|
||||
<filter string="Ready to Bill" name="filter_ready_bill"
|
||||
domain="[('x_fc_adp_application_status', '=', 'ready_bill')]"/>
|
||||
<filter string="Billed to ADP" name="filter_billed"
|
||||
<filter string="Billed to ADP" name="filter_billed"
|
||||
domain="[('x_fc_adp_application_status', '=', 'billed')]"/>
|
||||
<filter string="Case Closed" name="filter_case_closed"
|
||||
<filter string="Case Closed" name="filter_case_closed"
|
||||
domain="[('x_fc_adp_application_status', '=', 'case_closed')]"/>
|
||||
<separator/>
|
||||
<!-- Special Status Filters -->
|
||||
<filter string="On Hold" name="filter_on_hold"
|
||||
<filter string="On Hold" name="filter_on_hold"
|
||||
domain="[('x_fc_adp_application_status', '=', 'on_hold')]"/>
|
||||
<filter string="Withdrawn" name="filter_withdrawn"
|
||||
<filter string="Withdrawn" name="filter_withdrawn"
|
||||
domain="[('x_fc_adp_application_status', '=', 'withdrawn')]"/>
|
||||
<filter string="Denied" name="filter_denied"
|
||||
<filter string="Denied" name="filter_denied"
|
||||
domain="[('x_fc_adp_application_status', '=', 'denied')]"/>
|
||||
<filter string="Cancelled" name="filter_cancelled"
|
||||
<filter string="Cancelled" name="filter_cancelled"
|
||||
domain="[('x_fc_adp_application_status', '=', 'cancelled')]"/>
|
||||
<filter string="Expired" name="filter_expired"
|
||||
<filter string="Expired" name="filter_expired"
|
||||
domain="[('x_fc_adp_application_status', '=', 'expired')]"/>
|
||||
<separator/>
|
||||
<!-- Group By -->
|
||||
@@ -419,6 +427,30 @@
|
||||
<field name="domain">[('x_fc_is_adp_sale', '=', True), ('x_fc_adp_application_status', 'in', ['submitted', 'resubmitted'])]</field>
|
||||
</record>
|
||||
|
||||
<!-- 6b. Accepted by ADP -->
|
||||
<record id="action_adp_accepted" model="ir.actions.act_window">
|
||||
<field name="name">Accepted by ADP</field>
|
||||
<field name="res_model">sale.order</field>
|
||||
<field name="view_mode">list,kanban,form</field>
|
||||
<field name="view_ids" eval="[(5, 0, 0),
|
||||
(0, 0, {'view_mode': 'list', 'view_id': ref('view_sale_order_list_adp')}),
|
||||
(0, 0, {'view_mode': 'kanban', 'view_id': ref('view_sale_order_kanban_adp')})]"/>
|
||||
<field name="search_view_id" ref="view_sale_order_search_adp"/>
|
||||
<field name="domain">[('x_fc_is_adp_sale', '=', True), ('x_fc_adp_application_status', '=', 'accepted')]</field>
|
||||
</record>
|
||||
|
||||
<!-- 6c. Rejected by ADP -->
|
||||
<record id="action_adp_rejected" model="ir.actions.act_window">
|
||||
<field name="name">Rejected by ADP</field>
|
||||
<field name="res_model">sale.order</field>
|
||||
<field name="view_mode">list,kanban,form</field>
|
||||
<field name="view_ids" eval="[(5, 0, 0),
|
||||
(0, 0, {'view_mode': 'list', 'view_id': ref('view_sale_order_list_adp')}),
|
||||
(0, 0, {'view_mode': 'kanban', 'view_id': ref('view_sale_order_kanban_adp')})]"/>
|
||||
<field name="search_view_id" ref="view_sale_order_search_adp"/>
|
||||
<field name="domain">[('x_fc_is_adp_sale', '=', True), ('x_fc_adp_application_status', '=', 'rejected')]</field>
|
||||
</record>
|
||||
|
||||
<!-- 7. Needs Correction -->
|
||||
<record id="action_adp_needs_correction" model="ir.actions.act_window">
|
||||
<field name="name">Needs Correction</field>
|
||||
@@ -967,81 +999,98 @@ else:
|
||||
parent="menu_adp_claims_root"
|
||||
sequence="20"/>
|
||||
|
||||
<menuitem id="menu_adp_quotations"
|
||||
name="Quotation Stage"
|
||||
<menuitem id="menu_adp_all_orders" name="All ADP Orders" parent="menu_fc_adp"
|
||||
action="action_adp_orders_all" sequence="1"/>
|
||||
<menuitem id="menu_adp_invoices" name="ADP Invoices" parent="menu_fc_adp"
|
||||
action="action_adp_invoices" sequence="2"/>
|
||||
|
||||
<menuitem id="menu_adp_quotations"
|
||||
name="Quotation Stage"
|
||||
parent="menu_fc_adp"
|
||||
action="action_adp_quotations"
|
||||
sequence="10"/>
|
||||
|
||||
<menuitem id="menu_adp_assessment_scheduled"
|
||||
name="Assessment Scheduled"
|
||||
<menuitem id="menu_adp_assessment_scheduled"
|
||||
name="Assessment Scheduled"
|
||||
parent="menu_fc_adp"
|
||||
action="action_adp_assessment_scheduled"
|
||||
sequence="12"/>
|
||||
|
||||
<menuitem id="menu_adp_assessment_completed"
|
||||
name="Waiting for Application"
|
||||
<menuitem id="menu_adp_assessment_completed"
|
||||
name="Waiting for Application"
|
||||
parent="menu_fc_adp"
|
||||
action="action_adp_assessment_completed"
|
||||
sequence="14"/>
|
||||
|
||||
<menuitem id="menu_adp_application_received"
|
||||
name="Application Received"
|
||||
<menuitem id="menu_adp_application_received"
|
||||
name="Application Received"
|
||||
parent="menu_fc_adp"
|
||||
action="action_adp_application_received"
|
||||
sequence="16"/>
|
||||
|
||||
<menuitem id="menu_adp_ready_submission"
|
||||
name="Ready for Submission"
|
||||
<menuitem id="menu_adp_ready_submission"
|
||||
name="Ready for Submission"
|
||||
parent="menu_fc_adp"
|
||||
action="action_adp_ready_submission"
|
||||
sequence="18"/>
|
||||
|
||||
<menuitem id="menu_adp_pending_approval"
|
||||
name="Application Submitted"
|
||||
<menuitem id="menu_adp_pending_approval"
|
||||
name="Application Submitted"
|
||||
parent="menu_fc_adp"
|
||||
action="action_adp_pending_approval"
|
||||
sequence="20"/>
|
||||
|
||||
<menuitem id="menu_adp_needs_correction"
|
||||
name="Needs Correction"
|
||||
<menuitem id="menu_adp_accepted"
|
||||
name="Accepted by ADP"
|
||||
parent="menu_fc_adp"
|
||||
action="action_adp_needs_correction"
|
||||
action="action_adp_accepted"
|
||||
sequence="21"/>
|
||||
|
||||
<menuitem id="menu_adp_rejected"
|
||||
name="Rejected by ADP"
|
||||
parent="menu_fc_adp"
|
||||
action="action_adp_rejected"
|
||||
sequence="22"/>
|
||||
|
||||
<menuitem id="menu_adp_approved"
|
||||
name="Application Approved"
|
||||
<menuitem id="menu_adp_needs_correction"
|
||||
name="Needs Correction"
|
||||
parent="menu_fc_adp"
|
||||
action="action_adp_needs_correction"
|
||||
sequence="23"/>
|
||||
|
||||
<menuitem id="menu_adp_approved"
|
||||
name="Application Approved"
|
||||
parent="menu_fc_adp"
|
||||
action="action_adp_approved"
|
||||
sequence="25"/>
|
||||
|
||||
<menuitem id="menu_adp_ready_delivery"
|
||||
name="Ready for Delivery"
|
||||
<menuitem id="menu_adp_ready_delivery"
|
||||
name="Ready for Delivery"
|
||||
parent="menu_fc_adp"
|
||||
action="action_adp_ready_delivery"
|
||||
sequence="27"/>
|
||||
|
||||
<menuitem id="menu_adp_ready_billing"
|
||||
name="Ready for Billing"
|
||||
<menuitem id="menu_adp_ready_billing"
|
||||
name="Ready for Billing"
|
||||
parent="menu_fc_adp"
|
||||
action="action_adp_ready_billing"
|
||||
sequence="30"/>
|
||||
|
||||
<menuitem id="menu_adp_billed"
|
||||
name="Billed to ADP"
|
||||
<menuitem id="menu_adp_billed"
|
||||
name="Billed to ADP"
|
||||
parent="menu_fc_adp"
|
||||
action="action_adp_billed"
|
||||
sequence="35"/>
|
||||
|
||||
<menuitem id="menu_adp_closed"
|
||||
name="Case Closed"
|
||||
<menuitem id="menu_adp_closed"
|
||||
name="Case Closed"
|
||||
parent="menu_fc_adp"
|
||||
action="action_adp_closed"
|
||||
sequence="40"/>
|
||||
|
||||
<!-- ADP Special Statuses -->
|
||||
<menuitem id="menu_adp_special_statuses"
|
||||
name="Special Statuses"
|
||||
<menuitem id="menu_adp_special_statuses"
|
||||
name="Special Statuses"
|
||||
parent="menu_fc_adp"
|
||||
sequence="50"/>
|
||||
|
||||
@@ -1056,14 +1105,6 @@ else:
|
||||
<menuitem id="menu_adp_expired" name="Expired" parent="menu_adp_special_statuses"
|
||||
action="action_adp_expired" sequence="50"/>
|
||||
|
||||
<!-- ADP All Records -->
|
||||
<menuitem id="menu_adp_all_records" name="All Records" parent="menu_fc_adp"
|
||||
sequence="60"/>
|
||||
<menuitem id="menu_adp_all_orders" name="All ADP Orders" parent="menu_adp_all_records"
|
||||
action="action_adp_orders_all" sequence="10"/>
|
||||
<menuitem id="menu_adp_invoices" name="ADP Invoices" parent="menu_adp_all_records"
|
||||
action="action_adp_invoices" sequence="20"/>
|
||||
|
||||
<!-- ===== FUNDING TYPE MENUS ===== -->
|
||||
<menuitem id="menu_fc_odsp" name="ODSP" parent="menu_adp_claims_root"
|
||||
sequence="25"/>
|
||||
|
||||
@@ -1,105 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<!-- SA Signature Template - Form View -->
|
||||
<record id="view_fusion_sa_signature_template_form" model="ir.ui.view">
|
||||
<field name="name">fusion.sa.signature.template.form</field>
|
||||
<field name="model">fusion.sa.signature.template</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="SA Signature Template">
|
||||
<sheet>
|
||||
<div class="oe_title">
|
||||
<h1><field name="name" placeholder="e.g. SA Mobility Standard"/></h1>
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="sa_default_sig_page" string="Default Signature Page"/>
|
||||
<field name="active"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="notes" placeholder="Usage notes"/>
|
||||
</group>
|
||||
</group>
|
||||
<div class="row mt-3">
|
||||
<div class="col-5">
|
||||
<h4>Signature Coordinates</h4>
|
||||
<div class="text-muted mb-2" style="font-size: 0.85em;">
|
||||
PDF points (72 pts = 1 inch). Y = from top.
|
||||
</div>
|
||||
<group string="Name">
|
||||
<field name="sa_sig_name_x" string="X"/>
|
||||
<field name="sa_sig_name_y" string="Y from top"/>
|
||||
</group>
|
||||
<group string="Date">
|
||||
<field name="sa_sig_date_x" string="X"/>
|
||||
<field name="sa_sig_date_y" string="Y from top"/>
|
||||
</group>
|
||||
<group string="Signature">
|
||||
<field name="sa_sig_x" string="X"/>
|
||||
<field name="sa_sig_y" string="Y from top"/>
|
||||
<field name="sa_sig_w" string="Width"/>
|
||||
<field name="sa_sig_h" string="Height"/>
|
||||
</group>
|
||||
<separator/>
|
||||
<group>
|
||||
<field name="preview_pdf" filename="preview_pdf_filename"
|
||||
string="Sample PDF"/>
|
||||
<field name="preview_pdf_filename" invisible="1"/>
|
||||
<field name="preview_pdf_page" string="Preview Page"
|
||||
help="0 = use Default Signature Page above"/>
|
||||
</group>
|
||||
</div>
|
||||
<div class="col-7">
|
||||
<h4>Preview</h4>
|
||||
<div class="text-muted mb-2" style="font-size: 0.85em;">
|
||||
Upload a sample PDF on the left to see where signatures land.
|
||||
</div>
|
||||
<field name="preview_image" widget="image" invisible="not preview_image"
|
||||
options="{'size': [700, 0]}" class="w-100"/>
|
||||
<div invisible="preview_image" class="text-muted text-center p-5"
|
||||
style="border: 1px dashed #666; border-radius: 8px;">
|
||||
<p>No preview available.</p>
|
||||
<p>Upload a sample SA Mobility approval PDF to see signature placement.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- SA Signature Template - List View -->
|
||||
<record id="view_fusion_sa_signature_template_list" model="ir.ui.view">
|
||||
<field name="name">fusion.sa.signature.template.list</field>
|
||||
<field name="model">fusion.sa.signature.template</field>
|
||||
<field name="arch" type="xml">
|
||||
<list string="SA Signature Templates">
|
||||
<field name="name"/>
|
||||
<field name="sa_default_sig_page" string="Sig Page"/>
|
||||
<field name="active" column_invisible="1"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- SA Signature Template - Action -->
|
||||
<record id="action_fusion_sa_signature_templates" model="ir.actions.act_window">
|
||||
<field name="name">SA Signature Templates</field>
|
||||
<field name="res_model">fusion.sa.signature.template</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
Create a SA Mobility Signature Template
|
||||
</p>
|
||||
<p>
|
||||
Define where client name, date, and signature are placed on ODSP approval forms.
|
||||
Set once, used automatically for all SA Mobility cases.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Menu item under Configuration -->
|
||||
<menuitem id="menu_fusion_sa_signature_templates"
|
||||
name="SA Signature Templates"
|
||||
parent="menu_adp_config"
|
||||
action="action_fusion_sa_signature_templates"
|
||||
sequence="45"/>
|
||||
<!-- SA Signature Templates have been retired.
|
||||
ODSP signing positions are now managed via Configuration > PDF Templates
|
||||
(category = ODSP) using the drag-and-drop visual editor. -->
|
||||
</odoo>
|
||||
|
||||
80
fusion_claims/views/task_sync_views.xml
Normal file
80
fusion_claims/views/task_sync_views.xml
Normal file
@@ -0,0 +1,80 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
|
||||
<!-- ================================================================== -->
|
||||
<!-- SYNC CONFIG - FORM VIEW -->
|
||||
<!-- ================================================================== -->
|
||||
<record id="view_task_sync_config_form" model="ir.ui.view">
|
||||
<field name="name">fusion.task.sync.config.form</field>
|
||||
<field name="model">fusion.task.sync.config</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Task Sync Configuration">
|
||||
<header>
|
||||
<button name="action_test_connection" type="object"
|
||||
string="Test Connection" class="btn-secondary" icon="fa-plug"/>
|
||||
<button name="action_sync_now" type="object"
|
||||
string="Sync Now" class="btn-success" icon="fa-sync"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<div class="oe_title">
|
||||
<h1><field name="name" placeholder="e.g. Westin Healthcare"/></h1>
|
||||
</div>
|
||||
<group>
|
||||
<group string="Connection">
|
||||
<field name="instance_id" placeholder="e.g. westin"/>
|
||||
<field name="url" placeholder="http://192.168.1.40:8069"/>
|
||||
<field name="database" placeholder="e.g. westin-v19"/>
|
||||
<field name="username" placeholder="e.g. admin"/>
|
||||
<field name="api_key" password="True"/>
|
||||
<field name="active"/>
|
||||
</group>
|
||||
<group string="Status">
|
||||
<field name="last_sync"/>
|
||||
<field name="last_sync_error" readonly="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<div class="alert alert-info mt-3">
|
||||
<i class="fa fa-info-circle"/>
|
||||
Technicians are matched across instances by their
|
||||
<strong>Tech Sync ID</strong> field (Settings > Users).
|
||||
Set the same ID (e.g. "gordy") on both instances for each shared technician.
|
||||
</div>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- ================================================================== -->
|
||||
<!-- SYNC CONFIG - LIST VIEW -->
|
||||
<!-- ================================================================== -->
|
||||
<record id="view_task_sync_config_list" model="ir.ui.view">
|
||||
<field name="name">fusion.task.sync.config.list</field>
|
||||
<field name="model">fusion.task.sync.config</field>
|
||||
<field name="arch" type="xml">
|
||||
<list>
|
||||
<field name="name"/>
|
||||
<field name="instance_id"/>
|
||||
<field name="url"/>
|
||||
<field name="database"/>
|
||||
<field name="active"/>
|
||||
<field name="last_sync"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- ================================================================== -->
|
||||
<!-- SYNC CONFIG - ACTION + MENU -->
|
||||
<!-- ================================================================== -->
|
||||
<record id="action_task_sync_config" model="ir.actions.act_window">
|
||||
<field name="name">Task Sync Instances</field>
|
||||
<field name="res_model">fusion.task.sync.config</field>
|
||||
<field name="view_mode">list,form</field>
|
||||
</record>
|
||||
|
||||
<menuitem id="menu_task_sync_config"
|
||||
name="Task Sync"
|
||||
parent="fusion_claims.menu_technician_schedule"
|
||||
action="action_task_sync_config"
|
||||
sequence="99"/>
|
||||
|
||||
</odoo>
|
||||
@@ -25,6 +25,9 @@
|
||||
<field name="x_fc_start_address"
|
||||
invisible="not x_fc_is_field_staff"
|
||||
placeholder="e.g. 123 Main St, Brampton, ON"/>
|
||||
<field name="x_fc_tech_sync_id"
|
||||
invisible="not x_fc_is_field_staff"
|
||||
placeholder="e.g. gordy, manpreet"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
@@ -56,6 +59,13 @@
|
||||
<filter string="Deliveries" name="filter_deliveries" domain="[('task_type', '=', 'delivery')]"/>
|
||||
<filter string="Repairs" name="filter_repairs" domain="[('task_type', '=', 'repair')]"/>
|
||||
<filter string="POD Required" name="filter_pod" domain="[('pod_required', '=', True)]"/>
|
||||
<filter string="Has Purchase Order" name="has_po"
|
||||
domain="[('purchase_order_id', '!=', False)]"/>
|
||||
<separator/>
|
||||
<filter string="Local Tasks" name="filter_local"
|
||||
domain="[('x_fc_sync_source', '=', False)]"/>
|
||||
<filter string="Synced Tasks" name="filter_synced"
|
||||
domain="[('x_fc_sync_source', '!=', False)]"/>
|
||||
<separator/>
|
||||
<!-- Group By -->
|
||||
<filter string="Technician" name="group_technician" context="{'group_by': 'technician_id'}"/>
|
||||
@@ -75,26 +85,36 @@
|
||||
<field name="model">fusion.technician.task</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Technician Task">
|
||||
<field name="x_fc_is_shadow" invisible="1"/>
|
||||
<field name="x_fc_sync_source" invisible="1"/>
|
||||
<header>
|
||||
<button name="action_start_en_route" type="object" string="En Route"
|
||||
class="btn-primary" invisible="status != 'scheduled'"/>
|
||||
class="btn-primary" invisible="status != 'scheduled' or x_fc_is_shadow"/>
|
||||
<button name="action_start_task" type="object" string="Start Task"
|
||||
class="btn-primary" invisible="status not in ('scheduled', 'en_route')"/>
|
||||
class="btn-primary" invisible="status not in ('scheduled', 'en_route') or x_fc_is_shadow"/>
|
||||
<button name="action_complete_task" type="object" string="Complete"
|
||||
class="btn-success" invisible="status not in ('in_progress', 'en_route')"/>
|
||||
class="btn-success" invisible="status not in ('in_progress', 'en_route') or x_fc_is_shadow"/>
|
||||
<button name="action_reschedule" type="object" string="Reschedule"
|
||||
class="btn-warning" invisible="status not in ('scheduled', 'en_route')"/>
|
||||
class="btn-warning" invisible="status not in ('scheduled', 'en_route') or x_fc_is_shadow"/>
|
||||
<button name="action_cancel_task" type="object" string="Cancel"
|
||||
class="btn-danger" invisible="status in ('completed', 'cancelled')"
|
||||
class="btn-danger" invisible="status in ('completed', 'cancelled') or x_fc_is_shadow"
|
||||
confirm="Are you sure you want to cancel this task?"/>
|
||||
<button name="action_reset_to_scheduled" type="object" string="Reset to Scheduled"
|
||||
invisible="status not in ('cancelled', 'rescheduled')"/>
|
||||
invisible="status not in ('cancelled', 'rescheduled') or x_fc_is_shadow"/>
|
||||
<button string="Calculate Travel"
|
||||
class="btn-secondary o_fc_calculate_travel" icon="fa-car"/>
|
||||
class="btn-secondary o_fc_calculate_travel" icon="fa-car"
|
||||
invisible="x_fc_is_shadow"/>
|
||||
<field name="status" widget="statusbar"
|
||||
statusbar_visible="scheduled,en_route,in_progress,completed"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<!-- Shadow task banner -->
|
||||
<div class="alert alert-info text-center" role="alert"
|
||||
invisible="not x_fc_is_shadow">
|
||||
<strong><i class="fa fa-link"/> This task is synced from
|
||||
<field name="x_fc_sync_source" readonly="1" nolabel="1" class="d-inline"/>
|
||||
— view only.</strong>
|
||||
</div>
|
||||
<div class="oe_button_box" name="button_box">
|
||||
<button name="action_view_sale_order" type="object"
|
||||
class="oe_stat_button" icon="fa-file-text-o"
|
||||
@@ -103,11 +123,20 @@
|
||||
<span class="o_stat_text">View Case</span>
|
||||
</div>
|
||||
</button>
|
||||
<button name="action_view_purchase_order" type="object"
|
||||
class="oe_stat_button" icon="fa-shopping-cart"
|
||||
invisible="not purchase_order_id">
|
||||
<div class="o_field_widget o_stat_info">
|
||||
<span class="o_stat_text">Purchase Order</span>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
<widget name="web_ribbon" title="Completed" bg_color="text-bg-success"
|
||||
invisible="status != 'completed'"/>
|
||||
<widget name="web_ribbon" title="Cancelled" bg_color="text-bg-danger"
|
||||
invisible="status != 'cancelled'"/>
|
||||
<widget name="web_ribbon" title="Synced" bg_color="text-bg-info"
|
||||
invisible="not x_fc_is_shadow or status in ('completed', 'cancelled')"/>
|
||||
<div class="oe_title">
|
||||
<h1>
|
||||
<field name="name" readonly="1"/>
|
||||
@@ -135,6 +164,7 @@
|
||||
<field name="task_type"/>
|
||||
<field name="priority" widget="priority"/>
|
||||
<field name="sale_order_id"/>
|
||||
<field name="purchase_order_id"/>
|
||||
</group>
|
||||
<group string="Schedule">
|
||||
<field name="scheduled_date"/>
|
||||
@@ -234,6 +264,10 @@
|
||||
<field name="priority" widget="priority" optional="hide"/>
|
||||
<field name="pod_required" optional="hide"/>
|
||||
<field name="sale_order_id" optional="hide"/>
|
||||
<field name="purchase_order_id" optional="hide"/>
|
||||
<field name="x_fc_source_label" string="Source" optional="show"
|
||||
widget="badge" decoration-info="x_fc_is_shadow"
|
||||
decoration-success="not x_fc_is_shadow"/>
|
||||
</list>
|
||||
</field>
|
||||
</record>
|
||||
@@ -257,6 +291,8 @@
|
||||
<field name="address_city"/>
|
||||
<field name="travel_time_minutes"/>
|
||||
<field name="status"/>
|
||||
<field name="x_fc_is_shadow"/>
|
||||
<field name="x_fc_sync_client_name"/>
|
||||
<templates>
|
||||
<t t-name="card">
|
||||
<div t-attf-class="oe_kanban_color_#{record.color.raw_value} oe_kanban_card oe_kanban_global_click">
|
||||
@@ -274,7 +310,13 @@
|
||||
<span class="text-muted"><field name="scheduled_date"/> - <field name="time_start_display"/></span>
|
||||
</div>
|
||||
<div class="mb-1">
|
||||
<i class="fa fa-user me-1"/><field name="partner_id"/>
|
||||
<i class="fa fa-user me-1"/>
|
||||
<t t-if="record.x_fc_is_shadow.raw_value">
|
||||
<span t-out="record.x_fc_sync_client_name.value"/>
|
||||
</t>
|
||||
<t t-else="">
|
||||
<field name="partner_id"/>
|
||||
</t>
|
||||
</div>
|
||||
<div class="text-muted small" t-if="record.address_city.raw_value">
|
||||
<i class="fa fa-map-marker me-1"/><field name="address_city"/>
|
||||
@@ -311,6 +353,7 @@
|
||||
quick_create="0">
|
||||
<!-- Displayed on the calendar card -->
|
||||
<field name="partner_id"/>
|
||||
<field name="x_fc_sync_client_name"/>
|
||||
<field name="task_type"/>
|
||||
<field name="time_start_display" string="Start"/>
|
||||
<field name="time_end_display" string="End"/>
|
||||
|
||||
Reference in New Issue
Block a user