}
cw_load('product', 'warehouse', 'cart');
$product_info = cw_func_call('cw_product_get', array('id' => $product_id, 'user_account' => $user_account));
$smarty->assign('product', $product_info);
//include $app_main_dir.'/addons/product_options/customer/product.php';
cw_include('addons/product_options/customer/product.php');
if ($REQUEST_METHOD == "POST" && $action == "update") {
    $poptions = $_POST['product_options'];
    if (!cw_check_product_options($product_id, $poptions)) {
        cw_header_location("index.php?target=popup_poptions&target={$target}&id={$id}&err=exception");
    }
    if ($mode == 'wishlist') {
        db_query("UPDATE {$tables['wishlist']} SET options = '" . addslashes(serialize($poptions)) . "' WHERE wishlist_id = '{$id}' AND event_id = '{$eventid}'");
    } else {
        $variant_id = cw_get_variant_id($product_options, $product_id);
        $amount = cw_warehouse_get_warehouse_avail($cart['products'][$cartindex]['warehouse'], $product_id, null, $variant_id);
        //		$amount = cw_get_options_amount($poptions, $cart['products'][$cartindex]['product_id']);
        if ($amount >= $cart['products'][$cartindex]['amount']) {
            $cart['products'][$cartindex]['options'] = $poptions;
            cw_unset($cart['products'][$cartindex], 'variant_id');
        } else {
            cw_header_location("index.php?target=popup_poptions&target={$target}&id={$id}&err=avail");
        }
        # Recalculate cart totals after updating
        $products = cw_call('cw_products_in_cart', array($cart, $user_account));
        $cart = cw_func_call('cw_cart_calc', array('cart' => $cart, 'products' => $products, 'userinfo' => $user_account));
    }
    ?>
<script type="text/javascript">
<!--
if (window.opener) window.opener.location.reload();
function cw_update_quantity_in_cart(&$cart, $productindexes, $warehouse_selection = array())
{
    global $addons, $config, $app_main_dir, $tables;
    if (empty($cart['products'])) {
        return;
    }
    $action = "update";
    foreach ($productindexes as $_cartid => $new_quantity) {
        foreach ($cart['products'] as $k => $v) {
            if ($v['cartid'] == $_cartid) {
                $productindexes_tmp[$k] = $new_quantity;
                break;
            }
        }
    }
    $productindexes = $productindexes_tmp;
    unset($productindexes_tmp);
    $min_amount_warns = array();
    foreach ($cart['products'] as $k => $v) {
        $tot = 0;
        $tot_amount = 0;
        $min_amount = cw_query_first_cell("SELECT min_amount FROM {$tables['products']} WHERE product_id = '{$v['product_id']}'");
        foreach ($productindexes as $productindex => $new_quantity) {
            if (!is_numeric($new_quantity)) {
                continue;
            }
            if ($cart['products'][$productindex]['product_id'] == $v['product_id'] && $cart['products'][$productindex]['variant_id'] == $v['variant_id'] && $cart['products'][$productindex]['warehouse'] == $v['warehouse']) {
                if ($new_quantity < $min_amount && $new_quantity > 0) {
                    $productindexes[$productindex] = $new_quantity = $v['amount'];
                    $min_amount_warns[$v['cartid']] = $min_amount;
                }
                $tot += floor($new_quantity);
            }
        }
        foreach ($cart['products'] as $k2 => $v2) {
            if ($v['product_id'] == $v2['product_id'] && $v2['variant_id'] == $v['variant_id'] && $v['warehouse'] == $v2['warehouse']) {
                $tot_amount += $v2['amount'];
            }
        }
        $updates_array[$k] = array("quantity" => $v['amount'], "total_quantity" => $tot, "total_amount" => $tot_amount);
    }
    cw_load('warehouse');
    $hash = array();
    # kornev, TOFIX
    if (!empty($addons['product_options'])) {
        foreach ($productindexes as $productindex => $new_quantity) {
            if (!empty($cart['products'][$productindex]['options'])) {
                $variant_id = $cart['products'][$productindex]['variant_id'];
                if ($variant_id) {
                    if (!isset($hash[$variant_id])) {
                        $hash[$variant_id]['avail'] = cw_warehouse_get_warehouse_avail($cart['products'][$productindex]['warehouse'], $cart['products'][$productindex]['product_id'], null, $variant_id);
                        //cw_get_options_amount($cart['products'][$productindex]['options'], $cart['products'][$productindex]['product_id']);
                    }
                    $hash[$variant_id]['old'] += $cart['products'][$productindex]['amount'];
                    $hash[$variant_id]['new'] += $new_quantity;
                    $hash[$variant_id]['ids'][] = $cart['products'][$productindex]['product_id'];
                    $cart['products'][$productindex]['variant_id'] = $variant_id;
                }
            }
        }
    }
    foreach ($productindexes as $productindex => $new_quantity) {
        if (!is_numeric($new_quantity) || empty($cart['products'][$productindex])) {
            continue;
        }
        $new_quantity = floor($new_quantity);
        $product_id = $cart['products'][$productindex]['product_id'];
        $total_quantity = $updates_array[$productindex]['total_quantity'];
        $total_amount = $updates_array[$productindex]['total_amount'];
        /*
        kornev - the amount is checking during the calculation
        		if ($config['General']['unlimited_products'] == "N") {
        			if (!empty($cart['products'][$productindex]['variant_id'])) {
        				$amount_max = $hash[$cart['products'][$productindex]['variant_id']]['avail'];
        				$total_quantity = $hash[$cart['products'][$productindex]['variant_id']]['old'];
        			}
        			else {
                        $amount_max = cw_warehouse_get_warehouse_avail($cart['products'][$productindex]['warehouse_customer_id'], $product_id, null);
        			}
        		}
        		else {
        */
        $amount_max = $total_quantity + 1;
        /*
        		}
        */
        $amount_min = cw_query_first_cell("SELECT min_amount FROM {$tables['products']} WHERE product_id='{$product_id}'");
        /*
        the amoutn is checking during the calculation
        		if ($config['General']['unlimited_products'] == "Y") {
        			$cart['products'][$productindex]['amount'] = $new_quantity;
        			continue;
        		}
        */
        $cart['products'][$productindex]['amount'] = $new_quantity;
        continue;
        if ($new_quantity >= $amount_min && $cart['products'][$productindex]['distribution']) {
            $cart['products'][$productindex]['amount'] = 1;
        } elseif ($new_quantity >= $amount_min && $new_quantity <= $amount_max - $total_amount + $cart['products'][$productindex]['amount']) {
            $cart['products'][$productindex]['amount'] = $new_quantity;
            if (!empty($cart['products'][$productindex]['variant_id'])) {
                $hash[$cart['products'][$productindex]['variant_id']]['old'] += $new_quantity - $cart['products'][$productindex]['amount'];
            } else {
                $updates_array[$productindex]['total_amount'] += $new_quantity - $cart['products'][$productindex]['amount'];
            }
        } elseif ($new_quantity >= $amount_min) {
            $old_amount = $cart['products'][$productindex]['amount'];
            $cart['products'][$productindex]['amount'] = $amount_max - $total_amount + $cart['products'][$productindex]['amount'];
            if (!empty($cart['products'][$productindex]['variant_id'])) {
                $hash[$cart['products'][$productindex]['variant_id']]['old'] += $amount_max - $total_amount + $cart['products'][$productindex]['amount'] - $old_amount;
            } else {
                $updates_array[$productindex]['total_amount'] += $amount_max - $total_amount + $cart['products'][$productindex]['amount'] - $old_amount;
            }
        } else {
            $cart['products'][$productindex]['amount'] = 0;
        }
        if ($cart['products'][$productindex]['amount'] < 0) {
            $cart['products'][$productindex]['amount'] = 0;
        }
    }
    $products = array();
    foreach ($cart['products'] as $product) {
        if ($product['amount'] > 0) {
            $product['destination_warehouse'] = $warehouse_selection[$product['cartid']];
            $products[] = $product;
        }
    }
    $cart['products'] = $products;
    return $min_amount_warns;
}
function cw_aom_add_new_products(&$doc, $products, $variants = array(), $amounts = array(), $discounts = array(), $prices = array())
{
    global $tables, $config, $customer_id, $current_area, $addons;
    $saved_data = compact('customer_id', 'current_area');
    $customer_id = $doc['userinfo']['customer_id'];
    # kornev
    # pos, warehouse movement, supplier order or usual sale
    if (in_array($doc['type'], array('G', 'D'))) {
        $current_area = 'G';
    } elseif (in_array($doc['type'], array('P', 'Q', 'R'))) {
        $current_area = 'S';
    } else {
        $current_area = 'C';
    }
    $customer_membership_id = $doc['userinfo']['membership_id'];
    $out_of_stock_products = array();
    if (is_array($products)) {
        foreach ($products as $index => $newproduct_id) {
            if (empty($newproduct_id)) {
                continue;
            }
            if ($prd = cw_func_call('cw_product_get', array('id' => $newproduct_id, 'user_account' => $doc['userinfo'], 'info_type' => 9))) {
                if ($prices[$index]) {
                    $prd['price'] = $prices[$index];
                }
                #kornev, salesman can create the doc with any warehouses, because it's only cart (customer will place the real doc later)
                if (AREA_TYPE != 'B') {
                    $_cart_warehouse = $doc['info']['warehouse_customer_id'];
                    if (!$_cart_warehouse) {
                        $_cart_warehouse = cw_warehouse_get_max_amount_warehouse($newproduct_id, $variants[$index]);
                        $doc['info']['warehouse_customer_id'] = $_cart_warehouse;
                    }
                    $_avail = cw_warehouse_get_warehouse_avail($_cart_warehouse, $newproduct_id, null, $variants[$index]);
                    if (!$_avail && !$config['unlimited_products']) {
                        $out_of_stock_products[] = array(1, $prd['product']);
                        continue;
                    }
                    $prd['avail'] = $_avail;
                    $prd['warehouse_customer_id'] = $_cart_warehouse;
                }
                # kornev, TOFIX
                if ($addons['product_options']) {
                    $prd['extra_data']['product_options'] = cw_get_default_options($newproduct_id, 1, $customer_membership_id, $variants[$index]);
                    list($variant, $product_options_result) = cw_get_product_options_data($newproduct_id, $prd['extra_data']['product_options'], $customer_membership_id);
                    $surcharge = 0;
                    $prd['product_options'] = $product_options_result;
                    if ($product_options_result) {
                        foreach ($product_options_result as $key => $o) {
                            $surcharge += $o['modifier_type'] == '%' ? $prd['price'] * $o['price_modifier'] / 100 : $o['price_modifier'];
                        }
                    }
                    $prd['price'] = price_format($prd['price'] + $surcharge);
                }
                if ($discounts[$index]) {
                    list($discount, $is_persent) = cw_core_parse_discount($discounts[$index]);
                    if ($discount) {
                        if ($is_persent == '%') {
                            $prd['price'] = $prd['price'] * (100 - $discount) / 100;
                        } else {
                            $prd['price'] = $prd['price'] - $discount;
                        }
                        if ($prd['price'] < 0) {
                            $prd['price'] = 0;
                        }
                    }
                }
                $prd['amount'] = intval($amounts[$index]) ? intval($amounts[$index]) : 1;
                $prd['new'] = true;
                if (empty($doc['max_cartid'])) {
                    $doc['max_cartid'] = 0;
                }
                $doc['max_cartid']++;
                $prd['cartid'] = $doc['max_cartid'];
                if (in_array($doc['type'], array('P', 'Q', 'R'))) {
                    $prd['is_auto_calc'] = $config['docs']['is_auto_calc'] == 'Y';
                    # kornev, if we are modify the supplier order, we should get the supplier price instead of the usual one (get latest)
                    /*
                                    cw_load('supplier');
                                    $supplier_net_price = cw_supplier_get_price($doc['userinfo']['customer_id'], $prd['product_id']);
                    /*
                                    if (!$supplier_net_price)
                                        $out_of_stock_products[] = array(3, $newproduct_id);
                                    else {
                    */
                    $prd['net_price'] = $supplier_net_price;
                    //                    $prd['is_net_price'] = $supplier_net_price;
                    $prd['discount_formula'] = cw_query_first_cell("select discount from {$tables['products_supplied_amount']} where product_id='{$prd['product_id']}' and supplier_customer_id='" . $doc['userinfo']['customer_id'] . "' order by date asc");
                    if (!$prd['discount_formula']) {
                        $prd['discount_formula'] = cw_user_get_discount_formula($doc['userinfo']['customer_id']);
                    }
                    $prd['price'] = cw_user_apply_discount_by_formula($prd['discount_formula'], $supplier_net_price);
                    $spl = cw_supplier_get_product_info($doc['userinfo']['customer_id'], $prd['product_id']);
                    $prd['productcode'] = $spl['productcode'];
                    $doc['products'][] = $prd;
                    //                }
                } else {
                    $doc['products'][] = $prd;
                }
                unset($prd);
            } else {
                $out_of_stock_products[] = array(2, $newproduct_id);
            }
        }
    }
    cw_load('cart_process');
    $doc['products'] = cw_call('cw_products_in_cart', array($doc, $doc['userinfo'], true));
    cw_cart_normalize($doc);
    extract($saved_data);
    return $out_of_stock_products;
}
function cw_product_get($params, $return = null)
{
    extract($params);
    global $customer_id, $customer_id_type, $current_area, $cart, $current_location;
    global $current_language, $tables, $config, $addons;
    cw_load('files', 'taxes', 'tags');
    $lang = $lang ? $lang : $current_language;
    $variant_id = $variant_id ? $variant_id : 0;
    $amount = intval($amount > 0 ? $amount : 1);
    $fields = $from_tbls = $query_joins = $where = array();
    # kornev, merge standart and additional variables
    if ($return) {
        foreach ($return as $saname => $sadata) {
            if (isset(${$saname}) && is_array(${$saname}) && empty(${$saname})) {
                ${$saname} = $sadata;
            }
        }
    }
    $from_tbls[] = 'products';
    $where[] = "{$tables['products']}.product_id='{$id}'";
    # kornev
    # customer area - all of the checkings
    # pos area - not check for membership, just available for sale property
    if (in_array($current_area, array('C'))) {
        $memberships = array(0);
        if ($user_account['membership_id'] > 0) {
            $memberships[] = intval($user_account['membership_id']);
        }
        $where[] = "{$tables['products_memberships']}.membership_id IN (" . join(',', $memberships) . ")";
        $where[] = "{$tables['products_prices']}.quantity <= {$amount} and {$tables['products_prices']}.membership_id in (" . join(',', $memberships) . ")";
        if ($config['Appearance']['categories_in_products'] == '1') {
            $where[] = "{$tables['categories_memberships']}.membership_id IN (" . join(',', $memberships) . ")";
            $query_joins['products_categories'] = array('on' => "{$tables['products_categories']}.product_id = {$tables['products']}.product_id", 'pos' => '0', 'is_straight' => 1);
            $query_joins['categories'] = array('on' => "{$tables['products_categories']}.category_id = {$tables['categories']}.category_id", 'parent' => 'products_categories');
            $query_joins['categories_memberships'] = array('on' => "{$tables['categories_memberships']}.category_id = {$tables['categories']}.category_id", 'parent' => 'categories', 'is_straight' => 1);
        }
        $where[] = "{$tables['products']}.status in ('" . implode("', '", cw_core_get_required_status($current_area)) . "')";
    } elseif (in_array($current_area, array('G'))) {
        $where[] = "{$tables['products']}.product_id = {$tables['products_prices']}.product_id AND {$tables['products_prices']}.quantity <= {$amount} and {$tables['products_prices']}.membership_id in (" . join(',', $memberships) . ")";
    }
    $fields[] = "{$tables['products']}.*";
    $query_joins['products_warehouses_amount'] = array('on' => "{$tables['products']}.product_id = {$tables['products_warehouses_amount']}.product_id and {$tables['products_warehouses_amount']}.warehouse_customer_id=0 and {$tables['products_warehouses_amount']}.variant_id='{$variant_id}'");
    $in_cart = 0;
    if ($current_area == 'C' && !empty($cart) && !empty($cart['products'])) {
        foreach ($cart['products'] as $cart_item) {
            if ($cart_item['product_id'] == $id) {
                $in_cart += $cart_item['amount'];
            }
        }
    }
    $fields[] = "{$tables['products_warehouses_amount']}.avail-{$in_cart} AS avail";
    # kornev, TOFIX
    if ($addons['product_options'] && in_array($current_area, array('A', 'P'))) {
        $query_joins['product_variants'] = array('on' => "{$tables['products']}.product_id = {$tables['product_variants']}.product_id");
        $fields[] = "IF({$tables['product_variants']}.product_id IS NULL, '', 'Y') as is_variants";
    }
    /*
        if ($addons['manufacturers']) {
            $query_joins['manufacturers'] = array(
                'on' => "$tables[manufacturers].manufacturer_id = $tables[products].manufacturer_id",
            );
            $fields[] = "$tables[manufacturers].manufacturer";
        }
    */
    // statistic
    $fields[] = "{$tables['products_stats']}.views_stats";
    $fields[] = "{$tables['products_stats']}.sales_stats";
    $fields[] = "{$tables['products_stats']}.del_stats";
    $fields[] = "{$tables['products_stats']}.add_to_cart";
    $query_joins['products_stats'] = array('on' => "{$tables['products_stats']}.product_id = {$tables['products']}.product_id");
    if ($current_area == 'A' || $current_area == 'P') {
        $fields[] = "{$tables['products_prices']}.price";
        $fields[] = "{$tables['products_prices']}.list_price";
        $query_joins['products_prices'] = array('on' => "{$tables['products_prices']}.product_id={$tables['products']}.product_id AND {$tables['products_prices']}.variant_id = '{$variant_id}' and {$tables['products_prices']}.quantity <= {$amount}");
    } else {
        $query_joins['products_prices'] = array('on' => "{$tables['products_prices']}.product_id={$tables['products']}.product_id", 'is_inner' => 1);
        # kornev, find the min price and select only this record.
        $fields[] = "min({$tables['products_prices']}.price) as price";
        $fields[] = "{$tables['products_prices']}.variant_id";
        $fields[] = "min({$tables['products_prices']}.list_price) as list_price";
    }
    $fields[] = "IF({$tables['products_lng']}.product_id != '', {$tables['products_lng']}.product, {$tables['products']}.product) as product";
    $fields[] = "IF({$tables['products_lng']}.product_id != '', {$tables['products_lng']}.descr, {$tables['products']}.descr) as descr";
    $fields[] = "IF({$tables['products_lng']}.product_id != '', {$tables['products_lng']}.fulldescr, {$tables['products']}.fulldescr) as fulldescr";
    $fields[] = "IF({$tables['products_lng']}.product_id != '', {$tables['products_lng']}.features_text, {$tables['products']}.features_text) as features_text";
    $fields[] = "IF({$tables['products_lng']}.product_id != '', {$tables['products_lng']}.specifications, {$tables['products']}.specifications) as specifications";
    $query_joins['products_lng'] = array('on' => "{$tables['products_lng']}.code='{$lang}' AND {$tables['products_lng']}.product_id = {$tables['products']}.product_id");
    if (in_array($current_area, array('C', 'G', 'S'))) {
        $fields[] = "{$tables['products_flat']}.*";
        $query_joins['products_flat'] = array('on' => "{$tables['products']}.product_id = {$tables['products_flat']}.product_id");
        if ($current_area == 'C') {
            $query_joins['products_memberships'] = array('on' => "{$tables['products_memberships']}.product_id = {$tables['products']}.product_id", 'is_inner' => 1);
        }
    }
    if ($config['Appearance']['categories_in_products'] == '1') {
        $fields[] = "{$tables['products_categories']}.category_id";
        $query_joins['categories'] = array('parent' => 'products_categories', 'on' => "{$tables['categories']}.category_id = {$tables['products_categories']}.category_id");
        $query_joins['products_categories'] = array('on' => "{$tables['products_categories']}.product_id = {$tables['products']}.product_id and {$tables['products_categories']}.main=1", 'pos' => '0', 'is_straight' => 1);
    }
    $fields[] = "{$tables['products']}.product_id";
    $query = cw_db_generate_query($fields, $from_tbls, $query_joins, $where, array("{$tables['products']}.product_id"), array(), array());
    $product = cw_query_first($query);
    # Error handling
    if (!$product || $current_area == 'C' && !$product['category_id'] && $config['Appearance']['categories_in_products'] == '1') {
        return false;
    }
    $product['system'] = cw_call('cw_product_get_system_info', array($product['product_id']));
    $product['attribute_class_ids'] = cw_func_call('cw_items_attribute_classes_get', array('item_id' => $product['product_id'], 'item_type' => 'P', 'for_product_modify' => $for_product_modify));
    if ($info_type & 1) {
        $product['membership_ids'] = cw_query_key("select membership_id from {$tables['products_memberships']} where product_id = '{$product['product_id']}'");
    }
    # kornev, TOFIX
    if ($info_type & 64 && $product['variant_id'] && $addons['product_options']) {
        $tmp = cw_query_first("SELECT * FROM {$tables['product_variants']} WHERE variant_id = '{$product['variant_id']}'");
        if (!empty($tmp)) {
            cw_unset($tmp, "def");
            $product = cw_array_merge($product, $tmp);
        } else {
            cw_unset($product, 'variant_id');
        }
    }
    if ($info_type & 128) {
        cw_load('image');
        $product['image_thumb'] = cw_image_get('products_images_thumb', $id);
    }
    if ($info_type & 512) {
        $product['image_det'] = cw_image_get('products_images_det', $id);
        # kornev, TOFIX
        if (in_array($current_area, array('C', 'B')) && $product['variant_id'] && $addons['product_options']) {
            $var_image = cw_image_get('products_images_var', $id);
            if (!$var_image['is_default']) {
                $product['image_det'] = $var_image;
            }
        }
    }
    # TOFIX
    if (in_array($current_area, array('C', 'B', 'G'))) {
        if (!$addons['egoods']) {
            $product['distribution'] = '';
        }
        $product['display_price'] = $product['price'];
        if ($current_area == 'C' && $info_type & 8) {
            $_tmp_price = $product['price'];
            $product['price'] = $product['list_price'];
            cw_get_products_taxes($product, $user_account);
            $product['list_price_net'] = $product['list_price'];
            $product['list_price'] = $product['taxed_price'];
            $product['price'] = $_tmp_price;
        }
        $product['taxes'] = cw_get_products_taxes($product, $user_account, false, '', $current_area == 'G' && $user_account['usertype'] != 'R');
    }
    if (in_array($current_area, array('C', 'B'))) {
        $product['descr'] = cw_eol2br($product['descr']);
        $product['fulldescr'] = cw_eol2br($product['fulldescr']);
    }
    $product['uns_shippings'] = unserialize($product['shippings']);
    $product['tags'] = cw_tags_get_product_tags($id);
    if ($info_type & 4096 && $product['warranty_id']) {
        $wr = cw_get_warranty($product['warranty_id'], $lang);
        $product['warranties'] = $wr['body'];
    }
    // TODO: move to addon as on_product_get handler
    if ($info_type & 8192) {
        cw_load('warehouse');
        if ($addons['warehouse']) {
            if (AREA_TYPE == 'A') {
                $product['avail_ordered'] = cw_warehouse_get_avail($id, 0, 'avail_ordered');
                $product['avail_sold'] = cw_warehouse_get_avail($id, 0, 'avail_sold');
                $product['avail_reserved'] = cw_warehouse_get_avail($id, 0, 'avail_reserved');
            } elseif (AREA_TYPE == 'P') {
                $product['avail'] = cw_warehouse_get_warehouse_avail($customer_id, $id);
                $product['avail_ordered'] = cw_warehouse_get_warehouse_avail($customer_id, $id, 'avail_ordered');
            } else {
                // TOFIX:  $product['avail'] becomes different meanings when info_type & 8192 flag is raised or not
                // without flag - avail of all variants without products already in cart
                // with flag - total avail as set in admin per variant
                //                $product['avail'] = cw_warehouse_get_avail_for_customer($id, $product['variant_id']);
                //                $product['avails']= cw_warehouse_get_avails_customer($id);
                $product['avail'] = cw_warehouse_get_avail_for_customer($id, $product['variant_id']);
            }
        } else {
            $product['avails'] = cw_warehouse_get_avails_customer($id, $product['avail'] + $product['avail_ordered']);
        }
    }
    return $product;
}
         $result['product_info'] = $product_info;
         $product_id = $product_info['product_id'];
         if ($addons['sn']) {
             $result['auto_generated'] = cw_serials_is_auto_generated($product_id);
             if ($result['auto_generated']) {
                 $result['numbers'] = implode(" ", cw_serials_check_product($product_id));
             } elseif ($ean['serial'] && $ean['serial'] != $default_number) {
                 $res = cw_serials_add($user_account['warehouse_customer_id'], $product_id, $ean['serial']);
                 $result['numbers'] = $ean['serial'];
                 if (!$res) {
                     $result['error'] = 2;
                 }
             }
         }
         if (!$result['error']) {
             $current_avail = cw_warehouse_get_warehouse_avail($user_account['warehouse_customer_id'], $product_info['product_id'], null, $product_info['variant_id']);
             $insert = array();
             $insert['avail'] = intval($current_avail) + 1;
             $insert['warehouse_customer_id'] = $user_account['warehouse_customer_id'];
             $insert['variant_id'] = $product_info['variant_id'];
             $insert['product_id'] = $product_info['product_id'];
             cw_warehouse_insert_avail($insert, true);
         }
     } else {
         $result['error'] = 1;
     }
     $ean_products[] = $result;
 }
 if (count($ean_products)) {
     $mode = 'result';
 } else {