This commit is contained in:
gsinghpal
2026-02-23 00:32:20 -05:00
parent d6bac8e623
commit e8e554de95
549 changed files with 1330 additions and 124935 deletions

View File

@@ -12,148 +12,137 @@
<!-- Work Schedule -->
<block title="Work Schedule" name="fclk_work_schedule">
<setting string="Default Clock-In Time" help="Scheduled start of shift. Used for penalty and auto clock-out calculations.">
<span class="me-2">Clock-In</span>
<field name="fclk_default_clock_in_time" widget="float_time"
class="text-center" style="width: 6ch;"/>
<span class="ms-2 text-muted">e.g. 09:00 = 9 AM</span>
<setting string="Default Clock-In Time" help="The scheduled start time for employees.">
<div class="content-group">
<div class="row mt16">
<label for="fclk_default_clock_in_time" class="col-lg-3"/>
<field name="fclk_default_clock_in_time" widget="float_time"/>
</div>
</div>
</setting>
<setting string="Default Clock-Out Time" help="Scheduled end of shift. Used for penalty and auto clock-out calculations.">
<span class="me-2">Clock-Out</span>
<field name="fclk_default_clock_out_time" widget="float_time"
class="text-center" style="width: 6ch;"/>
<span class="ms-2 text-muted">e.g. 17:00 = 5 PM</span>
<setting string="Default Clock-Out Time" help="The scheduled end time for employees.">
<div class="content-group">
<div class="row mt16">
<label for="fclk_default_clock_out_time" class="col-lg-3"/>
<field name="fclk_default_clock_out_time" widget="float_time"/>
</div>
</div>
</setting>
</block>
<!-- Break Settings -->
<block title="Break Settings" name="fclk_break_settings">
<setting string="Auto-Deduct Break" help="Automatically deduct unpaid break from total worked hours. Applies to portal/FAB clock-outs AND manually entered attendance.">
<setting string="Auto-Deduct Break" help="Automatically deduct unpaid break from worked hours.">
<field name="fclk_auto_deduct_break"/>
<div invisible="not fclk_auto_deduct_break" class="mt8">
<span class="me-2">Break Duration</span>
<field name="fclk_default_break_minutes" class="text-center" style="width: 6ch;"/>
<span class="ms-2">minutes</span>
<span class="ms-3 text-muted">e.g. 30 = half-hour unpaid break</span>
<br/>
<span class="me-2 mt8 d-inline-block">Threshold</span>
<field name="fclk_break_threshold_hours" widget="float_time"
class="text-center" style="width: 6ch;"/>
<span class="ms-2">hours</span>
<span class="ms-3 text-muted">break deducted only if shift exceeds this</span>
<br/>
<button name="action_backfill_breaks" type="object"
string="Apply Break to Past Records"
class="btn btn-secondary mt8" icon="fa-clock-o"
confirm="This will apply break deduction to all past attendance records that are missing it. Continue?"/>
<span class="ms-2 text-muted mt8 d-inline-block">
Applies break to historical records that were entered manually or before break was enabled
</span>
<div class="content-group" invisible="not fclk_auto_deduct_break">
<div class="row mt16">
<label for="fclk_default_break_minutes" class="col-lg-3"/>
<field name="fclk_default_break_minutes"/>
<span class="ms-1">minutes</span>
</div>
<div class="row mt8">
<label for="fclk_break_threshold_hours" class="col-lg-3"/>
<field name="fclk_break_threshold_hours" widget="float_time"/>
<span class="ms-1">(only deduct if shift exceeds this)</span>
</div>
</div>
</setting>
</block>
<!-- Auto Clock-Out & Grace Period -->
<block title="Auto Clock-Out" name="fclk_auto_clockout">
<setting string="Enable Auto Clock-Out" help="Automatically clock out employees who forget to clock out.">
<setting string="Enable Auto Clock-Out" help="Automatically clock out employees after shift + grace period.">
<field name="fclk_enable_auto_clockout"/>
<div invisible="not fclk_enable_auto_clockout" class="mt8">
<span class="me-2">Grace Period</span>
<field name="fclk_grace_period_minutes" class="text-center" style="width: 6ch;"/>
<span class="ms-2">minutes after scheduled end</span>
<br/>
<span class="me-2 mt8 d-inline-block">Max Shift</span>
<field name="fclk_max_shift_hours" widget="float_time"
class="text-center" style="width: 6ch;"/>
<span class="ms-2">hours</span>
<span class="ms-3 text-muted">safety net: force clock-out after this</span>
<div class="content-group" invisible="not fclk_enable_auto_clockout">
<div class="row mt16">
<label for="fclk_grace_period_minutes" class="col-lg-3"/>
<field name="fclk_grace_period_minutes"/>
<span class="ms-1">minutes grace after scheduled end</span>
</div>
<div class="row mt8">
<label for="fclk_max_shift_hours" class="col-lg-3"/>
<field name="fclk_max_shift_hours" widget="float_time"/>
<span class="ms-1">max shift safety net</span>
</div>
</div>
</setting>
</block>
<!-- Penalties -->
<block title="Penalty Tracking" name="fclk_penalties">
<setting string="Enable Penalties" help="Track late clock-ins and early clock-outs for each employee.">
<setting string="Enable Penalties" help="Track late clock-in and early clock-out.">
<field name="fclk_enable_penalties"/>
<div invisible="not fclk_enable_penalties" class="mt8">
<span class="me-2">Grace</span>
<field name="fclk_penalty_grace_minutes" class="text-center" style="width: 6ch;"/>
<span class="ms-2">minutes before a penalty is logged</span>
<div class="content-group" invisible="not fclk_enable_penalties">
<div class="row mt16">
<label for="fclk_penalty_grace_minutes" class="col-lg-3"/>
<field name="fclk_penalty_grace_minutes"/>
<span class="ms-1">minutes grace before penalty</span>
</div>
</div>
</setting>
</block>
<!-- Pay Period -->
<block title="Pay Period" name="fclk_pay_period">
<setting string="Pay Period Schedule" help="Defines how pay periods are calculated. Weekly and Bi-Weekly require an anchor date below. Semi-Monthly uses 1st-15th and 16th-end. Monthly uses 1st-end.">
<div class="mt8">
<span class="me-2">Schedule</span>
<field name="fclk_pay_period_type" class="d-inline-block"/>
</div>
</setting>
<setting string="Anchor Date" help="The first day of any actual pay period. All periods are calculated forward and backward from this date in weekly or biweekly increments. Not used for Semi-Monthly or Monthly.">
<div class="mt8">
<field name="fclk_pay_period_start" class="d-inline-block"
placeholder="Pick the start of a real pay period"/>
<span class="ms-3 text-muted">
Pick the first day of any real pay period
</span>
</div>
</setting>
<setting string="Current Period Preview" help="Shows the current pay period based on today and the settings above. Use this to verify your anchor date is correct.">
<div class="mt8">
<field name="fclk_pay_period_preview" class="fw-bold text-primary"/>
<setting string="Pay Period Schedule" help="Defines how often reports are generated.">
<div class="content-group">
<div class="row mt16">
<label for="fclk_pay_period_type" class="col-lg-3"/>
<field name="fclk_pay_period_type"/>
</div>
<div class="row mt8">
<label for="fclk_pay_period_start" class="col-lg-3"/>
<field name="fclk_pay_period_start"/>
</div>
</div>
</setting>
</block>
<!-- Reports -->
<block title="Reports &amp; Email" name="fclk_reports">
<setting string="Auto-Generate Reports" help="Automatically generate a summary report at the end of each pay period.">
<setting string="Auto-Generate Reports" help="Automatically generate reports at the end of each pay period.">
<field name="fclk_auto_generate_reports"/>
</setting>
<setting string="Send Employee Copies" help="Email each employee a copy of their individual timesheet at the end of every pay period.">
<setting string="Send Employee Copies" help="Email individual reports to each employee.">
<field name="fclk_send_employee_reports"/>
</setting>
<setting string="Manager Report Recipients" help="Comma-separated email addresses. A batch summary of all employees will be sent to these addresses at the end of every pay period.">
<div class="mt8">
<field name="fclk_report_recipient_emails" class="o_input w-100"
placeholder="manager@company.com, hr@company.com"/>
</div>
</setting>
<setting string="Generate Historical Reports" help="Create reports for all past pay periods that have attendance data but no report yet. No emails will be sent for these. Use this after first install or when changing pay period settings.">
<div class="mt8">
<button name="action_backfill_reports" type="object"
string="Generate Historical Reports"
class="btn btn-secondary" icon="fa-history"
confirm="This will create reports for all past pay periods. No emails will be sent. This may take a few minutes depending on the amount of data. Continue?"/>
<setting string="Manager Report Recipients" help="Comma-separated emails for batch report delivery.">
<div class="content-group">
<div class="row mt16">
<label for="fclk_report_recipient_emails" class="col-lg-3"/>
<field name="fclk_report_recipient_emails" class="o_input" placeholder="manager@company.com, hr@company.com"/>
</div>
</div>
</setting>
</block>
<!-- Clock Locations -->
<block title="Clock Locations" name="fclk_locations">
<setting string="Manage Locations" help="Configure geofenced clock-in/out locations with GPS coordinates and allowed radius.">
<div class="mt8">
<button name="%(fusion_clock.action_fusion_clock_location)d" type="action"
string="Manage Locations" class="btn btn-primary" icon="fa-map-marker"/>
<setting string="Manage Locations" help="Configure geofenced clock-in/out locations with GPS coordinates and radius.">
<div class="content-group">
<div class="mt16">
<button name="%(fusion_clock.action_fusion_clock_location)d" type="action"
string="Manage Locations" class="btn btn-primary" icon="fa-map-marker"/>
</div>
</div>
</setting>
</block>
<!-- Google Maps -->
<block title="Google Maps" name="fclk_google_maps">
<setting string="Google Maps API Key" help="Required for geocoding addresses and showing map previews on clock locations.">
<div class="mt8">
<field name="fclk_google_maps_api_key" class="o_input w-100"
placeholder="AIza..." password="True"/>
<setting string="Google Maps API Key" help="Required for location geocoding and map previews.">
<div class="content-group">
<div class="row mt16">
<label for="fclk_google_maps_api_key" class="col-lg-3"/>
<field name="fclk_google_maps_api_key" class="o_input" placeholder="AIza..." password="True"/>
</div>
</div>
</setting>
</block>
<!-- Sounds -->
<block title="Sounds" name="fclk_sounds">
<setting string="Clock Sounds" help="Play an audio chime on clock-in and a different one on clock-out.">
<setting string="Clock Sounds" help="Play audio feedback on clock-in and clock-out.">
<field name="fclk_enable_sounds"/>
</setting>
</block>