Initial commit
This commit is contained in:
93
fusion_claims/data/ai_agent_data.xml
Normal file
93
fusion_claims/data/ai_agent_data.xml
Normal file
@@ -0,0 +1,93 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<!-- ================================================================= -->
|
||||
<!-- AI TOOLS: Server Actions for Client Data Queries (MUST BE FIRST) -->
|
||||
<!-- ================================================================= -->
|
||||
|
||||
<!-- Tool 1: Search Client Profiles -->
|
||||
<record id="ai_tool_search_clients" model="ir.actions.server">
|
||||
<field name="name">Fusion: Search Client Profiles</field>
|
||||
<field name="state">code</field>
|
||||
<field name="use_in_ai" eval="True"/>
|
||||
<field name="model_id" ref="ai.model_ai_agent"/>
|
||||
<field name="code">
|
||||
ai['result'] = record._fc_tool_search_clients(search_term, city_filter, condition_filter)
|
||||
</field>
|
||||
<field name="ai_tool_description">Search for client profiles in Fusion Claims. Can search by name, health card number, city, or medical condition. Returns matching profiles with basic info and financial summaries.</field>
|
||||
<field name="ai_tool_schema">{"type": "object", "properties": {"search_term": {"type": "string", "description": "Search term to match against name, health card number, or city"}, "city_filter": {"type": "string", "description": "Filter by city name"}, "condition_filter": {"type": "string", "description": "Filter by medical condition (e.g., CVA, diabetes)"}}, "required": []}</field>
|
||||
</record>
|
||||
|
||||
<!-- Tool 2: Get Client Details -->
|
||||
<record id="ai_tool_client_details" model="ir.actions.server">
|
||||
<field name="name">Fusion: Get Client Details</field>
|
||||
<field name="state">code</field>
|
||||
<field name="use_in_ai" eval="True"/>
|
||||
<field name="model_id" ref="ai.model_ai_agent"/>
|
||||
<field name="code">
|
||||
ai['result'] = record._fc_tool_client_details(profile_id)
|
||||
</field>
|
||||
<field name="ai_tool_description">Get detailed information about a specific client profile including personal info, medical status, benefits, claims history, and ADP application history. Requires profile_id from a previous search.</field>
|
||||
<field name="ai_tool_schema">{"type": "object", "properties": {"profile_id": {"type": "number", "description": "ID of the client profile to get details for"}}, "required": ["profile_id"]}</field>
|
||||
</record>
|
||||
|
||||
<!-- Tool 3: Get Aggregated Stats -->
|
||||
<record id="ai_tool_client_stats" model="ir.actions.server">
|
||||
<field name="name">Fusion: Get Claims Statistics</field>
|
||||
<field name="state">code</field>
|
||||
<field name="use_in_ai" eval="True"/>
|
||||
<field name="model_id" ref="ai.model_ai_agent"/>
|
||||
<field name="code">
|
||||
ai['result'] = record._fc_tool_claims_stats()
|
||||
</field>
|
||||
<field name="ai_tool_description">Get aggregated statistics about Fusion Claims data: total profiles, total orders, breakdown by sale type, breakdown by workflow status, and top cities by client count. No parameters needed.</field>
|
||||
<field name="ai_tool_schema">{"type": "object", "properties": {}, "required": []}</field>
|
||||
</record>
|
||||
|
||||
<!-- ================================================================= -->
|
||||
<!-- AI TOPIC (references tools above) -->
|
||||
<!-- ================================================================= -->
|
||||
<record id="ai_topic_client_intelligence" model="ai.topic">
|
||||
<field name="name">Fusion Claims Client Intelligence</field>
|
||||
<field name="description">Query client profiles, ADP claims, funding history, medical conditions, and device information.</field>
|
||||
<field name="instructions">You help users find information about ADP clients, claims, medical conditions, devices, and funding history. Use the Fusion search/details/stats tools to query data.</field>
|
||||
<field name="tool_ids" eval="[(6, 0, [
|
||||
ref('fusion_claims.ai_tool_search_clients'),
|
||||
ref('fusion_claims.ai_tool_client_details'),
|
||||
ref('fusion_claims.ai_tool_client_stats'),
|
||||
])]"/>
|
||||
</record>
|
||||
|
||||
<!-- ================================================================= -->
|
||||
<!-- AI AGENT (references topic above) -->
|
||||
<!-- ================================================================= -->
|
||||
<record id="ai_agent_fusion_claims" model="ai.agent">
|
||||
<field name="name">Fusion Claims Intelligence</field>
|
||||
<field name="subtitle">Ask about clients, ADP claims, funding history, medical conditions, and devices.</field>
|
||||
<field name="llm_model">gpt-4.1</field>
|
||||
<field name="response_style">analytical</field>
|
||||
<field name="restrict_to_sources" eval="False"/>
|
||||
<field name="system_prompt">You are Fusion Claims Intelligence, an AI assistant for ADP claims management.
|
||||
|
||||
You help staff find information about clients, medical conditions, mobility devices, funding history, and claim status.
|
||||
|
||||
Capabilities:
|
||||
1. Search client profiles by name, health card number, city, or medical condition
|
||||
2. Get detailed client information including claims history and ADP applications
|
||||
3. Provide aggregated statistics about claims, funding types, and demographics
|
||||
|
||||
Response guidelines:
|
||||
- Be concise and data-driven
|
||||
- Format monetary values with $ and commas
|
||||
- Include key identifiers (name, health card, city) when listing clients
|
||||
- Include order number, status, and amounts when discussing claims
|
||||
- If asked about a specific client, search first, then get details
|
||||
- Always provide the profile ID for record lookup
|
||||
|
||||
Key terminology:
|
||||
- ADP = Assistive Devices Program (Ontario government)
|
||||
- Client Type REG = Regular (75% ADP / 25% Client), ODS/OWP/ACS = 100% ADP
|
||||
- Sale Types: ADP, ODSP, WSIB, Insurance, March of Dimes, Muscular Dystrophy, Hardship Funding
|
||||
- Sections: 2a = Walkers, 2b = Manual Wheelchairs, 2c = Power Bases/Scooters, 2d = Seating</field>
|
||||
<field name="topic_ids" eval="[(6, 0, [ref('ai_topic_client_intelligence')])]"/>
|
||||
</record>
|
||||
</odoo>
|
||||
17057
fusion_claims/data/device_codes/adp_mobility_manual.json
Normal file
17057
fusion_claims/data/device_codes/adp_mobility_manual.json
Normal file
File diff suppressed because it is too large
Load Diff
30
fusion_claims/data/ir_actions_server_data.xml
Normal file
30
fusion_claims/data/ir_actions_server_data.xml
Normal file
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<!-- Server Action: Sync ADP Fields to Invoices -->
|
||||
<!-- This appears in the Action menu on Sale Orders -->
|
||||
<record id="action_sync_adp_fields_server" model="ir.actions.server">
|
||||
<field name="name">Sync to Invoices</field>
|
||||
<field name="model_id" ref="sale.model_sale_order"/>
|
||||
<field name="binding_model_id" ref="sale.model_sale_order"/>
|
||||
<field name="binding_view_types">form,list</field>
|
||||
<field name="state">code</field>
|
||||
<field name="code">
|
||||
if records:
|
||||
# Filter to only ADP sales
|
||||
adp_records = records.filtered(lambda r: r.x_fc_is_adp_sale and r.state == 'sale')
|
||||
if adp_records:
|
||||
action = adp_records.action_sync_adp_fields()
|
||||
else:
|
||||
action = {
|
||||
'type': 'ir.actions.client',
|
||||
'tag': 'display_notification',
|
||||
'params': {
|
||||
'title': 'No ADP Sales',
|
||||
'message': 'Selected orders are not confirmed ADP sales.',
|
||||
'type': 'warning',
|
||||
'sticky': False,
|
||||
}
|
||||
}
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
151
fusion_claims/data/ir_config_parameter_data.xml
Normal file
151
fusion_claims/data/ir_config_parameter_data.xml
Normal file
@@ -0,0 +1,151 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<!--
|
||||
Default configuration parameters for Fusion Claims.
|
||||
noupdate="1" ensures these are ONLY set on first install,
|
||||
never overwritten during module upgrades.
|
||||
-->
|
||||
<data noupdate="1">
|
||||
|
||||
<!-- ADP Billing -->
|
||||
<record id="config_vendor_code" model="ir.config_parameter">
|
||||
<field name="key">fusion_claims.vendor_code</field>
|
||||
<field name="value"></field>
|
||||
</record>
|
||||
<record id="config_adp_posting_base_date" model="ir.config_parameter">
|
||||
<field name="key">fusion_claims.adp_posting_base_date</field>
|
||||
<field name="value">2026-01-23</field>
|
||||
</record>
|
||||
<record id="config_adp_posting_frequency_days" model="ir.config_parameter">
|
||||
<field name="key">fusion_claims.adp_posting_frequency_days</field>
|
||||
<field name="value">14</field>
|
||||
</record>
|
||||
|
||||
<!-- Email Notifications -->
|
||||
<record id="config_enable_email_notifications" model="ir.config_parameter">
|
||||
<field name="key">fusion_claims.enable_email_notifications</field>
|
||||
<field name="value">True</field>
|
||||
</record>
|
||||
<record id="config_application_reminder_days" model="ir.config_parameter">
|
||||
<field name="key">fusion_claims.application_reminder_days</field>
|
||||
<field name="value">4</field>
|
||||
</record>
|
||||
<record id="config_application_reminder_2_days" model="ir.config_parameter">
|
||||
<field name="key">fusion_claims.application_reminder_2_days</field>
|
||||
<field name="value">4</field>
|
||||
</record>
|
||||
|
||||
<!-- AI Settings -->
|
||||
<record id="config_ai_model" model="ir.config_parameter">
|
||||
<field name="key">fusion_claims.ai_model</field>
|
||||
<field name="value">gpt-4o-mini</field>
|
||||
</record>
|
||||
<record id="config_auto_parse_xml" model="ir.config_parameter">
|
||||
<field name="key">fusion_claims.auto_parse_xml</field>
|
||||
<field name="value">True</field>
|
||||
</record>
|
||||
|
||||
<!-- Technician / Field Service -->
|
||||
<record id="config_store_open_hour" model="ir.config_parameter">
|
||||
<field name="key">fusion_claims.store_open_hour</field>
|
||||
<field name="value">9.0</field>
|
||||
</record>
|
||||
<record id="config_store_close_hour" model="ir.config_parameter">
|
||||
<field name="key">fusion_claims.store_close_hour</field>
|
||||
<field name="value">18.0</field>
|
||||
</record>
|
||||
|
||||
<!-- Push Notifications -->
|
||||
<record id="config_push_enabled" model="ir.config_parameter">
|
||||
<field name="key">fusion_claims.push_enabled</field>
|
||||
<field name="value">False</field>
|
||||
</record>
|
||||
<record id="config_push_advance_minutes" model="ir.config_parameter">
|
||||
<field name="key">fusion_claims.push_advance_minutes</field>
|
||||
<field name="value">30</field>
|
||||
</record>
|
||||
|
||||
<!-- Field Mappings (defaults for fresh installs) -->
|
||||
<record id="config_field_sale_type" model="ir.config_parameter">
|
||||
<field name="key">fusion_claims.field_sale_type</field>
|
||||
<field name="value">x_fc_sale_type</field>
|
||||
</record>
|
||||
<record id="config_field_so_client_type" model="ir.config_parameter">
|
||||
<field name="key">fusion_claims.field_so_client_type</field>
|
||||
<field name="value">x_fc_client_type</field>
|
||||
</record>
|
||||
<record id="config_field_so_authorizer" model="ir.config_parameter">
|
||||
<field name="key">fusion_claims.field_so_authorizer</field>
|
||||
<field name="value">x_fc_authorizer_id</field>
|
||||
</record>
|
||||
<record id="config_field_invoice_type" model="ir.config_parameter">
|
||||
<field name="key">fusion_claims.field_invoice_type</field>
|
||||
<field name="value">x_fc_invoice_type</field>
|
||||
</record>
|
||||
<record id="config_field_inv_client_type" model="ir.config_parameter">
|
||||
<field name="key">fusion_claims.field_inv_client_type</field>
|
||||
<field name="value">x_fc_client_type</field>
|
||||
</record>
|
||||
<record id="config_field_inv_authorizer" model="ir.config_parameter">
|
||||
<field name="key">fusion_claims.field_inv_authorizer</field>
|
||||
<field name="value">x_fc_authorizer_id</field>
|
||||
</record>
|
||||
<record id="config_field_product_code" model="ir.config_parameter">
|
||||
<field name="key">fusion_claims.field_product_code</field>
|
||||
<field name="value">x_fc_adp_device_code</field>
|
||||
</record>
|
||||
<record id="config_field_sol_serial" model="ir.config_parameter">
|
||||
<field name="key">fusion_claims.field_sol_serial</field>
|
||||
<field name="value">x_fc_serial_number</field>
|
||||
</record>
|
||||
<record id="config_field_aml_serial" model="ir.config_parameter">
|
||||
<field name="key">fusion_claims.field_aml_serial</field>
|
||||
<field name="value">x_fc_serial_number</field>
|
||||
</record>
|
||||
|
||||
<!-- March of Dimes -->
|
||||
<record id="config_mod_default_email" model="ir.config_parameter">
|
||||
<field name="key">fusion_claims.mod_default_email</field>
|
||||
<field name="value">hvmp@marchofdimes.ca</field>
|
||||
</record>
|
||||
|
||||
<!-- Twilio SMS -->
|
||||
<record id="config_twilio_enabled" model="ir.config_parameter">
|
||||
<field name="key">fusion_claims.twilio_enabled</field>
|
||||
<field name="value">False</field>
|
||||
</record>
|
||||
<record id="config_twilio_account_sid" model="ir.config_parameter">
|
||||
<field name="key">fusion_claims.twilio_account_sid</field>
|
||||
<field name="value"></field>
|
||||
</record>
|
||||
<record id="config_twilio_auth_token" model="ir.config_parameter">
|
||||
<field name="key">fusion_claims.twilio_auth_token</field>
|
||||
<field name="value"></field>
|
||||
</record>
|
||||
<record id="config_twilio_phone_number" model="ir.config_parameter">
|
||||
<field name="key">fusion_claims.twilio_phone_number</field>
|
||||
<field name="value"></field>
|
||||
</record>
|
||||
|
||||
<!-- MOD Follow-up Settings -->
|
||||
<record id="config_mod_followup_interval" model="ir.config_parameter">
|
||||
<field name="key">fusion_claims.mod_followup_interval_days</field>
|
||||
<field name="value">14</field>
|
||||
</record>
|
||||
<record id="config_mod_followup_escalation" model="ir.config_parameter">
|
||||
<field name="key">fusion_claims.mod_followup_escalation_days</field>
|
||||
<field name="value">3</field>
|
||||
</record>
|
||||
|
||||
<!-- ODSP Settings -->
|
||||
<record id="config_sa_mobility_email" model="ir.config_parameter">
|
||||
<field name="key">fusion_claims.sa_mobility_email</field>
|
||||
<field name="value">samobility@ontario.ca</field>
|
||||
</record>
|
||||
<record id="config_sa_mobility_phone" model="ir.config_parameter">
|
||||
<field name="key">fusion_claims.sa_mobility_phone</field>
|
||||
<field name="value">1-888-222-5099</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
160
fusion_claims/data/ir_cron_data.xml
Normal file
160
fusion_claims/data/ir_cron_data.xml
Normal file
@@ -0,0 +1,160 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
Copyright 2024-2025 Nexa Systems Inc.
|
||||
License OPL-1 (Odoo Proprietary License v1.0)
|
||||
Part of the Fusion Claim Assistant product family.
|
||||
-->
|
||||
<odoo>
|
||||
<data>
|
||||
<!-- Cron Job: Sync ADP Fields from Sale Orders to Invoices -->
|
||||
<record id="ir_cron_sync_adp_fields" model="ir.cron">
|
||||
<field name="name">Fusion Claims: Sync ADP Fields</field>
|
||||
<field name="model_id" ref="sale.model_sale_order"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">model._cron_sync_adp_fields()</field>
|
||||
<field name="interval_number">1</field>
|
||||
<field name="interval_type">hours</field>
|
||||
</record>
|
||||
|
||||
<!-- Cron Job: Renew ADP Delivery Reminders -->
|
||||
<record id="ir_cron_renew_delivery_reminders" model="ir.cron">
|
||||
<field name="name">Fusion Claims: Renew Delivery Reminders</field>
|
||||
<field name="model_id" ref="sale.model_sale_order"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">model._cron_renew_delivery_reminders()</field>
|
||||
<field name="interval_number">1</field>
|
||||
<field name="interval_type">days</field>
|
||||
<field name="active">True</field>
|
||||
</record>
|
||||
|
||||
<!-- Cron Job: Renew ADP Billing Reminders -->
|
||||
<record id="ir_cron_renew_billing_reminders" model="ir.cron">
|
||||
<field name="name">Fusion Claims: Renew Billing Reminders</field>
|
||||
<field name="model_id" ref="account.model_account_move"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">model._cron_renew_billing_reminders()</field>
|
||||
<field name="interval_number">1</field>
|
||||
<field name="interval_type">days</field>
|
||||
<field name="active">True</field>
|
||||
</record>
|
||||
|
||||
<!-- Cron Job: Renew ADP Correction Reminders -->
|
||||
<record id="ir_cron_renew_correction_reminders" model="ir.cron">
|
||||
<field name="name">Fusion Claims: Renew Correction Reminders</field>
|
||||
<field name="model_id" ref="account.model_account_move"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">model._cron_renew_correction_reminders()</field>
|
||||
<field name="interval_number">1</field>
|
||||
<field name="interval_type">days</field>
|
||||
<field name="active">True</field>
|
||||
</record>
|
||||
|
||||
<!-- Cron Job: Auto-Close Cases (1 month after billed) -->
|
||||
<record id="ir_cron_auto_close_cases" model="ir.cron">
|
||||
<field name="name">Fusion Claims: Auto-Close Billed Cases</field>
|
||||
<field name="model_id" ref="sale.model_sale_order"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">model._cron_auto_close_billed_cases()</field>
|
||||
<field name="interval_number">1</field>
|
||||
<field name="interval_type">days</field>
|
||||
<field name="active">True</field>
|
||||
</record>
|
||||
|
||||
<!-- Cron Job: Auto-Close ODSP Cases (7 days after payment received) -->
|
||||
<record id="ir_cron_auto_close_odsp_paid" model="ir.cron">
|
||||
<field name="name">Fusion Claims: Auto-Close ODSP Paid Cases</field>
|
||||
<field name="model_id" ref="sale.model_sale_order"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">model._cron_auto_close_odsp_paid_cases()</field>
|
||||
<field name="interval_number">1</field>
|
||||
<field name="interval_type">days</field>
|
||||
<field name="active">True</field>
|
||||
</record>
|
||||
|
||||
<!-- Cron Job: Send Application Reminder Emails (4 days after assessment) -->
|
||||
<record id="ir_cron_application_reminder" model="ir.cron">
|
||||
<field name="name">Fusion Claims: First Application Reminder</field>
|
||||
<field name="model_id" ref="sale.model_sale_order"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">model._cron_send_application_reminders()</field>
|
||||
<field name="interval_number">1</field>
|
||||
<field name="interval_type">days</field>
|
||||
<field name="active">True</field>
|
||||
<field name="nextcall" eval="DateTime.now().replace(hour=9, minute=0, second=0)"/>
|
||||
</record>
|
||||
|
||||
<!-- Cron Job: Send Second Application Reminder Emails (X days after first reminder) -->
|
||||
<record id="ir_cron_application_reminder_2" model="ir.cron">
|
||||
<field name="name">Fusion Claims: Second Application Reminder</field>
|
||||
<field name="model_id" ref="sale.model_sale_order"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">model._cron_send_application_reminders_2()</field>
|
||||
<field name="interval_number">1</field>
|
||||
<field name="interval_type">days</field>
|
||||
<field name="active">True</field>
|
||||
<field name="nextcall" eval="DateTime.now().replace(hour=9, minute=0, second=0)"/>
|
||||
</record>
|
||||
|
||||
<!-- Cron Job: Acceptance Reminder Emails (next business day after submission) -->
|
||||
<record id="ir_cron_acceptance_reminder" model="ir.cron">
|
||||
<field name="name">Fusion Claims: Acceptance Reminder Emails</field>
|
||||
<field name="model_id" ref="sale.model_sale_order"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">model._cron_send_acceptance_reminders()</field>
|
||||
<field name="interval_number">1</field>
|
||||
<field name="interval_type">days</field>
|
||||
<field name="active">True</field>
|
||||
<field name="nextcall" eval="DateTime.now().replace(hour=9, minute=0, second=0)"/>
|
||||
</record>
|
||||
|
||||
<!-- Cron Job: Loaner Equipment Reminders - moved to separate file after views -->
|
||||
<!-- Will be added via ir_cron_loaner_data.xml -->
|
||||
|
||||
<!-- Cron Job: MOD Bi-weekly Follow-up Scheduler -->
|
||||
<record id="ir_cron_mod_followup_scheduler" model="ir.cron">
|
||||
<field name="name">Fusion Claims: MOD Follow-up Scheduler</field>
|
||||
<field name="model_id" ref="sale.model_sale_order"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">model._cron_mod_schedule_followups()</field>
|
||||
<field name="interval_number">1</field>
|
||||
<field name="interval_type">days</field>
|
||||
<field name="active">True</field>
|
||||
<field name="nextcall" eval="DateTime.now().replace(hour=8, minute=0, second=0)"/>
|
||||
</record>
|
||||
|
||||
<!-- Cron Job: MOD Follow-up Escalation (auto-email when activity overdue) -->
|
||||
<record id="ir_cron_mod_followup_escalation" model="ir.cron">
|
||||
<field name="name">Fusion Claims: MOD Follow-up Escalation</field>
|
||||
<field name="model_id" ref="sale.model_sale_order"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">model._cron_mod_escalate_followups()</field>
|
||||
<field name="interval_number">1</field>
|
||||
<field name="interval_type">days</field>
|
||||
<field name="active">True</field>
|
||||
<field name="nextcall" eval="DateTime.now().replace(hour=10, minute=0, second=0)"/>
|
||||
</record>
|
||||
|
||||
<!-- Cron Job: Calculate Travel Times for Technician Tasks -->
|
||||
<record id="ir_cron_technician_travel_times" model="ir.cron">
|
||||
<field name="name">Fusion Claims: Calculate Technician Travel Times</field>
|
||||
<field name="model_id" ref="model_fusion_technician_task"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">model._cron_calculate_travel_times()</field>
|
||||
<field name="interval_number">1</field>
|
||||
<field name="interval_type">days</field>
|
||||
<field name="active">True</field>
|
||||
<field name="nextcall" eval="DateTime.now().replace(hour=5, minute=0, second=0)"/>
|
||||
</record>
|
||||
|
||||
<!-- Cron Job: Send Push Notifications for Upcoming Tasks -->
|
||||
<record id="ir_cron_technician_push_notifications" model="ir.cron">
|
||||
<field name="name">Fusion Claims: Technician Push Notifications</field>
|
||||
<field name="model_id" ref="model_fusion_technician_task"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">model._cron_send_push_notifications()</field>
|
||||
<field name="interval_number">15</field>
|
||||
<field name="interval_type">minutes</field>
|
||||
<field name="active">True</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
55
fusion_claims/data/mail_activity_type_data.xml
Normal file
55
fusion_claims/data/mail_activity_type_data.xml
Normal file
@@ -0,0 +1,55 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
Copyright 2024-2025 Nexa Systems Inc.
|
||||
License OPL-1 (Odoo Proprietary License v1.0)
|
||||
Part of the Fusion Claim Assistant product family.
|
||||
-->
|
||||
<odoo>
|
||||
<!-- ADP Delivery Reminder Activity Type -->
|
||||
<record id="mail_activity_type_adp_delivery" model="mail.activity.type">
|
||||
<field name="name">ADP Delivery Reminder</field>
|
||||
<field name="summary">Complete delivery for ADP billing</field>
|
||||
<field name="icon">fa-truck</field>
|
||||
<field name="delay_count">0</field>
|
||||
<field name="delay_unit">days</field>
|
||||
<field name="res_model">sale.order</field>
|
||||
<field name="category">default</field>
|
||||
<field name="decoration_type">warning</field>
|
||||
</record>
|
||||
|
||||
<!-- ADP Billing Deadline Activity Type -->
|
||||
<record id="mail_activity_type_adp_billing" model="mail.activity.type">
|
||||
<field name="name">ADP Billing Deadline</field>
|
||||
<field name="summary">Complete ADP billing by Wednesday 6 PM</field>
|
||||
<field name="icon">fa-file-invoice-dollar</field>
|
||||
<field name="delay_count">0</field>
|
||||
<field name="delay_unit">days</field>
|
||||
<field name="res_model">account.move</field>
|
||||
<field name="category">default</field>
|
||||
<field name="decoration_type">warning</field>
|
||||
</record>
|
||||
|
||||
<!-- ADP Correction Required Activity Type -->
|
||||
<record id="mail_activity_type_adp_correction" model="mail.activity.type">
|
||||
<field name="name">ADP Correction Required</field>
|
||||
<field name="summary">Invoice needs correction and resubmission</field>
|
||||
<field name="icon">fa-exclamation-triangle</field>
|
||||
<field name="delay_count">0</field>
|
||||
<field name="delay_unit">days</field>
|
||||
<field name="res_model">account.move</field>
|
||||
<field name="category">default</field>
|
||||
<field name="decoration_type">danger</field>
|
||||
</record>
|
||||
|
||||
<!-- MOD Follow-up Call Activity Type -->
|
||||
<record id="mail_activity_type_mod_followup" model="mail.activity.type">
|
||||
<field name="name">MOD Follow-up Call</field>
|
||||
<field name="summary">Call client for March of Dimes case update</field>
|
||||
<field name="icon">fa-phone</field>
|
||||
<field name="delay_count">14</field>
|
||||
<field name="delay_unit">days</field>
|
||||
<field name="res_model">sale.order</field>
|
||||
<field name="category">default</field>
|
||||
<field name="decoration_type">warning</field>
|
||||
</record>
|
||||
</odoo>
|
||||
203
fusion_claims/data/mail_template_data.xml
Normal file
203
fusion_claims/data/mail_template_data.xml
Normal file
@@ -0,0 +1,203 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
Copyright 2024-2025 Nexa Systems Inc.
|
||||
License OPL-1 (Odoo Proprietary License v1.0)
|
||||
Part of the Fusion Claim Assistant product family.
|
||||
|
||||
Email templates for ADP sales with landscape reports.
|
||||
Design: Professional, dark/light mode safe, anti-spam friendly.
|
||||
-->
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
|
||||
<!-- =============================================================== -->
|
||||
<!-- ADP Quotation Email Template (Landscape Report) -->
|
||||
<!-- =============================================================== -->
|
||||
<record id="email_template_adp_quotation" model="mail.template">
|
||||
<field name="name">ADP: Send Quotation (Landscape)</field>
|
||||
<field name="model_id" ref="sale.model_sale_order"/>
|
||||
<field name="subject">{{ object.company_id.name }} - Quotation {{ object.name or 'n/a' }}</field>
|
||||
<field name="email_from">{{ (object.user_id.email_formatted or object.company_id.email_formatted or user.email_formatted) }}</field>
|
||||
<field name="partner_to">{{ object.partner_id.id }}</field>
|
||||
<field name="body_html" type="html">
|
||||
<div style="font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Arial,sans-serif;max-width:600px;margin:0 auto;color:#2d3748;">
|
||||
<div style="height:4px;background-color:#2B6CB0;"></div>
|
||||
<div style="background:#ffffff;padding:32px 28px;border:1px solid #e2e8f0;border-top:none;">
|
||||
<p style="color:#2B6CB0;font-size:13px;font-weight:600;letter-spacing:0.5px;text-transform:uppercase;margin:0 0 24px 0;">
|
||||
<t t-out="object.company_id.name"/>
|
||||
</p>
|
||||
<h2 style="color:#1a202c;font-size:22px;font-weight:700;margin:0 0 6px 0;line-height:1.3;">ADP Quotation</h2>
|
||||
<p style="color:#718096;font-size:15px;line-height:1.5;margin:0 0 24px 0;">
|
||||
Please find attached your quotation <strong style="color:#2d3748;"><t t-out="object.name"/></strong>.
|
||||
</p>
|
||||
<table style="width:100%;border-collapse:collapse;margin:0 0 24px 0;">
|
||||
<tr><td colspan="2" style="padding:10px 14px;font-size:12px;font-weight:600;color:#718096;text-transform:uppercase;letter-spacing:0.5px;border-bottom:2px solid #e2e8f0;">Quotation Details</td></tr>
|
||||
<tr><td style="padding:10px 14px;color:#718096;font-size:14px;border-bottom:1px solid #f0f0f0;width:35%;">Reference</td><td style="padding:10px 14px;color:#2d3748;font-size:14px;border-bottom:1px solid #f0f0f0;"><t t-out="object.name"/></td></tr>
|
||||
<tr><td style="padding:10px 14px;color:#718096;font-size:14px;border-bottom:1px solid #f0f0f0;">Date</td><td style="padding:10px 14px;color:#2d3748;font-size:14px;border-bottom:1px solid #f0f0f0;"><t t-out="object.date_order" t-options="{'widget': 'date'}"/></td></tr>
|
||||
<t t-if="object.x_fc_authorizer_id">
|
||||
<tr><td style="padding:10px 14px;color:#718096;font-size:14px;border-bottom:1px solid #f0f0f0;">Authorizer</td><td style="padding:10px 14px;color:#2d3748;font-size:14px;border-bottom:1px solid #f0f0f0;"><t t-out="object.x_fc_authorizer_id.name"/></td></tr>
|
||||
</t>
|
||||
<t t-if="object.x_fc_client_type == 'REG'">
|
||||
<tr><td style="padding:10px 14px;color:#718096;font-size:14px;border-bottom:1px solid #f0f0f0;">Client Portion (25%)</td><td style="padding:10px 14px;color:#2d3748;font-size:14px;border-bottom:1px solid #f0f0f0;"><t t-out="object.x_fc_client_portion_total" t-options="{'widget': 'monetary', 'display_currency': object.currency_id}"/></td></tr>
|
||||
<tr><td style="padding:10px 14px;color:#718096;font-size:14px;border-bottom:1px solid #f0f0f0;">ADP Portion (75%)</td><td style="padding:10px 14px;color:#2d3748;font-size:14px;border-bottom:1px solid #f0f0f0;"><t t-out="object.x_fc_adp_portion_total" t-options="{'widget': 'monetary', 'display_currency': object.currency_id}"/></td></tr>
|
||||
</t>
|
||||
<tr><td style="padding:10px 14px;color:#718096;font-size:14px;font-weight:600;border-top:2px solid #e2e8f0;">Total</td><td style="padding:10px 14px;color:#2B6CB0;font-size:14px;font-weight:700;border-top:2px solid #e2e8f0;"><t t-out="object.amount_total" t-options="{'widget': 'monetary', 'display_currency': object.currency_id}"/></td></tr>
|
||||
</table>
|
||||
<div style="padding:10px 14px;border:1px dashed #e2e8f0;border-radius:6px;margin:0 0 24px 0;">
|
||||
<p style="margin:0;font-size:13px;color:#718096;"><strong style="color:#2d3748;">Attached:</strong> ADP Quotation (PDF)</p>
|
||||
</div>
|
||||
<div style="border-left:3px solid #2B6CB0;padding:12px 16px;margin:0 0 24px 0;background:#f7fafc;">
|
||||
<p style="margin:0;font-size:14px;line-height:1.5;color:#2d3748;">Please review the attached quotation. If you have any questions or need assistance, do not hesitate to contact us.</p>
|
||||
</div>
|
||||
<p style="color:#2d3748;font-size:14px;line-height:1.6;margin:24px 0 0 0;">
|
||||
Best regards,<br/>
|
||||
<strong><t t-out="object.user_id.name or object.company_id.name"/></strong><br/>
|
||||
<span style="color:#718096;"><t t-out="object.company_id.name"/></span>
|
||||
</p>
|
||||
</div>
|
||||
<div style="padding:16px 28px;text-align:center;">
|
||||
<p style="color:#a0aec0;font-size:11px;line-height:1.5;margin:0;">
|
||||
<t t-out="object.company_id.name"/>
|
||||
<t t-if="object.company_id.phone"> · <t t-out="object.company_id.phone"/></t>
|
||||
<t t-if="object.company_id.email"> · <t t-out="object.company_id.email"/></t><br/>
|
||||
This is an automated notification from the ADP Claims Management System.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</field>
|
||||
<field name="lang">{{ object.partner_id.lang }}</field>
|
||||
<field name="auto_delete" eval="True"/>
|
||||
<field name="report_template_ids" eval="[(4, ref('fusion_claims.action_report_saleorder_landscape'))]"/>
|
||||
</record>
|
||||
|
||||
<!-- =============================================================== -->
|
||||
<!-- ADP Sales Order Confirmation Email Template -->
|
||||
<!-- =============================================================== -->
|
||||
<record id="email_template_adp_sales_order" model="mail.template">
|
||||
<field name="name">ADP: Sales Order Confirmation (Landscape)</field>
|
||||
<field name="model_id" ref="sale.model_sale_order"/>
|
||||
<field name="subject">{{ object.company_id.name }} - Order Confirmation {{ object.name or 'n/a' }}</field>
|
||||
<field name="email_from">{{ (object.user_id.email_formatted or object.company_id.email_formatted or user.email_formatted) }}</field>
|
||||
<field name="partner_to">{{ object.partner_id.id }}</field>
|
||||
<field name="body_html" type="html">
|
||||
<div style="font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Arial,sans-serif;max-width:600px;margin:0 auto;color:#2d3748;">
|
||||
<div style="height:4px;background-color:#38a169;"></div>
|
||||
<div style="background:#ffffff;padding:32px 28px;border:1px solid #e2e8f0;border-top:none;">
|
||||
<p style="color:#38a169;font-size:13px;font-weight:600;letter-spacing:0.5px;text-transform:uppercase;margin:0 0 24px 0;">
|
||||
<t t-out="object.company_id.name"/>
|
||||
</p>
|
||||
<h2 style="color:#1a202c;font-size:22px;font-weight:700;margin:0 0 6px 0;line-height:1.3;">Order Confirmed</h2>
|
||||
<p style="color:#718096;font-size:15px;line-height:1.5;margin:0 0 24px 0;">
|
||||
Your ADP sales order <strong style="color:#2d3748;"><t t-out="object.name"/></strong> has been confirmed.
|
||||
</p>
|
||||
<table style="width:100%;border-collapse:collapse;margin:0 0 24px 0;">
|
||||
<tr><td colspan="2" style="padding:10px 14px;font-size:12px;font-weight:600;color:#718096;text-transform:uppercase;letter-spacing:0.5px;border-bottom:2px solid #e2e8f0;">Order Details</td></tr>
|
||||
<tr><td style="padding:10px 14px;color:#718096;font-size:14px;border-bottom:1px solid #f0f0f0;width:35%;">Reference</td><td style="padding:10px 14px;color:#2d3748;font-size:14px;border-bottom:1px solid #f0f0f0;"><t t-out="object.name"/></td></tr>
|
||||
<tr><td style="padding:10px 14px;color:#718096;font-size:14px;border-bottom:1px solid #f0f0f0;">Date</td><td style="padding:10px 14px;color:#2d3748;font-size:14px;border-bottom:1px solid #f0f0f0;"><t t-out="object.date_order" t-options="{'widget': 'date'}"/></td></tr>
|
||||
<t t-if="object.x_fc_authorizer_id">
|
||||
<tr><td style="padding:10px 14px;color:#718096;font-size:14px;border-bottom:1px solid #f0f0f0;">Authorizer</td><td style="padding:10px 14px;color:#2d3748;font-size:14px;border-bottom:1px solid #f0f0f0;"><t t-out="object.x_fc_authorizer_id.name"/></td></tr>
|
||||
</t>
|
||||
<t t-if="object.x_fc_client_type == 'REG'">
|
||||
<tr><td style="padding:10px 14px;color:#718096;font-size:14px;border-bottom:1px solid #f0f0f0;">Client Portion (25%)</td><td style="padding:10px 14px;color:#2d3748;font-size:14px;border-bottom:1px solid #f0f0f0;"><t t-out="object.x_fc_client_portion_total" t-options="{'widget': 'monetary', 'display_currency': object.currency_id}"/></td></tr>
|
||||
<tr><td style="padding:10px 14px;color:#718096;font-size:14px;border-bottom:1px solid #f0f0f0;">ADP Portion (75%)</td><td style="padding:10px 14px;color:#2d3748;font-size:14px;border-bottom:1px solid #f0f0f0;"><t t-out="object.x_fc_adp_portion_total" t-options="{'widget': 'monetary', 'display_currency': object.currency_id}"/></td></tr>
|
||||
</t>
|
||||
<tr><td style="padding:10px 14px;color:#718096;font-size:14px;font-weight:600;border-top:2px solid #e2e8f0;">Total</td><td style="padding:10px 14px;color:#38a169;font-size:14px;font-weight:700;border-top:2px solid #e2e8f0;"><t t-out="object.amount_total" t-options="{'widget': 'monetary', 'display_currency': object.currency_id}"/></td></tr>
|
||||
</table>
|
||||
<div style="padding:10px 14px;border:1px dashed #e2e8f0;border-radius:6px;margin:0 0 24px 0;">
|
||||
<p style="margin:0;font-size:13px;color:#718096;"><strong style="color:#2d3748;">Attached:</strong> Sales Order Confirmation (PDF)</p>
|
||||
</div>
|
||||
<div style="border-left:3px solid #38a169;padding:12px 16px;margin:0 0 24px 0;background:#f7fafc;">
|
||||
<p style="margin:0;font-size:14px;line-height:1.5;color:#2d3748;">Your order is being processed. We will keep you updated on the delivery status and any updates from the Assistive Devices Program.</p>
|
||||
</div>
|
||||
<p style="color:#2d3748;font-size:14px;line-height:1.6;margin:24px 0 0 0;">
|
||||
Best regards,<br/>
|
||||
<strong><t t-out="object.user_id.name or object.company_id.name"/></strong><br/>
|
||||
<span style="color:#718096;"><t t-out="object.company_id.name"/></span>
|
||||
</p>
|
||||
</div>
|
||||
<div style="padding:16px 28px;text-align:center;">
|
||||
<p style="color:#a0aec0;font-size:11px;line-height:1.5;margin:0;">
|
||||
<t t-out="object.company_id.name"/>
|
||||
<t t-if="object.company_id.phone"> · <t t-out="object.company_id.phone"/></t>
|
||||
<t t-if="object.company_id.email"> · <t t-out="object.company_id.email"/></t><br/>
|
||||
This is an automated notification from the ADP Claims Management System.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</field>
|
||||
<field name="lang">{{ object.partner_id.lang }}</field>
|
||||
<field name="auto_delete" eval="True"/>
|
||||
<field name="report_template_ids" eval="[(4, ref('fusion_claims.action_report_saleorder_landscape'))]"/>
|
||||
</record>
|
||||
|
||||
<!-- =============================================================== -->
|
||||
<!-- ADP Client Invoice Email Template -->
|
||||
<!-- =============================================================== -->
|
||||
<record id="email_template_adp_invoice" model="mail.template">
|
||||
<field name="name">ADP: Send Invoice (Landscape)</field>
|
||||
<field name="model_id" ref="account.model_account_move"/>
|
||||
<field name="subject">{{ object.company_id.name }} - Invoice {{ object.name or 'Draft' }}</field>
|
||||
<field name="email_from">{{ (object.invoice_user_id.email_formatted or object.company_id.email_formatted or user.email_formatted) }}</field>
|
||||
<field name="partner_to">{{ object.partner_id.id }}</field>
|
||||
<field name="body_html" type="html">
|
||||
<div style="font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Arial,sans-serif;max-width:600px;margin:0 auto;color:#2d3748;">
|
||||
<div style="height:4px;background-color:#2B6CB0;"></div>
|
||||
<div style="background:#ffffff;padding:32px 28px;border:1px solid #e2e8f0;border-top:none;">
|
||||
<p style="color:#2B6CB0;font-size:13px;font-weight:600;letter-spacing:0.5px;text-transform:uppercase;margin:0 0 24px 0;">
|
||||
<t t-out="object.company_id.name"/>
|
||||
</p>
|
||||
<h2 style="color:#1a202c;font-size:22px;font-weight:700;margin:0 0 6px 0;line-height:1.3;">Invoice</h2>
|
||||
<p style="color:#718096;font-size:15px;line-height:1.5;margin:0 0 24px 0;">
|
||||
Please find attached your invoice <strong style="color:#2d3748;"><t t-out="object.name or 'Draft'"/></strong>.
|
||||
</p>
|
||||
<table style="width:100%;border-collapse:collapse;margin:0 0 24px 0;">
|
||||
<tr><td colspan="2" style="padding:10px 14px;font-size:12px;font-weight:600;color:#718096;text-transform:uppercase;letter-spacing:0.5px;border-bottom:2px solid #e2e8f0;">Invoice Details</td></tr>
|
||||
<tr><td style="padding:10px 14px;color:#718096;font-size:14px;border-bottom:1px solid #f0f0f0;width:35%;">Invoice</td><td style="padding:10px 14px;color:#2d3748;font-size:14px;border-bottom:1px solid #f0f0f0;"><t t-out="object.name or 'Draft'"/></td></tr>
|
||||
<tr><td style="padding:10px 14px;color:#718096;font-size:14px;border-bottom:1px solid #f0f0f0;">Date</td><td style="padding:10px 14px;color:#2d3748;font-size:14px;border-bottom:1px solid #f0f0f0;"><t t-out="object.invoice_date" t-options="{'widget': 'date'}"/></td></tr>
|
||||
<t t-if="object.invoice_date_due">
|
||||
<tr><td style="padding:10px 14px;color:#718096;font-size:14px;border-bottom:1px solid #f0f0f0;">Due Date</td><td style="padding:10px 14px;color:#2d3748;font-size:14px;border-bottom:1px solid #f0f0f0;"><t t-out="object.invoice_date_due" t-options="{'widget': 'date'}"/></td></tr>
|
||||
</t>
|
||||
<t t-if="object.x_fc_adp_invoice_portion">
|
||||
<tr><td style="padding:10px 14px;color:#718096;font-size:14px;border-bottom:1px solid #f0f0f0;">Type</td><td style="padding:10px 14px;color:#2d3748;font-size:14px;border-bottom:1px solid #f0f0f0;">
|
||||
<t t-if="object.x_fc_adp_invoice_portion == 'client'">Client Portion</t>
|
||||
<t t-if="object.x_fc_adp_invoice_portion == 'adp'">ADP Portion</t>
|
||||
</td></tr>
|
||||
</t>
|
||||
<tr><td style="padding:10px 14px;color:#718096;font-size:14px;font-weight:600;border-top:2px solid #e2e8f0;">Amount Due</td><td style="padding:10px 14px;color:#2B6CB0;font-size:14px;font-weight:700;border-top:2px solid #e2e8f0;"><t t-out="object.amount_residual" t-options="{'widget': 'monetary', 'display_currency': object.currency_id}"/></td></tr>
|
||||
</table>
|
||||
<div style="padding:10px 14px;border:1px dashed #e2e8f0;border-radius:6px;margin:0 0 24px 0;">
|
||||
<p style="margin:0;font-size:13px;color:#718096;"><strong style="color:#2d3748;">Attached:</strong> Invoice (PDF)</p>
|
||||
</div>
|
||||
<t t-if="object.x_fc_adp_invoice_portion == 'client'">
|
||||
<div style="border-left:3px solid #2B6CB0;padding:12px 16px;margin:0 0 24px 0;background:#f7fafc;">
|
||||
<p style="margin:0;font-size:14px;line-height:1.5;color:#2d3748;">This invoice represents your client portion for the ADP-funded equipment. The remaining amount will be billed directly to the Assistive Devices Program.</p>
|
||||
</div>
|
||||
</t>
|
||||
<t t-else="">
|
||||
<div style="border-left:3px solid #2B6CB0;padding:12px 16px;margin:0 0 24px 0;background:#f7fafc;">
|
||||
<p style="margin:0;font-size:14px;line-height:1.5;color:#2d3748;">Please review the attached invoice and process payment at your earliest convenience. Contact us if you have any questions.</p>
|
||||
</div>
|
||||
</t>
|
||||
<p style="color:#2d3748;font-size:14px;line-height:1.6;margin:24px 0 0 0;">
|
||||
Best regards,<br/>
|
||||
<strong><t t-out="object.invoice_user_id.name or object.company_id.name"/></strong><br/>
|
||||
<span style="color:#718096;"><t t-out="object.company_id.name"/></span>
|
||||
</p>
|
||||
</div>
|
||||
<div style="padding:16px 28px;text-align:center;">
|
||||
<p style="color:#a0aec0;font-size:11px;line-height:1.5;margin:0;">
|
||||
<t t-out="object.company_id.name"/>
|
||||
<t t-if="object.company_id.phone"> · <t t-out="object.company_id.phone"/></t>
|
||||
<t t-if="object.company_id.email"> · <t t-out="object.company_id.email"/></t><br/>
|
||||
This is an automated notification from the ADP Claims Management System.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</field>
|
||||
<field name="lang">{{ object.partner_id.lang }}</field>
|
||||
<field name="auto_delete" eval="True"/>
|
||||
<field name="report_template_ids" eval="[(4, ref('fusion_claims.action_report_invoice_landscape'))]"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
18
fusion_claims/data/pdf_template_data.xml
Normal file
18
fusion_claims/data/pdf_template_data.xml
Normal file
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<record id="sa_sig_template_default" model="fusion.sa.signature.template">
|
||||
<field name="name">SA Mobility Standard</field>
|
||||
<field name="notes">Default signature positions for SA Mobility approval forms from ODSP.</field>
|
||||
<field name="sa_default_sig_page">2</field>
|
||||
<field name="sa_sig_name_x">105</field>
|
||||
<field name="sa_sig_name_y">97</field>
|
||||
<field name="sa_sig_date_x">430</field>
|
||||
<field name="sa_sig_date_y">97</field>
|
||||
<field name="sa_sig_x">72</field>
|
||||
<field name="sa_sig_y">72</field>
|
||||
<field name="sa_sig_w">190</field>
|
||||
<field name="sa_sig_h">25</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
15
fusion_claims/data/product_labor_data.xml
Normal file
15
fusion_claims/data/product_labor_data.xml
Normal file
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<record id="product_labor_hourly" model="product.template">
|
||||
<field name="name">LABOR - CHARGED HOURLY - NON REFUNDABLE</field>
|
||||
<field name="default_code">LABOR</field>
|
||||
<field name="type">service</field>
|
||||
<field name="list_price">75.00</field>
|
||||
<field name="uom_id" ref="uom.product_uom_hour"/>
|
||||
<field name="sale_ok" eval="True"/>
|
||||
<field name="purchase_ok" eval="False"/>
|
||||
<field name="taxes_id" eval="[(6, 0, [ref('account.1_hst_sale_tax_13')])]"/>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
41
fusion_claims/data/stock_location_data.xml
Normal file
41
fusion_claims/data/stock_location_data.xml
Normal file
@@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
Copyright 2024-2026 Nexa Systems Inc.
|
||||
License OPL-1 (Odoo Proprietary License v1.0)
|
||||
Part of the Fusion Claim Assistant product family.
|
||||
-->
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<!-- Loaner Stock Location -->
|
||||
<record id="stock_location_loaner" model="stock.location">
|
||||
<field name="name">Loaner Stock</field>
|
||||
<field name="usage">internal</field>
|
||||
<field name="location_id" ref="stock.stock_location_stock"/>
|
||||
</record>
|
||||
|
||||
<!-- Sequence for Loaner Checkout -->
|
||||
<record id="seq_loaner_checkout" model="ir.sequence">
|
||||
<field name="name">Loaner Checkout Sequence</field>
|
||||
<field name="code">fusion.loaner.checkout</field>
|
||||
<field name="prefix">LOAN/</field>
|
||||
<field name="padding">5</field>
|
||||
<field name="company_id" eval="False"/>
|
||||
</record>
|
||||
<!-- Loaner Product Categories -->
|
||||
<record id="product_category_loaner" model="product.category">
|
||||
<field name="name">Loaner Equipment</field>
|
||||
</record>
|
||||
<record id="product_category_loaner_rollator" model="product.category">
|
||||
<field name="name">Rollators</field>
|
||||
<field name="parent_id" ref="product_category_loaner"/>
|
||||
</record>
|
||||
<record id="product_category_loaner_wheelchair" model="product.category">
|
||||
<field name="name">Wheelchairs</field>
|
||||
<field name="parent_id" ref="product_category_loaner"/>
|
||||
</record>
|
||||
<record id="product_category_loaner_powerchair" model="product.category">
|
||||
<field name="name">Powerchairs</field>
|
||||
<field name="parent_id" ref="product_category_loaner"/>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user