Esempio n. 1
0
require_once 'PlexDataSourceKey.php';
wp_head();
$args = array('posts_per_page' => -1, 'post_type' => 'shop_order', 'post_status' => 'publish');
$starting_time = microtime(true);
$orders = new WP_Query($args);
$inc = 0;
if ($orders->have_posts()) {
    while ($orders->have_posts()) {
        $orders->the_post();
        $order = new WC_Order($post->ID);
        if ('processing' == $order->get_status()) {
            echo '<br>';
            $inc++;
            $plexOrderId = get_post_meta($post->ID, 'plexOrderId', true);
            if ('' != $plexOrderId) {
                $orderStatus = getOrderStatusFromPlex($plexOrderId);
                echo 'orderStatus for plex order id=' . $plexOrderId . ' is = ' . $orderStatus;
            }
            echo '<br>';
        } else {
        }
    }
}
$end_time = microtime(true);
/* This function will return the status string */
function getOrderStatusFromPlex($plexOrderId)
{
    $plexServiceRequestObject = new plexServiceRequest();
    $responseHandlerObject = new ResponseHandler();
    $paramArray = array(array('Name' => 'Customer_Code', 'Value' => '', 'Required' => 'false', 'Output' => 'false'), array('Name' => 'Email_Address', 'Value' => '', 'Required' => 'false', 'Output' => 'false'), array('Name' => 'Order_No', 'Value' => $plexOrderId, 'Required' => 'false', 'Output' => 'false'));
    $rawResponse = $plexServiceRequestObject->call('ExecuteDataSource', PLEX_GET_ORDER_STATUS, $paramArray);
function plex_order_status_update_callback_function($customer_orders)
{
    if (!$customer_orders) {
        return false;
    }
    PlexLog::addLog(' Info =>going to update order status for user ' . get_current_user_id());
    if (!is_array($customer_orders)) {
        $customer_orders = array($customer_orders);
    }
    foreach ($customer_orders as $key => $woo_order) {
        $WC_OrderObj = new WC_Order($woo_order->ID);
        PlexLog::addLog(' Info =>going to update order status for orderid ' . $WC_OrderObj->id);
        if (!('COMPLETED' == strtoupper($WC_OrderObj->get_status()) || 'CANCELLED' == strtoupper($WC_OrderObj->get_status()))) {
            $plexOrderId = get_post_meta($WC_OrderObj->id, 'plexOrderId', true);
            if ('' != $plexOrderId) {
                $orderStatus = getOrderStatusFromPlex($plexOrderId);
                PlexLog::addLog(' Info =>orderStatus for plex order id=' . $plexOrderId . ' is = ' . $orderStatus);
                switch ($orderStatus) {
                    case 'Closed':
                        $WC_OrderObj->update_status('Completed');
                        update_post_meta($WC_OrderObj->id, 'plexOrderId', $plexOrderId);
                        break;
                    case 'Awaiting Approval':
                    case 'Open':
                    case 'Direct Open':
                        $WC_OrderObj->update_status('processing');
                        update_post_meta($WC_OrderObj->id, 'plexOrderId', $plexOrderId);
                        break;
                    case 'Cancelled':
                        $WC_OrderObj->update_status('Cancelled');
                        update_post_meta($WC_OrderObj->id, 'plexOrderId', $plexOrderId);
                        break;
                    case 'Consumer Service Hold':
                    case 'Order Entry Hold':
                    case 'Price Approval Hold':
                    case 'Credit Hold':
                    case 'Credit Card Hold':
                    case 'Hold':
                        $WC_OrderObj->update_status('on-hold');
                        update_post_meta($WC_OrderObj->id, 'plexOrderId', $plexOrderId);
                        break;
                    default:
                        PlexLog::addLog(' Info =>order status unavailable');
                        $WC_OrderObj->update_status('Cancelled');
                        update_post_meta($WC_OrderObj->id, 'plexOrderId', $plexOrderId);
                }
            } else {
                PlexLog::addLog(' Info =>plexOrderId not found');
            }
        } else {
            PlexLog::addLog(' Info =>order status in not processing; it is :' . $WC_OrderObj->get_status());
        }
    }
}