diff --git a/app/Config/Routes.php b/app/Config/Routes.php index a7740738..c92e8115 100755 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -203,6 +203,9 @@ $routes->get('deleteLeaveApplicationForm', 'Monthlypay::deleteLeaveApplicationFo $routes->post('validateDateRange', 'Monthlypay::validateDateRange'); $routes->match(['GET', 'POST'], 'leaveApplicationPDF/(:any)', 'Monthlypay::leaveApplicationPDF/$1'); $routes->match(['GET', 'POST'], 'overTimeDetails', 'Monthlypay::overTimeDetails'); +$routes->get('exportMonthlyPayInputs/(:any)', 'Payslip::exportMonthlyPayInputs/$1'); +$routes->get('leaveStatus/(:any)/(:any)', 'Monthlypay::leaveStatus/$1/$2'); + $routes->get('emppaydate/addemppaydate', 'Emppaydate::addemppaydate'); $routes->post('emppaydate/addNewemppay', 'Emppaydate::addNewemppay'); @@ -248,6 +251,7 @@ $routes->post('EditRequisition', 'Requisitionform::EditRequisition'); $routes->post('addNewRequisition', 'Requisitionform::addNewRequisition'); $routes->post('getMaterialCode', 'Requisitionform::getMaterialCode'); $routes->post('getMaterialDetails', 'Requisitionform::getMaterialDetails'); +$routes->post('getCategoryDetails', 'Requisitionform::getCategoryDetails'); $routes->post('DeleteRequistionForm', 'Requisitionform::DeleteRequistionForm'); // recheck it used or not. $routes->post('requisitionform/ApproveRequest', 'Requisitionform::ApproveRequest'); $routes->post('requisitionform/DeleteReqNo', 'Requisitionform::DeleteReqNo'); @@ -322,7 +326,7 @@ $routes->post('getCostCenterData', 'Inwardgateregister::getCostCenterData'); $routes->post('ViewIGRfile', 'Inwardgateregister::ViewIGRfile'); $routes->post('getAdditionalIGRFile', 'Inwardgateregister::getAdditionalIGRFile'); $routes->post('deleteAdditionalIGRFile', 'Inwardgateregister::deleteAdditionalIGRFile'); -$routes->get( 'download-files/(:segment)', 'Inwardgateregister::downloadFilesAsZip/$1'); +$routes->get( 'download-files', 'Inwardgateregister::downloadFilesAsZip'); $routes->post('inwardgateregister/edituploadfile', 'Inwardgateregister::edituploadfile'); $routes->post('getIGRRemarks', 'Inwardgateregister::getIGRRemarks'); $routes->post('saveIGRRemarks', 'Inwardgateregister::saveIGRRemarks'); diff --git a/app/Controllers/Driver.php b/app/Controllers/Driver.php index 625175e4..e6ef6307 100755 --- a/app/Controllers/Driver.php +++ b/app/Controllers/Driver.php @@ -561,7 +561,6 @@ class Driver extends BaseController $html = view("driverPayslipGeneratePrint", $Data); } - $mpdf = new Mpdf([ 'mode' => 'utf-8', 'format' => 'A4-P', diff --git a/app/Controllers/Emppaydate.php b/app/Controllers/Emppaydate.php index 067cb80c..6439057c 100755 --- a/app/Controllers/Emppaydate.php +++ b/app/Controllers/Emppaydate.php @@ -150,8 +150,28 @@ class Emppaydate extends BaseController function downloadEmpLoanData($paydataid = "") { - $data['emppay'] = $this->emppaydate_model->getUserInfo($paydataid); - + $emppay = $this->emppaydate_model->getUserInfo($paydataid); + + $monthYear = get_date_time_dynamical_format('Y-m-d','m-Y',get_current_date()); + // $monthYear = "02-2025"; + foreach ($emppay as $index => $value) { + if($value->is_driver) { + $info = $this->emppaydate_model->driverPayInfo($value->PAYEMPID, $monthYear); + + foreach ($info as $i => $v) { + + $hra = $v->HRA; // => 885.60 + $esi = $v->ESI; // => 0.00 + $pf = $v->PF; // => 0.00 + $basic = $v->BASIC; + $TotalSalary = ($basic + $hra + $v->Festival_Bonus) - ($value->Monthly_Due+$esi + $pf); + $emppay[$index]->TotalSalary = $TotalSalary; + $emppay[$index]->Basic_Pay = $basic; + } + } + } + $data['emppay'] = $emppay; + $data['loan_histoty'] = $this->emppaydate_model->getUserLoanHistoryInfo($data['emppay'][0]->Loan_ID); diff --git a/app/Controllers/Inwardgateregister.php b/app/Controllers/Inwardgateregister.php index 696df7f7..80cd15e5 100755 --- a/app/Controllers/Inwardgateregister.php +++ b/app/Controllers/Inwardgateregister.php @@ -299,8 +299,9 @@ class Inwardgateregister extends BaseController $PO = $this->request->getPost('id'); $CreatedBy = $this->session->get('userId'); - $this->inwardgateregister_model->UpdatePOMaster($PO, $CreatedBy,IGR_CREATED); + // $this->inwardgateregister_model->UpdatePOMaster($PO, $CreatedBy,IGR_CREATED); $data = $this->inwardgateregister_model->viewpurchaseorder($PO); + // echo "
"; print_r($data);die;
 
     echo json_encode($data);
   }
@@ -1080,24 +1081,29 @@ function updateIGRWeight(){
   $this->saveIGRLineitemHistory($igr_lineitem, $IGRNO,$IGRItemNo);
 
   $requestWeightFileName =null ;
-  if($WeightFile){
-    if (!empty($requestWeightFileName)) {
-      if ($WeightFile && $WeightFile->isValid() && !$WeightFile->hasMoved()) {
-        if (!empty($this->inwardgateregister_model->isFileExistsInIGRdetails($requestWeightFileName))) {
-          log_message('error', 'File already exists in the database'.$requestWeightFileName);
-        }
-        else{
-          $WeightFile->move($path, $requestWeightFileName);   
-          $igr_lineitem['WeightFile'] = $requestWeightFileName;
-        }
-      }
+  $msg = null;
+  if ($WeightFile && $WeightFile->isValid() && !$WeightFile->hasMoved()) {
+    
+    $requestWeightFileName = $WeightFile->getName(); // Generate a unique name
+
+    // Optional: Check for duplicates in DB if needed
+    if (!empty($this->inwardgateregister_model->isFileExistsInIGRdetails($requestWeightFileName))) {
+        log_message('error', 'File already exists in the database: ' . $requestWeightFileName);
+        $msg = "'File already exists in the database: ' . $requestWeightFileName";
+    } else {
+        $WeightFile->move($path, $requestWeightFileName);   
+        $igr_lineitem['WeightFile'] = $requestWeightFileName;
+        $msg = "";
     }
+  }else{
+    log_message('error', 'File invlisd: ' . $requestWeightFileName);
+    $msg = "";
   }
-  
+
   $update = $this->inwardgateregister_model->updateIGRLineItem($igr_lineitem, $IGRItemNo);
     
   if ($update) {
-    echo "Details update successfully!";
+    echo "Details updated successfully!\n".$msg;
   }
 }
   function AddOgr()
@@ -1327,75 +1333,82 @@ function updateIGRWeight(){
     }
   }
   
-  public function downloadFilesAsZip($igrno)
-  {
-      // Get all file details for the given IGR number
-      $fileDetails = $this->inwardgateregister_model->getAllIgrFileDetails($igrno); 
   
-      // Define the root path for files
-      $rootPath = ROOTPATH . 'public/uploads/Igrfiles/';
-      
-      // Check if the directory exists, create if it doesn't
-      if (!is_dir($rootPath)) {
-          if (!mkdir($rootPath, 0755, true)) {
-              echo '';
-              return;
-          }
-      }
-  
-      // Ensure the directory is writable
-      if (!is_writable($rootPath)) {
-          echo '';
-          return;
-      }
-  
-      // Create a new ZIP archive
-      $zip = new ZipArchive();
-      $zipFileName = $igrno . '.zip';
-      $zipFilePath = $rootPath . $zipFileName;
-  
-      // Attempt to open the ZIP file
-      if ($zip->open($zipFilePath, ZipArchive::CREATE | ZipArchive::OVERWRITE) !== TRUE) {
-          echo '';
-          return redirect()->to('/ViewIGR');
-      }
-  
-      $filesAdded = false;
-  
-      // Add each file to the ZIP archive
-      foreach ($fileDetails as $file) {
-          $filePath = $rootPath . $file->file;
-  
-          // Ensure file exists and is not a directory
-          if (file_exists($filePath) && is_file($filePath)) {
-              // Sanitize filename for ZIP
-              $sanitizedFilename = preg_replace('/[^a-zA-Z0-9_\-\.]/', '_', $file->file);
-              if (!$zip->addFile($filePath, $sanitizedFilename)) {
-                  echo '';
-                  $zip->close();
-                  return redirect()->to('/ViewIGR');
-              }
-              $filesAdded = true;
-          } else {
-              echo '';
-              continue;
-          }
-      }
-  
-      // Close ZIP archive if files were added
-      if ($filesAdded) {
-          $zip->close(); // Close ZIP only if files were added
-          return $this->response->download($zipFilePath, null)->setFileName($zipFileName);
-      } else {
-          // Close and remove any empty ZIP file created
-          $zip->close();
-          if (file_exists($zipFilePath)) {
-              unlink($zipFilePath);
-          }
-          echo '';
-          return redirect()->to('/ViewIGR');
-      }
-  }
+
+  public function downloadFilesAsZip()
+{
+    // Get the IGR number from query string
+    $igrno = $this->request->getGet('IGRNO'); 
+
+    // Get file details based on IGR number
+    $fileDetails = $this->inwardgateregister_model->getAllIgrFileDetails($igrno); 
+
+    // Define root path for original files
+    $fileRootPath = ROOTPATH . 'public/uploads/Igrfiles/';
+
+    // Define separate directory for ZIP output
+    $zipDir = ROOTPATH . 'writable/zips/';
+    if (!is_dir($zipDir)) {
+        if (!mkdir($zipDir, 0777, true)) {
+            echo '';
+            return;
+        }
+    }
+
+    // Make sure ZIP directory is writable
+    if (!is_writable($zipDir)) {
+        echo '';
+        return;
+    }
+
+    // OPTIONAL: Set PHP's temp directory if the system one is failing
+    $customTemp = ROOTPATH . 'writable/tempzip/';
+    if (!is_dir($customTemp)) {
+        mkdir($customTemp, 0777, true);
+    }
+    ini_set('sys_temp_dir', $customTemp);
+
+    // Create ZIP archive
+    $zip = new ZipArchive();
+    $zipFileName = preg_replace('/[^a-zA-Z0-9_\-]/', '_', $igrno) . '.zip'; // sanitize filename
+    $zipFilePath = $zipDir . $zipFileName;
+
+    if ($zip->open($zipFilePath, ZipArchive::CREATE | ZipArchive::OVERWRITE) !== TRUE) {
+        echo '';
+        return redirect()->to('/ViewIGR');
+    }
+
+    $filesAdded = false;
+
+    // Add each file to ZIP
+    foreach ($fileDetails as $file) {
+        $filePath = $fileRootPath . $file->file;
+
+        if (file_exists($filePath) && is_file($filePath)) {
+            $sanitizedFilename = preg_replace('/[^a-zA-Z0-9_\-\.]/', '_', $file->file);
+            if (!$zip->addFile($filePath, $sanitizedFilename)) {
+                echo '';
+                $zip->close();
+                return redirect()->to('/ViewIGR');
+            }
+            $filesAdded = true;
+        } else {
+            echo '';
+        }
+    }
+
+    if ($filesAdded) {
+        $zip->close();
+        return $this->response->download($zipFilePath, null)->setFileName($zipFileName);
+    } else {
+        $zip->close();
+        if (file_exists($zipFilePath)) {
+            unlink($zipFilePath);
+        }
+        echo '';
+        return redirect()->to('/ViewIGR');
+    }
+}
 
 
 
diff --git a/app/Controllers/Monthlypay.php b/app/Controllers/Monthlypay.php
index 453ffa6c..e29aba2e 100755
--- a/app/Controllers/Monthlypay.php
+++ b/app/Controllers/Monthlypay.php
@@ -991,18 +991,19 @@ class Monthlypay extends BaseController
                 
                 $leave_details['created_by'] = $userId;
                 $affectedRows = $this->monthlypay_model->saveleaveApplicationForm($leave_details,$id);
-                 if ($affectedRows > 0) {
+                //  if ($affectedRows > 0) {
                     $data = ['status' => true, 'message' => 'Leave Applicationform details created successfully.'];
-                 }
+                //  }
             } else {
                 $leave_details['leave_application_id'] = $id;
                 $leave_details['updated_by'] = $userId;
                 $affectedRows = $this->monthlypay_model->saveleaveApplicationForm($leave_details,$id);
-                if ($affectedRows > 0) {
-                    $data = ['status' => true, 'message' => 'Leave Applicationform details updated successfully.'];
-                }else{
-                    $data = ['status' => true, 'message' => 'There is no changes in Leave Applicationform details.'];
-                } 
+                // if ($affectedRows > 0) {
+                //     $data = ['status' => true, 'message' => 'Leave Applicationform details updated successfully.'];
+                // }else{
+                //     $data = ['status' => true, 'message' => 'There is no changes in Leave Applicationform details.'];
+                // } 
+                $data = ['status' => true, 'message' => 'Leave Applicationform details updated successfully.'];
                 
             }
     
@@ -1041,6 +1042,26 @@ class Monthlypay extends BaseController
 
     }
 
+    public function leaveStatus($leave_application_id, $status)
+    {
+        if (!empty($leave_application_id)) {
+            $data = [
+                'status' => $status,
+                'updated_by' => session()->get('userId')
+            ];
+
+            $affectedRows = $this->monthlypay_model->saveleaveApplicationForm($data, $leave_application_id);
+            $message = ($affectedRows > 0) 
+                ? "Leave Application updated successfully." 
+                : "No changes were made.";
+
+            return $this->response->setJSON(['status' => true, 'message' => $message]);
+        } else {
+            return $this->response->setJSON(['status' => false, 'message' => 'Invalid leave application ID.']);
+        }
+    }
+
+
     public function leaveApplicationPDF($leave_application_id){
         
       
diff --git a/app/Controllers/Payslip.php b/app/Controllers/Payslip.php
index 5d09e9e2..a53dc65f 100755
--- a/app/Controllers/Payslip.php
+++ b/app/Controllers/Payslip.php
@@ -287,14 +287,7 @@ class Payslip extends BaseController
 			$empSalarySub = $esiAmount + $pfAmount + $loan;
 			
 			$salaryInCurrentday =  $empSalaryAdd -  $empSalarySub;
-			// echo $esiAmount .'
'; - // echo $pfAmount .'
'; - // echo $loan .'
'; - // echo $empSalarySub .'
'; - // echo $empSalaryAdd .'
'; - // echo $salaryInCurrentday .'
'; - // die; - + $employeeSalary[] = round($salaryInCurrentday); $esi[] = number_format($esiAmount,2, '.', ''); $pf[] = number_format($pfAmount,2, '.', ''); @@ -309,6 +302,331 @@ class Payslip extends BaseController $this->loadViews("monthlypayinputs", $this->global, $data, NULL); } + public function exportMonthlyPayInputs1($value) + { + $headlines = [ + 'company_name' => 'Resico Solutions', + 'file_name' => 'Resico_Salary_'.$value.'.xls', + 'type' => 1, + 'header1' => ['Emp ID', 'Name', 'Department', 'Salary'], // example headers + 'header2' => [], + 'footer' => false, + ]; + + $xldata = [ + ['E001', 'Arun', 'HR', 25000], + ['E002', 'Meena', 'Finance', 28000], + ]; + + helper('excel'); + generate_excel($headlines, $xldata); + } + + + public function exportMonthlyPayInputs($value){ + + helper('excel'); + $monthyear = get_date_time_dynamical_format('n-Y','m-Y',"$value"); + $employee = [];$i=0; $j=0; + $company_info = $this->payroll_model->getCompanyInformation(); + $employee_monthinputs_info = $this->monthlypay_model->getEmpPayDetailsforMonthInputs($monthyear); + $driver_monthinputs_info = $this->driverMonthlyPayInputs($monthyear); + // $headlines_main = ['S. No','Emp ID','Employees Name','Date of Joining','Destingnation','Total Days' ,'Days Worked','Leave','Basic Salary','Per day Salary','Worked Salary','Per Hours Salary','Earned Salary', '70% BASIC','30% HRA','Gross Salary','Esi 0.75%','Pf 12%','Esi + Pf (Ee`s)' ,'Over Time','Feb-25 Advance','TDS 92B','Refuned PF Nov24','Net Salary','Gross Salary','Over Time','Gross Net Salary','Esi (0)','Pf (0)','Sep-24 Advance','TDS 92B','Refuned PF Nov24','Net Salary','Diff']; + $headlines_main = ['S. No','Emp ID','Employees Name','Date of Joining','Destingnation','Total','Days','Leave','Basic','Per day','Worked','Per Hours','Earned','70%','30%','Gross','Esi','Pf','Esi + Pf','Over Time','Feb-25 Advance','TDS 92B','Refuned PF Nov24','Net Salary','Gross','Over Time','Gross Net','Esi','Pf','Sep-24 Advance','TDS 92B','Refuned PF Nov24','Net Salary','Diff']; + + $headlines_sub = ['', '', '', '', '', 'Days','Worked','', 'Salary','Salary','Salary','Salary','Salary', 'BASIC','HRA','Salary','0.75%','12%','Ee`s','','','','','','Salary','','Salary',' 0','0','','','','','']; + + $dum = []; + foreach ($employee_monthinputs_info as $key => $rec) { + // echo $rec->EmpID; + // print_r($dum);die; + $dum[$rec->EmpID] = $rec; + } + $employee_monthinputs_info = array_values($dum); + + + foreach ($employee_monthinputs_info as $value) { + + $employee[$i]['SNO'] = $i+1; + $employee[$i]['ID'] = $value->EmpID; + $employee[$i]['Name'] = $value->FirstName; + $employee[$i]['DOJ'] = get_date_time_dynamical_format('Y-m-d H:i:s','d-m-Y',"$value->DateofJoining"); + $employee[$i]['Designation'] = $value->Designation ; + $NoofDays = $value->NoofDays; // Month day 30,31,28 + $employee[$i]['NoofDays'] = round($NoofDays); + $Days_worked = $value->Days_worked; // Work day + $employee[$i]['Days_worked'] = round($Days_worked); + $employee[$i]['Leave'] = round($value->NoofDays - ($Days_worked)); // Absent Days LOP + $Basic_Pay = $value->Basic_Pay; + // $employee[$i]['Basic_Pay'] = $Basic_Pay; + $TotalSalary = $value->TotalSalary; + $employee[$i]['TotalSalary'] = number_format($TotalSalary, 2, '.', ''); + $PerDaySalary = $value->TotalSalary / $NoofDays; + $employee[$i]['PerDaySalary'] = number_format($PerDaySalary, 2, '.', ''); + + $WorkedSalary = $PerDaySalary * ($Days_worked); + $employee[$i]['WorkedSalary'] = number_format($WorkedSalary, 2, '.', ''); + $PerHrSalary = $PerDaySalary / 8; + $employee[$i]['PerHrSalary'] = number_format($PerHrSalary, 2, '.', ''); + $employee[$i]['EarnedSalary'] = number_format($WorkedSalary, 2, '.', ''); + + $BasicWorked = $WorkedSalary * 70 / 100; + $employee[$i]['BasicWorked'] = number_format($BasicWorked, 2, '.', ''); + $HraWorked = $WorkedSalary * 30 / 100; + $employee[$i]['HraWorked'] = number_format($HraWorked, 2, '.', ''); + $employee[$i]['GrossSalary'] = number_format($BasicWorked + $HraWorked, 2, '.', ''); + if ($value->is_management_team == 1) + { + $OT_Hrs_Worked = 0; //OT hours + $value->OT_Hrs_Worked = 0; + } else { + $OT_Hrs_Worked = $value->OT_Hrs_Worked; //OT hours + } + $totSalayOT = ($OT_Hrs_Worked != 0) ? $OT_Hrs_Worked * $PerHrSalary : 0; + + $HRA_Amount = $value->HRA_Amount; + $Paid_leave = $value->Paid_leave; // leave day + $Monthly_Due = $value->Monthly_Due; // AUTO LOAN DUE + $Loan_Recovered = $value->Loan_Recovered; //MANUAL LOAN DUE + $due_start_date = $value->DueDate; + + if (strlen((string)$monthyear) == 6) { + $monthyear = '0' . $monthyear; + } + $pmonth = substr($monthyear, 0, 2); + $pyear = substr($monthyear, -4); + + $pmonth = substr($monthyear, 0, 2); + $pyear = substr($monthyear, -4); + $pday = cal_days_in_month(CAL_GREGORIAN, $pmonth, $pyear); + $payfulldate = $pyear . '-' . $pmonth . '-' . $pday; + $totalDaysWorked = $Days_worked + $Paid_leave; + $Loan_amount = $value->Loan_Amount; + $Paid_Amount = $value->Paid_Amount; + $Balance_Amount = $Loan_amount - $Paid_Amount; + $loan = 0; + if ($Loan_Recovered == 'NA') { + $loan = 0.00; + } else if ($Loan_Recovered == 0.00) { + if (strtotime($due_start_date) <= strtotime($payfulldate)) { + $loan = $Monthly_Due; + } + } else if ($Loan_Recovered >= 0.00) { + if (strtotime($due_start_date) <= strtotime($payfulldate)) { + $loan = $Loan_Recovered; + } + } + + if ($Monthly_Due > $Balance_Amount) { + $loan = $Balance_Amount; + } + + $PF_Rate = $value->PF_Rate; + $ESI_Rate = $value->ESI_Rate; + + $dayHra = $HRA_Amount / $NoofDays; + $dayBasic = $Basic_Pay / $NoofDays; + + //current day basic and hra salary + if ($value->is_management_team == 1) + { + $currentDayBasic = $dayBasic * $NoofDays; + $currentDayHra = $dayHra * $NoofDays; + } else { + $currentDayBasic = $dayBasic * $totalDaysWorked; + $currentDayHra = $dayHra * $totalDaysWorked; + } + + if ($value->esi_applicable == 1) { $esiAmount = ($currentDayBasic + $currentDayHra) * $ESI_Rate / 100; } else { $esiAmount = 0; } + if ($value->pf_applicable == 1) { $pfAmount = $currentDayBasic * $PF_Rate / 100; } else { $pfAmount = 0; } + + /** pf amount per day**/ + + //echo $totalothour;die; + $empSalaryAdd = $currentDayBasic + $currentDayHra + $totSalayOT; + + $empSalarySub = $esiAmount + $pfAmount + $loan; + + $salaryInCurrentday = $empSalaryAdd - $empSalarySub; + + $employee[$i]['ESI'] = number_format($esiAmount, 2, '.', ''); + $employee[$i]['PF'] = number_format($pfAmount, 2, '.', ''); + $employee[$i]['ESI_PF'] = number_format($esiAmount + $pfAmount, 2, '.', ''); + $employee[$i]['OT'] = number_format($totSalayOT, 2, '.', ''); + + $employee[$i]['Feb_25_Advance'] = "-"; + $employee[$i]['TDS_92B'] ="-"; + $employee[$i]['Refuned_PF_Nov24'] ="-"; + $employee[$i]['NetSalary'] = round($salaryInCurrentday); + + $employee[$i]['GrossSalary2'] = "-"; + $employee[$i]['OT2'] = "-"; + $employee[$i]['GrossNetSalary'] = "-"; + $employee[$i]['ESI2'] ="-"; + $employee[$i]['PF2'] ="-"; + $employee[$i]['Sep_24_Advance'] = "-"; + $employee[$i]['TDS_92B'] = "-"; + $employee[$i]['Refuned_PF_Nov24'] = "-"; + $employee[$i]['Net_Salary'] = "-"; + $employee[$i]['Diff'] = "-"; + $employee[$i]['work_location'] = $value->work_location; + $employee[$i]['tds_applicable'] = $value->tds_applicable; + $employee[$i]['pf_applicable'] = $value->pf_applicable; + $employee[$i]['esi_applicable'] = $value->esi_applicable; + $i++; + + } + $j = $i; + foreach($driver_monthinputs_info as $record ){ + $hra_worked = $record->hra_worked; + $basic_worked = $record->basic_worked; + $sum_of_amount = ($record->driver_salary+$record->driver_shed+$record->driver_diesel); + + $employee[$j]['SNO'] = $j+1; + $employee[$j]['ID'] = $record->EmpID; + $employee[$j]['Name'] = $record->FirstName; + $employee[$j]['DOJ'] = get_date_time_dynamical_format('Y-m-d H:i:s','d-m-Y',"$record->DateofJoining"); + $employee[$j]['Designation'] = $record->Designation; + $employee[$j]['NoofDays'] = round($record->total_cal_days); + $employee[$j]['Days_worked'] = round($record->unique_days); + $employee[$j]['Leave'] = round($record->total_cal_days - $record->unique_days); + // number_format(0.00, 2, '.', ''); // paid leave + // number_format(0.00, 2, '.', ''); //ot hours + $employee[$j]['TotalSalary'] = number_format($sum_of_amount, 2, '.', ''); + $worked_amt = $sum_of_amount / $record->total_cal_days ; + $employee[$j]['PerDaySalary'] = number_format($worked_amt, 2, '.', ''); + $employee[$j]['WorkedSalary'] = number_format($worked_amt, 2, '.', ''); + $hr_amt = $worked_amt/8; + $employee[$j]['PerHrSalary'] = number_format($hr_amt, 2, '.', ''); + $employee[$j]['EarnedSalary'] = number_format($sum_of_amount, 2, '.', ''); + $employee[$j]['BasicWorked'] = number_format($basic_worked, 2, '.', ''); + $employee[$j]['HraWorked'] = number_format($hra_worked, 2, '.', ''); + $employee[$j]['GrossSalary'] = number_format($basic_worked + $hra_worked, 2, '.', ''); + + $employee[$j]['ESI'] = number_format($record->esi_amount, 2, '.', ''); + $employee[$j]['PF'] = number_format($record->pf_amount, 2, '.', ''); + $employee[$j]['ESI_PF'] = number_format($record->esi_amount + $record->pf_amount, 2, '.', ''); + $employee[$j]['OT'] = number_format(0, 2, '.', ''); + $estTotal = ($basic_worked + $hra_worked + $record->Festival_Bonus)-($record->Monthly_Due+$record->esi_amount+$record->pf_amount); + + $employee[$j]['Feb_25_Advance'] = "-"; + $employee[$j]['TDS_92B'] ="-"; + $employee[$j]['Refuned_PF_Nov24'] ="-"; + $employee[$j]['NetSalary'] = round($estTotal); + + $employee[$j]['GrossSalary2'] = "-"; + $employee[$j]['OT2'] = "-"; + $employee[$j]['GrossNetSalary'] = "-"; + $employee[$j]['ESI2'] ="-"; + $employee[$j]['PF2'] ="-"; + $employee[$j]['Sep_24_Advance'] = "-"; + $employee[$j]['TDS_92B'] = "-"; + $employee[$j]['Refuned_PF_Nov24'] = "-"; + $employee[$j]['Net_Salary'] = "-"; + $employee[$j]['Diff'] = "-"; + $employee[$j]['work_location'] = $record->work_location; + $employee[$j]['tds_applicable'] = $record->tds_applicable; + $employee[$j]['pf_applicable'] = $record->pf_applicable; + $employee[$j]['esi_applicable'] = $record->esi_applicable; + $j++; + } + $finalFooter[] = $employee; + // do not try chatgpt please. + $location_info = []; + foreach ($employee as $key => $value) + { + if (isset($value['work_location']) && $value['work_location'] == "Thiruvenkadu") { + array_push($location_info,$value); + unset($employee[$key]); + } + } + + $tds_info = []; + foreach ($employee as $key => $value) + { + if (isset($value['tds_applicable']) && (int)$value['tds_applicable'] == 1) { + array_push($tds_info,$value); + unset($employee[$key]); + } + } + + $esi_or_pf_info = []; + foreach ($employee as $key => $value) + { + if (isset($value['pf_applicable']) && (int)$value['pf_applicable'] == 1 || isset($value['esi_applicable']) && (int)$value['esi_applicable'] == 1) { + array_push($esi_or_pf_info,$value); + unset($employee[$key]); + } + } + + $keysToRemove = ['work_location','tds_applicable','pf_applicable','esi_applicable']; + foreach ($tds_info as &$t_item) { + foreach ($keysToRemove as $key) { + unset($t_item[$key]); + } + } + unset($t_item); + + foreach ($esi_or_pf_info as &$e_item) { + foreach ($keysToRemove as $key) { + unset($e_item[$key]); + } + } + unset($e_item); + + foreach ($location_info as &$l_item) { + foreach ($keysToRemove as $key) { + unset($l_item[$key]); + } + } + unset($l_item); + + foreach ($employee as &$o_item) { + foreach ($keysToRemove as $key) { + unset($o_item[$key]); + } + } + unset($o_item); + + foreach ($finalFooter as &$topLevelArray) { + if (is_array($topLevelArray)) { + foreach ($topLevelArray as &$employeeArray) { // Changed from $finalFooter to $employeeArray + if (is_array($employeeArray)) { // Check $employeeArray instead of $x + foreach ($keysToRemove as $key) { + if (array_key_exists($key, $employeeArray)) { + unset($employeeArray[$key]); + } + } + } + } + unset($employeeArray); // Break the reference + } + } + unset($topLevelArray); // Break the reference + + $xl[] = array_values($tds_info); + $xl[] = array_values($esi_or_pf_info); + $xl[] = array_values($location_info); + $xl[] = array_values($employee); + + // dd($xl); + + $headlines['company_name'] = isset($company_info[0]->CompanyName) ? $company_info[0]->CompanyName : "Resico India Pvt Ltd"; + $headlines['header1'] = $headlines_main; + $headlines['header2'] = $headlines_sub; + $headlines['type'] = 2; + $headlines['header2'] = $headlines_sub; + $headlines['merge_end_column'] = 7; + $headlines['file_name'] = 'ResicoSalary'.$pmonth.'-'.$pyear.'.xls'; + $headlines['final_Footer'] = $finalFooter; + + generate_excel($headlines,$xl); + + + // dd($employee); + + } + public function driverMonthlyPayInputs($current) { @@ -576,7 +894,7 @@ class Payslip extends BaseController $Estimate_first = explode(".", $Estimate); - if (!is_numeric($Estimate) || (strlen((string)$Estimate)) > 8 || (strlen((string)$Estimate_first[0])) > 6) { + if (!is_numeric($Estimate) || (strlen((string)$Estimate)) > 10 || (strlen((string)$Estimate_first[0])) > 8) { // echo $Estimate_first[0]; // echo $EmpID . "-Estimate Invalid Data!"; $ErrorFlag++; @@ -602,7 +920,7 @@ class Payslip extends BaseController $EmpID = $j['Emp ID']; $is_driver = $this->driver_model->getDriverName($EmpID,1); $DaysWorked = $j['Days Worked']; - $NoTrips = isset($j['Number Of Trips']) ? $j['Number Of Trips'] : 0.00 ; + // $NoTrips = isset($j['Number Of Trips']) ? $j['Number Of Trips'] : 0.00 ; $TotalCalDays = isset($j['Total Days']) ? $j['Total Days'] : 0.00 ; $ActualSalary = isset($j['Basic Salary']) ? $j['Basic Salary'] : 0.00 ; $WorkedSalary = isset($j['Worked Salary']) ? $j['Worked Salary'] : 0.00 ; @@ -659,12 +977,11 @@ class Payslip extends BaseController $Food = isset($load_driver_data[0]->monthly_food_amount) ? (int)$load_driver_data[0]->monthly_food_amount : 0; $Shed = isset($load_driver_data[0]->shed_amount) ? (int)$load_driver_data[0]->shed_amount : 0; $Diesel = isset($load_driver_data[0]->diesel_amount) ? (int)$load_driver_data[0]->diesel_amount : 0; - + $drivermonthlypaydata = array( 'month_year'=>$month, 'driver_id'=>$EmpID, 'TotalCalDays' => $TotalCalDays, - 'no_of_loads'=>(strpos($NoTrips, "(trip)") !== false) ? explode(" ", $NoTrips)[0] : 0, 'monthly_food_amount'=>$Food, 'total_diesel_amount'=>$Diesel, 'total_shed_amount'=>$Shed, @@ -681,7 +998,6 @@ class Payslip extends BaseController ); - // print_r($drivermonthlypaydata);die; $result = $this->driver_model->saveMonthlyData($drivermonthlypaydata); } @@ -845,7 +1161,6 @@ class Payslip extends BaseController // print_r($is_driver);die; if($is_driver == "1"){ $Data['PayDetails'] = $this->driver_model->GetPayslipdata($Payon, $EmpID); - // print_r($Data['PayDetails']);die; $name = $Data['PayDetails'][0]->driver_name; $filename = 'PayslipFor-' . $EmpID . ' ' . $name . ' ' . $m . ' ' . $y; @@ -878,7 +1193,7 @@ class Payslip extends BaseController } } - +// echo $html;die; $mpdf = new Mpdf([ 'mode' => 'utf-8', @@ -899,7 +1214,7 @@ class Payslip extends BaseController $mpdf->WriteHTML($html); $mpdf->SetTitle('Resico:Payslip'); - $mpdf->Output("Payslip-" . $filename . ".pdf", 'D'); + $mpdf->Output($filename . ".pdf", 'D'); } diff --git a/app/Controllers/Requisitionform.php b/app/Controllers/Requisitionform.php index 287dee63..e6cd0c8d 100755 --- a/app/Controllers/Requisitionform.php +++ b/app/Controllers/Requisitionform.php @@ -130,18 +130,7 @@ class Requisitionform extends BaseController // echo 'ReqType'.$ReqPOType; $data['ReqPOType'] = $ReqPOType == '' ? $ReqType : $ReqPOType; $data['LineItem'] = $this->requistion_model->getEditRequistItemList($ReqNo); - $data['description'] = ''; - foreach ($data['LineItem'] as $key => $line) { - $description = isset($line->MaterialDescription) ? $line->MaterialDescription : null; - - $data['LineItem'][$key]->CategoryName = $line->MaterialCode - ? $this->requistion_model->getCategoryName($line->MaterialCode) - : ""; - } - - - $data['CostCenter'] = $this->requistion_model->getCostCenterUserID($userID); // $data['MaterialCode'] = $this->requistion_model->EditMaterialCode($ReqNo, $ReqType); // Old Based on Type.. $data['MaterialCode'] = $this->requistion_model->EditMaterialCode($ReqNo); @@ -163,7 +152,7 @@ class Requisitionform extends BaseController } $this->requistion_model->DeleteRequistionLineItem($ReqNo, $MaterialCode); - return $this->response->setJSON("Successfully Deleted the Line item" . $ReqNo); + return $this->response->setJSON("Successfully Deleted the Line item " . $ReqNo); } /** @@ -215,49 +204,6 @@ class Requisitionform extends BaseController $this->loadViews("requisitionlistapproval", $this->global, $data, NULL); } - /** - * This function used to load the Employee details based on the EmpID selection - */ - function GetSelectedEmpDetails() - { - $ReqType = $_GET['ReqType']; - $EmpID = $this->request->getPost('id'); - $empDetails = $this->requistion_model->GetEmployeeDetails($EmpID); - $DeptCode = $empDetails[0]['DEPCode']; - $CostList = $this->requistion_model->GetCostCenterByDept($DeptCode); - $HTML = ""; - $BudAmount = ""; - if (count($CostList) > 0) { - for ($j = 0; $j < count($CostList); $j++) { - $Code = $CostList[$j]['CostCenterCode']; - $Name = $CostList[$j]['CostCenterName']; - $HTML .= ""; - } - } - if (count($CostList) == 1) { - - $FYStart = ''; - $FYEnd = ''; - $FiscalYear = $this->costcenter_model->getFiscalYear(); - if (!empty($FiscalYear)) { - foreach ($FiscalYear as $Fy) { - $FYStart = $Fy->StartYear; - $FYEnd = $Fy->EndYear; - } - } - - $FYdt = $FYStart . " - " . $FYEnd; - - - $result = $this->purchaseorder_model->GetAvailableBudgetAmount($CostCode, $FYdt, $ReqType); - //print_r($result); - $AvilBudAmt = '0'; - if (count($result) > 0) { - $BudAmount = $result[0]['BudgetAmount'] - $result[0]['Totalvalue']; - } - } - die(json_encode(array('emp' => $empDetails, 'Cost' => $HTML, 'AvlAmount' => $BudAmount))); - } function getAvailableBudAmount() { @@ -288,6 +234,7 @@ class Requisitionform extends BaseController { $ReqType = $this->request->getPost('id'); + $CatType = $this->request->getPost('cid'); $MaterialCode = $this->requistion_model->GetMaterialCode($ReqType); $MaterialName = ""; @@ -298,7 +245,9 @@ class Requisitionform extends BaseController for ($j = 0; $j < count($MaterialCode); $j++) { $Code = $MaterialCode[$j]['MaterialCode']; $Name = $MaterialCode[$j]['MaterialName']; - $HTML .= ""; + $HSN = $MaterialCode[$j]['HSNCODE'] ? $MaterialCode[$j]['HSNCODE']." - " : ""; + // $HTML .= ""; + $HTML .= ""; } $MaterialName = $MaterialCode[0]['MaterialName']; $UOM = $MaterialCode[0]['UOM']; @@ -319,6 +268,28 @@ class Requisitionform extends BaseController return $this->response->setJSON(['MatDetail' => $MaterialDetails]); } + + function getCategoryDetails() + { + + $CategoryDetails = $this->requistion_model->getmaterialCategory(); + $HTML = ""; + + if (count($CategoryDetails) > 0) { + for ($j = 0; $j < count($CategoryDetails); $j++) { + $Code = $CategoryDetails[$j]['Key']; + $Name = $CategoryDetails[$j]['ConfigValue']; + + $HTML .= ""; + + } + + } + + $response = ['Category' => $HTML]; + return $this->response->setJSON($response); + } + /** * To Insert the Requistion Details to Database */ @@ -399,9 +370,13 @@ class Requisitionform extends BaseController } if ($Status == REQ_DRAFT) { - $display_message = 'Successfully Saved the Requistion details.Requistion No is ' . $ReqNumber; - } else { - $display_message = 'Successfully Created the Requistion details.Requistion No is ' . $ReqNumber; + $display_message = "Successfully Saved the Requisition details in Draft!\nRequistion Number Is: ". $ReqNumber; + // $display_message = "Requistion Saved as Draft!\nRequistion Number Is: ". $ReqNumber; + } else if($Status == REQ_APPROVED) { + $display_message = "Successfully Updated the Requistion details as Approved!\nRequistion Number Is: ". $ReqNumber; + // $display_message = "Requistion Created Successfully!\nRequistion Number Is: ". $ReqNumber; + }else{ + $display_message = "Successfully Created the Requistion details!\nRequistion Number Is: ". $ReqNumber; } return $this->response->setJSON([$display_message]); @@ -468,7 +443,8 @@ class Requisitionform extends BaseController } } } - $display_message = 'Successfully Updated the Requistion details.Requistion No is ' . $ReqNumber; + + $display_message = "Successfully Updated the Requistion details!\nRequistion Number Is: ". $ReqNumber; return $this->response->setJSON([$display_message]); } @@ -601,7 +577,8 @@ class Requisitionform extends BaseController $Request = array('Status' => $Status, 'Comments' => $Remarks, 'ApprovedOn' => $ApprovedDate, 'Approvedby' => $ApprovedBy); $this->requistion_model->UpdateRequistion($Request, $ReqNo); - return $this->response->setJSON(['message' => "Successfully Updated the Requisition No: " . $ReqNo]); + + return $this->response->setJSON(['message' => "Requistion Updated Successfully!\nRequistion Number Is: ".$ReqNo]); } } diff --git a/app/Helpers/excel_helper.php b/app/Helpers/excel_helper.php index c4ab8e73..3ae8c548 100755 --- a/app/Helpers/excel_helper.php +++ b/app/Helpers/excel_helper.php @@ -3,47 +3,412 @@ use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; use PhpOffice\PhpSpreadsheet\IOFactory; use PhpOffice\PhpSpreadsheet\Reader\Exception as SpreadsheetReaderException; +use PhpOffice\PhpSpreadsheet\Cell\Coordinate; +use PhpOffice\PhpSpreadsheet\Style\Alignment; +use PhpOffice\PhpSpreadsheet\Style\Color; +use PhpOffice\PhpSpreadsheet\Style\Font; +use PhpOffice\PhpSpreadsheet\Style\Fill; +use PhpOffice\PhpSpreadsheet\Style\Border; +use PhpOffice\PhpSpreadsheet\Style\Borders; + if (!function_exists('generate_excel')) { - - /* - This function generates an Excel file using the given headers and data and saves it with the specified filename. - It utilizes the PhpSpreadsheet library to create and manipulate Excel files. - - Parameters: - - $headers: An array containing the column headers for the Excel sheet. - - $data: An array containing the data to be inserted into the Excel sheet. - - $filename: The name of the file to be saved. - - $totals (optional): A flag indicating whether to include total calculations in the Excel sheet. - */ - - - function generate_excel($headers, $data, $filename) + + function generate_excel($headlines, $xldata) { + + $headersMain = $headlines['header1']; + $headersSub = $headlines['header2']; + $company = $headlines['company_name']; + $filename = $headlines['file_name']; + $type = $headlines['type']; + $footer = false; + $mergeEndCol = $headlines['merge_end_column']; + // $type = 1 means $data is single + // $type = 2 means $data is multiple array + + // Create new Spreadsheet object $spreadsheet = new Spreadsheet(); + $sheet = $spreadsheet->getActiveSheet(); + + // Set worksheet title + $sheet->setTitle('Sheet 1'); - // Set worksheet title - $spreadsheet->getActiveSheet()->setTitle('Sheet 1'); + + // A1 Start here... should be compnay name .... + $sheet->setCellValue('A1', $company); - // Set headers into the spreadsheet - $spreadsheet->getActiveSheet()->fromArray([$headers], null, 'A1'); + // Get last column letter based on headers count + // $lastColumnLetter = getExcelColumnName(count($headers) - 1); + $colCount = count($headersMain); + + // Calculate end column by character math (works up to 'ZZ') + $lastColumnLetter = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::stringFromColumnIndex($colCount); - // Set data into the spreadsheet - $spreadsheet->getActiveSheet()->fromArray($data, null, 'A2'); + $sheet->mergeCells("A1:{$lastColumnLetter}1"); + // Style A1 + $sheet->getStyle("A1")->getFill() + ->setFillType(Fill::FILL_SOLID) + ->getStartColor()->setRGB('ADD8E6'); // Light blue + $sheet->getStyle("A1")->getAlignment() + ->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER) + ->setVertical(\PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER); + + $sheet->getStyle("A1")->getFont()->setBold(true)->setSize(14); + + $sheet->getStyle("A1")->getFont() + ->getColor() + ->setRGB(Color::COLOR_WHITE); + + // /. A1 ends here + $currentRow = 2; // Start at row 2 + if($type == 1){ + $startCell = 'A' . $currentRow; + $lastcolrow = callHeader($sheet, $headersMain, $startCell,$headersSub); + $lastcolrow2 = callSkipRow($lastcolrow); + $lastcolrow3 = callData($sheet,$headersMain,$xldata,$lastcolrow2,$mergeEndCol); + $lastcolrow4 = callSkipRow($lastcolrow3); + if($footer){ + $lastcolrow5 = callFooter($sheet, $headersMain, $xldata, $lastcolrow4,'','',$mergeEndCol); + } + + + }else if($type == 2){ + // $final_Footer=[]; + // foreach($xldata as $i => $xl){ + // echo $i; + // echo "
";
+                //     print_r($xl[$i]);
+                //     echo "
"; + // // echo count($xl[$i])."**"; + // // $forFinalFooter + // } + // foreach ($xldata as $i => $xl) { + // $forFinalFooter[] = $xl[$i]; + // } + $final_Footer = isset($headlines['final_Footer']) && !empty($headlines['final_Footer']) ? $headlines['final_Footer'] : []; + + foreach ($xldata as $index => $data) { + if (!empty($data)) { + $startCell = 'A' . $currentRow; + + $lastcolrow = callHeader($sheet, $headersMain, $startCell,$headersSub); + $lastcolrow2 = callSkipRow($lastcolrow); + $lastcolrow3 = callData($sheet, $headersMain, $data, $lastcolrow2); + $lastcolrow4 = callSkipRow($lastcolrow3); + $lastcolrow5 = callFooter($sheet, $headersMain, $data, $lastcolrow4,'Total Amount Rs','228B22',$mergeEndCol); + $lastcolrow6 = callSkipRow($lastcolrow5); + + // Update currentRow for next iteration + $currentRow = (int) filter_var($lastcolrow6, FILTER_SANITIZE_NUMBER_INT); + } else { + $startCell = 'A' . $currentRow; + $lastcolrow = callHeader($sheet, $headersMain, $startCell,$headersSub); + $lastcolrow2 = callSkipRow($lastcolrow); + + $currentRow = (int) filter_var($lastcolrow2, FILTER_SANITIZE_NUMBER_INT); + } + } + + if(!empty($final_Footer)){ + $startCell = 'A' . $currentRow; + callFooter($sheet, $headersMain, $final_Footer[0], $startCell,'Final Net Salary Amount Rs','DC143C',$mergeEndCol); + // echo "cr".$currentRow;die; + } + + // $final_Footer + + } // Create Excel writer $writer = new Xlsx($spreadsheet); + $columnCount = count($headersMain); + for ($col = 1; $col <= $columnCount; $col++) { + $columnLetter = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::stringFromColumnIndex($col); + $sheet->getColumnDimension($columnLetter)->setAutoSize(true); + } + + $highestColumn = $sheet->getHighestColumn(); // e.g., 'E' + $highestRow = $sheet->getHighestRow(); // e.g., 10 + + // Build the full range (e.g., 'A1:E10') + $range = 'A1:' . $highestColumn . $highestRow; + + // Apply border to that range + $sheet->getStyle($range)->applyFromArray([ + 'borders' => [ + 'allBorders' => [ + 'borderStyle' => Border::BORDER_THIN, + 'color' => ['argb' => 'FF000000'], + ], + ], + ]); try { + // Save Excel file to the specified path - $writer->save($filename); - return true; // Return true if file was successfully saved + ob_clean(); + header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); + header("Content-Disposition: attachment; filename=\"$filename\""); + header('Cache-Control: max-age=0'); + + $writer->save('php://output'); // stream to browser + exit; // Return true if file was successfully saved + } catch (\Exception $e) { // Log or handle the exception return false; // Return false if there was an error saving the file } } } + + +function callHeader($sheet, $headersMain, $startCell, $headersSub = []) { + $rowNumber = (int) filter_var($startCell, FILTER_SANITIZE_NUMBER_INT); + + $startCol = 'A'; + $colCount = count($headersMain); + + // Calculate end column by character math (works up to 'ZZ') + $endCol = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::stringFromColumnIndex($colCount); + + // Check if sub-header has any non-empty value + $hasSubHeader = !empty(array_filter($headersSub, function ($val) { + return trim($val) !== ''; + })); + + // 1. Write Main Header + $sheet->fromArray([$headersMain], null, $startCell); + $mainHeaderRange = "{$startCol}{$rowNumber}:{$endCol}{$rowNumber}"; + + // Style Main Header + $sheet->getStyle($mainHeaderRange)->applyFromArray([ + 'font' => [ + 'bold' => true, + 'color' => ['rgb' => 'FF0000'], + 'size' => 12, + ], + 'alignment' => [ + 'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER, + 'vertical' => \PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER, + ] + ]); + + if ($hasSubHeader) { + // 2. Write Sub Header + $subHeaderRow = $rowNumber + 1; + $sheet->fromArray([$headersSub], null, "A{$subHeaderRow}"); + + $subHeaderRange = "{$startCol}{$subHeaderRow}:{$endCol}{$subHeaderRow}"; + + + $sheet->getStyle($subHeaderRange)->applyFromArray([ + 'font' => [ + 'bold' => true, + 'color' => ['rgb' => 'FF0000'], + 'size' => 12, + ], + 'alignment' => [ + 'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER, + 'vertical' => \PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER, + ] + ]); + + return 'A' . ($subHeaderRow + 1); + } else { + return 'A' . ($rowNumber + 1); + } +} + + + +function callData($sheet, $headers, $data, $startCell) { + + $startRow = (int) filter_var($startCell, FILTER_SANITIZE_NUMBER_INT); + $startCol = 'A'; + $sheet->fromArray($data, null, $startCell); + + $dataRowCount = count($data); + $lastDataRow = $startRow + $dataRowCount; + + // $dataColCount = count($headers); + // $lastDataColumn = getExcelColumnName($dataColCount - 1); + // $dataRange = "{$startCol}{$startRow}:{$lastDataColumn}{$lastDataRow}"; + // Set font color to black + // $sheet->getStyle($dataRange)->getFont()->getColor()->setRGB('000000'); + + return 'A' . ($lastDataRow + 1); // return next row +} + +function callSkipRow($startCell){ + $row = (int) filter_var($startCell, FILTER_SANITIZE_NUMBER_INT); + return 'A' . ($row + 1); // just skip a line +} + +// function callFooter($sheet, $headers, $data, $startCell,$mergeEndindex) { + +// $row = (int) filter_var($startCell, FILTER_SANITIZE_NUMBER_INT); + +// $startCol = preg_replace('/[0-9]/', '', $startCell); + +// // Determine numeric columns dynamically +// // $numericIndexes = []; +// // foreach ($data as $index => $val) { +// // foreach ($data as $rowData) { +// // if (isset($rowData[$index]) && is_numeric($rowData[$index])) { +// // $numericIndexes[] = $index; +// // break; +// // } +// // } +// // } +// if (!empty($data)) { +// // Look at the first row +// $firstRow = $data[0]; + +// foreach ($firstRow as $key => $value) { +// foreach ($data as $row) { +// if (isset($row[$key]) && is_numeric($row[$key])) { +// $numericIndexes[] = $key; // use the key (could be column name) +// break; +// } +// } +// } +// } + +// // Get first numeric column index for placing totals +// if (empty($numericIndexes)) return 'A' . ($row + 1); // Nothing to total + +// sort($numericIndexes); +// $firstNumericIndex = $numericIndexes[0]; +// $colCount = count($headers); + +// // Calculate end column by character math (works up to 'ZZ') +// if($mergeEndindex == ''){ +// $mergeEndCol = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::stringFromColumnIndex($colCount - 1); + +// }else{ +// $mergeEndCol = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::stringFromColumnIndex((int)$mergeEndindex); +// } + + + +// // echo gettype($row);die; + +// // Merge from A to column before first numeric column (for "TOTAL" label) +// $sheet->mergeCells("A{$row}:{$mergeEndCol}{$row}"); +// $sheet->setCellValue("A{$row}", 'TOTAL'); + +// // Style for TOTAL label +// $sheet->getStyle("A{$row}:{$mergeEndCol}{$row}")->applyFromArray([ +// 'font' => [ +// 'bold' => true, +// 'size' => 14, +// 'color' => ['rgb' => '228B22'] +// ], +// 'alignment' => [ +// 'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER, +// 'vertical' => \PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER +// ] +// ]); + +// // Total each numeric column and write to corresponding cell +// foreach ($numericIndexes as $index) { +// $total = 0; +// foreach ($data as $rowData) { +// $value = $rowData[$index] ?? 0; +// if (is_numeric($value)) { +// $total += $value; +// } +// } +// $colLetter = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::stringFromColumnIndex((int)$index); +// $sheet->setCellValue("{$colLetter}{$row}", $total); +// } + +// return 'A' . ($row + 1); // Return next available row +// } +function callFooter($sheet, $headers, $data, $startCell,$label,$code,$mergeEndIndex = null) { + $row = (int) filter_var($startCell, FILTER_SANITIZE_NUMBER_INT); + $startCol = preg_replace('/[0-9]/', '', $startCell); + + $numericKeys = []; + $columnKeys = array_keys($data[0] ?? []); + $columnKeyToIndex = array_flip($columnKeys); // key => index + + // Detect numeric columns + foreach ($columnKeys as $key) { + foreach ($data as $rowData) { + if (isset($rowData[$key]) && is_numeric($rowData[$key])) { + $numericKeys[] = $key; + break; + } + } + } + + // If no numeric columns, skip total row + if (empty($numericKeys)) { + return $startCol . ($row + 1); + } + + // Determine where to end the merge for the TOTAL label + if ($mergeEndIndex === null || $mergeEndIndex === '') { + $firstNumericKey = $numericKeys[0]; + $firstNumericIndex = $columnKeyToIndex[$firstNumericKey]; + $mergeEndIndex = $firstNumericIndex > 0 ? $firstNumericIndex - 1 : 0; + } + + // Write totals for each numeric column + foreach ($numericKeys as $colKey) { + $total = 0; + foreach ($data as $rowData) { + $val = $rowData[$colKey] ?? 0; + if (is_numeric($val)) { + $total += $val; + } + } + + $colIndex = $columnKeyToIndex[$colKey]; + $colLetter = Coordinate::stringFromColumnIndex($colIndex + 1); + $sheet->setCellValue("{$colLetter}{$row}", $total); + $sheet->getStyle("{$colLetter}{$row}")->getNumberFormat()->setFormatCode('#,##0.00'); + $sheet->getStyle("{$colLetter}{$row}")->applyFromArray([ + 'font' => [ + 'bold' => true, + 'size' => 12 + ], + 'alignment' => [ + 'horizontal' => Alignment::HORIZONTAL_CENTER, + 'vertical' => Alignment::VERTICAL_CENTER + ] + ]); + + + } + + + $mergeEndCol = Coordinate::stringFromColumnIndex((int)$mergeEndIndex + 1); + $mergeRange = "{$startCol}{$row}:{$mergeEndCol}{$row}"; + + // Merge cells and write $label name = "TOTAL" + $sheet->mergeCells($mergeRange); + $sheet->setCellValue("{$startCol}{$row}", $label); + + // Style "TOTAL" label + $sheet->getStyle($mergeRange)->applyFromArray([ + 'font' => [ + 'bold' => true, + 'size' => 14, + 'color' => ['rgb' => $code] + ], + 'alignment' => [ + 'horizontal' => Alignment::HORIZONTAL_CENTER, + 'vertical' => Alignment::VERTICAL_CENTER + ] + ]); + + // Return next row cell reference + return $startCol . ($row + 1); +} + diff --git a/app/Models/Config_model.php b/app/Models/Config_model.php index cd16446c..34fb88c8 100755 --- a/app/Models/Config_model.php +++ b/app/Models/Config_model.php @@ -337,6 +337,7 @@ return $result; $result = $this->db->table('t_configdetails') ->where('Config_ID','C023') + ->where('isActive',1) ->get() ->getResultArray(); diff --git a/app/Models/Driver_model.php b/app/Models/Driver_model.php index 5fee3b33..3a446d87 100755 --- a/app/Models/Driver_model.php +++ b/app/Models/Driver_model.php @@ -131,12 +131,14 @@ class Driver_model extends Model } function driverAttendanceForMonthlyPayInputs($from,$to){ - // list($year,$month,$date) = explode('-', get_current_date()); + list($year,$month,$date) = explode('-', $from); + $t_driver_monthly_pay_inputs_month_year = "$month-$year"; // $new_date_format = "$year-$month-01"; $builder = $this->db->table('t_driver_attendance') ->select('t_driver_attendance.driver_id,driver_details.FirstName as driver_name,driver_details.is_driver,COUNT(DISTINCT t_driver_attendance.date) AS unique_days, - DATE_FORMAT(date, "%M-%Y") AS month_year,COUNT(t_driver_attendance.load_type) AS no_of_loads,driver_details.*,t_emp_pay_data.PF_Rate,t_emp_pay_data.ESI_Rate') + DATE_FORMAT(date, "%M-%Y") AS month_year,driver_details.*,t_emp_pay_data.PF_Rate,t_emp_pay_data.ESI_Rate, + COUNT(t_driver_attendance.load_type) AS no_of_loads') ->select('SUM(t_driver_attendance.salary_amount) as monthly_salary_amount, SUM(t_driver_attendance.food_amount) as monthly_food_amount, diesel_amount,shed_amount,CONCAT_WS(" ", driver_details.FirstName, driver_details.LastName) AS FullName') @@ -145,18 +147,21 @@ class Driver_model extends Model ->join('t_emp_pay_data','t_emp_pay_data.EmpID=driver_details.EmpID','Left') ->join('t_loan_master','t_loan_master.EmpID = driver_details.EmpID and t_loan_master.Remaining_Due != 0','Left') ->join('t_loan_history','t_loan_history.Loan_ID = t_loan_master.Loan_ID','Left') - ->join('t_driver_monthly_pay_inputs','t_driver_monthly_pay_inputs.driver_id = driver_details.EmpID','Left') + ->join('t_driver_monthly_pay_inputs', + 't_driver_monthly_pay_inputs.driver_id = driver_details.EmpID AND + t_driver_monthly_pay_inputs.month_year = "'.$t_driver_monthly_pay_inputs_month_year.'"', + 'left' + ) ->where('t_driver_attendance.date BETWEEN "'.$from.'" AND "'.$to.'"') // ->where("t_loan_master.Due_Start_Date", $new_date_format) ->groupBy('DATE_FORMAT(t_driver_attendance.date, "%M-%Y"),t_driver_attendance.driver_id'); $query = $builder->get(); // $last_query = $this->db->getLastQuery(); - // echo $last_query;die; + // echo $last_query; return $query->getResult(); } - function driverMonthlyPayInputs($monthYear){ $builder = $this->db->table('t_driver_monthly_pay_inputs'); @@ -221,7 +226,8 @@ class Driver_model extends Model ->where('DATE_FORMAT(`t_driver_attendance`.`date`, "%Y-%m")',$monthyear) ->where('t_driver_attendance.driver_id',$input_driver_id); $query = $builder->get()->getRow(); - // $last_query = $this->db->getLastQuery(); + // $last_query = $this->db->getLastQuery(); + // echo $last_query;die; return $query; } function getPayOn() @@ -317,13 +323,14 @@ class Driver_model extends Model $builder = $this->db->table('t_driver_payroll Pay')->select('Pay.*') ->select('Emp.EmpID,CONCAT_WS(" ", Emp.FirstName, Emp.LastName) as driver_name,Emp.DateofBirth as Dob,Emp.PANNo as Pan,Emp.BankBranchName as BankName,Emp.BankAccountNo as BankAccountNumber,Emp.IFSCCode as IFSCCode,Emp.DateofJoining as DOJ,Emp.AadharNo,Emp.Designation as Designation,Dep.DepartmentName as DeptName,Emp.esi_applicable,Emp.pf_applicable') - ->select('t_emp_pay_data.PF_Rate,t_emp_pay_data.ESI_Rate') + ->select('t_emp_pay_data.PF_Rate,t_emp_pay_data.ESI_Rate,COUNT(t_driver_attendance.load_type) AS no_of_load') ->select('month.Festival_Bonus,month.BASIC,month.HRA,month.Loan_Recovered,month.total_diesel_amount,month.total_shed_amount') // ->select('month.monthly_salary_amount,month.monthly_food_amount,month.Festival_Bonus,month.final_payment,month.HRA,month.ESI,month.PF,month.Loan_Recovered,month.total_diesel_amount,month.total_shed_amount') ->join('t_employee_details Emp', 'Pay.driver_id = Emp.EmpID') ->join('t_departmentdetails Dep', 'Emp.Departmentcode = Dep.DEPCode') ->join('t_emp_pay_data','t_emp_pay_data.EmpID=Emp.EmpID','Left') - ->join('t_driver_monthly_pay_inputs month', 'month.driver_id = Emp.EmpID'); + ->join('t_driver_monthly_pay_inputs month', 'month.driver_id = Emp.EmpID') + ->join('t_driver_attendance','t_driver_attendance.driver_id = Emp.EmpID'); if ($PayOn != '') { $builder->where('Pay.PayOn', $PayOn); } diff --git a/app/Models/Employeedetails_model.php b/app/Models/Employeedetails_model.php index 9e2348e0..fd8e6aa6 100755 --- a/app/Models/Employeedetails_model.php +++ b/app/Models/Employeedetails_model.php @@ -264,7 +264,8 @@ class Employeedetails_model extends Model ->join('t_employee_details as emp', 'emp.empid=tbl.empid', 'left') ->join('tbl_users as tbl1', ' ed.UpdatedBy = tbl1.userid', 'left') ->join('t_employee_details as emp1', 'emp1.empid=tbl1.empid', 'left') - ->join('t_emp_pay_data', 'ed.EmpID=t_emp_pay_data.EmpID', 'left'); + ->join('t_emp_pay_data', 'ed.EmpID=t_emp_pay_data.EmpID', 'left') + ->groupBy('ed.EmpID'); return $builder->get()->getResultArray(); diff --git a/app/Models/Emppaydate_model.php b/app/Models/Emppaydate_model.php index 3a185c4d..b31e7bec 100755 --- a/app/Models/Emppaydate_model.php +++ b/app/Models/Emppaydate_model.php @@ -68,7 +68,7 @@ class Emppaydate_model extends Model } function getUserInfo($paydataid) { - $sql = 'select t_emp_pay_data.Pay_Data_ID,t_emp_pay_data.EmpID as PAYEMPID,t_emp_pay_data.Basic_Pay,t_emp_pay_data.HRA_Rate,t_emp_pay_data.Allowances,t_emp_pay_data.Food_Allowances,t_emp_pay_data.Incentives,t_emp_pay_data.PF_Rate,t_emp_pay_data.ESI_Rate,t_emp_pay_data.HRA_Amount,t_emp_pay_data.TotalSalary,t_employee_details.FirstName,t_employee_details.LastName,t_loan_master.*from t_emp_pay_data + $sql = 'select t_emp_pay_data.Pay_Data_ID,t_emp_pay_data.EmpID as PAYEMPID,t_emp_pay_data.Basic_Pay,t_emp_pay_data.HRA_Rate,t_emp_pay_data.Allowances,t_emp_pay_data.Food_Allowances,t_emp_pay_data.Incentives,t_emp_pay_data.PF_Rate,t_emp_pay_data.ESI_Rate,t_emp_pay_data.HRA_Amount,t_emp_pay_data.TotalSalary,t_employee_details.FirstName,t_employee_details.LastName,t_employee_details.is_driver,t_loan_master.*from t_emp_pay_data join t_employee_details on t_emp_pay_data.EmpID=t_employee_details.EmpID left join t_loan_master on t_emp_pay_data.EmpID=t_loan_master.EmpID and t_loan_master.is_Active = 1 where t_emp_pay_data.Pay_Data_ID = ?;'; @@ -76,6 +76,23 @@ class Emppaydate_model extends Model return $query->getResult(); } + + function driverPayInfo($EmpID,$monthYear){ + + $builder = $this->db->table('t_driver_monthly_pay_inputs'); + $builder->select('t_driver_monthly_pay_inputs.*, t_driver_payroll.id as payroll_id'); + $builder->join('t_driver_payroll', 't_driver_payroll.driver_id = t_driver_monthly_pay_inputs.driver_id', 'left'); + $builder->where('t_driver_monthly_pay_inputs.driver_id', $EmpID); + $builder->where('t_driver_monthly_pay_inputs.month_year', $monthYear); + $builder->groupBy('t_driver_monthly_pay_inputs.driver_id, t_driver_monthly_pay_inputs.month_year'); + + $query = $builder->get(); + $result = $query->getResult(); + + return $result; + + } + function getUserLoanHistoryInfo($loan_id) { $sql = 'select * from t_loan_history where Loan_ID = ?;'; diff --git a/app/Models/Inwardgateregister_model.php b/app/Models/Inwardgateregister_model.php index a7983aa8..db7dbb13 100755 --- a/app/Models/Inwardgateregister_model.php +++ b/app/Models/Inwardgateregister_model.php @@ -195,7 +195,7 @@ class Inwardgateregister_model extends Model function viewpurchaseorder($PO) { - $subQuery = 'SELECT distinct POM.PONO, POL.MaterialCode, POL.Quantity, POL.ReceivedQuantity, (POL.Quantity - POL.ReceivedQuantity) as PendingQty, QuantityRejected, POL.PONO, MM.MaterialName, MM.UOM,POL.Rate + $subQuery = 'SELECT distinct POM.PONO, POL.MaterialCode, POL.Quantity, POL.ReceivedQuantity, (POL.Quantity - POL.ReceivedQuantity) as PendingQty, QuantityRejected, POL.PONO, MM.MaterialName, MM.UOM,MM.HSNCODE,POL.Rate FROM t_purchaseorder_master POM LEFT JOIN t_purchaseorder_lineitem POL ON POL.PONO = POM.PONO LEFT JOIN t_igr_master IGM ON IGM.PONO = POL.PONO @@ -568,7 +568,7 @@ class Inwardgateregister_model extends Model ->distinct() ->select(" igr.IGRNO,igr.*,igrd.*, - MM.MaterialName,MM.UOM, + MM.MaterialName,MM.UOM,MM.HSNCODE, sup.Address,sup.SupplierName, POL.Rate, POM.ServiceDescription,POL.Quantity,POM.POType,POM.IsOpenOrder, diff --git a/app/Models/Monthlypay_model.php b/app/Models/Monthlypay_model.php index d984d3d6..12903b92 100755 --- a/app/Models/Monthlypay_model.php +++ b/app/Models/Monthlypay_model.php @@ -103,7 +103,7 @@ class Monthlypay_model extends Model //echo $lastdate; //left join t_payroll on t_employee_details.EmpID = t_payroll.EmpID and month(t_payroll.PayOn) = month(?) and year(t_payroll.PayOn) = year(?) - $sql = "select t_emp_pay_data.EmpID,t_emp_pay_data.*,t_employee_details.FirstName,t_employee_details.DateofJoining,t_employee_details.Designation,t_employee_details.esi_applicable,t_employee_details.pf_applicable,t_employee_details.is_management_team,t_attendance.Days_Worked as Days_worked,t_attendance.Absent as LOP_Days,t_attendance.Paid_Leave as Paid_leave,t_attendance.Total_OTHrs as OT_Hrs_Worked,t_attendance.NoofDays,t_attendance.sunday_count,t_loan_master.Loan_ID,t_loan_master.Monthly_Due,t_loan_master.Due_Start_Date as DueDate,t_loan_master.Loan_Amount,t_loan_master.Paid_Amount,t_payroll.Id,t_monthly_pay_inputs.Loan_Recovered,t_monthly_pay_inputs.Estimate,t_monthly_pay_inputs.Festival_Bonus,t_monthly_pay_inputs.Other_Deductions,t_monthly_pay_inputs.is_payslip_generated,t_loan_history .Balance_Amount,t_employee_details.is_driver + $sql = "select t_emp_pay_data.EmpID,t_emp_pay_data.*,t_employee_details.work_location,t_employee_details.tds_applicable,t_employee_details.FirstName,t_employee_details.DateofJoining,t_employee_details.Designation,t_employee_details.esi_applicable,t_employee_details.pf_applicable,t_employee_details.is_management_team,t_attendance.Days_Worked as Days_worked,t_attendance.Absent as LOP_Days,t_attendance.Paid_Leave as Paid_leave,t_attendance.Total_OTHrs as OT_Hrs_Worked,t_attendance.NoofDays,t_attendance.sunday_count,t_loan_master.Loan_ID,t_loan_master.Monthly_Due,t_loan_master.Due_Start_Date as DueDate,t_loan_master.Loan_Amount,t_loan_master.Paid_Amount,t_payroll.Id,t_monthly_pay_inputs.Loan_Recovered,t_monthly_pay_inputs.Estimate,t_monthly_pay_inputs.Festival_Bonus,t_monthly_pay_inputs.Other_Deductions,t_monthly_pay_inputs.is_payslip_generated,t_loan_history .Balance_Amount,t_employee_details.is_driver from t_emp_pay_data left join t_employee_details on t_employee_details.EmpID = t_emp_pay_data.EmpID left join t_payroll on t_employee_details.EmpID = t_payroll.EmpID and t_payroll.PayOn = ? @@ -119,7 +119,7 @@ class Monthlypay_model extends Model $query = $this->db->query($sql, array($month, $month, $lastdate, $current, $current)); // Get the last executed query // $last_query = $this->db->getLastQuery(); - // echo $last_query; + // echo $last_query;die; return $query->getResult(); } diff --git a/app/Models/Purchaseorder_model.php b/app/Models/Purchaseorder_model.php index 8ce9adcd..82deffbd 100755 --- a/app/Models/Purchaseorder_model.php +++ b/app/Models/Purchaseorder_model.php @@ -1096,7 +1096,7 @@ mstr.CourierNo,pom.Status,pom.POType') //,bill.BillNo,bill.FilePath, { $subQuery = 'SELECT distinct LineItem.LineitemAuditorNotes,LineItem.LineItemNo,LineItem.ReqNo,LineItem.Per,Mat.MaterialCode,Mat.MaterialName,Mat.UOM,LineItem.Quantity,ReceivedQuantity,Rate,LineItem.Status,(LineItem.Quantity *Rate) as BasicValue ,(After_CGST + After_SGST + After_IGST) as Taxamount,Dept.DepartmentName - ,TotalValue,CGST,After_CGST,SGST,After_SGST,IGST,After_IGST,otherallowance,LineItem.CostCenterCode,LineItem.ServiceFrequency,LineItem.ServiceMaterialDescription,Req.Schedule_Type,Req.NumberOfService,Req.Service_Period,ReqDet.MaterialDescription + ,TotalValue,CGST,After_CGST,SGST,After_SGST,IGST,After_IGST,otherallowance,LineItem.CostCenterCode,LineItem.ServiceFrequency,LineItem.ServiceMaterialDescription,Req.Schedule_Type,Req.NumberOfService,Req.Service_Period,ReqDet.MaterialDescription,Mat.HSNCODE FROM t_purchaseorder_lineitem LineItem left join t_materialmaster Mat on Mat.MaterialCode = LineItem.MaterialCode left join t_service_tax Tax on Tax.LineItemNo = LineItem.LineItemNo @@ -1142,7 +1142,7 @@ mstr.CourierNo,pom.Status,pom.POType') //,bill.BillNo,bill.FilePath, { $subQuery = 'SELECT distinct LineItem.LineitemAuditorNotes,LineItem.LineItemNo,Req.ReqNo,Mat.MaterialCode,Mat.MaterialName,Mat.UOM,Quantity,Per,ServiceMaterialDescription,ReceivedQuantity,Rate,Req.Status,(Quantity *Rate) as BasicValue , (( AfterSGST + AfterCGST + - AfterIGST )) as Taxamount ,TotalValue,Tax.*,Req.CostCenterCode,Dept.DepartmentName,LineItem.LineitemAuditorNotes + AfterIGST )) as Taxamount ,TotalValue,Tax.*,Req.CostCenterCode,Dept.DepartmentName,LineItem.LineitemAuditorNotes,Mat.HSNCODE FROM t_purchaseorder_lineitem LineItem join t_materialmaster Mat on Mat.MaterialCode = LineItem.MaterialCode left join t_revenue_tax Tax on Tax.LineItemNo = LineItem.LineItemNo @@ -1337,7 +1337,7 @@ mstr.CourierNo,pom.Status,pom.POType') //,bill.BillNo,bill.FilePath, ExciseDutySHCess, AfterCustomEdCess, ROUND((Quantity * Rate), 2) AS TotalOrderValue, ROUND((POMast.ExchangeRate * BasicPriceInMTon), 2) AS BasicINRValue, TotalValue, CurrencyType, ReceivedQuantity, Tax.*, LineItem.ServiceMaterialDescription, Req.CostCenterCode, - Dept.DepartmentName + Dept.DepartmentName,Mat.HSNCODE FROM t_purchaseorder_lineitem LineItem LEFT JOIN t_purchaseorder_master POMast ON POMast.PONO = LineItem.PONO @@ -1743,7 +1743,7 @@ mstr.CourierNo,pom.Status,pom.POType') //,bill.BillNo,bill.FilePath, $subQuery = 'SELECT distinct LineItem.LineItemNo,LineItem.Per,LineItem.ServiceMaterialDescription,Req.ReqNo,Mat.MaterialCode,Mat.MaterialName,LineItem.ServiceMaterialDescription,LineItem.ServiceFrequency, Mat.UOM,Quantity,ReceivedQuantity,Rate,Req.Status,Tax.*, ROUND((RMCIncludingCustomersPerKG*Quantity),2)as Taxamount,LandingCharge,HighSeasSalesCharge,CustomDuty,ExciseDuty,ExciseDutyEdCess,CustomEdCess,POMast.ExchangeRate,POMast.ExchangeRateCalculatedon,POMast.TotalOrderValue as BasicValue,POMast.CapitalRange,AfterLandingCharge,AfterHighSeasSalesCharge,AfterCustomDuty,AfterExciseDuty,AfterExciseDutyEdCess,AddlExciseDuty,AfterAddlExciseDuty,Grossdutypayable,AvailableModvat,Grossexpensesduetocustomduty,purchaseratePerKG,CustomDutyExpensesPerKG,RMCIncludingCustomersPerKG,QuantityKG,BasicPriceInMTon,ProductPrice,CustomSHCess,AfterCustomSHCess,AfterExciseDutySHCess,ExciseDutySHCess,AfterCustomEdCess,ROUND((POMast.ExchangeRate*BasicPriceInMTon*Quantity),2) as BasicINRValue,Tax.TotalValue as ImportTotalValue,Tax.FreightType,Tax.NoOfTrip,Tax.FreightValue,Tax.AfterFreightValue,POMast.CurrencyType, - LineItem.LineitemAuditorNotes, + LineItem.LineitemAuditorNotes,Mat.HSNCODE, Req.CostCenterCode,Dept.DepartmentName FROM t_purchaseorder_lineitem LineItem join t_purchaseorder_master POMast on POMast.PONO = LineItem.PONO join t_materialmaster Mat on Mat.MaterialCode = LineItem.MaterialCode @@ -1802,7 +1802,7 @@ mstr.CourierNo,pom.Status,pom.POType') //,bill.BillNo,bill.FilePath, Mat.UOM,Quantity,ReceivedQuantity,Rate,Req.Status,ROUND((ServiceTax.After_CGST + ServiceTax.After_SGST + ServiceTax.After_IGST),2) as ServiceTaxamount ,ServiceTax.TotalValue,ServiceTax.CGST,ServiceTax.After_CGST,ServiceTax.SGST,ServiceTax.After_SGST,ServiceTax.IGST,ServiceTax.After_IGST,ServiceTax.otherallowance,ServiceTax.discount,ServiceTax.discountval,ServiceTax.Afterdiscountval, POMast.ExchangeRate,POMast.ExchangeRateCalculatedon,POMast.TotalOrderValue as BasicValue,POMast.CapitalRange,ROUND((POMast.TotalOrderValue),2) as BasicINRValue,POMast.CurrencyType,FreightType as Ftype,NoOfTrip as NoTrip,FreightValue as Fvalue,AfterFreightValue as Afvalue, - LineItem.LineitemAuditorNotes, + LineItem.LineitemAuditorNotes,Mat.HSNCODE, Req.CostCenterCode,Dept.DepartmentName FROM t_purchaseorder_lineitem LineItem join t_purchaseorder_master POMast on POMast.PONO = LineItem.PONO join t_materialmaster Mat on Mat.MaterialCode = LineItem.MaterialCode diff --git a/app/Models/Rawmaterialdetails_model.php b/app/Models/Rawmaterialdetails_model.php index 51e60c69..469884c6 100755 --- a/app/Models/Rawmaterialdetails_model.php +++ b/app/Models/Rawmaterialdetails_model.php @@ -74,16 +74,16 @@ class Rawmaterialdetails_model extends Model } //This function used to get the material category using configdetails table - function getmaterialCategory($MaterialCategory = '') + function getmaterialCategory() { $Config_ID = 'C023'; $builder = $this->db->table('t_configdetails') ->select('Key,Config_ID,ConfigValue') ->where('isActive', 1) ->where('Config_id', $Config_ID); - if ($MaterialCategory != '') { - $builder->where('ConfigValue !=', $MaterialCategory); - } + // if ($MaterialCategory != '') { + // $builder->where('ConfigValue !=', $MaterialCategory); + // } $query = $builder->get(); return $query->getResult(); @@ -143,6 +143,7 @@ class Rawmaterialdetails_model extends Model return $query->getResult(); } + function getAllSilicaRawMaterialCode(){ $builder = $this->db->table('t_materialmaster') @@ -444,7 +445,7 @@ where (CurrentStock+OpeningStock)db->table('t_materialmaster MM') - ->select('MM.MaterialCode,MM.MaterialName,MM.MaterialType,MM.Category,MM.IsActive,MM.UOM') + ->select('MM.MaterialCode,MM.MaterialName,MM.MaterialType,MM.Category,MM.IsActive,MM.UOM,MM.HSNCODE') ->where('MM.Category' , $configKey); $query = $builder->get(); diff --git a/app/Models/Requistion_model.php b/app/Models/Requistion_model.php index e4cfd50b..7bd246fb 100755 --- a/app/Models/Requistion_model.php +++ b/app/Models/Requistion_model.php @@ -155,7 +155,7 @@ class Requistion_model extends Model // This function also called in store req. also $reqType not removed..... function EditMaterialCode($ReqNo, $ReqType = NULL){ - $subQuery = 'SELECT Mat.MaterialCode, Mat.MaterialName, Mat.UOM FROM t_materialmaster Mat + $subQuery = 'SELECT Mat.MaterialCode, Mat.MaterialName, Mat.UOM,Mat.HSNCODE FROM t_materialmaster Mat WHERE Mat.MaterialCode NOT IN ( SELECT Req.MaterialCode FROM t_requestion_details Req JOIN t_requestion_master mast ON Req.ReqNo = mast.ReqNo @@ -175,7 +175,7 @@ class Requistion_model extends Model function GetMaterialCode($ReqType,$NotArray='') { $builder = $this->db->table('t_materialmaster') - ->select('MaterialCode, MaterialName,UOM,material_rate') + ->select('MaterialCode, MaterialName,UOM,material_rate,HSNCODE') ->where('IsActive',1); //->where('MaterialType',$ReqType ); @@ -190,6 +190,7 @@ class Requistion_model extends Model return $query->getResult(); } } + /** * This function is used to get the Raw Material information * @return array $result : This is result of the query @@ -197,7 +198,7 @@ class Requistion_model extends Model function getRawMaterialList($MaterialCode) { $builder = $this->db->table('t_materialmaster MM') - ->select('MM.MaterialName,MM.UOM,MM.Category,CD.ConfigValue as CategoryName') + ->select('MM.MaterialName,MM.UOM,MM.Category,CD.ConfigValue as CategoryName,MM.HSNCODE') ->join('t_configdetails CD', 'CD.Key = MM.Category', 'left') ->where('MM.MaterialCode',$MaterialCode ); $query = $builder->get(); @@ -587,13 +588,24 @@ class Requistion_model extends Model function getCategoryName($materialCode){ $subQuery ='SELECT MM.MaterialCode,MM.MaterialName,MM.MaterialType,MM.Category,MM.IsActive,CD.ConfigValue from t_materialmaster as MM - left join t_configdetails as CD on CD.Key = MM.Category + left join t_configdetails as CD on CD.Key = MM.Category where MM.MaterialCode = '.$materialCode; $categoryName = $this->db->query($subQuery)->getRow()->ConfigValue; return $categoryName; } + function getmaterialCategory() + { + $Config_ID = 'C023'; + $builder = $this->db->table('t_configdetails') + ->select('Key,Config_ID,ConfigValue') + ->where('isActive', 1) + ->where('Config_id', $Config_ID); + $query = $builder->get(); + return $query->getResultArray(); + } + } \ No newline at end of file diff --git a/app/Views/EditservicePurchaseorder.php b/app/Views/EditservicePurchaseorder.php index 401b562d..df60b841 100755 --- a/app/Views/EditservicePurchaseorder.php +++ b/app/Views/EditservicePurchaseorder.php @@ -861,7 +861,7 @@ if (!empty($getlogpodtl)) { $('#EditAfterServiceTax').val(''); $('#EditAfterKrishiTax').val(''); $('#EditAfterSwachhTax').val(''); - $('#EditTotalOrderValue ').val(''); + $('#EditTotalOrderValue').val(''); $('#EditRate').val(''); $("#EditItemName").val(''); @@ -1274,6 +1274,7 @@ if (!empty($getlogpodtl)) { Requisition No Item Code Item Description + HSN/SAC Line Item Specs Quantity UOM @@ -1309,6 +1310,7 @@ if (!empty($getlogpodtl)) { MaterialCode ?> MaterialName, 0, 13, "..."); echo $shortName; ?> + HSNCODE ?> ; + var openOrder = ; if(openOrder){ $('#Quantity').val(0); $('#Quantity').removeAttr('required'); @@ -2583,7 +2585,7 @@ if (!empty($getlogpodtl)) { $('#EditotherDescription').hide(); - $('#otherdescription').hide() + $('#otherdescription').hide(); @@ -2597,6 +2599,14 @@ if (!empty($getlogpodtl)) { var AvilBudget = $('#AvlBudAmt').val(); var costCode = $('#CostCenter').val(); var materialCode = $('#MaterialCode').val(); + var selectedText = $('#MaterialCode option:selected').text(); + var parts = selectedText.split('-'); + var HSN = selectedText.includes('-') && /^\d+$/.test(parts[0].trim()) + ? parts[0].trim() + : ''; + + + var materialName = $("#ItemName").val(); var uom = $("#UOM").val(); var addPer = ''; @@ -2666,8 +2676,9 @@ if (!empty($getlogpodtl)) { ${temp} ${Reqnumber} ${materialCode} - ${shorten}`; - if (PONOStatus === "PO_DRAFT" || PONOStatus === "PO_CREATED") { + ${shorten} + ${HSN}`; + if (PONOStatus === "" || PONOStatus === "") { rowHtml += `- @@ -2781,8 +2792,13 @@ if (!empty($getlogpodtl)) { var FrequencyValue = $("#EditFrequencyNo").val(); var ServiceDescription = $('#EdittxtSpcialInstruction').val(); var OtherAmt = $('#EditOtherAllowances').val(); - var TotalOrderValue = $("#EditTotalOrderValue ").val(); + var TotalOrderValue = $("#EditTotalOrderValue").val(); + var editselectedText = $('#EditMaterialCode option:selected').text(); + var editparts = editselectedText.split('-'); + var editHSN = editselectedText.includes('-') && /^\d+$/.test(editparts[0].trim()) + ? editparts[0].trim() + : ''; var basicval = $("#txtEditBasicValue").val(); @@ -2795,12 +2811,13 @@ if (!empty($getlogpodtl)) { cellval[2].innerHTML = editMaterialCode; cellval[3].innerHTML = editDescription; - cellval[5].innerHTML = editQuantity; - cellval[6].innerHTML = editUOM; - cellval[7].innerHTML = parseFloat(itemRate).toFixed(2); - cellval[8].innerHTML = parseFloat(basicval).toFixed(2); - cellval[9].innerHTML = parseFloat(TotalTaxValue).toFixed(2); - cellval[10].innerHTML = parseFloat(TotalOrderValue).toFixed(2); + cellval[4].innerHTML = editHSN; + cellval[6].innerHTML = editQuantity; + cellval[7].innerHTML = editUOM; + cellval[8].innerHTML = parseFloat(itemRate).toFixed(2); + cellval[9].innerHTML = parseFloat(basicval).toFixed(2); + cellval[10].innerHTML = parseFloat(TotalTaxValue).toFixed(2); + cellval[11].innerHTML = parseFloat(TotalOrderValue).toFixed(2); $('#materialCode' + userid).val(editMaterialCode); @@ -3118,7 +3135,7 @@ if (!empty($getlogpodtl)) { $('#txtSpcialInstruction').focus(); return false; } else { - var openOrder = ; + var openOrder = ; if(!openOrder){ if ($('#Quantity').val() == '') { alert('Please Enter the Quantity value'); @@ -3356,6 +3373,7 @@ if (!empty($getlogpodtl)) { //If others is the payment terms to display mandatory field $(document).ready(function() { + $('#otherdescription').hide(); $("#PaymentTerms").change(function() { var otherPayment = ''; if ($('#PaymentTerms').val().trim() == 'PT08') { @@ -3417,8 +3435,8 @@ if (!empty($getlogpodtl)) { if (obj.materialCode == materialCode) { $("#MaterialCode").val(''); } else { - $("#MaterialCode").append($('').val(obj.MaterialCode).html(obj.MaterialCode + "-" + obj.MaterialName)); - + var HSNCODE = obj.HSNCODE ? obj.HSNCODE+" - " : ""; + $("#MaterialCode").append($('').val(obj.MaterialCode).html( HSNCODE + obj.MaterialName+ " ( "+obj.MaterialCode+" ) ")); } @@ -3469,8 +3487,9 @@ if (!empty($getlogpodtl)) { if (isAdded == "0") { - - $("#MaterialCode").append($('').val(obj.MaterialCode).html(obj.MaterialCode + "-" + obj.MaterialName)); + var HSNCODE = obj.HSNCODE ? obj.HSNCODE+" - " : ""; + $("#MaterialCode").append($('').val(obj.MaterialCode).html( HSNCODE + obj.MaterialName+ " ( "+obj.MaterialCode+" ) ")); + // $("#MaterialCode").append($('').val(obj.MaterialCode).html(obj.MaterialCode + "-" + obj.MaterialName)); } } @@ -3514,7 +3533,7 @@ if (!empty($getlogpodtl)) { RateValue = $('#itemRate' + userid).val(); RateValue = parseFloat(RateValue).toFixed(2) $('#EditRate').val(RateValue); - $('#txtEditBasicValue').val(cellval[8].innerHTML); + $('#txtEditBasicValue').val(cellval[9].innerHTML); $('#EditCgst').val($('#Cgst' + userid).val()); $('#EditSgst').val($('#Sgst' + userid).val()); $('#EditIgst').val($('#Igst' + userid).val()); @@ -3544,7 +3563,7 @@ if (!empty($getlogpodtl)) { $("#EditFrequencyNo").val($('#FrequencyValue' + userid).val()); } - $('#EditTotalOrderValue').val(cellval[10].innerHTML); + $('#EditTotalOrderValue').val(cellval[11].innerHTML); $('#EditOtherAllowances').val($('#OtherAmt' + userid).val()); tinyMCE.get('EdittxtSpcialInstruction').setContent($('#ItemDescription' + userid).val()); RequistQuantity = $('#quantity' + userid).val(); @@ -3552,9 +3571,14 @@ if (!empty($getlogpodtl)) { $("#EditMaterialCode").empty(); + var P0 = cellval[4].innerHTML; + var P1 = (P0) ? P0 + " - " : ""; + var P2 = P1 + $('#materialName' + userid).val() ; + var P3 = P2 + " ( " + $('#materialCode' + userid).val() + ' ) '; + $("#EditMaterialCode").append($('') .val($('#materialCode' + userid).val()) - .html($('#materialCode' + userid).val() + "-" + $('#materialName' + userid).val()) + .html(P3) .prop('selected', true) ); // Make the select element read-only (disable it) @@ -3589,8 +3613,9 @@ if (!empty($getlogpodtl)) { if (isAdded == "0") { - - $("#EditMaterialCode").append($('').val(obj.MaterialCode).html(obj.MaterialCode + "-" + obj.MaterialName)); + // $("#EditMaterialCode").append($('').val(obj.MaterialCode).html(obj.MaterialCode + "-" + obj.MaterialName)); + var HSNCODE = obj.HSNCODE ? obj.HSNCODE+" - " : ""; + $("#EditMaterialCode").append($('').val(obj.MaterialCode).html( HSNCODE + obj.MaterialName+ " ( "+obj.MaterialCode+" ) ")); } } @@ -3627,7 +3652,7 @@ if (!empty($getlogpodtl)) { RateValue = $('#itemRate' + userid).val(); RateValue = parseFloat(RateValue).toFixed(2) $('#ViewRate').val(RateValue); - $('#txtViewBasicValue').val(cellval[8].innerHTML); + $('#txtViewBasicValue').val(cellval[9].innerHTML); $('#ViewCgst').val($('#Cgst' + userid).val()); $('#ViewSgst').val($('#Sgst' + userid).val()); $('#ViewIgst').val($('#Igst' + userid).val()); @@ -3654,7 +3679,7 @@ if (!empty($getlogpodtl)) { $("#ViewFrequencyNo").val($('#FrequencyValue' + userid).val()); } - $('#ViewTotalOrderValue').val(cellval[10].innerHTML); + $('#ViewTotalOrderValue').val(cellval[11].innerHTML); $('#ViewOtherAllowances').val($('#OtherAmt' + userid).val()); tinyMCE.get('ViewtxtSpcialInstruction').setContent($('#ItemDescription' + userid).val()); diff --git a/app/Views/accountsDashboard.php b/app/Views/accountsDashboard.php index 534550c1..ea3bdd4a 100644 --- a/app/Views/accountsDashboard.php +++ b/app/Views/accountsDashboard.php @@ -209,7 +209,7 @@ if(!empty($draft)){ ?> - + IGRNO ?> @@ -218,7 +218,7 @@ SupplierName ?> DeliveryChellanOrInvoiceNo ?> - DeliveryChellanDate; if(!$invdate || $invdate == 'null' || $invdate === '0000-00-00 00:00:00'){ echo ""; @@ -262,7 +262,7 @@ isIgrFilePresent)){ ?> - +   @@ -427,6 +427,7 @@ SNo Item Code Item Description + HSN/SAC UOM Ordered Qty Received Qty @@ -804,6 +805,7 @@ '' + i + '' + '' + item.MaterialCode + '' + '' + item.MaterialName + '' + + '' + ((item.HSNCODE) ? item.HSNCODE : '') + '' + '' + item.UOM + '' + '' + parseInt(item.Quantity) + '' + '' + @@ -843,6 +845,7 @@ '' + i + '' + '' + item.MaterialCode + '' + '' + item.MaterialName + '' + + '' + ((item.HSNCODE) ? item.HSNCODE : '') + '' + '' + item.UOM + '' + '' + parseInt(item.Quantity) + '' + '' + @@ -878,6 +881,7 @@ '' + i + '' + '' + item.MaterialCode + '' + '' + item.MaterialName + '' + + '' + ((item.HSNCODE) ? item.HSNCODE : '') + '' + '' + item.UOM + '' + '' + item.Quantity + '' + '' + item.QuantityAsPerInvoice + '' + diff --git a/app/Views/alterpurchaseorder.php b/app/Views/alterpurchaseorder.php index 03e67068..17818529 100755 --- a/app/Views/alterpurchaseorder.php +++ b/app/Views/alterpurchaseorder.php @@ -2083,8 +2083,11 @@ if (!empty($INRSYMBOL)) { } $(document).ready(function () { $('#ServiceMaterialCode').change(function () { + var selectedMaterialCode = ''; - selectedMaterialCode = $("#ServiceMaterialCode").val(); + selectedMaterialCode = $("#ServiceMaterialCode").val(); // First I have get the data from materialcode dropdown + // clearServiceModalFields(); // then Clear All Fields + $("#ServiceMaterialCode").val(selectedMaterialCode); // again i fetched the materialcode in that dropdown // konjam loose thaan $.each(JSON.parse(materialData), function (index, value) { if (selectedMaterialCode == value.MaterialCode) { $("#ServiceDescription").val(value.MaterialName); @@ -2222,8 +2225,8 @@ if (!empty($INRSYMBOL)) { $("#ServiceMaterialCode").append($('').val("0").html("Select Item Code")); $.each(JSON.parse(data), function (index, value) { - $("#ServiceMaterialCode").append($('').val(value.MaterialCode).html(value.MaterialCode + "-" + value.MaterialName)); - + var HSNCODE = value.HSNCODE ? value.HSNCODE+" - " : ""; + $("#ServiceMaterialCode").append($('').val(value.MaterialCode).html( HSNCODE + value.MaterialName+ " ( "+value.MaterialCode+" ) ")); }); } else if (input == 'REVENUE') { @@ -2233,9 +2236,8 @@ if (!empty($INRSYMBOL)) { $("#MaterialCode").append($('').val("0").html("Select Item Code")); $.each(JSON.parse(data), function (index, value) { - $("#MaterialCode").append($('').val(value.MaterialCode).html(value.MaterialCode + "-" + value.MaterialName)); - - + var HSNCODE = value.HSNCODE ? value.HSNCODE+"-" : ""; + $("#MaterialCode").append($('').val(value.MaterialCode).html( HSNCODE + value.MaterialName+ " ( "+value.MaterialCode+" ) ")); }); } else { @@ -2293,17 +2295,17 @@ if (!empty($INRSYMBOL)) { */ $('#MaterialCode').on('change', function () { console.log("111111111111"); - - // $('#MaterialCode').change(function() { var selectedRevenueMaterialCode = ''; - selectedRevenueMaterialCode = $("#MaterialCode").val(); - console.log(materialData); - console.log("materialData - 1111111"); + selectedRevenueMaterialCode = $("#MaterialCode").val();// First I have get the data from materialcode dropdown + // clearRevenueModalFields();// then Clear All Fields + // $('#MaterialCode').change(function() { + $("#MaterialCode").val(selectedRevenueMaterialCode); // again i fetched the materialcode in that dropdown // konjam loose thaan $.each(JSON.parse(materialData), function (index, value) { if (selectedRevenueMaterialCode == value.MaterialCode) { $("#ItemName").val(value.MaterialName); $("#UOM").val(value.UOM); $("#Rate").val(value.material_rate); + $("#Quantity").val(0); } }); @@ -2366,7 +2368,8 @@ if (!empty($INRSYMBOL)) { //This function is used to add material list after delete $.each(JSON.parse(materialData), function (index, value) { if (value.MaterialCode == materialCode) { - $("#MaterialCode").append($('').val(value.MaterialCode).html(value.MaterialCode + "-" + value.MaterialName)); + var HSNCODE = value.HSNCODE ? value.HSNCODE+"-" : ""; + $("#MaterialCode").append($('').val(value.MaterialCode).html( HSNCODE + value.MaterialName+ " ( "+value.MaterialCode+" ) ")); } }); @@ -2940,31 +2943,44 @@ if (!empty($INRSYMBOL)) { - + + +
-
- - - - - - - - - - - - - - - - - - -
SNoRequisition NoItem CodeItem DescriptionLine Item SpecsQuantityUOMRateBasic AmountTax AmountTotal Order AmountAction
+
+ + + + + + + + + + + + + + + + + + + + +
SNoRequisition NoItem CodeItem DescriptionHSN/SACLine Item SpecsQuantityUOMRateBasic AmountTax AmountTotal Order AmountAction
+
- + @@ -6080,6 +6096,12 @@ if (!empty($INRSYMBOL)) { // $('#ReqNo').val(Reqnumber).remove(); // $('#ReqNo option[value='+Reqnumber+']').remove(); + var selectedRText = $('#MaterialCode option:selected').text(); + var Rparts = selectedRText.split('-'); + var RHSN = selectedRText.includes('-') && /^\d+$/.test(Rparts[0].trim()) + ? Rparts[0].trim() + : ''; + $('#MaterialCode option[value=' + materialCode + ']').remove(); @@ -6100,6 +6122,7 @@ if (!empty($INRSYMBOL)) { ${Reqnumber} ${materialCode} ${rshorten} + ${RHSN} - @@ -6240,7 +6263,7 @@ if (!empty($INRSYMBOL)) { $('#deptName').val(''); $('#CostCenter').val("0"); $('#AvlBudAmt').val(0); - $('#MaterialCode').val(''); + $('#MaterialCode').val("").select2(); $("#ItemName").val(''); $('#UOM').val(''); $("#Rate").val(''); @@ -6748,6 +6771,12 @@ if (!empty($INRSYMBOL)) { var AvilBudget = $('#AvalBuget').val(); var costCode = $('#CostCenterName').val(); var materialCode = $('#ServiceMaterialCode').val(); + var SselectedText = $('#ServiceMaterialCode option:selected').text(); + var Sparts = SselectedText.split('-'); + var SHSN = SselectedText.includes('-') && /^\d+$/.test(Sparts[0].trim()) + ? Sparts[0].trim() + : ''; + var materialName = $("#ServiceDescription").val(); var uom = $("#ServiceUOM").val(); var addPer = ''; @@ -6804,6 +6833,7 @@ if (!empty($INRSYMBOL)) { ${Reqnumber} ${materialCode} ${sshorten} + ${SHSN} - @@ -7007,14 +7037,14 @@ if (!empty($INRSYMBOL)) { $('#EditEmergPer').val($('#Serviceper' + userid).val()); $('#EditQuantity').val($('#quantity' + userid).val()); $('#EditRate').val($('#itemRate' + userid).val()); - $('#txtEditBasicValue').val(cellval[8].innerHTML); + $('#txtEditBasicValue').val(cellval[9].innerHTML); $('#EditAfterCgst').val($('#AfterCgst' + userid).val()); $('#EditAfterSgst').val($('#AfterSgst' + userid).val()); $('#EditAfterIgst').val($('#AfterIgst' + userid).val()); $('#EditCgst').val($('#Cgst' + userid).val()); $('#EditSgst').val($('#Sgst' + userid).val()); $('#EditIgst').val($('#Igst' + userid).val()); - $('#EditTotalOrderValue').val(cellval[10].innerHTML); + $('#EditTotalOrderValue').val(cellval[11].innerHTML); $('#EditOtherAllowances').val($('#OtherAmt' + userid).val()); tinyMCE.get('EdittxtSpcialInstructionSingle').setContent($('#ItemServiceDescription' + userid).val()); @@ -7026,7 +7056,11 @@ if (!empty($INRSYMBOL)) { $("#EditMaterialCode").empty(); // $('#EditMaterialCode').val("").select2(); - $("#EditMaterialCode").append($('').val($('#materialCode' + userid).val()).html($('#materialCode' + userid).val() + "-" + $('#materialName' + userid).val())); + var P0 = cellval[4].innerHTML; + var P1 = (P0) ? P0 + " - " : ""; + var P2 = P1 + $('#materialName' + userid).val() ; + var P3 = P2 + " ( " + $('#materialCode' + userid).val() + ' ) '; + $("#EditMaterialCode").append($('').val($('#materialCode' + userid).val()).html(P3)); if (typeof materialData !== 'undefined' && materialData !== null && materialData !== '') { var parsedMaterialData = JSON.parse(materialData); @@ -7034,7 +7068,9 @@ if (!empty($INRSYMBOL)) { $.each(parsedMaterialData, function (index, value) { // Assuming userid is defined somewhere in your code if ($('#materialCode' + userid).val() != value.MaterialCode) { - $("#EditMaterialCode").append($('').val(value.MaterialCode).html(value.MaterialCode + "-" + value.MaterialName)); + // $("#EditMaterialCode").append($('').val(value.MaterialCode).html(value.MaterialCode + "-" + value.MaterialName)); + var HSNCODE = obj.HSNCODE ? obj.HSNCODE+" - " : ""; + $("#EditMaterialCode").append($('').val(value.MaterialCode).html( HSNCODE + value.MaterialName+ " ( "+value.MaterialCode+" ) ")); } }); } else { @@ -7127,17 +7163,23 @@ if (!empty($INRSYMBOL)) { var TotalTaxValue = calculateEditTaxValue(); + var editselectedText = $('#EditMaterialCode option:selected').text(); + var editparts = editselectedText.split('-'); + var editHSN = editselectedText.includes('-') && /^\d+$/.test(editparts[0].trim()) + ? editparts[0].trim() + : ''; var tr = document.getElementById(userid); var cellval = tr.cells; cellval[2].innerHTML = editMaterialCode; cellval[3].innerHTML = editDescription; - cellval[5].innerHTML = editQuantity; - cellval[6].innerHTML = editUOM; - cellval[7].innerHTML = itemRate; - cellval[8].innerHTML = basicval; - cellval[9].innerHTML = TotalTaxValue; - cellval[10].innerHTML = TotalOrderValue; + cellval[4].innerHTML = editHSN; + cellval[6].innerHTML = editQuantity; + cellval[7].innerHTML = editUOM; + cellval[8].innerHTML = itemRate; + cellval[9].innerHTML = basicval; + cellval[10].innerHTML = TotalTaxValue; + cellval[11].innerHTML = TotalOrderValue; $('#materialCode' + userid).val(editMaterialCode); @@ -7268,7 +7310,7 @@ if (!empty($INRSYMBOL)) { $.each(JSON.parse(materialData), function (index, value) { if (value.MaterialCode == materialCode) { - // $("#ServiceMaterialCode").append( $('').val(value.MaterialCode).html(value.MaterialCode + "-" + value.MaterialName) ); + $("#ServiceMaterialCode").append( $('').val(value.MaterialCode).html(value.MaterialCode + "-" + value.MaterialName) ); } @@ -7674,7 +7716,7 @@ if (!empty($INRSYMBOL)) { $('#EditRevenueQuantity').val($('#quantity' + userid).val()); $('#EditRevenueRate').val($('#itemRate' + userid).val()); $('#editrevenueEmergPer').val($('#per' + userid).val()); - $('#txtEditRevenueBasicValue').val(cellval[8].innerHTML); + $('#txtEditRevenueBasicValue').val(cellval[9].innerHTML); RequistQuantity = $('#quantity' + userid).val(); $('#txtEditDiscount').val($('#DisVal' + userid).val()); $('#txtEditAfterDiscount').val($('#AfterDisVal' + userid).val()); @@ -7708,14 +7750,18 @@ if (!empty($INRSYMBOL)) { $("#EditRevenueMaterialCode").empty(); - - $("#EditRevenueMaterialCode").append($('').val($('#materialCode' + userid).val()).html($('#materialCode' + userid).val() + "-" + $('#materialName' + userid).val())); + var P0 = cellval[4].innerHTML; + var P1 = (P0) ? P0 + " - " : ""; + var P2 = P1 + $('#materialName' + userid).val() ; + var P3 = P2 + " ( " + $('#materialCode' + userid).val() + ' ) '; + $("#EditRevenueMaterialCode").append($('').val($('#materialCode' + userid).val()).html(P3)); if (typeof materialData !== 'undefined' && materialData !== null && materialData !== '') { var parsedMaterialData = JSON.parse(materialData); $.each(parsedMaterialData, function (index, value) { if ($('#materialCode' + userid).val() != value.MaterialCode) { - $("#EditRevenueMaterialCode").append($('').val(value.MaterialCode).html(value.MaterialCode + "-" + value.MaterialName)); + var HSNCODE = value.HSNCODE ? value.HSNCODE+" - " : ""; + $("#EditRevenueMaterialCode").append($('').val(value.MaterialCode).html( HSNCODE + value.MaterialName+ " ( "+obj.MaterialCode+" ) ")); } }); } else { @@ -7733,6 +7779,12 @@ if (!empty($INRSYMBOL)) { var editselectedMaterialCode = ''; editselectedMaterialCode = $("#EditRevenueMaterialCode").val(); + var selectedRevenuText = $('#EditRevenueMaterialCode option:selected').text(); + var editRevenuparts = selectedRevenuText.split('-'); + var editRevenueHSN = editselectedText.includes('-') && /^\d+$/.test(editRevenuparts[0].trim()) + ? editRevenuparts[0].trim() + : ''; + $.each(JSON.parse(materialData), function (index, value) { if (editselectedMaterialCode == value.MaterialCode) { @@ -7806,15 +7858,23 @@ if (!empty($INRSYMBOL)) { var userid = $("#hiddenRevenueuserid").val(); var tr = document.getElementById(userid); + + var editRselectedText = $('#EditRevenueMaterialCode option:selected').text(); + var editRparts = editRselectedText.split('-'); + var editRHSN = editRselectedText.includes('-') && /^\d+$/.test(editRparts[0].trim()) + ? editRparts[0].trim() + : ''; + var cellval = tr.cells; cellval[2].innerHTML = editMaterialCode; cellval[3].innerHTML = editDescription; - cellval[5].innerHTML = parseFloat(editQuantity).toFixed(2); - cellval[6].innerHTML = editUOM; - cellval[7].innerHTML = parseFloat(itemRate).toFixed(2); - cellval[8].innerHTML = parseFloat(basicval).toFixed(2); - cellval[9].innerHTML = parseFloat(TotalTaxValue).toFixed(2); - cellval[10].innerHTML = parseFloat(TotalOrderValue).toFixed(2); + cellval[4].innerHTML = editRHSN; + cellval[6].innerHTML = parseFloat(editQuantity).toFixed(2); + cellval[7].innerHTML = editUOM; + cellval[8].innerHTML = parseFloat(itemRate).toFixed(2); + cellval[9].innerHTML = parseFloat(basicval).toFixed(2); + cellval[10].innerHTML = parseFloat(TotalTaxValue).toFixed(2); + cellval[11].innerHTML = parseFloat(TotalOrderValue).toFixed(2); $('#materialCode' + userid).val(editMaterialCode); diff --git a/app/Views/capitalpurchaseorder.php b/app/Views/capitalpurchaseorder.php index d9eff2ad..d9c3e40a 100755 --- a/app/Views/capitalpurchaseorder.php +++ b/app/Views/capitalpurchaseorder.php @@ -804,6 +804,7 @@ if (!empty($INRSYMBOL)) { Requisition No Item Code Item Description + HSN/SAC Line Item Specs Quantity UOM @@ -2643,8 +2644,9 @@ if (!empty($INRSYMBOL)) { if (isAdded == "0") { - - $("#MaterialCode").append($('').val(obj.MaterialCode).html(obj.MaterialCode + "-" + obj.MaterialName)); + var HSNCODE = obj.HSNCODE ? obj.HSNCODE+" - " : ""; + $("#MaterialCode").append($('').val(obj.MaterialCode).html( HSNCODE + obj.MaterialName+ " ( "+obj.MaterialCode+" ) ")); + // $("#MaterialCode").append($('').val(obj.MaterialCode).html(obj.MaterialCode + "-" + obj.MaterialName)); } } @@ -3443,6 +3445,11 @@ if (!empty($INRSYMBOL)) { + var selectedText = $('#MaterialCode option:selected').text(); + var parts = selectedText.split('-'); + var HSN = selectedText.includes('-') && /^\d+$/.test(parts[0].trim()) + ? parts[0].trim() + : ''; $('#MaterialCode option[value=' + materialCode + ']').remove(); @@ -3484,6 +3491,7 @@ if (!empty($INRSYMBOL)) { ${Reqnumber} ${materialCode} ${shorten} + ${HSN} - @@ -3992,8 +4000,8 @@ if (!empty($INRSYMBOL)) { if (value.MaterialCode == materialCode) { - - $("#MaterialCode").append($('').val(value.MaterialCode).html(value.MaterialCode + "-" + value.MaterialName)); + var HSNCODE = value.HSNCODE ? value.HSNCODE+"-" : ""; + $("#MaterialCode").append($('').val(value.MaterialCode).html( HSNCODE + value.MaterialName+ " ( "+value.MaterialCode+" ) ")); } @@ -4298,7 +4306,7 @@ if (!empty($INRSYMBOL)) { console.log($('#Igst' + userid).val()); - $('#EdittxtTotalOrderValue').val(cellval[10].innerHTML); + $('#EdittxtTotalOrderValue').val(cellval[11].innerHTML); $('#EditCgst').val($('#Cgst' + userid).val()); $('#EditAfterCgst').val($('#AfterCgst' + userid).val()); $('#EditSgst').val($('#Sgst' + userid).val()); @@ -4375,13 +4383,23 @@ if (!empty($INRSYMBOL)) { var Material = ; $("#EditMaterialCode").empty(); + var P0 = cellval[4].innerHTML; + var P1 = (P0) ? P0 + " - " : ""; + var P2 = P1 + $('#materialName' + userid).val() ; + var P3 = P2 + " ( " + $('#materialCode' + userid).val() + ' ) '; - $("#EditMaterialCode").append($('').val($('#materialCode' + userid).val()).html($('#materialCode' + userid).val() + "-" + $('#materialName' + userid).val())); + $("#EditMaterialCode").append($('') + .val($('#materialCode' + userid).val()) + .html(P3) + .prop('selected', true) + ); + // $("#EditMaterialCode").append($('').val($('#materialCode' + userid).val()).html($('#materialCode' + userid).val() + "-" + $('#materialName' + userid).val())); $('#EditRateIn').html('Rate(in' + " " + DisplayCurrencySymbol + '/' + EditUOM + ')'); for (i = 0; i < Material.length; i++) { $.each(Material[i], function(idx, obj) { if (obj.MaterialCode != $('#materialCode' + userid).val()) { - $("#EditMaterialCode").append($('').val(obj.MaterialCode).html(obj.MaterialCode + "-" + obj.MaterialName)); + var HSNCODE = obj.HSNCODE ? obj.HSNCODE+" - " : ""; + $("#EditMaterialCode").append($('').val(obj.MaterialCode).html( HSNCODE + obj.MaterialName+ " ( "+obj.MaterialCode+" ) ")); } }); @@ -4923,6 +4941,12 @@ if (!empty($INRSYMBOL)) { $('#ClearingCharges' + userid).val(Clearing); $('#Subtotal' + userid).val(Subtotal); + var editselectedText = $('#EditMaterialCode option:selected').text(); + var editparts = editselectedText.split('-'); + var editHSN = editselectedText.includes('-') && /^\d+$/.test(editparts[0].trim()) + ? editparts[0].trim() + : ''; + if (capitalType == 'International') { TotalTaxValue = 0.00; Total = basicval; @@ -4930,13 +4954,14 @@ if (!empty($INRSYMBOL)) { cellval[2].innerHTML = materialCode; cellval[3].innerHTML = materialName; + cellval[4].innerHTML = editHSN; - cellval[5].innerHTML = quantity; - cellval[6].innerHTML = uom; - cellval[7].innerHTML = itemRate; - cellval[8].innerHTML = basicval; - cellval[9].innerHTML = TotalTaxValue; - cellval[10].innerHTML = Total; + cellval[6].innerHTML = quantity; + cellval[7].innerHTML = uom; + cellval[8].innerHTML = itemRate; + cellval[9].innerHTML = basicval; + cellval[10].innerHTML = TotalTaxValue; + cellval[11].innerHTML = Total; $('#EDITCAPITAL').modal('hide'); diff --git a/app/Views/driverAttendance.php b/app/Views/driverAttendance.php index 4be0a29a..7837df3c 100755 --- a/app/Views/driverAttendance.php +++ b/app/Views/driverAttendance.php @@ -553,7 +553,6 @@ $datefordropdown = format_date($datefordropdown, 0, 'M-Y'); var diesel = parseFloat($('input[data-column="diesel_amount"]').val()) || 0; var shed = parseFloat($('input[data-column="shed_amount"]').val()) || 0; var row = parseInt($('#rowTotalAmount').text()) || 0; - console.log(row); var total = row + diesel + shed; $('#totalAmount').text(total); // Display the total with 2 decimal places @@ -570,15 +569,16 @@ $datefordropdown = format_date($datefordropdown, 0, 'M-Y'); let param_month_year = urlParams.get("month_year"); let param_date = urlParams.get("date"); - - if(param_date == ""){ - let monthMap = {"Jan": "01", "Feb": "02", "Mar": "03", "Apr": "04","May": "05", "Jun": "06", "Jul": "07", "Aug": "08","Sep": "09", "Oct": "10", "Nov": "11", "Dec": "12"}; - let [month, year] = param_month_year.split('-'); - input_date = `01-${monthMap[month]}-${year}`; - }else{ - input_date = param_date; - } + if (!param_date || param_date.trim() === "") { + + let new_my = param_month_year ? param_month_year : ""; + let monthMap = {"Jan": "01", "Feb": "02", "Mar": "03", "Apr": "04", "May": "05", "Jun": "06", "Jul": "07", "Aug": "08", "Sep": "09", "Oct": "10", "Nov": "11", "Dec": "12"}; + let [month, year] = new_my.split('-'); + input_date = `01-${monthMap[month]}-${year}`; + + } else { input_date = param_date; } + // Send data to the server using AJAX $.ajax({ diff --git a/app/Views/driverPayslipGeneratePrint.php b/app/Views/driverPayslipGeneratePrint.php index 916654aa..f6500eee 100755 --- a/app/Views/driverPayslipGeneratePrint.php +++ b/app/Views/driverPayslipGeneratePrint.php @@ -19,65 +19,88 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
Name driver_name; ?>Employee ID EmpID ?>
Designation Designation ?>Department DeptName ?>
Date Of Joining DOJ)) ?>No Of Loads no_of_loads ?>
Bank Name BankName ?>PAN Number Pan;?>
Bank Acc No BankAccountNumber ?> Aadhar NumberAadharNo);?>
Bank IFSC IFSCCode ?>Loan Balance BalanceAdvance ?>
Diesel diesel_amount; ?>
Shed Duty Amount shed_amount; ?>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name:driver_name; ?>Employee ID:EmpID ?>
Designation:Designation ?>Department:DeptName ?>
Date Of Joining:DOJ)) ?>No Of Loads:no_of_load ?>
Bank Name:BankName ?>PAN Number:Pan; ?>
Bank Acc No:BankAccountNumber ?>Aadhar Number:AadharNo); ?>
Bank IFSC:IFSCCode ?>Loan Balance:BalanceAdvance ?>
Diesel Amount:diesel_amount; ?>
Shed Duty Amount:shed_amount; ?>
@@ -85,7 +108,7 @@ - + diff --git a/app/Views/editCapitalAmendPO.php b/app/Views/editCapitalAmendPO.php index fb7a822a..92e28978 100755 --- a/app/Views/editCapitalAmendPO.php +++ b/app/Views/editCapitalAmendPO.php @@ -888,6 +888,7 @@ if (!empty($POItem) && $CapitalRange == '1') { + @@ -913,6 +914,7 @@ if (!empty($POItem) && $CapitalRange == '1') { + + @@ -976,6 +977,7 @@ $(document).ready(function () { + - `; - if (PONOStatus === "PO_DRAFT" || PONOStatus === "PO_CREATED") { + + `; + if (PONOStatus === "" || PONOStatus === "") { rowHtml += ` + @@ -1304,6 +1305,7 @@ if (!empty($RequistionDetails)) { + + @@ -1341,6 +1342,7 @@ if (!empty($INRSYMBOL)) { + + @@ -2355,8 +2367,9 @@ if (isset($AvlimportBudAmt) && !empty($AvlimportBudAmt)) { if (isAdded == "0") { - - $("#MaterialCode").append($('').val(obj.MaterialCode).html(obj.MaterialCode + "-" + obj.MaterialName)); + var HSNCODE = obj.HSNCODE ? obj.HSNCODE+" - " : ""; + $("#MaterialCode").append($('').val(obj.MaterialCode).html( HSNCODE + obj.MaterialName+ " ( "+obj.MaterialCode+" ) ")); + } } @@ -3439,6 +3452,14 @@ if (isset($AvlimportBudAmt) && !empty($AvlimportBudAmt)) { var AvilBudget = $('#AvlBudAmt').val(); var costCode = $('#CostCenter').val(); var materialCode = $('#MaterialCode').val(); + var selectedText = $('#MaterialCode option:selected').text(); + var parts = selectedText.split('-'); + var HSN = selectedText.includes('-') && /^\d+$/.test(parts[0].trim()) + ? parts[0].trim() + : ''; + + + var materialName = $("#ItemName").val(); var uom = $("#UOM").val(); var quantity = $("#Quantity").val(); @@ -3533,6 +3554,7 @@ if (isset($AvlimportBudAmt) && !empty($AvlimportBudAmt)) { + + @@ -297,13 +298,35 @@ $(".searchabledropdown").select2(); - $('#IGRLink').on('click', function() { - filecheck(1); + function debounce(func, timeout = 300) { + let timer; + return (...args) => { + clearTimeout(timer); + timer = setTimeout(() => { func.apply(this, args); }, timeout); + }; + } + + $('#IGRLink, #IGRDraftLink').on('click', function(e) { + e.preventDefault(); + const $btn = $(this); + const strMsg = $btn.is('#IGRLink') + ? 'generate the IGR?' + : 'Save as draft IGR?'; + + if (confirm('Are you sure you want to ' + strMsg)) { + $btn.prop("disabled", true) + .html(' Processing...'); + filecheck($btn.is('#IGRLink') ? 1 : 0); + } }); - $('#IGRDraftLink').on('click', function() { - filecheck(0); - }); + // $('#IGRLink').on('click', function() { + // filecheck(1); + // }); + + // $('#IGRDraftLink').on('click', function() { + // filecheck(0); + // }); function filecheck(status) { $('#hideIGRStatus').val(status); @@ -320,9 +343,19 @@ // } // } function Save() { - $("#IGRLink, #IGRDraftLink").prop("disabled", true); + + $("#IGRLink, #IGRDraftLink") + .prop("disabled", true) + .html(' Processing...'); if (validate()) { $("#IGRForm").submit(); } - else { $("#IGRLink, #IGRDraftLink").prop("disabled", false); } + else { + // Re-enable buttons and restore original text + $("#IGRLink, #IGRDraftLink") + .prop("disabled", false) + .text(function() { + return $(this).attr('id') === 'IGRLink' ? 'Generate IGR' : 'Save as Draft IGR'; + }); + } } }); @@ -380,10 +413,10 @@ $('#MaterialRcvdDate').focus(); return false; } else if (Noval == 0) { - alert('Invoice Quantity is Empty.Please Enter the value'); + alert('Invoice Quantity is Missing. Kindly Enter the Value'); return false; } else if (isExceed == 1 && formatted_IsOpenOrder == 0) { - alert("Invoice Quantity is exceeding the Ordered Quantity.Please Contact Purchase Team for further Process ") + alert("Invoice Quantity is exceeding the Ordered Quantity. Please Contact Purchase Team for further Process ") return false; } else { return true; @@ -466,6 +499,7 @@ '' + '' + '' + + '' + '' + '' + '' + @@ -898,6 +932,7 @@ '' + '' + '' + + '' + '' + '' + '' + diff --git a/app/Views/monthlypayinputs.php b/app/Views/monthlypayinputs.php index d55a9f6c..24f83734 100755 --- a/app/Views/monthlypayinputs.php +++ b/app/Views/monthlypayinputs.php @@ -203,6 +203,12 @@ border: 1px solid #ccc;border-radius: 5px;margin-right:15px;"> + " + title=""> + + + @@ -498,7 +504,7 @@ + value="is_driver ?>"> @@ -561,8 +567,8 @@ - @@ -614,7 +620,7 @@ - - + - + + @@ -1824,7 +1833,7 @@ if (!empty($INRSYMBOL)) { $('#EditQuantity').val($('#quantity' + userid).val()); RequistQuantity = $('#quantity' + userid).val(); $('#EditRate').val($('#itemRate' + userid).val()); - $('#txtEditBasicValue').val(cellval[7].innerHTML); + $('#txtEditBasicValue').val(cellval[9].innerHTML); $('#EditCgst').val($('#Cgst' + userid).val()); $('#EditAfterCgst').val($('#AfterCgst' + userid).val()); $('#EditSgst').val($('#Sgst' + userid).val()); @@ -1842,7 +1851,7 @@ if (!empty($INRSYMBOL)) { $("#EditFrequencyNo").val($('#FrequencyValue' + userid).val()); } - $('#EditTotalOrderValue').val(cellval[9].innerHTML); + $('#EditTotalOrderValue').val(cellval[11].innerHTML); $('#EditOtherAllowances').val($('#OtherAmt' + userid).val()); $('#EditOtheritemDescription').val($('#OtherServiceDescription' + userid).val()); @@ -1863,7 +1872,12 @@ if (!empty($INRSYMBOL)) { $("#EditMaterialCode").empty(); var Material = ; // For Binding Material list center for the selected Requistion Number - $("#EditMaterialCode").append($('').val($('#materialCode' + userid).val()).html($('#materialCode' + userid).val() + "-" + $('#materialName' + userid).val())); + var P0 = cellval[4].innerHTML; + var P1 = (P0) ? P0 + " - " : ""; + var P2 = P1 + $('#materialName' + userid).val() ; + var P3 = P2 + " ( " + $('#materialCode' + userid).val() + ' ) '; + + $("#EditMaterialCode").append($('').val($('#materialCode' + userid).val()).html(P3)); var isAdded = "0"; for (i = 0; i < Material.length; i++) { $.each(Material[i], function(idx, obj) { @@ -1891,8 +1905,8 @@ if (!empty($INRSYMBOL)) { if (isAdded == "0") { - - $("#EditMaterialCode").append($('').val(obj.MaterialCode).html(obj.MaterialCode + "-" + obj.MaterialName)); + var HSNCODE = obj.HSNCODE ? obj.HSNCODE+" - " : ""; + $("#EditMaterialCode").append($('').val(obj.MaterialCode).html( HSNCODE + obj.MaterialName+ " ( "+obj.MaterialCode+" ) ")); } } @@ -1919,6 +1933,11 @@ if (!empty($INRSYMBOL)) { var AvilBudget = $('#AvlBudAmt').val(); var costCode = $('#CostCenter').val(); var materialCode = $('#MaterialCode').val(); + var selectedText = $('#MaterialCode option:selected').text(); + var parts = selectedText.split('-'); + var HSN = selectedText.includes('-') && /^\d+$/.test(parts[0].trim()) + ? parts[0].trim() + : ''; var materialName = $("#ItemName").val(); var uom = $("#UOM").val(); @@ -1991,6 +2010,7 @@ if (!empty($INRSYMBOL)) { + - + - + @@ -629,7 +630,7 @@ ?>
- +
' + '' + '' + + '' + '' + '' + '' + @@ -1307,6 +1309,7 @@ '' + '' + '' + + '' + '' + ''; if (userRole == 5) { // 5 - lab staff @@ -1367,6 +1370,7 @@ '' + '' + '' + + '' + '' + '' ; if (userRole == 5) { // 5 - lab staff @@ -1809,8 +1813,8 @@ $(document).ready(function() { $("#WeightCalculator").on("shown.bs.modal", function(e) { var inx = $(e.relatedTarget).data('index'); - console.log(inx); var material = $(e.relatedTarget).data('material'); + // console.log(material);// toolbox var modal = $(this); @@ -1843,7 +1847,6 @@ modal.find('#WeightFileLabel a small').text(fileName); modal.find('#WeightFileLabel').show(); } - console.log(fileInput); console.log("Selected values for index:", typeof inx, inx); // Set modal inputs with the retrieved values @@ -1854,7 +1857,6 @@ $("#NetWeight").val(v5); $("#CurrentInx").val(inx); - fileName if (fileInput && fileInput.files.length > 0) { var targetInput = $("#WeightFile")[0]; var file = fileInput.files[0]; @@ -1880,20 +1882,11 @@ var v5 = $("#NetWeight").val(); var inx = $("#CurrentInx").val(); var IGRNO1 = $("#IGRNO1").val(); - var fileInput = $("#WeightFile")[0]; // Get the file input element + var fileInput = $("#WeightFile")[0]; if (inx !== undefined && inx !== '') { - console.log("Saving values for index:", inx); - - // Set the values back to the hidden inputs - $("#txtGrossWeight" + inx).val(v1); - $("#txtGrossWeightDate" + inx).val(v2); - $("#txtTareWeight" + inx).val(v3); - $("#txtTareWeightDate" + inx).val(v4); - $("#txtNetWeight" + inx).val(v5); var txtIGRLineItem = $("#txtIGRLineItem" + inx).val(); - // Prepare FormData var formData = new FormData(); formData.append('GrossWeight', v1); formData.append('GrossWeightDate', v2); @@ -1902,54 +1895,32 @@ formData.append('NetWeight', v5); formData.append('IGR', IGRNO1); formData.append('IGRlineitem', txtIGRLineItem); + if (fileInput && fileInput.files.length > 0) { var file = fileInput.files[0]; formData.append('WeightFile', file); + console.log("File selected:", file.name); } else { - console.log("No file selected or file input not found."); + console.log("No file selected."); } - // if (fileInput && fileInput.files.length > 0) { - // var targetInput = $("#txtWeightFile" + inx)[0]; - // var file = fileInput.files[0]; - // // Create a new DataTransfer object - // var dataTransfer = new DataTransfer(); - // dataTransfer.items.add(file); - - // // Set the file to the target input - // targetInput.files = dataTransfer.files; - // formData.append('WeightFile', file); - - // } else { - // console.log("No file selected or file input not found."); - // } $.ajax({ - url: "updateIGRWeight", + url: "", type: "POST", data: formData, - contentType: false, // Don't set content type header + contentType: false, processData: false, success: function(data) { - if (data) { - alert(data); - } - + alert(data); + $("#WeightCalculator").modal('hide'); + }, + error: function(xhr, status, error) { + console.log("Upload error:", error); } }); - // Clear modal inputs - $("#GrossWeight").val(''); - $("#GrossWeightDate").val(''); - $("#TareWeight").val(''); - $("#TareWeightDate").val(''); - $("#NetWeight").val(''); - $("#WeightFile").val(''); - - // Close the modal - $("#WeightCalculator").modal('hide'); - } else { - console.log("Saving values for index: " + inx + " undefined"); } } +
EarningsAmount DeductionsAmount
 BASIC BASIC BASIC; ?>   PF  SNo Requisition No Item DescriptionHSN/SAC Line Item Specs Quantity UOMReqNo ?> MaterialName, 0, 13, "..."); echo $shortName; ?>HSNCODE ?> ').val(obj.MaterialCode).html(obj.MaterialCode + "-" + obj.MaterialName)); + var HSNCODE = obj.HSNCODE ? obj.HSNCODE+" - " : ""; + $("#MaterialCode").append($('').val(obj.MaterialCode).html( HSNCODE + obj.MaterialName+ " ( "+obj.MaterialCode+" ) ")); + // $("#MaterialCode").append($('').val(obj.MaterialCode).html(obj.MaterialCode + "-" + obj.MaterialName)); } } @@ -3345,7 +3348,7 @@ Calculate Landing charge $('#EditOtherAllowances').val($('#otherallowance' + userid).val()); //$('#Editservicetotalordervaue').val($('#totalservicevalue'+userid).val()); - $('#Editservicetotalordervaue').val(cellval[9].innerHTML); + $('#Editservicetotalordervaue').val(cellval[10].innerHTML); @@ -3433,12 +3436,22 @@ Calculate Landing charge $("#EditMaterialCode").empty(); - $("#EditMaterialCode").append($('').val($('#materialCode' + userid).val()).html($('#materialCode' + userid).val() + "-" + $('#materialName' + userid).val())); + var P0 = cellval[3].innerHTML; + var P1 = (P0) ? P0 + " - " : ""; + var P2 = P1 + $('#materialName' + userid).val() ; + var P3 = P2 + " ( " + $('#materialCode' + userid).val() + ' ) '; + + $("#EditMaterialCode").append($('') + .val($('#materialCode' + userid).val()) + .html(P3) + .prop('selected', true) + ); for (i = 0; i < Material.length; i++) { $.each(Material[i], function (idx, obj) { if (obj.MaterialCode != $('#materialCode' + userid).val()) { - $("#EditMaterialCode").append($('').val(obj.MaterialCode).html(obj.MaterialCode + "-" + obj.MaterialName)); + var HSN = (obj.HSNCODE) ? obj.HSNCODE+" - " : ""; + $("#EditMaterialCode").append($('').val(obj.MaterialCode).html(HSN + obj.MaterialName + " ( "+obj.MaterialCode+" ) ")); } }); @@ -4056,19 +4069,26 @@ Calculate Landing charge $('#DisVal' + userid).val(DisVal); $('#AfterDisVal' + userid).val(AfterDisVal); var shorten = materialName.length > 13 ? materialName.slice(0, 13) + "..." : materialName; + var editselectedText = $('#EditMaterialCode option:selected').text(); + var editparts = editselectedText.split('-'); + var editHSN = editselectedText.includes('-') && /^\d+$/.test(editparts[0].trim()) + ? editparts[0].trim() + : ''; + cellval[2].innerHTML = shorten; //alert(materialName); - cellval[4].innerHTML = parseFloat(quantity).toFixed(2); + cellval[4].innerHTML = editHSN; + cellval[5].innerHTML = parseFloat(quantity).toFixed(2); //alert(quantity); - cellval[5].innerHTML = uom; + cellval[6].innerHTML = uom; //alert(uom); - cellval[6].innerHTML = parseFloat(itemRate).toFixed(2); + cellval[7].innerHTML = parseFloat(itemRate).toFixed(2); //alert(itemRate); - cellval[7].innerHTML = parseFloat(basicval).toFixed(2); + cellval[8].innerHTML = parseFloat(basicval).toFixed(2); //alert(basicval); - cellval[8].innerHTML = parseFloat(TotalTaxValue).toFixed(2); + cellval[9].innerHTML = parseFloat(TotalTaxValue).toFixed(2); //alert(TotalTaxValue); - cellval[9].innerHTML = parseFloat(totalservicevalue).toFixed(2); + cellval[10].innerHTML = parseFloat(totalservicevalue).toFixed(2); //alert(basicval); diff --git a/app/Views/editCapitalPo.php b/app/Views/editCapitalPo.php index ba8ab4c0..df550de9 100755 --- a/app/Views/editCapitalPo.php +++ b/app/Views/editCapitalPo.php @@ -943,6 +943,7 @@ $(document).ready(function () { Requisition No Item Code Item DescriptionHSN/SAC Line Item Specs Quantity UOMMaterialCode ?> MaterialName, 0, 13, "..."); echo $shortName; ?>HSNCODE ?> ').val(obj.MaterialCode).html(obj.MaterialCode + "-" + obj.MaterialName)); + var HSNCODE = obj.HSNCODE ? obj.HSNCODE+" - " : ""; + $("#MaterialCode").append($('').val(obj.MaterialCode).html( HSNCODE + obj.MaterialName+ " ( "+obj.MaterialCode+" ) ")); } } @@ -4802,6 +4804,14 @@ $(document).ready(function () { var costCode = $('#CostCenter').val(); var materialCode = $('#MaterialCode').val(); + var selectedText = $('#MaterialCode option:selected').text(); + var parts = selectedText.split('-'); + var HSN = selectedText.includes('-') && /^\d+$/.test(parts[0].trim()) + ? parts[0].trim() + : ''; + + + var materialName = $("#CapitalItemName").val(); var uom = $("#CPUOM").val(); var addPer = ''; @@ -4942,8 +4952,9 @@ $(document).ready(function () { ${temp} ${Reqnumber} ${materialCode}${shorten}${shorten}${HSN}- @@ -5466,9 +5477,8 @@ $(document).ready(function () { if (value.MaterialCode == materialCode) { - - - $("#MaterialCode").append($('').val(value.MaterialCode).html(value.MaterialCode + "-" + value.MaterialName)); + var HSNCODE = value.HSNCODE ? value.HSNCODE+"-" : ""; + $("#MaterialCode").append($('').val(value.MaterialCode).html( HSNCODE + value.MaterialName+ " ( "+value.MaterialCode+" ) ")); } @@ -5835,7 +5845,7 @@ $(document).ready(function () { $('#EditCustomDutyExpenses').val($('#CustomDutyExpenses' + userid).val()); //$('#txtEditInsurance').val($('#RMCIncludingCustomers'+userid).val()); - $('#EdittxtTotalOrderValue').val(cellval[10].innerHTML); + $('#EdittxtTotalOrderValue').val(cellval[11].innerHTML); @@ -5887,13 +5897,25 @@ $(document).ready(function () { var Material = ; $("#EditMaterialCode").empty(); + var P0 = cellval[4].innerHTML; + var P1 = (P0) ? P0 + " - " : ""; + var P2 = P1 + $('#materialName' + userid).val() ; + var P3 = P2 + " ( " + $('#materialCode' + userid).val() + ' ) '; - $("#EditMaterialCode").append($('').val($('#materialCode' + userid).val()).html($('#materialCode' + userid).val() + "-" + $('#materialName' + userid).val())); + $("#EditMaterialCode").append($('') + .val($('#materialCode' + userid).val()) + .html(P3) + .prop('selected', true) + ); + + // $("#EditMaterialCode").append($('').val($('#materialCode' + userid).val()).html($('#materialCode' + userid).val() + "-" + $('#materialName' + userid).val())); for (i = 0; i < Material.length; i++) { $.each(Material[i], function(idx, obj) { if (obj.MaterialCode != $('#materialCode' + userid).val()) { - $("#EditMaterialCode").append($('').val(obj.MaterialCode).html(obj.MaterialCode + "-" + obj.MaterialName)); + // $("#EditMaterialCode").append($('').val(obj.MaterialCode).html(obj.MaterialCode + "-" + obj.MaterialName)); + var HSN = (obj.HSNCODE) ? obj.HSNCODE+" - " : ""; + $("#EditMaterialCode").append($('').val(obj.MaterialCode).html(HSN + obj.MaterialName + " ( "+obj.MaterialCode+" ) ")); } }); @@ -5942,7 +5964,7 @@ $(document).ready(function () { $('#ViewAfterSgst').val($('#AfterSgst' + userid).val()); $('#ViewAfterIgst').val($('#AfterIgst' + userid).val()); $('#ViewOtherAllowances').val($('#OtherAmt' + userid).val()); - $('#ViewTotalAmountlocal').val(cellval[10].innerHTML); + $('#ViewTotalAmountlocal').val(cellval[11].innerHTML); $('#drpFreightviewloc').val($("#Ftype" + userid).val()); @@ -6555,12 +6577,12 @@ $(document).ready(function () { var itemRate = parseFloat(convertRate).toFixed(2); var basicval = $("#EditCPTotalAmount").val(); var Cgst = $("#EditCgst").val(); - var AfterCgst = $("#EditAfterCgst").val(); + var AfterCgst = $("#EditAfterCgst").val() == '' ? 0 : $("#EditAfterCgst").val(); var Sgst = $("#EditSgst").val(); - var AfterSgst = $("#EditAfterSgst").val(); + var AfterSgst = $("#EditAfterSgst").val() == '' ? 0 : $("#EditAfterSgst").val(); var Igst = $("#EditIgst").val(); //Dom Caps - var AfterIgst = $("#EditAfterIgst").val(); //Dom Caps - var OtherAmt = parseFloat($("#EditOtherAllowances").val() == '' ? "0.00" : $('#EditOtherAllowances').val()).toFixed(2); + var AfterIgst = $("#EditAfterIgst").val() == '' ? 0 :$("#EditAfterIgst").val(); //Dom Caps + var OtherAmt = parseFloat($("#EditOtherAllowances").val() == '' ? 0 : $('#EditOtherAllowances').val()).toFixed(2); var TotalTaxValue = EditcalculateTaxValue(); @@ -6601,7 +6623,7 @@ $(document).ready(function () { var NoOfTrip = $("#EditNOOfTrips").val(); var DisType = $("#EditDiscountType").val(); var DisVal = $("#txtEditDiscount").val(); - var AfterDisVal = $("#txtEditAfterDiscount").val(); + var AfterDisVal = $("#txtEditAfterDiscount").val() == '' ? 0 : $("#txtEditAfterDiscount").val(); @@ -6618,13 +6640,10 @@ $(document).ready(function () { var FreightTypeloc = $('#drpFreighteditloc').val(); var FreightRateloc = $('#txtFreightlocedit').val(); - var FreightRateAmountloc = $('#txtAfterFreightlocedit').val(); + var FreightRateAmountloc = $('#txtAfterFreightlocedit').val() == '' ? 0 : $('#txtAfterFreightlocedit').val(); var Nooftriploc = $('#NOOfTripslocedit').val(); - - - var Total = (parseFloat(basicval) + parseFloat(AfterCgst) + parseFloat(AfterSgst) + parseFloat(AfterIgst) + parseFloat(OtherAmt) - parseFloat(AfterDisVal) + parseFloat(FreightRateAmountloc)).toFixed(2); if (capital == 0) { @@ -6715,19 +6734,24 @@ $(document).ready(function () { $('#DutyImpact' + userid).val(DutyImpact); $('#NetValue' + userid).val(Nett); $('#ClearingCharge' + userid).val(ClearingCharges); + var editselectedText = $('#EditMaterialCode option:selected').text(); + var editparts = editselectedText.split('-'); + var editHSN = editselectedText.includes('-') && /^\d+$/.test(editparts[0].trim()) + ? editparts[0].trim() + : ''; var shorten = materialName.length > 13 ? materialName.slice(0, 13) + "..." : materialName; cellval[2].innerHTML = materialCode; cellval[3].innerHTML = shorten; - - cellval[5].innerHTML = quantity; - cellval[6].innerHTML = uom; - cellval[7].innerHTML = parseFloat(itemRate).toFixed(2); - cellval[8].innerHTML = parseFloat(basicval).toFixed(2); - cellval[9].innerHTML = parseFloat(TotalTaxValue).toFixed(2); // what should i display here ?? if international means - cellval[10].innerHTML = parseFloat(Total).toFixed(2); + cellval[4].innerHTML = editHSN; + cellval[6].innerHTML = quantity; + cellval[7].innerHTML = uom; + cellval[8].innerHTML = parseFloat(itemRate).toFixed(2); + cellval[9].innerHTML = parseFloat(basicval).toFixed(2); + cellval[10].innerHTML = parseFloat(TotalTaxValue).toFixed(2); // what should i display here ?? if international means + cellval[11].innerHTML = parseFloat(Total).toFixed(2); diff --git a/app/Views/editImportAmendPO.php b/app/Views/editImportAmendPO.php index 1500d30e..4e38583b 100755 --- a/app/Views/editImportAmendPO.php +++ b/app/Views/editImportAmendPO.php @@ -1279,6 +1279,7 @@ if (!empty($RequistionDetails)) { SNo Requisition No Item DescriptionHSN/SAC Line Item Specs Quantity UOMReqNo ?> MaterialName, 0, 13, "..."); echo $shortName; ?>HSNCODE ?> ').val(obj.MaterialCode).html(obj.MaterialCode + "-" + obj.MaterialName)); + var HSNCODE = obj.HSNCODE ? obj.HSNCODE+" - " : ""; + $("#MaterialCode").append($('').val(obj.MaterialCode).html( HSNCODE + obj.MaterialName+ " ( "+obj.MaterialCode+" ) ")); } } @@ -2678,10 +2680,19 @@ if (!empty($RequistionDetails)) { - $('#EditTotalOrderValue').val(cellval[6].innerHTML); + $('#EditTotalOrderValue').val(cellval[7].innerHTML); $("#EditMaterialCode").empty(); var Material = ; - $("#EditMaterialCode").append($('').val($('#materialCode' + userid).val()).html($('#materialCode' + userid).val() + "-" + $('#materialName' + userid).val())); + var P0 = cellval[3].innerHTML; + var P1 = (P0) ? P0 + " - " : ""; + var P2 = P1 + $('#materialName' + userid).val() ; + var P3 = P2 + " ( " + $('#materialCode' + userid).val() + ' ) '; + + $("#EditMaterialCode").append($('') + .val($('#materialCode' + userid).val()) + .html(P3) + .prop('selected', true) + ); var isAdded = "0"; for (i = 0; i < Material.length; i++) { $.each(Material[i], function(idx, obj) { @@ -2724,6 +2735,13 @@ if (!empty($RequistionDetails)) { var CostCode = $("#EditCostCenter").val(); var AvilBudget = $('#EditAvlBudAmt').val(); var editMaterialCode = $("#EditMaterialCode").val(); + + var editselectedText = $('#EditMaterialCode option:selected').text(); + var editparts = editselectedText.split('-'); + var editHSN = editselectedText.includes('-') && /^\d+$/.test(editparts[0].trim()) + ? editparts[0].trim() + : ''; + var edititemname = $("#EditItemName").val(); var editUOM = $('#EditUOM').val(); var editQuantity = $('#EditQuantity').val(); @@ -2799,11 +2817,11 @@ if (!empty($RequistionDetails)) { var tr = document.getElementById(userid); var cellval = tr.cells; - - cellval[4].innerHTML = editQuantity; - cellval[5].innerHTML = editUOM; - cellval[6].innerHTML = itemRate; - cellval[7].innerHTML = BasicValue; + cellval[4].innerHTML = editHSN; + cellval[5].innerHTML = editQuantity; + cellval[6].innerHTML = editUOM; + cellval[7].innerHTML = itemRate; + cellval[8].innerHTML = BasicValue; $('#materialCode' + userid).val(editMaterialCode); $('#materialName' + userid).val(edititemname); diff --git a/app/Views/editRevenueAmendPO.php b/app/Views/editRevenueAmendPO.php index 5fd2ce98..91c73689 100755 --- a/app/Views/editRevenueAmendPO.php +++ b/app/Views/editRevenueAmendPO.php @@ -1316,6 +1316,7 @@ if (!empty($INRSYMBOL)) { SNo Requisition No Item DescriptionHSN/SAC Line Item Specs Quantity UOMReqNo ?> MaterialName, 0, 13, "..."); echo $shortName; ?>HSNCODE ?> '; userid = $(e.relatedTarget).data('userid'); + $('#isEdit').val(1); $('#isEdit').val(1); - if (tempUserId == 0) { var tr = document.getElementById(userid); var cellval = tr.cells; var id = $('#Reqnumber' + userid).val(); @@ -2364,6 +2366,7 @@ if (!empty($INRSYMBOL)) { $('#EditAvlBudAmt').val(AvlBudAmt); $('#EditMaterialCode').val($('#materialCode' + userid).val()); + $('#EditItemName').val($('#materialName' + userid).val()); $('#EditUOM').val($('#uom' + userid).val()); $('#EditQuantity').val($('#quantity' + userid).val()); @@ -2372,7 +2375,7 @@ if (!empty($INRSYMBOL)) { var EdititemRate = parseFloat($('#itemRate' + userid).val()).toFixed(2); $('#EditRate').val(EdititemRate); - $('#txtEditBasicValue').val(parseFloat(cellval[7].innerHTML).toFixed(2)); + $('#txtEditBasicValue').val(parseFloat(cellval[8].innerHTML).toFixed(2)); RequistQuantity = $('#quantity' + userid).val(); $('#txtEditDiscount').val($('#DisVal' + userid).val()); $('#txtEditAfterDiscount').val($('#AfterDisVal' + userid).val()); @@ -2400,7 +2403,16 @@ if (!empty($INRSYMBOL)) { $("#EditMaterialCode").empty(); var Material = ; // For Binding Material list center for the selected Requistion Number - $("#EditMaterialCode").append($('').val($('#materialCode' + userid).val()).html($('#materialCode' + userid).val() + "-" + $('#materialName' + userid).val())); + var P0 = cellval[3].innerHTML; + var P1 = (P0) ? P0 + " - " : ""; + var P2 = P1 + $('#materialName' + userid).val() ; + var P3 = P2 + " ( " + $('#materialCode' + userid).val() + ' ) '; + + $("#EditMaterialCode").append($('') + .val($('#materialCode' + userid).val()) + .html(P3) + .prop('selected', true) + ); var isAdded = "0"; for (i = 0; i < Material.length; i++) { $.each(Material[i], function (idx, obj) { @@ -2416,7 +2428,8 @@ if (!empty($INRSYMBOL)) { } }); if (isAdded == "0") { - $("#EditMaterialCode").append($('').val(obj.MaterialCode).html(obj.MaterialCode + "-" + obj.MaterialName)); + var HSNCODE = obj.HSNCODE ? obj.HSNCODE+" - " : ""; + $("#EditMaterialCode").append($('').val(obj.MaterialCode).html( HSNCODE + obj.MaterialName+ " ( "+obj.MaterialCode+" ) ")); } } }); @@ -2428,7 +2441,7 @@ if (!empty($INRSYMBOL)) { $("input:radio[name='optExcise'][value='" + $('#ExciseOption' + userid).val() + "']").prop('checked', 'checked'); $("input:radio[name='optVat'][value='" + $('#VatOption' + userid).val() + "']").prop('checked', 'checked'); $("input:radio[name='optCST'][value='" + $('#CSTOption' + userid).val() + "']").prop('checked', 'checked'); - } + if (userid) { tempUserId = userid; @@ -2487,18 +2500,23 @@ if (!empty($INRSYMBOL)) { var TotalOrderValue = $("#txtEditTotalOrderValue").val(); var Service_Description = $("#Edit_Service_Description").val(); var TotalTaxValue = calculateEditTaxValue(); + var editselectedText = $('#EditMaterialCode option:selected').text(); + var editparts = editselectedText.split('-'); + var editHSN = editselectedText.includes('-') && /^\d+$/.test(editparts[0].trim()) + ? editparts[0].trim() + : ''; var tr = document.getElementById(userid); var cellval = tr.cells; var shorten = editDescription.length > 13 ? editDescription.slice(0, 13) + "..." : editDescription; cellval[2].innerHTML = shorten; - - cellval[4].innerHTML = parseFloat(editQuantity).toFixed(2); - cellval[5].innerHTML = editUOM; - cellval[6].innerHTML = parseFloat(itemRate).toFixed(2); - cellval[7].innerHTML = parseFloat(basicval).toFixed(2); - cellval[8].innerHTML = parseFloat(TotalTaxValue).toFixed(2); - cellval[9].innerHTML = parseFloat(TotalOrderValue).toFixed(2); + cellval[3].innerHTML = editHSN; + cellval[5].innerHTML = parseFloat(editQuantity).toFixed(2); + cellval[6].innerHTML = editUOM; + cellval[7].innerHTML = parseFloat(itemRate).toFixed(2); + cellval[8].innerHTML = parseFloat(basicval).toFixed(2); + cellval[9].innerHTML = parseFloat(TotalTaxValue).toFixed(2); + cellval[10].innerHTML = parseFloat(TotalOrderValue).toFixed(2); $('#materialCode' + userid).val(editMaterialCode); $('#materialName' + userid).val(editDescription); @@ -2865,7 +2883,7 @@ if (!empty($INRSYMBOL)) { + + diff --git a/app/Views/importpo.php b/app/Views/importpo.php index 56790240..4d034d64 100755 --- a/app/Views/importpo.php +++ b/app/Views/importpo.php @@ -322,10 +322,19 @@ if (isset($AvlimportBudAmt) && !empty($AvlimportBudAmt)) { $('#editTripsValue').hide(); } $('#EditPer').val($('#Per' + userid).val()); - $('#EditTotalOrderValue').val(cellval[9].innerHTML); + $('#EditTotalOrderValue').val(cellval[10].innerHTML); $("#EditMaterialCode").empty(); var Material = ; - $("#EditMaterialCode").append($('').val($('#materialCode' + userid).val()).html($('#materialCode' + userid).val() + "-" + $('#materialName' + userid).val())); + var P0 = cellval[4].innerHTML; + var P1 = (P0) ? P0 + " - " : ""; + var P2 = P1 + $('#materialName' + userid).val() ; + var P3 = P2 + " ( " + $('#materialCode' + userid).val() + ' ) '; + + $("#EditMaterialCode").append($('') + .val($('#materialCode' + userid).val()) + .html(P3) + .prop('selected', true) + ); var isAdded = "0"; for (i = 0; i < Material.length; i++) { $.each(Material[i], function(idx, obj) { @@ -341,7 +350,9 @@ if (isset($AvlimportBudAmt) && !empty($AvlimportBudAmt)) { } }); if (isAdded == "0") { - $("#EditMaterialCode").append($('').val(obj.MaterialCode).html(obj.MaterialCode + "-" + obj.MaterialName)); + var HSNCODE = obj.HSNCODE ? obj.HSNCODE+" - " : ""; + $("#EditMaterialCode").append($('').val(obj.MaterialCode).html( HSNCODE + obj.MaterialName+ " ( "+obj.MaterialCode+" ) ")); + // $("#EditMaterialCode").append($('').val(obj.MaterialCode).html(obj.MaterialCode + "-" + obj.MaterialName)); } } }); @@ -842,6 +853,7 @@ if (isset($AvlimportBudAmt) && !empty($AvlimportBudAmt)) { Requisition No Item Code Item DescriptionHSN/SAC Line Item Specs Quantity UOM${Reqnumber} ${materialCode} ${shorten}${HSN} - @@ -3873,13 +3895,20 @@ if (isset($AvlimportBudAmt) && !empty($AvlimportBudAmt)) { if (FreightTypename != "PER TRIP") { Nooftrip = ''; } + + var editselectedText = $('#EditMaterialCode option:selected').text(); + var editparts = editselectedText.split('-'); + var editHSN = editselectedText.includes('-') && /^\d+$/.test(editparts[0].trim()) + ? editparts[0].trim() + : ''; var tr = document.getElementById(userid); var cellval = tr.cells; - cellval[5].innerHTML = editQuantity; - cellval[6].innerHTML = editUOM; - cellval[7].innerHTML = itemRate; - cellval[8].innerHTML = BasicValue; + cellval[4].innerHTML = editHSN; + cellval[6].innerHTML = editQuantity; + cellval[7].innerHTML = editUOM; + cellval[8].innerHTML = itemRate; + cellval[9].innerHTML = BasicValue; $('#materialCode' + userid).val(editMaterialCode); $('#materialName' + userid).val(edititemname); diff --git a/app/Views/inwardgateregister.php b/app/Views/inwardgateregister.php index ba94d820..ea89ce2c 100755 --- a/app/Views/inwardgateregister.php +++ b/app/Views/inwardgateregister.php @@ -160,6 +160,7 @@ # Item Code Item DescriptionHSN/SAC Rate UOM Ordered Quantity' + j + '' + item.MaterialCode + '' + item.MaterialName + '' + ((item.HSNCODE) ? item.HSNCODE : '') + '' + Number(item.Rate).toFixed(2) + '' + item.UOM + '' + item.Quantity + '' + j + '' + item.MaterialCode + '' + item.MaterialName + '' + ((item.HSNCODE) ? item.HSNCODE : '') + '' + Number(item.Rate).toFixed(2) + '' + item.UOM + '' + item.Quantity + ' - + + payroll_id)) { echo "contenteditable='true';"; } ?> payroll_id)) { ?> title="Payslip Calculated" style="text-align:right;color:blue;" @@ -634,7 +640,7 @@ exportMonthlyPayInputs", + success: function(data) { + if(data){ + alert("step1"); + }else{ + alert("false"); + } + }, + error:function(error){ + alert("error"); + console.log("error occured..!!" ,error); + }, + complete:function(){ + $('#loader').hide(); + console.log('ajax call completed..!!'); + } + }); + + } + $("#monthyear").change(function() { @@ -1233,7 +1265,7 @@ $(document).ready(function () { var driverMonthSalary = driverSalaryAdd - driverSalarySub var driverSalary = Math.round(driverMonthSalary); - console.log("Sal ",driverSalary); + console.log("Driver Sal ",driverSalary); var cals = (driverSalary).toFixed(0); @@ -1241,35 +1273,41 @@ $(document).ready(function () { document.getElementById("empsal" + sno).innerHTML = cals; // copied from calculategrandtotal() because we need those two only thats why - var AutoLoanDueIndex = 22; + const td = document.querySelector('.monthDue'); + var AutoLoanDueIndex = td ? td.cellIndex : -1; var AutoLoanDue = 0; $('#monthlylistings tbody tr').each(function() { var value = $(this).find('td').eq(AutoLoanDueIndex).text(); AutoLoanDue += parseFloat(value) || 0; }); $('#monthloan').text(AutoLoanDue); + + console.log("AutoLoanDue ",AutoLoanDue); - var FestivalBonusIndex = 24; + var FestivalBonusIndex = 23; var FestivalBonus = 0; $('#monthlylistings tbody tr').each(function() { var value = $(this).find('td').eq(FestivalBonusIndex).text(); FestivalBonus += parseFloat(value) || 0; }); $('#fest').text(FestivalBonus); + console.log("FestivalBonus ",FestivalBonus); - var EstimateIndex = 25; + var EstimateIndex = 24; var Estimate = 0; $('#monthlylistings tbody tr').each(function() { var value = $(this).find('td').eq(EstimateIndex).text(); Estimate += parseFloat(value) || 0; }); $('#estsal').text(Estimate); + console.log("Estimate ",Estimate); } function calculategrandtotal() { - var AutoLoanDueIndex = 22; + const td = document.querySelector('.monthDue'); + var AutoLoanDueIndex = td ? td.cellIndex : -1; var AutoLoanDue = 0; $('#monthlylistings tbody tr').each(function() { var value = $(this).find('td').eq(AutoLoanDueIndex).text(); @@ -1277,7 +1315,7 @@ $(document).ready(function () { }); $('#monthloan').text(AutoLoanDue); - var TDSDeductionsIndex = 23; + var TDSDeductionsIndex = 22; var TDSDeductions = 0; $('#monthlylistings tbody tr').each(function() { var value = $(this).find('td').eq(TDSDeductionsIndex).text(); @@ -1285,7 +1323,7 @@ $(document).ready(function () { }); $('#other').text(TDSDeductions); - var FestivalBonusIndex = 24; + var FestivalBonusIndex = 23; var FestivalBonus = 0; $('#monthlylistings tbody tr').each(function() { var value = $(this).find('td').eq(FestivalBonusIndex).text(); @@ -1293,7 +1331,7 @@ $(document).ready(function () { }); $('#fest').text(FestivalBonus); - var EstimateIndex = 25; + var EstimateIndex = 24; var Estimate = 0; $('#monthlylistings tbody tr').each(function() { var value = $(this).find('td').eq(EstimateIndex).text(); @@ -1306,11 +1344,10 @@ $(document).ready(function () { -function openDriverLoad(element) { - var empId = $(element).data("empid"); // Get the empid from clicked element +function openDriverLoad(empId) { var monthYear = $('#monthyear').val(); - // Convert "03-2025" to "Mar-2025" - var monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; + // Convert "03-2025" to "Mar-2025" + var monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; var parts = monthYear.split('-'); var monthIndex = parseInt(parts[0], 10) - 1; // Convert "03" to index 2 (March) var formattedMonthYear = monthNames[monthIndex] + '-' + parts[1]; diff --git a/app/Views/publicholidays.php b/app/Views/publicholidays.php index 117e9d85..50fae240 100755 --- a/app/Views/publicholidays.php +++ b/app/Views/publicholidays.php @@ -94,61 +94,100 @@ - \ No newline at end of file diff --git a/app/Views/requisitionlisting.php b/app/Views/requisitionlisting.php index 8cc36bac..aa7686a2 100755 --- a/app/Views/requisitionlisting.php +++ b/app/Views/requisitionlisting.php @@ -170,7 +170,7 @@ if (!empty($Status)) { newLineItem ?>StatusName); ?>StatusName); ?> Sales @@ -341,7 +341,7 @@ - Requisition No Item Code Item DescriptionHSN/SAC Line Item Specs Quantity UOM${Reqnumber} ${materialCode} ${shorten}${HSN} - diff --git a/app/Views/viewinwardgateregister.php b/app/Views/viewinwardgateregister.php index f1e04c44..9c90c0c9 100755 --- a/app/Views/viewinwardgateregister.php +++ b/app/Views/viewinwardgateregister.php @@ -248,7 +248,7 @@ $time = $createddate->format('h:i A'); ?>
@@ -267,7 +267,7 @@ SupplierName ?> DeliveryChellanOrInvoiceNo ?>DeliveryChellanDate; if(!$invdate || $invdate == 'null' || $invdate === '0000-00-00 00:00:00'){ echo ""; @@ -301,7 +301,7 @@ isIgrFilePresent)){ ?> - +   @@ -497,6 +497,7 @@ SNo Item Code Item DescriptionHSN/SAC UOM Ordered Qty Received Qty ' + i + '' + item.MaterialCode + '' + item.MaterialName + '' + ((item.HSNCODE) ? item.HSNCODE : '') + '' + item.UOM + '' + parseInt(item.Quantity) + '' + i + '' + item.MaterialCode + '' + item.MaterialName + '' + ((item.HSNCODE) ? item.HSNCODE : '') + '' + item.UOM + '' + parseInt(item.Quantity) + '' + i + '' + item.MaterialCode + '' + item.MaterialName + '' + ((item.HSNCODE) ?item.HSNCODE : '') + '' + item.UOM + '' + item.Quantity + '