function cw_salesman_get_commission($products, $salesman, $membership_id, $doc_id, $warehouse, $applied_coupon = '', $applied_discount = '', $part = 100)
{
    global $tables;
    $salesman_commission_value = 0;
    $salesman_plan = cw_query_first_cell($sql = "SELECT {$tables['salesman_commissions']}.plan_id FROM {$tables['salesman_commissions']}, {$tables['salesman_plans']}, {$tables['customers']} WHERE {$tables['salesman_commissions']}.plan_id={$tables['salesman_plans']}.plan_id AND {$tables['salesman_commissions']}.salesman_customer_id='{$salesman}' AND {$tables['customers']}.customer_id='{$salesman}' AND {$tables['customers']}.status='Y' AND {$tables['customers']}.status='Y' AND {$tables['salesman_plans']}.status=1");
    if ($salesman_plan) {
        $tmp = cw_query("SELECT * FROM {$tables['salesman_plans_commissions']} WHERE plan_id='{$salesman_plan}' and membership_id='" . $membership_id . "'");
        $plan_info = array();
        if ($tmp) {
            foreach ($tmp as $v) {
                $plan_info[$v['item_type'] . ($v['item_id'] > 0 ? $v['item_id'] : "")] = array("commission_type" => $v['commission_type'], "commission" => $v['commission']);
            }
        }
        unset($tmp);
        $products_hash = array();
        foreach ($products as $k => $product) {
            $percent_cost = $product['discounted_price'] / 100;
            unset($to_salesman);
            if ($plan_info["P" . $product['product_id']]) {
                $to_salesman = $plan_info["P" . $product['product_id']]['commission'] * ($plan_info["P" . $product['product_id']]['commission_type'] == '$' ? $product['amount'] : $percent_cost);
            }
            #
            # Check the categories commission rate
            #
            if (!isset($to_salesman)) {
                $product_categories = cw_query_column("SELECT category_id FROM {$tables['products_categories']} WHERE product_id='{$product['product_id']}'");
                foreach ($product_categories as $category_id) {
                    if (!isset($plan_info["C" . $category_id])) {
                        continue;
                    }
                    $tmp = $plan_info["C" . $category_id]['commission'] * ($plan_info["C" . $category_id]['commission_type'] == '$' ? $product['amount'] : $percent_cost);
                    if ($tmp > $to_salesman) {
                        $to_salesman = $tmp;
                    }
                }
            }
            #
            # Apply general value of the commission rate
            #
            if (!isset($to_salesman) && $plan_info['G']) {
                $to_salesman = $plan_info['G']['commission'] * ($plan_info['G']['commission_type'] == '$' ? 1 : $percent_cost);
            }
            $salesman_commission_value += price_format($to_salesman);
            $products_hash[$product['item_id']] = price_format($to_salesman);
        }
        # kornev, the comission can be calculated partially, if the order is paid partially
        $salesman_commission_value = $salesman_commission_value * $part / 100;
        # kornev, calculate the next levels only if we placed an order
        # kornev, the level calculation has been changed. The comission is devided by the levels.
        if ($salesman_commission_value && $doc_id) {
            # kornev, if discount is taken from the salesman account
            if (cw_is_salesman_coupon($applied_coupon)) {
                $from_account = cw_query_first_cell("select from_account from {$tables['discount_coupons']} where coupon='{$applied_coupon}'");
                if ($from_account) {
                    $salesman_commission_value -= $applied_discount;
                }
                //cw_get_salesman_discount($products, $applied_coupon, $membership_id, $warehouse);
            }
            $salesman_level = cw_get_affiliate_level($salesman);
            $parents = array();
            $parents[] = array('customer_id' => $salesman, 'level' => $salesman_level);
            $__parents = cw_get_parents($salesman);
            if (is_array($__parents)) {
                $parents = array_merge($parents, $__parents);
            }
            $div_commission_value = $salesman_commission_value;
            foreach ($parents as $v) {
                $level = $v['level'];
                if ($div_commission_value <= 0) {
                    continue;
                }
                $percent = cw_query_first_cell("SELECT commission FROM {$tables['salesman_tier_commissions']} WHERE level = '{$level}'");
                $commission = price_format($div_commission_value * $percent / 100);
                $div_commission_value -= $commission;
                if ($commission > 0) {
                    db_query("INSERT INTO {$tables['salesman_payment']} (salesman_customer_id, doc_id, commissions, paid, affiliate, add_date) VALUES ('{$v['customer_id']}', '{$doc_id}', '{$commission}', 'N', '{$salesman}', '" . (isset($xaff_force_time) ? $xaff_force_time : time()) . "')");
                    foreach ($products_hash as $id => $c) {
                        $c = price_format($c * $percent / 100);
                        db_query("INSERT INTO {$tables['salesman_product_commissions']} (item_id, doc_id, product_commission, salesman_customer_id) VALUES ('{$id}', '{$doc_id}', '{$c}','{$v['customer_id']}')");
                        $products_hash[$id] -= $c;
                    }
                }
            }
        }
    }
    return $salesman_commission_value;
}
function cw_discount_coupons_cart_calc_discounts($params, $return)
{
    global $tables, $config, $addons, $global_store;
    extract($params);
    $coupon = $cart['info']['coupon'];
    foreach ($products as $k => $product) {
        if ($product['hidden']) {
            continue;
        }
        $products[$k]['coupon_discount'] = 0;
    }
    $return['coupon_discount'] = 0;
    $return['coupon'] = 0;
    if (!empty($coupon)) {
        $coupon_total = 0;
        $coupon_amount = 0;
        cw_load('salesman');
        $is_salesman_coupon = cw_is_salesman_coupon($discount_coupon);
        if ($is_salesman_coupon) {
            $discount_coupon_data = cw_query_first("select * from {$tables['discount_coupons']} where coupon='{$discount_coupon}'");
            if ($discount_coupon_data['from_account']) {
                $discount_coupon_data['discount'] = cw_get_salesman_discount($products, $discount_coupon, $membership_id, $warehouse);
                $discount_coupon_data['coupon_type'] = 'absolute';
            }
        } else {
            if (!empty($global_store['discount_coupons'])) {
                $discount_coupon_data = array();
                foreach ($global_store['discount_coupons'] as $v) {
                    if ($v['__override'] || $v['coupon'] == $coupon && $v['warehouse_customer_id'] == $warehouse) {
                        $discount_coupon_data = $v;
                        break;
                    }
                }
            } else {
                $discount_coupon_data = cw_query_first("select * from {$tables['discount_coupons']} where coupon='{$coupon}'");
            }
        }
        $return['discount_coupon_data'] = $discount_coupon_data;
        $return['coupon_type'] = $discount_coupon_data['coupon_type'];
        if (!empty($discount_coupon_data) && ($discount_coupon_data['coupon_type'] == 'absolute' || $discount_coupon_data['coupon_type'] == 'percent')) {
            $coupon_discount = 0;
            if ($discount_coupon_data['product_id'] > 0) {
                foreach ($products as $k => $product) {
                    if ($product['product_id'] != $discount_coupon_data['product_id']) {
                        continue;
                    }
                    $price = $product['discounted_price'];
                    if ($discount_coupon_data['coupon_type'] == 'absolute' && $discount_coupon_data['discount'] > $price) {
                        $discount_coupon_data['discount'] = 100;
                        $discount_coupon_data['coupon_type'] = 'percent';
                    }
                    if ($discount_coupon_data['coupon_type'] == 'absolute' && $discount_coupon_data['apply_product_once'] == 0) {
                        $multiplier = $product['amount'];
                    } else {
                        $multiplier = 1;
                    }
                    $_coupon_discount = $_taxed_coupon_discount = $discount_coupon_data['discount'] * $multiplier;
                    if ($config['Taxes']['apply_discount_on_taxed_amount'] == "Y" && !empty($product['taxes']) && is_array($product['taxes'])) {
                        $_taxes = cw_tax_price($_coupon_discount, 0, false, NULL, '', $product['taxes'], $discount_coupon_data['coupon_type'] == 'percent');
                        $_taxed_coupon_discount = $_taxes['taxed_price'];
                        $_coupon_discount = $_taxes['net_price'];
                    }
                    if ($discount_coupon_data['coupon_type'] == 'absolute') {
                        $taxed_coupon_discount = $_taxed_coupon_discount;
                        $taxed_coupon_discount = $coupon_discount = $_coupon_discount;
                    } else {
                        $taxed_coupon_discount = $price * $_taxed_coupon_discount / 100;
                        $coupon_discount = $price * $_coupon_discount / 100;
                    }
                    $products[$k]['coupon_discount'] = $taxed_coupon_discount;
                    $products[$k]['discounted_price'] = max($price - $coupon_discount, 0.0);
                    $return['coupon_discount'] += $taxed_coupon_discount;
                }
            } elseif ($discount_coupon_data['category_id'] > 0) {
                $category_ids[] = $discount_coupon_data['category_id'];
                if ($discount_coupon_data['recursive']) {
                    $category_ids = cw_category_get_subcategory_ids($discount_coupon_data['category_id']);
                }
                if ($discount_coupon_data['coupon_type'] == 'absolute') {
                    foreach ($products as $k => $product) {
                        if ($config['Appearance']['categories_in_products'] == '1') {
                            $product_categories = cw_query("SELECT category_id FROM {$tables['products_categories']} WHERE product_id='{$product['product_id']}'");
                            $is_valid_product = false;
                            foreach ($product_categories as $pc) {
                                if (in_array($pc['category_id'], $category_ids)) {
                                    $is_valid_product = true;
                                    break;
                                }
                            }
                        }
                        if ($is_valid_product) {
                            if ($discount_coupon_data['coupon_type'] == "absolute" && ~$discount_coupon_data['apply_product_once']) {
                                $multiplier = $product['amount'];
                            } else {
                                $multiplier = 1;
                            }
                            $sum_discount += $discount_coupon_data['discount'] * $multiplier;
                        }
                    }
                    if ($sum_discount > $return['total']) {
                        $discount_coupon_data['discount'] = 100;
                        $discount_coupon_data['coupon_type'] = 'percent';
                    }
                }
                foreach ($products as $k => $product) {
                    if ($config['Appearance']['categories_in_products'] == '1') {
                        $product_categories = cw_query("SELECT category_id FROM {$tables['products_categories']} WHERE product_id='{$product['product_id']}'");
                        $is_valid_product = false;
                        foreach ($product_categories as $pc) {
                            if (in_array($pc['category_id'], $category_ids)) {
                                $is_valid_product = true;
                                break;
                            }
                        }
                    }
                    if ($is_valid_product) {
                        if ($discount_coupon_data['coupon_type'] == "absolute" && $discount_coupon_data['apply_product_once'] == "N") {
                            $multiplier = $product['amount'];
                        } else {
                            $multiplier = 1;
                        }
                        $_coupon_discount = $_taxed_coupon_discount = $discount_coupon_data['discount'] * $multiplier;
                        if ($config['Taxes']['apply_discount_on_taxed_amount'] == "Y" && !empty($product['taxes']) && is_array($product['taxes'])) {
                            $_taxes = cw_tax_price($_coupon_discount, 0, false, NULL, "", $product['taxes'], $discount_coupon_data['coupon_type'] == "percent");
                            $_taxed_coupon_discount = $_taxes['taxed_price'];
                            $_coupon_discount = $_taxes['net_price'];
                        }
                        $price = $product['discounted_price'];
                        if ($discount_coupon_data['coupon_type'] == "absolute") {
                            $taxed_coupon_discount = $_taxed_coupon_discount;
                            $coupon_discount = $_coupon_discount;
                        } else {
                            $taxed_coupon_discount = $price * $_taxed_coupon_discount / 100;
                            $coupon_discount = $price * $_coupon_discount / 100;
                        }
                        $taxed_coupon_discount = $taxed_coupon_discount;
                        $products[$k]['coupon_discount'] = $taxed_coupon_discount;
                        $products[$k]['discounted_price'] = max($price - $coupon_discount, 0.0);
                        $return['coupon_discount'] += $taxed_coupon_discount;
                        if ($discount_coupon_data['coupon_type'] == "absolute" && $discount_coupon_data['apply_category_once'] == "Y") {
                            break;
                        }
                    }
                }
            } else {
                if ($discount_coupon_data['coupon_type'] == 'absolute' && $discount_coupon_data['discount'] > $return['total']) {
                    $discount_coupon_data['discount'] = 100;
                    $discount_coupon_data['coupon_type'] = 'percent';
                }
                if ($discount_coupon_data['coupon_type'] == 'absolute') {
                    $return['coupon_discount'] = $discount_coupon_data['discount'];
                } elseif ($discount_coupon_data['coupon_type'] == 'percent') {
                    $return['coupon_discount'] = $return['total'] * $discount_coupon_data['discount'] / 100;
                }
                $updated = cw_distribute_discount("coupon_discount", $products, $discount_coupon_data['discount'], $discount_coupon_data['coupon_type'], $return['total'], $_taxes);
                extract($updated);
                unset($updated);
                $return['coupon_discount'] = $coupon_discount;
            }
        }
        if (isset($coupon_discount_orig)) {
            $return['coupon_discount_orig'] = $coupon_discount_orig;
        } else {
            $return['coupon_discount_orig'] = $return['coupon_discount'];
        }
        $return['products'] = $products;
    }
    return $return;
}