minor issues and alignment changes and igr number new series
This commit is contained in:
parent
957616db54
commit
fff8d5ed6c
@ -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');
|
||||
|
||||
|
||||
@ -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) {
|
||||
|
||||
|
||||
@ -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']."<br>" .$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.',</br></br> "'.$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']
|
||||
|
||||
@ -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') : '';
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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];
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -1504,34 +1504,37 @@ if (!empty($getlogpodtl)) {
|
||||
|
||||
<div class="form-row ">
|
||||
<div class="form-group col-md-12" id="splpodiv">
|
||||
<label>Special po Table List</label>
|
||||
<table id="table2" class="table table-striped table-hover mb-0" style="font-size:12px;">
|
||||
|
||||
<div class="form-group col-md-12">
|
||||
|
||||
|
||||
<div class="col-md-offset-10 col-md-8">
|
||||
<button type="button" class="btn btn-success" id="addmorebutton">ADD FILES</button>
|
||||
<div class="form-row">
|
||||
<div class="col-md-5 text-left">
|
||||
<label class="mt-2">Special po Table List</label>
|
||||
</div>
|
||||
|
||||
<div class="col-md-7 text-right">
|
||||
<button type="button" class="btn btn-success btn-sm" id="addmorebutton">ADD FILES</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-12" style="text-align:right">
|
||||
|
||||
|
||||
|
||||
<div id="newdiv"></div>
|
||||
<input type="hidden" name="hidecounter" id="hidecounter" value="0" />
|
||||
<input type="hidden" name="hideconstant" id="hideconstant" value="0" />
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<table id="table2" class="table table-striped table-hover mb-0" style="font-size: 12px;border-collapse: collapse;margin: auto;width: 60%;">
|
||||
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Bill No </th>
|
||||
<!-- <th>Materials</th> -->
|
||||
<!-- <th>Delivery Challan No</th> -->
|
||||
<!-- <th>Delivery Challan Date</th>
|
||||
<th>Vehicle No</th>
|
||||
<th>Courier No</th> -->
|
||||
<!-- <th>Delivery Challan Date</th> -->
|
||||
<!-- <th>Vehicle No</th> -->
|
||||
<!-- <th>Courier No</th> -->
|
||||
<!-- <th>Quantity</th> -->
|
||||
<th>File</th>
|
||||
|
||||
<th>Action</th>
|
||||
</tr>
|
||||
</thead>
|
||||
@ -1547,7 +1550,9 @@ if (!empty($getlogpodtl)) {
|
||||
<input type="hidden" id="billnos<?= $row ?>" value="<?= $gd->BillNo ?>">
|
||||
<input type="hidden" id="file<?= $row ?>" value="<?= $gd->FilePath ?>">
|
||||
<td><?php echo (!empty($gd->FilePath)) ? $gd->FilePath : "No File"; ?></td>
|
||||
<td><span onclick="openmodel(<?= $row ?>);"><i class="ri-pencil-fill" data-toggle="tooltip" title="Click here to Edit the Revenue SplPO details"></i></span>
|
||||
<td><a href="javascript:void(0);" onclick="openmodel(<?= $row ?>);" data-toggle="tooltip" title="Click here to Edit the Special PO details">
|
||||
<i class="ri-pencil-fill"></i>
|
||||
</a>
|
||||
<?php if (!empty($gd->FilePath)) { ?>
|
||||
<a target="_blank" href="<?php echo base_url() . 'public/uploads/BillFiles/' ?><?php echo $gd->FilePath ?>"><i class="fa fa-download"></i></a>
|
||||
<?php } ?>
|
||||
@ -1561,6 +1566,7 @@ if (!empty($getlogpodtl)) {
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- update if condition here -->
|
||||
<?php if (!empty($update)) { ?>
|
||||
<!-- <div class="form-group col-md-12" id="editpodiv">
|
||||
<div class="form-group col-md-12"><label>Editable POScreen</label>
|
||||
@ -1592,7 +1598,6 @@ if (!empty($getlogpodtl)) {
|
||||
$inde = $inde + 1;
|
||||
?>
|
||||
<tr id="<?php echo $inde; ?>">
|
||||
|
||||
<td><?php echo $inde; ?></td>
|
||||
<td><?php echo $oldpo->PONO ?></td>
|
||||
|
||||
@ -1633,8 +1638,9 @@ if (!empty($getlogpodtl)) {
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>--> <?php } else {} ?>
|
||||
<!-- ends here -->
|
||||
</div>-->
|
||||
<?php } else {} ?>
|
||||
<!-- ends here -->
|
||||
|
||||
<!-- f i l e c h o o s e n -->
|
||||
<div class="col-md-12">
|
||||
@ -1715,10 +1721,9 @@ if (!empty($getlogpodtl)) {
|
||||
</div>
|
||||
<!--/. f o o t e r b u t t o n -->
|
||||
</div>
|
||||
|
||||
</div> <!-- end card body-->
|
||||
</div> <!-- end card -->
|
||||
</div><!-- end col-->
|
||||
</div><!-- end col @945-->
|
||||
</div><!-- end form row -->
|
||||
</div> <!-- end container-fluid -->
|
||||
</div> <!-- end content -->
|
||||
@ -1969,26 +1974,25 @@ if (!empty($getlogpodtl)) {
|
||||
<!-- Service Special PO Modal Starts Here -->
|
||||
<div id="EditServiceSplPOModel" class="modal fade" tabindex="-1" role="dialog"
|
||||
aria-labelledby="myModalLabel" aria-hidden="true" style="display: none;">
|
||||
<div class="modal-dialog modal-full-width">
|
||||
<div class="modal-dialog"><!-- class="modal-dialog modal-full-width" -->
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">Update Bill <span id="bill"><span> Details</h4>
|
||||
<h4 class="modal-title" id="bill-title">Update Bill</h4>
|
||||
<button type="button" class="close" data-dismiss="modal"
|
||||
aria-hidden="true">×</button>
|
||||
</div>
|
||||
<form class="tagForm" id="tag-form" method="post" enctype="multipart/form-data">
|
||||
|
||||
<div class="modal-body p-4">
|
||||
<div class="form-group col-md-12">
|
||||
<div class="form-group col-md-5">
|
||||
<label for="oldimagename">Old file Name :<div class="oldimage"></div></label>
|
||||
<input type="file" size="20" input accept=".docx,.pdf,.doc.JPG,.PNG,.jpg" id="imag" name="images" onChange="filecheck();" />
|
||||
<label for="images">Select file <br /><small>(only .pdf,.excel,.doc,.png,.jpg)</small></label>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="col-md-12">
|
||||
<span><label for="images">Select file </label><small> (only .pdf,.excel,.doc,.png,.jpg)</small></span><br>
|
||||
<input type="file" size="20" input accept=".docx,.pdf,.doc.JPG,.PNG,.jpg" id="imag" name="images" onChange="filecheck();" />
|
||||
<label class="oldimage mt-2"></label>
|
||||
</div>
|
||||
<input type="hidden" name="hideoldfile" id="hideoldfile" class="form-control" readonly>
|
||||
<input type="hidden" name="hidebillno" id="hidebillno" class="form-control" readonly>
|
||||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary waves-effect"
|
||||
data-dismiss="modal" value="Cancel" onclick="SetExciseCalculationCancel();">Cancel</button>
|
||||
@ -2731,10 +2735,11 @@ if (!empty($getlogpodtl)) {
|
||||
var Billno = $("#billnos" + i).val();
|
||||
//alert(Billno);
|
||||
$("#EditServiceSplPOModel").modal("show");
|
||||
$(".oldimage").text(file);
|
||||
$(".oldimage").text("Previous Upload - "+file);
|
||||
$("#hideoldfile").val(file);
|
||||
$("#hidebillno").val(Billno);
|
||||
$("#bill").text(Billno);
|
||||
$("#bill-title").text("Update Bill Number - "+Billno);
|
||||
|
||||
}
|
||||
$('.EditService').click(function() {
|
||||
tinyMCE.triggerSave();
|
||||
@ -3817,8 +3822,8 @@ if (!empty($getlogpodtl)) {
|
||||
|
||||
'<div class="form-group col">' +
|
||||
'<label><br></label>' +
|
||||
'<input type="file" name="browseFiles" id="images' + counter + '" onchange="Copyfilename(this.name); "><br>' +
|
||||
'<button class="btn btn-success btn-sm add add_this" id="addbtn" onclick="addRow()">ADD</button>'
|
||||
'<input type="file" name="browseFiles" id="images' + counter + '" onchange="Copyfilename(this.name); ">' +
|
||||
'<button class="btn btn-success btn-sm add add_this ml-1" id="addbtn" onclick="addRow()">ADD</button>'
|
||||
'</div>' +
|
||||
'</div>' +
|
||||
|
||||
|
||||
@ -1,14 +1,11 @@
|
||||
<
|
||||
|
||||
|
||||
|
||||
<?php
|
||||
$datefordropdown = format_date($datefordropdown, 0, 'M-Y');
|
||||
//echo $datefordropdown;
|
||||
$attendance = array_merge($attendance, $emppay);
|
||||
date_default_timezone_set('Asia/Kolkata');
|
||||
$currentday = date('d');
|
||||
// print_r($attendance);
|
||||
// print_r($employeeleavedate);
|
||||
// dd($attendance);die;
|
||||
// echo "<br>------------------------------<br>";
|
||||
|
||||
?>
|
||||
@ -327,6 +324,7 @@ $currentday = date('d');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
|
||||
|
||||
@ -377,6 +375,7 @@ $currentday = date('d');
|
||||
</tr>
|
||||
|
||||
</thead>
|
||||
|
||||
<tbody style="background-color: #fff;">
|
||||
|
||||
<?php $index = 0;
|
||||
@ -396,6 +395,7 @@ $currentday = date('d');
|
||||
<?php for ($col = 1; $col <= $monthdays; $col++) {
|
||||
$flag = 0;
|
||||
$flag2 = 0;
|
||||
$absent = 0;
|
||||
|
||||
if ($col == $currentday) {
|
||||
$todayflag = 1;
|
||||
@ -423,9 +423,26 @@ $currentday = date('d');
|
||||
$WH = 'WH' . $col;
|
||||
$OT = 'OT' . $col;
|
||||
|
||||
foreach ($employeeleavedate as $eid => $absentdate){
|
||||
|
||||
if($a->EmpID == $eid){
|
||||
foreach ($absentdate as $particulardate){
|
||||
// echo " $eid particulardate = ".$particulardate ." col = ".$col;
|
||||
if($col === $particulardate){
|
||||
$absent = 1;
|
||||
// echo "1) empid = $a->EmpID, date = $col, absent = $absent";
|
||||
}// else $absent = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
// echo "<pre>"."empid = $a->EmpID, date = $col, absent = $absent"."</pre>";
|
||||
// echo "<pre>"."2) all Flags : flag2 = $flag2, flag = $flag2, absent = $absent"."</pre>";
|
||||
?>
|
||||
<td <?php if ($flag2 == 1) { ?> title=" <?php echo $title; ?> "
|
||||
<?php } else if ($flag == 1) { ?> title="sunday" <?php } ?>
|
||||
<?php if ($absent == 1) { ?> title="absent" <?php } ?>
|
||||
class="celda_normal"
|
||||
onkeyup="myFunction(this.parentNode.id,this.id,this.textContent);"
|
||||
id="<?php echo $row . 'row' . $col . 'W'; ?>"
|
||||
@ -434,7 +451,12 @@ $currentday = date('d');
|
||||
} else if ($todayflag == 1) {
|
||||
echo "style='background: #cef0ad ;'";
|
||||
} ?>
|
||||
contenteditable="true" tabindex="<?php echo $col; ?>">
|
||||
<?php if ($absent == 1) {
|
||||
echo "contenteditable='false'";
|
||||
} else if ($absent == 0) {
|
||||
echo "contenteditable='true'";
|
||||
} ?>
|
||||
tabindex="<?php echo $col; ?>">
|
||||
<?php if (!empty($a->$WH)) {
|
||||
echo $a->$WH;
|
||||
} else {
|
||||
@ -442,6 +464,7 @@ $currentday = date('d');
|
||||
} ?></td>
|
||||
<td <?php if ($flag2 == 1) { ?> title=" <?php echo $title; ?> "
|
||||
<?php } else if ($flag == 1) { ?> title="sunday" <?php } ?>
|
||||
<?php if ($absent == 1) { ?> title="absent" <?php } ?>
|
||||
class="celda_normal"
|
||||
onkeyup="myFunction(this.parentNode.id,this.id,this.textContent);"
|
||||
id="<?php echo $row . 'row' . $col . 'OT'; ?>"
|
||||
@ -450,7 +473,12 @@ $currentday = date('d');
|
||||
} else if ($todayflag == 1) {
|
||||
echo "style='background: #cef0ad ;'";
|
||||
} ?>
|
||||
contenteditable="true" tabindex="<?php echo $col; ?>">
|
||||
<?php if ($absent == 1) {
|
||||
echo "contenteditable='false'";
|
||||
} else if ($absent == 0) {
|
||||
echo "contenteditable='true'";
|
||||
} ?>
|
||||
tabindex="<?php echo $col; ?>">
|
||||
<?php if (!empty($a->$OT)) {
|
||||
echo $a->$OT;
|
||||
} else {
|
||||
|
||||
@ -2720,8 +2720,8 @@ if (!empty($getlogpodtl)) {
|
||||
style="background-color:#fff;font-size:12px;">
|
||||
<thead style="background-color: #ddd;">
|
||||
<tr>
|
||||
<!-- <th>Bill No </th> -->
|
||||
<!-- <th>Materials</th> -->
|
||||
<!-- <th>Bill No </th> -->
|
||||
<!-- <th>Materials</th> -->
|
||||
<th>Delivery Challan No</th>
|
||||
<th>Delivery Challan Date</th>
|
||||
<th>MaterialReceived Date </th>
|
||||
@ -2764,9 +2764,10 @@ if (!empty($getlogpodtl)) {
|
||||
<input type="hidden" id="MaterialRcvdDate<?= $row ?>"
|
||||
value="<?= $gd->MaterialRcvdDate ?>">
|
||||
|
||||
<td style="cursor:pointer;"><span onclick="openmodel(<?= $row ?>);"><i
|
||||
class="ri-pencil-fill"></i></span>
|
||||
|
||||
<td style="cursor:pointer;">
|
||||
<a href="javascript:void(0);" onclick="openmodel(<?= $row ?>);" data-toggle="tooltip" title="Click here to Edit the Special PO details">
|
||||
<i class="ri-pencil-fill"></i>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<?php
|
||||
@ -2801,7 +2802,6 @@ if (!empty($getlogpodtl)) {
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Bill No </th>
|
||||
|
||||
<th>File</th>
|
||||
<th>Action</th>
|
||||
</tr>
|
||||
|
||||
@ -212,7 +212,7 @@
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<label class="form" for="no_of_days">No Of Days </label>
|
||||
<input type="text" class="form-control" id="no_of_days" name="no_of_days">
|
||||
<input type="text" class="form-control" id="no_of_days" name="no_of_days" readonly>
|
||||
</div>
|
||||
</div><!--/. r o w 5 -->
|
||||
<div class="row mt-2">
|
||||
@ -261,58 +261,64 @@
|
||||
$(document).ready(function () {
|
||||
$(".searchabledropdown").select2();
|
||||
let today = new Date().toISOString().split("T")[0]; // Format: YYYY-MM-DD
|
||||
$("#start_date").attr("min", today);
|
||||
$("#start_date").attr("min", today);
|
||||
$("#end_date").attr("min", today);
|
||||
|
||||
$('#start_date, #end_date').change(function() {
|
||||
const start = new Date($('#start_date').val());
|
||||
const end = new Date($('#end_date').val());
|
||||
if (!isNaN(start.getTime())) {
|
||||
$('#end_date').val("");
|
||||
let minDate = start.toISOString().split("T")[0]; // Convert Date to YYYY-MM-DD format
|
||||
$("#end_date").attr("min", minDate); // Set min attribute for end_date
|
||||
}
|
||||
$('#start_date').change(function() {
|
||||
let start = new Date($('#start_date').val());
|
||||
let formattedStart = start.toISOString().split('T')[0]; // Convert to YYYY-MM-DD format
|
||||
|
||||
// Reset the end_date input and set its min attribute
|
||||
$('#end_date').val('').attr('min', formattedStart);
|
||||
});
|
||||
|
||||
$('#start_date, #end_date').change(function() {
|
||||
let start = new Date($('#start_date').val());
|
||||
let end = new Date($('#end_date').val());
|
||||
let formattedStart = start.toISOString().split('T')[0]; // Convert to YYYY-MM-DD format
|
||||
|
||||
$("#end_date").attr("min", formattedStart);
|
||||
if (!isNaN(start) && !isNaN(end)) {
|
||||
const days = Math.floor((end - start) / 86400000) + 1;
|
||||
$('#no_of_days').val(days > 0 ? days : 1);
|
||||
} else {
|
||||
$('#no_of_days').val('');
|
||||
}
|
||||
validateDateRange();
|
||||
});
|
||||
|
||||
|
||||
$("#applicationModal").on("shown.bs.modal", function (e) {
|
||||
|
||||
var id = $(e.relatedTarget).data('id');
|
||||
let fields = ['leave_application_id','emp_name','emp_id','start_date','end_date','no_of_days','reason','status_val','department','designation'];
|
||||
|
||||
fields.forEach(function(field) {
|
||||
$("#" + field).val("");
|
||||
});
|
||||
|
||||
if (id == 0) {
|
||||
$('#emp_name').val("").select2();
|
||||
$('#applicationformTitle').html("Apply Leave");
|
||||
$("#leave_application_id").val(0);
|
||||
} else {
|
||||
var arr = $(e.relatedTarget).data('arr');
|
||||
|
||||
fields.forEach(function(field) {
|
||||
|
||||
if(field == 'emp_name'){
|
||||
let empID = arr && arr['emp_id'] ? arr['emp_id'] : "";
|
||||
$("#emp_name").val(empID).select2();
|
||||
}else if(field == 'status_val'){
|
||||
$("#status_val").val(arr && arr['status']);
|
||||
}else{
|
||||
$("#" + field).val(arr && arr[field] ? arr[field] : "");
|
||||
}
|
||||
});
|
||||
$('#applicationformTitle').html("Edit Leave");
|
||||
}
|
||||
var id = $(e.relatedTarget).data('id');
|
||||
var arr = $(e.relatedTarget).data('arr') || {};
|
||||
let fields = ['leave_application_id','emp_name','emp_id','start_date','end_date','no_of_days','reason','status_val','department','designation'];
|
||||
|
||||
fields.forEach(field => $("#" + field).val(arr[field] || "").prop('readonly', true));
|
||||
|
||||
if (id == 0) {
|
||||
$('#emp_name').val("").select2();
|
||||
$('#applicationformTitle').text("Apply Leave");
|
||||
$("#leave_application_id").val(0);
|
||||
$("#tempClick").show();
|
||||
} else {
|
||||
$('#applicationformTitle').text(arr.status === "Approved" ? "View Leave" : "Edit Leave");
|
||||
$("#tempClick").toggle(arr.status !== "Approved");
|
||||
}
|
||||
|
||||
if (id == 0 || arr.status !== "Approved") {
|
||||
$("#emp_name, #start_date, #end_date, #status_val, #reason").prop({readonly: false, disabled: false});
|
||||
$("#start_date, #end_date").prop('required', true);
|
||||
} else {
|
||||
$("#emp_name, #status_val").prop('disabled', true);
|
||||
}
|
||||
|
||||
if (arr.emp_id) $("#emp_name").val(arr.emp_id).select2();
|
||||
if (arr.status) $("#status_val").val(arr.status);
|
||||
});
|
||||
|
||||
$('#tempClick').click(function () {
|
||||
|
||||
|
||||
|
||||
if ($('#emp_id').val() === '') {
|
||||
alert('Please Select the Valid Employee');
|
||||
return;
|
||||
@ -333,19 +339,23 @@
|
||||
alert('Please Select Status');
|
||||
return;
|
||||
}
|
||||
// validateDateRange(function(isValid) {
|
||||
// if (!isValid) {
|
||||
// alert("The selected date range overlaps with an existing approved leave.");
|
||||
// return;
|
||||
// }
|
||||
|
||||
|
||||
var formData = {
|
||||
leave_application_id:$('#leave_application_id').val(),
|
||||
emp_id:$('#emp_id').val(),
|
||||
start_date:$('#start_date').val(),
|
||||
end_date:$('#end_date').val(),
|
||||
no_of_days:$('#no_of_days').val(),
|
||||
reason:$('#reason').val(),
|
||||
status:$('#status_val').val(),
|
||||
};
|
||||
var formData = {
|
||||
leave_application_id:$('#leave_application_id').val(),
|
||||
emp_id:$('#emp_id').val(),
|
||||
start_date:$('#start_date').val(),
|
||||
end_date:$('#end_date').val(),
|
||||
no_of_days:$('#no_of_days').val(),
|
||||
reason:$('#reason').val(),
|
||||
status:$('#status_val').val(),
|
||||
};
|
||||
|
||||
$('#loader').show();
|
||||
$('#loader').show();
|
||||
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
@ -372,7 +382,7 @@
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// });
|
||||
|
||||
});
|
||||
|
||||
@ -463,6 +473,39 @@
|
||||
// }
|
||||
// });
|
||||
});
|
||||
|
||||
function validateDateRange() {
|
||||
let startDate = $("#start_date").val();
|
||||
let endDate = $("#end_date").val();
|
||||
let empId = $("#emp_name").val();
|
||||
|
||||
if (!startDate || !endDate || !empId) return;
|
||||
else{
|
||||
|
||||
$.ajax({
|
||||
url: "<?php echo base_url(); ?>validateDateRange", // Replace with your actual API endpoint
|
||||
type: "POST",
|
||||
data: { emp_id: empId, start_date: startDate, end_date: endDate },
|
||||
dataType: 'json',
|
||||
success: function (response) {
|
||||
if (response.status) {
|
||||
alert(response.message);
|
||||
$("#start_date, #end_date, #no_of_days").val("");
|
||||
}else{
|
||||
console.log(response.status,response.array);
|
||||
}
|
||||
},
|
||||
error: function (xhr, status, error) {
|
||||
alert("Error checking leave dates.");
|
||||
},
|
||||
complete: function () {
|
||||
console.log("validate leave dates ajax call completed");
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
<script>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user