From fff8d5ed6ccb5393bd774f7d8583b42601f49161 Mon Sep 17 00:00:00 2001 From: VE10-Sanjeev Date: Thu, 3 Apr 2025 04:14:27 +0000 Subject: [PATCH] minor issues and alignment changes and igr number new series --- app/Config/Routes.php | 1 + app/Controllers/Emergencypurchaseorder.php | 6 +- app/Controllers/Inwardgateregister.php | 17 ++- app/Controllers/Monthlypay.php | 59 ++++++++- app/Controllers/Payslip.php | 5 +- app/Controllers/Purchaseorder.php | 2 +- app/Helpers/purchaseorder_helper.php | 42 ++++++ app/Models/Inwardgateregister_model.php | 14 +- app/Models/Monthlypay_model.php | 40 ++++++ app/Views/EditservicePurchaseorder.php | 71 +++++----- app/Views/attendance.php | 42 +++++- app/Views/editRevenuepurchaseorder.php | 12 +- app/Views/employeeLeaveApplicationForm.php | 145 +++++++++++++-------- 13 files changed, 341 insertions(+), 115 deletions(-) diff --git a/app/Config/Routes.php b/app/Config/Routes.php index c794b782..fb60b7ad 100755 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -200,6 +200,7 @@ $routes->post('monthlypay/deletePublicHoliday', 'Monthlypay::deletePublicHoliday $routes->get('leaveApplicationForm', 'Monthlypay::leaveApplicationForm'); $routes->post('fetchLeaveApplicationForm', 'Monthlypay::fetchLeaveApplicationForm'); $routes->get('deleteLeaveApplicationForm', 'Monthlypay::deleteLeaveApplicationForm'); +$routes->post('validateDateRange', 'Monthlypay::validateDateRange'); $routes->match(['GET', 'POST'], 'leaveApplicationPDF/(:any)', 'Monthlypay::leaveApplicationPDF/$1'); $routes->match(['GET', 'POST'], 'overTimeDetails', 'Monthlypay::overTimeDetails'); diff --git a/app/Controllers/Emergencypurchaseorder.php b/app/Controllers/Emergencypurchaseorder.php index 4e7fb046..08c9dd2d 100755 --- a/app/Controllers/Emergencypurchaseorder.php +++ b/app/Controllers/Emergencypurchaseorder.php @@ -617,12 +617,14 @@ class Emergencypurchaseorder extends BaseController $igr = array(); $paymentstatus = NO_PAIDIGR; - $igr = array('PONO' => $PONO, 'VehicleNo' => $Vehicle, 'DeliveryChellanOrInvoiceNo' => $DeliveryChellanInvoiceNo, 'DeliveryChellanDate' => $DeliveryChellanDate, 'MaterialRcvdDate' => $DeliveryChellanDate, 'CourierNo' => $Courier, 'IGRStatus' => $IGRStatus, 'CreatedBy' => $CreatedBy, 'CreatedDate' => $createddt, 'MaterialRcvdDate' => $MaterialReceivedate, 'Paymentstatus' => $paymentstatus); + $last_igrno = $this->inwardgateregister_model->lastIGRNO(); + $newIGRNO = generate_igr_number($last_igrno); + $igr = array('IGRNO'=>$newIGRNO,'PONO' => $PONO, 'VehicleNo' => $Vehicle, 'DeliveryChellanOrInvoiceNo' => $DeliveryChellanInvoiceNo, 'DeliveryChellanDate' => $DeliveryChellanDate, 'MaterialRcvdDate' => $DeliveryChellanDate, 'CourierNo' => $Courier, 'IGRStatus' => $IGRStatus, 'CreatedBy' => $CreatedBy, 'CreatedDate' => $createddt, 'MaterialRcvdDate' => $MaterialReceivedate, 'Paymentstatus' => $paymentstatus); //print_r($igr); $igrM = $this->inwardgateregister_model->addigrM($igr); - $IGRNO = !empty($igrM) ? $igrM : ''; + $IGRNO = $newIGRNO; if ($Qualitycheck == 0) { diff --git a/app/Controllers/Inwardgateregister.php b/app/Controllers/Inwardgateregister.php index 5a361bbd..3b241b69 100755 --- a/app/Controllers/Inwardgateregister.php +++ b/app/Controllers/Inwardgateregister.php @@ -447,7 +447,11 @@ class Inwardgateregister extends BaseController } } #Step 3 Master Details Gathering to Save In DB - $igr = array('PONO' => $PONO, 'VehicleNo' => $VehicleNo, 'TransporterId'=>$TransporterId,'DeliveryChellanOrInvoiceNo' => $DeliveryChellanOrInvoiceNo, 'DeliveryChellanDate' => $DeliveryChellanDate, 'MaterialRcvdDate' => $MaterialRcvdDt, 'DriverName' => $DriverName, 'DriverMobileNumber' => $DriverMobileNumber,'IGRStatus' => $IGRStatus, 'CreatedBy' => $CreatedBy, 'CreatedDate' => $createddt, 'PaymentStatus' => $paymentstatus, 'Remark'=>$MasterRemarks); + $last_igrno = $this->inwardgateregister_model->lastIGRNO(); + // echo $last_igrno; + $newIGRNO = generate_igr_number($last_igrno); + // echo $newIGRNO;die; + $igr = array('IGRNO'=>$newIGRNO,'PONO' => $PONO, 'VehicleNo' => $VehicleNo, 'TransporterId'=>$TransporterId,'DeliveryChellanOrInvoiceNo' => $DeliveryChellanOrInvoiceNo, 'DeliveryChellanDate' => $DeliveryChellanDate, 'MaterialRcvdDate' => $MaterialRcvdDt, 'DriverName' => $DriverName, 'DriverMobileNumber' => $DriverMobileNumber,'IGRStatus' => $IGRStatus, 'CreatedBy' => $CreatedBy, 'CreatedDate' => $createddt, 'PaymentStatus' => $paymentstatus, 'Remark'=>$MasterRemarks); $igr['MasterFile'] = $requestMasterFileName; #Step 4 Calling DB to Save IGR Master $IGRNO = $this->inwardgateregister_model->addigrM($igr); @@ -987,14 +991,14 @@ function viewIGRDetails() $to_email_addr = ""; for ($i = 0; $i < count($result_for_email['to_mails']); $i++) { - $to_email_addr .= $result_for_email['to_mails'][$i]->email . " , "; - // $to_email_addr .= "sanjeev.p@venbainfotech.com,gowtham.m@venbainfotech.com"; + // $to_email_addr .= $result_for_email['to_mails'][$i]->email . " , "; } + $to_email_addr .= "sanjeev.p@venbainfotech.com,gowtham.m@venbainfotech.com"; $to_email_addr = rtrim($to_email_addr, " ,"); $email_response = $notification->sendEmail([ 'recipient_email' => $to_email_addr, 'subject' => $result_for_email['company'].' - IGR Notification', - // 'carboncopy'=>Sales@resicoindustries.com,Factory@resicoindustries.com,Invoice@resicoindustries.com, + 'carboncopy' =>"pavithra.t@venbainfotech.com", // 'description' => 'IGR Number : '.$IGRNo.' is Edited By '.($result_for_email['full_name'] ?? $this->session->get('name'))." On ".date('d-m-Y H:i A', strtotime(get_current_date_time() . ' +30 seconds')). $history_content, 'description' => $result_for_history['first_line']."
" .$history_content, 'company' => $result_for_email['company'], @@ -1430,9 +1434,9 @@ function updateIGRWeight(){ $to_email_addr = ''; for ($i = 0; $i < count($result_for_email['to_mails']); $i++) { - $to_email_addr .= $result_for_email['to_mails'][$i]->email . " , "; + // $to_email_addr .= $result_for_email['to_mails'][$i]->email . " , "; } - // $to_email_addr = " gowtham.m@venbainfotech.com , sanjeev.p@venbainfotech.com"; + $to_email_addr = " venbalap08@gmail.com , sanjeev.p@venbainfotech.com"; $to_email_addr = rtrim($to_email_addr, " ,"); $content = 'A new remark was created by '.$result_for_email['full_name'].' against IGR no '.$IGRNo.',

"'.$remark.'"'; @@ -1441,6 +1445,7 @@ function updateIGRWeight(){ $notification->sendEmail([ 'recipient_email' => $to_email_addr, 'subject' => $result_for_email['company'].' - IGR Remark Raised', + 'carboncopy' =>"pavithra.t@venbainfotech.com", 'description' => $content, 'company' => $result_for_email['company'], 'from_mail'=> $result_for_email['from_mails'] diff --git a/app/Controllers/Monthlypay.php b/app/Controllers/Monthlypay.php index b25cd126..09f4cb68 100755 --- a/app/Controllers/Monthlypay.php +++ b/app/Controllers/Monthlypay.php @@ -101,7 +101,7 @@ class Monthlypay extends BaseController function attendanceLoad() { - + $month['month'] = ''; $monthdays = 0; $begin = 0; @@ -111,7 +111,7 @@ class Monthlypay extends BaseController $current = $this->request->getPost('month'); $month_short_name = substr((string)$current, 0, 3); - $year = substr((string)$current, 4); + $year = substr((string)$current, 4);// also used $month_arr = date_parse($month_short_name); $month = $month_arr['month']; $current = $year . "-" . $month . '-01'; @@ -151,7 +151,44 @@ class Monthlypay extends BaseController $data['datefordropdown'] = $current; $data['attendance'] = $this->monthlypay_model->monthlyAttendance($current); $data['emppay'] = $this->monthlypay_model->getEmpPayDetails($current, $string); - // dd($data); + $leavedate = $this->monthlypay_model->employeeLeaveDates($month . "-" . $year); + $employeeLeaveDate = []; + + if(!empty($leavedate)){ + foreach ($leavedate as $entry) { + $empId = $entry['emp_id']; + + list($stYear,$stMonth,$stDate) = explode('-', $entry['start_date']); + list($eYear,$eMonth,$eDate) = explode('-', $entry['end_date']); + + $start = (int)$stDate; + $end = (int)$eDate; + + if ((int)$stYear < (int)$year || ((int)$stYear == (int)$year && (int)$stMonth < (int)$month)) { + $start = 1; + } + // if ((int)$stMonth < (int)$month) $start = 1; // old if + + if ((int)$eYear > (int)$year || ((int)$eYear == (int)$year && (int)$eMonth > (int)$month)) { + $end = $monthdays; + } + // if ((int)$eMonth > (int)$month) $end = $monthdays; // old if + + if ($start > $monthdays) $start = 1; + + for ($i = $start; $i <= $end; $i++) { + $employeeLeaveDate[$empId][] = $i; + // $employeeLeaveDate[$empId][] = str_pad($i, 2, '0', STR_PAD_LEFT); + } + } + + if($employeeLeaveDate){ + array_walk($employeeLeaveDate, fn(&$dates) => $dates = array_unique($dates)); + } + } + + $data['employeeleavedate'] = $employeeLeaveDate; + // dd($data['employeeleavedate']); $this->global['pageTitle'] = 'Monthly Attendance'; $this->loadViews("attendance", $this->global, $data, NULL); } @@ -971,7 +1008,21 @@ class Monthlypay extends BaseController return $this->response->setJSON($data); } - + public function validateDateRange(){ + + $emp_id = $this->request->getPost('emp_id'); + $start_date = $this->request->getPost('start_date'); + $end_date = $this->request->getPost('end_date'); + $array = $this->monthlypay_model->validateDateRange($emp_id,$start_date,$end_date); + if (!empty($array) && count($array) > 0) { + $data = ['status' => true, 'message' => 'The selected date range overlaps with an existing approved leave.','details'=>$array]; + }else{ + $data = ['status' => false, 'message' => '','details'=>$array]; + } + + return $this->response->setJSON($data); + } + function deleteLeaveApplicationForm() { $leave_application_id = $this->request->getGet('leave_application_id') ? $this->request->getGet('leave_application_id') : ''; diff --git a/app/Controllers/Payslip.php b/app/Controllers/Payslip.php index 50d81424..5d09e9e2 100755 --- a/app/Controllers/Payslip.php +++ b/app/Controllers/Payslip.php @@ -178,6 +178,8 @@ class Payslip extends BaseController $data['fresh'] = $this->monthlypay_model->getEmpPayDetailsforMonthInputs($current); // dd($data['fresh']); $data['drivermonthinputs'] = $this->driverMonthlyPayInputs($current); + // $leavedate = $this->monthlypay_model->employeeLeaveDates($current); + $employeeSalary = []; $esi = []; $pf = []; @@ -302,8 +304,7 @@ class Payslip extends BaseController $data['esi'] = $esi; $data['pf'] = $pf; $data['over_time'] = $ot; - - + $this->global['pageTitle'] = 'Payroll Monthly Inputs'; $this->loadViews("monthlypayinputs", $this->global, $data, NULL); } diff --git a/app/Controllers/Purchaseorder.php b/app/Controllers/Purchaseorder.php index 0b69cc35..7ffdadc3 100755 --- a/app/Controllers/Purchaseorder.php +++ b/app/Controllers/Purchaseorder.php @@ -2597,7 +2597,7 @@ class Purchaseorder extends BaseController } else { $store = array('Status' => $StatusCode, 'OnHoldOn' => $ApprovedDate, 'OnHoldBy' => $ApprovedBy, 'Remarks' => $Remarks); $this->purchaseorder_model->UpdatePO($store, $PONO); - echo "The Purchase Order No: " . $PONO . "is On Hold"; + echo "The Purchase Order No: " . $PONO . " is On Hold"; } } diff --git a/app/Helpers/purchaseorder_helper.php b/app/Helpers/purchaseorder_helper.php index 8946e7b5..bc1615f7 100755 --- a/app/Helpers/purchaseorder_helper.php +++ b/app/Helpers/purchaseorder_helper.php @@ -27,6 +27,48 @@ if (!function_exists('generate_po_number')) { } } +if (!function_exists('generate_igr_number')) { + function generate_igr_number($last_igrno) + { + $shortenFinYear = get_shorten_financial_year(); + + if (preg_match('/^\w+\/\d+-\d+\/\d+$/', $last_igrno)) { + // echo $last_igrno; + $type = 1; // IGRNO/25-26/00001 // 2025 april onwards karthick asked to changed this type. + } elseif (preg_match('/^\w+-\d+$/', $last_igrno)) { + // echo $last_igrno; + $type = 2; // IGRNO-00001 // karthick asked to checked this type 2023- 2025 april + } else { + // echo $last_igrno; + $type = 3; // IGRNO00001 // very first time we followed this type + } + + if ($type == 1) { + $result = explode('/', $last_igrno); + $requestedFinYear = $result[1]; + $leftPad = "IGR"; + $digit = 5; + + if($requestedFinYear == $shortenFinYear){ // here i am comparing the shoren fin year + $number = ((int)$result[2])+1; + $IgrNo = $leftPad . '/' . $shortenFinYear . '/' . str_pad($number, $digit, '0', STR_PAD_LEFT); + }else{ + // here not same means ressetted type 1 format + $counter = 1; + $IgrNo = $leftPad . '/' . $shortenFinYear . '/' . str_pad($counter, $digit, '0', STR_PAD_LEFT); + } + return $IgrNo; + }else{ + // type 2 and type 3 is converted into type 1 format + $leftPad = "IGR"; + $digit = 5; + $counter = 1; + $IgrNo = $leftPad . '/' . $shortenFinYear . '/' . str_pad($counter, $digit, '0', STR_PAD_LEFT); + return $IgrNo; + } + } +} + function generate_amendment_po_number($PoNo, $increment = 1) { if (strpos($PoNo, '.') !== false) { list($base, $decimal) = explode('.', $PoNo); diff --git a/app/Models/Inwardgateregister_model.php b/app/Models/Inwardgateregister_model.php index 09cc930e..6ebb17a2 100755 --- a/app/Models/Inwardgateregister_model.php +++ b/app/Models/Inwardgateregister_model.php @@ -221,7 +221,9 @@ class Inwardgateregister_model extends Model } public function igr_history($hsty_arr) { - $keysToRemove = ["UpdateBY", "MaterialRcvdDate", "DeliveryChellanDate"]; + + $keysToRemove = ["UpdateBY","UpdateBy", "MaterialRcvdDate", "DeliveryChellanDate"]; + foreach ($keysToRemove as $key) { if (isset($hsty_arr[$key])) { unset($hsty_arr[$key]); @@ -230,8 +232,7 @@ class Inwardgateregister_model extends Model $builder = $this->db->table('t_igr_history'); $builder->insert($hsty_arr); - - return $this->db->insertID(); // Return last inserted ID + return $this->db->insertID(); } function get_igr_history($col,$IGR,$IGRITEM = null) @@ -273,6 +274,13 @@ class Inwardgateregister_model extends Model return $result; // Return the field value directly } + function lastIGRNO() + { + $query = $this->db->table('t_igr_master')->select('IGRNO')->orderBy('IGRID', 'DESC')->limit(1)->get(); + $lastIGRNO = $query->getRow()->IGRNO; + return $lastIGRNO; + } + function addigrM($igrM) { // print_r($igrM);die; diff --git a/app/Models/Monthlypay_model.php b/app/Models/Monthlypay_model.php index db7f7cb7..2895d9c5 100755 --- a/app/Models/Monthlypay_model.php +++ b/app/Models/Monthlypay_model.php @@ -571,6 +571,26 @@ where Month_Year = ? and att.EmpID in (select EmpID from t_attendance)"; return $this->db->affectedRows(); } } + public function validateDateRange($emp_id,$start_date,$end_date){ + + $array = $this->db->table('t_employee_leave_application_form') + ->where('emp_id', $emp_id) + ->where('status', 'Approved') + ->groupStart() // Start grouping OR conditions + ->where("'$start_date' BETWEEN start_date AND end_date", null, false) + ->orWhere("'$end_date' BETWEEN start_date AND end_date", null, false) + ->orWhere("start_date BETWEEN '$start_date' AND '$end_date'", null, false) + ->orWhere("end_date BETWEEN '$start_date' AND '$end_date'", null, false) + ->groupEnd() // End grouping + ->get() + ->getRowArray(); + + // $last_query = $this->db->getLastQuery(); + // echo $last_query; + + return $array; + + } function getEmpPayDetailsforOTListing($current = "") { @@ -617,5 +637,25 @@ where Month_Year = ? and att.EmpID in (select EmpID from t_attendance)"; return $query->getResult(); } + function employeeLeaveDates($current){ + $current =get_date_time_dynamical_format('m-Y','Y-m',"$current"); + $array = $this->db->table('t_employee_leave_application_form') + ->select("emp_id,start_date,end_date,status") + ->where('status', 'Approved') + ->groupStart() // Start grouping OR conditions + ->where("DATE_FORMAT(start_date, '%Y-%m') = '$current'", null, false) + ->orWhere("DATE_FORMAT(end_date, '%Y-%m') = '$current'", null, false) + ->orWhere("DATE_FORMAT(start_date, '%Y-%m') <= '$current' AND DATE_FORMAT(end_date, '%Y-%m') >= '$current'", null, false) + ->groupEnd() // End grouping + ->get() + ->getResultArray(); + + // $last_query = $this->db->getLastQuery(); + // echo $last_query; + + return $array; + // return [$current]; + } + } \ No newline at end of file diff --git a/app/Views/EditservicePurchaseorder.php b/app/Views/EditservicePurchaseorder.php index df67aeac..b61dff04 100755 --- a/app/Views/EditservicePurchaseorder.php +++ b/app/Views/EditservicePurchaseorder.php @@ -1504,34 +1504,37 @@ if (!empty($getlogpodtl)) {
- - - -
- - -
- +
+
+
+
+ +
+
+ +
+ +
- -
+
+
+ - + + + - @@ -1547,7 +1550,9 @@ if (!empty($getlogpodtl)) { -
Bill No FileAction
FilePath)) ? $gd->FilePath : "No File"; ?> + + +     FilePath)) { ?> @@ -1561,6 +1566,7 @@ if (!empty($getlogpodtl)) {
+ - +
--> + +
@@ -1715,10 +1721,9 @@ if (!empty($getlogpodtl)) {
- - + @@ -1969,26 +1974,25 @@ if (!empty($getlogpodtl)) {