Initial commit
This commit is contained in:
74
fusion_clock/data/ir_config_parameter_data.xml
Normal file
74
fusion_clock/data/ir_config_parameter_data.xml
Normal file
@@ -0,0 +1,74 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo noupdate="1">
|
||||
|
||||
<!-- Work Schedule Defaults -->
|
||||
<record id="config_default_clock_in_time" model="ir.config_parameter">
|
||||
<field name="key">fusion_clock.default_clock_in_time</field>
|
||||
<field name="value">9.0</field>
|
||||
</record>
|
||||
<record id="config_default_clock_out_time" model="ir.config_parameter">
|
||||
<field name="key">fusion_clock.default_clock_out_time</field>
|
||||
<field name="value">17.0</field>
|
||||
</record>
|
||||
|
||||
<!-- Break Defaults -->
|
||||
<record id="config_default_break_minutes" model="ir.config_parameter">
|
||||
<field name="key">fusion_clock.default_break_minutes</field>
|
||||
<field name="value">30</field>
|
||||
</record>
|
||||
<record id="config_auto_deduct_break" model="ir.config_parameter">
|
||||
<field name="key">fusion_clock.auto_deduct_break</field>
|
||||
<field name="value">True</field>
|
||||
</record>
|
||||
<record id="config_break_threshold_hours" model="ir.config_parameter">
|
||||
<field name="key">fusion_clock.break_threshold_hours</field>
|
||||
<field name="value">5.0</field>
|
||||
</record>
|
||||
|
||||
<!-- Grace Period & Auto Clock-Out -->
|
||||
<record id="config_grace_period_minutes" model="ir.config_parameter">
|
||||
<field name="key">fusion_clock.grace_period_minutes</field>
|
||||
<field name="value">15</field>
|
||||
</record>
|
||||
<record id="config_enable_auto_clockout" model="ir.config_parameter">
|
||||
<field name="key">fusion_clock.enable_auto_clockout</field>
|
||||
<field name="value">True</field>
|
||||
</record>
|
||||
<record id="config_max_shift_hours" model="ir.config_parameter">
|
||||
<field name="key">fusion_clock.max_shift_hours</field>
|
||||
<field name="value">12.0</field>
|
||||
</record>
|
||||
|
||||
<!-- Penalties -->
|
||||
<record id="config_enable_penalties" model="ir.config_parameter">
|
||||
<field name="key">fusion_clock.enable_penalties</field>
|
||||
<field name="value">True</field>
|
||||
</record>
|
||||
<record id="config_penalty_grace_minutes" model="ir.config_parameter">
|
||||
<field name="key">fusion_clock.penalty_grace_minutes</field>
|
||||
<field name="value">5</field>
|
||||
</record>
|
||||
|
||||
<!-- Pay Period -->
|
||||
<record id="config_pay_period_type" model="ir.config_parameter">
|
||||
<field name="key">fusion_clock.pay_period_type</field>
|
||||
<field name="value">biweekly</field>
|
||||
</record>
|
||||
|
||||
<!-- Reports -->
|
||||
<record id="config_auto_generate_reports" model="ir.config_parameter">
|
||||
<field name="key">fusion_clock.auto_generate_reports</field>
|
||||
<field name="value">True</field>
|
||||
</record>
|
||||
<record id="config_send_employee_reports" model="ir.config_parameter">
|
||||
<field name="key">fusion_clock.send_employee_reports</field>
|
||||
<field name="value">True</field>
|
||||
</record>
|
||||
|
||||
<!-- Sounds -->
|
||||
<record id="config_enable_sounds" model="ir.config_parameter">
|
||||
<field name="key">fusion_clock.enable_sounds</field>
|
||||
<field name="value">True</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
28
fusion_clock/data/ir_cron_data.xml
Normal file
28
fusion_clock/data/ir_cron_data.xml
Normal file
@@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo noupdate="1">
|
||||
|
||||
<!-- Auto Clock-Out Cron: runs every 15 minutes -->
|
||||
<record id="cron_auto_clock_out" model="ir.cron">
|
||||
<field name="name">Fusion Clock: Auto Clock-Out</field>
|
||||
<field name="model_id" ref="hr_attendance.model_hr_attendance"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">model._cron_fusion_auto_clock_out()</field>
|
||||
<field name="interval_number">15</field>
|
||||
<field name="interval_type">minutes</field>
|
||||
<field name="active">True</field>
|
||||
<field name="priority">50</field>
|
||||
</record>
|
||||
|
||||
<!-- Report Generation Cron: runs daily at 1:00 AM -->
|
||||
<record id="cron_generate_reports" model="ir.cron">
|
||||
<field name="name">Fusion Clock: Generate Period Reports</field>
|
||||
<field name="model_id" ref="fusion_clock.model_fusion_clock_report"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">model._cron_generate_period_reports()</field>
|
||||
<field name="interval_number">1</field>
|
||||
<field name="interval_type">days</field>
|
||||
<field name="active">True</field>
|
||||
<field name="priority">60</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
85
fusion_clock/data/mail_template_data.xml
Normal file
85
fusion_clock/data/mail_template_data.xml
Normal file
@@ -0,0 +1,85 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo noupdate="1">
|
||||
|
||||
<!-- Employee Individual Report Email -->
|
||||
<record id="mail_template_clock_employee_report" model="mail.template">
|
||||
<field name="name">Fusion Clock: Employee Report</field>
|
||||
<field name="model_id" ref="fusion_clock.model_fusion_clock_report"/>
|
||||
<field name="subject">Your Attendance Report - {{ object.date_start }} to {{ object.date_end }}</field>
|
||||
<field name="email_from">{{ (object.company_id.email or user.email_formatted) }}</field>
|
||||
<field name="email_to">{{ object.employee_id.work_email or '' }}</field>
|
||||
<field name="body_html"><![CDATA[
|
||||
<div style="margin:0;padding:0;font-family:Arial,Helvetica,sans-serif;">
|
||||
<table width="600" style="margin:0 auto;background:#ffffff;border:1px solid #e0e0e0;border-radius:8px;">
|
||||
<tr>
|
||||
<td style="padding:24px 32px;background:#1a1d23;border-radius:8px 8px 0 0;">
|
||||
<h2 style="color:#10B981;margin:0;">Fusion Clock</h2>
|
||||
<p style="color:#9ca3af;margin:4px 0 0;">Attendance Report</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding:24px 32px;">
|
||||
<p>Hello <strong>{{ object.employee_id.name }}</strong>,</p>
|
||||
<p>Your attendance report for the period <strong>{{ object.date_start }}</strong> to <strong>{{ object.date_end }}</strong> is ready.</p>
|
||||
|
||||
<table width="100%" style="margin:16px 0;border-collapse:collapse;">
|
||||
<tr style="background:#f8f9fa;">
|
||||
<td style="padding:8px 12px;border:1px solid #e0e0e0;"><strong>Days Worked</strong></td>
|
||||
<td style="padding:8px 12px;border:1px solid #e0e0e0;">{{ object.days_worked }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding:8px 12px;border:1px solid #e0e0e0;"><strong>Total Hours</strong></td>
|
||||
<td style="padding:8px 12px;border:1px solid #e0e0e0;">{{ '%.1f' % object.total_hours }}h</td>
|
||||
</tr>
|
||||
<tr style="background:#f8f9fa;">
|
||||
<td style="padding:8px 12px;border:1px solid #e0e0e0;"><strong>Net Hours</strong></td>
|
||||
<td style="padding:8px 12px;border:1px solid #e0e0e0;">{{ '%.1f' % object.net_hours }}h</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding:8px 12px;border:1px solid #e0e0e0;"><strong>Total Breaks</strong></td>
|
||||
<td style="padding:8px 12px;border:1px solid #e0e0e0;">{{ '%.0f' % object.total_breaks }} min</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>The full PDF report is attached. You can also download it from your portal at any time.</p>
|
||||
<p style="color:#6b7280;font-size:12px;">This is an automated message from Fusion Clock.</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
]]></field>
|
||||
<field name="report_template_ids" eval="[(4, ref('fusion_clock.action_report_clock_employee'))]"/>
|
||||
<field name="auto_delete" eval="False"/>
|
||||
</record>
|
||||
|
||||
<!-- Batch Report Email (to managers) -->
|
||||
<record id="mail_template_clock_batch_report" model="mail.template">
|
||||
<field name="name">Fusion Clock: Batch Report</field>
|
||||
<field name="model_id" ref="fusion_clock.model_fusion_clock_report"/>
|
||||
<field name="subject">Employee Attendance Batch Report - {{ object.date_start }} to {{ object.date_end }}</field>
|
||||
<field name="email_from">{{ (object.company_id.email or user.email_formatted) }}</field>
|
||||
<field name="email_to">{{ (object.company_id.sudo().env['ir.config_parameter'].get_param('fusion_clock.report_recipient_emails') or '') }}</field>
|
||||
<field name="body_html"><![CDATA[
|
||||
<div style="margin:0;padding:0;font-family:Arial,Helvetica,sans-serif;">
|
||||
<table width="600" style="margin:0 auto;background:#ffffff;border:1px solid #e0e0e0;border-radius:8px;">
|
||||
<tr>
|
||||
<td style="padding:24px 32px;background:#1a1d23;border-radius:8px 8px 0 0;">
|
||||
<h2 style="color:#10B981;margin:0;">Fusion Clock</h2>
|
||||
<p style="color:#9ca3af;margin:4px 0 0;">Batch Attendance Report</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding:24px 32px;">
|
||||
<p>The attendance batch report for <strong>{{ object.date_start }}</strong> to <strong>{{ object.date_end }}</strong> is attached.</p>
|
||||
<p>This report includes all employees' attendance summaries with daily breakdowns, total hours, and penalty information.</p>
|
||||
<p style="color:#6b7280;font-size:12px;">This is an automated message from Fusion Clock.</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
]]></field>
|
||||
<field name="report_template_ids" eval="[(4, ref('fusion_clock.action_report_clock_batch'))]"/>
|
||||
<field name="auto_delete" eval="False"/>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user