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()); } } }