@php // Loop through each payslip and dispatch a job to send email asynchronously foreach ($pamPayslips as $pamPayslip) { Log::info('Started sending email to ' . $pamPayslip->pamEmp->email); $pamEmp = $pamPayslip->pamEmp; $pamPayRun = $pamPayslip->pamPayRun; $year = $pamPayslip->pamPayRun->pamPayRunPeriod->calendar_year; $emp_id = $pamPayslip->emp_id; $pamPayslipEarnDefs = App\Models\PamPayslipEarnDef::where('payslip_id', $pamPayslip->id)->get(); $pamPayslipDeduDefs = App\Models\PamPayslipDeduDef::where('payslip_id', $pamPayslip->id)->get(); $pamPayslipContDefs = App\Models\PamPayslipContDef::where('payslip_id', $pamPayslip->id)->get(); $deductions = App\Models\PamPayslipDeduDef::where('payslip_id', $pamPayslip->id)->sum('amount'); $pamEarningTypes = App\Models\PamPayslipEarnDef::whereHas('pamPayRun.pamPayRunPeriod', function ($query) use ($year, $emp_id) { $query->where('calendar_year', $year); $query->where('emp_id', $emp_id); }) ->join('pam_earn_defs', 'pam_payslip_earn_defs.earn_def_id', '=', 'pam_earn_defs.id') ->join('pam_earn_types', 'pam_earn_defs.earn_type_id', '=', 'pam_earn_types.id') ->groupBy('pam_earn_types.code', 'pam_earn_types.short_description') ->selectRaw('pam_earn_types.code, pam_earn_types.short_description, SUM(pam_payslip_earn_defs.amount) as total_amount') ->get(); // Calculate total taxable income, non-taxable income, and tax paid for the year $taxableIncome = App\Models\PamPayslip::where('emp_id', $pamPayslip->emp_id) ->whereHas('pamPayRun.pamPayRunPeriod', function ($query) use ($year) { $query->where('calendar_year', $year); })->sum('taxable_income'); $nonTaxableIncome = App\Models\PamPayslip::where('emp_id', $pamPayslip->emp_id) ->whereHas('pamPayRun.pamPayRunPeriod', function ($query) use ($year) { $query->where('calendar_year', $year); })->sum('non_taxable_income'); $taxPaid = App\Models\PamPayslip::where('emp_id', $pamPayslip->emp_id) ->whereHas('pamPayRun.pamPayRunPeriod', function ($query) use ($year) { $query->where('calendar_year', $year); })->sum('tax_paid'); @endphp
![]() |
PAYSLIP |
{{$pamEmp->pamHRUser->fullName}} | Cal Date: {{ $pamPayRun->pamPayRunPeriod->start_date . ' to ' . $pamPayRun->pamPayRunPeriod->end_date }} | |||||||||||||||||||||||||
EMPLOYEE NO {{ $pamEmp->pamHRUser->man_number }} |
SOCIAL SECURITY NUMBER {{ $pamEmp->pamHRUser->social_security_number }} |
BANK ACCOUNT NUMBER {{ $pamEmp->pamHRUser->bank_account }} |
BANK NAME {{ $pamEmp->pamBankBranch?$pamEmp->pamBankBranch->pamBank->short_description:"" }} |
BANK BRANCH NAME {{ $pamEmp->pamBankBranch?$pamEmp->pamBankBranch->short_description:"" }} |
LEAVE DAYS {{ $pamEmp->pamHRUser->pamEmpLeave?$pamEmp->pamHRUser->pamEmpLeave->remaining_days :0 }} |
EMPLOYMENT DATE {{ $pamEmp->date_of_appointment }} |
||||||||||||||||||||
Basic Run | RATE OF PAY {{ number_format($pamPayslip->pamEmp->basic_pay,2, '.', ',') }} |
GRADE / {{$pamEmp->pamEmpSalaryScaleNotch->pamEmpSalaryScale->code?$pamEmp->pamEmpSalaryScaleNotch->pamEmpSalaryScale->code : ''}} |
COST CENTRE: {{ $pamEmp->pamEmpDepartment->name}} | OCCUPATION : {{ $pamEmp->pamEmpJobPosition->title}} | ||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||
Total Earnings: {{ number_format($pamPayslip->gross_earnings,2, '.', ',') }} | Total Deductions: {{ number_format( $deductions,2, '.', ',')}} | Net Pay: {{ number_format($pamPayslip->net_pay,2, '.', ',')}} |
Current | YTD | |
Taxable | {{ number_format($pamPayslip->gross_earnings,2, '.', ',') }} | {{ number_format($taxableIncome,2, '.', ',') }} |
Tax Paid | {{ number_format($pamPayslip->tax_paid,2, '.', ',') }} | {{ number_format($taxPaid,2, '.', ',') }} |
{{ $item->pamContDef->short_description }} | {{ number_format($item->amount,2, '.', ',') ?? ''}} | @php $year_to_date = App\Models\PamPayslipContDef::where('emp_id', $pamPayslip->emp_id) ->where('cont_def_id', $item->cont_def_id) ->whereHas('pamPayRun.pamPayRunPeriod', function ($query) use ($year) { $query->where('calendar_year', $year); })->sum('amount'); @endphp{{ number_format($year_to_date,2, '.', ',') ?? ''}} |