@ -60,7 +60,18 @@ class PayrollController extends BaseController
$empPayTrans = $empPayTransModel->find($emppaytransid);
$empPayTrans = $empPayTransModel->find($emppaytransid);
// Compute basic pay first
// Compute basic pay first
$empPayTrans->basic_pay = $empPayTrans->actual_work_days * $empPayTrans->basic_daily_pay;
// DAILY, SEMIMONTHLY, MONTHLY reference is in PayrollComputation
switch ($empPayTrans->basic_sal_computation) {
case 'DAILY':
$empPayTrans->basic_pay = $empPayTrans->actual_work_days * $empPayTrans->basic_daily_pay;
break;
case 'SEMIMONTHLY':
$empPayTrans->basic_pay = $empPayTrans->basic_semi_monthly_pay;
break;
case 'MONTHLY':
$empPayTrans->basic_pay = $empPayTrans->basic_monthly_pay;
break;
}
$empPayTrans->taxable_income = $empPayTransInDedModel->getTotalIncomeDeduction($emppaytransid, 1, 1) + $empPayTrans->basic_pay;
$empPayTrans->taxable_income = $empPayTransInDedModel->getTotalIncomeDeduction($emppaytransid, 1, 1) + $empPayTrans->basic_pay;
$empPayTrans->nontaxable_income = $empPayTransInDedModel->getTotalIncomeDeduction($emppaytransid, 1, 0);
$empPayTrans->nontaxable_income = $empPayTransInDedModel->getTotalIncomeDeduction($emppaytransid, 1, 0);
@ -252,11 +263,14 @@ class PayrollController extends BaseController
public function employeePayrollInfo()
public function employeePayrollInfo()
{
{
$payCompute = new PayrollComputation();
$empPayInfoModel = new EmployeePayrollInfoModel();
$empPayInfoModel = new EmployeePayrollInfoModel();
$empPayInfos = $empPayInfoModel->getAllEmpPayInfoXEmpPayType();
$empPayInfos = $empPayInfoModel->getAllEmpPayInfoXEmpPayType();
$data['employees'] = (new EmployeeModel())->findAll();
$data['employees'] = (new EmployeeModel())->findAll();
$data['paytypes'] = (new PayrollTypeModel())->findAll();
$data['paytypes'] = (new PayrollTypeModel())->findAll();
$data['workdaystype'] = $payCompute->workdays_type;
$data['salarycomputations'] = $payCompute->basic_salary_computations;
$empPayInfoHTMLTable = new \CodeIgniter\View\Table();
$empPayInfoHTMLTable = new \CodeIgniter\View\Table();
$empPayInfoHTMLTable->setTemplate(MiscLib::adminLTETableTemplate());
$empPayInfoHTMLTable->setTemplate(MiscLib::adminLTETableTemplate());
@ -269,10 +283,32 @@ class PayrollController extends BaseController
foreach($empPayInfos as $empPayInfo)
foreach($empPayInfos as $empPayInfo)
{
{
$empayHTMLData = 'data-emppay_id="'.$empPayInfo->emppay_id.
'" data-employee_id="'.$empPayInfo->employee_id.
'" data-paytype_id="'.$empPayInfo->paytype_id.
'" data-is_atm="'.$empPayInfo->is_ATM.
'" data-savings_account="'.$empPayInfo->savings_account.
'" data-work_days="'.$empPayInfo->work_days.
'" data-basic_sal_computation="'.$empPayInfo->basic_sal_computation.
'" data-basic_monthly_pay="'.$empPayInfo->basic_monthly_pay.
'" data-basic_semi_monthly_pay="'.$empPayInfo->basic_semi_monthly_pay.
'" data-basic_daily_pay="'.$empPayInfo->basic_daily_pay.
'" data-basic_hourly_pay="'.$empPayInfo->basic_hourly_pay.
'" data-has_cola="'.$empPayInfo->has_cola.
'" data-has_philhealth="'.$empPayInfo->has_philhealth.
'" data-has_hdmf="'.$empPayInfo->has_hdmf.
'" data-has_sss="'.$empPayInfo->has_sss.
'" data-has_gsis="'.$empPayInfo->has_gsis.
'" data-company_issued_id="'.$empPayInfo->company_issued_id.
'" data-last_name="'.$empPayInfo->last_name.
'" data-first_name="'.$empPayInfo->first_name.'"';
$iconView = '< a href = "#" class = "ml-3" data-toggle = "tooltip" title = "View Information" > < i class = "fas fa-eye " > < / i > < / a > ';
$iconView = '< a href = "#" class = "ml-3" data-toggle = "tooltip" title = "View Information" > < i class = "fas fa-eye " > < / i > < / a > ';
$iconEdit = '< a href = "#" class = "ml-3" ' . $ empayHTMLData . ' onclick = "editEmpPayInfo(this)" data-toggle = "tooltip" title = "Edit Information" > < i class = "fas fa-edit " > < / i > < / a > ';
$iconDelete = '< a href = "/payroll/delempayinfo/'.$empPayInfo->emppay_id.'" onclick = "return confirm(\'Are you sure you want to delete this employee?\')" class = "ml-3" data-toggle = "tooltip" title = "Delete Information" > < i class = "fas fa-trash " > < / i > < / a > ';
$iconDelete = '< a href = "/payroll/delempayinfo/'.$empPayInfo->emppay_id.'" onclick = "return confirm(\'Are you sure you want to delete this employee?\')" class = "ml-3" data-toggle = "tooltip" title = "Delete Information" > < i class = "fas fa-trash " > < / i > < / a > ';
$empPayInfoHTMLTable->addRow($empPayInfo->emppay_id, $empPayInfo->paytype_name, $empPayInfo->company_issued_id, $empPayInfo->last_name . ', ' . $empPayInfo->first_name, $empPayInfo->basic_monthly_pay, $empPayInfo->basic_semi_monthly_pay, $empPayInfo->basic_daily_pay, $empPayInfo->basic_hourly_pay, $iconView." ".$iconDelete);
$empPayInfoHTMLTable->addRow($empPayInfo->emppay_id, $empPayInfo->paytype_name, $empPayInfo->company_issued_id, $empPayInfo->last_name . ', ' . $empPayInfo->first_name, $empPayInfo->basic_monthly_pay, $empPayInfo->basic_semi_monthly_pay, $empPayInfo->basic_daily_pay, $empPayInfo->basic_hourly_pay, $iconView." ".$iconEdit." ".$icon Delete);
}
}
$data['tblEmpPayInfo'] = $empPayInfoHTMLTable->generate();
$data['tblEmpPayInfo'] = $empPayInfoHTMLTable->generate();
@ -281,7 +317,7 @@ class PayrollController extends BaseController
return view('payroll/empinfoview', $data);
return view('payroll/empinfoview', $data);
}
}
public function add EmployeePayrollInfo()
public function save EmployeePayrollInfo()
{
{
$empPayInfo = new EmployeePayrollInfo();
$empPayInfo = new EmployeePayrollInfo();
$empPayInfoModel = new EmployeePayrollInfoModel();
$empPayInfoModel = new EmployeePayrollInfoModel();
@ -295,13 +331,17 @@ class PayrollController extends BaseController
$rawData['has_sss'] = isset($rawData['has_sss']) ? 1 : 0;
$rawData['has_sss'] = isset($rawData['has_sss']) ? 1 : 0;
$rawData['has_gsis'] = isset($rawData['has_gsis']) ? 1 : 0;
$rawData['has_gsis'] = isset($rawData['has_gsis']) ? 1 : 0;
$empPayInfo->fill($rawData);
$empPayInfo->fill($rawData);;
$empPayInfoModel->save($empPayInfo);
if($empPayInfoModel->getInsertID() == 0)
if($empPayInfoModel->save($empPayInfo))
return redirect()->back()->withInput()->with('error', 'Failed to add employee payroll type');
{
if(isset($rawData['emppay_id']))
return redirect()->to('/payroll/emppayinfo')->with('message', 'Employee Payroll Successfully Updated');
else
return redirect()->to('/payroll/emppayinfo')->with('message', 'Employee Payroll Type Added');
}
else
else
return redirect()->to('/payroll/emppayinfo')->with('message', 'Employee Payroll Type Added');
return redirect()->back()->withInput()->with('error', 'Failed to add employee payroll type ');
}
}
public function deleteEmployeePayrollInfo($emppayid)
public function deleteEmployeePayrollInfo($emppayid)
@ -552,7 +592,7 @@ class PayrollController extends BaseController
'has_sss' => $empPayInfo->has_sss,
'has_sss' => $empPayInfo->has_sss,
'has_gsis' => $empPayInfo->has_gsis,
'has_gsis' => $empPayInfo->has_gsis,
'actual_work_days' => $payTrans->no_of_days,
'actual_work_days' => $payTrans->no_of_days,
'basic_pay' => $payTrans->no_of_days * $empPayInfo->basic_daily_pay ,
'basic_pay' => 0 ,
'gross_income' => 0,
'gross_income' => 0,
'taxable_income' => 0,
'taxable_income' => 0,
'nontaxable_income' => 0,
'nontaxable_income' => 0,
@ -592,34 +632,9 @@ class PayrollController extends BaseController
);
);
$empPayTransInDedModel->save($empPayTransInDed);
$empPayTransInDedModel->save($empPayTransInDed);
// Updating EmpPayTransaction
if($empPayInDed->is_income)
{
$empPayTransaction->gross_income += $amount;
$empPayTransaction->{$empPayInDed->is_taxable ? 'taxable_income' : 'nontaxable_income'} += $amount;
}
else
{
$empPayTransaction->total_deduction += $amount;
$empPayTransaction->{$empPayInDed->is_taxable ? 'taxable_deduction' : 'nontaxable_deduction'} += $amount;
}
// Less nontaxable deduction to taxable income
$empPayTransaction->taxable_income -= $empPayTransaction->nontaxable_income;
// Compute Income Tax
$payCompute = new PayrollComputation();
$empPayTransaction->income_tax = $payCompute->computeIncomeTax($empPayTransaction->taxable_income);
}
}
$empPayTransaction->gross_income += $empPayTransaction->basic_pay;
$this->computeEmployeePayroll($empPayTransaction->emppaytrans_id, true);
$empPayTransaction->taxable_income += $empPayTransaction->basic_pay;
$empPayTransaction->total_deduction += $empPayTransaction->income_tax;
$empPayTransaction->net_pay = $empPayTransaction->gross_income - $empPayTransaction->total_deduction;
$empPayTransactionModel->save($empPayTransaction);
}
}
return redirect()->back()->withInput()->with('message', 'Payroll processed. Please verify the entries.');
return redirect()->back()->withInput()->with('message', 'Payroll processed. Please verify the entries.');
@ -637,6 +652,12 @@ class PayrollController extends BaseController
return redirect()->back()->withInput()->with('message', 'Days worked updated.');
return redirect()->back()->withInput()->with('message', 'Days worked updated.');
}
}
public function employeePayrollTransactionsRecompute($emppaytransid)
{
$this->computeEmployeePayroll($emppaytransid, true);
return redirect()->back()->with('message', 'Employee Payroll Recomputed');
}
public function addEmpPayTransIncomeDeduction()
public function addEmpPayTransIncomeDeduction()
{
{
$empPayTransInDed = new EmpPayTransIncomeDeduction();
$empPayTransInDed = new EmpPayTransIncomeDeduction();