| Server IP : 13.126.101.145 / Your IP : 216.73.217.33 Web Server : Apache/2.4.52 (Ubuntu) System : Linux ip-11-115-0-196 6.8.0-1039-aws #41~22.04.1-Ubuntu SMP Thu Sep 11 10:54:48 UTC 2025 x86_64 User : www-data ( 33) PHP Version : 8.3.17 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/html/rentals_updated/wp-content/plugins/operators/ |
Upload File : |
<?php
/*
include('../../../wp-config.php');
global $wpdb;
$user_id = $_REQUEST['user_id'];
$user_info = get_userdata($user_id);
$user_name = $user_info->first_name;
$contractID = get_user_meta($user_id, 'contract_id', true);
//$getCustomerData = $wpdb->get_row($wpdb->prepare("SELECT customer_id FROM wp_wc_orders WHERE id = %d AND status = 'wc-opassigned'", $contractID));
$order = wc_get_order($contractID);
$customerId = $order->get_user_id();
$sapcontract = get_post_meta($contractID, 'contract_id', true);
$customerDetails = get_userdata($customerId);
$customer_name = get_usermeta($customerId, 'first_name', true);
$work_location = $order ? $order->get_shipping_city() : '';
if ($order) {
foreach ($order->get_items() as $item_id => $item) {
$product_id = $item->get_product_id(); // Get the product ID
$machine_serialno = get_post_meta($product_id, 'machine_serialno', true); // Get the custom field
$model_number = get_post_meta($product_id, 'model_number', true);
$equipment_number = get_post_meta($product_id, 'equipment_number', true);
$registration_number = get_post_meta($product_id, 'registration_number', true);
}
}
//$equipment_number = get_post_meta($contractID, 'equipment_number', true);
//$equipment_serial_number = get_post_meta($contractID, 'equipment_serial_number', true);
//$registration_number = get_post_meta($contractID, 'registration_number', true);
//$model_no = get_post_meta($contractID, 'model_no', true);
$start_date = $_REQUEST['start_date'];
$end_date = $_REQUEST['end_date'];
$getLogsheetData = $wpdb->get_results($wpdb->prepare(
"SELECT `id`, `equipment_id`, `equipment_no`, `model_no`, `machine_serial_no`, `registration_no`, `operator_id`, `log_date`, `start_time`, `end_time`, `shift`, `working_hour`, `down_hour`, `breakdown`, `fuel`, `log_status`, `log_remarks`, `remarks_by`, `log_created_on`
FROM wp_logsheet
WHERE operator_id = %d
AND log_date BETWEEN %s AND %s",
$user_id,
$start_date,
$end_date
));
$table_name = $wpdb->prefix . 'logsheet'; // Replace with your actual table name
$query = $wpdb->prepare("
SELECT start_smu
FROM $table_name
WHERE log_date = %s
", $start_date);
// Execute the query
$start_smu = $wpdb->get_var($query);
$query = $wpdb->prepare("
SELECT end_smu
FROM $table_name
WHERE log_date = %s
", $end_date);
// Execute the query
$end_smu = $wpdb->get_var($query);
$log_status = $wpdb->query($wpdb->prepare(
"UPDATE $table_name
SET log_status = '1'
WHERE operator_id = %d
AND log_date BETWEEN %s AND %s",
$user_id,
$start_date,
$end_date
));
*/
include('../../../wp-config.php');
global $wpdb;
// Get request parameters
$start_date = $_REQUEST['start_date'];
$end_date = $_REQUEST['end_date'];
$type = isset($_REQUEST['type']) ? $_REQUEST['type'] : 'operator'; // Default to operator type if not specified
if ($type === 'order') {
$order_id = $_REQUEST['order_id'];
$order = wc_get_order($order_id);
$customerId = $order->get_user_id();
$sapcontract = get_post_meta($order_id, 'contract_id', true);
$contractID = $order_id;
// Fetch operator IDs based on order_id and date range
$operators = $wpdb->get_col($wpdb->prepare(
"SELECT DISTINCT operator_id
FROM {$wpdb->prefix}logsheet
WHERE order_id = %d
AND log_date BETWEEN %s AND %s",
$order_id,
$start_date,
$end_date
));
// Convert operator IDs into a comma-separated list for $user_id
$user_id = implode(",", $operators);
// Fetch user names corresponding to each operator ID
$user_names = [];
foreach ($operators as $operator_id) {
$user_info = get_userdata($operator_id);
if ($user_info) {
$user_names[] = $user_info->first_name;
}
}
// Join the user names with commas for $user_name
$user_name = implode(", ", $user_names);
$operator_names = [];
foreach ($operators as $operator_id) {
$user_info = get_userdata($operator_id);
if ($user_info) {
$operator_names[$operator_id] = $user_info->first_name;
}
}
} else {
$user_id = $_REQUEST['user_id'];
$user_info = get_userdata($user_id);
$user_name = $user_info->first_name;
$contractID = get_user_meta($user_id, 'contract_id', true);
$order = wc_get_order($contractID);
$customerId = $order->get_user_id();
$sapcontract = get_post_meta($contractID, 'contract_id', true);
}
// Common order data retrieval
$customerDetails = get_userdata($customerId);
$customer_name = get_usermeta($customerId, 'first_name', true);
$work_location = $order ? $order->get_shipping_city() : '';
// Get product details
if ($order) {
foreach ($order->get_items() as $item_id => $item) {
$product_id = $item->get_product_id();
$machine_serialno = get_post_meta($product_id, 'equipment_serial_number', true);
$model_number = get_post_meta($product_id, 'model_number', true);
$equipment_number = get_post_meta($product_id, 'equipment_number', true);
$registration_number = get_post_meta($product_id, 'registration_number', true);
}
}
// Modify the query based on type
if ($type === 'order') {
$getLogsheetData = $wpdb->get_results($wpdb->prepare(
"SELECT `id`, `equipment_id`, `equipment_no`, `model_no`, `machine_serial_no`,
`registration_no`, `operator_id`, `log_date`, `start_time`, `end_time`,
`shift`, `working_hour`, `down_hour`, `breakdown`, `fuel`, `log_status`,
`log_remarks`, `remarks_by`, `log_created_on`, `order_id`
FROM wp_logsheet
WHERE order_id = %d
AND log_date BETWEEN %s AND %s",
$order_id,
$start_date,
$end_date
));
} else {
$getLogsheetData = $wpdb->get_results($wpdb->prepare(
"SELECT `id`, `equipment_id`, `equipment_no`, `model_no`, `machine_serial_no`,
`registration_no`, `operator_id`, `log_date`, `start_time`, `end_time`,
`shift`, `working_hour`, `down_hour`, `breakdown`, `fuel`, `log_status`,
`log_remarks`, `remarks_by`, `log_created_on`, `order_id`
FROM wp_logsheet
WHERE operator_id = %d
AND log_date BETWEEN %s AND %s",
$user_id,
$start_date,
$end_date
));
}
// Get SMU readings
$table_name = $wpdb->prefix . 'logsheet';
// Get start SMU
$start_smu_query = $wpdb->prepare("
SELECT start_smu
FROM $table_name
WHERE log_date = %s
" . ($type === 'order' ? "AND equipment_id IN (
SELECT product_id
FROM {$wpdb->prefix}wc_order_product_lookup
WHERE order_id = %d
)" : "AND operator_id = %d"),
$start_date,
$type === 'order' ? $order_id : $user_id
);
$start_smu = $wpdb->get_var($start_smu_query);
// Get end SMU
$end_smu_query = $wpdb->prepare("
SELECT end_smu
FROM $table_name
WHERE log_date = %s
" . ($type === 'order' ? "AND equipment_id IN (
SELECT product_id
FROM {$wpdb->prefix}wc_order_product_lookup
WHERE order_id = %d
)" : "AND operator_id = %d"),
$end_date,
$type === 'order' ? $order_id : $user_id
);
$end_smu = $wpdb->get_var($end_smu_query);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Equipment Rental Log Sheet</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 10px;
font-size: 10px;
}
.header {
text-align: center;
font-weight: bold;
margin-bottom: 10px;
}
.header img {
vertical-align: middle;
}
.fields {
display: flex;
justify-content: space-between;
margin-bottom: 10px;
}
.right-column {
text-align: left;
padding-right: 10px;
}
table {
width: 100%;
border-collapse: collapse;
padding : 5px;
}
table, th, td {
border: 1px solid black;
}
th, td {
padding: 2px 4px;
text-align: left;
}
.signature {
margin-top: 10px;
}
</style>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.10.1/html2pdf.bundle.min.js" integrity="sha512-GsLlZN/3F2ErC5ifS5QtgpiJtWd43JWSuIgh7mbzZ8zBps+dvLusV+eNQATqgA/HdeKFVgA5v3S/cIrLF7QnIg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
</head>
<body>
<div id="logsheet-container">
<div class="header">
<img src="https://gmmco.devitrosys.com/wp-content/uploads/2024/06/gmmco_logo_right-removebg-preview.png" alt="GMMCO Logo" height="40"><br>
GMMCO LTD.<br>
NO. 6, GST ROAD, ST. THOMAS MOUNT, CHENNAI - 600 016. TAMIL NADU <br>
Tel.: (044) 2267 6000, (044) 2267 6499, email- marketing@gmmcoindia.com
</div>
<div class="fields">
<div class="left-column">
<div>Log Generated on: <?php echo date('d/m/Y'); ?></div>
<div><strong>Log Period: <?php echo date("d/m/Y", strtotime($start_date)); ?> - <?php echo date("d/m/Y", strtotime($end_date)); ?></strong></div>
<div>Operatot ID: <?php echo esc_html($user_id); ?></div>
<div>Contract ID: <?php echo esc_html($sapcontract); ?></div>
<div>Model: <?php echo esc_html($model_number); ?></div>
<div>Customer Name: <?php echo esc_html($customer_name); ?></div>
</div>
<div class="right-column">
<div>Project Location: <?php echo esc_html($work_location) ?? 'Chennai'; ?></div>
<div>Equipment ID No.: <?php echo esc_html($equipment_number); ?></div>
<div>Machine Serial No.: <?php echo esc_html($machine_serialno); ?></div>
<div>Registration Number(If any.): <?php echo esc_html($registration_number); ?></div>
</div>
</div>
<table>
<thead>
<tr>
<th>Date</th>
<th>Start Time (A)</th>
<th>End Time (B)</th>
<th>Working Hours <br>X=(B-A)</th>
<th colspan="2">Down Time on Account of (Hours)</th>
<th>Total Down Time<br> Y=C+D (Hours)</th>
<th>Machine Operated by</th>
<th>Signature of Customer's <br>Work Site Representative</th>
<!-- <th>Fuel</th> -->
<!-- <th></th> -->
</tr>
<tr>
<th> (DD/MM/YY)</th>
<th>(HH:MM)</th>
<th>(HH:MM)</th>
<th>(HH:MM)</th>
<th>C(EQ Breakdown)</th>
<th>D(OP Absence)</th>
<th></th>
<th></th>
<th></th>
<!-- <th></th> -->
<!-- <th></th> -->
</tr>
</thead>
<tbody>
<?php
$totworking = 0;
$totdown = 0;
foreach($getLogsheetData as $data){
$operator_name = isset($operator_names[$data->operator_id]) ? $operator_names[$data->operator_id] : $user_name;
?>
<tr>
<td><?php echo $data->log_date;?></td>
<td><?php echo $data->start_time;?></td>
<td><?php echo $data->end_time;?></td>
<td><?php echo number_format ($data->working_hour/60, 3);?></td>
<td><?php echo ($data->breakdown)/60;?></td><td><?php echo ($data->down_hour)/60;?></td>
<td><?php
//echo number_format((($data->working_hour) - ($data->down_hour))/60, 3);
echo number_format((($data->down_hour) + ($data->breakdown))/60, 3);
?></td>
<td><?php echo $operator_name;?></td>
<td></td>
<!-- <td><?php echo $data->fuel;?></td> -->
<!-- <td></td> -->
</tr>
<?php
$totworking+= $data->working_hour - $data->down_hour;
$totdown+= $data->down_hour + $data->breakdown;
}
?>
<tr>
<td colspan="3"><strong>Total Working Hours for the Period:</strong></td>
<td><strong><?php echo number_format($totworking / 60, 3); ?></strong></td>
<td colspan="2">Total Down Time for Period</td>
<td><strong><?php echo number_format($totdown / 60, 3);?></strong></td>
<td></td>
<td></td>
<!-- <td></td> -->
</tr>
<tr>
<td colspan="3"><strong>Minimum Chargeable Hours for the Period if actual usage by Customer is less than Minimum Chargeable Hours:</strong></td>
<td></td>
<td colspan="4">Actual Chargeable Hours based on Minimum Chargeable Hours for the Period, Less Downtime:</td>
<td></td>
<!-- <td></td> -->
</tr>
<tr>
<td colspan="3">
<strong>Opening SMU as on <?php echo date("d/m/Y", strtotime($start_date)). ' : ' .esc_html($start_smu);?></strong><br>
</td>
<td></td>
<td colspan="4"><strong>Ending SMU as on <?php echo date("d/m/Y", strtotime($end_date)). ' : ' .esc_html($end_smu);?> </strong>
</td>
<td></td>
<!-- <td></td> -->
</tr>
</tbody>
</table>
<div class="signature">
<div style="margin-top: 20px;">
<p>Signature of Customer's Representative: _____________________ Date: _____________________</p>
<p>Name of Customer's Representative: _____________________ Designation: _____________________</p>
</div>
</div>
</div>
<script>
function exportHTMLtoPDF() {
let htmlElement = document.getElementById('logsheet-container');
var fileName = '<?php echo $sapcontract. "_" . $user_id . "_logsheet.pdf"; ?>';
console.log("Generated file name: " + fileName);
var opt = {
margin: [0.2, 0.2, 0.2, 0.2], // Reduced margins [top, left, bottom, right] in inches
filename: fileName,
image: { type: 'jpeg', quality: 0.98 },
html2canvas: { scale: 2, letterRendering: true },
jsPDF: { unit: 'in', format: 'a4', orientation: 'landscape' }
};
html2pdf().set(opt).from(htmlElement).save().then(() => {
setTimeout(() => {
window.open('', '_self').close();
}, 1000);
}).catch((error) => {
console.error('PDF generation error: ', error);
});
}
exportHTMLtoPDF();
</script>
</body>
</html>