function woo_ce_get_order_data( $order_id = 0, $export_type = 'order', $args = array(), $fields = array() ) { global $export; $defaults = array( 'order_items' => 'combined', 'order_items_types' => array_keys( woo_ce_get_order_items_types() ) ); $args = wp_parse_args( $args, $defaults ); // Get WooCommerce Order details $order = woo_ce_get_order_wc_data( $order_id ); $order->ID = ( isset( $order->id ) ? $order->id : $order_id ); $order->payment_status = $order->status; // Check if this is a pre-WooCommerce 2.2 instance $woocommerce_version = woo_get_woo_version(); $order->post_status = woo_ce_format_post_status( $order->post_status ); $order->user_id = get_post_meta( $order_id, '_customer_user', true ); if( $order->user_id == 0 ) $order->user_id = ''; $order->user_name = woo_ce_get_username( $order->user_id ); $order->user_role = woo_ce_format_user_role_label( woo_ce_get_user_role( $order->user_id ) ); $order->purchase_total = get_post_meta( $order_id, '_order_total', true ); $order->order_currency = get_post_meta( $order_id, '_order_currency', true ); $order->billing_first_name = get_post_meta( $order_id, '_billing_first_name', true ); $order->billing_last_name = get_post_meta( $order_id, '_billing_last_name', true ); if( empty( $order->billing_first_name ) && empty( $order->billing_first_name ) ) $order->billing_full_name = ''; else $order->billing_full_name = $order->billing_first_name . ' ' . $order->billing_last_name; $order->billing_company = get_post_meta( $order_id, '_billing_company', true ); $order->billing_address = ''; $order->billing_address_1 = get_post_meta( $order_id, '_billing_address_1', true ); $order->billing_address_2 = get_post_meta( $order_id, '_billing_address_2', true ); if( !empty( $order->billing_address_2 ) ) $order->billing_address = sprintf( apply_filters( 'woo_ce_get_order_data_billing_address', '%s %s' ), $order->billing_address_1, $order->billing_address_2 ); else $order->billing_address = $order->billing_address_1; $order->billing_city = get_post_meta( $order_id, '_billing_city', true ); $order->billing_postcode = get_post_meta( $order_id, '_billing_postcode', true ); $order->billing_state = get_post_meta( $order_id, '_billing_state', true ); $order->billing_country = get_post_meta( $order_id, '_billing_country', true ); $order->billing_state_full = woo_ce_expand_state_name( $order->billing_country, $order->billing_state ); $order->billing_country_full = woo_ce_expand_country_name( $order->billing_country ); $order->billing_phone = get_post_meta( $order_id, '_billing_phone', true ); $order->billing_email = get_post_meta( $order_id, '_billing_email', true ); // If the e-mail address is empty check if the Order has a User assigned to it if( empty( $order->billing_email ) ) { // Check if a User ID has been assigned if( !empty( $order->user_id ) ) { $user = woo_ce_get_user_data( $order->user_id ); // Check if the User is valid and e-mail assigned to User if( isset( $user->email ) ) $order->billing_email = $user->email; unset( $user ); } } $order->shipping_first_name = get_post_meta( $order_id, '_shipping_first_name', true ); $order->shipping_last_name = get_post_meta( $order_id, '_shipping_last_name', true ); if( empty( $order->shipping_first_name ) && empty( $order->shipping_last_name ) ) $order->shipping_full_name = ''; else $order->shipping_full_name = $order->shipping_first_name . ' ' . $order->shipping_last_name; $order->shipping_company = get_post_meta( $order_id, '_shipping_company', true ); $order->shipping_address = ''; $order->shipping_address_1 = get_post_meta( $order_id, '_shipping_address_1', true ); $order->shipping_address_2 = get_post_meta( $order_id, '_shipping_address_2', true ); if( !empty( $order->billing_address_2 ) ) $order->shipping_address = sprintf( apply_filters( 'woo_ce_get_order_data_shipping_address', '%s %s' ), $order->shipping_address_1, $order->shipping_address_2 ); else $order->shipping_address = $order->shipping_address_1; $order->shipping_city = get_post_meta( $order_id, '_shipping_city', true ); $order->shipping_postcode = get_post_meta( $order_id, '_shipping_postcode', true ); $order->shipping_state = get_post_meta( $order_id, '_shipping_state', true ); $order->shipping_country = get_post_meta( $order_id, '_shipping_country', true ); $order->shipping_state_full = woo_ce_expand_state_name( $order->shipping_country, $order->shipping_state ); $order->shipping_country_full = woo_ce_expand_country_name( $order->shipping_country ); $order->shipping_phone = get_post_meta( $order_id, '_shipping_phone', true ); if( $export_type == 'order' ) { $order->post_id = $order->purchase_id = $order_id; $order->order_discount = get_post_meta( $order_id, '_cart_discount', true ); $order->coupon_code = woo_ce_get_order_assoc_coupon( $order_id ); if( !empty( $order->coupon_code ) ) { $coupon = get_page_by_title( $order->coupon_code, OBJECT, 'shop_coupon' ); if( $coupon !== null ) $order->coupon_description = $coupon->post_excerpt; unset( $coupon ); } $order->order_sales_tax = get_post_meta( $order_id, '_order_tax', true ); $order->order_shipping_tax = get_post_meta( $order_id, '_order_shipping_tax', true ); $order->purchase_total_tax = ( $order->order_sales_tax - $order->order_shipping_tax ); $order->order_excl_tax = ( $order->purchase_total - $order->purchase_total_tax ); // Order Tax Percentage - Order Total - Total Tax / Total Tax if( !empty( $order->purchase_total_tax ) && !empty( $order->purchase_total ) ) $order->order_tax_percentage = absint( ( $order->purchase_total - $order->purchase_total_tax ) / $order->purchase_total_tax ) . '%'; $order->purchase_total = woo_ce_format_price( $order->purchase_total, $order->order_currency ); $order->order_sales_tax = woo_ce_format_price( $order->order_sales_tax, $order->order_currency ); $order->order_shipping_tax = woo_ce_format_price( $order->order_shipping_tax, $order->order_currency ); $order->purchase_subtotal = woo_ce_format_price( $order->order_excl_tax, $order->order_currency ); $order->order_discount = woo_ce_format_price( $order->order_discount, $order->order_currency ); $order->order_excl_tax = woo_ce_format_price( $order->order_excl_tax, $order->order_currency ); $order->payment_status = woo_ce_format_order_status( $order->payment_status ); $order->payment_gateway_id = get_post_meta( $order_id, '_payment_method', true ); $order->payment_gateway = woo_ce_format_order_payment_gateway( $order->payment_gateway_id ); // WooCommerce 2.1 stores the shipping method in cart items, includes fallback support if( method_exists( $order, 'get_shipping_method' ) ) { $order->shipping_method_id = woo_ce_get_order_assoc_shipping_method_id( $order_id ); $order->shipping_method = $order->get_shipping_method(); } else { $order->shipping_method_id = get_post_meta( $order_id, '_shipping_method', true ); $order->shipping_method = ''; } $order->shipping_cost = woo_ce_format_price( get_post_meta( $order_id, '_order_shipping', true ), $order->order_currency ); $order->shipping_weight = ''; $order->order_key = get_post_meta( $order_id, '_order_key', true ); $order->purchase_date = woo_ce_format_date( $order->order_date ); $order->purchase_time = mysql2date( 'H:i:s', $order->order_date ); $order->ip_address = woo_ce_format_ip_address( get_post_meta( $order_id, '_customer_ip_address', true ) ); $order->browser_agent = get_post_meta( $order_id, '_customer_user_agent', true ); $order->has_downloads = 0; $order->has_downloaded = 0; // Order Downloads if( $order_downloads = woo_ce_get_order_assoc_downloads( $order_id ) ) { $order->has_downloads = 1; foreach( $order_downloads as $order_download ) { // Check if any download permissions have counts against them if( $order_download->download_count > 0 ) { $order->has_downloaded = 1; break; } } } unset( $order_downloads, $order_download ); $order->has_downloads = woo_ce_format_switch( $order->has_downloads ); $order->has_downloaded = woo_ce_format_switch( $order->has_downloaded ); $order->customer_notes = ''; $order->order_notes = ''; $order->total_quantity = 0; $order->total_order_items = 0; // Order Notes if( $order_notes = woo_ce_get_order_assoc_notes( $order_id ) ) { if( WOO_CD_DEBUG ) $order->order_notes = implode( $export->category_separator, $order_notes ); else $order->order_notes = implode( "\n", $order_notes ); unset( $order_notes ); } // Customer Notes if( $order_notes = woo_ce_get_order_assoc_notes( $order_id, 'customer_note' ) ) { if( WOO_CD_DEBUG ) $order->customer_notes = implode( $export->category_separator, $order_notes ); else $order->customer_notes = implode( "\n", $order_notes ); unset( $order_notes ); } if( $order->order_items = woo_ce_get_order_items( $order_id, $args['order_items_types'] ) ) { $order->total_order_items = count( $order->order_items ); if( $args['order_items'] == 'combined' ) { $order->order_items_product_id = ''; $order->order_items_variation_id = ''; $order->order_items_sku = ''; $order->order_items_name = ''; $order->order_items_variation = ''; $order->order_items_description = ''; $order->order_items_excerpt = ''; $order->order_items_tax_class = ''; $order->order_items_quantity = ''; $order->order_items_total = ''; $order->order_items_subtotal = ''; $order->order_items_rrp = ''; $order->order_items_stock = ''; $order->order_items_tax = ''; $order->order_items_tax_subtotal = ''; $order->order_items_type = ''; $order->order_items_category = ''; $order->order_items_tag = ''; $order->order_items_total_sales = ''; $order->order_items_weight = ''; $order->order_items_total_weight = ''; if( !empty( $order->order_items ) ) { foreach( $order->order_items as $order_item ) { if( empty( $order_item->sku ) ) $order_item->sku = ''; $order->order_items_product_id .= $order_item->product_id . $export->category_separator; $order->order_items_variation_id .= $order_item->variation_id . $export->category_separator; $order->order_items_sku .= $order_item->sku . $export->category_separator; $order->order_items_name .= $order_item->name . $export->category_separator; $order->order_items_variation .= $order_item->variation . $export->category_separator; $order->order_items_description .= woo_ce_format_description_excerpt( $order_item->description ) . $export->category_separator; $order->order_items_excerpt .= woo_ce_format_description_excerpt( $order_item->excerpt ) . $export->category_separator; $order->order_items_tax_class .= $order_item->tax_class . $export->category_separator; $order->total_quantity += $order_item->quantity; if( empty( $order_item->quantity ) && '0' != $order_item->quantity ) $order_item->quantity = ''; $order->order_items_quantity .= $order_item->quantity . $export->category_separator; $order->order_items_total .= $order_item->total . $export->category_separator; $order->order_items_subtotal .= $order_item->subtotal . $export->category_separator; $order->order_items_rrp .= $order_item->rrp . $export->category_separator; $order->order_items_stock .= $order_item->stock . $export->category_separator; $order->order_items_tax .= $order_item->tax . $export->category_separator; $order->order_items_tax_subtotal .= $order_item->tax_subtotal . $export->category_separator; $order->order_items_type .= $order_item->type . $export->category_separator; $order->order_items_category .= $order_item->category . $export->category_separator; $order->order_items_tag .= $order_item->tag . $export->category_separator; $order->order_items_total_sales .= $order_item->total_sales . $export->category_separator; $order->order_items_weight .= $order_item->weight . $export->category_separator; $order->order_items_total_weight .= $order_item->total_weight . $export->category_separator; // Add Order Item weight to Shipping Weight if( $order_item->total_weight != '' ) $order->shipping_weight = $order->shipping_weight + $order_item->total_weight; } $order->order_items_product_id = substr( $order->order_items_product_id, 0, -1 ); $order->order_items_variation_id = substr( $order->order_items_variation_id, 0, -1 ); $order->order_items_sku = substr( $order->order_items_sku, 0, -1 ); $order->order_items_name = substr( $order->order_items_name, 0, -1 ); $order->order_items_variation = substr( $order->order_items_variation, 0, -1 ); $order->order_items_description = substr( $order->order_items_description, 0, -1 ); $order->order_items_excerpt = substr( $order->order_items_excerpt, 0, -1 ); $order->order_items_tax_class = substr( $order->order_items_tax_class, 0, -1 ); $order->order_items_quantity = substr( $order->order_items_quantity, 0, -1 ); $order->order_items_total = substr( $order->order_items_total, 0, -1 ); $order->order_items_subtotal = substr( $order->order_items_subtotal, 0, -1 ); $order->order_items_rrp = substr( $order->order_items_rrp, 0, -1 ); $order->order_items_stock = substr( $order->order_items_stock, 0, -1 ); $order->order_items_tax = substr( $order_item->tax, 0, -1 ); $order->order_items_tax_subtotal = substr( $order_item->tax_subtotal, 0, -1 ); $order->order_items_type = substr( $order->order_items_type, 0, -1 ); $order->order_items_category = substr( $order->order_items_category, 0, -1 ); $order->order_items_tag = substr( $order->order_items_tag, 0, -1 ); $order->order_items_total_sales = substr( $order->order_items_total_sales, 0, -1 ); $order->order_items_weight = substr( $order->order_items_weight, 0, -1 ); $order->order_items_total_weight = substr( $order->order_items_total_weight, 0, -1 ); } $order = apply_filters( 'woo_ce_order_items_combined', $order ); } else if( $args['order_items'] == 'unique' ) { if( !empty( $order->order_items ) ) { $i = 1; foreach( $order->order_items as $order_item ) { $order->{sprintf( 'order_item_%d_product_id', $i )} = $order_item->product_id; $order->{sprintf( 'order_item_%d_variation_id', $i )} = $order_item->variation_id; $order->{sprintf( 'order_item_%d_sku', $i )} = ( empty( $order_item->sku ) == false ? $order_item->sku : '' ); $order->{sprintf( 'order_item_%d_name', $i )} = $order_item->name; $order->{sprintf( 'order_item_%d_variation', $i )} = $order_item->variation; $order->{sprintf( 'order_item_%d_description', $i )} = $order_item->description; $order->{sprintf( 'order_item_%d_excerpt', $i )} = $order_item->excerpt; $order->{sprintf( 'order_item_%d_tax_class', $i )} = $order_item->tax_class; $order->total_quantity += $order_item->quantity; if( empty( $order_item->quantity ) && '0' != $order_item->quantity ) $order_item->quantity = ''; $order->{sprintf( 'order_item_%d_quantity', $i )} = $order_item->quantity; $order->{sprintf( 'order_item_%d_total', $i )} = $order_item->total; $order->{sprintf( 'order_item_%d_subtotal', $i )} = $order_item->subtotal; $order->{sprintf( 'order_item_%d_rrp', $i )} = $order_item->rrp; $order->{sprintf( 'order_item_%d_stock', $i )} = $order_item->stock; $order->{sprintf( 'order_item_%d_tax', $i )} = $order_item->tax; $order->{sprintf( 'order_item_%d_tax_subtotal', $i )} = $order_item->tax_subtotal; $order->{sprintf( 'order_item_%d_type', $i )} = $order_item->type; $order->{sprintf( 'order_item_%d_category', $i )} = $order_item->category; $order->{sprintf( 'order_item_%d_tag', $i )} = $order_item->tag; $order->{sprintf( 'order_item_%d_total_sales', $i )} = $order_item->total_sales; $order->{sprintf( 'order_item_%d_weight', $i )} = $order_item->weight; $order->{sprintf( 'order_item_%d_total_weight', $i )} = $order_item->total_weight; // Add Order Item weight to Shipping Weight if( $order_item->total_weight != '' ) $order->shipping_weight = $order->shipping_weight + $order_item->total_weight; $order = apply_filters( 'woo_ce_order_items_unique', $order, $i, $order_item ); $i++; } } } } // Custom Order fields $custom_orders = woo_ce_get_option( 'custom_orders', '' ); if( !empty( $custom_orders ) ) { foreach( $custom_orders as $custom_order ) { if( !empty( $custom_order ) ) { $order->{$custom_order} = woo_ce_format_custom_meta( get_post_meta( $order_id, $custom_order, true ) ); } } } } else if( $export_type = 'customer' ) { // Check if the Order has a User assigned to it if( !empty( $order->user_id ) ) { // Load up the User data as other Plugins will use it too $user = woo_ce_get_user_data( $order->user_id ); // WooCommerce Follow-Up Emails - http://www.woothemes.com/products/follow-up-emails/ if( class_exists( 'FollowUpEmails' ) ) { global $wpdb; if( isset( $user->email ) ) { $followup_optout_sql = $wpdb->prepare( "SELECT `id` FROM `" . $wpdb->prefix . "followup_email_excludes` WHERE `email` = %s LIMIT 1", $user->email ); $order->followup_optout = $wpdb->get_var( $followup_optout_sql ); } } // Custom User fields $custom_users = woo_ce_get_option( 'custom_users', '' ); if( !empty( $custom_users ) ) { foreach( $custom_users as $custom_user ) { if( !empty( $custom_user ) && !isset( $order->{$custom_user} ) ) { $order->{$custom_user} = woo_ce_format_custom_meta( get_user_meta( $order->user_id, $custom_user, true ) ); } } } unset( $custom_users, $custom_user ); // Clean up unset( $user ); } // Custom Customer fields $custom_customers = woo_ce_get_option( 'custom_customers', '' ); if( !empty( $custom_customers ) ) { foreach( $custom_customers as $custom_customer ) { if( !empty( $custom_customer ) ) $order->{$custom_customer} = esc_attr( get_user_meta( $order->user_id, $custom_customer, true ) ); } } } $order = apply_filters( 'woo_ce_order', $order, $order_id ); // Trim back the Order just to requested export fields if( !empty( $fields ) ) { $fields[] = 'id'; if( $args['order_items'] == 'individual' ) $fields[] = 'order_items'; if( !empty( $order ) ) { foreach( $order as $key => $data ) { if( !in_array( $key, $fields ) ) unset( $order->$key ); } } } return $order; }
function woo_cd_get_orders($export_type = 'orders', $args = array()) { global $export; $limit_volume = -1; $offset = 0; if ($args) { $user_roles = $args['order_user_roles']; $limit_volume = $args['limit_volume']; $offset = $args['offset']; $orderby = $args['order_orderby']; $order = $args['order_order']; switch ($args['order_dates_filter']) { case 'current_month': $order_dates_from = date('d-m-Y', mktime(0, 0, 0, date('m'), 1, date('Y'))); $order_dates_to = date('d-m-Y', mktime(0, 0, 0, date('m') + 1, 0, date('Y'))); break; case 'last_month': $order_dates_from = date('d-m-Y', mktime(0, 0, 0, date('m') - 1, 1, date('Y'))); $order_dates_to = date('d-m-Y', mktime(0, 0, 0, date('m'), 0, date('Y'))); break; case 'last_quarter': break; case 'manual': $order_dates_from = $args['order_dates_from']; $order_dates_to = $args['order_dates_to']; break; default: $order_dates_from = false; $order_dates_to = false; break; } if ($order_dates_from && $order_dates_to) { $order_dates_from = strtotime($order_dates_from); $order_dates_to = explode('-', $order_dates_to); $order_dates_to = strtotime(date('d-m-Y', mktime(0, 0, 0, $order_dates_to[1], $order_dates_to[0] + 1, $order_dates_to[2]))); } $order_status = $args['order_status']; $user_id = $args['order_customer']; $order_items = $args['order_items']; } $post_type = 'shop_order'; $args = array('post_type' => $post_type, 'orderby' => $orderby, 'order' => $order, 'numberposts' => $limit_volume, 'offset' => $offset, 'post_status' => woo_ce_post_statuses(), 'cache_results' => false, 'no_found_rows' => false); if (!empty($order_status)) { $term_taxonomy = 'shop_order_status'; $args['tax_query'] = array(array('taxonomy' => $term_taxonomy, 'field' => 'slug', 'terms' => $order_status)); } if (!empty($user_id)) { if ($user = get_userdata($user_id)) { $args['meta_key'] = '_billing_email'; $args['meta_value'] = $user->user_email; } } $export->total_rows = 0; if ($orders = get_posts($args)) { $export->total_rows = count($orders); foreach ($orders as $key => $order) { // $order = woo_cd_get_order_data( $order ); // Filter Order dates by dropping those outside the date range if ($order_dates_from && $order_dates_to) { if (strtotime($order->post_date) > $order_dates_from && strtotime($order->post_date) < $order_dates_to) { // Do nothing } else { unset($orders[$key]); continue; } } $orders[$key]->user_id = get_post_meta($order->ID, '_customer_user', true); // Filter Orders by User Roles if ($user_roles) { $user_ids = array(); $size = count($export->args['order_user_roles']); for ($i = 0; $i < $size; $i++) { $args = array('role' => $export->args['order_user_roles'][$i], 'fields' => 'ID'); $user_id = get_users($args); $user_ids = array_merge($user_ids, $user_id); } if (!in_array($orders[$key]->user_id, $user_ids)) { unset($orders[$key]); continue; } } $orders[$key]->purchase_total = get_post_meta($order->ID, '_order_total', true); $orders[$key]->payment_status = woo_cd_get_order_status($order->ID); if ($orders[$key]->user_id == 0) { $orders[$key]->user_id = ''; } $orders[$key]->user_name = woo_cd_get_username($orders[$key]->user_id); $orders[$key]->user_role = woo_ce_format_user_role_label(woo_cd_get_user_role($orders[$key]->user_id)); $orders[$key]->billing_first_name = get_post_meta($order->ID, '_billing_first_name', true); $orders[$key]->billing_last_name = get_post_meta($order->ID, '_billing_last_name', true); if (empty($orders[$key]->billing_first_name) && empty($orders[$key]->billing_first_name)) { $orders[$key]->billing_full_name = ''; } else { $orders[$key]->billing_full_name = $orders[$key]->billing_first_name . ' ' . $orders[$key]->billing_last_name; } $orders[$key]->billing_company = get_post_meta($order->ID, '_billing_company', true); $orders[$key]->billing_address = get_post_meta($order->ID, '_billing_address_1', true); $orders[$key]->billing_address_alt = get_post_meta($order->ID, '_billing_address_2', true); if ($orders[$key]->billing_address_alt) { $orders[$key]->billing_address .= ' ' . $orders[$key]->billing_address_alt; } $orders[$key]->billing_city = get_post_meta($order->ID, '_billing_city', true); $orders[$key]->billing_postcode = get_post_meta($order->ID, '_billing_postcode', true); $orders[$key]->billing_state = get_post_meta($order->ID, '_billing_state', true); $orders[$key]->billing_country = get_post_meta($order->ID, '_billing_country', true); $orders[$key]->billing_state_full = woo_ce_expand_state_name($orders[$key]->billing_country, $orders[$key]->billing_state); $orders[$key]->billing_country_full = woo_ce_expand_country_name($orders[$key]->billing_country); $orders[$key]->billing_phone = get_post_meta($order->ID, '_billing_phone', true); $orders[$key]->billing_email = get_post_meta($order->ID, '_billing_email', true); $orders[$key]->shipping_first_name = get_post_meta($order->ID, '_shipping_first_name', true); $orders[$key]->shipping_last_name = get_post_meta($order->ID, '_shipping_last_name', true); if (empty($orders[$key]->shipping_first_name) && empty($orders[$key]->shipping_first_name)) { $orders[$key]->shipping_full_name = ''; } else { $orders[$key]->shipping_full_name = $orders[$key]->shipping_first_name . ' ' . $orders[$key]->shipping_last_name; } $orders[$key]->shipping_company = get_post_meta($order->ID, '_shipping_company', true); $orders[$key]->shipping_address = get_post_meta($order->ID, '_shipping_address_1', true); $orders[$key]->shipping_address_alt = get_post_meta($order->ID, '_shipping_address_2', true); if ($orders[$key]->shipping_address_alt) { $orders[$key]->shipping_address .= ' ' . $orders[$key]->shipping_address_alt; } $orders[$key]->shipping_city = get_post_meta($order->ID, '_shipping_city', true); $orders[$key]->shipping_postcode = get_post_meta($order->ID, '_shipping_postcode', true); $orders[$key]->shipping_state = get_post_meta($order->ID, '_shipping_state', true); $orders[$key]->shipping_country = get_post_meta($order->ID, '_shipping_country', true); $orders[$key]->shipping_state_full = woo_ce_expand_state_name($orders[$key]->shipping_country, $orders[$key]->shipping_state); $orders[$key]->shipping_country_full = woo_ce_expand_country_name($orders[$key]->shipping_country); $orders[$key]->shipping_phone = get_post_meta($order->ID, '_shipping_phone', true); if ($export_type == 'orders') { $orders[$key]->purchase_id = $order->ID; $orders[$key]->order_discount = get_post_meta($order->ID, '_order_discount', true); $orders[$key]->order_sales_tax = get_post_meta($order->ID, '_order_tax', true); $orders[$key]->order_shipping_tax = get_post_meta($order->ID, '_order_shipping_tax', true); $orders[$key]->order_excl_tax = $orders[$key]->purchase_total - ($orders[$key]->order_sales_tax - $orders[$key]->order_shipping_tax); $orders[$key]->payment_status = woo_cd_format_order_status($orders[$key]->payment_status); $orders[$key]->payment_gateway_id = get_post_meta($order->ID, '_payment_method', true); $orders[$key]->payment_gateway = woo_cd_format_order_payment_gateway($orders[$key]->payment_gateway_id); $orders[$key]->shipping_method_id = get_post_meta($order->ID, '_shipping_method', true); $orders[$key]->shipping_method = woo_cd_format_shipping_method($orders[$key]->shipping_method_id); $orders[$key]->shipping_cost = get_post_meta($order->ID, '_order_shipping', true); $orders[$key]->order_key = get_post_meta($order->ID, '_order_key', true); $orders[$key]->purchase_date = woo_ce_format_date($order->post_date); $orders[$key]->purchase_time = mysql2date('H:i:s', $order->post_date); $orders[$key]->customer_note = $order->post_excerpt; $orders[$key]->ip_address = get_post_meta($order->ID, '_customer_ip_address', true); $orders[$key]->browser_agent = get_post_meta($order->ID, '_customer_user_agent', true); $orders[$key]->order_notes = ''; if ($order_notes = woo_cd_get_order_assoc_notes($order->ID)) { foreach ($order_notes as $order_note) { $orders[$key]->order_notes .= $order_note->comment_content . $export->category_separator; } $orders[$key]->order_notes = substr($orders[$key]->order_notes, 0, -1); unset($order_notes); } $orders[$key]->order_items_size = 0; if ($orders[$key]->order_items = woo_cd_get_order_items($order->ID)) { $orders[$key]->order_items_size = count($orders[$key]->order_items); if ($order_items == 'combined') { $orders[$key]->order_items_product_id = ''; $orders[$key]->order_items_variation_id = ''; $orders[$key]->order_items_sku = ''; $orders[$key]->order_items_name = ''; $orders[$key]->order_items_variation = ''; $orders[$key]->order_items_tax_class = ''; $orders[$key]->order_items_quantity = ''; $orders[$key]->order_items_total = ''; $orders[$key]->order_items_subtotal = ''; $orders[$key]->order_items_tax = ''; $orders[$key]->order_items_tax_subtotal = ''; $orders[$key]->order_items_type = ''; $orders[$key]->order_items_category = ''; $orders[$key]->order_items_tag = ''; foreach ($orders[$key]->order_items as $order_item) { if (empty($order_item->sku)) { $order_item->sku = '-'; } $orders[$key]->order_items_product_id .= $order_item->product_id . $export->category_separator; $orders[$key]->order_items_variation_id .= $order_item->variation_id . $export->category_separator; $orders[$key]->order_items_sku .= $order_item->sku . $export->category_separator; $orders[$key]->order_items_name .= $order_item->name . $export->category_separator; $orders[$key]->order_items_variation .= $order_item->variation . $export->category_separator; $orders[$key]->order_items_tax_class .= $order_item->tax_class . $export->category_separator; if (empty($order_item->quantity) && '0' != $order_item->quantity) { $order_item->quantity = '-'; } $orders[$key]->order_items_quantity .= $order_item->quantity . $export->category_separator; $orders[$key]->order_items_total .= $order_item->total . $export->category_separator; $orders[$key]->order_items_subtotal .= $order_item->subtotal . $export->category_separator; $orders[$key]->order_items_tax .= $order_item->tax . $export->category_separator; $orders[$key]->order_items_tax_subtotal .= $order_item->tax_subtotal . $export->category_separator; $orders[$key]->order_items_type .= $order_item->type . $export->category_separator; $orders[$key]->order_items_category .= $order_item->category . $export->category_separator; $orders[$key]->order_items_tag .= $order_item->tag . $export->category_separator; } $orders[$key]->order_items_product_id = substr($orders[$key]->order_items_product_id, 0, -1); $orders[$key]->order_items_variation_id = substr($orders[$key]->order_items_variation_id, 0, -1); $orders[$key]->order_items_sku = substr($orders[$key]->order_items_sku, 0, -1); $orders[$key]->order_items_name = substr($orders[$key]->order_items_name, 0, -1); $orders[$key]->order_items_variation = substr($orders[$key]->order_items_variation, 0, -1); $orders[$key]->order_items_tax_class = substr($orders[$key]->order_items_tax_class, 0, -1); $orders[$key]->order_items_quantity = substr($orders[$key]->order_items_quantity, 0, -1); $orders[$key]->order_items_total = substr($orders[$key]->order_items_total, 0, -1); $orders[$key]->order_items_subtotal = substr($orders[$key]->order_items_subtotal, 0, -1); $orders[$key]->order_items_type = substr($orders[$key]->order_items_type, 0, -1); $orders[$key]->order_items_category = substr($orders[$key]->order_items_category, 0, -1); $orders[$key]->order_items_tag = substr($orders[$key]->order_items_tag, 0, -1); $orders[$key] = apply_filters('woo_cd_order_items_combined', $orders[$key]); } else { if ($order_items == 'unique') { $i = 1; foreach ($orders[$key]->order_items as $order_item) { if (empty($order_item->sku)) { $order_item->sku = '-'; } $orders[$key]->{sprintf('order_item_%d_product_id', $i)} = $order_item->product_id; $orders[$key]->{sprintf('order_item_%d_variation_id', $i)} = $order_item->variation_id; $orders[$key]->{sprintf('order_item_%d_sku', $i)} = $order_item->sku; $orders[$key]->{sprintf('order_item_%d_name', $i)} = $order_item->name; $orders[$key]->{sprintf('order_item_%d_variation', $i)} = $order_item->variation; $orders[$key]->{sprintf('order_item_%d_tax_class', $i)} = $order_item->tax_class; if (empty($order_item->quantity) && '0' != $order_item->quantity) { $order_item->quantity = '-'; } $orders[$key]->{sprintf('order_item_%d_quantity', $i)} = $order_item->quantity; $orders[$key]->{sprintf('order_item_%d_total', $i)} = $order_item->total; $orders[$key]->{sprintf('order_item_%d_subtotal', $i)} = $order_item->subtotal; $orders[$key]->{sprintf('order_item_%d_tax', $i)} = $order_item->tax; $orders[$key]->{sprintf('order_item_%d_tax_subtotal', $i)} = $order_item->tax_subtotal; $orders[$key]->{sprintf('order_item_%d_type', $i)} = $order_item->type; $orders[$key]->{sprintf('order_item_%d_category', $i)} = $order_item->category; $orders[$key]->{sprintf('order_item_%d_tag', $i)} = $order_item->tag; $orders[$key] = apply_filters('woo_cd_order_items_unique', $orders[$key], $i, $order_item); $i++; } } } // Custom $custom_order_items = woo_ce_get_option('custom_order_items', ''); if (!empty($custom_order_items)) { foreach ($custom_order_items as $custom_order_item) { if (!empty($custom_order_item)) { $orders[$key]->{$custom_order_item} = get_post_meta($order->ID, $custom_order_item, true); } } } $custom_orders = woo_ce_get_option('custom_orders', ''); if (!empty($custom_orders)) { foreach ($custom_orders as $custom_order) { if (!empty($custom_order)) { $orders[$key]->{$custom_order} = get_post_meta($order->ID, $custom_order, true); } } } } $orders[$key] = apply_filters('woo_cd_order', $orders[$key]); } } } if ($export_type == 'customers') { $customers = array(); foreach ($orders as $order) { if ($duplicate_key = woo_cd_is_duplicate_customer($customers, $order)) { $customers[$duplicate_key]->total_spent = $customers[$duplicate_key]->total_spent + $order->purchase_total; $customers[$duplicate_key]->total_orders++; if ($order->payment_status == 'completed') { $customers[$duplicate_key]->completed_orders++; } } else { $customers[$order->ID] = $order; $customers[$order->ID]->total_spent = $order->purchase_total; $customers[$order->ID]->completed_orders = 0; if ($order->payment_status == 'completed') { $customers[$order->ID]->completed_orders = 1; } $customers[$order->ID]->total_orders = 1; } } $export->total_rows = count($customers); return $customers; } else { return $orders; } }