/**
 * 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;
}