Merge branch 'new_theme' of bitbucket.org:venbainformationtechnology/ria into new_theme
This commit is contained in:
commit
61d004cbac
@ -150,11 +150,12 @@ class Driver extends BaseController
|
||||
public function loadDriverAttendance()
|
||||
{
|
||||
|
||||
$input_driver_id = $this->request->getGet('gobal_driver_id');
|
||||
$input_driver_id = $this->request->getGet('drv_id');
|
||||
// $input_month_year = $this->request->getPost('month_year') ? $this->request->getPost('month_year') : get_date_time_dynamical_format('d-M-Y','d-m-',"01-"+$this->request->getGet('month_year')) ;
|
||||
$input_date = $this->request->getGet('date')
|
||||
? $this->request->getGet('date')
|
||||
: get_date_time_dynamical_format('d-M-Y','d-m-Y',"01-".$this->request->getGet('month_year'));
|
||||
$input_date = $this->request->getGet('month_year')
|
||||
? get_date_time_dynamical_format('d-M-Y','d-m-Y',"01-".$this->request->getGet('month_year'))
|
||||
: get_date_time_dynamical_format('Y-m-d','d-m-Y',get_current_date());
|
||||
|
||||
|
||||
|
||||
list($date,$month,$year) = explode('-', $input_date);
|
||||
@ -170,9 +171,9 @@ class Driver extends BaseController
|
||||
$data['page_driver_name'] = $this->driver_model->getDriverName($input_driver_id,0);
|
||||
$data['invoice_info'] = $this->driver_model->getInvoiceInfo();
|
||||
$data['datefordropdown'] = $input_date;
|
||||
$data['gobal_driver_id'] = $input_driver_id;
|
||||
$data['gobal_diesel_amount'] = isset($amount->diesel_amount) ? $amount->diesel_amount : 0 ;
|
||||
$data['gobal_shed_amount'] = isset($amount->shed_amount) ? $amount->shed_amount : 0 ;
|
||||
$data['input_driver_id'] = $input_driver_id;
|
||||
$data['input_diesel_amount'] = isset($amount->diesel_amount) ? $amount->diesel_amount : 0 ;
|
||||
$data['input_shed_amount'] = isset($amount->shed_amount) ? $amount->shed_amount : 0 ;
|
||||
|
||||
$this->global['pageTitle'] = 'Driver Attendance List';
|
||||
$this->loadViews("driverAttendance", $this->global, $data, NULL);
|
||||
@ -209,8 +210,12 @@ class Driver extends BaseController
|
||||
$food = $this->request->getPost('food_amount');
|
||||
$diesel = $this->request->getPost('diesel_amount');
|
||||
$shed = $this->request->getPost('shed_amount');
|
||||
$ct = $this->request->getPost('category_type');
|
||||
$c = $this->request->getPost('customer');
|
||||
$q = $this->request->getPost('quantity');
|
||||
|
||||
$data = ['status' => false, 'message' => 'An error occurred while creating driver Trip details'];
|
||||
$driver_details = ['date' => $date,'driver_id' =>$driver_id,'invoice_number' =>$inv,'vehicle_number' =>$veh,'load_type' =>$load,'salary_amount' => $sal,'food_amount' =>$food,'diesel_amount'=> $diesel,'shed_amount' => $shed];
|
||||
$driver_details = ['date' => $date,'driver_id' =>$driver_id,'invoice_number' =>$inv,'vehicle_number' =>$veh,'load_type' =>$load,'salary_amount' => $sal,'food_amount' =>$food,'diesel_amount'=> $diesel,'shed_amount' => $shed,'type'=>$ct,'customer'=>$c,'quantity'=>$q];
|
||||
|
||||
if ((int)$id == 0) {
|
||||
log_message('error', 'LAST DriverID : ' . $id);
|
||||
@ -239,7 +244,7 @@ class Driver extends BaseController
|
||||
*/
|
||||
function deleteDriverAttendance()
|
||||
{
|
||||
$driverId = $this->request->getGet('gobal_driver_id') ? $this->request->getGet('gobal_driver_id') : '';
|
||||
$driverId = $this->request->getGet('drv_id') ? $this->request->getGet('drv_id') : '';
|
||||
$driverAttendanceId = $this->request->getGet('driverAttendanceId') ? $this->request->getGet('driverAttendanceId') : '';
|
||||
$monthyear = $this->request->getGet('month_year') ?? date('M-Y');
|
||||
|
||||
@ -253,7 +258,7 @@ class Driver extends BaseController
|
||||
$this->session->setFlashdata('success', $message);
|
||||
// return redirect()->to(current_url());
|
||||
// return redirect()->route('loadDriverAttendance');
|
||||
return redirect()->to(base_url('loadDriverAttendance?gobal_driver_id=' . $driverId . '&month_year=' . $monthyear));
|
||||
return redirect()->to(base_url('loadDriverAttendance?drv_id=' . $driverId . '&month_year=' . $monthyear));
|
||||
|
||||
|
||||
}
|
||||
@ -261,7 +266,13 @@ class Driver extends BaseController
|
||||
function gatheredCustAndQty(){
|
||||
$data = $this->request->getPost();
|
||||
$invoice = $data['invoiceNumber'];
|
||||
$results = $this->driver_model->gatheredCustAndQty($invoice);
|
||||
$type = $data['type'];
|
||||
if($type == 'IGR'){
|
||||
$results = $this->driver_model->gatheredIgrCustAndQty($invoice);
|
||||
}else if($type == 'INVOICE'){
|
||||
$results = $this->driver_model->gatheredInvoiceCustAndQty($invoice);
|
||||
}
|
||||
|
||||
return $this->response->setJSON($results);
|
||||
}
|
||||
|
||||
|
||||
@ -515,7 +515,7 @@ class Payslip extends BaseController
|
||||
// $Incentives = $j['Incentives in ₹'];
|
||||
$Festival_Bonus = $j['Festival Bonus in ₹'];
|
||||
$Other_Deductions = $j['TDS Deductions in ₹'];
|
||||
$Estimate = $j['Estimate in ₹'];
|
||||
$Estimate = $j['Net Salary ₹'];
|
||||
$Created_By = $this->session->get('userId');
|
||||
|
||||
if (!is_numeric($DaysWorked) || ($DaysWorked > 31) || (strlen((string)$DaysWorked)) > 5) {
|
||||
@ -618,7 +618,7 @@ class Payslip extends BaseController
|
||||
|
||||
$Festival_Bonus = isset($j['Festival Bonus in ₹']) ? $j['Festival Bonus in ₹'] : 0.00;
|
||||
$tds_Deductions = isset($j['TDS Deductions in ₹']) ? $j['TDS Deductions in ₹'] : 0.00;
|
||||
$Estimate = isset($j['Estimate in ₹']) ? $j['Estimate in ₹'] : 0.00;
|
||||
$Estimate = isset($j['Net Salary ₹']) ? $j['Net Salary ₹'] : 0.00;
|
||||
$Created_By = $this->session->get('userId');
|
||||
|
||||
if($is_driver == 0){
|
||||
|
||||
@ -21,7 +21,7 @@ class Driver_model extends Model
|
||||
{
|
||||
$this->table = 't_driver_attendance';
|
||||
$this->primaryKey = 'driver_attendance_id';
|
||||
$this->allowedFields = ['driver_attendance_id','date','driver_id','invoice_number','vehicle_number','load_type','salary_amount','food_amount','created_on','created_by','updated_on','updated_by','isactive','diesel_amount','shed_amount'];
|
||||
$this->allowedFields = ['driver_attendance_id','date','driver_id','invoice_number','vehicle_number','load_type','salary_amount','food_amount','created_on','created_by','updated_on','updated_by','isactive','diesel_amount','shed_amount','type','customer','quantity'];
|
||||
return $this;
|
||||
}
|
||||
|
||||
@ -92,7 +92,7 @@ class Driver_model extends Model
|
||||
|
||||
}
|
||||
|
||||
function gatheredCustAndQty($invoice){
|
||||
function gatheredInvoiceCustAndQty($invoice){
|
||||
$builder = $this->db->table('ip_invoices')
|
||||
->select('invoice_number,received_qty as quantity,ip_clients.client_name as customer')
|
||||
->join('ip_clients', 'ip_clients.client_id = ip_invoices.client_id', 'left')
|
||||
@ -100,8 +100,29 @@ class Driver_model extends Model
|
||||
$query = $builder->get();
|
||||
return $query->getRowArray() ?: [];
|
||||
}
|
||||
|
||||
function gatheredIgrCustAndQty($igr){
|
||||
|
||||
$builder = $this->db->table('t_igr_master as mstr')
|
||||
->select('mstr.IGRNO,mstr.DeliveryChellanOrInvoiceNo,sum(dtls.QuantityAsPerInvoice) as quantity,splr.supplierName as customer')
|
||||
->join('t_igr_details dtls', 'dtls.IGRNO = mstr.IGRNO', 'left')
|
||||
->join('t_purchaseorder_master pomstr', 'pomstr.PONO = mstr.PONO', 'left')
|
||||
->join('t_supplierdetailsn splr', 'splr.SupplierID = pomstr.SupplierID', 'left')
|
||||
->where('mstr.IGRNO', $igr);
|
||||
$query = $builder->get();
|
||||
$result = $query->getRowArray();
|
||||
if (empty($result['IGRNO'])) {
|
||||
return [];
|
||||
}else{
|
||||
return $result ?: [];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function driverAttendanceForMonthlyPayInputs($from,$to){
|
||||
// list($year,$month,$date) = explode('-', get_current_date());
|
||||
// $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')
|
||||
@ -115,6 +136,7 @@ class Driver_model extends Model
|
||||
->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')
|
||||
->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();
|
||||
|
||||
@ -26,14 +26,16 @@ class Ipinvoice_model extends Model
|
||||
ip_products.product_name, ip_invoice_items.item_price, ip_products.cgst, ip_products.sgst,
|
||||
ip_invoice_items.item_quantity, ip_invoice_items.item_price, ip_invoice_items.item_name, ip_invoice_items.item_quantity,ip_invoice_items.hsn_or_sac,
|
||||
ip_invoice_amounts.invoice_total, ip_invoice_amounts.invoice_item_subtotal, ip_invoice_amounts.invoice_item_tax_total
|
||||
,ip_invoice_attachment.file_name , ip_invoices.received_qty')
|
||||
,ip_invoice_attachment.file_name , ip_invoices.received_qty , VN.invoice_custom_fieldvalue as vehicle_no , DN.invoice_custom_fieldvalue as deiver_name')
|
||||
->join('ip_payment_methods', 'ip_invoices.payment_method = ip_payment_methods.payment_method_id', 'left')
|
||||
->join('ip_clients', 'ip_invoices.client_id = ip_clients.client_id', 'left')
|
||||
->join('ip_users', 'ip_invoices.user_id = ip_users.user_id', 'left')
|
||||
->join('ip_invoice_items', 'ip_invoices.invoice_id = ip_invoice_items.invoice_id', 'left')
|
||||
->join('ip_products', 'ip_invoice_items.item_product_id = ip_products.product_id', 'left')
|
||||
->join('ip_invoice_amounts', 'ip_invoices.invoice_id = ip_invoice_amounts.invoice_id', 'left')
|
||||
->join('ip_invoice_attachment', 'ip_invoices.invoice_id = ip_invoice_attachment.invoice_id and ip_invoice_attachment.is_active = 1' , 'left');
|
||||
->join('ip_invoice_attachment', 'ip_invoices.invoice_id = ip_invoice_attachment.invoice_id and ip_invoice_attachment.is_active = 1' , 'left')
|
||||
->join('ip_invoice_custom VN', 'ip_invoices.invoice_id = VN.invoice_id and VN.invoice_custom_fieldid = 8' , 'left')
|
||||
->join('ip_invoice_custom DN', 'ip_invoices.invoice_id = DN.invoice_id and DN.invoice_custom_fieldid = 58' , 'left');
|
||||
$builder->where('ip_invoices.invoice_date_created >=', $fromDate );
|
||||
$builder->where('ip_invoices.invoice_date_created <=', $toDate );
|
||||
$builder->orderBy('ip_invoices.invoice_number', 'DESC');
|
||||
|
||||
@ -366,12 +366,13 @@ $currentday = date('d');
|
||||
$flag2 = 0;
|
||||
$todayflag = 0;
|
||||
} ?>
|
||||
<th class="celda_encabezado_general">Total Hrs</th>
|
||||
<th class="celda_encabezado_general">OT Hrs</th>
|
||||
<th class="celda_encabezado_general">Paid Leave</th>
|
||||
|
||||
<th class="celda_encabezado_general">Days Worked</th>
|
||||
<th class="celda_encabezado_general">Absent</th>
|
||||
<th class="celda_encabezado_general">Total Sunday</th>
|
||||
<th class="celda_encabezado_general">Paid Leave</th>
|
||||
<th class="celda_encabezado_general"> Sunday</th>
|
||||
<th class="celda_encabezado_general">Worked Hrs</th>
|
||||
<th class="celda_encabezado_general">OT Hrs</th>
|
||||
|
||||
</tr>
|
||||
|
||||
@ -460,27 +461,8 @@ $currentday = date('d');
|
||||
$flag2 = 0;
|
||||
$todayflag = 0;
|
||||
} ?>
|
||||
<td class="celda_normal summary" id="<?php echo $row . 'TH'; ?>">
|
||||
<?php if (!empty($a->Total_WHrs)) {
|
||||
echo $a->Total_WHrs;
|
||||
} else {
|
||||
echo "0.00";
|
||||
} ?>
|
||||
</td>
|
||||
<td class="celda_normal summary" id="<?php echo $row . 'OTH'; ?>">
|
||||
<?php if (!empty($a->Total_OTHrs)) {
|
||||
echo $a->Total_OTHrs;
|
||||
} else {
|
||||
echo "0.00";
|
||||
} ?>
|
||||
</td>
|
||||
<td class="celda_normal summary" id="<?php echo $row . 'PL'; ?>">
|
||||
<?php if (!empty($noofpublicholidays)) {
|
||||
echo number_format($noofpublicholidays, 2, '.', '.');
|
||||
} else {
|
||||
echo "0.00";
|
||||
} ?>
|
||||
</td>
|
||||
|
||||
|
||||
<td class="celda_normal summary" id="<?php echo $row . 'DW'; ?>">
|
||||
<?php if (!empty($a->Days_Worked)) {
|
||||
echo $a->Days_Worked;
|
||||
@ -495,6 +477,13 @@ $currentday = date('d');
|
||||
echo "0.00";
|
||||
} ?>
|
||||
</td>
|
||||
<td class="celda_normal summary" id="<?php echo $row . 'PL'; ?>">
|
||||
<?php if (!empty($noofpublicholidays)) {
|
||||
echo number_format($noofpublicholidays, 2, '.', '.');
|
||||
} else {
|
||||
echo "0.00";
|
||||
} ?>
|
||||
</td>
|
||||
<td class="celda_normal summary" id="<?php echo $row . 'TS'; ?>">
|
||||
<?php if (!empty($noofsundays)) {
|
||||
echo $noofsundays;
|
||||
@ -502,6 +491,21 @@ $currentday = date('d');
|
||||
echo "0";
|
||||
} ?>
|
||||
</td>
|
||||
<td class="celda_normal summary" id="<?php echo $row . 'TH'; ?>">
|
||||
<?php if (!empty($a->Total_WHrs)) {
|
||||
echo $a->Total_WHrs;
|
||||
} else {
|
||||
echo "0.00";
|
||||
} ?>
|
||||
</td>
|
||||
<td class="celda_normal summary" id="<?php echo $row . 'OTH'; ?>">
|
||||
<?php if (!empty($a->Total_OTHrs)) {
|
||||
echo $a->Total_OTHrs;
|
||||
} else {
|
||||
echo "0.00";
|
||||
} ?>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
<?php } ?>
|
||||
|
||||
|
||||
@ -60,7 +60,7 @@ $datefordropdown = format_date($datefordropdown, 0, 'M-Y');
|
||||
<div class="col-4">
|
||||
<?php $today = date('M-Y'); ?>
|
||||
<input type="text" value="<?php echo $datefordropdown; ?>" name="month_year" class="form-control monthpicker" id="month_year">
|
||||
<input type="hidden" name="gobal_driver_id" id="gobal_driver_id" value="<?php echo $gobal_driver_id; ?>" >
|
||||
<input type="hidden" name="drv_id" id="drv_id" value="<?php echo $input_driver_id; ?>" >
|
||||
</div>
|
||||
|
||||
<div class="col-4">
|
||||
@ -126,7 +126,7 @@ $datefordropdown = format_date($datefordropdown, 0, 'M-Y');
|
||||
<i class="fas fa-edit"></i>
|
||||
</a>
|
||||
|
||||
<a onclick="confirmDelete(event)" style="cursor:pointer;" href="<?php echo base_url() . 'deleteDriverAttendance?driverAttendanceId=' . esc($record['driver_attendance_id']).'&gobal_driver_id='.esc($record['driver_id']).'&month_year='.esc($datefordropdown); ?>">
|
||||
<a onclick="confirmDelete(event)" style="cursor:pointer;" href="<?php echo base_url() . 'deleteDriverAttendance?driverAttendanceId=' . esc($record['driver_attendance_id']).'&drv_id='.esc($record['driver_id']).'&month_year='.esc($datefordropdown); ?>">
|
||||
|
||||
<i class="fa fa-trash"></i>
|
||||
</a>
|
||||
@ -244,7 +244,19 @@ $datefordropdown = format_date($datefordropdown, 0, 'M-Y');
|
||||
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
|
||||
<label class="form" for="category_type">Category</label>
|
||||
<select class="form-control" id="category_type" name="category_type" onchange="resetthefields();">
|
||||
<option value="">Select</option>
|
||||
<option value="IGR">IGR</option>
|
||||
<option value="INVOICE">INVOICE</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- second row -->
|
||||
<div class="row mt-2">
|
||||
<div class="col-md-4">
|
||||
<label class="form" for="invoice_number">Invoice Number</label>
|
||||
<input type="text" class="form-control" id="invoice_number" name="invoice_number" onchange="customerandquantity();">
|
||||
<!-- <select class="form-control" id="invoice_number" name="invoice_number">
|
||||
@ -253,19 +265,13 @@ $datefordropdown = format_date($datefordropdown, 0, 'M-Y');
|
||||
<option value="<?= $value->invoice_id; ?>"> <?= $value->invoice_number; ?> </option>
|
||||
<?php } ?>
|
||||
</select> -->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- second row -->
|
||||
<div class="row mt-2">
|
||||
<div class="col-md-6">
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<label class="form" for="customer">Customer</label>
|
||||
<input type="text" class="form-control" id="customer" name="customer" readonly>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<div class="col-md-4">
|
||||
<label class="form" for="quantity">Quantity</label>
|
||||
<input type="text" class="form-control" id="quantity" name="quantity" readonly>
|
||||
</div>
|
||||
@ -354,20 +360,20 @@ $datefordropdown = format_date($datefordropdown, 0, 'M-Y');
|
||||
|
||||
$("#driver_name").val("<?php echo $page_driver_name; ?>");
|
||||
let urlParams = new URLSearchParams(window.location.search);
|
||||
let gobal_driver_id = urlParams.get("gobal_driver_id");
|
||||
if (gobal_driver_id !== null) {
|
||||
$("#gobal_driver_id").val(gobal_driver_id);
|
||||
$("#driver_id").val(gobal_driver_id);
|
||||
let input_driver_id = urlParams.get("drv_id");
|
||||
if (input_driver_id !== null) {
|
||||
$("#drv_id").val(input_driver_id);
|
||||
$("#driver_id").val(input_driver_id);
|
||||
}
|
||||
else {
|
||||
$("#gobal_driver_id").val("<?php echo $gobal_driver_id; ?>");
|
||||
$("#driver_id").val("<?php echo $gobal_driver_id; ?>");
|
||||
$("#drv_id").val("<?php echo $input_driver_id; ?>");
|
||||
$("#driver_id").val("<?php echo $input_driver_id; ?>");
|
||||
}
|
||||
let gobal_diesel_amount = "<?php echo $gobal_diesel_amount; ?>";
|
||||
let gobal_shed_amount = "<?php echo $gobal_shed_amount; ?>";
|
||||
if(gobal_diesel_amount != '' || gobal_shed_amount != ''){
|
||||
$('input[data-column="diesel_amount"]').val(parseFloat(gobal_diesel_amount) || 0);
|
||||
$('input[data-column="shed_amount"]').val(parseFloat(gobal_shed_amount) || 0);
|
||||
let input_diesel_amount = "<?php echo $input_diesel_amount; ?>";
|
||||
let input_shed_amount = "<?php echo $input_shed_amount; ?>";
|
||||
if(input_diesel_amount != '' || input_shed_amount != ''){
|
||||
$('input[data-column="diesel_amount"]').val(parseFloat(input_diesel_amount) || 0);
|
||||
$('input[data-column="shed_amount"]').val(parseFloat(input_shed_amount) || 0);
|
||||
calculateTotal();
|
||||
}
|
||||
|
||||
@ -443,13 +449,16 @@ $datefordropdown = format_date($datefordropdown, 0, 'M-Y');
|
||||
driver_attendance_id:$('#driver_attendance_id').val() ? $('#driver_attendance_id').val() : 0,
|
||||
date: $('#date').val(),
|
||||
driver_id: $('#driver_id').val(),
|
||||
category_type: $('#category_type').val(),
|
||||
customer: $('#customer').val(),
|
||||
quantity: $('#quantity').val(),
|
||||
invoice_number: $('#invoice_number').val(),
|
||||
vehicle_number: $('#vehicle_number').val(),
|
||||
load_type: $('#load_type').val(),
|
||||
salary_amount: $('#salary_amount').val(),
|
||||
food_amount: $('#food_amount').val(),
|
||||
diesel_amount: "<?php echo $gobal_diesel_amount; ?>",
|
||||
shed_amount: "<?php echo $gobal_shed_amount; ?>"
|
||||
diesel_amount: "<?php echo $input_diesel_amount; ?>",
|
||||
shed_amount: "<?php echo $input_shed_amount; ?>"
|
||||
};
|
||||
$('#loader').show();
|
||||
|
||||
@ -552,8 +561,8 @@ $datefordropdown = format_date($datefordropdown, 0, 'M-Y');
|
||||
$(document).on('blur', '.editable', function() {
|
||||
var column = $(this).data('column'); // Get the column name (diesel or shed)
|
||||
var value = $(this).val(); // Get the updated value
|
||||
let gobal_driver_id = urlParams.get("gobal_driver_id");
|
||||
let gobal_date = '';
|
||||
let input_driver_id = urlParams.get("drv_id");
|
||||
let input_date = '';
|
||||
|
||||
let param_month_year = urlParams.get("month_year");
|
||||
let param_date = urlParams.get("date");
|
||||
@ -561,10 +570,10 @@ $datefordropdown = format_date($datefordropdown, 0, 'M-Y');
|
||||
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('-');
|
||||
gobal_date = `01-${monthMap[month]}-${year}`;
|
||||
input_date = `01-${monthMap[month]}-${year}`;
|
||||
|
||||
}else{
|
||||
gobal_date = param_date;
|
||||
input_date = param_date;
|
||||
}
|
||||
|
||||
// Send data to the server using AJAX
|
||||
@ -574,8 +583,8 @@ $datefordropdown = format_date($datefordropdown, 0, 'M-Y');
|
||||
data: {
|
||||
column: column,
|
||||
value: value,
|
||||
date: gobal_date,
|
||||
empid:gobal_driver_id
|
||||
date: input_date,
|
||||
empid:input_driver_id
|
||||
},
|
||||
success: function(response) {
|
||||
console.log('Data saved successfully:', response);
|
||||
@ -628,8 +637,10 @@ $datefordropdown = format_date($datefordropdown, 0, 'M-Y');
|
||||
var type = $('#load_type').val();
|
||||
if (type == 'Load') {
|
||||
$('#salary_amount').val(1300);
|
||||
$('#food_amount').val(100);
|
||||
} else if (type == 'Waste Core') {
|
||||
$('#salary_amount').val(1050);
|
||||
$('#food_amount').val(100);
|
||||
}
|
||||
fetchSalary();
|
||||
}
|
||||
@ -643,20 +654,25 @@ $datefordropdown = format_date($datefordropdown, 0, 'M-Y');
|
||||
}
|
||||
|
||||
function customerandquantity(){
|
||||
if ($('#invoice_number').val() === '') {
|
||||
if ($('#category_type').val() === '') {
|
||||
alert('Please Select the Valid Type');
|
||||
return;
|
||||
}
|
||||
else if ($('#invoice_number').val() === '') {
|
||||
alert('Please Enter the Valid Invoice Number');
|
||||
return;
|
||||
}else{
|
||||
|
||||
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: "<?php echo base_url(); ?>gatheredCustAndQty",
|
||||
data: {
|
||||
invoiceNumber : $('#invoice_number').val()
|
||||
invoiceNumber : $('#invoice_number').val(),
|
||||
type : $('#category_type').val()
|
||||
},
|
||||
success: function (data) {
|
||||
console.log('got the result: ' + data);
|
||||
console.log(data);
|
||||
if (data) {
|
||||
if(data == ""){
|
||||
alert('Please Enter the Valid Invoice Number');
|
||||
@ -679,5 +695,11 @@ $datefordropdown = format_date($datefordropdown, 0, 'M-Y');
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function resetthefields(){
|
||||
$('#invoice_number').val("");
|
||||
$('#customer').val("");
|
||||
$('#quantity').val("");
|
||||
}
|
||||
</script>
|
||||
|
||||
@ -55,7 +55,7 @@
|
||||
<td>
|
||||
<?php if($record->is_driver){ ?>
|
||||
|
||||
<a title="Trip Details" style="cursor:pointer;" href="<?= base_url() . 'loadDriverAttendance?gobal_driver_id=' . $record->EmpID.'&date='.$cdate; ?>">
|
||||
<a title="Trip Details" style="cursor:pointer;" href="<?= base_url() . 'loadDriverAttendance?drv_id=' . $record->EmpID; ?>">
|
||||
<i class="fa fa-truck"></i>
|
||||
</a>
|
||||
<?php } ?>
|
||||
|
||||
@ -138,7 +138,7 @@
|
||||
<td><a class="a_tag_link" href="<?php echo base_url() . 'employeedetails/ViewEmployee/?EmpID=' . $record->EmpID; ?>" data-toggle="tooltip" title="<?php echo $record->EmpID; ?> - Click here to view Employee details"><?php echo $record->EmpID ?> </a></u>
|
||||
<?php if($record->is_driver){ ?>
|
||||
|
||||
<a title="Trip Details" style="cursor:pointer;" href="<?= base_url() . 'loadDriverAttendance?gobal_driver_id=' . $record->EmpID.'&date='.$cdate; ?>">
|
||||
<a title="Trip Details" style="cursor:pointer;" href="<?= base_url() . 'loadDriverAttendance?drv_id=' . $record->EmpID; ?>">
|
||||
<i class="fa fa-truck"></i>
|
||||
</a>
|
||||
<?php } ?>
|
||||
|
||||
@ -123,10 +123,11 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="row" >
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="card" id="fullscreenDiv">
|
||||
<div class="card-body" >
|
||||
<div id="successMessage" style="display: none; position: absolute; top: 10px; left: 50%; transform: translateX(-50%);background: green; color: white; padding: 10px; border-radius: 5px; z-index: 1000;"></div>
|
||||
|
||||
<div class="box">
|
||||
<div class="box-header">
|
||||
@ -211,17 +212,22 @@
|
||||
<?php echo form_dropdown('monthyear', $ot, set_value('monthyear', $currentselection), 'id="monthyear"', 'class="form-control select2'); ?>
|
||||
</form>
|
||||
</div>
|
||||
<div class="col-9 text-right d-flex" style="justify-content: end;" id="savebutton">
|
||||
|
||||
<input type="text" id="searchInput" placeholder="Search..." style="padding: 8px;margin-bottom: 10px;width: 250px;border: 1px solid #ccc;border-radius: 5px;margin-right:15px;">
|
||||
|
||||
<!-- <input type="button" id="submit" value="Save" class="btn btn-success" onclick="getAllData();" style="margin-top:0px;"> -->
|
||||
|
||||
<i id="exportButton" class="fas fa-download download-icon" style="margin-right: 15px;margin-top: 8px;font-size:25px;" title="Export Excel"></i>
|
||||
|
||||
<div class="col-3 ">
|
||||
<i id="exportButton" class="fas fa-download download-icon" style="font-size: x-large; margin-top:12px;" title="Export Excel"></i>
|
||||
</div>
|
||||
<i class="fe-maximize noti-icon" onclick="toggleDivFullscreen()" style="margin-right: 15px;margin-top: 5px;font-size: 28px;" title="Full screen view"></i>
|
||||
|
||||
<div class="col-6 text-right" id="savebutton">
|
||||
<input type="button" id="submit" value="Save" class="btn btn-success" onclick="getAllData();" style="margin-top:0px;">
|
||||
<i class="fas fa-save" onclick="getAllData();" style="margin-right: 15px;margin-top: 5px;font-size:28px;" title="Save"></i>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="table-responsive" style="overflow-x:scroll;">
|
||||
<div class="table-responsive" id="table-responsive" style="overflow-x:scroll;">
|
||||
<table id="monthlylistings" class="table table-bordered table-hover fht-table"
|
||||
style="background-color:#fff;font-size:12px;white-space: nowrap;">
|
||||
<thead style="background-color: #ddd;">
|
||||
@ -233,7 +239,7 @@
|
||||
<th class="celda_encabezado_general">DOJ</th>
|
||||
<th class="celda_encabezado_general">Designation</th>
|
||||
<th class="celda_encabezado_general">Total Days</th>
|
||||
<th class="celda_encabezado_general">Number Of Trips</th>
|
||||
<!-- <th class="celda_encabezado_general">Number Of Trips</th> -->
|
||||
<th class="celda_encabezado_general">Days Worked</th>
|
||||
<th class="celda_encabezado_general">LOP Days</th>
|
||||
<th class="celda_encabezado_general">Paid Leave</th>
|
||||
@ -252,7 +258,7 @@
|
||||
<th class="celda_encabezado_general">Auto Loan Due ₹</th>
|
||||
<th class="celda_encabezado_general">TDS Deductions in ₹</th>
|
||||
<th class="celda_encabezado_general">Festival Bonus in ₹</th>
|
||||
<th class="celda_encabezado_general">Estimate in ₹</th>
|
||||
<th class="celda_encabezado_general">Net Salary ₹</th>
|
||||
|
||||
|
||||
</tr>
|
||||
@ -295,7 +301,7 @@
|
||||
</td>
|
||||
|
||||
<td style="max-width:80px;text-align:center;"><?php echo $record->NoofDays; ?></td>
|
||||
<td style="max-width:80px;text-align:center;"><?php echo 0; ?></td>
|
||||
<!-- <td style="max-width:80px;text-align:center;"><?php echo 0; ?></td> -->
|
||||
<td id="dayWork<?php echo $index ?>"
|
||||
<?php if (empty($record->Key)) {
|
||||
echo "contenteditable='false';";
|
||||
@ -352,11 +358,13 @@
|
||||
} ?>
|
||||
</td>
|
||||
|
||||
<td id="ttlsalary<?php echo $index ?>" style="max-width:80px;text-align:right;"><?php echo $record->TotalSalary; ?></td>
|
||||
<td id="ttlsalary<?php echo $index ?>" style="max-width:80px;text-align:right;">
|
||||
<?php echo $record->TotalSalary; $totalsalary[] = $record->TotalSalary; ?>
|
||||
</td>
|
||||
|
||||
<td style="max-width:80px;text-align:right;">
|
||||
<?php $perDaySalary = $record->TotalSalary / $record->NoofDays;
|
||||
echo number_format($perDaySalary, 2, '.', ''); ?>
|
||||
echo number_format($perDaySalary, 2, '.', ''); $totalperdaySalary[] = $perDaySalary; ?>
|
||||
</td>
|
||||
|
||||
<td style="max-width:80px;text-align:right;">
|
||||
@ -366,30 +374,38 @@
|
||||
|
||||
<td style="max-width:80px;text-align:right;">
|
||||
<?php $perHrSalary = $perDaySalary / 8;
|
||||
echo number_format($perHrSalary, 2); ?>
|
||||
echo number_format($perHrSalary, 2); $totalperhrSalary[] = $perHrSalary; ?>
|
||||
</td>
|
||||
|
||||
<td style="max-width:80px;text-align:right;"><?php echo number_format($workedSalary, 2, '.', ''); ?></td>
|
||||
<td style="max-width:80px;text-align:right;">
|
||||
<?php echo number_format($workedSalary, 2, '.', ''); $totalworkedSalary[] = $workedSalary; ?>
|
||||
</td>
|
||||
|
||||
<td id="bassalary<?php echo $index ?>" style="max-width:80px;text-align:right;">
|
||||
<?php $basicWorked = $workedSalary * 70 / 100;
|
||||
echo number_format($basicWorked, 2, '.', ''); ?>
|
||||
echo number_format($basicWorked, 2, '.', ''); $totalbasic[] = $basicWorked; ?>
|
||||
</td>
|
||||
|
||||
<td id="hrasalary<?php echo $index ?>" style="max-width:80px;text-align:right;">
|
||||
<?php $hraWorked = $workedSalary * 30 / 100;
|
||||
echo number_format($hraWorked, 2, '.', ''); ?>
|
||||
echo number_format($hraWorked, 2, '.', ''); $totalhra[] = $hraWorked; ?>
|
||||
</td>
|
||||
|
||||
<td id="grosalary<?php echo $index ?>" style="max-width:80px;text-align:right;">
|
||||
<?php echo number_format($basicWorked + $hraWorked, 2, '.', ''); ?>
|
||||
<?php echo number_format($basicWorked + $hraWorked, 2, '.', ''); $totalgross[] = $basicWorked + $hraWorked; ?>
|
||||
</td>
|
||||
|
||||
<td id="esiAmt<?php echo $index ?>" style="max-width:80px;text-align:right;"> <?php echo $esi[$i]; ?> </td>
|
||||
<td id="esiAmt<?php echo $index ?>" style="max-width:80px;text-align:right;">
|
||||
<?php echo $esi[$i]; $totalesi[] = $esi[$i]; ?>
|
||||
</td>
|
||||
|
||||
<td id="pfAmt<?php echo $index ?>" style="max-width:80px;text-align:right;"> <?php echo $pf[$i]; ?> </td>
|
||||
<td id="pfAmt<?php echo $index ?>" style="max-width:80px;text-align:right;">
|
||||
<?php echo $pf[$i]; $totalpf[] = $pf[$i]; ?>
|
||||
</td>
|
||||
|
||||
<td style="max-width:80px;text-align:right;"> <?php echo $over_time[$i]; ?> </td>
|
||||
<td style="max-width:80px;text-align:right;">
|
||||
<?php echo $over_time[$i]; $totalovertime[] = $over_time[$i]; ?>
|
||||
</td>
|
||||
|
||||
<td id="monthDue<?php echo $index ?>" onkeypress="return isNumber(event);" onkeyup="changeInput(event);"
|
||||
<?php if ($record->is_payslip_generated == 0) { echo "contenteditable='true';"; } ?>
|
||||
@ -539,9 +555,9 @@
|
||||
<?php echo $record->total_cal_days; ?>
|
||||
</td>
|
||||
|
||||
<td style="max-width:80px;text-align:center;">
|
||||
<!-- <td style="max-width:80px;text-align:center;">
|
||||
<?php echo $record->no_of_loads." (trip)"; ?>
|
||||
</td>
|
||||
</td> -->
|
||||
|
||||
<td id="dayWork<?php echo $inx ?>" style="text-align:center;">
|
||||
<?php echo number_format($record->unique_days, 2, '.', ''); ?>
|
||||
@ -559,14 +575,14 @@
|
||||
<?php echo number_format(0.00, 2, '.', ''); ?>
|
||||
</td>
|
||||
|
||||
<td id="ttlsalary<?php echo $inx ?>" style="max-width:80px;text-align:right;">
|
||||
<?php echo number_format($sum_of_amount, 2, '.', ''); ?>
|
||||
<td id="ttlsalary<?php echo $inx ?>" style="max-width:80px;text-align:right;" data-empid="<?php echo $record->EmpID; ?>" onclick="openDriverLoad(this)">
|
||||
<?php echo number_format($sum_of_amount, 2, '.', ''); $totalsalary[] = $sum_of_amount; ?>
|
||||
</td>
|
||||
|
||||
<td style="max-width:80px;text-align:right;">
|
||||
<?php
|
||||
$worked_amt = $sum_of_amount / $record->total_cal_days ;
|
||||
echo number_format($worked_amt, 2, '.', ''); ?>
|
||||
echo number_format($worked_amt, 2, '.', ''); $totalperdaySalary[] = $worked_amt; ?>
|
||||
</td>
|
||||
|
||||
<td style="max-width:80px;text-align:right;">
|
||||
@ -575,31 +591,35 @@
|
||||
|
||||
<td style="max-width:80px;text-align:right;">
|
||||
<?php $hr_amt = $worked_amt/8;
|
||||
echo number_format($hr_amt, 2, '.', ''); ?>
|
||||
echo number_format($hr_amt, 2, '.', ''); $totalperhrSalary[] = $hr_amt; ?>
|
||||
</td>
|
||||
|
||||
<td style="max-width:80px;text-align:right;">
|
||||
<!-- $record->driver_salary_amount -->
|
||||
<?php echo number_format($sum_of_amount, 2, '.', ''); ?>
|
||||
<?php echo number_format($sum_of_amount, 2, '.', ''); $totalworkedSalary[] = $sum_of_amount; ?>
|
||||
</td>
|
||||
|
||||
<td id="bassalary<?php echo $inx ?>" style="max-width:80px;text-align:right;">
|
||||
<?php
|
||||
echo number_format($basic_worked, 2, '.', ''); ?>
|
||||
echo number_format($basic_worked, 2, '.', ''); $totalbasic[] = $basic_worked; ?>
|
||||
</td>
|
||||
|
||||
<td id="hrasalary<?php echo $inx ?>" style="max-width:80px;text-align:right;">
|
||||
<?php
|
||||
echo number_format($hra_worked, 2, '.', ''); ?>
|
||||
echo number_format($hra_worked, 2, '.', ''); $totalhra[] = $hra_worked; ?>
|
||||
</td>
|
||||
|
||||
<td id="grosalary<?php echo $inx ?>" style="max-width:80px;text-align:right;">
|
||||
<?php echo number_format($basic_worked + $hra_worked, 2, '.', ''); ?>
|
||||
<?php echo number_format($basic_worked + $hra_worked, 2, '.', ''); $totalgross[] = $basic_worked + $hra_worked; ?>
|
||||
</td>
|
||||
|
||||
<td id="esiAmt<?php echo $inx ?>" style="max-width:80px;text-align:right;"> <?php echo $record->esi_amount; ?> </td>
|
||||
<td id="esiAmt<?php echo $inx ?>" style="max-width:80px;text-align:right;">
|
||||
<?php echo $record->esi_amount; $totalesi[] = $record->esi_amount; ?>
|
||||
</td>
|
||||
|
||||
<td id="pfAmt<?php echo $inx ?>" style="max-width:80px;text-align:right;"> <?php echo $record->pf_amount; ?> </td>
|
||||
<td id="pfAmt<?php echo $inx ?>" style="max-width:80px;text-align:right;">
|
||||
<?php echo $record->pf_amount; $totalpf[] = $record->pf_amount; ?>
|
||||
</td>
|
||||
|
||||
<td style="max-width:80px;text-align:right;">
|
||||
<?php echo number_format(0.00, 2, '.', ''); ?>
|
||||
@ -683,9 +703,40 @@
|
||||
<tr>
|
||||
<th></th> <th></th> <th></th> <th></th> <th></th>
|
||||
<th></th> <th></th> <th></th> <th></th> <th></th>
|
||||
<th></th> <th></th> <th></th> <th></th> <th></th>
|
||||
<th></th> <th></th> <th></th> <th></th> <th></th>
|
||||
<th></th> <th>Total</th>
|
||||
|
||||
<th style="text-align:right;">
|
||||
<?php echo isset($totalsalary) ? number_format(array_sum($totalsalary), 2) : ''; ?>
|
||||
</th>
|
||||
<th style="text-align:right;">
|
||||
<?php echo isset($totalperdaySalary) ? number_format(array_sum($totalperdaySalary), 2) : ''; ?>
|
||||
</th>
|
||||
<th style="text-align:right;">
|
||||
<?php echo isset($totalworkedSalary) ? number_format(array_sum($totalworkedSalary), 2) : ''; ?>
|
||||
</th>
|
||||
<th style="text-align:right;">
|
||||
<?php echo isset($totalperhrSalary) ? number_format(array_sum($totalperhrSalary), 2) : ''; ?>
|
||||
</th>
|
||||
<th style="text-align:right;">
|
||||
<?php echo isset($totalworkedSalary) ? number_format(array_sum($totalworkedSalary), 2) : ''; ?>
|
||||
</th>
|
||||
<th style="text-align:right;">
|
||||
<?php echo isset($totalbasic) ? number_format(array_sum($totalbasic), 2) : ''; ?>
|
||||
</th>
|
||||
<th style="text-align:right;">
|
||||
<?php echo isset($totalhra) ? number_format(array_sum($totalhra), 2) : ''; ?>
|
||||
</th>
|
||||
<th style="text-align:right;">
|
||||
<?php echo isset($totalgross) ? number_format(array_sum($totalgross), 2) : ''; ?>
|
||||
</th>
|
||||
<th style="text-align:right;">
|
||||
<?php echo isset($totalesi) ? number_format(array_sum($totalesi), 2) : ''; ?>
|
||||
</th>
|
||||
<th style="text-align:right;">
|
||||
<?php echo isset($totalpf) ? number_format(array_sum($totalpf), 2) : ''; ?>
|
||||
</th>
|
||||
<th style="text-align:right;">
|
||||
<?php echo isset($totalovertime) ? number_format(array_sum($totalovertime), 2) : ''; ?>
|
||||
</th>
|
||||
<th id="monthloan" style="text-align:right;">
|
||||
<?php echo isset($totalmonthloan) ? number_format(array_sum($totalmonthloan), 2) : ''; ?>
|
||||
</th>
|
||||
@ -722,7 +773,7 @@
|
||||
</div> <!-- container -->
|
||||
</div> <!-- content -->
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript" src="<?php echo base_url(); ?>public/assets/js/common.js" charset="utf-8"></script>
|
||||
@ -898,7 +949,8 @@ $(document).ready(function () {
|
||||
|
||||
if (data) {
|
||||
$('#loader').hide();
|
||||
alert(data);
|
||||
// alert(data);
|
||||
showMessage(data);
|
||||
}
|
||||
|
||||
}
|
||||
@ -1274,6 +1326,75 @@ $(document).ready(function () {
|
||||
|
||||
|
||||
|
||||
function openDriverLoad(element) {
|
||||
var empId = $(element).data("empid"); // Get the empid from clicked element
|
||||
var monthYear = $('#monthyear').val();
|
||||
// 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];
|
||||
|
||||
var baseUrl = "<?= base_url(); ?>"; // Ensure this echoes the correct base URL
|
||||
var requestUrl = baseUrl + "loadDriverAttendance?month_year=" + encodeURIComponent(formattedMonthYear) + "&drv_id=" + encodeURIComponent(empId);
|
||||
|
||||
// Open the URL in a new tab
|
||||
window.open(requestUrl, "_blank");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
function toggleDivFullscreen() {
|
||||
let div = document.getElementById("fullscreenDiv");
|
||||
let tableResponsive = document.getElementById("table-responsive"); // Select the table container inside div
|
||||
|
||||
|
||||
|
||||
if (!document.fullscreenElement) {
|
||||
div.requestFullscreen().then(() => {
|
||||
div.style.width = "100vw"; // Full viewport width
|
||||
div.style.height = "100vh"; // Full viewport height
|
||||
|
||||
// If .table-responsive exists, set its height to 90vh
|
||||
if (tableResponsive) {
|
||||
tableResponsive.style.maxHeight = "90vh";
|
||||
tableResponsive.style.overflowY = "auto"; // Allow scrolling if needed
|
||||
}
|
||||
}).catch(err => console.log("Error enabling fullscreen:", err));
|
||||
} else {
|
||||
document.exitFullscreen().then(() => {
|
||||
div.style.width = "100%";
|
||||
div.style.height = "100%";
|
||||
|
||||
// Reset .table-responsive height when exiting fullscreen
|
||||
if (tableResponsive) {
|
||||
tableResponsive.style.height = "auto";
|
||||
}
|
||||
}).catch(err => console.log("Error exiting fullscreen:", err));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function showMessage(msg) {
|
||||
let msgBox = document.getElementById("successMessage");
|
||||
msgBox.innerText = msg; // Set API message
|
||||
msgBox.style.display = "block";
|
||||
|
||||
// Hide message after 3 seconds
|
||||
setTimeout(() => {
|
||||
msgBox.style.display = "none";
|
||||
}, 3000);
|
||||
}
|
||||
|
||||
$("#searchInput").on("keyup", function () {
|
||||
let value = $(this).val().toLowerCase(); // Convert input to lowercase for case-insensitive search
|
||||
|
||||
$("#table-responsive tbody tr").filter(function () {
|
||||
$(this).toggle($(this).text().toLowerCase().indexOf(value) > -1);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -240,6 +240,8 @@
|
||||
<th>Client Name</th>
|
||||
<th>Product</th>
|
||||
<th>HSN</th>
|
||||
<th>Driver</th>
|
||||
<th>Vehicle</th>
|
||||
<th>Quantity</th>
|
||||
<th> Rec Qty </th>
|
||||
<th>Rate</th>
|
||||
@ -283,6 +285,8 @@
|
||||
<td><?php echo $invoice->client_name ?></td>
|
||||
<td><?php echo $invoice->item_name ?></td>
|
||||
<td><?php echo $invoice->hsn_or_sac ?></td>
|
||||
<td><?php echo $invoice->deiver_name ?></td>
|
||||
<td><?php echo $invoice->vehicle_no ?></td>
|
||||
<td align="right"><?php echo number_format($invoice->item_quantity, 2, '.', ',') ?></td>
|
||||
<td>
|
||||
<a href="#"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user