Форум пользователей Impera CMS
Impera CMS - отличный движок для лёгкого создания интернет магазина.
Обладает невероятным количеством функций, необходимых в онлайн торговле.

Следить
Главная
17:36
09 июл
#
?
написал:

В каких файлах хочу изменить настройки. Есть Глюк при проведении заказа - закрытии и проплаты он всеравно в файле (есть необходимость сделать только новые - открытые Заказы)

09:16
11 июл
#
написал:

В новой версии движка появится двусторонняя синхронизация новых и изменившихся заказов с МойСклад и по протоколу CommerceML.

А существующая сейчас функция авто экспорта заказов разрабатывалась как простая альтернатива, в которой новые заказы добавляются в экспорт без анализа и контроля их дальнейшего изменения. Сам же анализ экспортируемых данных (парсинг, проверка актуальности) возложен на внешнюю учетную систему.

Соответственно в таком виде данная альтернатива обременена необходимостью ручного вмешивания в процесс экспорта - предполагается, что в конце торгового дня (или периода) менеджер изнутри внешней учетной системы выкачивает (экспортирует) накопившийся за день файл заказов, а потом заходит на сайт магазина и самостоятельно удаляет этот файл, либо во внешней системе есть кнопка "Удалить файл" - и уже система сама обращается к сайту через определенный "удаляющий" адрес, скажем http://сайт/export/delete_last_orders?secret=НЕКИЙ_ПАРОЛЬ.

По схеме, еще нереализованной в движке версии 130418, этот "удаляющий" адрес должен быть прописан в файле .htaccess как внутри сайтовый редирект на некоторый PHP-скрипт, вообразим, будто разместили его в objects/delete_last_orders_export.php. Скрипт всего лишь проверяет правильность секретного слова, переданного в GET-параметре secret вызванной страницы, и если слово верное, извлекает из настроек сайта файловый путь, где размещен файл экспорта, а потом просто удаляет этот файл. Тем самым функция авто экспорта готова к новому торговому дню.

Поэтому данная упрощенная функция авто экспорта заказов содержит всего 3 настройки. Они показаны на скриншотах (кликабельны для увеличения). Сначала заходим на страницу заказов.



На странице списка заказов в админпанели щелкаем ссылку настройки, попадаем в блок настроек внизу страницы. Установив в настройках флажок Включен, тем самым активируем функцию авто экспорта. Также можем указать другое имя файла экспорта, чтобы о файле не знали чужие.



Смена имени файла в настройках - пока это единственный менеджерский способ в версии 130418 очистить авто экспорт от прежних заказов. Другой способ - это вручную удалять файл по FTP после каждого удачного экспорта.

Понимаю, что сейчас, то есть без реализованного в движке "удаляющего" адреса, это неудобная альтернатива, но как уже упоминалось выше, в силу идеи - беспротокольный экспорт по инициативе удаленной учетной системы - такая альтернатива предполагала, что в следующей версии на сайте появится тот самый определенный "удаляющий" адрес (url) как раз для очистки файла авто экспорта. То есть сейчас менеджер или технический персонал должен следить за очисткой файла после экспорта в конце торгового дня, а в будущем этим должна будет заниматься внешняя учетная система: выкачала файл экспорта заказов и обратилась к url очистки.

Дальше покажу, что представляет собой файл экспорта заказов. Предположим, покупатель оформил заказ. Его скриншот показан ниже в том виде, как видит менеджер этот заказ в админпанели.



Когда функция авто экспорта включена, тот же новый оформленный заказ сразу попадает в конец файла экспорта. Файл является типичным XML-файлом с перечнем корневых узлов <order ...>. Каждый корневой узел являет собой отдельный заказ в пределах торгового дня. Корневые узлы состоят из подузлов, и по сути они - объемный дамп (распечатка) записи о заказе, где имена подузлов эквивалентны именам полей таблицы заказов + имена виртуальных полей, которые рассчитал и дополнил движок во время извлечения записи из базы данных.

В распечатку я добавил комментарии, чтобы вы могли понять назначение полей. Некоторое количество вложенных структур скорее всего бесполезны для целей синхронизации, такие обозначены надписью "бесполезно". Троеточием обозначены "и так далее" поля или похожие повторяющиеся структуры узла.

<?xml version="1.0" encoding="UTF-8"?>

<!-- корневой узел заказа -->
<order type="object" size="87">

    <!-- номер заказа (он же ИД) -->
    <order_id type="integer">
        11
    </order_id>


    <!-- состояние (0 = новый, 1 = в обработке, 2 = выполнен, 3 = аннулирован) -->
    <status type="string" size="1">
        0
    </status>


    <!-- ИД и название стадии состояния -->
    <state type="string" size="1">
        0
    </state>
    <orders_phase type="null"></orders_phase>


    <!-- дата оформления заказа (полностью, по частям) -->
    <date type="string" size="19">
        2013-07-11 08:53:18
    </date>

    <date_date type="string" size="10">
        2013-07-11
    </date_date>
    <date_time type="string" size="8">
        08:53:18
    </date_time>


    <!-- контакты покупателя (телефоны, емейлы, icq, skype имена) -->
    <phone type="string" size="16">
        +7 123 456-78-90
    </phone>
    <phone2 type="string" size="0"></phone2>

    <email type="string" size="0"></email>
    <email2 type="string" size="0"></email2>

    <icq type="string" size="0"></icq>
    <icq2 type="string" size="0"></icq2>

    <skype type="string" size="0"></skype>
    <skype2 type="string" size="0"></skype2>


    <!-- дополнительная скидка суммой и сколько это в процентах -->
    <discount_sum type="string" size="8">
        2.460000
    </discount_sum>
    <discount type="string" size="13">
        6.00000007841
    </discount>


    <!-- итоговая сумма к оплате (с вычтенными скидками) -->
    <amount type="string" size="9">
        38.540000
    </amount>
    <total_amount type="string" size="9">
        38.540000
    </total_amount>


    <!-- комментарий менеджера -->
    <comment_status type="string" size="0"></comment_status>


    <!-- комментарий покупателя -->
    <comment type="string" size="61">
        Перед фасадом ведутся ремонтные работы. Подъезжайте со двора.
    </comment>


    <!-- пожелания покупателя к дате и времени доставки -->
    <to_date type="string" size="0"></to_date>
    <to_time type="string" size="0"></to_time>


    <!-- ИД пользователя (если это заказ авторизованного) -->
    <user_id type="string" size="1">
        0
    </user_id>


    <!-- ИД и составное имя партнера (кто получит процент с оплаченного заказа) -->
    <affiliate_id type="string" size="1">
        0
    </affiliate_id>
    <affiliate_name type="null"></affiliate_name>


    <!-- имя покупателя (отдельно по полям, составное, поисковое) -->
    <name type="string" size="6">Иванов</name>
    <name2 type="string" size="10">Васильевич</name2>
    <name3 type="string" size="4">Петр</name3>

    <compound_name type="string" size="22">
        Иванов Петр Васильевич
    </compound_name>

    <search_name type="string" size="22">
        Иванов Васильевич Петр
    </search_name>


    <!-- адрес доставки (отдельно по полям, составной, поисковый) -->
    <address type="string" size="6">Россия</address>              <!-- страна             -->
    <address_2 type="string" size="0"></address_2>                <!-- область            -->
    <address_3 type="string" size="6">Москва</address_3>          <!-- город              -->
    <address_4 type="string" size="7">Главная</address_4>         <!-- улица              -->
    <address_5 type="string" size="1">1</address_5>               <!-- дом                -->
    <address_6 type="string" size="0"></address_6>                <!-- корпус             -->
    <address_7 type="string" size="0"></address_7>                <!-- подъезд            -->
    <address_8 type="string" size="0"></address_8>                <!-- код двери подъезда -->
    <address_9 type="string" size="1">5</address_9>               <!-- квартира           -->
    <address_10 type="string" size="5">12345</address_10>         <!-- почтовый индекс    -->

    <compound_address type="string" size="54">
        12345, Россия, г.Москва, ул.Главная, дом 1, квартира 5
    </compound_address>

    <search_address type="string" size="35">
        Россия  Москва Главная 1    5 12345
    </search_address>


    <!-- альтернативный адрес доставки (отдельно по полям, составной, поисковый) -->
    <address2 type="string" size="0"></address2>
    <address2_2 type="string" size="0"></address2_2>
    <address2_3 type="string" size="0"></address2_3>
    <address2_4 type="string" size="0"></address2_4>
    <address2_5 type="string" size="0"></address2_5>
    <address2_6 type="string" size="0"></address2_6>
    <address2_7 type="string" size="0"></address2_7>
    <address2_8 type="string" size="0"></address2_8>
    <address2_9 type="string" size="0"></address2_9>
    <address2_10 type="string" size="0"></address2_10>

    <compound_address2 type="string" size="0"></compound_address2>

    <search_address2 type="string" size="0"></search_address2>


    <!-- ИД страны, области, города (пока не используется) -->
    <country_id type="string" size="1">0</country_id>
    <region_id type="string" size="1">0</region_id>
    <town_id type="string" size="1">0</town_id>


    <!-- количество товаров в заказе -->
    <total_quantity type="string" size="1">
        1
    </total_quantity>


    <!-- количество товарных позиций (строк) в заказе -->
    <total_rows type="string" size="1">
        1
    </total_rows>


    <!-- список товаров -->
    <products type="array" size="1">

        <!-- запись о товаре -->
        <products index="0" type="object" size="114">

            <!-- ИД строки заказа (ЭТО НЕ НОМЕР СТРОКИ!) -->    <!-- бесполезно? -->
            <orderitem_id type="string" size="1">
                8
            </orderitem_id>

            <!-- ИД товара и его варианта -->
            <product_id type="integer">
                171
            </product_id>
            <variant_id type="string" size="3">
                357
            </variant_id>

            <!-- название товара и его варианта на момент оформления заказа -->
            <name type="string" size="34">
                Лазерная указка (50mW Green laser)
            </name>
            <variant_name type="string" size="0"></variant_name>

            <!-- имена отобранных покупателем свойств товара -->
            <name_properties type="string" size="0"></name_properties>

            <!-- покупаемое количество товара -->
            <quantity type="string" size="1">
                1
            </quantity>

            <!-- цена товара на момент оформления заказа -->
            <real_price type="string" size="9">
                41.000000
            </real_price>

            <!-- цена за сколько продали -->
            <discount_price type="string" size="13">
                41.0000000000
            </discount_price>

            ...
            ...

            <!-- список вариантов товара -->    <!-- бесполезно -->
            <variants type="array" size="1">
                ...
                ...
            </variants>


            <!-- список свойств товара -->    <!-- бесполезно -->
            <properties type="array" size="4">
                ...
                ...
            </properties>


            <!-- дерево свойств товара -->    <!-- бесполезно -->
            <properties_tree type="array" size="3">
                ...
                ...
            </properties_tree>
        </products>

        ...
        ...
    </products>


    <!-- признак списания товаров со склада (0 = еще не списаны, 1 = списаны) -->
    <written_off type="string" size="1">
        0
    </written_off>


    <!-- состояние оплаты заказа (0 = не оплачен, 1 = оплачен) -->
    <payment_status type="string" size="1">
        0
    </payment_status>


    <!-- ИД, название способа оплаты, которым думал оплатить -->
    <desire_payment_id type="string" size="1">
        7
    </desire_payment_id>
    <desire_payment type="string" size="16">
        Банковская карта
    </desire_payment>


    <!-- ИД, название, дата способа оплаты, которым оплатил -->
    <payment_method_id type="string" size="1">
        0
    </payment_method_id>
    <payment_method type="null"></payment_method>

    <payment_date type="string" size="19">
        0000-00-00 00:00:00
    </payment_date>
    <payment_date_date type="string" size="10">
        0000-00-00
    </payment_date_date>
    <payment_date_time type="string" size="8">
        00:00:00
    </payment_date_time>


    <!-- технические детали платежа, сообщенные платежным сервисом -->
    <payment_details type="string" size="0"></payment_details>


    <!-- ИД, название, цена способа доставки, ИД типа доставки, трекинг посылки -->
    <delivery_method_id type="string" size="1">1</delivery_method_id>
    <delivery_method type="string" size="29">
        Курьерская доставка по Москве
    </delivery_method>

    <delivery_price type="string" size="8">
        0.000000
    </delivery_price>

    <delivery_type type="string" size="1">0</delivery_type>

    <delivery_tracking type="string" size="0"></delivery_tracking>
    <delivery_tracking_url type="string" size="0"></delivery_tracking_url>


    <!-- ИД, название, срок, процент кредитной программы и поля кредитной анкеты покупателя -->
    <credit_id type="integer">
        0
    </credit_id>
    <credit_name type="null"></credit_name>

    <credit_term type="null"></credit_term>
    <credit_percent type="null"></credit_percent>

    <credit_details type="array" size="0">
    </credit_details>


    <!-- ИД примененного скидочного купона -->
    <coupon_id type="string" size="1">
        0
    </coupon_id>


    <!-- URL страницы заказа на клиентской стороне -->
    <code type="string" size="32">
        5efcf5b18bec579c9783f3e7c5e0f529
    </code>


    <!-- 0 = доступен всем, 1 = покупатель скрыл страницу заказа от чужих -->
    <hidden type="string" size="1">
        0
    </hidden>


    <!-- IP и хост того, кто оформлял заказ -->
    <ip type="string" size="12">
        123.44.3.210
    </ip>
    <host type="string" size="17">
        pool-210-3-44-123.example.com
    </host>
</order>


<!-- корневой узел следующего заказа -->
<order type="object" size="87">
    ...
    ...
</order>

...
...


Еще нюанс: в файле экспорта все цены указаны в базовой валюте сайта.

Написание ответа

Перед публикацией рекомендуется использовать Предпросмотр, чтобы увидеть конечный вид сообщения.


Обратите внимание! Для противодействия спаму новые посты форума проявляются с задержкой от нескольких минут, пока не пройдут модерацию.