/** * Add `example` column data * * @param array $order_data the original column data * @param \WC_Order $order the order object * @param \WC_Customer_Order_CSV_Export_Generator $csv_generator the generator instance * @return array the updated column data */ function sv_wc_csv_export_modify_row_data_example($order_data, $order, $csv_generator) { $new_order_data = array(); $custom_data = array('example' => $order->meta_key_example); if (sv_wc_csv_export_is_one_row($csv_generator)) { foreach ($order_data as $data) { $new_order_data[] = array_merge((array) $data, $custom_data); } } else { $new_order_data = array_merge($order_data, $custom_data); } return $new_order_data; }
/** * Add `item_weight` column to the default and custom formats * * @param array $column_headers the original column headers * @param WC_Customer_Order_CSV_Export_Generator $csv_generator the generator instance * @return array - the updated column headers */ function sv_wc_csv_export_modify_column_headers_item_price($column_headers, $csv_generator) { $new_headers = array(); if (sv_wc_csv_export_is_one_row($csv_generator)) { foreach ($column_headers as $key => $column) { $new_headers[$key] = $column; // add the item_price after the SKU column if ('item_sku' === $key) { $new_headers['item_weight'] = 'item_weight'; } } } else { return $column_headers; } return $new_headers; }
/** * Add `item_id` and `variation_id` column headers to the export format * * @param array $column_headers the original column headers * @param WC_Customer_Order_CSV_Export_Generator $csv_generator the generator instance * @return array $column_headers the updated headers */ function sv_wc_csv_export_modify_column_headers_item_id($column_headers, $csv_generator) { if (sv_wc_csv_export_is_one_row($csv_generator)) { $new_headers = array(); foreach ($column_headers as $key => $value) { $new_headers[$key] = $value; // Adds new headers after 'item_name' column if ('item_name' === $key) { // Add columns for each piece of data $new_headers['item_id'] = 'item_id'; $new_headers['variation_id'] = 'variation_id'; } } $column_headers = $new_headers; } return $column_headers; }
/** * Uses the WooCommerce currency display settings to format CSV price values instead of machine-readable values * * @param array $order_data the data for the export row * @param \WC_Order $order * @param \WC_Customer_Order_CSV_Export_Generator $generator * @return array - updated row data */ function sv_wc_csv_export_localize_price_columns($order_data, $order, $generator) { $decimals = wc_get_price_decimals(); $decimal_separator = wc_get_price_decimal_separator(); $thousand_separator = wc_get_price_thousand_separator(); $price_columns = array('shipping_total', 'shipping_tax_total', 'fee_total', 'fee_tax_total', 'tax_total', 'discount_total', 'order_total', 'refunded_total'); if (sv_wc_csv_export_is_one_row($generator)) { foreach ($order_data as $line => $data) { foreach ($price_columns as $column_key) { $order_data[$line][$column_key] = number_format($order_data[$line][$column_key], $decimals, $decimal_separator, $thousand_separator); } } } else { // localize price for pricing cell in the row foreach ($price_columns as $column_key) { $order_data[$column_key] = number_format($order_data[$column_key], $decimals, $decimal_separator, $thousand_separator); } } return $order_data; }
/** * Add `vat_number` column data * * this function searches for a VAT number order meta key used by the more * popular Tax/VAT plugins * * @param array $order_data the original column data * @param \WC_Order $order the order object * @param \WC_Customer_Order_CSV_Export_Generator $csv_generator the generator instance * @return array the updated column data */ function sv_wc_csv_export_modify_row_data_vat_number($order_data, $order, $csv_generator) { $vat_number = ''; $new_order_data = array(); // find VAT number if one exists for the order $vat_number_meta_keys = array('_vat_number', 'VAT Number', 'vat_number', '_billing_wc_avatax_vat_id'); foreach ($vat_number_meta_keys as $meta_key) { if (metadata_exists('post', $order->id, $meta_key)) { $vat_number = get_post_meta($order->id, $meta_key, true); break; } } $custom_data = array('vat_number' => $vat_number); if (sv_wc_csv_export_is_one_row($csv_generator)) { foreach ($order_data as $data) { $new_order_data[] = array_merge((array) $data, $custom_data); } } else { $new_order_data = array_merge($order_data, $custom_data); } return $new_order_data; }