Employee Overtime Request Documentation

Part 1: USER GUIDE - Overtime Request


Table of Contents


1. Overview

The Overtime Request Module allows you to log extra hours worked beyond your regular shift and request approval/compensation.

What You Can Do

✅ Log overtime hours worked
✅ Provide reason for overtime
✅ Submit for approval
✅ Track pending OT requests
✅ View OT history and compensation
✅ Generate OT reports

When to Use

Regular Shift:      08:00 AM - 17:00 PM (9 hours)
Work Until:         19:30 PM (overtime starts)
Overtime Hours:     2.5 hours extra

OT Type:
├─ Regular OT       (Paid at 125% rate)
├─ Weekend OT       (Paid at 150% rate)
├─ Holiday OT       (Paid at 200% rate)
└─ Rest Day OT      (Paid at 150% rate)

2. Overtime Policies

2.1 Company OT Policy

OVERTIME GUIDELINES
═════════════════════════════════════════

Minimum OT:           30 minutes
Maximum Per Day:      4 hours
Maximum Per Week:     12 hours
Maximum Per Month:    40 hours

Approval Required:    Yes (Team Lead + Manager)
Advance Notice:       Same day notification
Payment Method:       Salary + Hourly Rate

Compensatory Days:
├─ Can convert OT to rest days
├─ Requires written approval
└─ Must be taken within 3 months

2.2 OT Rate Breakdown

Type Rate When
Regular OT 125% of hourly rate Weekday after hours
Weekend OT 150% of hourly rate Saturday/Sunday work
Holiday OT 200% of hourly rate Company holidays
Rest Day OT 150% of hourly rate Your scheduled off day

2.3 Approval Chain

You Log OT
    ↓
Submitted to Team Lead
    ↓
Team Lead Reviews
    │
    ├→ ✅ Approved → Sent to Manager
    │
    └→ ❌ Rejected → Notification sent
            (Reason provided)
            ↓
            Resubmit if needed

Manager Reviews
    │
    ├→ ✅ Approved → Financial processed
    │               ↓
    │               Recorded in Payroll
    │
    └→ ❌ Rejected → Notification sent

3. Submitting Overtime

3.1 Create OT Request

Step 1: Navigate to Overtime

Left Menu → Overtime Request → [+ New OT Request]
    ↓
Request Form Opens

Step 2: Fill Overtime Form

┌────────────────────────────────────────┐
│      CREATE OVERTIME REQUEST           │
├────────────────────────────────────────┤
│                                        │
│ * Date:           [12/04/2025] 🗓️    │
│   (Must be today or past 7 days)      │
│                                        │
│ * Hours:          [2.5] hours          │
│   Decimal format (0.5, 1.0, 2.5, etc) │
│   Max: 4 hours per day                 │
│                                        │
│ * OT Type:        [Regular ▼]          │
│                   ├─ Regular (125%)    │
│                   ├─ Weekend (150%)    │
│                   ├─ Holiday (200%)    │
│                   └─ Rest Day (150%)   │
│                                        │
│ * Reason:                              │
│ [                                    ]  │
│ [ Project deadline - client request  ]  │
│ [ Need to finish database migration  ]  │
│ [                                    ]  │
│                                        │
│ * Approval Type:  [Payment ▼]          │
│                   ├─ Payment (Money)   │
│                   ├─ Rest Day (Comp)   │
│                   └─ Split (Both)      │
│                                        │
│ Estimated Pay: PHP 625.00              │
│ (Based on your hourly rate)            │
│                                        │
│ [Submit] [Clear] [Cancel]             │
│                                        │
└────────────────────────────────────────┘

3.2 Form Fields

Field Required Details
Date Yes Date OT was worked
Hours Yes Total OT hours (0.5, 1, 2.5, etc)
OT Type Yes Weekday/Weekend/Holiday rate
Reason Yes Why OT was necessary
Approval Type Yes Payment or Compensatory Day

3.3 Date Selection

Important Rules:

✓ Can submit up to 7 days after
✗ Cannot submit for future dates
✗ Cannot submit for more than 7 days ago

Example (Today: Dec 4):
✓ Dec 4, 3, 2, 1, Nov 30, 29, 28 (Last 7 days)
✗ Dec 5, 6, 7 (Future dates)

3.4 Hours Input

Format:

Valid entries:
0.5   (30 minutes)
1     (1 hour)
1.5   (1 hour 30 min)
2     (2 hours)
2.5   (2 hours 30 min)
3     (3 hours)
4     (4 hours - maximum)

Invalid entries:
5     (Exceeds 4 hour max per day)
0.25  (Below 30 min minimum)
2.75  (Unusual increments)

3.5 Reason Input

Guidelines:

Good Reasons:
✓ "Project deadline - client request for
   critical bug fix"
✓ "Server migration in progress, needed
   to monitor stability"
✓ "Year-end closing - financial data
   reconciliation"
✓ "Emergency support - customer escalation"

Poor Reasons:
✗ "Work"
✗ "Overtime"
✗ "Had to stay"
✗ (Leave blank)

Reason should be:

  • Specific and relevant
  • Show business justification
  • Help approvers understand necessity
  • At least 20 characters

3.6 Approval Type

Option 1: Payment

Receive: Cash payment for OT hours
Amount: Hours × Hourly Rate × Multiplier
Example: 2.5 hours × 250/hour × 1.25 = 781.25
Payroll: Processed next payroll cycle

Option 2: Compensatory Day (Rest Day)

Receive: 1 rest day per X hours worked
Ratio: Company dependent (1:1 or 1:1.5)
Use: Take as paid leave
Must: Use within 3 months or forfeit

Option 3: Split

Receive: Partial payment + partial rest day
Example: 2.5 hours OT
         → 1.5 hours paid (375 PHP)
         → 1 hour as rest day (comp)

3.7 Submit Request

Step 1: Review

Verify all fields:
✓ Date: December 4, 2025
✓ Hours: 2.5 hours
✓ Type: Regular (125%)
✓ Reason: Complete project deadline work
✓ Approval: Payment
✓ Estimated: PHP 625.00

Step 2: Submit

[Submit] button
    ↓
Processing...

Step 3: Confirmation

✅ OVERTIME REQUEST SUBMITTED

Request ID: OT-20250042
Date: December 4, 2025
Hours: 2.5 hours
Type: Regular Overtime
Reason: Project deadline work
Estimated Compensation: PHP 625.00

Status: PENDING APPROVAL
Next: Team Lead Review (24-48 hours)

Track your request:
→ Overtime Request History
→ Notifications
→ Dashboard Widget

4. Managing Requests

4.1 View Pending OT

Access Pending:

Overtime Request → [Pending] Tab
    ↓
Shows all awaiting approval

Pending List:

┌─────────────────────────────────────────┐
│       PENDING OVERTIME REQUESTS         │
├─────────────────────────────────────────┤
│                                         │
│ ID │ Date    │ Hrs │ Status      │ Act │
├─────────────────────────────────────────┤
│OT42│ Dec 4   │ 2.5 │ 🟡 Pending  │[✎]│
│    │         │     │ TL Review   │[❌]│
│    │         │     │             │    │
│OT41│ Dec 3   │ 1.0 │ 🟡 TL Appr  │    │
│    │         │     │ Mgr Review  │[✎]│
│    │         │     │             │    │
│OT40│ Dec 2   │ 3.5 │ ✅ Approved │[📄]│
│    │         │     │ (2 days ago)│[❌]│
│    │         │     │             │    │
└─────────────────────────────────────────┘

4.2 Edit Pending Request

Can Edit If:

  • Status is "PENDING"
  • Awaiting first approval (Team Lead)
  • Not yet approved by Manager

Steps:

[Edit icon] (pencil)
    ↓
Form opens with current data
    ↓
Modify fields (same form)
    ↓
[Update] button
    ↓
Changes saved, approvers notified

4.3 Withdraw Request

Can Withdraw If:

  • Status is "PENDING" or first level approved
  • Has not been fully approved
  • Timestamp allows (within deadline)

Steps:

[Withdraw icon] (X)
    ↓
Confirmation prompt
    ↓
Are you sure?
    ↓
[Confirm Withdrawal]
    ↓
Request removed from approval queue
    ↓
You can resubmit if needed

5. Tracking & Reports

5.1 OT Summary Dashboard

View Your Statistics:

┌──────────────────────────────────────┐
│     YOUR OVERTIME SUMMARY (2025)     │
├──────────────────────────────────────┤
│                                      │
│ Total OT Logged:        18.5 hours   │
│                         ████░░░░░░   │
│                                      │
│ Pending Approval:        2.5 hours   │
│ Awaiting Payroll:        8 hours     │
│ Paid Out:               8 hours      │
│ Used as Rest Days:      0 hours      │
│                                      │
│ Estimated Earnings:    PHP 4,625.00  │
│                                      │
│ This Month:              6.5 hours   │
│ This Week:               2.5 hours   │
│                                      │
│ Monthly Limit:          40 hours     │
│ You've used:            18 hours     │
│ Remaining:              22 hours     │
│                                      │
└──────────────────────────────────────┘

5.2 OT History

Access Full History:

Overtime Request → [History] Tab
    ↓
All past OT requests

History Table:

ID  │ Date │ Hours │ Type    │ Amount  │ Status
────┼──────┼───────┼─────────┼─────────┼────────
OT42│Dec 4 │ 2.5   │Regular  │ PHP 625 │ ✅ PAID
OT41│Dec 3 │ 1.0   │Regular  │ PHP 250 │ ✅ PAID
OT40│Dec 2 │ 3.5   │Regular  │ PHP 875 │ ✅ PAID
OT39│Dec 1 │ 2.0   │Weekend  │ PHP 600 │ ✅ PAID
OT38│Nov 30│ 1.5   │Regular  │ PHP 375 │ ✅ PAID

5.3 Export OT Records

Generate Report:

[Export] button
    ↓
Format options:
├─ PDF Report
├─ Excel (CSV)
└─ Payroll Integration
    ↓
[Select Format]
    ↓
File Downloads

PDF Report Sample:

OVERTIME REPORT
Company: XYZ Corp
Employee: Juan Dela Cruz
Period: January 1 - December 31, 2025

Summary:
Total Hours: 18.5
Total Earnings: PHP 4,625.00

Detailed List:
Date    Shift Hrs  Type     Amount    Status
Dec 4   2.5h  Reg  625.00  ✓ Paid
Dec 3   1.0h  Reg  250.00  ✓ Paid
...

Signature: _______________

6. FAQ & Issues

FAQ

Q: Can I submit OT for a date beyond 7 days?
A: No, 7-day limit strictly enforced. Submit promptly.

Q: What if my OT is rejected?
A: Review rejection reason, discuss with Team Lead, resubmit if valid.

Q: How long until approval?
A: Team Lead usually 24-48 hours, Manager 24 hours after TL approval.

Q: Can I convert OT to rest days?
A: Yes, select "Compensatory Day" or "Split" option.

Q: When do I get paid for OT?
A: Next payroll cycle after full approval.

Q: What's the maximum OT per month?
A: 40 hours standard, can request exception for urgent projects.

Q: Do weekends count differently?
A: Yes, Weekend OT is 150% vs Regular 125%.

Q: Can I change my mind after submitting?
A: Yes, withdraw request before full approval.

Troubleshooting

Issue: "Hours exceed maximum (4 per day)"
Solution: Enter max 4 hours, submit separate request next day.

Issue: "Date is outside 7-day window"
Solution: Can only submit within 7 days. Contact HR for older dates.

Issue: "Reason too short"
Solution: Provide at least 20 characters explaining why.

Issue: "Team Lead not assigned"
Solution: Update your profile with Team Lead before submitting.


END OF USER GUIDE - OVERTIME REQUEST


PART 2: DEVELOPER GUIDE - Overtime Request

Controller

public function create()
{
    return view('users.employee.overtime-request.create', [
        'user' => auth()->user()->load('profile')
    ]);
}

public function store(StoreOvertimeRequest $request)
{
    $ot = OvertimeRequest::create([
        'user_id' => auth()->id(),
        'date' => $request->date,
        'hours' => $request->hours,
        'ot_type' => $request->ot_type,
        'reason' => $request->reason,
        'approval_type' => $request->approval_type,
        'status' => 'PENDING'
    ]);

    // Calculate estimated pay
    $ot->estimated_pay = $this->calculateOTPay(
        $request->hours,
        $request->ot_type,
        auth()->user()
    );
    $ot->save();

    return redirect()->route('employee.overtime-request.index')
        ->with('success', 'Overtime request submitted');
}

private function calculateOTPay($hours, $type, $user)
{
    $hourlyRate = $user->profile->hourly_rate ?? 250;

    $multiplier = match($type) {
        'regular' => 1.25,
        'weekend' => 1.5,
        'holiday' => 2.0,
        'rest_day' => 1.5,
    };

    return $hours * $hourlyRate * $multiplier;
}

Documentation Version: 1.0