From 2824be5e9a37bc8de15e0d4e2612beca6f61feec Mon Sep 17 00:00:00 2001 From: paulcortez Date: Sat, 7 Dec 2024 12:00:57 +0800 Subject: [PATCH] added downloading of report added downloading of report --- app/ClassLib/MiscLib.php | 8 ++ app/Config/Routes.php | 3 + app/Controllers/PayrollController.php | 81 ++++++++++++++++- .../EmpPayTransIncomeDeductionModel.php | 4 +- app/Models/EmployeePayTransactionModel.php | 17 ++++ app/Views/payroll/emppaytransactionview.php | 2 +- app/Views/payroll/emppaytransreportview.php | 91 +++++++++++++++++++ app/Views/payroll/paytransactionreview.php | 1 + 8 files changed, 202 insertions(+), 5 deletions(-) create mode 100644 app/Views/payroll/emppaytransreportview.php diff --git a/app/ClassLib/MiscLib.php b/app/ClassLib/MiscLib.php index 4b2631d..7ec0319 100644 --- a/app/ClassLib/MiscLib.php +++ b/app/ClassLib/MiscLib.php @@ -43,6 +43,14 @@ class MiscLib return ($key !== false) ? $data[$key] : null; } + public static function searchFromAsocArrayByKey($key, $data) + { + if(array_key_exists($key, $data)) + return $data[$key]; + else + return false; + } + public static function getAttFileInfo($name) { $fileInfo = []; diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 5f25499..b2c0ca7 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -71,6 +71,9 @@ $routes->get('payroll/emppaytransrecom/(:num)', 'PayrollController::employeePayr $routes->post('payroll/saveemppaytransaddinded', 'PayrollController::saveEmpPayTransIncomeDeduction'); $routes->get('payroll/emppaytransdelinded/(:num)/(:num)', 'PayrollController::deleteEmpPayTransIncomeDeduction/$1/$2'); +$routes->get('payroll/emppaytransreport/(:num)/(:num)', 'PayrollController::empPayransReport/$1/$2'); + + $routes->get('payroll/paytransreview/(:num)', 'PayrollController::payrollTransactionsReview/$1'); //$routes->post('t', 'PayrollController::test'); diff --git a/app/Controllers/PayrollController.php b/app/Controllers/PayrollController.php index dfe6e92..492398b 100644 --- a/app/Controllers/PayrollController.php +++ b/app/Controllers/PayrollController.php @@ -606,8 +606,8 @@ class PayrollController extends BaseController $empPayTransInDedModel = new EmpPayTransIncomeDeductionModel(); $data['emppaytrans'][] = [ "empPayTrans" => $trans, - "empPayTransInDedIncome" => $empPayTransInDedModel->getEmpPayTransInDedxInDedByEmpTransIdIsIncome($trans->emppaytrans_id, true), - "empPayTransInDedDeduction" => $empPayTransInDedModel->getEmpPayTransInDedxInDedByEmpTransIdIsIncome($trans->emppaytrans_id, false) + "empPayTransInDedIncome" => $empPayTransInDedModel->where(["emppaytrans_id"=>$trans->emppaytrans_id, "is_income"=>true])->findAll(), + "empPayTransInDedDeduction" => $empPayTransInDedModel->where(["emppaytrans_id"=>$trans->emppaytrans_id, "is_income"=>false])->findAll() ]; } @@ -913,6 +913,83 @@ class PayrollController extends BaseController return redirect()->back()->with('error', 'Failed to delete income or deduction'); } + public function empPayransReport($paytransid, $paygroupid) + { + $data['payTrans'] = (new PayrollTransactionModel())->find($paytransid); + $data['payGroup'] = (new PayrollGroupModel())->find($paygroupid); + + $employeePayTransactionModel = new EmployeePayTransactionModel(); + $empPayTransInDeds = $employeePayTransactionModel->getEmpPayTransInDedByPayTransIdGroupId($paytransid, $paygroupid); + $empPayTransactions = $employeePayTransactionModel->getEmpPayTransByPayTransIdGroupId($paytransid, $paygroupid); + + $empPayTransHTMLTable = new \CodeIgniter\View\Table(); + $empPayTransHTMLTable->setTemplate(MiscLib::adminLTEDataTableTemplate('tblEmpPayTransInDed')); + + //return view('payroll/emppaytransreportview', $data); + + $inDedList = []; + foreach($empPayTransInDeds as $empPayTransInDed) + { + if(!in_array("[".$empPayTransInDed->inded_id."]".$empPayTransInDed->payslip_display, $inDedList)) + $inDedList[] = "[".$empPayTransInDed->inded_id."]".$empPayTransInDed->payslip_display; + } + + $empInDedList = []; + foreach($empPayTransInDeds as $empPayTransInDed) + { + if(isset($empInDedList[$empPayTransInDed->employee_id.':'.$empPayTransInDed->inded_id])) + $empInDedList[$empPayTransInDed->employee_id.':'.$empPayTransInDed->inded_id] += $empPayTransInDed->amount; + else + $empInDedList[$empPayTransInDed->employee_id.':'.$empPayTransInDed->inded_id] = $empPayTransInDed->amount; + } + + + $HTMLColumns = [ + 'ID', + 'Name', + 'Branch', + 'Daily Basic', + 'Work Days', + 'Income Tax', + 'Gross Amt', + 'Deduction Amt', + 'Net Amt' + ]; + $HTMLColumns = array_merge($HTMLColumns, $inDedList); + $empPayTransHTMLTable->setHeading($HTMLColumns); + + foreach($empPayTransactions as $empPayTrans) + { + $HTMLColValues = [ + $empPayTrans->employee_id, + $empPayTrans->last_name . ', ' . $empPayTrans->first_name, + $empPayTrans->branch_code, + $empPayTrans->basic_pay, + $empPayTrans->actual_work_days, + $empPayTrans->income_tax, + $empPayTrans->gross_income, + $empPayTrans->total_deduction, + $empPayTrans->net_pay + ]; + + foreach($inDedList as $inDedId) + { + preg_match_all('/\[(.*?)\]/', $inDedId, $matches); + + if(isset($empInDedList[$empPayTrans->employee_id.':'.$matches[1][0]])) + $HTMLColValues = array_merge($HTMLColValues, [$empInDedList[$empPayTrans->employee_id.':'.$matches[1][0]]]); + else + $HTMLColValues = array_merge($HTMLColValues, ['0.00']); + } + + $empPayTransHTMLTable->addRow($HTMLColValues); + } + + $data['tblEmpPayTransInDed'] = $empPayTransHTMLTable->generate(); + + return view('payroll/emppaytransreportview', $data); + } + public function payrollTransactionsReview($paytransid) { $data['paytransid'] = $paytransid; diff --git a/app/Models/EmpPayTransIncomeDeductionModel.php b/app/Models/EmpPayTransIncomeDeductionModel.php index 11d9853..eb7a2ce 100644 --- a/app/Models/EmpPayTransIncomeDeductionModel.php +++ b/app/Models/EmpPayTransIncomeDeductionModel.php @@ -65,7 +65,7 @@ class EmpPayTransIncomeDeductionModel extends Model return $data; } - public function getEmpPayTransInDedxInDedByEmpTransId($emptransid) + /*public function getEmpPayTransInDedxInDedByEmpTransId($emptransid) { $builder = $this->db->table('emp_pay_trans_inded'); $builder->select('*'); @@ -84,7 +84,7 @@ class EmpPayTransIncomeDeductionModel extends Model 'emp_pay_trans_inded.is_income' => $isincome, 'emp_pay_trans_inded.deleted_at' => null]); return $builder->get()->getResult(); - } + }*/ public function getTotalIncomeDeduction($emppaytransid, $isincome, $istaxable) { diff --git a/app/Models/EmployeePayTransactionModel.php b/app/Models/EmployeePayTransactionModel.php index cbcd76b..a3e81c6 100644 --- a/app/Models/EmployeePayTransactionModel.php +++ b/app/Models/EmployeePayTransactionModel.php @@ -103,6 +103,23 @@ class EmployeePayTransactionModel extends Model 'emp_pay_trans.deleted_at' => null]); return $builder->get()->getResult(); } + public function getEmpPayTransInDedByPayTransIdGroupId($paytransid, $paygroupid) + { + $builder = $this->db->table('emp_pay_trans'); + $builder->select('*'); + $builder->join('pay_trans', 'pay_trans.paytrans_id = emp_pay_trans.paytrans_id'); + $builder->join('company_branch', 'company_branch.branch_code = emp_pay_trans.branch_code'); + $builder->join('company_dept', 'company_dept.dept_id = emp_pay_trans.dept_id'); + $builder->join('job_title', 'job_title.job_title_id = emp_pay_trans.job_title_id'); + $builder->join('pay_group', 'pay_group.pay_group_id = emp_pay_trans.pay_group_id'); + $builder->join('emp_status', 'emp_status.emp_status_id = emp_pay_trans.emp_status_id'); + $builder->join('employee', 'employee.employee_id = emp_pay_trans.employee_id'); + $builder->join('emp_pay_trans_inded', 'emp_pay_trans_inded.emppaytrans_id = emp_pay_trans.emppaytrans_id'); + $builder->where(['emp_pay_trans.paytrans_id' => $paytransid, + 'emp_pay_trans.pay_group_id' => $paygroupid, + 'emp_pay_trans.deleted_at' => null]); + return $builder->get()->getResult(); + } public function changeActualDaysWorked($emppaytransid, $actualworkdays) { diff --git a/app/Views/payroll/emppaytransactionview.php b/app/Views/payroll/emppaytransactionview.php index d1ffa25..9946ee7 100644 --- a/app/Views/payroll/emppaytransactionview.php +++ b/app/Views/payroll/emppaytransactionview.php @@ -545,7 +545,7 @@ Initialize Payroll - View Report Summary + View Report Summary Initialize Employee Re-open Payroll diff --git a/app/Views/payroll/emppaytransreportview.php b/app/Views/payroll/emppaytransreportview.php new file mode 100644 index 0000000..0da8639 --- /dev/null +++ b/app/Views/payroll/emppaytransreportview.php @@ -0,0 +1,91 @@ + +extend('templates/adminlte/generalcontent') ?> + + + +section('title') ?>Employee Payroll TransactionendSection() ?> + + + +section('css') ?> + + + + + + +endSection() ?> + + + +section('bodyclass') ?>sidebar-miniendSection() ?> + + + +section('containertitle') ?>Employee Payroll TransactionendSection() ?> + + + +section('breadcrumbs') ?> + + + +endSection() ?> + + + +section('main') ?> + + +
+
+
+
+

List of Employee for Payroll pay_group_name ?>

+
+
+ +
+
+
+
+ +endSection() ?> + + + + +section('js') ?> + + + + + + + + + + + + + + + + + +endSection() ?> + + \ No newline at end of file diff --git a/app/Views/payroll/paytransactionreview.php b/app/Views/payroll/paytransactionreview.php index 933c202..e3f1329 100644 --- a/app/Views/payroll/paytransactionreview.php +++ b/app/Views/payroll/paytransactionreview.php @@ -22,6 +22,7 @@ section('breadcrumbs') ?> + endSection() ?> -- 2.39.2