/** * Updates shop balance * * @access public * @param int $user * @param array $data * @return void */ public static function updateBalance($user, $data = array()) { $shop = ThemexUser::getShop($user); //values $revenue = 0; $profit = 0; $balance = 0; $sales = 0; //rates $rate_min = absint(ThemexCore::getOption('shop_rate_min', 50)); $rate_max = absint(ThemexCore::getOption('shop_rate_max', 70)); $rate_amount = absint(ThemexCore::getOption('shop_rate_amount', 1000)); if (isset($data['order'])) { $rate = $rate_min; if ($rate_max > $rate_min) { $rate = absint(ThemexCore::getUserMeta($user, 'rate', $rate_min)); } $rate = self::filterRate($shop, $rate); ThemexCore::updatePostMeta($data['order'], 'rate', $rate); } //orders $orders = ThemexWoo::getOrders($user, array('post_status' => 'wc-completed')); foreach ($orders as $order) { $object = wc_get_order($order); $rate = absint(ThemexCore::getPostMeta($order, 'rate', $rate_min)); $total = $object->get_total() - $object->get_total_refunded(); $amount = $total * $rate / 100; $revenue = $revenue + $total; $profit = $profit + $amount; if ($object->payment_method != 'paypal-adaptive-payments') { $balance = $balance + $amount; } $sales = $sales + $object->get_item_count(); } //referrals $rate = absint(ThemexCore::getOption('shop_rate_referral', '30')); $referrals = ThemexWoo::getReferrals($user, array('post_status' => 'wc-completed')); foreach ($referrals as $referral) { $object = wc_get_order($referral); $total = $object->get_total() - $object->get_total_refunded(); $amount = $total * $rate / 100; $profit = $profit + $amount; $balance = $balance + $amount; } //withdrawals $withdrawals = self::getWithdrawals($user, array('post_status' => array('pending', 'publish'))); foreach ($withdrawals as $withdrawal) { $amount = abs(floatval(ThemexCore::getPostMeta($withdrawal, 'amount'))); $balance = $balance - $amount; } //rate if ($rate_max > $rate_min) { $rate = absint($rate_min + $revenue / ($rate_amount / ($rate_max - $rate_min))); ThemexCore::updateUserMeta($user, 'rate', $rate); } ThemexCore::updateUserMeta($user, 'revenue', $revenue); ThemexCore::updateUserMeta($user, 'profit', $profit); ThemexCore::updateUserMeta($user, 'balance', $balance); ThemexCore::updatePostMeta($shop, 'sales', $sales); }