Example #1
0
/**
 * Insert a order in sync table once a order is created
 *
 * @global object $wpdb
 * @param int $order_id
 */
function dokan_sync_insert_order($order_id)
{
    global $wpdb;
    $order = new WC_Order($order_id);
    $seller_id = dokan_get_seller_id_by_order($order_id);
    $percentage = dokan_get_seller_percentage($seller_id);
    $order_total = $order->get_total();
    $order_status = $order->post_status;
    $wpdb->insert($wpdb->prefix . 'dokan_orders', array('order_id' => $order_id, 'seller_id' => $seller_id, 'order_total' => $order_total, 'net_amount' => $order_total * $percentage / 100, 'order_status' => $order_status), array('%d', '%d', '%f', '%f', '%s'));
}
/**
 * Generate dokan sync table
 *
 * @global WPDB $wpdb
 */
function dokan_generate_sync_table()
{
    global $wpdb;
    $sql = "SELECT oi.order_id, p.ID as product_id, p.post_title, p.post_author as seller_id,\r\n                oim2.meta_value as order_total, terms.name as order_status\r\n            FROM {$wpdb->prefix}woocommerce_order_items oi\r\n            LEFT JOIN {$wpdb->prefix}woocommerce_order_itemmeta oim ON oim.order_item_id = oi.order_item_id\r\n            LEFT JOIN {$wpdb->prefix}woocommerce_order_itemmeta oim2 ON oim2.order_item_id = oi.order_item_id\r\n            LEFT JOIN {$wpdb->posts} p ON oim.meta_value = p.ID\r\n            LEFT JOIN {$wpdb->term_relationships} rel ON oi.order_id = rel.object_id\r\n            LEFT JOIN {$wpdb->term_taxonomy} tax ON rel.term_taxonomy_id = tax.term_taxonomy_id\r\n            LEFT JOIN {$wpdb->terms} terms ON tax.term_id = terms.term_id\r\n            WHERE\r\n                oim.meta_key = '_product_id' AND\r\n                oim2.meta_key = '_line_total'\r\n            GROUP BY oi.order_id";
    $orders = $wpdb->get_results($sql);
    $table_name = $wpdb->prefix . 'dokan_orders';
    $wpdb->query('TRUNCATE TABLE ' . $table_name);
    if ($orders) {
        foreach ($orders as $order) {
            $percentage = dokan_get_seller_percentage($order->seller_id);
            $wpdb->insert($table_name, array('order_id' => $order->order_id, 'seller_id' => $order->seller_id, 'order_total' => $order->order_total, 'net_amount' => $order->order_total * $percentage / 100, 'order_status' => $order->order_status), array('%d', '%d', '%f', '%f', '%s'));
        }
        // foreach
    }
    // if
}
/**
 * Insert a order in sync table once a order is created
 *
 * @global object $wpdb
 * @param int $order_id
 */
function dokan_sync_insert_order($order_id)
{
    global $wpdb;
    $order = new WC_Order($order_id);
    $seller_id = dokan_get_seller_id_by_order($order_id);
    $percentage = dokan_get_seller_percentage($seller_id);
    $order_total = $order->get_total();
    $order_shipping = $order->get_total_shipping();
    $order_tax = $order->get_total_tax();
    $extra_cost = $order_shipping + $order_tax;
    $order_cost = $order_total - $extra_cost;
    $order_status = $order->post_status;
    $net_amount = $order_cost * $percentage / 100 + $extra_cost;
    $net_amount = apply_filters('dokan_order_net_amount', $net_amount, $order);
    $wpdb->insert($wpdb->prefix . 'dokan_orders', array('order_id' => $order_id, 'seller_id' => $seller_id, 'order_total' => $order_total, 'net_amount' => $net_amount, 'order_status' => $order_status), array('%d', '%d', '%f', '%f', '%s'));
}
/**
 * Insert a order in sync table once a order is created
 *
 * @global object $wpdb
 * @param int $order_id
 * @since 2.4
 */
function dokan_sync_order_table($order_id)
{
    global $wpdb;
    $order = new WC_Order($order_id);
    $seller_id = dokan_get_seller_id_by_order($order_id);
    $percentage = dokan_get_seller_percentage($seller_id);
    //Total calculation
    $order_total = $order->get_total();
    if ($total_refunded = $order->get_total_refunded()) {
        $order_total = $order_total - $total_refunded;
    }
    //Shipping calculation
    $order_shipping = $order->get_total_shipping();
    foreach ($order->get_items() as $item) {
        $total_shipping_refunded = 0;
        if ($shipping_refunded = $order->get_total_refunded_for_item($item['product_id'], 'shipping')) {
            $total_shipping_refunded += $shipping_refunded;
        }
    }
    $order_shipping = $order_shipping - $total_shipping_refunded;
    //Tax calculation
    $order_tax = $order->get_total_tax();
    if ($tax_refunded = $order->get_total_tax_refunded()) {
        $order_tax = $order_tax - $tax_refunded;
    }
    $extra_cost = $order_shipping + $order_tax;
    $order_cost = $order_total - $extra_cost;
    $order_status = $order->post_status;
    $net_amount = $order_cost * $percentage / 100 + $extra_cost;
    $net_amount = apply_filters('dokan_sync_order_net_amount', $net_amount, $order);
    $wpdb->insert($wpdb->prefix . 'dokan_orders', array('order_id' => $order_id, 'seller_id' => $seller_id, 'order_total' => $order_total, 'net_amount' => $net_amount, 'order_status' => $order_status), array('%d', '%d', '%f', '%f', '%s'));
}
Example #5
0
/**
 * Generate dokan sync table
 *
 * @global WPDB $wpdb
 */
function dokan_generate_sync_table()
{
    die('This is a very dangerous operation, disabled from code. - Tim Dix');
    global $wpdb;
    $sql = "SELECT oi.order_id, p.ID as product_id, p.post_title, p.post_author as seller_id,\n                oim2.meta_value as order_total, p.post_status as order_status\n            FROM {$wpdb->prefix}woocommerce_order_items oi\n            INNER JOIN {$wpdb->prefix}woocommerce_order_itemmeta oim ON oim.order_item_id = oi.order_item_id\n            INNER JOIN {$wpdb->prefix}woocommerce_order_itemmeta oim2 ON oim2.order_item_id = oi.order_item_id\n            INNER JOIN {$wpdb->posts} p ON oi.order_id = p.ID\n            WHERE\n                oim.meta_key = '_product_id' AND\n                oim2.meta_key = '_line_total'\n            GROUP BY oi.order_id";
    $orders = $wpdb->get_results($sql);
    $table_name = $wpdb->prefix . 'dokan_orders';
    $wpdb->query('TRUNCATE TABLE ' . $table_name);
    if ($orders) {
        foreach ($orders as $order) {
            $percentage = dokan_get_seller_percentage($order->seller_id);
            $wpdb->insert($table_name, array('order_id' => $order->order_id, 'seller_id' => $order->seller_id, 'order_total' => $order->order_total, 'net_amount' => $order->order_total * $percentage / 100, 'order_status' => $order->order_status), array('%d', '%d', '%f', '%f', '%s'));
        }
        // foreach
    }
    // if
}