Array ( 'Title'=>'Order ID', 'ShowOn' => 'Both', 'QueryID'=>'$purchase["id"]'), 'order-date' => Array ( 'Title'=>'Order Date', 'ShowOn' => 'Both', 'QueryID'=>'$purchase["frmtdate"]'), 'order-time' => Array ( 'Title'=>'Order Time', 'ShowOn' => 'Both', 'QueryID'=>'$purchase["frmttime"]'), 'tax-total' => Array ( 'Title'=>'Total Order Tax', 'ShowOn' => 'Orders', 'QueryID'=>'$cart_data["tax"]'), 'order-total' => Array ('Title'=>'Total Order Value', 'ShowOn' => 'Orders', 'QueryID'=>'$purchase["totalprice"]'), 'order-status' => Array ('Title'=>'Order Status', 'ShowOn' => 'Both', 'QueryID'=>'$purchase["name"]'), 'totalqty' => Array ( 'Title'=>'Total Items', 'ShowOn' => 'Orders', 'QueryID'=>'$cart_data["qty"]'), 'surname' => Array ( 'Title'=>'Surname', 'ShowOn' => 'Both', 'QueryID'=>'$assoc_checkout["billinglastname"]["value"]'), 'first-name' => Array ( 'Title'=>'First Name', 'ShowOn' => 'Both', 'QueryID'=>'$assoc_checkout["billingfirstname"]["value"]'), 'user-id' => Array ( 'Title'=>'User ID', 'ShowOn' => 'Both', 'QueryID'=>'$purchase["user_ID"]'), 'billing-city' => Array ('Title'=>'City', 'ShowOn' => 'Both', 'QueryID'=>'$assoc_checkout["billingcity"]["value"]'), 'billing-pcode' => Array ('Title'=>'Postcode', 'ShowOn' => 'Both', 'QueryID'=>'$assoc_checkout["billingpostcode"]["value"]'), 'billing-country' => Array ('Title'=>'Country', 'ShowOn' => 'Both', 'QueryID'=>'$assoc_checkout["billingcountry"]["value"]'), 'billing-email' => Array ('Title'=>'Email', 'ShowOn' => 'Both', 'QueryID'=>'$assoc_checkout["billingemail"]["value"]'), 'billing-phone' => Array ('Title'=>'Phone', 'ShowOn' => 'Both', 'QueryID'=>'$assoc_checkout["billingphone"]["value"]'), 'orderline-sku' => Array ('Title'=>'Product SKU', 'ShowOn' => 'Lines', 'QueryID'=>'$cart_data["sku"]'), 'orderline-product' => Array ('Title'=>'Product Description', 'ShowOn' => 'Lines', 'QueryID'=>'$cart_data["name"]'), 'orderline-unitprice' => Array('Title'=>'Unit Price', 'ShowOn' => 'Lines', 'QueryID'=>'$cart_data["price"]'), 'orderline-qty' => Array ('Title'=>'Item Qty', 'ShowOn' => 'Lines', 'QueryID'=>'$cart_data["quantity"]'), 'orderline-lineprice' => Array ('Title'=>'Item Qty', 'ShowOn' => 'Lines', 'QueryID'=>'$cart_data["line_price"]'), 'orderline-tax' => Array ('Title'=>'Total Line Tax', 'ShowOn' => 'Lines', 'QueryID'=>'$cart_data["line_tax"]'), 'orderline-linetotal' => Array ('Title'=>'Total Line Value', 'ShowOn' => 'Lines', 'QueryID'=>'$cart_data["line_total"]'), ); function csvescape($string) { if (stristr($string,'"')) { $string = str_replace('"','""',$string); $string = "\"$string\""; $doneescape = true; } $string = str_replace("\n",' ',$string); $string = str_replace("\r",' ',$string); if (stristr($string,',') && !$doneescape) { $string = "\"$string\""; } return $string; } function ses_wpscd_menu() { add_submenu_page('wpsc-sales-logs', 'CSV Export', 'CSV Export', 10, basename(__FILE__), 'ses_wpscd_csv_export'); } add_action('wpsc_add_submenu', "ses_wpscd_menu"); function ses_wpscd_csv_export() { if ($_GET['action'] == 'config') { ses_wpscd_csv_export_config(); } else { ses_wpscd_csv_export_form(); } } function ses_wpscd_csv_download() { global $wpdb, $ses_wpscd_csv_fields_available; // Add custom checkout variables $ses_wpscd_csv_fields_available = apply_filters('ses-wpscd-csv-fields-available', $ses_wpscd_csv_fields_available); $ses_wpscd_csv_fields = get_option('ses_wpscd_csv_fields'); if (!$ses_wpscd_csv_fields || $ses_wpscd_csv_fields == "" || !count($ses_wpscd_csv_fields)) { update_option ('ses_wpscd_csv_fields',Array ('order-id','order-date', 'order-time', 'tax-total', 'order-total', 'order-status', 'totalqty', 'orderline-sku', 'orderline-unitprice', 'orderline-qty', 'orderline-lineprice', 'orderline-tax', 'orderline-linetotal')); $ses_wpscd_csv_fields = get_option('ses_wpscd_csv_fields'); } if ($_POST['linesororders'] == 'orders') { $filename="Purchase Orders - "; } else { $filename="Purchase Order Lines - "; } // First step is to build the query if (is_numeric($_POST['date'])) { $start_date = $_POST['date']; $month = date('n',$start_date); $year = date('Y',$start_date); if ($month > 11) { $month=1; $year++; } else { $month++; } $end_date = mktime (0,0,0,$month,1,$year) - 1; $date_filter = "date >= $start_date AND date <= $end_date"; $filename .= " ".date('Y-m-d',$start_date)." to ".date('Y-m-d',$end_date); } else { $date_filter = "1"; $filename .= " All Time"; } if (isset($_POST['status'])) { $cnt = 0; $status_filter = '`pl`.`processed` IN ('; foreach(array_keys($_POST['status']) as $status_id) { if ($cnt) { $status_filter .= ','; } $status_filter .= $status_id; $cnt++; } $status_filter .= ')'; } else { $status_filter = "0"; } $sql = "SELECT `pl`.*, DATE_FORMAT(FROM_UNIXTIME(`pl`.`date`),'%Y-%m-%d') as frmtdate, DATE_FORMAT(FROM_UNIXTIME(`pl`.`date`),'%H:%i:%s') as frmttime, `ps`.`name` FROM `".WPSC_TABLE_PURCHASE_LOGS."` pl LEFT JOIN `".WPSC_TABLE_PURCHASE_STATUSES."` ps ON `pl`.`processed` = `ps`.`id` AND `ps`.`active` = '1' WHERE $date_filter AND $status_filter ORDER BY id DESC"; $results = $wpdb->get_results($sql, ARRAY_A); // See what fields we need to output $ses_wpscd_csv_fields = get_option('ses_wpscd_csv_fields'); if (!$ses_wpscd_csv_fields || $ses_wpscd_csv_fields == "" || !count($ses_wpscd_csv_fields)) { update_option ('ses_wpscd_csv_fields',Array ('order-id','order-date', 'order-time', 'tax-total', 'order-total', 'order-status', 'totalqty', 'orderline-sku', 'orderline-unitprice', 'orderline-qty', 'orderline-lineprice', 'orderline-tax', 'orderline-linetotal')); $ses_wpscd_csv_fields = get_option('ses_wpscd_csv_fields'); } // Step through the results, and output the fields we need //header('Content-Type: text/plain'); header('Content-Type: text/csv'); header('Content-Disposition: attachment; filename="'.$filename.'.csv"'); // Show heading line $done_first = 0; foreach ($ses_wpscd_csv_fields as $field) { if ( ($ses_wpscd_csv_fields_available[$field]['ShowOn'] == 'Both') || ($_POST['linesororders'] == 'orders' && $ses_wpscd_csv_fields_available[$field]['ShowOn'] == 'Orders') || ($_POST['linesororders'] == 'lines' && $ses_wpscd_csv_fields_available[$field]['ShowOn'] == 'Lines')) { if ($done_first) echo ','; echo $ses_wpscd_csv_fields_available[$field]['Title']; $done_first=1; } } echo "\n"; if (!count($results)) { die(); } foreach ($results as $purchase) { $sql = "SELECT `fd`.`value`, `cf`.`name`, `cf`.`unique_name` FROM `".WPSC_TABLE_SUBMITED_FORM_DATA."` fd LEFT JOIN `".WPSC_TABLE_CHECKOUT_FORMS."` cf ON `fd`.`form_id` = `cf`.`id` WHERE `log_id` = '".$purchase['id']."' AND `cf`.active = '1'"; $checkout_data = $wpdb->get_results($sql, ARRAY_A); $assoc_checkout = Array(); if (is_array($checkout_data) && count($checkout_data)) { foreach ($checkout_data as $checkout_field) { if ($checkout_field['unique_name'] != "") { $assoc_checkout[$checkout_field['unique_name']] = $checkout_field; } else { $assoc_checkout[$checkout_field['name']] = $checkout_field; } } } if ($_POST['linesororders'] == 'orders') { $cartsql = "SELECT SUM(quantity) AS qty, SUM(tax_charged) AS tax FROM `".WPSC_TABLE_CART_CONTENTS."` WHERE `purchaseid`=".$purchase['id'].""; $cart_data_lines = $wpdb->get_results($cartsql, ARRAY_A); } else { if (isset($_POST['product']) && is_numeric($_POST['product'])) { $product_where = '`cc`.prodid = '.$_POST['product']; } else { $product_where = '1'; } $cartsql = "SELECT cc.*, pm.meta_value as sku, quantity*price as line_price, quantity*tax_charged as line_tax, (quantity*price) + (quantity*tax_charged) as line_total FROM `".WPSC_TABLE_CART_CONTENTS."` cc LEFT JOIN `".WPSC_TABLE_PRODUCTMETA."` pm ON `cc`.`prodid` = `pm`.`product_id` AND `pm`.`meta_key` = 'sku' WHERE `cc`.`purchaseid`=".$purchase['id']." AND $product_where"; $cart_data_lines = $wpdb->get_results($cartsql, ARRAY_A); } if (count($cart_data_lines)) { foreach ($cart_data_lines as $cart_data) { reset($ses_wpscd_csv_fields); $done_first = 0; foreach ($ses_wpscd_csv_fields as $field) { if ( ($ses_wpscd_csv_fields_available[$field]['ShowOn'] == 'Both') || ($_POST['linesororders'] == 'orders' && $ses_wpscd_csv_fields_available[$field]['ShowOn'] == 'Orders') || ($_POST['linesororders'] == 'lines' && $ses_wpscd_csv_fields_available[$field]['ShowOn'] == 'Lines')) { if ($done_first) echo ','; eval ("echo csvescape(".$ses_wpscd_csv_fields_available[$field]['QueryID'].");"); $done_first = 1; } } echo "\n"; } } } die(); } add_action('wp_ajax_ses_wpscd_csvdownload','ses_wpscd_csv_download'); function ses_wpsc_csv_date_filter($selected) { global $wpdb; $earliest_record_sql = "SELECT MIN(`date`) AS `date` FROM `".WPSC_TABLE_PURCHASE_LOGS."` WHERE `date`!=''"; $earliest_record = $wpdb->get_results($earliest_record_sql,ARRAY_A) ; $current_timestamp = time(); $earliest_timestamp = $earliest_record[0]['date']; $current_year = date("Y"); $current_month = date("n"); $earliest_year = date("Y",$earliest_timestamp); $earliest_month = date("n",$earliest_timestamp); $output = ''; for($year = $earliest_year; $year <= $current_year; $year++) { for($month = 1; $month <=12 ; $month++) { if ($year == $earliest_year && $month < $earliest_month) continue; if ($year == $current_year && $month > $current_month) break; $timestamp = mktime(0, 0, 0, $month, 1, $year); $option = "