Jump to content

CTPAX5000

Новичок
  • Content Count

    20
  • Joined

  • Last visited

Community Reputation

3 Обычный

About CTPAX5000

  • Rank
    Пользователь

Recent Profile Visitors

471 profile views
  1. Сделал себе модификатор к этому модулю <?xml version="1.0" encoding="utf-8"?> <modification> <name>Свое имя</name> <code>Свой код</code> <version>Своя версия</version> <author>Свое имя</author> <link>Своя почта</link> <file path="admin/model/extension/exchange1c.php"> <operation> <search><![CDATA[$this->log("~КОНЕЦ ЗАГРУЗКИ ДАННЫХ");]]></search> <add position="before"><![CDATA[ if ($this->config->get('exchange1c_product_disable_if_quantity_zero') == 1) { $this->query("UPDATE `" . DB_PREFIX . "product` SET `status`='0' WHERE `quantity` <= 0" ); } if ($this->config->get('exchange1c_product_disable_if_price_zero') == 1) { $this->query("UPDATE `" . DB_PREFIX . "product` SET `status`='0' WHERE `price` = 0" ); } $this->query("UPDATE `" . DB_PREFIX . "product` SET `status`='1' WHERE `price` > 0 AND `quantity` > 0" ); ]]></add> </operation> </file> </modification> Проверяет, если установлена галочка отключать товары с нулевым остатком и нулевой ценой и отключает их. При появлении цены или положительного остатка после обмена - включает их. Так же можно и с категориями сделать
  2. Что бы выгружать все измененные заказы, кроме брошенных, нужно добавить фильтр по полю order_status_id в функцию public function queryOrdersExport(). Брошенные заказы имеют значение order_status_id=0. // Этот запрос будет использовать индексы поля date_modified $query = $this->query("SELECT `order_id`,`order_status_id` FROM `" . DB_PREFIX . "order` WHERE `date_modified` BETWEEN STR_TO_DATE('" . $from_date . "', '%Y-%m-%d %H:%i:%s') AND STR_TO_DATE('" . $to_date . "', '%Y-%m-%d %H:%i:%s')"); сюда добавить условие, что order_status_id<>0. Функция находится в файле по пути admin\model\extension\exchange1c.php Однако, я не совсем понимаю, зачем изменять заказы непосредственно в OpenCart, если можно эти обязанности возложить на 1С. Однако и в этом случае придется допиливать модуль обмена, поскольку у Автора логика выглядит следующим образом: Пришел заказ на сайт; выгрузили в 1С; изменили состав заказа в 1С (нет товара, или клиент решил заказать больше или меньше), выгрузили из 1С в ОС; получившуюся разницу в цене закинули в доставку. При этом состав товара, его количество в ОС уже не совпадает с данными в 1С. Поэтому в нашем случае, мы при загрузке обновленного заказа из 1С в ОС просто удаляем все товары из БД и записываем туда уже новые данные из файла обмена. Так же, Что бы не вносить изменения в модуль обмена, можно использовать предложенный метод выгрузки заказов с определенным статусом после изменения в ОС, если вместе с изменениями заказу присваивать статус, указанный в настройках как выгружаемый.
  3. Это при выгрузке с сайта или при выгрузке из 1С? Попробуйте создать обмен в 1С с выгрузкой в локальную папку, и выложите сюда все что она отдает. Только что посмотрел, в версии модуля 1.6.4.7 есть такая строчка $product_feature_id = $this->addFeature($product_id, $data['feature_guid'], $data['ean'], $data['sku']); Однако самой функции addFeature ни в одном файле модуля ПРОСТО НЕТ в наличии. Поэтому характеристики в OpenCart просто не попадают в базу данных. В версии модуля 1.6.4.5 есть такая функция, однако там логика поиска по характеристикам отличается от того, как задумано в 1.6.4.7. Кто разбирается немного в PHP - сможет вставить эту функцию, и, по идее, должно заработать. В моем проекте характеристики не используются, поэтому я не имею возможности поэкспериментировать. Вот код функции из версии 1.6.4.5: /** * ver 3 * update 2017-12-20 */ private function addFeature($product_id, $feature_guid, $ean = '', $sku = '') { $this->query("INSERT INTO `" . DB_PREFIX . "product_feature` SET `product_id` = " . $product_id . ", `guid` = '" . $this->db->escape($feature_guid) . "', `ean` = '" . $this->db->escape($ean) . "', `sku` = '" . $this->db->escape($sku) . "'"); return $this->db->getLastId(); } // addFeature() Функция должна находиться в файле по пути admin\model\extension\exchange1c.php
  4. Модуль работает на версии CommerceML 2.07. Розница же работает скорее всего на версии CommerceML 2.08 и выше. Хотя в описании к модулю и написано, что он умеет понимать вплоть до CommerceML 2.10, но это не может быть правдой, т.к. начиная с версии CommerceML 2.08 уже обратно не совместимо с ранними версиями. У них разная структура, названия реквизитов .xml файла и 1С по-разному обрабатывает ответ с сайта. Во всяком случае для УТ 10.3 и модуле обмена данными Битрикс 4.0.5.1 (CommerceML 2.08) ситуация выглядит именно таким образом.
  5. В настройках магазина на вкладке Опции есть пункт "Статус заказа" - это статус, который присваивается полностью сформированному заказу. В настройках обмена на вкладке Заказы в пункте "Статус для выгрузки:" выставьте такой же статус. А в настройке "Статус выгруженных:" поставьте другой. Логика такая: все заказы со статусом как в "Статус для выгрузки" будут выгружаться в любом случае, пока не изменится статус этих заказов. Однако, после выгрузки модулем, статус этих заказов изменится на статус, указанных в пункте "Статус выгруженных". И эти заказы перестанут выгружаться. Если Вы используете значение "Статус для выгрузки" "Не использовать", то у Вас будут выгружаться все заказы, в том числе и неоформленные. Так же имейте в виду, что, если 1С умеет выгружать статусы, и присвоит импортированному заказу статус как в пункте"Статус для выгрузки", то при выгрузке этих заказов они опять поменяются в магазине, и при следующем обмене снова выгрузятся в 1С
  6. Этот модуль через раз работает с версией OC 2.3.х.х. а у вас 3.0.2.0. Там совсем другая структура базы данных. Возможно поэтому и не работает. Так же в данном модуле очень плохо с характеристиками товара. поставьте в настройке Уровень вывода в журнал: Отладка и SQL запросы. Из того лога, что вы прислали - вроде ошибок нет, но там нет полной информации, что происходит. Так же в настройках обмена должны быть сопоставлены типы цен. Попробуйте так же создать вручную хотя бы одну характеристику товара, который выгружаете.
  7. 1С не выгружает заказы, созданные в ней вручную. Она отслеживает только те заказы, которые ранее были загружены с интернет-магазина
  8. Уважаемый IronMann, последуйте уже собственному совету, надоело читать Ваш негатив через пост. Создайте уже свой супер-модуль (исходя из Ваших же слов, Вам это под силу), и предлагайте его народонаселению... Я думаю, если будет качественная альтернатива, за разумные деньги, - будет и у Вас покупатель и довольный юзер. А пока есть только негатив, альтернативы - увы, нет.
  9. Подтверждаю, Ранее в посте поторопился, на версии 19b не срабатывает функция отключения при отсутствии на складе. 1С перестала ругаться при выгрузке, в логе пишет 2018-06-12 0:29:55 - 2798(M) Цена основная 'Оптовая USD' = 7 2018-06-12 0:29:55 - 2810(M) Нет характеристик, можно удалить старые цены: 2018-06-12 0:29:55 - 2723(M) Удалено старых цен: 0 2018-06-12 0:29:55 - 2813(M) Цена товара = 7 2018-06-12 0:29:55 - 2877(M) Остаток: 0 2018-06-12 0:29:55 - 2880(M) Установлен статус при отсутствии на складе, stock_status_id:5 2018-06-12 0:29:55 - 2892(M): однако товар не отключается.
  10. Этот пункт как раз и запрещает изменять статус у товара. т.е. если он включен, то не будут отключаться товары с нулевым остатком и нулевой ценой. Поэтому этот пункт отключаем, включаем "Не показывать товар с нулевой ценой " и должно работать
  11. Спасибо, поправил. Остался только вопрос: при включенной опции " Не показывать товар с нулевым остатком " по-прежнему обмен завершается ошибкой в 1С., хотя сам магазин товар с нулевым остатком отключает. Выгружено товаров: 338 Выгружено картинок: 0 Получен расширенный статус успешного завершения сеанса Ответ сервера: Successfully import catalog Произошла ошибка на стороне сервера. Получен неизвестный статус импорта. Обмен не выполнен Ответ сервера: Successfully processed file: C:/***/system/storage/cache/exchange1c/offers.xml Выгрузка товаров завершена с ошибками!!!
  12. Доброго дня. В версии 1.6.4.4b15 поменяли преобразование из UTF-8 в Windows-1251, теперь УТ 10.3 не может обработать ответ сервера и каждый обмен завершается ошибкой в 1С
  13. Доброго дня. 1С Управление торговлей 10.3, модуль 1.6.4.4b10, OpenCart 2.3.0.2 (rs.6) . При установке "Не показывать товар с нулевым остатком" 1С получает такой ответ: Выгружено товаров: 1 Получен расширенный статус успешного завершения сеанса Ответ сервера: Successfully import catalog Произошла ошибка на стороне сервера. Получен неизвестный статус импорта. Обмен не выполнен Ответ сервера: Successfully processed file: /home/***/***/system/storage/cache/exchange1c/offers.xml Выгрузка товаров завершена с ошибками!!! Считает обмен ошибочным и при следующей синхронизации пытается еще раз выгрузить этот же товар. OpenCart же успешно обрабатывает выгрузку, отнимает количество, отключает товар при нулевом остатке. Однако, если отсутствующий товар поступил на склад, модуль его почему-то не включает
×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.