838 lines
62 KiB
XML
838 lines
62 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<odoo noupdate="1">
|
|
<!-- Domain 1: Bank Reconciliation -->
|
|
<record id="tool_get_unreconciled_bank_lines" model="fusion.accounting.tool">
|
|
<field name="name">get_unreconciled_bank_lines</field>
|
|
<field name="display_name_field">Get Unreconciled Bank Lines</field>
|
|
<field name="description">List unreconciled bank statement lines with optional filters for journal, date range, and minimum amount.</field>
|
|
<field name="domain">bank_reconciliation</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"journal_id": {"type": "integer", "description": "Journal ID to filter by"}, "date_from": {"type": "string", "description": "Start date (YYYY-MM-DD)"}, "date_to": {"type": "string", "description": "End date (YYYY-MM-DD)"}, "min_amount": {"type": "number", "description": "Minimum absolute amount"}, "limit": {"type": "integer", "description": "Max records to return", "default": 50}}}</field>
|
|
<field name="odoo_method">account.bank.statement.line.search_read</field>
|
|
</record>
|
|
<record id="tool_get_unreconciled_receipts" model="fusion.accounting.tool">
|
|
<field name="name">get_unreconciled_receipts</field>
|
|
<field name="display_name_field">Get Unreconciled Receipts</field>
|
|
<field name="description">List unreconciled Outstanding Receipts entries on the specified account (default 1122).</field>
|
|
<field name="domain">bank_reconciliation</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"account_code": {"type": "string", "description": "Account code prefix", "default": "1122"}}}</field>
|
|
</record>
|
|
<record id="tool_match_bank_line_to_payments" model="fusion.accounting.tool">
|
|
<field name="name">match_bank_line_to_payments</field>
|
|
<field name="display_name_field">Match Bank Line to Payments</field>
|
|
<field name="description">Match a bank statement line to one or more payment journal items for reconciliation.</field>
|
|
<field name="domain">bank_reconciliation</field>
|
|
<field name="tier">3</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"statement_line_id": {"type": "integer", "description": "Bank statement line ID"}, "move_line_ids": {"type": "array", "items": {"type": "integer"}, "description": "Journal item IDs to match"}}, "required": ["statement_line_id", "move_line_ids"]}</field>
|
|
<field name="required_groups">fusion_accounting_core.group_fusion_accounting_manager</field>
|
|
</record>
|
|
<record id="tool_auto_reconcile_bank_lines" model="fusion.accounting.tool">
|
|
<field name="name">auto_reconcile_bank_lines</field>
|
|
<field name="display_name_field">Auto-Reconcile Bank Lines</field>
|
|
<field name="description">Run Odoo's built-in auto-reconciliation engine on all unreconciled bank statement lines.</field>
|
|
<field name="domain">bank_reconciliation</field>
|
|
<field name="tier">3</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"company_id": {"type": "integer"}}}</field>
|
|
<field name="required_groups">fusion_accounting_core.group_fusion_accounting_manager</field>
|
|
</record>
|
|
<record id="tool_apply_reconcile_model" model="fusion.accounting.tool">
|
|
<field name="name">apply_reconcile_model</field>
|
|
<field name="display_name_field">Apply Reconciliation Model</field>
|
|
<field name="description">Apply a specific reconciliation model to a bank statement line.</field>
|
|
<field name="domain">bank_reconciliation</field>
|
|
<field name="tier">3</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"model_id": {"type": "integer"}, "statement_line_id": {"type": "integer"}}, "required": ["model_id", "statement_line_id"]}</field>
|
|
<field name="required_groups">fusion_accounting_core.group_fusion_accounting_manager</field>
|
|
</record>
|
|
<record id="tool_unmatch_bank_line" model="fusion.accounting.tool">
|
|
<field name="name">unmatch_bank_line</field>
|
|
<field name="display_name_field">Unmatch Bank Line</field>
|
|
<field name="description">Undo a bank statement line reconciliation.</field>
|
|
<field name="domain">bank_reconciliation</field>
|
|
<field name="tier">3</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"statement_line_id": {"type": "integer"}}, "required": ["statement_line_id"]}</field>
|
|
<field name="required_groups">fusion_accounting_core.group_fusion_accounting_manager</field>
|
|
</record>
|
|
<record id="tool_get_reconcile_suggestions" model="fusion.accounting.tool">
|
|
<field name="name">get_reconcile_suggestions</field>
|
|
<field name="display_name_field">Get Reconciliation Suggestions</field>
|
|
<field name="description">Get available reconciliation models for a bank statement line.</field>
|
|
<field name="domain">bank_reconciliation</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"statement_line_id": {"type": "integer"}}, "required": ["statement_line_id"]}</field>
|
|
</record>
|
|
<record id="tool_sum_payments_by_date" model="fusion.accounting.tool">
|
|
<field name="name">sum_payments_by_date</field>
|
|
<field name="display_name_field">Sum Payments by Date</field>
|
|
<field name="description">Sum payment journal items for a date range. IMPORTANT: You MUST pass journal_ids to filter to specific journals (e.g., the card/POS journal). Without journal_ids, returns totals across ALL company journals which will be misleadingly large. Use this to verify card batch deposit amounts against the card payment journal for the prior business day.</field>
|
|
<field name="domain">bank_reconciliation</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"date_from": {"type": "string"}, "date_to": {"type": "string"}, "journal_ids": {"type": "array", "items": {"type": "integer"}}}, "required": ["date_from", "date_to"]}</field>
|
|
</record>
|
|
|
|
<!-- Domain 2: HST/GST Management -->
|
|
<record id="tool_calculate_hst_balance" model="fusion.accounting.tool">
|
|
<field name="name">calculate_hst_balance</field>
|
|
<field name="display_name_field">Calculate HST Balance</field>
|
|
<field name="description">Calculate net HST position (collected minus ITCs) for a period.</field>
|
|
<field name="domain">hst_management</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"date_from": {"type": "string"}, "date_to": {"type": "string"}}}</field>
|
|
</record>
|
|
<record id="tool_get_tax_report" model="fusion.accounting.tool">
|
|
<field name="name">get_tax_report</field>
|
|
<field name="display_name_field">Get Tax Report</field>
|
|
<field name="description">Generate a tax report for a period using Odoo's reporting engine.</field>
|
|
<field name="domain">hst_management</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"date_from": {"type": "string"}, "date_to": {"type": "string"}, "report_ref": {"type": "string", "default": "account.generic_tax_report"}}}</field>
|
|
</record>
|
|
<record id="tool_find_missing_tax_invoices" model="fusion.accounting.tool">
|
|
<field name="name">find_missing_tax_invoices</field>
|
|
<field name="display_name_field">Find Missing Tax Invoices</field>
|
|
<field name="description">Find customer invoices with taxable products but no tax applied.</field>
|
|
<field name="domain">hst_management</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"date_from": {"type": "string"}, "date_to": {"type": "string"}}}</field>
|
|
</record>
|
|
<record id="tool_find_missing_itc_bills" model="fusion.accounting.tool">
|
|
<field name="name">find_missing_itc_bills</field>
|
|
<field name="display_name_field">Find Missing ITC Bills</field>
|
|
<field name="description">Find vendor bills without input tax credits.</field>
|
|
<field name="domain">hst_management</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"date_from": {"type": "string"}, "date_to": {"type": "string"}}}</field>
|
|
</record>
|
|
<record id="tool_get_tax_return_status" model="fusion.accounting.tool">
|
|
<field name="name">get_tax_return_status</field>
|
|
<field name="display_name_field">Get Tax Return Status</field>
|
|
<field name="description">Check the status of periodic tax returns.</field>
|
|
<field name="domain">hst_management</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {}}</field>
|
|
</record>
|
|
<record id="tool_generate_tax_return" model="fusion.accounting.tool">
|
|
<field name="name">generate_tax_return</field>
|
|
<field name="display_name_field">Generate Tax Return</field>
|
|
<field name="description">Refresh all tax return data.</field>
|
|
<field name="domain">hst_management</field>
|
|
<field name="tier">2</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {}}</field>
|
|
<field name="required_groups">fusion_accounting_core.group_fusion_accounting_manager</field>
|
|
</record>
|
|
<record id="tool_validate_tax_return" model="fusion.accounting.tool">
|
|
<field name="name">validate_tax_return</field>
|
|
<field name="display_name_field">Validate Tax Return</field>
|
|
<field name="description">Mark a tax return as validated.</field>
|
|
<field name="domain">hst_management</field>
|
|
<field name="tier">3</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"return_id": {"type": "integer"}}, "required": ["return_id"]}</field>
|
|
<field name="required_groups">fusion_accounting_core.group_fusion_accounting_manager</field>
|
|
</record>
|
|
|
|
<!-- Domain 3: Accounts Receivable -->
|
|
<record id="tool_get_ar_aging" model="fusion.accounting.tool">
|
|
<field name="name">get_ar_aging</field>
|
|
<field name="display_name_field">Get AR Aging</field>
|
|
<field name="description">Get accounts receivable aging buckets (current, 30, 60, 90+ days).</field>
|
|
<field name="domain">accounts_receivable</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {}}</field>
|
|
</record>
|
|
<record id="tool_get_overdue_invoices" model="fusion.accounting.tool">
|
|
<field name="name">get_overdue_invoices</field>
|
|
<field name="display_name_field">Get Overdue Invoices</field>
|
|
<field name="description">List invoices past due with partner contact information.</field>
|
|
<field name="domain">accounts_receivable</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"min_days_overdue": {"type": "integer", "default": 1}, "limit": {"type": "integer", "default": 50}}}</field>
|
|
</record>
|
|
<record id="tool_get_partner_balance" model="fusion.accounting.tool">
|
|
<field name="name">get_partner_balance</field>
|
|
<field name="display_name_field">Get Partner Balance</field>
|
|
<field name="description">[Tier 1: Read-only] Get a partner's AR and AP balance with open items. Shows: how much they owe us (receivable), how much we owe them (payable), and net balance. Use for "how much do we owe Pride Mobility?", "what's the balance for ADP?".</field>
|
|
<field name="domain">accounts_receivable</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"partner_id": {"type": "integer", "description": "Partner ID (optional if partner_name provided)"}, "partner_name": {"type": "string", "description": "Partner name to search for (e.g. 'Pride Mobility')"}}}</field>
|
|
</record>
|
|
<record id="tool_send_followup" model="fusion.accounting.tool">
|
|
<field name="name">send_followup</field>
|
|
<field name="display_name_field">Send Follow-Up</field>
|
|
<field name="description">Draft and send a follow-up email to a partner about overdue invoices.</field>
|
|
<field name="domain">accounts_receivable</field>
|
|
<field name="tier">2</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"partner_id": {"type": "integer"}, "send_email": {"type": "boolean"}, "print_letter": {"type": "boolean"}, "email_subject": {"type": "string"}, "body": {"type": "string"}}, "required": ["partner_id"]}</field>
|
|
<field name="required_groups">fusion_accounting_core.group_fusion_accounting_manager</field>
|
|
</record>
|
|
<record id="tool_get_followup_report" model="fusion.accounting.tool">
|
|
<field name="name">get_followup_report</field>
|
|
<field name="display_name_field">Get Follow-Up Report</field>
|
|
<field name="description">Get the HTML follow-up report for a partner.</field>
|
|
<field name="domain">accounts_receivable</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"partner_id": {"type": "integer"}}, "required": ["partner_id"]}</field>
|
|
</record>
|
|
<record id="tool_reconcile_payment_to_invoice" model="fusion.accounting.tool">
|
|
<field name="name">reconcile_payment_to_invoice</field>
|
|
<field name="display_name_field">Reconcile Payment to Invoice</field>
|
|
<field name="description">Match a payment to an invoice by reconciling journal items.</field>
|
|
<field name="domain">accounts_receivable</field>
|
|
<field name="tier">3</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"move_line_ids": {"type": "array", "items": {"type": "integer"}}}, "required": ["move_line_ids"]}</field>
|
|
<field name="required_groups">fusion_accounting_core.group_fusion_accounting_manager</field>
|
|
</record>
|
|
<record id="tool_get_unmatched_payments" model="fusion.accounting.tool">
|
|
<field name="name">get_unmatched_payments</field>
|
|
<field name="display_name_field">Get Unmatched Payments</field>
|
|
<field name="description">List payments not matched to invoices.</field>
|
|
<field name="domain">accounts_receivable</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {}}</field>
|
|
</record>
|
|
|
|
<!-- Domain 4: Accounts Payable -->
|
|
<record id="tool_get_ap_aging" model="fusion.accounting.tool">
|
|
<field name="name">get_ap_aging</field>
|
|
<field name="display_name_field">Get AP Aging</field>
|
|
<field name="description">Get accounts payable aging buckets.</field>
|
|
<field name="domain">accounts_payable</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {}}</field>
|
|
</record>
|
|
<record id="tool_find_duplicate_bills" model="fusion.accounting.tool">
|
|
<field name="name">find_duplicate_bills</field>
|
|
<field name="display_name_field">Find Duplicate Bills</field>
|
|
<field name="description">Detect potential duplicate vendor bills (same vendor + amount + date within window).</field>
|
|
<field name="domain">accounts_payable</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"window_days": {"type": "integer", "default": 7}}}</field>
|
|
</record>
|
|
<record id="tool_match_bill_to_po" model="fusion.accounting.tool">
|
|
<field name="name">match_bill_to_po</field>
|
|
<field name="display_name_field">Match Bill to PO</field>
|
|
<field name="description">Cross-reference bill lines to purchase order lines.</field>
|
|
<field name="domain">accounts_payable</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"bill_id": {"type": "integer"}}, "required": ["bill_id"]}</field>
|
|
</record>
|
|
<record id="tool_get_unpaid_bills" model="fusion.accounting.tool">
|
|
<field name="name">get_unpaid_bills</field>
|
|
<field name="display_name_field">Get Unpaid Bills</field>
|
|
<field name="description">List vendor bills with outstanding balance.</field>
|
|
<field name="domain">accounts_payable</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"partner_id": {"type": "integer"}, "limit": {"type": "integer", "default": 50}}}</field>
|
|
</record>
|
|
<record id="tool_verify_bill_taxes" model="fusion.accounting.tool">
|
|
<field name="name">verify_bill_taxes</field>
|
|
<field name="display_name_field">Verify Bill Taxes</field>
|
|
<field name="description">Check that bill tax matches fiscal position expectation.</field>
|
|
<field name="domain">accounts_payable</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"bill_id": {"type": "integer"}}, "required": ["bill_id"]}</field>
|
|
</record>
|
|
<record id="tool_get_payment_schedule" model="fusion.accounting.tool">
|
|
<field name="name">get_payment_schedule</field>
|
|
<field name="display_name_field">Get Payment Schedule</field>
|
|
<field name="description">Bills sorted by due date for cash planning.</field>
|
|
<field name="domain">accounts_payable</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"days_ahead": {"type": "integer", "default": 30}}}</field>
|
|
</record>
|
|
|
|
<!-- Domain 5: Journal Review -->
|
|
<record id="tool_find_wrong_direction_balances" model="fusion.accounting.tool">
|
|
<field name="name">find_wrong_direction_balances</field>
|
|
<field name="display_name_field">Find Wrong Direction Balances</field>
|
|
<field name="description">Find accounts where balance direction contradicts account type.</field>
|
|
<field name="domain">journal_review</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {}}</field>
|
|
</record>
|
|
<record id="tool_find_duplicate_entries" model="fusion.accounting.tool">
|
|
<field name="name">find_duplicate_entries</field>
|
|
<field name="display_name_field">Find Duplicate Entries</field>
|
|
<field name="description">Detect entries with matching partner + amount + date + journal.</field>
|
|
<field name="domain">journal_review</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"date_from": {"type": "string"}, "date_to": {"type": "string"}}}</field>
|
|
</record>
|
|
<record id="tool_find_wrong_account_entries" model="fusion.accounting.tool">
|
|
<field name="name">find_wrong_account_entries</field>
|
|
<field name="display_name_field">Find Wrong Account Entries</field>
|
|
<field name="description">Product lines on unlikely accounts (e.g., revenue on tax account).</field>
|
|
<field name="domain">journal_review</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"date_from": {"type": "string"}, "date_to": {"type": "string"}}}</field>
|
|
</record>
|
|
<record id="tool_find_sequence_gaps" model="fusion.accounting.tool">
|
|
<field name="name">find_sequence_gaps</field>
|
|
<field name="display_name_field">Find Sequence Gaps</field>
|
|
<field name="description">Find journal entries where made_sequence_gap is true.</field>
|
|
<field name="domain">journal_review</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {}}</field>
|
|
</record>
|
|
<record id="tool_find_draft_entries" model="fusion.accounting.tool">
|
|
<field name="name">find_draft_entries</field>
|
|
<field name="display_name_field">Find Draft Entries</field>
|
|
<field name="description">Draft entries older than specified days that should be posted or deleted.</field>
|
|
<field name="domain">journal_review</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"min_age_days": {"type": "integer", "default": 30}}}</field>
|
|
</record>
|
|
<record id="tool_find_unreconciled_suspense" model="fusion.accounting.tool">
|
|
<field name="name">find_unreconciled_suspense</field>
|
|
<field name="display_name_field">Find Unreconciled Suspense</field>
|
|
<field name="description">Suspense/clearing accounts with non-zero balance.</field>
|
|
<field name="domain">journal_review</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {}}</field>
|
|
</record>
|
|
<record id="tool_verify_reconciliation_integrity" model="fusion.accounting.tool">
|
|
<field name="name">verify_reconciliation_integrity</field>
|
|
<field name="display_name_field">Verify Reconciliation Integrity</field>
|
|
<field name="description">Check account.partial.reconcile consistency.</field>
|
|
<field name="domain">journal_review</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {}}</field>
|
|
</record>
|
|
|
|
<!-- Domain 6: Month-End -->
|
|
<record id="tool_get_close_checklist" model="fusion.accounting.tool">
|
|
<field name="name">get_close_checklist</field>
|
|
<field name="display_name_field">Get Close Checklist</field>
|
|
<field name="description">Aggregate all domain checks into a period close checklist.</field>
|
|
<field name="domain">month_end</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"period": {"type": "string", "description": "YYYY-MM format"}}}</field>
|
|
</record>
|
|
<record id="tool_get_unreconciled_counts" model="fusion.accounting.tool">
|
|
<field name="name">get_unreconciled_counts</field>
|
|
<field name="display_name_field">Get Unreconciled Counts</field>
|
|
<field name="description">Per-account count of unreconciled items.</field>
|
|
<field name="domain">month_end</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {}}</field>
|
|
</record>
|
|
<record id="tool_find_entries_in_locked_period" model="fusion.accounting.tool">
|
|
<field name="name">find_entries_in_locked_period</field>
|
|
<field name="display_name_field">Find Entries in Locked Period</field>
|
|
<field name="description">Find entries after lock dates.</field>
|
|
<field name="domain">month_end</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {}}</field>
|
|
</record>
|
|
<record id="tool_get_accrual_status" model="fusion.accounting.tool">
|
|
<field name="name">get_accrual_status</field>
|
|
<field name="display_name_field">Get Accrual Status</field>
|
|
<field name="description">Balance on accrual accounts (vacation, sick, etc.).</field>
|
|
<field name="domain">month_end</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"account_codes": {"type": "array", "items": {"type": "string"}}}}</field>
|
|
</record>
|
|
<record id="tool_run_hash_integrity_check" model="fusion.accounting.tool">
|
|
<field name="name">run_hash_integrity_check</field>
|
|
<field name="display_name_field">Run Hash Integrity Check</field>
|
|
<field name="description">Verify journal entry hash chain integrity.</field>
|
|
<field name="domain">month_end</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {}}</field>
|
|
</record>
|
|
<record id="tool_get_period_summary" model="fusion.accounting.tool">
|
|
<field name="name">get_period_summary</field>
|
|
<field name="display_name_field">Get Period Summary</field>
|
|
<field name="description">Trial balance for the closing period.</field>
|
|
<field name="domain">month_end</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"date_from": {"type": "string"}, "date_to": {"type": "string"}}, "required": ["date_from", "date_to"]}</field>
|
|
</record>
|
|
|
|
<!-- Domain 7: Payroll Verification -->
|
|
<record id="tool_get_payroll_entries" model="fusion.accounting.tool">
|
|
<field name="name">get_payroll_entries</field>
|
|
<field name="display_name_field">Get Payroll Entries</field>
|
|
<field name="description">Journal entries in payroll-related journals.</field>
|
|
<field name="domain">payroll_verification</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"date_from": {"type": "string"}, "date_to": {"type": "string"}, "journal_id": {"type": "integer"}}}</field>
|
|
</record>
|
|
<record id="tool_compare_payroll_to_bank" model="fusion.accounting.tool">
|
|
<field name="name">compare_payroll_to_bank</field>
|
|
<field name="display_name_field">Compare Payroll to Bank</field>
|
|
<field name="description">Cross-reference payroll cheques to bank statement lines.</field>
|
|
<field name="domain">payroll_verification</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"date_from": {"type": "string"}, "date_to": {"type": "string"}}, "required": ["date_from", "date_to"]}</field>
|
|
</record>
|
|
<record id="tool_verify_source_deductions" model="fusion.accounting.tool">
|
|
<field name="name">verify_source_deductions</field>
|
|
<field name="display_name_field">Verify Source Deductions</field>
|
|
<field name="description">CPP + EI + tax calculation verification against CRA tables.</field>
|
|
<field name="domain">payroll_verification</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {}}</field>
|
|
</record>
|
|
<record id="tool_get_cra_remittance_status" model="fusion.accounting.tool">
|
|
<field name="name">get_cra_remittance_status</field>
|
|
<field name="display_name_field">Get CRA Remittance Status</field>
|
|
<field name="description">CRA payable balance vs payments made.</field>
|
|
<field name="domain">payroll_verification</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {}}</field>
|
|
</record>
|
|
<record id="tool_find_unmatched_payroll_cheques" model="fusion.accounting.tool">
|
|
<field name="name">find_unmatched_payroll_cheques</field>
|
|
<field name="display_name_field">Find Unmatched Payroll Cheques</field>
|
|
<field name="description">Bank cheques without matching payroll entry.</field>
|
|
<field name="domain">payroll_verification</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {}}</field>
|
|
</record>
|
|
|
|
<!-- Domain 8: Inventory -->
|
|
<record id="tool_get_stock_valuation" model="fusion.accounting.tool">
|
|
<field name="name">get_stock_valuation</field>
|
|
<field name="display_name_field">Get Stock Valuation</field>
|
|
<field name="description">Stock In Hand balance and layers.</field>
|
|
<field name="domain">inventory</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {}}</field>
|
|
</record>
|
|
<record id="tool_get_price_differences" model="fusion.accounting.tool">
|
|
<field name="name">get_price_differences</field>
|
|
<field name="display_name_field">Get Price Differences</field>
|
|
<field name="description">Entries on price difference account (PO price vs bill price).</field>
|
|
<field name="domain">inventory</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"date_from": {"type": "string"}, "date_to": {"type": "string"}}}</field>
|
|
</record>
|
|
<record id="tool_get_cogs_ratio_by_category" model="fusion.accounting.tool">
|
|
<field name="name">get_cogs_ratio_by_category</field>
|
|
<field name="display_name_field">Get COGS Ratio</field>
|
|
<field name="description">COGS vs revenue per product category.</field>
|
|
<field name="domain">inventory</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"date_from": {"type": "string"}, "date_to": {"type": "string"}}}</field>
|
|
</record>
|
|
<record id="tool_find_unusual_adjustments" model="fusion.accounting.tool">
|
|
<field name="name">find_unusual_adjustments</field>
|
|
<field name="display_name_field">Find Unusual Adjustments</field>
|
|
<field name="description">Large inventory adjustment entries.</field>
|
|
<field name="domain">inventory</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"threshold": {"type": "number", "default": 1000}}}</field>
|
|
</record>
|
|
<record id="tool_get_inventory_turnover" model="fusion.accounting.tool">
|
|
<field name="name">get_inventory_turnover</field>
|
|
<field name="display_name_field">Get Inventory Turnover</field>
|
|
<field name="description">Sales vs average inventory calculation.</field>
|
|
<field name="domain">inventory</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"date_from": {"type": "string"}, "date_to": {"type": "string"}}}</field>
|
|
</record>
|
|
|
|
<!-- Domain 9: ADP -->
|
|
<record id="tool_get_adp_receivable_aging" model="fusion.accounting.tool">
|
|
<field name="name">get_adp_receivable_aging</field>
|
|
<field name="display_name_field">Get ADP Receivable Aging</field>
|
|
<field name="description">Aging on ADP Receivable account (1101).</field>
|
|
<field name="domain">adp</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {}}</field>
|
|
</record>
|
|
<record id="tool_match_adp_payment_to_invoice" model="fusion.accounting.tool">
|
|
<field name="name">match_adp_payment_to_invoice</field>
|
|
<field name="display_name_field">Match ADP Payment to Invoice</field>
|
|
<field name="description">Match ADP deposit to ADP invoices.</field>
|
|
<field name="domain">adp</field>
|
|
<field name="tier">3</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"move_line_ids": {"type": "array", "items": {"type": "integer"}}}, "required": ["move_line_ids"]}</field>
|
|
<field name="required_groups">fusion_accounting_core.group_fusion_accounting_manager</field>
|
|
</record>
|
|
<record id="tool_verify_adp_split" model="fusion.accounting.tool">
|
|
<field name="name">verify_adp_split</field>
|
|
<field name="display_name_field">Verify ADP Split</field>
|
|
<field name="description">Check customer + ADP portion = invoice total.</field>
|
|
<field name="domain">adp</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"invoice_id": {"type": "integer"}}, "required": ["invoice_id"]}</field>
|
|
</record>
|
|
<record id="tool_find_adp_without_payment" model="fusion.accounting.tool">
|
|
<field name="name">find_adp_without_payment</field>
|
|
<field name="display_name_field">Find ADP Without Payment</field>
|
|
<field name="description">ADP invoices without matching government deposit.</field>
|
|
<field name="domain">adp</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {}}</field>
|
|
</record>
|
|
<record id="tool_get_adp_summary" model="fusion.accounting.tool">
|
|
<field name="name">get_adp_summary</field>
|
|
<field name="display_name_field">Get ADP Summary</field>
|
|
<field name="description">Period summary of ADP billing vs collection.</field>
|
|
<field name="domain">adp</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"date_from": {"type": "string"}, "date_to": {"type": "string"}}}</field>
|
|
</record>
|
|
|
|
<record id="tool_register_adp_batch_payment" model="fusion.accounting.tool">
|
|
<field name="name">register_adp_batch_payment</field>
|
|
<field name="display_name_field">Register ADP Batch Payment</field>
|
|
<field name="description">[Tier 3: Requires user approval] Register payments for a batch of ADP invoices from a remittance advice. Takes a list of invoice numbers with payment amounts and a payment date. Registers each payment via Odoo's payment wizard, creating outstanding receipt entries (PBNK2) on account 1050. After this, use suggest_bank_line_matches on the bank deposit to match the outstanding receipts. Use this when the user uploads an ADP remittance advice screenshot and says "mark these paid".</field>
|
|
<field name="domain">adp</field>
|
|
<field name="tier">3</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"invoices": {"type": "array", "items": {"type": "object", "properties": {"invoice_number": {"type": "string"}, "amount": {"type": "number"}}, "required": ["invoice_number", "amount"]}, "description": "List of invoices with number and payment amount"}, "payment_date": {"type": "string", "description": "Payment date from remittance (YYYY-MM-DD)"}, "journal_id": {"type": "integer", "description": "Bank journal ID (default 50 = Scotia Current)"}}, "required": ["invoices", "payment_date"]}</field>
|
|
<field name="required_groups">fusion_accounting_core.group_fusion_accounting_manager</field>
|
|
</record>
|
|
|
|
<!-- Domain 10: Reporting -->
|
|
<record id="tool_get_profit_loss" model="fusion.accounting.tool">
|
|
<field name="name">get_profit_loss</field>
|
|
<field name="display_name_field">Get Profit & Loss</field>
|
|
<field name="description">Generate P&L report for a period.</field>
|
|
<field name="domain">reporting</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"date_from": {"type": "string"}, "date_to": {"type": "string"}}}</field>
|
|
</record>
|
|
<record id="tool_get_balance_sheet" model="fusion.accounting.tool">
|
|
<field name="name">get_balance_sheet</field>
|
|
<field name="display_name_field">Get Balance Sheet</field>
|
|
<field name="description">Generate balance sheet report.</field>
|
|
<field name="domain">reporting</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"date_from": {"type": "string"}, "date_to": {"type": "string"}}}</field>
|
|
</record>
|
|
<record id="tool_get_trial_balance" model="fusion.accounting.tool">
|
|
<field name="name">get_trial_balance</field>
|
|
<field name="display_name_field">Get Trial Balance</field>
|
|
<field name="description">Generate trial balance report.</field>
|
|
<field name="domain">reporting</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"date_from": {"type": "string"}, "date_to": {"type": "string"}}}</field>
|
|
</record>
|
|
<record id="tool_get_cash_flow" model="fusion.accounting.tool">
|
|
<field name="name">get_cash_flow</field>
|
|
<field name="display_name_field">Get Cash Flow</field>
|
|
<field name="description">Generate cash flow statement.</field>
|
|
<field name="domain">reporting</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"date_from": {"type": "string"}, "date_to": {"type": "string"}}}</field>
|
|
</record>
|
|
<record id="tool_compare_periods" model="fusion.accounting.tool">
|
|
<field name="name">compare_periods</field>
|
|
<field name="display_name_field">Compare Periods</field>
|
|
<field name="description">Two period reports side by side for comparison.</field>
|
|
<field name="domain">reporting</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"report_ref": {"type": "string"}, "period1_from": {"type": "string"}, "period1_to": {"type": "string"}, "period2_from": {"type": "string"}, "period2_to": {"type": "string"}}, "required": ["period1_from", "period1_to", "period2_from", "period2_to"]}</field>
|
|
</record>
|
|
<record id="tool_answer_financial_question" model="fusion.accounting.tool">
|
|
<field name="name">answer_financial_question</field>
|
|
<field name="display_name_field">Answer Financial Question</field>
|
|
<field name="description">Natural language to report query for financial questions.</field>
|
|
<field name="domain">reporting</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"question": {"type": "string"}}, "required": ["question"]}</field>
|
|
</record>
|
|
<record id="tool_export_report" model="fusion.accounting.tool">
|
|
<field name="name">export_report</field>
|
|
<field name="display_name_field">Export Report</field>
|
|
<field name="description">Export a report to PDF or XLSX.</field>
|
|
<field name="domain">reporting</field>
|
|
<field name="tier">2</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"report_ref": {"type": "string"}, "format": {"type": "string", "enum": ["pdf", "xlsx"]}, "date_from": {"type": "string"}, "date_to": {"type": "string"}}, "required": ["report_ref"]}</field>
|
|
<field name="required_groups">fusion_accounting_core.group_fusion_accounting_manager</field>
|
|
</record>
|
|
|
|
<record id="tool_get_invoicing_summary" model="fusion.accounting.tool">
|
|
<field name="name">get_invoicing_summary</field>
|
|
<field name="display_name_field">Get Invoicing Summary</field>
|
|
<field name="description">[Tier 1: Read-only] Get customer invoicing summary — monthly breakdown for a year, date range totals, or filtered by partner. Use this for questions like "how much did we invoice this year?", "show me invoicing by month", "how much did we bill ADP this quarter?".</field>
|
|
<field name="domain">reporting</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"year": {"type": "integer", "description": "Year for monthly breakdown (default: current year)"}, "partner_name": {"type": "string", "description": "Filter by partner name (optional)"}, "date_from": {"type": "string", "description": "Start date for date range (YYYY-MM-DD)"}, "date_to": {"type": "string", "description": "End date for date range (YYYY-MM-DD)"}}}</field>
|
|
</record>
|
|
<record id="tool_get_billing_summary" model="fusion.accounting.tool">
|
|
<field name="name">get_billing_summary</field>
|
|
<field name="display_name_field">Get Billing Summary</field>
|
|
<field name="description">[Tier 1: Read-only] Get vendor billing (purchases) summary — monthly breakdown for a year or date range. Use for "how much are our bills this month?", "show me vendor bills by month".</field>
|
|
<field name="domain">reporting</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"year": {"type": "integer"}, "partner_name": {"type": "string"}, "date_from": {"type": "string"}, "date_to": {"type": "string"}}}</field>
|
|
</record>
|
|
<record id="tool_get_collections_summary" model="fusion.accounting.tool">
|
|
<field name="name">get_collections_summary</field>
|
|
<field name="display_name_field">Get Collections Summary</field>
|
|
<field name="description">[Tier 1: Read-only] Get payment collections summary — how much was collected (customer payments received) in a period, broken down by partner. Use for "how much are we collecting this month?", "show me collections for March".</field>
|
|
<field name="domain">reporting</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"date_from": {"type": "string"}, "date_to": {"type": "string"}}}</field>
|
|
</record>
|
|
|
|
<!-- Domain 11: Audit -->
|
|
<record id="tool_audit_posted_entry" model="fusion.accounting.tool">
|
|
<field name="name">audit_posted_entry</field>
|
|
<field name="display_name_field">Audit Posted Entry</field>
|
|
<field name="description">Run all entry-level checks on a single journal entry.</field>
|
|
<field name="domain">audit</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"move_id": {"type": "integer"}}, "required": ["move_id"]}</field>
|
|
</record>
|
|
<record id="tool_audit_account_balances" model="fusion.accounting.tool">
|
|
<field name="name">audit_account_balances</field>
|
|
<field name="display_name_field">Audit Account Balances</field>
|
|
<field name="description">Run all account-level checks (wrong direction, stale items).</field>
|
|
<field name="domain">audit</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {}}</field>
|
|
</record>
|
|
<record id="tool_audit_tax_compliance" model="fusion.accounting.tool">
|
|
<field name="name">audit_tax_compliance</field>
|
|
<field name="display_name_field">Audit Tax Compliance</field>
|
|
<field name="description">All tax checks (missing tax, wrong rate, exempt verification).</field>
|
|
<field name="domain">audit</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"date_from": {"type": "string"}, "date_to": {"type": "string"}}}</field>
|
|
</record>
|
|
<record id="tool_audit_reconciliation_integrity" model="fusion.accounting.tool">
|
|
<field name="name">audit_reconciliation_integrity</field>
|
|
<field name="display_name_field">Audit Reconciliation Integrity</field>
|
|
<field name="description">Verify partial/full reconcile consistency.</field>
|
|
<field name="domain">audit</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {}}</field>
|
|
</record>
|
|
<record id="tool_check_hash_chain" model="fusion.accounting.tool">
|
|
<field name="name">check_hash_chain</field>
|
|
<field name="display_name_field">Check Hash Chain</field>
|
|
<field name="description">Verify journal entry hash chain integrity.</field>
|
|
<field name="domain">audit</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {}}</field>
|
|
</record>
|
|
<record id="tool_check_sequence_gaps" model="fusion.accounting.tool">
|
|
<field name="name">check_sequence_gaps</field>
|
|
<field name="display_name_field">Check Sequence Gaps</field>
|
|
<field name="description">Check for sequence gaps in journals.</field>
|
|
<field name="domain">audit</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {}}</field>
|
|
</record>
|
|
<record id="tool_flag_entry" model="fusion.accounting.tool">
|
|
<field name="name">flag_entry</field>
|
|
<field name="display_name_field">Flag Entry</field>
|
|
<field name="description">Create a chatter note on a journal entry with flag and recommendation.</field>
|
|
<field name="domain">audit</field>
|
|
<field name="tier">2</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"move_id": {"type": "integer"}, "flag": {"type": "string"}, "recommendation": {"type": "string"}}, "required": ["move_id"]}</field>
|
|
<field name="required_groups">fusion_accounting_core.group_fusion_accounting_manager</field>
|
|
</record>
|
|
<record id="tool_get_audit_status" model="fusion.accounting.tool">
|
|
<field name="name">get_audit_status</field>
|
|
<field name="display_name_field">Get Audit Status</field>
|
|
<field name="description">Account audit status per tax return.</field>
|
|
<field name="domain">audit</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {}}</field>
|
|
</record>
|
|
<record id="tool_set_audit_status" model="fusion.accounting.tool">
|
|
<field name="name">set_audit_status</field>
|
|
<field name="display_name_field">Set Audit Status</field>
|
|
<field name="description">Update review status (todo / reviewed / supervised / anomaly).</field>
|
|
<field name="domain">audit</field>
|
|
<field name="tier">2</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"status_id": {"type": "integer"}, "status": {"type": "string", "enum": ["todo", "reviewed", "supervised", "anomaly"]}}, "required": ["status_id", "status"]}</field>
|
|
<field name="required_groups">fusion_accounting_core.group_fusion_accounting_manager</field>
|
|
</record>
|
|
<record id="tool_get_audit_trail" model="fusion.accounting.tool">
|
|
<field name="name">get_audit_trail</field>
|
|
<field name="display_name_field">Get Audit Trail</field>
|
|
<field name="description">Get mail.message history for a journal entry.</field>
|
|
<field name="domain">audit</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"move_id": {"type": "integer"}}, "required": ["move_id"]}</field>
|
|
</record>
|
|
<record id="tool_run_full_audit" model="fusion.accounting.tool">
|
|
<field name="name">run_full_audit</field>
|
|
<field name="display_name_field">Run Full Audit</field>
|
|
<field name="description">All checks across all domains for a period.</field>
|
|
<field name="domain">audit</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"date_from": {"type": "string"}, "date_to": {"type": "string"}}}</field>
|
|
</record>
|
|
<record id="tool_get_audit_report" model="fusion.accounting.tool">
|
|
<field name="name">get_audit_report</field>
|
|
<field name="display_name_field">Get Audit Report</field>
|
|
<field name="description">Summary of all audit findings with severity ratings.</field>
|
|
<field name="domain">audit</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"date_from": {"type": "string"}, "date_to": {"type": "string"}}}</field>
|
|
</record>
|
|
|
|
<!-- Domain 12: Payroll Management -->
|
|
<record id="tool_parse_payroll_summary" model="fusion.accounting.tool">
|
|
<field name="name">parse_payroll_summary</field>
|
|
<field name="display_name_field">Parse Payroll Summary</field>
|
|
<field name="description">Read pasted/uploaded payroll data from QBO or fusion_payroll.</field>
|
|
<field name="domain">payroll_management</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"data": {"type": "string"}}, "required": ["data"]}</field>
|
|
</record>
|
|
<record id="tool_create_payroll_journal_entry" model="fusion.accounting.tool">
|
|
<field name="name">create_payroll_journal_entry</field>
|
|
<field name="display_name_field">Create Payroll Journal Entry</field>
|
|
<field name="description">Create a payroll journal entry with debit/credit lines.</field>
|
|
<field name="domain">payroll_management</field>
|
|
<field name="tier">3</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"journal_id": {"type": "integer"}, "date": {"type": "string"}, "ref": {"type": "string"}, "lines": {"type": "array", "items": {"type": "object", "properties": {"account_id": {"type": "integer"}, "name": {"type": "string"}, "debit": {"type": "number"}, "credit": {"type": "number"}, "partner_id": {"type": "integer"}}}}}, "required": ["journal_id", "date", "lines"]}</field>
|
|
<field name="required_groups">fusion_accounting_core.group_fusion_accounting_manager</field>
|
|
</record>
|
|
<record id="tool_match_payroll_cheques" model="fusion.accounting.tool">
|
|
<field name="name">match_payroll_cheques</field>
|
|
<field name="display_name_field">Match Payroll Cheques</field>
|
|
<field name="description">Match bank cheques to payroll liabilities.</field>
|
|
<field name="domain">payroll_management</field>
|
|
<field name="tier">3</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"statement_line_id": {"type": "integer"}, "move_line_ids": {"type": "array", "items": {"type": "integer"}}}, "required": ["statement_line_id", "move_line_ids"]}</field>
|
|
<field name="required_groups">fusion_accounting_core.group_fusion_accounting_manager</field>
|
|
</record>
|
|
<record id="tool_prepare_cra_payment" model="fusion.accounting.tool">
|
|
<field name="name">prepare_cra_payment</field>
|
|
<field name="display_name_field">Prepare CRA Payment</field>
|
|
<field name="description">Create CRA remittance payment entry.</field>
|
|
<field name="domain">payroll_management</field>
|
|
<field name="tier">3</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"journal_id": {"type": "integer"}, "date": {"type": "string"}, "lines": {"type": "array"}}, "required": ["journal_id", "date", "lines"]}</field>
|
|
<field name="required_groups">fusion_accounting_core.group_fusion_accounting_manager</field>
|
|
</record>
|
|
<record id="tool_generate_t4" model="fusion.accounting.tool">
|
|
<field name="name">generate_t4</field>
|
|
<field name="display_name_field">Generate T4</field>
|
|
<field name="description">Trigger T4 generation via fusion_payroll.</field>
|
|
<field name="domain">payroll_management</field>
|
|
<field name="tier">2</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {}}</field>
|
|
<field name="required_groups">fusion_accounting_core.group_fusion_accounting_manager</field>
|
|
</record>
|
|
<record id="tool_generate_roe" model="fusion.accounting.tool">
|
|
<field name="name">generate_roe</field>
|
|
<field name="display_name_field">Generate ROE</field>
|
|
<field name="description">Trigger ROE generation via fusion_payroll.</field>
|
|
<field name="domain">payroll_management</field>
|
|
<field name="tier">2</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {}}</field>
|
|
<field name="required_groups">fusion_accounting_core.group_fusion_accounting_manager</field>
|
|
</record>
|
|
<record id="tool_get_payroll_cost_report" model="fusion.accounting.tool">
|
|
<field name="name">get_payroll_cost_report</field>
|
|
<field name="display_name_field">Get Payroll Cost Report</field>
|
|
<field name="description">Period summary by employee/department.</field>
|
|
<field name="domain">payroll_management</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"date_from": {"type": "string"}, "date_to": {"type": "string"}}}</field>
|
|
</record>
|
|
|
|
<!-- HST Filing Workflow Tools (added 2026-04-03) -->
|
|
|
|
<record id="tool_search_partners" model="fusion.accounting.tool">
|
|
<field name="name">search_partners</field>
|
|
<field name="display_name_field">Search Partners</field>
|
|
<field name="description">Search for vendors/contacts by name keyword. Use this to resolve bank line descriptions (e.g., "AMAZON") to the correct Odoo partner record before creating bills. Pass supplier_only=true to filter to vendors only.</field>
|
|
<field name="domain">accounts_payable</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"keyword": {"type": "string", "description": "Name keyword to search (min 2 chars)"}, "supplier_only": {"type": "boolean", "description": "Only return suppliers/vendors"}, "limit": {"type": "integer"}}, "required": ["keyword"]}</field>
|
|
</record>
|
|
|
|
<record id="tool_find_similar_bank_lines" model="fusion.accounting.tool">
|
|
<field name="name">find_similar_bank_lines</field>
|
|
<field name="display_name_field">Find Similar Bank Lines</field>
|
|
<field name="description">Search past RECONCILED bank lines with similar payment_ref descriptions. Returns the expense account, tax treatment, and partner used for each historical match. Use this to check how similar expenses were coded in the past before proposing a new bill.</field>
|
|
<field name="domain">accounts_payable</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"keyword": {"type": "string", "description": "Keyword from payment_ref to search (min 3 chars)"}, "limit": {"type": "integer"}}, "required": ["keyword"]}</field>
|
|
</record>
|
|
|
|
<record id="tool_get_bank_line_details" model="fusion.accounting.tool">
|
|
<field name="name">get_bank_line_details</field>
|
|
<field name="display_name_field">Get Bank Line Details</field>
|
|
<field name="description">Get full details of a single unreconciled bank statement line. Also searches for existing vendor bills matching the amount and date, and suggests a partner based on the payment description. Use this to check if a bill already exists before creating a new one.</field>
|
|
<field name="domain">bank_reconciliation</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"line_id": {"type": "integer", "description": "Bank statement line ID"}}, "required": ["line_id"]}</field>
|
|
</record>
|
|
|
|
<record id="tool_create_vendor_bill" model="fusion.accounting.tool">
|
|
<field name="name">create_vendor_bill</field>
|
|
<field name="display_name_field">Create Vendor Bill</field>
|
|
<field name="description">[Tier 3: Requires user approval] Create a vendor bill (account.move in_invoice) with expense lines and tax. Use after confirming the expense details with the user. Pass post=true to auto-post the bill after creation.</field>
|
|
<field name="domain">accounts_payable</field>
|
|
<field name="tier">3</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"partner_id": {"type": "integer", "description": "Vendor partner ID"}, "invoice_date": {"type": "string", "description": "Bill date (YYYY-MM-DD)"}, "lines": {"type": "array", "items": {"type": "object", "properties": {"description": {"type": "string"}, "account_id": {"type": "integer"}, "price_unit": {"type": "number"}, "quantity": {"type": "number"}, "tax_ids": {"type": "array", "items": {"type": "integer"}}}}, "description": "Invoice line items"}, "post": {"type": "boolean", "description": "Auto-post the bill after creation"}}, "required": ["partner_id", "invoice_date", "lines"]}</field>
|
|
</record>
|
|
|
|
<record id="tool_register_bill_payment" model="fusion.accounting.tool">
|
|
<field name="name">register_bill_payment</field>
|
|
<field name="display_name_field">Register Bill Payment</field>
|
|
<field name="description">[Tier 3: Requires user approval] Register a payment on a posted vendor bill from a specific bank journal. Optionally reconcile the payment to a bank statement line. Use after create_vendor_bill to complete the full bill+payment+reconciliation flow.</field>
|
|
<field name="domain">accounts_payable</field>
|
|
<field name="tier">3</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"bill_id": {"type": "integer", "description": "Posted bill ID (account.move)"}, "journal_id": {"type": "integer", "description": "Bank journal ID for payment"}, "payment_date": {"type": "string", "description": "Payment date (YYYY-MM-DD)"}, "amount": {"type": "number", "description": "Payment amount (defaults to bill total)"}, "statement_line_id": {"type": "integer", "description": "Bank statement line ID to reconcile with"}}, "required": ["bill_id", "journal_id"]}</field>
|
|
</record>
|
|
|
|
<record id="tool_check_recurring_pattern" model="fusion.accounting.tool">
|
|
<field name="name">check_recurring_pattern</field>
|
|
<field name="display_name_field">Check Recurring Pattern</field>
|
|
<field name="description">Check if a bank line matches a known recurring payment pattern. Returns the historical account coding, HST treatment, partner, and reconciliation model if one exists. ALWAYS call this FIRST for every unreconciled bank line — if a recurring pattern exists, follow its instructions instead of asking the user. Pass line_id to auto-extract ref and amount.</field>
|
|
<field name="domain">bank_reconciliation</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"line_id": {"type": "integer", "description": "Bank statement line ID"}, "payment_ref": {"type": "string", "description": "Payment reference text (auto-extracted if line_id provided)"}, "amount": {"type": "number", "description": "Transaction amount (auto-extracted if line_id provided)"}}, "required": []}</field>
|
|
</record>
|
|
|
|
<record id="tool_match_internal_transfers" model="fusion.accounting.tool">
|
|
<field name="name">match_internal_transfers</field>
|
|
<field name="display_name_field">Match Internal Transfers</field>
|
|
<field name="description">[Tier 3: Requires user approval] Find and match inter-account transfers between two bank journals (e.g., Scotia Current ↔ Scotia Visa). Matches EXACT amounts within 2 days. ONLY matches when there is exactly one candidate — skips ambiguous cases. First call with execute=false to preview pairs, then execute=true to reconcile. Scotia Current=50, Scotia Visa=51, RBC Chequing=53, RBC Visa=28.</field>
|
|
<field name="domain">bank_reconciliation</field>
|
|
<field name="tier">3</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"journal_a_id": {"type": "integer", "description": "First bank journal ID"}, "journal_b_id": {"type": "integer", "description": "Second bank journal ID"}, "date_from": {"type": "string"}, "date_to": {"type": "string"}, "max_days_apart": {"type": "integer", "description": "Max days between matching lines (default 2)"}, "execute": {"type": "boolean", "description": "false=preview pairs only, true=actually reconcile"}}, "required": ["journal_a_id", "journal_b_id"]}</field>
|
|
</record>
|
|
|
|
<record id="tool_suggest_bank_line_matches" model="fusion.accounting.tool">
|
|
<field name="name">suggest_bank_line_matches</field>
|
|
<field name="display_name_field">Suggest Bank Line Matches</field>
|
|
<field name="description">[Tier 1: Read-only] Find candidate invoices/bills that could match a bank statement line. Extracts partner from the bank line reference, searches open receivables (for incoming payments) or payables (for outgoing payments), scores candidates by amount/partner/date proximity, and finds the best combination of entries that sum to the bank amount. Returns data for a reconciliation-mode fusion-table with editable amounts and search. The user reviews matches, adjusts amounts for partial payments, searches and adds more entries, then clicks Apply Match.</field>
|
|
<field name="domain">bank_reconciliation</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"statement_line_id": {"type": "integer", "description": "Bank statement line ID to find matches for"}}, "required": ["statement_line_id"]}</field>
|
|
</record>
|
|
|
|
<record id="tool_find_unreconciled_cheques" model="fusion.accounting.tool">
|
|
<field name="name">find_unreconciled_cheques</field>
|
|
<field name="display_name_field">Find Unreconciled Cheques</field>
|
|
<field name="description">[Tier 1: Read-only] Find unreconciled cheque bank lines and classify them as payroll or non-payroll. Payroll cheques have a matching credit amount on 2201 Payroll Liabilities. Non-payroll cheques (vendor payments, rent, etc.) don't. Default journal: Scotia Current (50).</field>
|
|
<field name="domain">bank_reconciliation</field>
|
|
<field name="tier">1</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"journal_id": {"type": "integer", "description": "Bank journal ID (default 50 = Scotia Current)"}, "limit": {"type": "integer", "description": "Max results (default 50)"}}}</field>
|
|
</record>
|
|
|
|
<record id="tool_reconcile_payroll_cheques" model="fusion.accounting.tool">
|
|
<field name="name">reconcile_payroll_cheques</field>
|
|
<field name="display_name_field">Reconcile Payroll Cheques</field>
|
|
<field name="description">[Tier 3: Requires user approval] Reconcile payroll cheque bank lines by applying the Payroll Cheque Clearing model. ONLY processes cheques whose amount matches an existing payroll liability entry on 2201. Non-payroll cheques (vendor/rent) are skipped automatically. Uses the pre-configured "Payroll Cheque Clearing" reconcile model (writeoff to Dr 2201).</field>
|
|
<field name="domain">bank_reconciliation</field>
|
|
<field name="tier">3</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"journal_id": {"type": "integer", "description": "Bank journal ID (default 50)"}, "line_ids": {"type": "array", "items": {"type": "integer"}, "description": "Optional: specific bank line IDs to reconcile. If empty, reconciles all matching payroll cheques."}}}</field>
|
|
<field name="required_groups">fusion_accounting_core.group_fusion_accounting_manager</field>
|
|
</record>
|
|
|
|
<record id="tool_create_expense_entry" model="fusion.accounting.tool">
|
|
<field name="name">create_expense_entry</field>
|
|
<field name="display_name_field">Create Direct GL Expense</field>
|
|
<field name="description">[Tier 3: Requires user approval] Create a direct GL expense entry in the Miscellaneous Operations journal. Alternative to creating a vendor bill — posts immediately. If has_hst=true, automatically splits the amount into net expense + 13% HST ITC on the 2006 account. Use this for small expenses where a formal vendor bill is not needed.</field>
|
|
<field name="domain">hst_management</field>
|
|
<field name="tier">3</field>
|
|
<field name="parameters_schema">{"type": "object", "properties": {"date": {"type": "string", "description": "Entry date (YYYY-MM-DD)"}, "description": {"type": "string", "description": "Expense description"}, "expense_account_id": {"type": "integer", "description": "GL expense account ID"}, "amount": {"type": "number", "description": "Total amount including HST if applicable"}, "has_hst": {"type": "boolean", "description": "Whether HST (13%) is included in the amount"}, "bank_journal_id": {"type": "integer", "description": "Bank journal for the credit side"}}, "required": ["date", "description", "expense_account_id", "amount"]}</field>
|
|
</record>
|
|
</odoo>
|