# -*- coding: utf-8 -*- { 'name': 'Fusion Payroll - Canada', 'version': '19.0.2.4.6', 'category': 'Human Resources/Payroll', 'summary': 'Canadian Payroll - QuickBooks-like features with CPP, CPP2, EI, ROE', 'description': """ Fusion Payroll - Canadian Payroll Module ========================================= Comprehensive Canadian payroll functionality inspired by QuickBooks Online Payroll. **Tax Calculations:** - Federal Income Tax (5 brackets) - Provincial Income Tax (Ontario - 5 brackets) - Support for all Canadian provinces and territories - Dynamic pay period support (Weekly, Bi-Weekly, Semi-Monthly, Monthly) **Deductions:** - CPP (Canada Pension Plan) - Employee and Employer portions - CPP2 (Second Canada Pension Plan - 2024+) - 4% on earnings above first ceiling - EI (Employment Insurance) - Employee portion + Employer 1.4x multiplier - Year-to-date tracking with annual maximums - Tax exemption flags per employee **Additional Pay Types:** - Vacation Pay (% of earnings) - Stat Holiday Pay - Overtime Pay (1.5x) **Employee Management:** - Employment Status (Active/On Leave/Terminated) - Full Canadian address with province selection - SIN validation - T4 Dental Benefits Code - Emergency contact information - Pay schedule per employee **Record of Employment (ROE):** - Full ROE generation with all Service Canada fields - BLK file export for ROE Web submission - Automatic calculation of insurable earnings - 5-day submission deadline tracking - All official ROE reason codes (A-Z) **Configuration:** - Payroll → Configuration → Yearly Rates - Payroll → ROE → Records of Employment Built for Odoo Enterprise Payroll (hr_payroll). """, 'author': 'Your Company', 'website': '', 'license': 'LGPL-3', 'depends': [ 'hr_payroll', # Core payroll functionality 'hr_work_entry_enterprise', # For payroll menu structure (Odoo 19) 'hr_holidays', # For vacation/leave reports 'hr_attendance', # For punch-in/out time tracking 'mail', # For ROE chatter/tracking ], 'data': [ # Views 'views/pay_period_views.xml', 'views/tax_yearly_rates_views.xml', 'views/hr_employee_views.xml', 'views/hr_roe_views.xml', 'views/hr_payslip_views.xml', 'views/hr_tax_centre_views.xml', 'views/hr_t4_views.xml', 'views/hr_t4a_views.xml', 'views/pdf_field_position_views.xml', 'views/run_payroll_wizard_views.xml', 'views/payroll_report_views.xml', 'views/payroll_tax_payment_schedule_views.xml', 'views/payroll_config_settings_views.xml', 'views/payroll_work_location_views.xml', 'views/payroll_tax_payment_schedule_views.xml', 'views/payroll_dashboard_views.xml', 'views/payroll_cheque_views.xml', 'views/payroll_cheque_print_wizard_views.xml', 'views/cheque_number_wizard_views.xml', 'views/cheque_layout_settings_views.xml', # Central Menu Structure (must be last - references other actions) 'views/fusion_payroll_menus.xml', # Reports 'reports/report_paystub_canada.xml', 'reports/payroll_cheque_report.xml', 'reports/payroll_reports.xml', 'reports/payroll_report_pdf.xml', # Data (order matters!) # 1. Rule parameters (CPP, EI, Federal, Provincial rates - Odoo native approach) 'data/hr_rule_parameter_data.xml', # 2. Input types for additional pay (OT, Stat, Bonus) 'data/hr_payslip_input_type_data.xml', # 3. Legacy tax rates data 'data/tax_yearly_rates_data.xml', # 4. Payroll structure (creates structure and category) 'data/hr_payroll_structure.xml', # 5. Canadian salary rules (references structure and parameters) 'data/hr_salary_rules.xml', # 6. Demo/Sample data (loads on install) 'demo/demo_data.xml', # Security (load last to ensure all models are registered) 'security/ir.model.access.csv', ], 'demo': [], 'images': ['static/description/icon.png'], 'assets': { 'web.assets_backend': [ 'fusion_payroll/static/src/scss/payroll_report.scss', 'fusion_payroll/static/src/js/report_hub.js', 'fusion_payroll/static/src/js/payroll_report_action.js', 'fusion_payroll/static/src/xml/report_hub.xml', 'fusion_payroll/static/src/xml/payroll_report_templates.xml', ], 'web.report_assets_common': [ 'fusion_payroll/static/src/css/roe_report.css', ], }, 'installable': True, 'application': True, 'auto_install': False, }