You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kwpayroll/app/Controllers/PayrollController.php

117 lines
4.0 KiB
PHP

<?php
namespace App\Controllers;
use App\Controllers\BaseController;
use CodeIgniter\HTTP\ResponseInterface;
// Models
use App\Models\PayrollGroupModel;
use App\Models\IncomeDeductionModel;
// Entities
use App\Entities\PayrollGroup;
use App\Entities\IncomeDeduction;
// Class Library
use App\ClassLib\MiscLib;
class PayrollController extends BaseController
{
public function index()
{
return redirect()->to(base_url('/login'));
}
public function payrollGroup()
{
$payGroups = (new PayrollGroupModel())->findAll();
$payGroupHTMLTable = new \CodeIgniter\View\Table();
$payGroupHTMLTable->setTemplate(MiscLib::adminLTETableTemplate());
if($payGroups == null)
$data['tblPayGroup'] = '<p>No groups found.</p>';
else
{
foreach($payGroups as $group)
{
$payGroupHTMLTable->setHeading('ID', 'Group Name', 'Action');
$iconView = '<a href="#" class="ml-3" data-toggle="tooltip" title="View Group Information"><i class="fas fa-eye "></i></a>';
$payGroupHTMLTable->addRow($group->pay_group_id, $group->pay_group_code, $group->pay_group_name, "$iconView");
}
$data['tblPayGroup'] = $payGroupHTMLTable->generate();
}
return view('payroll/paygroupview', $data);
}
public function addPayrollGroup()
{
$payrollGroup = new PayrollGroup();
$payrollGroupModel = new PayrollGroupModel();
$rawData = $this->request->getPost();
$payrollGroup->fill($rawData);
$payrollGroupModel->save($payrollGroup);
if($payrollGroupModel->getInsertID() == 0)
return redirect()->back()->withInput()->with('error', 'Failed to add payroll group');
else
return redirect()->to('/payroll/paygroup')->with('message', 'Payroll Group Added');
}
public function incomeDeduction()
{
$incomeDeductions = (new IncomeDeductionModel())->findAll();
$inDedHTMLTable = new \CodeIgniter\View\Table();
$inDedHTMLTable->setTemplate(MiscLib::adminLTETableTemplate());
if($incomeDeductions == null)
$data['tblIncomeDeduction'] = '<p>No income and deduction found.</p>';
else
{
foreach($incomeDeductions as $incomeDeduction)
{
$inDedHTMLTable->setHeading('ID', 'Payslip Display', 'COA Code', 'Deduction Name', 'Income', 'Taxable', 'Include in Gross', 'Action');
$iconView = '<a href="#" class="ml-3" data-toggle="tooltip" title="View Information"><i class="fas fa-eye "></i></a>';
$inDedHTMLTable->addRow($incomeDeduction->inded_id, $incomeDeduction->payslip_display, $incomeDeduction->coa_code, $incomeDeduction->income_deduction_name, ($incomeDeduction->is_income) ? 'Yes' : 'No', ($incomeDeduction->is_taxable) ? 'Yes' : 'No', ($incomeDeduction->include_in_gross) ? 'Yes' : 'No', $iconView);
}
$data['tblIncomeDeduction'] = $inDedHTMLTable->generate();
}
return view('payroll/incomedeductionview', $data);
}
public function addIncomeDeduction()
{
$incomeDeduction = new IncomeDeduction();
$incomeDeductionModel = new IncomeDeductionModel();
$rawData = $this->request->getPost();
// Handle checkbox inputs
$rawData['is_income'] = isset($rawData['is_income']) ? 1 : 0; // Set to 1 if checked, 0 if not
$rawData['is_taxable'] = isset($rawData['is_taxable']) ? 1 : 0; // Same for taxable
$rawData['include_in_gross'] = isset($rawData['include_in_gross']) ? 1 : 0; // Same for include in gross
$incomeDeduction->fill($rawData);
$incomeDeductionModel->save($incomeDeduction);
if($incomeDeductionModel->getInsertID() == 0)
return redirect()->back()->withInput()->with('error', 'Failed to add income or deduction');
else
return redirect()->to('/payroll/inded')->with('message', 'Income or Deduction Added');
}
}