/**
  * Add custom order actions in order list view
  *
  * @since 1.0.0
  * @param array $actions
  * @param \WC_Order $order
  * @return array
  */
 public function custom_order_actions($actions, WC_Order $order)
 {
     $status = new WC_Order_Status_Manager_Order_Status($order->get_status());
     // Sanity check: bail if no status was found.
     // This can happen if some statuses are registered late
     if (!$status || !$status->get_id()) {
         return $actions;
     }
     $next_statuses = $status->get_next_statuses();
     $order_statuses = wc_get_order_statuses();
     $custom_actions = array();
     // TODO: Change action to `woocommerce_mark_order_status` for 2.3.x compatibility
     // TODO: Change nonce_action to `woocommerce-mark-order-status` for 2.3.x compatibility
     $action = 'wc_order_status_manager_mark_order_status';
     $nonce_action = 'wc-order-status-manager-mark-order-status';
     // Add next statuses as actions
     if (!empty($next_statuses)) {
         foreach ($next_statuses as $next_status) {
             $custom_actions[$next_status] = array('url' => wp_nonce_url(admin_url('admin-ajax.php?action=' . $action . '&status=' . $next_status . '&order_id=' . $order->id), $nonce_action), 'name' => $order_statuses['wc-' . $next_status], 'action' => $next_status);
             // Remove duplicate built-in complete action
             if ('completed' === $next_status) {
                 unset($actions['complete']);
             }
         }
     }
     // Next status actions are prepended to any existing actions
     return $custom_actions + $actions;
 }
 public function add_meta_boxes()
 {
     global $post;
     if (isset($_GET['post'])) {
         if (get_post_meta($_GET['post'], '_payment_method', true) == 'inicis_escrow_bank') {
             $payment_method = get_post_meta($_GET['post'], '_payment_method', true);
             $tmp_settings = get_option('woocommerce_' . $payment_method . '_settings', true);
             $refund_mypage_status = $tmp_settings['possible_register_delivery_info_status_for_admin'];
             //관리자 배송정보 등록/환불 가능 주문상태 지정
             $order = new WC_Order($post->ID);
             $paid_order = get_post_meta($post->ID, "_paid_date", true);
             if (in_array($order->get_status(), $refund_mypage_status) && !empty($paid_order)) {
                 add_meta_box('ifw-order-escrow-register-delivery-request', __('이니시스 에스크로', 'codem_inicis'), 'IFW_Meta_Box_Escrow_Register_Delivery::output', 'shop_order', 'side', 'default');
             }
         } else {
             if (get_post_meta($_GET['post'], '_payment_method', true) == 'inicis_vbank') {
                 add_meta_box('ifw-order-vbank-refund-request', __('가상계좌 무통장입금 환불 처리', 'codem_inicis'), 'IFW_Meta_Box_Vbank_Refund::output', 'shop_order', 'side', 'default');
             } else {
                 if (in_array(get_post_meta($_GET['post'], '_payment_method', true), array('inicis_card', 'inicis_bank', 'inicis_hpp', 'inicis_kpay', 'inicis_stdcard'))) {
                     $order = new WC_Order($_GET['post']);
                     if (!in_array($order->get_status(), array('pending', 'on-hold'))) {
                         add_meta_box('ifw-order-refund-request', __('결제내역', 'codem_inicis'), 'IFW_Meta_Box_Refund::output', 'shop_order', 'side', 'default');
                     }
                 }
             }
         }
     }
 }
 /**
  * Checks if order is paid
  * @return bool
  */
 public function is_paid()
 {
     $payment_methods = apply_filters('bewpi_paid_watermark_excluded_payment_methods', array('bacs', 'cod', 'cheque'), $this->order->id);
     if (in_array($this->order->payment_method, $payment_methods)) {
         return false;
     }
     $order_statuses = apply_filters('bewpi_paid_watermark_excluded_order_statuses', array('pending', 'on-hold', 'auto-draft'), $this->order->id);
     return !in_array($this->order->get_status(), $order_statuses);
 }
 /**
  * Output for the order received page.
  */
 public function thankyou_page($order_id)
 {
     $order = new WC_Order($order_id);
     if ('completed' == $order->get_status()) {
         echo '<p>' . __('Your booking has been confirmed. Thank you.', 'woocommerce-bookings') . '</p>';
     } else {
         echo '<p>' . __('Your booking is awaiting confirmation. You will be notified by email as soon as we\'ve confirmed availability.', 'woocommerce-bookings') . '</p>';
     }
 }
Beispiel #5
0
function wps_wcc_new_order($order_id)
{
    global $sms, $wps_options;
    $order = new WC_Order($order_id);
    if (!$get_mobile) {
        return;
    }
    $sms->to = array(get_option('wp_admin_mobile'));
    $string = $wps_options['wpsms_wc_no_tt'];
    $template_vars = array('order_id' => $order_id, 'status' => $order->get_status(), 'order_name' => $order->get_order_number());
    $final_message = preg_replace('/%(.*?)%/ime', "\$template_vars['\$1']", $string);
    $sms->msg = $final_message;
    $sms->SendSMS();
}
            function thankyou_page($order_id)
            {
                if (empty($order_id)) {
                    return;
                }
                $order = new WC_Order($order_id);
                if ($order->payment_method != 'inicis_vbank' || $order->get_status() == 'failed') {
                    return;
                }
                $VACT_BankCodeName = get_post_meta($order_id, 'VACT_BankCodeName', true);
                //입금은행명/코드
                $VACT_Num = get_post_meta($order_id, 'VACT_Num', true);
                //계좌번호
                $VACT_Name = get_post_meta($order_id, 'VACT_Name', true);
                //예금주
                $VACT_InputName = get_post_meta($order_id, 'VACT_InputName', true);
                //송금자
                $VACT_Date = get_post_meta($order_id, 'VACT_Date', true);
                //입금예정일
                $vact_date_format = date(__('Y년 m월 d일', 'inicis_payment'), strtotime($VACT_Date));
                echo '<h2>' . __('가상계좌 무통장입금 안내', 'inicis_payment') . '</h2>';
                echo '<p>' . __('가상계좌 무통장입금 안내로 주문이 접수되었습니다. 아래 지정된 계좌번호로 입금기한내에 반드시 입금하셔야 하며, 송금자명으로 입금 해주셔야 주문이 정상 접수 됩니다.', 'inicis_payment') . '</p>';
                echo '
				<table name="inicis_vbank_account_table" id="inicis_vbank_account_table" class="inicis_vbank_account_table">
					<tbody>';
                echo '<tr>';
                echo '	<th>' . __('은행명:', 'inicis_payment') . '</th>';
                echo '	<td data-title="' . __('은행명:', 'inicis_payment') . '">' . $VACT_BankCodeName . '</td>';
                echo '</tr>';
                echo '<tr>';
                echo '	<th>' . __('계좌번호:', 'inicis_payment') . '</th>';
                echo '	<td data-title="' . __('계좌번호:', 'inicis_payment') . '">' . $VACT_Num . '</td>';
                echo '</tr>';
                echo '<tr>';
                echo '	<th>' . __('예금주:', 'inicis_payment') . '</th>';
                echo '	<td data-title="' . __('예금주:', 'inicis_payment') . '">' . $VACT_Name . '</td>';
                echo '</tr>';
                echo '<tr>';
                echo '	<th>' . __('송금자:', 'inicis_payment') . '</th>';
                echo '	<td data-title="' . __('송금자:', 'inicis_payment') . '">' . $VACT_InputName . '</td>';
                echo '</tr>';
                echo '<tr>';
                echo '	<th>' . __('입금기한:', 'inicis_payment') . '</th>';
                echo '	<td data-title="' . __('입금기한:', 'inicis_payment') . '">' . $vact_date_format . '</td>';
                echo '</tr>';
                echo '</tbody></table>';
            }
Beispiel #7
0
function woogiving_process_donation()
{
    // Setup post variables
    $wg_order_id = $_POST['wg_order_id'];
    $jg_donation_id = $_POST['jg_donation_id'];
    if (is_numeric($wg_order_id) && ctype_alnum($jg_donation_id)) {
        // Validate order ID
        $wg_order_id_validation = get_post((int) $wg_order_id);
        if ($wg_order_id_validation) {
            // Get options
            $wg_options = get_option('woocommerce_woogiving_settings');
            // Include JG API and setup API
            require_once 'inc/JustGivingClient.php';
            $jg_client = new JustGivingClient('https://api.justgiving.com/', $wg_options['app_id'], 1, $wg_options['api_login'], $wg_options['api_password']);
            // Check if donation exists in JG
            $wg_donation_id_check = $jg_client->Donation->RetrieveRef(woogiving_create_ref($wg_order_id_validation->ID));
            if (count($wg_donation_id_check->donations)) {
                // Check if donations IDs match
                if ($wg_donation_id_check->donations[0]->id == (int) $jg_donation_id) {
                    // Get donation details from JG
                    $wg_donation_id_status = $jg_client->Donation->RetrieveStatus($jg_donation_id);
                    $jg_amount = $wg_donation_id_status->amount;
                    $jg_status = $wg_donation_id_status->status;
                    // Get customer order
                    $customer_order = new WC_Order($wg_order_id_validation->ID);
                    // Check if amount donated is equal to higher than the amount in the order
                    if ($jg_amount >= $customer_order->order_total && $jg_status == 'Accepted') {
                        // Get JG fundraising page ID
                        $wg_jg_page_check = $jg_client->Page->Retrieve($wg_options['username']);
                        // Check if donation was made to correct charity
                        if ($wg_jg_page_check->charity->id == $wg_donation_id_check->donations[0]->charityId) {
                            // Check order status
                            if ($customer_order->get_status() == 'completed') {
                                // Order has already been completed
                                return json_encode(array('wg_status' => 'failure', 'wg_message' => __('This donation has already been processed.', 'woogiving')));
                            } else {
                                // Reduce stock levels and complete payment
                                $customer_order->reduce_order_stock();
                                $customer_order->payment_complete($jg_donation_id);
                                $customer_order->update_status('completed');
                                return json_encode(array('wg_status' => 'success', 'wg_redirect' => woogiving_get_return_url($customer_order)));
                            }
                        } else {
                            return json_encode(array('wg_status' => 'failure', 'wg_message' => __('This donation cannot be processed, please contact us.', 'woogiving')));
                        }
                    }
                } else {
                    return json_encode(array('wg_status' => 'failure', 'wg_message' => __('Invalid donation ID.', 'woogiving')));
                }
            } else {
                return json_encode(array('wg_status' => 'failure', 'wg_message' => __('Invalid donation ID.', 'woogiving')));
            }
        } else {
            return json_encode(array('wg_status' => 'failure', 'wg_message' => __('Donation could not be processed.', 'woogiving')));
        }
    } else {
        return json_encode(array('wg_status' => 'failure', 'wg_message' => __('Donation could not be processed.', 'woogiving')));
    }
}
 /**
  * The the Order's status
  * @param WC_Order $order
  * @return string
  */
 public static function get_order_status(WC_Order $order)
 {
     if (self::is_wc_version_gte_2_2()) {
         return $order->get_status();
     } else {
         return $order->status;
     }
 }
 function successful_request_mobile_return($posted)
 {
     global $woocommerce;
     if ($this->id == 'inicis_bank' && wp_is_mobile()) {
         $get_type = $_GET['type'];
         $tmp_rst = explode(',', $get_type);
         $tmp_oid = $tmp_rst[1];
         $tmp_rst = explode('=', $tmp_oid);
         $oid = $tmp_rst[1];
         $tmp_rst = explode('_', $oid);
         $orderid = $tmp_rst[0];
         $order = new WC_Order($orderid);
         if (in_array($order->get_status(), array('pending', 'failed'))) {
             wc_add_notice(__('결제를 취소하셨습니다.  (ERROR: 0xF53D)', 'inicis_payment'), 'error');
             wp_redirect(WC()->cart->get_checkout_url());
             exit;
         }
     }
 }
Beispiel #10
0
 /**
  * Test: update_status
  */
 function test_update_status()
 {
     $object = new WC_Order();
     $this->assertFalse($object->update_status('on-hold'));
     $object->save();
     $this->assertTrue($object->update_status('on-hold'));
     $this->assertEquals('on-hold', $object->get_status());
 }
<?php

require_once 'request.php';
require_once 'ResponseHandler.php';
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)
{
 function do_background_checks($explicit = false)
 {
     $statuses = array();
     $min_age = $this->pending_order_check_min_age;
     if ($explicit == true) {
         $min_age = 0;
     }
     $orders = $this->get_pending_orders($min_age);
     if ('yes' == $this->debug) {
         $c_orders = 0;
         if ($orders) {
             $c_orders = count($orders);
         }
         $this->log->add($this->id, "do_background_checks: #orders=" . $c_orders);
     }
     if ($orders) {
         foreach ($orders as $ordera) {
             $order_id = $ordera->order_id;
             $order = new WC_Order($order_id);
             /*if (!$order->needs_payment()) {
                 if ( 'yes' == $this->debug ) 
                   $this->log->add($this->id, "    order: #".$order->id . " (".$order->get_status().") does not need payment. removing from the queue.");
               
                 $this->remove_from_maksuturva_queue($ordera->order_id, $ordera->payment_id);
                 continue;
               }*/
             if ('yes' == $this->debug) {
                 $this->log->add($this->id, "    process status_query for order: #" . $order->id . " (" . $order->get_status() . ") ");
             }
             $response = $this->status_request($order);
             $status = $response['status'];
             if ($response['status'] === 'false') {
                 if ($response['exception'] == 'true') {
                     if ('yes' == $this->debug) {
                         $this->log->add($this->id, "    Error: " . $response['response']);
                     }
                     $statuses[] = array('id' => $order->id, 'message' => __('Error:', $this->td) . ": " . $response['response']);
                 } else {
                     $statuses[] = array('id' => $order->id, 'message' => __('Error: order not found on Maksuturva', $this->td) . ": " . $response['response']);
                     if ('yes' == $this->debug) {
                         $this->log->add($this->id, "    order #" . $order->id . " not found. Removing from the queue...");
                     }
                     $this->remove_from_maksuturva_queue($ordera->order_id, $ordera->payment_id);
                     $order->cancel_order();
                 }
                 continue;
             }
             if ('yes' == $this->debug) {
                 $this->log->add($this->id, "    process_status_query_result");
             }
             $res = $this->process_status_query_result($order, $response['response'], $ordera);
             if ($order->needs_payment()) {
                 $statuses[] = $res;
             }
         }
     }
     return $statuses;
 }
Beispiel #13
0
 /**
  * @param array $qs
  *
  * @return array
  */
 public static function get_history($qs)
 {
     $orders = array();
     foreach ($qs as $item => $values) {
         $order = new WC_Order($qs[$item]->ID);
         $orderDate = new DateTime($order->order_date);
         $orders[] = array('id' => (string) $order->id, 'amount' => Aplazame_Filters::decimals($order->get_total()), 'due' => '', 'status' => $order->get_status(), 'type' => Aplazame_Helpers::get_payment_method($order->id), 'order_date' => $orderDate->format(DATE_ISO8601), 'currency' => $order->get_order_currency(), 'billing' => self::get_address($order, 'billing'), 'shipping' => self::get_shipping_info($order));
     }
     return $orders;
 }
 /**
  * @param WC_Order $wc_order
  */
 static function send_booking($wc_order)
 {
     $order = new Bring_WC_Order_Adapter($wc_order);
     $order_id = $wc_order->id;
     $test_mode = self::is_test_mode();
     $api_key = self::get_api_key();
     $api_uid = self::get_api_uid();
     $client_url = self::get_client_url();
     $customer_number = isset($_REQUEST['_bring-customer-number']) ? $_REQUEST['_bring-customer-number'] : '';
     if (isset($_REQUEST['_bring-shipping-date']) && isset($_REQUEST['_bring-shipping-date-hour']) && isset($_REQUEST['_bring-shipping-date-minutes'])) {
         $shipping_date_time = $_REQUEST['_bring-shipping-date'] . 'T' . $_REQUEST['_bring-shipping-date-hour'] . ':' . $_REQUEST['_bring-shipping-date-minutes'] . ':00';
     } else {
         $shipping_date = self::create_shipping_date();
         $shipping_date_time = $shipping_date['date'] . "T" . $shipping_date['hour'] . ":" . $shipping_date['minute'] . ":00";
     }
     $additional_info = '';
     if (isset($_REQUEST['_bring_additional_info'])) {
         $additional_info = filter_var($_REQUEST['_bring_additional_info'], FILTER_SANITIZE_STRING);
     }
     $sender_address = self::get_sender_address($additional_info);
     $recipient_address = $order->get_recipient_address_formatted();
     // One booking request per. order shipping item.
     foreach ($order->get_fraktguiden_shipping_items() as $item_id => $shipping_method) {
         $service_id = Fraktguiden_Helper::parse_shipping_method_id($shipping_method['method_id'])['service'];
         $packages = $order->get_packages_formatted($item_id);
         $pickup_point = $order->get_pickup_point_for_shipping_item_formatted($item_id);
         $booking_request = new Bring_Booking_Request(new WP_Bring_Request());
         $booking_request->set_test_mode($test_mode)->set_content_type('application/json')->set_accept('application/json')->set_api_key($api_key)->set_api_uid($api_uid)->set_client_url($client_url);
         $consignment = new Bring_Booking_Consignment_Creator();
         $consignment->set_purchase_order($order_id)->set_shipping_date_time($shipping_date_time)->set_sender_address($sender_address)->set_recipient_address($recipient_address)->set_product_id($service_id)->set_customer_number($customer_number)->set_packages($packages);
         if (!empty($pickup_point)) {
             $consignment->set_pickup_point($pickup_point);
         }
         if (Fraktguiden_Helper::get_option('evarsling') == 'yes') {
             $product_services = ['recipientNotification' => ['email' => $recipient_address['contact']['email'], 'mobile' => $recipient_address['contact']['phoneNumber']]];
             $consignment->set_product_services($product_services);
         }
         $booking_request->add_consignment_data($consignment->create_data());
         // Start sending the booking
         if ($booking_request->is_valid()) {
             $original_order_status = $wc_order->get_status();
             // Set order status to awaiting shipping.
             $wc_order->update_status('wc-bring-shipment');
             // Send the booking.
             $response = $booking_request->send();
             // Save the response json to the order.
             $order->update_booking_response($response);
             // Download labels pdf
             if (!$order->has_booking_errors()) {
                 Bring_Booking_Labels::download_to_local($order);
             }
             // Create new status and order note.
             if (!$order->has_booking_errors()) {
                 // Check if the plugin has been configured to set a specific order status after success.
                 $status = Fraktguiden_Helper::get_option('auto_set_status_after_booking_success');
                 if ($status == 'none') {
                     // Set status back to the previous status
                     $status = $original_order_status;
                 }
                 $status_note = __("Booked with Bring" . "\n", 'bring-fraktguiden');
             } else {
                 // If there are errors, set the status back to the original status.
                 $status = $original_order_status;
                 $status_note = __("Booking errors. See the Bring Booking box for details." . "\n", 'bring-fraktguiden');
             }
             // Update status.
             $wc_order->update_status($status, $status_note);
         } else {
             // @todo: Not valid. show message?
         }
     }
 }
 public function order_delivery($order_id = 0)
 {
     if (!$order_id || !$this->settings['pickup_location'] || !$this->settings['pickup_name'] || !$this->settings['pickup_phone']) {
         return false;
     }
     // Get order object
     $order = new WC_Order($order_id);
     if (!$order) {
         return false;
     }
     // Get customer user ID
     $user = $order->get_user();
     if (!$user) {
         return false;
     }
     $delivery_address = str_replace('<br/>', ', ', $order->get_formatted_shipping_address());
     if (!$delivery_address) {
         return false;
     }
     if (!$order->billing_phone) {
         return false;
     }
     $delivery_address_data = $this->get_address_data($delivery_address);
     $args = array('pickup_address' => (string) $this->settings['pickup_location'], 'pickup_contact_name' => (string) $this->settings['pickup_name'], 'pickup_contact_phone' => (string) $this->settings['pickup_phone'], 'customer_identifier' => (string) $user->user_login, 'dropoff_contact_name' => (string) $user->display_name, 'dropoff_contact_phone' => (string) $order->billing_phone, 'dropoff_address' => (string) $delivery_address_data['address'], 'dropoff_coordinates' => (string) $delivery_address_data['location']);
     if ($this->settings['pickup_coords']) {
         $args['pickup_coordinates'] = (string) $this->settings['pickup_coords'];
     }
     if ($this->settings['pickup_remarks']) {
         $args['pickup_remarks'] = (string) $this->settings['pickup_remarks'];
     }
     if ($this->settings['city']) {
         $args['city'] = (string) $this->settings['city'];
     }
     $delivery_notes = $order->customer_note;
     if ($delivery_notes) {
         $args['dropoff_remarks'] = (string) $this->settings['delivery_notes'];
     }
     $delivery = $this->api('deliveries', $args, 'post');
     if ($delivery && isset($delivery->id)) {
         update_post_meta($order_id, '_wumdrop_delivery_id', $delivery->id);
         if (isset($delivery->distance_estimate)) {
             update_post_meta($order_id, '_wumdrop_distance_estimate', $delivery->distance_estimate);
         }
         if (isset($delivery->time_estimate)) {
             update_post_meta($order_id, '_wumdrop_time_estimate', $delivery->time_estimate);
         }
         if (isset($delivery->message)) {
             update_post_meta($order_id, '_wumdrop_delivery_message', $delivery->message);
         }
         if (isset($delivery->time_estimate)) {
             update_post_meta($order_id, '_wumdrop_delivery_price', $delivery->price);
         }
         $order_note = __('WumDrop delivery order placed.', 'woocommerce-wumdrop');
         if ('completed' != $order->get_status()) {
             $order->update_status('completed', $order_note);
         } else {
             $order->add_order_note($order_note);
         }
         return true;
     }
     return false;
 }
 function add_order_status_column_content($column)
 {
     global $post;
     if ('nfe' == $column) {
         $nfe = get_post_meta($post->ID, 'nfe', true);
         $order = new WC_Order($post->ID);
         if ($order->get_status() == 'pending' || $order->get_status() == 'cancelled') {
             echo '<span class="nfe_none">-</span>';
         } elseif ($nfe) {
             echo '<div class="nfe_success">NF-e Emitida</div>';
         } else {
             echo '<div class="nfe_alert">NF-e não emitida</div>';
         }
     }
 }
 /**
  * Get the order status
  *
  * Order statuses changed from a taxonomy in 2.1 to using `post_status`
  * in 2.2
  *
  * @since 3.0.0
  * @param WC_Order $order
  * @return mixed|string
  */
 public static function get_order_status(WC_Order $order)
 {
     return self::is_wc_version_gte_2_2() ? $order->get_status() : $order->status;
 }
 private function convert_order_status(WC_Order $order)
 {
     $status = $order->get_status();
     switch ($status) {
         case 'completed':
             return '$fulfilled';
         case 'cancelled':
             return '$canceled';
         case 'on-hold':
             return '$held';
         case 'refunded':
             return '$returned';
         case 'processing':
             return '$approved';
         case 'pending':
         case 'failed':
         default:
             return null;
     }
 }
 public function inicis_order_received_title($title, $id)
 {
     if (is_order_received_page() && get_the_ID() === $id) {
         global $wp;
         $order_id = apply_filters('woocommerce_thankyou_order_id', absint($wp->query_vars['order-received']));
         $order_key = apply_filters('woocommerce_thankyou_order_key', empty($_GET['key']) ? '' : wc_clean($_GET['key']));
         if (!empty($order_id)) {
             $order = new WC_Order($order_id);
             if ($order->get_status() == 'failed') {
                 $title = __('결제 실패로, 결제를 다시한번 진행 해 주시기 바랍니다.', 'inicis_payment');
             } else {
                 $title = __('정상적인 결제완료로 주문이 접수되었습니다.', 'inicis_payment');
             }
         } else {
             $title = __('정상적인 결제완료로 주문이 접수되었습니다.', 'inicis_payment');
         }
     }
     return $title;
 }
 /**
  * Capture and log when customer completes checkout
  *
  * @param  int $order_id
  * @return void
  */
 public function capture_sale_events($order_ids, $historic = false)
 {
     $products = array();
     foreach ($order_ids as $order_id) {
         $exported = get_post_meta($order_id, '_wc_graphflow_exported', true);
         if ('yes' !== $exported) {
             $order = new WC_Order($order_id);
             if (!$order) {
                 return;
             }
             $order_currency = $order->get_order_currency();
             $order_id = $order->id;
             $customer_ip_address = $order->customer_ip_address;
             $customer_user_agent = $order->customer_user_agent;
             // extract order status, different for WC 2.1 vs 2.2
             if (defined('WOOCOMMERCE_VERSION') && version_compare(WOOCOMMERCE_VERSION, '2.2', '>=')) {
                 $order_status = $order->get_status();
             } else {
                 $order_status = $order->status;
             }
             foreach ($order->get_items() as $order_item_id => $order_item) {
                 // extract the user id for the order
                 if ($historic == true) {
                     $order_user = isset($order->customer_user) ? $order->customer_user : $order->billing_email;
                     if ($order_user == 0) {
                         $order_user = $order->billing_email;
                     }
                 } else {
                     $order_user = $this->get_user_id();
                 }
                 // check if we can get the product, log an error message if not.
                 $product = get_product($order_item['product_id']);
                 if (!$product) {
                     $this->get_api()->log->add("graphflow", "Failed to get_product for id: " . $order_item['product_id'] . " during order export for order id: " . $order->id);
                     continue;
                 }
                 $this->maybe_capture_product($order_item['product_id']);
                 // timestamp in UTC
                 $time = new DateTime($order->order_date);
                 $time->setTimezone(new DateTimeZone('UTC'));
                 $timestamp_utc = $time->getTimestamp() * 1000;
                 $graphflow_order_item = array('fromId' => $order_user, 'toId' => $order_item['product_id'], 'interactionType' => 'purchase', 'price' => $product->get_price(), 'quantity' => $order_item['qty'], 'interactionData' => array('order_currency' => $order_currency, 'transactionId' => $order_id, 'remoteAddr' => $customer_ip_address, 'uaRaw' => $customer_user_agent, 'order_status' => $order_status), 'timestamp' => $timestamp_utc);
                 $products[] = $graphflow_order_item;
             }
             // For historical orders, only capture if not already captured
             if ($historic == false || 'yes' != get_user_meta($order_user, '_wc_graphflow_exported', true)) {
                 $this->capture_customer($order_user, $historic);
             }
         }
     }
     if (!empty($products)) {
         $this->get_api()->add_user_interactions($products);
     }
     foreach ($order_ids as $order_id) {
         // Set a meta field so we do not export again when visiting thanks page for this order
         update_post_meta($order_id, '_wc_graphflow_exported', 'yes');
     }
 }
 /**
  * Checks if order is paid
  * @return bool
  */
 public function is_paid()
 {
     return in_array($this->order->get_status(), array('pending', 'on-hold', 'auto-draft')) ? false : true;
 }
 /**
  * Callback - Action - Add meta box - "Offer Summary"
  * Output hmtl for "Offer Summary" meta box
  * @since	0.1.0
  * @param WP_Post $post The object for the current post/page
  */
 public function add_meta_box_offer_summary_callback($post)
 {
     global $post, $wpdb;
     if ($post->ID) {
         $postmeta = get_post_meta($post->ID);
         $currency_symbol = get_woocommerce_currency_symbol();
         // Add an nonce field so we can check for it later.
         wp_nonce_field('woocommerce_offer_summary_metabox', 'woocommerce_offer_summary_metabox_noncename');
         /*
          * Use get_post_meta() to retrieve an existing value
          * from the database and use the value for the form.
          */
         $current_status_value = get_post_status($post->ID);
         /*
          * Set default
          */
         if (!isset($current_status_value)) {
             $current_status_value = 'publish';
         }
         // Lookup product data
         $product_id = $postmeta['offer_product_id'][0];
         $product_variant_id = isset($postmeta['offer_variation_id'][0]) && $postmeta['offer_variation_id'][0] != '' ? $postmeta['offer_variation_id'][0] : '';
         $_pf = new WC_Product_Factory();
         $_product = $_pf->get_product($product_id);
         if ($product_variant_id) {
             $_pf_variant = new WC_Product_Factory();
             $_product_variant = $_pf_variant->get_product($product_variant_id);
             $_product_variant_managing_stock = $_product_variant->managing_stock() == 'parent' ? true : false;
             $_product_sku = $_product_variant->get_sku() ? $_product_variant->get_sku() : $_product->get_sku();
             $_product_permalink = $_product_variant->get_permalink();
             $_product_attributes_resulat = $_product_variant->get_variation_attributes();
             foreach ($_product_attributes_resulat as $name => $attribute) {
                 $_product_attributes[] = wc_attribute_label(str_replace('attribute_', '', $name)) . ': <strong>' . $attribute . '</strong>';
             }
             $_product_regular_price = $_product_variant->get_regular_price() ? $_product_variant->get_regular_price() : $_product->get_regular_price();
             $_product_sale_price = $_product_variant->get_sale_price() ? $_product_variant->get_sale_price() : $_product->get_sale_price();
             $_product_managing_stock = $_product_variant->managing_stock() ? $_product_variant->managing_stock() : $_product->managing_stock();
             $_product_stock = $_product_variant_managing_stock ? $_product_variant->get_total_stock() : $_product->get_total_stock();
             $_product_in_stock = $_product_variant_managing_stock ? $_product_variant->has_enough_stock($postmeta['offer_quantity'][0]) : $_product->has_enough_stock($postmeta['offer_quantity'][0]);
             $_product_backorders_allowed = $_product_variant_managing_stock ? $_product_variant->backorders_allowed() : $_product->backorders_allowed();
             $_product_backorders_require_notification = $_product_variant_managing_stock ? $_product_variant->backorders_require_notification() : $_product->backorders_require_notification();
             $_product_formatted_name = $_product_variant->get_formatted_name();
             $_product_image = $_product_variant->get_image('shop_thumbnail') ? $_product_variant->get_image('shop_thumbnail') : $_product->get_image('shop_thumbnail');
         } else {
             $_product_sku = $_product->get_sku();
             $_product_attributes = $_product->get_attributes();
             $_product_permalink = $_product->get_permalink();
             $_product_regular_price = $_product->get_regular_price();
             $_product_sale_price = $_product->get_sale_price();
             $_product_managing_stock = $_product->managing_stock();
             $_product_stock = $_product->get_total_stock();
             $_product_in_stock = $_product->has_enough_stock($postmeta['offer_quantity'][0]);
             $_product_backorders_allowed = $_product->backorders_allowed();
             $_product_backorders_require_notification = $_product->backorders_require_notification();
             $_product_formatted_name = $_product->get_formatted_name();
             $_product_image = $_product->get_image('shop_thumbnail');
             // set error message if product not found...
         }
         /**
          * Set default expiration date on 'pending' offer expiration date input field
          * @since   1.2.0
          */
         if ($current_status_value == 'publish') {
             // get offers options - general
             $default_expire_date = '';
             $options_general = get_option('offers_for_woocommerce_options_general');
             if (!empty($options_general['general_setting_default_expire_days'])) {
                 $current_time = date("Y-m-d H:i:s", current_time('timestamp', 0));
                 $default_expire_days = str_replace(",", "", $options_general['general_setting_default_expire_days']);
                 $default_expire_date = $default_expire_days != '' ? date("m/d/Y", strtotime($current_time . ' + ' . $default_expire_days . ' days')) : '';
             }
             if ($default_expire_date != '') {
                 $postmeta['offer_expiration_date'] = array($default_expire_date);
             }
         }
         /**
          * Check to 'consider inventory' of product stock compared to offer quantities
          * @since   0.1.0
          */
         $offer_inventory_msg = '<strong>Notice: </strong>' . __('Product stock is lower than offer quantity!', $this->plugin_slug);
         $show_offer_inventory_msg = $_product_in_stock ? FALSE : TRUE;
         // Check for 'offer_order_id'
         if (isset($postmeta['offer_order_id'][0]) && is_numeric($postmeta['offer_order_id'][0])) {
             $order_id = $postmeta['offer_order_id'][0];
             // Set order meta data array
             $offer_order_meta = array();
             $offer_order_meta['Order ID'] = '<a href="post.php?post=' . $order_id . '&action=edit">' . '#' . $order_id . '</a>';
             // Get Order
             $order = new WC_Order($order_id);
             if ($order->post) {
                 $offer_order_meta['Order Date'] = $order->post->post_date;
                 $offer_order_meta['Order Status'] = ucwords($order->get_status());
             } else {
                 $offer_order_meta['Order ID'] .= '<br /><small><strong>Notice: </strong>' . __('Order not found; may have been deleted', $this->plugin_slug) . '</small>';
             }
         }
         // set author_data
         $author_data = get_userdata($post->post_author);
         // set author offer counts
         $author_counts = array();
         if ($author_data) {
             // count offers by author id
             $post_type = 'woocommerce_offer';
             $args = array($post_type, 'trash', $post->post_author);
             $count_all = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_type = '%s' AND post_status != '%s' AND post_author = '%s'", $args));
             $args = array($post_type, 'publish', $post->post_author);
             $count_pending = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_type = '%s' AND post_status = '%s' AND post_author = '%s'", $args));
             $args = array($post_type, 'accepted-offer', $post->post_author);
             $count_accepted = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_type = '%s' AND post_status = '%s' AND post_author = '%s'", $args));
             $args = array($post_type, 'countered-offer', $post->post_author);
             $count_countered = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_type = '%s' AND post_status = '%s' AND post_author = '%s'", $args));
             $args = array($post_type, 'buyercountered-offer', $post->post_author);
             $count_buyer_countered = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_type = '%s' AND post_status = '%s' AND post_author = '%s'", $args));
             $args = array($post_type, 'declined-offer', $post->post_author);
             $count_declined = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_type = '%s' AND post_status = '%s' AND post_author = '%s'", $args));
             $args = array($post_type, 'completed-offer', $post->post_author);
             $count_completed = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_type = '%s' AND post_status = '%s' AND post_author = '%s'", $args));
             $args = array($post_type, 'on-hold-offer', $post->post_author);
             $count_on_hold = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_type = '%s' AND post_status = '%s' AND post_author = '%s'", $args));
             $args = array($post_type, 'expired-offer', $post->post_author);
             $count_expired = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_type = '%s' AND post_status = '%s' AND post_author = '%s'", $args));
             $author_counts['all'] = apply_filters('get_usernumposts', $count_all, $post->post_author);
             $author_counts['pending'] = apply_filters('get_usernumposts', $count_pending, $post->post_author);
             $author_counts['accepted'] = apply_filters('get_usernumposts', $count_accepted, $post->post_author);
             $author_counts['countered'] = apply_filters('get_usernumposts', $count_countered, $post->post_author);
             $author_counts['buyercountered'] = apply_filters('get_usernumposts', $count_buyer_countered, $post->post_author);
             $author_counts['declined'] = apply_filters('get_usernumposts', $count_declined, $post->post_author);
             $author_counts['completed'] = apply_filters('get_usernumposts', $count_completed, $post->post_author);
             $author_counts['on_hold'] = apply_filters('get_usernumposts', $count_on_hold, $post->post_author);
             $author_counts['expired'] = apply_filters('get_usernumposts', $count_expired, $post->post_author);
             $author_data->offer_counts = $author_counts;
         }
         $query_counter_offers_history = $wpdb->prepare("SELECT * FROM {$wpdb->commentmeta} INNER JOIN {$wpdb->comments} ON {$wpdb->commentmeta}.comment_id = {$wpdb->comments}.comment_ID WHERE {$wpdb->commentmeta}.meta_value = '%d' AND {$wpdb->comments}.comment_type = 'offers-history' ORDER BY comment_date ASC", $post->ID);
         $query_counter_offers_history_result = $wpdb->get_results($query_counter_offers_history);
         /**
          * Output html for Offer Comments loop
          */
         include_once 'views/meta-panel-summary.php';
     }
 }
 /**
  * Overrides the WC Order get_status function for draft and auto-draft statuses for a subscription
  * so that it will return a pending status instead of draft / auto-draft.
  *
  * @since 2.0
  * @return string Status
  */
 public function get_status()
 {
     if (in_array(get_post_status($this->id), array('draft', 'auto-draft'))) {
         $this->post_status = 'wc-pending';
         $status = apply_filters('woocommerce_order_get_status', 'pending', $this);
     } else {
         $status = parent::get_status();
     }
     return $status;
 }
 /**
  * Get the order data for the given ID.
  *
  * @since  2.5.0
  * @param  WC_Order $order The order instance
  * @return array
  */
 protected function get_order_data($order)
 {
     $order_post = get_post($order->id);
     $dp = wc_get_price_decimals();
     $order_data = array('id' => $order->id, 'order_number' => $order->get_order_number(), 'created_at' => $this->format_datetime($order_post->post_date_gmt), 'updated_at' => $this->format_datetime($order_post->post_modified_gmt), 'completed_at' => $this->format_datetime($order->completed_date, true), 'status' => $order->get_status(), 'currency' => $order->get_order_currency(), 'total' => wc_format_decimal($order->get_total(), $dp), 'subtotal' => wc_format_decimal($order->get_subtotal(), $dp), 'total_line_items_quantity' => $order->get_item_count(), 'total_tax' => wc_format_decimal($order->get_total_tax(), $dp), 'total_shipping' => wc_format_decimal($order->get_total_shipping(), $dp), 'cart_tax' => wc_format_decimal($order->get_cart_tax(), $dp), 'shipping_tax' => wc_format_decimal($order->get_shipping_tax(), $dp), 'total_discount' => wc_format_decimal($order->get_total_discount(), $dp), 'shipping_methods' => $order->get_shipping_method(), 'payment_details' => array('method_id' => $order->payment_method, 'method_title' => $order->payment_method_title, 'paid' => isset($order->paid_date)), 'billing_address' => array('first_name' => $order->billing_first_name, 'last_name' => $order->billing_last_name, 'company' => $order->billing_company, 'address_1' => $order->billing_address_1, 'address_2' => $order->billing_address_2, 'city' => $order->billing_city, 'state' => $order->billing_state, 'postcode' => $order->billing_postcode, 'country' => $order->billing_country, 'email' => $order->billing_email, 'phone' => $order->billing_phone), 'shipping_address' => array('first_name' => $order->shipping_first_name, 'last_name' => $order->shipping_last_name, 'company' => $order->shipping_company, 'address_1' => $order->shipping_address_1, 'address_2' => $order->shipping_address_2, 'city' => $order->shipping_city, 'state' => $order->shipping_state, 'postcode' => $order->shipping_postcode, 'country' => $order->shipping_country), 'note' => $order->customer_note, 'customer_ip' => $order->customer_ip_address, 'customer_user_agent' => $order->customer_user_agent, 'customer_id' => $order->get_user_id(), 'view_order_url' => $order->get_view_order_url(), 'line_items' => array(), 'shipping_lines' => array(), 'tax_lines' => array(), 'fee_lines' => array(), 'coupon_lines' => array());
     // add line items
     foreach ($order->get_items() as $item_id => $item) {
         $product = $order->get_product_from_item($item);
         $product_id = null;
         $product_sku = null;
         // Check if the product exists.
         if (is_object($product)) {
             $product_id = isset($product->variation_id) ? $product->variation_id : $product->id;
             $product_sku = $product->get_sku();
         }
         $meta = new WC_Order_Item_Meta($item, $product);
         $item_meta = array();
         foreach ($meta->get_formatted(null) as $meta_key => $formatted_meta) {
             $item_meta[] = array('key' => $meta_key, 'label' => $formatted_meta['label'], 'value' => $formatted_meta['value']);
         }
         $order_data['line_items'][] = array('id' => $item_id, 'subtotal' => wc_format_decimal($order->get_line_subtotal($item, false, false), $dp), 'subtotal_tax' => wc_format_decimal($item['line_subtotal_tax'], $dp), 'total' => wc_format_decimal($order->get_line_total($item, false, false), $dp), 'total_tax' => wc_format_decimal($item['line_tax'], $dp), 'price' => wc_format_decimal($order->get_item_total($item, false, false), $dp), 'quantity' => wc_stock_amount($item['qty']), 'tax_class' => !empty($item['tax_class']) ? $item['tax_class'] : null, 'name' => $item['name'], 'product_id' => $product_id, 'sku' => $product_sku, 'meta' => $item_meta);
     }
     // Add shipping.
     foreach ($order->get_shipping_methods() as $shipping_item_id => $shipping_item) {
         $order_data['shipping_lines'][] = array('id' => $shipping_item_id, 'method_id' => $shipping_item['method_id'], 'method_title' => $shipping_item['name'], 'total' => wc_format_decimal($shipping_item['cost'], $dp));
     }
     // Add taxes.
     foreach ($order->get_tax_totals() as $tax_code => $tax) {
         $order_data['tax_lines'][] = array('id' => $tax->id, 'rate_id' => $tax->rate_id, 'code' => $tax_code, 'title' => $tax->label, 'total' => wc_format_decimal($tax->amount, $dp), 'compound' => (bool) $tax->is_compound);
     }
     // Add fees.
     foreach ($order->get_fees() as $fee_item_id => $fee_item) {
         $order_data['fee_lines'][] = array('id' => $fee_item_id, 'title' => $fee_item['name'], 'tax_class' => !empty($fee_item['tax_class']) ? $fee_item['tax_class'] : null, 'total' => wc_format_decimal($order->get_line_total($fee_item), $dp), 'total_tax' => wc_format_decimal($order->get_line_tax($fee_item), $dp));
     }
     // Add coupons.
     foreach ($order->get_items('coupon') as $coupon_item_id => $coupon_item) {
         $order_data['coupon_lines'][] = array('id' => $coupon_item_id, 'code' => $coupon_item['name'], 'amount' => wc_format_decimal($coupon_item['discount_amount'], $dp));
     }
     $order_data = apply_filters('woocommerce_cli_order_data', $order_data);
     return $this->flatten_array($order_data);
 }
 /**
  * Process a pre-order payment when the pre-order is released.
  *
  * @param WC_Order $order
  * @return wp_error|null
  */
 public function process_pre_order_release_payment($order)
 {
     try {
         $order_items = $order->get_items();
         $order_item = array_shift($order_items);
         $pre_order_name = sprintf(__('%s - Pre-order for "%s"', 'woocommerce'), esc_html(get_bloginfo('name', 'display')), $order_item['name']) . ' ' . sprintf(__('(Order #%s)', 'woocommerce'), $order->get_order_number());
         $customer_id = get_post_meta($order->id, '_simplify_customer_id', true);
         if (!$customer_id) {
             return new WP_Error('simplify_error', __('Customer not found', 'woocommerce'));
         }
         // Charge the customer
         $payment = Simplify_Payment::createPayment(array('amount' => $order->order_total * 100, 'customer' => $customer_id, 'description' => trim(substr($pre_order_name, 0, 1024)), 'currency' => strtoupper(get_woocommerce_currency()), 'reference' => $order->id));
         if ('APPROVED' == $payment->paymentStatus) {
             // Payment complete
             $order->payment_complete($payment->id);
             // Add order note
             $order->add_order_note(sprintf(__('Simplify payment approved (ID: %s, Auth Code: %s)', 'woocommerce'), $payment->id, $payment->authCode));
         } else {
             return new WP_Error('simplify_payment_declined', __('Payment was declined - the customer need to try another card.', 'woocommerce'));
         }
     } catch (Exception $e) {
         $order_note = sprintf(__('Simplify Transaction Failed (%s)', 'woocommerce'), $e->getMessage());
         // Mark order as failed if not already set,
         // otherwise, make sure we add the order note so we can detect when someone fails to check out multiple times
         if ('failed' != $order->get_status()) {
             $order->update_status('failed', $order_note);
         } else {
             $order->add_order_note($order_note);
         }
     }
 }
 /**
  * Thank You page message.
  *
  * @param  int    $order_id Order ID.
  *
  * @return string
  */
 public function thankyou_page($order_id)
 {
     $order = new WC_Order($order_id);
     $order_status = $order->get_status();
 }
 /** 
  * Returns order status of a WooCommerce order
  */
 public function getOrderStatus(WC_Order $order)
 {
     return $order->get_status();
 }
    public static function view_order_shortcode_output($atts)
    {
        if (!is_user_logged_in()) {
            return;
        }
        extract(shortcode_atts(array('order_count' => 10), $atts));
        $user_id = get_current_user_id();
        $order_id = isset($_GET['order']) ? $_GET['order'] : 0;
        $order = new WC_Order($order_id);
        if ($order_id == 0) {
            wc_get_template('myaccount/my-orders.php', array('order_count' => 'all' == $order_count ? -1 : $order_count));
            return;
        }
        if (!current_user_can('delete_users') && $order->user_id != $user_id) {
            echo '<div class="woocommerce-error">' . __('Invalid order.', 'woocommerce') . ' <a href="' . get_permalink(wc_get_page_id('myaccount')) . '">' . __('My Account &rarr;', 'opentickets-community-edition') . '</a>' . '</div>';
            return;
        }
        if (is_callable(array(&$order, 'get_status'))) {
            $status = $order->get_status();
        } else {
            $status = get_term_by('slug', $order->status, 'shop_order_status');
        }
        echo '<p class="order-info">' . sprintf(__('Order <mark class="order-number">%s</mark> made on <mark class="order-date">%s</mark>', 'opentickets-community-edition'), $order->get_order_number(), date_i18n(get_option('date_format'), strtotime($order->order_date))) . '. ' . sprintf(__('Order status: <mark class="order-status">%s</mark>', 'opentickets-community-edition'), __($status->name, 'opentickets-community-edition')) . '.</p>';
        $notes = $order->get_customer_order_notes();
        if ($notes) {
            ?>
			<h2><?php 
            _e('Order Updates', 'opentickets-community-edition');
            ?>
</h2>
			<ol class="commentlist notes">
				<?php 
            foreach ($notes as $note) {
                ?>
				<li class="comment note">
					<div class="comment_container">
						<div class="comment-text">
							<p class="meta"><?php 
                echo date_i18n(__('l jS \\of F Y, h:ia', 'opentickets-community-edition'), strtotime($note->comment_date));
                ?>
</p>
							<div class="description">
								<?php 
                echo wpautop(wptexturize($note->comment_content));
                ?>
							</div>
			  				<div class="clear"></div>
			  			</div>
						<div class="clear"></div>
					</div>
				</li>
				<?php 
            }
            ?>
			</ol>
			<?php 
        }
        do_action('woocommerce_view_order', $order_id);
    }
Beispiel #29
0
 /** ************************************************************************
  * Recommended. This is a custom column method and is responsible for what
  * is rendered in any column with a name/slug of 'title'. Every time the class
  * needs to render a column, it first looks for a method named 
  * column_{$column_title} - if it exists, that method is run. If it doesn't
  * exist, column_default() is called instead.
  * 
  * This example also illustrates how to implement rollover actions. Actions
  * should be an associative array formatted as 'slug'=>'link html' - and you
  * will need to generate the URLs yourself. You could even ensure the links
  * 
  * 
  * @see WP_List_Table::::single_row_columns()
  * @param array $item A singular item (one full row's worth of data)
  * @return string Text to be placed inside the column <td> (profile title only)
  **************************************************************************/
 function column_details($item)
 {
     // get current page with paging as url param
     $page = $_REQUEST['page'];
     if (isset($_REQUEST['paged'])) {
         $page .= '&paged=' . $_REQUEST['paged'];
     }
     if (isset($_REQUEST['s'])) {
         $page .= '&s=' . urlencode($_REQUEST['s']);
     }
     if (isset($_REQUEST['order_status'])) {
         $page .= '&order_status=' . $_REQUEST['order_status'];
     }
     //Build row actions
     $actions = array('view_ebay_order_details' => sprintf('<a href="?page=%s&action=%s&ebay_order=%s&width=600&height=470" class="thickbox">%s</a>', $page, 'view_ebay_order_details', $item['id'], __('Details', 'wplister')));
     // try to find created order
     $order_post_id = $item['post_id'];
     $order_exists = false;
     $order_msg = '';
     if ($order_post_id) {
         $order = new WC_Order();
         if ($order->get_order($order_post_id)) {
             // order exists - but might be trashed
             if ($order->post_status == 'trash') {
                 $order_msg = '<br><small style="color:darkred;">Order #' . $order_post_id . ' has been trashed.</small>';
             } else {
                 $order_exists = true;
                 $order_msg = '<br><small>Order ' . $order->get_order_number() . ' is ' . $order->get_status() . '.</small>';
             }
         } else {
             // order does not exist - probably deleted
             $order_msg = '<br><small style="color:darkred;">Order #' . $order_post_id . ' has been deleted.</small>';
         }
     }
     // create or edit order link
     if ($order_exists) {
         $actions['edit_order'] = sprintf('<a href="post.php?action=%s&post=%s">%s</a>', 'edit', $item['post_id'], __('View Order', 'wplister'));
     } else {
         $actions['create_order'] = sprintf('<a href="?page=%s&action=%s&ebay_order=%s">%s</a>', $page, 'create_order', $item['id'], __('Create Order', 'wplister'));
     }
     // free version can't create orders
     if (WPLISTER_LIGHT) {
         unset($actions['create_order']);
     }
     // item title
     $title = $item['buyer_name'];
     if ($item['buyer_userid']) {
         $title .= ' <i style="color:silver">' . $item['buyer_userid'] . '</i>';
     }
     $item_details = maybe_unserialize($item['details']);
     if ($item_details) {
         if ($item_details->IsMultiLegShipping) {
             $title .= '<br><small>Global Shipping Program</small>';
         }
     }
     //Return the title contents
     return sprintf('%1$s %2$s', $title . $order_msg, $this->row_actions($actions));
 }
 /**
  * Method to update an order in the database.
  * @param WC_Order $order
  */
 public function update(&$order)
 {
     $order->set_version(WC_VERSION);
     wp_update_post(array('ID' => $order->get_id(), 'post_date' => date('Y-m-d H:i:s', $order->get_date_created('edit')), 'post_date_gmt' => get_gmt_from_date(date('Y-m-d H:i:s', $order->get_date_created('edit'))), 'post_status' => 'wc-' . ($order->get_status('edit') ? $order->get_status('edit') : apply_filters('woocommerce_default_order_status', 'pending')), 'post_parent' => $order->get_parent_id(), 'post_excerpt' => $this->get_post_excerpt($order)));
     $this->update_post_meta($order);
     $order->save_meta_data();
     $order->apply_changes();
     $this->clear_caches($order);
 }