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; }