artbe Опубликовано 17 августа, 2018 Жалоба Поделиться Опубликовано 17 августа, 2018 (изменено) Добрый день. Штатно файл обработчик 1c_exchange.php грузит все товары по отдельности из xml файла. В файле обработчика 1c_exchange.php есть код: if(empty($variant_id)) $simpla->variants->add_variant($variant); else $simpla->variants->update_variant($variant_id, $variant); Код должен обновлять вариант товара, если нашел нужный вариант или добавить новый вариант товара. НО данный код не срабатывает у меня. У меня всегда создаются новые товары (даже если создаю тестовый товар и в товаре указываю варианты и артикула). Т.е. например: Чайник электрический UNIT синийЧайник электрический UNIT белыйЧайник электрический UNIT зеленый Все это по сути один товар, с разными вариантами, но разными артикулами. Делаю новый товар, например: Чайник электрический UNIT и делаю 3 варианта товара (синий, белый, зеленый и ставлю каждому из вариантов разные артикула). В результате при синхронизации все равно создаются новые товары. И на варианты товара не переносятся остатки и цены. Понимаю, что надо делать проверку по полю sku, при проверке на варианты: if(empty($variant_id) && !empty($variant_1c_id)) { $simpla->db->query('SELECT id FROM __variants WHERE external_id=? AND product_id=?', $variant_1c_id, $product_id); $variant_id = $simpla->db->result('id'); } elseif(empty($variant_id) && empty($variant_1c_id)) { $simpla->db->query('SELECT id FROM __variants WHERE product_id=?', $product_id); $variant_id = $simpla->db->result('id'); } И дальше обновлять варианты: if(empty($variant_id)) { $variant->product_id = $product_id; $variant->stock = 0; $variant_id = $simpla->variants->add_variant($variant); } elseif(!empty($variant_id)) { $simpla->variants->update_variant($variant_id, $variant); } Simpla штатная без допилов.Но сломал уже голову. Кто сможет помочь в реализации, или натолкнуть в нужное направление. Изменено 17 августа, 2018 пользователем artbe Цитата Ссылка на сообщение Поделиться на другие сайты
Maksclub Опубликовано 17 августа, 2018 Жалоба Поделиться Опубликовано 17 августа, 2018 Покажите ваш offers.xml из 1С который прилетает Цитата Ссылка на сообщение Поделиться на другие сайты
artbe Опубликовано 17 августа, 2018 Автор Жалоба Поделиться Опубликовано 17 августа, 2018 Покажите ваш offers.xml из 1С который прилетает Во вложении. Дело не в offers.xml, а в обработчике. Т.к. в обработчике надо делать условие, по типу: Если есть $variant->sku и он совпадает с $xml_product->Артикул - то обновлять остатки и цену у данного варианта. Само поле Артикула, в файле import.xml. По умолчанию, оно без проблем грузится в одиночные товары (которые не имеет вариантов). Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 17 августа, 2018 Жалоба Поделиться Опубликовано 17 августа, 2018 Делаю новый товар, например: Чайник электрический UNIT и делаю 3 варианта товара (синий, белый, зеленый и ставлю каждому из вариантов разные артикула). В результате при синхронизации все равно создаются новые товары. Очень сильно зависит от того, что означает "Делаю". Если создаете новый товар в админке вручную, а потом хотите, чтоб работало при обмене, то так зачастую не идет. И вообще вопрос не простой, зависит от многого. Примитивным методом тыка вряд ли получится. По моим наблюдениям, в таких ситуациях в 90% причина совсем не в том месте, где ее обычно ищут методом тыка... Дело не в offers.xml, а в обработчике.Т.к. в обработчике надо делать условие, по типу... Результат зависит и от обработчика и от файла. А если считаете, что все дело в условии, так пишите условие. Если после этого наладится, то, значит, Вы были правы... Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.