/** * Get current balance of a seller * * Total = SUM(net_amount) - SUM(withdraw) * * @global WPDB $wpdb * @param type $seller_id * @param type $formatted * @return type */ function dokan_get_seller_balance($seller_id, $formatted = true) { global $wpdb; $status = dokan_withdraw_get_active_order_status_in_comma(); $cache_key = 'dokan_seller_balance_' . $seller_id; $earning = wp_cache_get($cache_key, 'dokan'); if (false === $earning) { $sql = "SELECT SUM(net_amount) as earnings,\n (SELECT SUM(amount) FROM {$wpdb->prefix}dokan_withdraw WHERE user_id = %d AND status = 1) as withdraw\n FROM {$wpdb->prefix}dokan_orders\n WHERE seller_id = %d AND order_status IN({$status})"; $result = $wpdb->get_row($wpdb->prepare($sql, $seller_id, $seller_id)); $earning = $result->earnings - $result->withdraw; wp_cache_set($cache_key, $earning, 'dokan'); } if ($formatted) { return wc_price($earning); } return $earning; }
/** * Get current balance of a seller * * Total = SUM(net_amount) - SUM(withdraw) * * @global WPDB $wpdb * @param type $seller_id * @param type $formatted * * @return mixed */ function dokan_get_seller_balance($seller_id, $formatted = true) { global $wpdb; $status = dokan_withdraw_get_active_order_status_in_comma(); $cache_key = 'dokan_seller_balance_' . $seller_id; $earning = wp_cache_get($cache_key, 'dokan'); $threshold_day = dokan_get_option('withdraw_date_limit', 'dokan_selling', 0); $date = date('Y-m-d', strtotime(date('Y-m-d') . ' -' . $threshold_day . ' days')); if (false === $earning) { $sql = "SELECT SUM(net_amount) as earnings,\n (SELECT SUM(amount) FROM {$wpdb->prefix}dokan_withdraw WHERE user_id = %d AND status = 1) as withdraw\n FROM {$wpdb->prefix}dokan_orders as do LEFT JOIN {$wpdb->prefix}posts as p ON do.order_id = p.ID\n WHERE seller_id = %d AND DATE(p.post_date) <= %s AND order_status IN({$status})"; $result = $wpdb->get_row($wpdb->prepare($sql, $seller_id, $seller_id, $date)); $earning = $result->earnings - $result->withdraw; wp_cache_set($cache_key, $earning, 'dokan'); } if ($formatted) { return wc_price($earning); } return number_format_i18n($earning, 2); }