@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
Image Description

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}}
@foreach($pamPayslipEarnDefs as $item) @endforeach
EARNINGS:
Description Amount
{{ $item->pamEarnDef->short_description }} {{ number_format($item->amount ,2, '.', ',')}}
@foreach($pamPayslipDeduDefs as $item) @if($item->amount>0) @if($item->pamDeduDef->pamDeduType->code === 'LOAN') @else @endif @endif @endforeach
DEDUCTIONS:
Description Amount Balance
{{ $item->pamDeduDef->short_description }} {{ number_format($item->amount,2, '.', ',') ?? ''}} {{$item->pamLoan? number_format($item->pamLoan->loan_balance_amount,2, '.', ','):0 }} 0.00
@foreach($pamEarningTypes as $item) @endforeach
YTD TOTAL:
Description Amount
{{ $item->short_description}} {{ number_format($item->total_amount ,2, '.', ',')}}
Total Earnings: {{ number_format($pamPayslip->gross_earnings,2, '.', ',') }} Total Deductions: {{ number_format( $deductions,2, '.', ',')}} Net Pay: {{ number_format($pamPayslip->net_pay,2, '.', ',')}}
@foreach($pamPayslipContDefs as $item) @if($item->amount>0) @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 @endif @endforeach
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, '.', ',') ?? ''}}{{ number_format($year_to_date,2, '.', ',') ?? ''}}
@php } @endphp