From 82094166aa33ae03ad8e56badedbbd87c82d2328 Mon Sep 17 00:00:00 2001 From: paulcortez Date: Tue, 22 Oct 2024 18:24:06 +0800 Subject: [PATCH] fixing computation on allowances fixing computation on allowances --- app/ClassLib/PayrollComputation.php | 12 ++ app/Config/Routes.php | 4 +- app/Controllers/PayrollController.php | 32 ++++- ...rkHrsBasedOnEmpPayTransIncomeDeduction.php | 30 ++++ ...AddWrkDyasBasedOnEmpPayIncomeDeduction.php | 30 ++++ app/Entities/EmpPayIncomeDeduction.php | 1 + app/Entities/EmpPayTransIncomeDeduction.php | 1 + app/Models/EmpPayIncomeDeductionModel.php | 1 + .../EmpPayTransIncomeDeductionModel.php | 1 + .../payroll/compensationbenefitsview.php | 49 +++++-- app/Views/payroll/emppaytransactionview.php | 134 ++++++++++++++++-- 11 files changed, 264 insertions(+), 31 deletions(-) create mode 100644 app/Database/Migrations/2024-10-20-031112_AddWrkHrsBasedOnEmpPayTransIncomeDeduction.php create mode 100644 app/Database/Migrations/2024-10-20-032425_AddWrkDyasBasedOnEmpPayIncomeDeduction.php diff --git a/app/ClassLib/PayrollComputation.php b/app/ClassLib/PayrollComputation.php index 6b72391..1e2fa33 100644 --- a/app/ClassLib/PayrollComputation.php +++ b/app/ClassLib/PayrollComputation.php @@ -51,4 +51,16 @@ class PayrollComputation return $tax; } + + // rawData should contain is_fixed_amt, is_percent_amt, worked_days_based and amount + // $empPayTrans is from EmployeePayTransactionModel(); + public function computeIncomeDeductionByComputationType($rawData, $empPayTrans) + { + $amount = 0; + if($rawData['is_fixed_amt']) $amount = $rawData['amount']; + else if($rawData['is_percent_amt']) $amount = ($rawData['amount'] / 100) * $empPayTrans->basic_pay; + else if($rawData['worked_days_based']) $amount = $rawData['amount'] * $empPayTrans->actual_work_days; + + return $amount; + } } \ No newline at end of file diff --git a/app/Config/Routes.php b/app/Config/Routes.php index d7a99d4..c617343 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -46,7 +46,7 @@ $routes->post('payroll/saveemppayinfo', 'PayrollController::saveEmployeePayrollI $routes->get('payroll/delempayinfo/(:num)', 'PayrollController::deleteEmployeePayrollInfo/$1'); $routes->get('payroll/compben', 'PayrollController::employeeCompensationBenefits'); -$routes->post('payroll/addcompben', 'PayrollController::addEmployeeCompensationBenefits'); +$routes->post('payroll/savecompben', 'PayrollController::saveEmployeeCompensationBenefits'); $routes->post('payroll/delcomben', 'PayrollController::deleteEmployeeCompensationBenefits'); $routes->get('payroll/paysettings', 'PayrollController::payrollSettings'); @@ -59,7 +59,7 @@ $routes->get('payroll/emppaytrans/(:num)', 'PayrollController::employeePayrollTr $routes->get('payroll/emppaytransinit/(:num)/(:num)/(:num)', 'PayrollController::empPayTransInitializePayroll/$1/$2/$3'); $routes->post('payroll/emppaytransupdateworkdays', 'PayrollController::employeePayrollTransactionsEditDaysWorked'); $routes->get('payroll/emppaytransrecom/(:num)', 'PayrollController::employeePayrollTransactionsRecompute/$1'); -$routes->post('payroll/emppaytransaddinded', 'PayrollController::addEmpPayTransIncomeDeduction'); +$routes->post('payroll/saveemppaytransaddinded', 'PayrollController::saveEmpPayTransIncomeDeduction'); $routes->get('payroll/emppaytransdelinded/(:num)/(:num)', 'PayrollController::deleteEmpPayTransIncomeDeduction/$1/$2'); diff --git a/app/Controllers/PayrollController.php b/app/Controllers/PayrollController.php index da58b75..e7cc59d 100644 --- a/app/Controllers/PayrollController.php +++ b/app/Controllers/PayrollController.php @@ -383,7 +383,7 @@ class PayrollController extends BaseController return view('payroll/compensationbenefitsview', $data); } - public function addEmployeeCompensationBenefits() + public function saveEmployeeCompensationBenefits() { $empPayInDed = new EmpPayIncomeDeduction(); $empPayInDedModel = new EmpPayIncomeDeductionModel(); @@ -393,6 +393,7 @@ class PayrollController extends BaseController // Initialize all payroll type fields to 0 $rawData['is_fixed_amt'] = 0; $rawData['is_percent_amt'] = 0; + $rawData['worked_days_based'] = 0; // Handle radio button input if (isset($rawData['amount_type'])) { @@ -403,6 +404,9 @@ class PayrollController extends BaseController case 'perc': $rawData['is_percent_amt'] = 1; break; + case 'daysbased': + $rawData['worked_days_based'] = 1; + break; } } @@ -615,8 +619,9 @@ class PayrollController extends BaseController $empPayTransInDed = new EmpPayTransIncomeDeduction(); $empPayTransInDedModel = new EmpPayTransIncomeDeductionModel(); - $amount = $empPayInDed->is_fixed_amt ? $empPayInDed->amount : ($empPayInDed->amount / 100) * $empPayTransaction->basic_pay; - + $payCompute = new PayrollComputation(); + $amount = $payCompute->computeIncomeDeductionByComputationType($rawData, $empPayTransaction); + $empPayTransInDed->fill( ['emppaytrans_id' => $empPayTransaction->emppaytrans_id, 'inded_id' => $empPayInDed->inded_id, @@ -628,6 +633,7 @@ class PayrollController extends BaseController 'include_in_gross' => $empPayInDed->include_in_gross, 'is_fixed_amt' => $empPayInDed->is_fixed_amt, 'is_percent_amt' => $empPayInDed->is_percent_amt, + 'worked_days_based' => $empPayInDed->worked_days_based, 'amount' => $amount, 'base_amount' => $empPayInDed->amount, 'is_override' => $empPayInDed->is_override] @@ -660,7 +666,7 @@ class PayrollController extends BaseController return redirect()->back()->with('message', 'Employee Payroll Recomputed'); } - public function addEmpPayTransIncomeDeduction() + public function saveEmpPayTransIncomeDeduction() { $empPayTransInDed = new EmpPayTransIncomeDeduction(); $empPayTransInDedModel = new EmpPayTransIncomeDeductionModel(); @@ -672,6 +678,7 @@ class PayrollController extends BaseController // Initialize all payroll type fields to 0 $rawData['is_fixed_amt'] = 0; $rawData['is_percent_amt'] = 0; + $rawData['worked_days_based'] = 0; // Handle radio button input if (isset($rawData['amount_type'])) { @@ -682,6 +689,9 @@ class PayrollController extends BaseController case 'perc': $rawData['is_percent_amt'] = 1; break; + case 'daysbased': + $rawData['worked_days_based'] = 1; + break; } } @@ -690,10 +700,13 @@ class PayrollController extends BaseController $empPayTrans = $empPayTransactionModel->find($rawData['emppaytrans_id']); $incomeDeduction = $incomeDeductionModel->find($rawData['inded_id']); - $amount = $rawData['is_fixed_amt'] ? $rawData['amount'] : ($rawData['amount'] / 100) * $empPayTrans->basic_pay; + //$amount = $rawData['is_fixed_amt'] ? $rawData['amount'] : ($rawData['amount'] / 100) * $empPayTrans->basic_pay; + $payCompute = new PayrollComputation(); + $amount = $payCompute->computeIncomeDeductionByComputationType($rawData, $empPayTrans); $empPayTransInDed->fill( - ['emppaytrans_id' => $rawData['emppaytrans_id'], + ['emppaytransinded_id' => (isset($rawData['emppaytransinded_id'])) ? $rawData['emppaytransinded_id'] : null, + 'emppaytrans_id' => $rawData['emppaytrans_id'], 'inded_id' => $rawData['inded_id'], 'payslip_display' => $incomeDeduction->payslip_display, 'inded_name' => $incomeDeduction->inded_name, @@ -703,6 +716,7 @@ class PayrollController extends BaseController 'include_in_gross' => $incomeDeduction->include_in_gross, 'is_fixed_amt' => $rawData['is_fixed_amt'], 'is_percent_amt' => $rawData['is_percent_amt'], + 'worked_days_based' => $rawData['worked_days_based'], 'amount' => $amount, 'base_amount' => $rawData['amount'], 'is_override' => $rawData['is_override']] @@ -711,7 +725,11 @@ class PayrollController extends BaseController if($empPayTransInDedModel->save($empPayTransInDed)) { $this->computeEmployeePayroll($rawData['emppaytrans_id'], true, $empPayTransactionModel, $empPayTransInDedModel); - return redirect()->back()->with('message', 'Income or Deduction Added'); + + if(isset($rawData['emppaytransinded_id'])) + return redirect()->back()->with('message', 'Income or Deduction Updated'); + else + return redirect()->back()->with('message', 'Income or Deduction Added'); } else return redirect()->back()->withInput()->with('error', 'Failed to add income or deduction'); diff --git a/app/Database/Migrations/2024-10-20-031112_AddWrkHrsBasedOnEmpPayTransIncomeDeduction.php b/app/Database/Migrations/2024-10-20-031112_AddWrkHrsBasedOnEmpPayTransIncomeDeduction.php new file mode 100644 index 0000000..2bd1bfa --- /dev/null +++ b/app/Database/Migrations/2024-10-20-031112_AddWrkHrsBasedOnEmpPayTransIncomeDeduction.php @@ -0,0 +1,30 @@ + [ + 'type' => 'TINYINT', + 'constraint' => 1, + 'null' => false, + 'after' => 'is_percent_amt', + ], + ]; + $this->forge->addColumn('emp_pay_trans_inded', $fields); + } + + public function down() + { + $fields = [ + 'worked_days_based', + ]; + + $this->forge->dropColumn('emp_pay_trans_inded', $fields); + } +} diff --git a/app/Database/Migrations/2024-10-20-032425_AddWrkDyasBasedOnEmpPayIncomeDeduction.php b/app/Database/Migrations/2024-10-20-032425_AddWrkDyasBasedOnEmpPayIncomeDeduction.php new file mode 100644 index 0000000..8559a07 --- /dev/null +++ b/app/Database/Migrations/2024-10-20-032425_AddWrkDyasBasedOnEmpPayIncomeDeduction.php @@ -0,0 +1,30 @@ + [ + 'type' => 'TINYINT', + 'constraint' => 1, + 'null' => false, + 'after' => 'is_percent_amt', + ], + ]; + $this->forge->addColumn('emp_pay_inded', $fields); + } + + public function down() + { + $fields = [ + 'worked_days_based', + ]; + + $this->forge->dropColumn('emp_pay_inded', $fields); + } +} diff --git a/app/Entities/EmpPayIncomeDeduction.php b/app/Entities/EmpPayIncomeDeduction.php index e3ae277..3d810d2 100644 --- a/app/Entities/EmpPayIncomeDeduction.php +++ b/app/Entities/EmpPayIncomeDeduction.php @@ -13,6 +13,7 @@ class EmpPayIncomeDeduction extends Entity 'inded_id' => null, 'is_fixed_amt' => null, 'is_percent_amt' => null, + 'worked_days_based' => null, 'amount' => null, 'is_override' => null, ]; diff --git a/app/Entities/EmpPayTransIncomeDeduction.php b/app/Entities/EmpPayTransIncomeDeduction.php index 9996449..c9a684f 100644 --- a/app/Entities/EmpPayTransIncomeDeduction.php +++ b/app/Entities/EmpPayTransIncomeDeduction.php @@ -18,6 +18,7 @@ class EmpPayTransIncomeDeduction extends Entity 'include_in_gross' => null, 'is_fixed_amt' => null, 'is_percent_amt' => null, + 'worked_days_based' => null, 'amount' => null, 'base_amount' => null, 'is_override' => null, diff --git a/app/Models/EmpPayIncomeDeductionModel.php b/app/Models/EmpPayIncomeDeductionModel.php index fb3d341..cd7e8b8 100644 --- a/app/Models/EmpPayIncomeDeductionModel.php +++ b/app/Models/EmpPayIncomeDeductionModel.php @@ -17,6 +17,7 @@ class EmpPayIncomeDeductionModel extends Model 'inded_id', 'is_fixed_amt', 'is_percent_amt', + 'worked_days_based', 'amount', 'is_override', ]; diff --git a/app/Models/EmpPayTransIncomeDeductionModel.php b/app/Models/EmpPayTransIncomeDeductionModel.php index bba8c9d..0c637ff 100644 --- a/app/Models/EmpPayTransIncomeDeductionModel.php +++ b/app/Models/EmpPayTransIncomeDeductionModel.php @@ -22,6 +22,7 @@ class EmpPayTransIncomeDeductionModel extends Model 'include_in_gross', 'is_fixed_amt', 'is_percent_amt', + 'worked_days_based', 'amount', 'base_amount', 'is_override']; diff --git a/app/Views/payroll/compensationbenefitsview.php b/app/Views/payroll/compensationbenefitsview.php index bdbb915..bfebea3 100644 --- a/app/Views/payroll/compensationbenefitsview.php +++ b/app/Views/payroll/compensationbenefitsview.php @@ -35,7 +35,7 @@