| Server IP : 13.126.101.145 / Your IP : 216.73.216.182 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/order-import-export/ |
Upload File : |
<?php
/**
* Plugin Name: WooCommerce Order Import Export
* Description: Custom plugin to export and import WooCommerce orders via CSV.
* Version: 1.0
* Author: Itrosys
*/
if (!defined('ABSPATH')) exit;
// Add Export Orders Page
function add_export_orders_page() {
add_submenu_page('woocommerce', 'Export Orders', 'Export Orders', 'manage_woocommerce', 'export-orders', 'export_orders_function');
}
add_action('admin_menu', 'add_export_orders_page');
// Export Orders Function
function export_orders_function() {
if (!current_user_can('manage_woocommerce')) return;
if (isset($_GET['export_orders'])) {
// Clear output buffer
if (ob_get_length()) {
ob_end_clean();
}
// Set headers for CSV file
header("Content-Type: text/csv; charset=utf-8");
header("Content-Disposition: attachment; filename=woocommerce-orders.csv");
header("Pragma: no-cache");
header("Expires: 0");
// Open output stream
$output = fopen('php://output', 'w');
// $output = fopen('php://output', 'w');
fputcsv($output, array('Order ID', 'Date', 'Status', 'Total', 'Customer Name', 'Email', 'Model Name', 'Start Date', 'End Date', 'No. of Shift', 'Rental Amount' , 'Deposit Amount','UTR'));
$orders = wc_get_orders(array('limit' => -1));
foreach ($orders as $order) {
$start_date = get_post_meta($order->get_id(), 'start_date', true);
$end_date = get_post_meta($order->get_id(), 'end_date', true);
$number_of_shifts = get_post_meta($order->get_id(), '_number_shifts_required', true);
$rental_amount = get_post_meta($order->get_id(), 'rental_amount', true);
$deposit_amount = get_post_meta($order->get_id(), 'deposit_amount', true);
$utr_field = get_post_meta($order->get_id(), 'utr_field', true);
// Ensure dates are formatted as d-m-Y
$formatted_start_date = ($start_date) ? date('d-m-Y', strtotime($start_date)) : '';
$formatted_end_date = ($end_date) ? date('d-m-Y', strtotime($end_date)) : '';
fputcsv($output, array(
$order->get_id(),
$order->get_date_created()->date('Y-m-d H:i:s'),
$order->get_status(),
$order->get_total(),
$order->get_billing_first_name() . ' ' . $order->get_billing_last_name(),
$order->get_billing_email(),
get_post_meta($order->get_id(), 'model_name', true), // Export custom field Model Name
$formatted_start_date, // Formatted Start Date
$formatted_end_date ,// Formatted End Date
$number_of_shifts,
$rental_amount,
$deposit_amount,
$utr_field,
));
}
fclose($output);
exit;
}
echo '<div class="wrap"><h1>Export Orders</h1>';
echo '<a href="' . admin_url('admin.php?page=export-orders&export_orders=1') . '" class="button-primary">Export Contracts</a><br><br>';
// echo '<a href="' . admin_url('admin.php?page=export-orders&download_template=1') . '" class="button-secondary">Download Import Template</a></div>';
}
// Export Template Function
function export_template_function() {
if (isset($_GET['download_template'])) {
ob_end_clean();
if (ob_get_length()) ob_clean();
header('Content-Type: text/csv; charset=UTF-8');
header('Content-Disposition: attachment; filename=woocommerce-import-template.csv');
header('Pragma: no-cache');
header('Expires: 0');
// header('Content-Disposition: attachment; filename=woocommerce-import-template.csv');
$output = fopen('php://output', 'w');
fputcsv($output, array('Customer Name', 'Email', 'Model Name', 'Start Date','End Date','No. of Shift', 'Rental Amount' , 'Deposit Amount','UTR','Rental Contract Id'));
fclose($output);
exit;
}
}
add_action('admin_init', 'export_template_function');
// Add Import Orders Page
function add_import_orders_page() {
add_submenu_page('woocommerce', 'Import Orders', 'Import Orders', 'manage_woocommerce', 'import-orders', 'import_orders_function');
}
add_action('admin_menu', 'add_import_orders_page');
// Import Orders Function
function import_orders_function() {
if (!current_user_can('manage_woocommerce')) return;
if (isset($_POST['import_orders']) && !empty($_FILES['csv_file']['tmp_name'])) {
$csv = array_map('str_getcsv', file($_FILES['csv_file']['tmp_name']));
array_shift($csv); // Remove header row
// Get last order ID and set auto-increment
$last_order = wc_get_orders(array('limit' => 1, 'orderby' => 'ID', 'order' => 'DESC'));
$last_order_id = !empty($last_order) ? $last_order[0]->get_id() : 6788;
$error_messages = [];
// foreach ($csv as $row) {
// $last_order_id++; // Increment order ID
// // Retrieve start and end dates without any validation or formatting
// $start_date = !empty($row[6]) ? $row[6] : '';
// $end_date = !empty($row[7]) ? $row[7] : '';
// // Proceed with order import if no errors
// $order = wc_create_order();
// $order->set_status($row[1]); // Order Status
// $order->set_total($row[2]); // Order Total
// $order->set_billing_first_name($row[3]);
// $order->set_billing_last_name(''); // Assuming blank last name for now
// $order->set_billing_email($row[4]);
// // Save custom fields directly without any date format or validation
// update_post_meta($order->get_id(), 'model_name', $row[5]); // Import custom field Model Name
// update_post_meta($order->get_id(), 'start_date', $start_date); // Save Start Date as it is
// update_post_meta($order->get_id(), 'end_date', $end_date); // Save End Date as it is
// update_post_meta($order->get_id(), 'number_shifts_required', $row[8]); // No. of Shifts
// update_post_meta($order->get_id(), 'rental_amount', $row[9]); // Rental Amount
// update_post_meta($order->get_id(), 'deposit_amount', $row[10]); // Deposit Amount
// // Check if the 11th column exists before using it
// $utr_field = isset($row[11]) ? $row[11] : ''; // Default to empty string if not set
// update_post_meta($order->get_id(), 'utr_field', $utr_field); // UTR field
// $order->save();
// }
foreach ($csv as $row) {
$last_order_id++; // Increment order ID
// Retrieve start and end dates
$start_date = !empty($row[3]) ? $row[3] : '';
$end_date = !empty($row[4]) ? $row[4] : '';
// Retrieve Customer Name & Email from CSV
$customer_name = trim($row[0]); // Assuming customer name is in the first column
$customer_email = isset($row[3]) ? trim($row[1]) : ''; // Assuming email is in the fourth column
// Validate email format
if (!filter_var($customer_email, FILTER_VALIDATE_EMAIL)) {
$customer_email = 'noemail@example.com'; // Default email if invalid
}
// Find user by email
$user = get_user_by('email', $customer_email);
$customer_id = $user ? $user->ID : 0; // Assign user ID if found
// Create WooCommerce Order
$order = wc_create_order([
'customer_id' => $customer_id,
]);
$order->set_status('wc-sdp'); // Set default status to Security Deposite Paid
$order->save();
// $order->set_status($row[1]);
// $order->set_total($row[2]);
$order->set_billing_first_name($customer_name);
$order->set_billing_last_name('');
$order->set_billing_email($customer_email);
// Save custom fields
update_post_meta($order->get_id(), 'model_name', $row[2]); // Model Name
update_post_meta($order->get_id(), 'start_date', $start_date);
update_post_meta($order->get_id(), 'end_date', $end_date);
$number_of_shifts = !empty($row[5]) ? $row[5] : '1';
update_post_meta($order->get_id(), '_number_shifts_required', $number_of_shifts);
update_post_meta($order->get_id(), 'rental_amount', $row[6]);
update_post_meta($order->get_id(), 'deposit_amount', $row[7]);
$utr_field = !empty($row[8]) ? $row[8] : '00UTR1';
update_post_meta($order->get_id(), 'utr_field', $utr_field);
update_post_meta($order->get_id(), 'contract_id', $row[9]);// for updation of rental contract id
update_post_meta($order->get_id(), '_custom_upload_file', 'https://uatcatrentals.gmmco.in/wp-content/uploads/2025/02/sample.pdf');
$order->save();
}
echo '<div class="updated"><p>Orders imported successfully.</p></div>';
}
echo '<div class="wrap"><h1>Import Orders</h1>';
echo '<form method="post" enctype="multipart/form-data">';
echo '<input type="file" name="csv_file" required> ';
echo '<input type="submit" name="import_orders" value="Import Orders" class="button-primary">';
echo '</form></div>';
}
// Function to validate date format (d-m-Y)
function validate_date_format($date) {
$dmy_format = 'd-m-Y';
$date_obj = DateTime::createFromFormat($dmy_format, $date);
return $date_obj && $date_obj->format($dmy_format) === $date;
}
function add_export_import_buttons_beside_add_order() {
$screen = get_current_screen();
if ($screen->id === 'edit-shop_order') {
?>
<script type="text/javascript">
jQuery(document).ready(function($) {
var addOrderBtn = $('.page-title-action');
if (addOrderBtn.length) {
$('<a href="<?php echo admin_url('admin.php?page=export-orders&export_orders=1'); ?>" class="page-title-action">Export Contracts</a>').insertAfter(addOrderBtn);
$('<a href="<?php echo admin_url('admin.php?page=export-orders&download_template=1'); ?>" class="page-title-action">Download Template</a>').insertAfter(addOrderBtn);
$('<a href="<?php echo admin_url('admin.php?page=import-orders'); ?>" class="page-title-action">Import Contracts</a>').insertAfter(addOrderBtn);
}
});
</script>
<?php
}
}
add_action('admin_footer', 'add_export_import_buttons_beside_add_order');