И такой вопрос.
Схема обмена с 1С = 2.05, "Индивидуальные опции"
Проясните мне по этому куску кода. Взят он из func.php модуля rus_exim_1c
$option_hash = $add_options_combination;
$option_hash['option_hash'] = $_combination_data['combination_guid'];
$combination_data = array(
'product_id' => $pid,
'combination_hash' => fn_generate_cart_id($pid, array('product_options' => $add_options_combination)),
'combination' => fn_get_options_combination($add_options_combination),
'amount' => $amount,
'external_id' => $_combination_data['combination_guid'],
'price' => $_combination_data['price_per_item']
);
if (($amount == 0) && ($hide_product == 'Y')) {
if (!empty($option_id) && !empty($variant_id)) {
$combination = array(
'product_id' => $pid,
'combination' => serialize($add_options_combination),
);
db_query("REPLACE INTO ?:product_options_exceptions ?e", $combination);
}
}
$variant_combination = db_get_field("SELECT combination_hash FROM ?:product_options_inventory WHERE combination_hash = ?i", $combination_data['combination_hash']);
if (empty($variant_combination)) {
db_query("REPLACE INTO ?:product_options_inventory ?e", $combination_data);
} else {
db_query("UPDATE ?:product_options_inventory SET ?u WHERE combination_hash = ?i", $combination_data, $combination_data['combination_hash']);
}
if (!empty($image_pair_id)) {
db_query("UPDATE ?:images_links SET object_id = ?i WHERE pair_id = ?i", $combination_data['combination_hash'], $image_pair_id);
}
if ($combination_data['amount'] > 0) {
$empty_stock = false;
}
}
// To hide products if they are out of stock
if ($hide_product == 'Y') {
if ($empty_stock) {
db_query("UPDATE ?:products SET status = 'H' WHERE product_id = ?i", $pid);
}
}
У меня получается следующее:
Если кол-во в комбинации опций = 0 и стоит опция "скрывать отсутствующие товары" то комбинации опций записывается в таблицу недоступных опций. А дальше она добавляется или корректируется зачем-то в список комбинаций опций!!! ЗАЧЕМ?
на сайте в этом случае получается чепуха. Комбинация опций видна посетителю, но когда он её выбирает, то пишется, что данная комбинация не доступна.
Где логика? Зачем так сделано?