Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

andreyegorov1987

Новачок
  
  • Публікації

    19
  • З нами

  • Відвідування

Повідомлення, опубліковані користувачем andreyegorov1987

  1. Glovo (процесс наработки, получилось выгрузить пока на свой сфтп, на их еще не пробовал), torgsoft не может формировать первую колонку в c заданным значением, в нашем случае id  который дает GLOVO. Значит настраиваем выгрузку для каждой точки продаж по ftp к нам на сайт и пишем скрипт который будет добавлять нужный id по спецификации Glovo и отправлять на их SFTP по запросу из Torgsoft после выгрузки.

    магазин.php

    -----------------------------------------------------------------------------------------

    <?php
    // выполняем код
    // путь к файлу CSV
    $file_path = '/sites/мой_сайт.юа/image/catalog/torgsoft/glovo-lyst.csv';

    // определение кодировки и разделителя
    $handle = fopen($file_path, 'r');
    $first_line = fgets($handle);
    fclose($handle);
    $delimiter = ','; // задайте нужный разделитель
    $encoding = mb_detect_encoding($first_line, 'UTF-8, Windows-1251'); // задайте подходящую кодировку

    // чтение файла и изменение содержимого
    $data = array();
    $row = 0;
    if (($handle = fopen($file_path, 'r')) !== false) {
        while (($csv_data = fgetcsv($handle, 1000, ";")) !== false) {
            $num = count($csv_data);
            for ($c = 0; $c < $num; $c++) {
                $csv_data[$c] = mb_convert_encoding($csv_data[$c], 'UTF-8', $encoding);
            }
            if ($row == 0) { // изменение заголовка первой колонки
                $csv_data[0] = 'Новый заголовок';
            } else { // изменение значения первой колонки
                $csv_data[0] = 'Новое значение';
            }
            // замена запятой на точку в числовых значениях
            for ($c = 0; $c < $num; $c++) {
                if (is_numeric($csv_data[$c])) {
                    $csv_data[$c] = str_replace(',', '.', $csv_data[$c]);
                }
            }
            $data[] = $csv_data;
            $row++;
        }
        fclose($handle);
    }

    // сохранение файла с новым разделителем
    $file_name = 'new_file_'.date('Ymd_Hi_s').'.csv';
    $file_path = '/sites/мой_сайт.юа/image/catalog/torgsoft/'.$file_name;
    $handle = fopen($file_path, 'w');
    foreach ($data as $csv_data) {
        $line = implode($delimiter, $csv_data) . "\n";
        fwrite($handle, $line);
    }
    fclose($handle);

    // отправка файла по SFTP
    $sftp_server = 'глово_сфтп';
    $sftp_username = 'логин';
    $sftp_password = 'пароль';
    $sftp_path = 'путь_кототый они дают' . $file_name;
    $local_path = $file_path;

    $connection = ssh2_connect($sftp_server);
    ssh2_auth_password($connection, $sftp_username, $sftp_password);
    $sftp = ssh2_sftp($connection);

    $stream = fopen("ssh2.sftp://{$sftp}{$sftp_path}", 'w');

    if ($stream) {
        $contents = file_get_contents($local_path);
        fwrite($stream, $contents);
        fclose($stream);
        echo "Файл успешно загружен на SFTP сервер\n";
        unlink($local_path);
    }
    else {
        echo "Ошибка загрузки файла на SFTP сервер\n";
    }
     

  2. Инструкция автоматической выгрузки заказов в Torgsoft с Opencart.

    -------------------------------------------------------------------------------------------------------------

    orders.php (сохраняем выгруженный файл XML с форматом торгсофта по их спецификации)

    -----------------------------------------------------------------------------------------------------------

    <?php
    // настройки подключения к базе данных
    $db_hostname = 'localhost';
    $db_username = 'пользователь';
    $db_password = 'пароль к базе';
    $db_database = 'база данных';
    $db_prefix = 'oc_'; // префикс таблиц базы данных

    // получаем данные о заказе из базы данных
    $db = new mysqli($db_hostname, $db_username, $db_password, $db_database);
    if ($db->connect_error) {
        die('Ошибка подключения к базе данных: ' . $db->connect_error);
    }
    $sql = "SELECT * FROM `" . $db_prefix . "order` ORDER BY `order_id` DESC LIMIT 1";
    $result = $db->query($sql);

    if (!$result) {
        die('Ошибка запроса к базе данных: ' . $db->error);
    }

    if ($result->num_rows == 0) {
        echo "Заказы не найдены в базе данных";
    } else {
        // Обрабатываем все заказы, полученные из запроса SQL
          while ($order_data = $result->fetch_assoc()) {
            // Получаем данные о товарах из таблицы `oc_order_product`
            $sql = "SELECT * FROM `" . $db_prefix . "order_product` WHERE order_id = " . $order_data['order_id'];
            $product_result = $db->query($sql);

            // формируем XML-документ для каждого заказа
            $xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><Order></Order>');
            $client = $xml->addChild('Client');
            $client->addChild('Name', $order_data['firstname'] . ' ' . $order_data['lastname']);
            $client->addChild('MPhone', $order_data['telephone']);
            $client->addChild('CPhone', $order_data['fax']);
            $client->addChild('ZIP', $order_data['postcode']);
            $client->addChild('Country', $order_data['payment_country']);
            $client->addChild('Region', $order_data['payment_zone']);
            $client->addChild('City', $order_data['payment_city']);
            $client->addChild('Address', $order_data['payment_address_1'] . ' ' . $order_data['payment_address_2']);
            $client->addChild('EMail', $order_data['email']);

            $options = $xml->addChild('Options');
            $options->addChild('SaleType', 1);
            $options->addChild('Comment', $order_data['comment']);
            $options->addChild('OrderNumber', $order_data['order_id']);
            $options->addChild('DeliveryCondition', $order_data['shipping_method']);
            $options->addChild('ReserveDate', date('Ymd', strtotime($order_data['date_added'])));
            $options->addChild('BonusPay', $order_data['reward']);
            $options->addChild('OrderDate', $order_data['date_added']);
            $options->addChild('CurrencyInternationalCode', $order_data['currency_code']);

            $goods = $xml->addChild('Goods');
            while ($product_data = $product_result->fetch_assoc()) {
                $good = $goods->addChild('Good_' . ($product_data['product_id']));
                $good->addChild('GoodID', $product_data['model']);
                $good->addChild('Price', $product_data['price']);
                $good->addChild('Count', $product_data['quantity']);
            }
          
        

    $xml_file = __DIR__ . '/order_' . $order_data['order_id'] . '.xml';
          }
    $xml->asXML($xml_file);
    $result->free_result();
    $db->close();
          
     }

    ?>

    ------------------------------------------------------------------------------------------------------------------

    /сайт.юа/image/catalog/torgsoft/
    Копируем orders.php сюда, меняем внутри доступ

    ------------------------------------------------------------------------------------------------------------------

    Дальше с модулем Simple меняем......

    --------------------------------------------------------------------------------------------------------------

    /мой_сайт.юа/catalog/controller/checkout/success.php
    /storage/modification/catalog/controller/checkout/success.php

    Вставляем 
    require_once(DIR_IMAGE . 'catalog/torgsoft/orders.php');    
    перед
    $this->response->setOutput($this->load->view('common/success', $data));
    В конце файла

    ------------------------------------------------------------------------------------------------------------

     

    В итоге имеем после оформления заказа сораняется файл с заказом в каталоге с файлом импорта товаров. Заказы забираются торгсофтом после синхронизации и появляются в заказе удаленного клиента. В тогсофте обязательно не забыть выставить XML для заказов. После синхронизации торгсофт удаляет файлы заказов (безопасно)

  3. Напишу сюда, интересует этот модуль очень, но не даёт пока автоматизация синхронизации. Товары в магазине обновляются каждый час, как это реализовать, через какой модуль дополнительный ? Я готов и его купить, вопрос существует ли он в природе ? Как обновлять эту отдельную таблицу в базе данных, все модули синхронизации с кроном, которые я нашёл обновляют только стандартные поля продукта. Я не понимаю как люди могут разработать такой сложный модуль и не доработать такую важную часть, ведь нет смысла в функции мультисклада, если остатки там не отображаются верно. Кто уже пользуется с 1с, как вы это реализовали ?

  4. 08.12.2022 в 13:32, radaevich сказал:

    А если через админку писать кодом описание, то выводит нормально? .Посмотрите оборачивает ли дополнительно система это текст в какие-то теги, может <pre>. А лучше скиньте ссылку на страницу, где есть такая проблема.

    "<p><strong>Застосування:</strong> наносити 1 ампулу (15мл) виключно на корені волосся. Використовувати 2 рази в тиждень протягом 3-х місяців. Після відкриття ампули використовувати негайно.</p"

  5. 08.12.2022 в 13:32, radaevich сказал:

    А если через админку писать кодом описание, то выводит нормально? .Посмотрите оборачивает ли дополнительно система это текст в какие-то теги, может <pre>. А лучше скиньте ссылку на страницу, где есть такая проблема.

     

    Если  через код в админке, то все нормально, но надо что бы это все было на стороне 1с, поскольку описание улетает на разные сайты. На странице товара его opencart заключает ""

     

    https://realnatura.eu/volossya/ampuly-real-natura-pro-keda-forte-proty-vypadinnya-volossya-12x15ml-shampun-100-ml

  6. Кто ни будь сталкивался с проблемой выгрузки ? С одной стороны есть 1с она выгружает уже форматированый текст с html, но в магазине эти теги в описании отображаются. Можно было бы отключить через код, но так не подходит, потому что есть часть товаров с описанием просто тектом

     

    Исходный текст такой должен быть:

    Ампули Pro-Keda Forte проти випадіння волосся 12x15мл + Шампунь 100 мл

    Усуває випадіння волосся, додає об'єм і збільшує щільність волосся. Одні з основних активних компонентів – вітамін B5, кофеїн, екстракт бамбука.

    Застосування: наносити 1 ампулу (15мл) виключно на корені волосся. Використовувати 2 рази в тиждень протягом 3-х місяців. Після відкриття ампули використовувати негайно.

     

    В файле импорта и странице товар он виден как :

     

    <h4>Ампули Pro-Keda Forte проти випадіння волосся 12x15мл + Шампунь 100 мл</h4>
    <p>Усуває випадіння волосся, додає об'єм і збільшує щільність волосся. Одні з основних активних компонентів &ndash; вітамін B5, кофеїн, екстракт бамбука.</p>
    <p><strong>Застосування:</strong> наносити 1 ампулу (15мл) виключно на корені волосся. Використовувати 2 рази в тиждень протягом 3-х місяців. Після відкриття ампули використовувати негайно.</p>

  7. Добрый день, после подключения к CloudFlare вот такая штука светится, на просторах интернета я решения не нашел:

    Notice: Undefined property: Proxy::getProductMainCategoryId in /sites/storage/modification/system/engine/action.php on line 79

    hpd.jpg

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.