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