From 1d116b17bbb01a388f740da132abeaddfc632342 Mon Sep 17 00:00:00 2001 From: paulcortez Date: Sat, 21 Sep 2024 15:38:39 +0800 Subject: [PATCH] Income and deduction Initial page --- app/Config/Routes.php | 3 + app/Controllers/PayrollController.php | 58 +++++ ...-20-165644_CreateEmpPayIncomeDeduction.php | 85 +++++++ app/Entities/EmpPayIncomeDeduction.php | 22 ++ app/Models/EmpPayIncomeDeductionModel.php | 72 ++++++ app/Models/EmployeePayrollInfoModel.php | 10 + .../payroll/compensationbenefitsview.php | 220 +++++++++++++++--- app/Views/payroll/empinfoview.php | 21 +- app/Views/payroll/incomedeductionview.php | 2 +- .../templates/adminlte/generalcontent.php | 6 +- ...ci_session04smbs770qjk243qi32l4h5snrdmmq0j | Bin 2042 -> 0 bytes ...ci_session0b1elrn9d1r20jjs6hitmalm22s3pj1d | Bin 2042 -> 0 bytes ...ci_session16tdahi75qun300vgnqe5itgvmlucqn8 | Bin 2043 -> 0 bytes ...ci_session2jfomqe9j4pfpbjnks3cdn81amjtv6cp | Bin 2042 -> 0 bytes ...ci_session32eoj18iid091jgt73lkode8lo1l9qj5 | Bin 2043 -> 0 bytes ...ci_session5fkvb6ongml4404f5idq557n3he2tiir | 1 - ...ci_session5usso3o0h2h2q51jr419evhpi62r1sc5 | Bin 2038 -> 0 bytes ...ci_session6erq1s2mufj4qfd7vvoobb2gif2c3ass | Bin 2042 -> 0 bytes ...ci_session7sssja7l1ah19q34idn0gapo3tctq0hc | Bin 2047 -> 0 bytes ...ci_session7tu6lrqgs9cq9ekngdp2l4b1440bth31 | Bin 2045 -> 0 bytes ...ci_session84t4k0pt3bme1j6tavpba0qshrtsnedn | Bin 2047 -> 0 bytes ...ci_session94kaf8ucbrrji50nt4oahd39sahaushd | Bin 2045 -> 0 bytes ...ci_session9a5jqc31mph5b488p5v1s63mhco41btf | Bin 2042 -> 0 bytes ...ci_session9c06jcn4lj3eq9mp32s39v9cafg2d04v | 1 - ...ci_session9quhgchsa0gbg29435hlhon46srdjmls | Bin 2038 -> 0 bytes ...ci_sessiona33g6pqmn9mpsfstu3ig2h6gkhfp7hc5 | Bin 2045 -> 0 bytes ...ci_sessionc4a7at9a03njbi7cre8fq3fievfurlta | Bin 2048 -> 0 bytes ...ci_sessioncmsvsi5tdt9mh0th29hlsi89ue3vdlqj | Bin 2048 -> 0 bytes ...ci_sessiond49675tlg7op8flm6ob7035mjmt879iq | Bin 2047 -> 0 bytes ...ci_sessiondufp5hcji5o5ccc59td29vb7ja376qam | 1 - ...ci_sessione4h6mirklmre08ogapd6h46b9cmfhdds | Bin 2043 -> 0 bytes ...ci_sessionef25a4rosvlsh3vii1son53n2rb33p36 | Bin 2045 -> 0 bytes ...ci_sessiones9aaodnqld722dp9k5sa7r2q0reuks6 | Bin 2154 -> 0 bytes ...ci_sessionf8474n1q9h9m5ue96uqbnpbrm1a1khss | Bin 2042 -> 0 bytes ...ci_sessionglfpl1kkgtv8cnugpe4mho2o2tsv6o2h | Bin 2045 -> 0 bytes ...ci_sessiongv4gcfgnqn078qpp1ard6poiav3fgia5 | Bin 2042 -> 0 bytes ...ci_sessioni88hmukj9bvgi7rh916ne2a062vo3e1n | Bin 2042 -> 0 bytes ...ci_sessionio283ocno7it3brl0b39pgui8g2auqtr | Bin 2042 -> 0 bytes ...ci_sessionis83qi31ftg9qobh1r9g0blfdo2sa4p5 | Bin 2042 -> 0 bytes ...ci_sessionisbi658h120sff88v9ble2sq635p4uo7 | Bin 2042 -> 0 bytes ...ci_sessionj3k8n7b2l3eoupbdjpophvvo95r4ji4r | Bin 2052 -> 0 bytes ...ci_sessionj5cederd6uq9t2f55ldjneoj1f4tf6r7 | Bin 2038 -> 0 bytes ...ci_sessionjh6nuktonfoc4r524tej83golgvupvs6 | 1 - ...ci_sessionjkpje6q90bfn35vbjl21spfb8aoru0go | Bin 2047 -> 0 bytes ...ci_sessionjn9p7ks906orj07k63is6d1agqnl5338 | Bin 2144 -> 0 bytes ...ci_sessionk3dcvvkfiejr466dl29613p2ih5ogvpm | Bin 2047 -> 0 bytes ...ci_sessionmj2glv18rnu34fq4v5ee6rukpvgq6se5 | Bin 2042 -> 0 bytes ...ci_sessionmmkl0inmmp1lnd9eb8hm36r4rfk5ov3v | Bin 2154 -> 0 bytes ...ci_sessionn9hpp62i5hgsupgfnbv6laasrg7tl30u | Bin 2042 -> 0 bytes ...ci_sessionnhukbcb50i2uh5b9ci9f2kjk3oebpopa | Bin 2043 -> 0 bytes ...ci_sessionnt0ruj9plalcrbhurughh5kpbt4l17gd | 1 - ...ci_sessionnu0gjf1qhkit99ps0t6qnpdah750h2rp | 1 - ...ci_sessionoe0evlq06idghdia0kictljl64t5vb7s | Bin 2052 -> 0 bytes ...ci_sessionolpjtr7njtrm5e53cfr01sqqu7i6tukp | Bin 2043 -> 0 bytes ...ci_sessionp3t6kaej0pn4eip21op0oefn5bsc5bpr | Bin 2052 -> 0 bytes ...ci_sessionpbqpgh21bvfh0ppfsdsd1mn9q2qqvc4t | Bin 2042 -> 0 bytes ...ci_sessionpkr264p34lljji7inuu4lqslkbqcgp85 | Bin 2048 -> 0 bytes ...ci_sessionplq042rsnjo8o8g5j2ni4fmhlbgvmi6f | Bin 2042 -> 0 bytes ...ci_sessionpt2t9rb3evd5e1s5qg9e47c1lchej1qn | Bin 2045 -> 0 bytes ...ci_sessionqjvfntdp13mrhlq7em99nbkhgr7bet2l | Bin 2042 -> 0 bytes ...ci_sessions5k2gctv5kmmnhmpm7eqeb5m7rqfukcl | 1 - ...ci_sessionssu41dskbgqostehl08h08l0id37fal6 | Bin 2042 -> 0 bytes ...ci_sessionunlahmphpcjbdlktddj8c0mii64p9vpc | Bin 2042 -> 0 bytes 63 files changed, 452 insertions(+), 54 deletions(-) create mode 100644 app/Database/Migrations/2024-09-20-165644_CreateEmpPayIncomeDeduction.php create mode 100644 app/Entities/EmpPayIncomeDeduction.php create mode 100644 app/Models/EmpPayIncomeDeductionModel.php delete mode 100644 writable/session/ci_session04smbs770qjk243qi32l4h5snrdmmq0j delete mode 100644 writable/session/ci_session0b1elrn9d1r20jjs6hitmalm22s3pj1d delete mode 100644 writable/session/ci_session16tdahi75qun300vgnqe5itgvmlucqn8 delete mode 100644 writable/session/ci_session2jfomqe9j4pfpbjnks3cdn81amjtv6cp delete mode 100644 writable/session/ci_session32eoj18iid091jgt73lkode8lo1l9qj5 delete mode 100644 writable/session/ci_session5fkvb6ongml4404f5idq557n3he2tiir delete mode 100644 writable/session/ci_session5usso3o0h2h2q51jr419evhpi62r1sc5 delete mode 100644 writable/session/ci_session6erq1s2mufj4qfd7vvoobb2gif2c3ass delete mode 100644 writable/session/ci_session7sssja7l1ah19q34idn0gapo3tctq0hc delete mode 100644 writable/session/ci_session7tu6lrqgs9cq9ekngdp2l4b1440bth31 delete mode 100644 writable/session/ci_session84t4k0pt3bme1j6tavpba0qshrtsnedn delete mode 100644 writable/session/ci_session94kaf8ucbrrji50nt4oahd39sahaushd delete mode 100644 writable/session/ci_session9a5jqc31mph5b488p5v1s63mhco41btf delete mode 100644 writable/session/ci_session9c06jcn4lj3eq9mp32s39v9cafg2d04v delete mode 100644 writable/session/ci_session9quhgchsa0gbg29435hlhon46srdjmls delete mode 100644 writable/session/ci_sessiona33g6pqmn9mpsfstu3ig2h6gkhfp7hc5 delete mode 100644 writable/session/ci_sessionc4a7at9a03njbi7cre8fq3fievfurlta delete mode 100644 writable/session/ci_sessioncmsvsi5tdt9mh0th29hlsi89ue3vdlqj delete mode 100644 writable/session/ci_sessiond49675tlg7op8flm6ob7035mjmt879iq delete mode 100644 writable/session/ci_sessiondufp5hcji5o5ccc59td29vb7ja376qam delete mode 100644 writable/session/ci_sessione4h6mirklmre08ogapd6h46b9cmfhdds delete mode 100644 writable/session/ci_sessionef25a4rosvlsh3vii1son53n2rb33p36 delete mode 100644 writable/session/ci_sessiones9aaodnqld722dp9k5sa7r2q0reuks6 delete mode 100644 writable/session/ci_sessionf8474n1q9h9m5ue96uqbnpbrm1a1khss delete mode 100644 writable/session/ci_sessionglfpl1kkgtv8cnugpe4mho2o2tsv6o2h delete mode 100644 writable/session/ci_sessiongv4gcfgnqn078qpp1ard6poiav3fgia5 delete mode 100644 writable/session/ci_sessioni88hmukj9bvgi7rh916ne2a062vo3e1n delete mode 100644 writable/session/ci_sessionio283ocno7it3brl0b39pgui8g2auqtr delete mode 100644 writable/session/ci_sessionis83qi31ftg9qobh1r9g0blfdo2sa4p5 delete mode 100644 writable/session/ci_sessionisbi658h120sff88v9ble2sq635p4uo7 delete mode 100644 writable/session/ci_sessionj3k8n7b2l3eoupbdjpophvvo95r4ji4r delete mode 100644 writable/session/ci_sessionj5cederd6uq9t2f55ldjneoj1f4tf6r7 delete mode 100644 writable/session/ci_sessionjh6nuktonfoc4r524tej83golgvupvs6 delete mode 100644 writable/session/ci_sessionjkpje6q90bfn35vbjl21spfb8aoru0go delete mode 100644 writable/session/ci_sessionjn9p7ks906orj07k63is6d1agqnl5338 delete mode 100644 writable/session/ci_sessionk3dcvvkfiejr466dl29613p2ih5ogvpm delete mode 100644 writable/session/ci_sessionmj2glv18rnu34fq4v5ee6rukpvgq6se5 delete mode 100644 writable/session/ci_sessionmmkl0inmmp1lnd9eb8hm36r4rfk5ov3v delete mode 100644 writable/session/ci_sessionn9hpp62i5hgsupgfnbv6laasrg7tl30u delete mode 100644 writable/session/ci_sessionnhukbcb50i2uh5b9ci9f2kjk3oebpopa delete mode 100644 writable/session/ci_sessionnt0ruj9plalcrbhurughh5kpbt4l17gd delete mode 100644 writable/session/ci_sessionnu0gjf1qhkit99ps0t6qnpdah750h2rp delete mode 100644 writable/session/ci_sessionoe0evlq06idghdia0kictljl64t5vb7s delete mode 100644 writable/session/ci_sessionolpjtr7njtrm5e53cfr01sqqu7i6tukp delete mode 100644 writable/session/ci_sessionp3t6kaej0pn4eip21op0oefn5bsc5bpr delete mode 100644 writable/session/ci_sessionpbqpgh21bvfh0ppfsdsd1mn9q2qqvc4t delete mode 100644 writable/session/ci_sessionpkr264p34lljji7inuu4lqslkbqcgp85 delete mode 100644 writable/session/ci_sessionplq042rsnjo8o8g5j2ni4fmhlbgvmi6f delete mode 100644 writable/session/ci_sessionpt2t9rb3evd5e1s5qg9e47c1lchej1qn delete mode 100644 writable/session/ci_sessionqjvfntdp13mrhlq7em99nbkhgr7bet2l delete mode 100644 writable/session/ci_sessions5k2gctv5kmmnhmpm7eqeb5m7rqfukcl delete mode 100644 writable/session/ci_sessionssu41dskbgqostehl08h08l0id37fal6 delete mode 100644 writable/session/ci_sessionunlahmphpcjbdlktddj8c0mii64p9vpc diff --git a/app/Config/Routes.php b/app/Config/Routes.php index b7e8aa7..916aa43 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -44,6 +44,9 @@ $routes->post('payroll/addpaytype', 'PayrollController::addPayrollType'); $routes->get('payroll/emppayinfo', 'PayrollController::employeePayrollInfo'); $routes->post('payroll/addemppayinfo', 'PayrollController::addEmployeePayrollInfo'); +$routes->get('payroll/compben', 'PayrollController::employeeCompensationBenefits'); +$routes->post('payroll/addcompben', 'PayrollController::addEmployeeCompensationBenefits'); + // Administrator Routes $routes->get('adminuser', 'AdministratorController::index'); $routes->get('adminuser/newuser', 'AdministratorController::newUserView'); diff --git a/app/Controllers/PayrollController.php b/app/Controllers/PayrollController.php index ef1b3a0..3c04783 100644 --- a/app/Controllers/PayrollController.php +++ b/app/Controllers/PayrollController.php @@ -11,6 +11,7 @@ use App\Models\IncomeDeductionModel; use App\Models\PayrollTypeModel; use App\Models\EmployeePayrollInfoModel; use App\Models\EmployeeModel; +use App\Models\EmpPayIncomeDeductionModel; // Entities @@ -19,6 +20,7 @@ use App\Entities\IncomeDeduction; use App\Entities\PayrollType; use App\Entities\EmployeePayrollInfo; use App\Entities\Employee; +use App\Entities\EmpPayIncomeDeduction; // Class Library use App\ClassLib\MiscLib; @@ -238,4 +240,60 @@ class PayrollController extends BaseController else return redirect()->to('/payroll/emppayinfo')->with('message', 'Employee Payroll Type Added'); } + + public function employeeCompensationBenefits() + { + $empPayInfoModel = new EmployeePayrollInfoModel(); + $incomeDeductionModel = new IncomeDeductionModel(); + $empPayInDedModel = new EmpPayIncomeDeductionModel(); + + $data['incomeList'] = $incomeDeductionModel->where("is_income", 1)->findAll(); + $data['deductionList'] = $incomeDeductionModel->where("is_income", 0)->findAll(); + $data['empPayInfos'] = $empPayInfoModel->getAllEmpPayInfoJoinedEmpPayType(); + $data['empLoaded'] = false; + + if($this->request->getGet('empid') != null) + { + $data['empLoaded'] = true; + $data['selectedEmployee'] = $empPayInfoModel->getEmpPayInfoJoinedEmpPayTypeByEmpID($this->request->getGet('empid')); + $data['empPayIncomeList'] = $empPayInDedModel->getEmpPayInDedByEmpPayId($data['selectedEmployee']->emppay_id, true); + $data['empPayDeductionList'] = $empPayInDedModel->getEmpPayInDedByEmpPayId($data['selectedEmployee']->emppay_id, false); + } + + return view('payroll/compensationbenefitsview', $data); + } + + public function addEmployeeCompensationBenefits() + { + $empPayInDed = new EmpPayIncomeDeduction(); + $empPayInDedModel = new EmpPayIncomeDeductionModel(); + + $rawData = $this->request->getPost(); + + // Initialize all payroll type fields to 0 + $rawData['is_fixed_amt'] = 0; + $rawData['is_percent_amt'] = 0; + + // Handle radio button input + if (isset($rawData['amount_type'])) { + switch ($rawData['amount_type']) { + case 'fixed': + $rawData['is_fixed_amt'] = 1; + break; + case 'perc': + $rawData['is_percent_amt'] = 1; + break; + } + } + + $rawData['is_override'] = isset($rawData['is_override']) ? 1 : 0; + + $empPayInDed->fill($rawData); + $empPayInDedModel->save($empPayInDed); + + if($empPayInDedModel->getInsertID() == 0) + return redirect()->back()->withInput()->with('error', 'Failed to add employee compensation benefits'); + else + return redirect()->to('/payroll/compben?empid='.$this->request->getPost('emp_id'))->with('message', 'Employee Compensation Benefits Added'); + } } diff --git a/app/Database/Migrations/2024-09-20-165644_CreateEmpPayIncomeDeduction.php b/app/Database/Migrations/2024-09-20-165644_CreateEmpPayIncomeDeduction.php new file mode 100644 index 0000000..d09cdba --- /dev/null +++ b/app/Database/Migrations/2024-09-20-165644_CreateEmpPayIncomeDeduction.php @@ -0,0 +1,85 @@ +forge->addField([ + 'emppayinded_id' => [ + 'type' => 'INT', + 'constraint' => 11, + 'unsigned' => true, + 'auto_increment' => true + ], + 'emppay_id' => [ + 'type' => 'INT', + 'constraint' => 11, + 'unsigned' => true, + ], + 'inded_id' => [ + 'type' => 'INT', + 'constraint' => 11, + 'unsigned' => true, + ], + 'is_fixed_amt' => [ + 'type' => 'TINYINT', + 'constraint' => 1, + 'null' => false + ], + 'is_percent_amt' => [ + 'type' => 'TINYINT', + 'constraint' => 1, + 'null' => false + ], + 'amount' => [ + 'type' => 'DECIMAL', + 'constraint' => '12,4', + 'null' => false + ], + 'is_override' => [ + 'type' => 'TINYINT', + 'constraint' => 1, + 'null' => false + ], + + + // Common fields + 'created_at' => [ + 'type' => 'DATETIME', + 'null' => true, + ], + 'created_by' => [ + 'type' => 'VARCHAR', + 'constraint' => '20', + 'null' => true + ], + 'updated_at' => [ + 'type' => 'DATETIME', + 'null' => true, + ], + 'updated_by' => [ + 'type' => 'VARCHAR', + 'constraint' => '20', + 'null' => true + ], + 'deleted_at' => [ + 'type' => 'DATETIME', + 'null' => true, + ], + ]); + + $this->forge->addKey('emppayinded_id', true); + $this->forge->addForeignKey('emppay_id', 'emp_pay_info', 'emppay_id', 'CASCADE', 'RESTRICT'); + $this->forge->addForeignKey('inded_id', 'pay_income_deduction', 'inded_id', 'CASCADE', 'RESTRICT'); + $this->forge->createTable('emp_pay_inded'); + } + + public function down() + { + $this->forge->dropTable('emp_pay_inded'); + } +} diff --git a/app/Entities/EmpPayIncomeDeduction.php b/app/Entities/EmpPayIncomeDeduction.php new file mode 100644 index 0000000..ca1b334 --- /dev/null +++ b/app/Entities/EmpPayIncomeDeduction.php @@ -0,0 +1,22 @@ + null, + 'emppay_id' => null, + 'inded_id' => null, + 'is_fixed_amt' => null, + 'is_percent_amt' => null, + 'amount' => null, + 'is_override' => null, + ]; + + protected $datamap = []; + protected $dates = ['created_at', 'updated_at', 'deleted_at']; + protected $casts = []; +} diff --git a/app/Models/EmpPayIncomeDeductionModel.php b/app/Models/EmpPayIncomeDeductionModel.php new file mode 100644 index 0000000..35b5714 --- /dev/null +++ b/app/Models/EmpPayIncomeDeductionModel.php @@ -0,0 +1,72 @@ +user()->employee_id; + return $data; + } + + public function assignUpdatedAt(array $data) + { + $data['data']['updated_at'] = date('Y-m-d H:i:s'); + $data['data']['updated_by'] = auth()->user()->employee_id; + return $data; + } + + public function getEmpPayInDedByEmpPayId($empPayId, $isIncome) + { + $builder = $this->db->table('emp_pay_inded'); + $builder->select('*'); + $builder->join('pay_income_deduction', 'pay_income_deduction.inded_id = emp_pay_inded.inded_id'); + $builder->where(['emp_pay_inded.emppay_id' => $empPayId, 'pay_income_deduction.is_income' => $isIncome]); + return $builder->get()->getResult(); + } +} diff --git a/app/Models/EmployeePayrollInfoModel.php b/app/Models/EmployeePayrollInfoModel.php index 0e146f3..fc69b7f 100644 --- a/app/Models/EmployeePayrollInfoModel.php +++ b/app/Models/EmployeePayrollInfoModel.php @@ -76,4 +76,14 @@ class EmployeePayrollInfoModel extends Model $builder->join('pay_type', 'pay_type.paytype_id = emp_pay_info.paytype_id'); return $builder->get()->getResult(); } + + public function getEmpPayInfoJoinedEmpPayTypeByEmpID($empID) + { + $builder = $this->db->table('emp_pay_info'); + $builder->select('*'); + $builder->join('employee', 'employee.employee_id = emp_pay_info.employee_id'); + $builder->join('pay_type', 'pay_type.paytype_id = emp_pay_info.paytype_id'); + $builder->where('emp_pay_info.employee_id', $empID); + return $builder->get()->getRow(); + } } diff --git a/app/Views/payroll/compensationbenefitsview.php b/app/Views/payroll/compensationbenefitsview.php index cfb980b..c48a79c 100644 --- a/app/Views/payroll/compensationbenefitsview.php +++ b/app/Views/payroll/compensationbenefitsview.php @@ -27,13 +27,13 @@ section('main') ?> - -