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

Доставка через логистическую компанию

Следить
Главная
09:41
02 мар
#
?
Евгений написал:

Добрый день, коллеги!

У меня возникла потребность подключить в качестве доставщика товаров стороннюю логистическую компанию. У неё есть API со всевозможными справочниками и функциями. При добавлении нового варианта доставки, я не нашел там полей для связывания с классом/модулем доставки который я бы мог написать.

Вопросы:

  • 1. Как вывести области, города, точки самовывоза списком и на карте?
  • 2. Если покупатель выбрал нужный ему способ, как сохранить эти дополнительные данные к заказу?
22:43
02 мар
#
?
Добрый Деня написал:

Свернуто за обсуждение не по теме.   Развернуть

Это реально происходит? Жека, я не пойму, тебе нужны мастера? Или это снова фуф.импера.точка.ком?

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

В общем если нужны нормальные программисты - обращайся

22:54
02 мар
#
?
Добрый Деня написал:

Свернуто за обсуждение не по теме.   Развернуть

Вы должны нанятоь нормального программиста. Это как вариант. Можете поппробовать самостоятельно. Если получится - у Вас будет медаль. Если не - Вам придется обращаться к разным фрилансерам. А вот тут я уже больше Вам не завидую. Прощайте.

23:08
02 мар
#
?
Добрый Деня написал:

Свернуто за обсуждение не по теме.   Развернуть

Там их мля и не будет!!! Прикинь, если бы импра для каждого поля бы, лять, создавала? А?!!!! Ты хочешь поле с надписью "Тута моя поля". А там походу прикинь - твоя поля на никому ненужна. Если честно - импера из всяких таких полей и состоит. На никому не нужных. Это так - отвлеченно. Если нужно - обращайся. Я умею переделать ту имперу в нормальный движок. Спеши - у тебя очень мало времени, иначе так и будешь на чистой импере сидеть, лох.

23:13
02 мар
#
?
ДобрыйДеня написал:

Свернуто за обсуждение не по теме.   Развернуть

Если что, можете обратиться ко мне. Если Вы, конечно, не галимый робот которых импера, пользуясь своими наработками в облдасти ИИ плодит, шо кроликов. В общем, ели не робот - обращайся. Скайп - ImeraDevils.

09:23
04 мар
#
?
Евгений написал:

По делу есть что написать? Если нет, то не нужно замусоривать форум.

22:42
04 мар
#
?
Андрей написал:

Свернуто за обсуждение не по теме.   Развернуть

Этот Добрый Дятел опять тут :(


Евгению, доставка в движке сделана я думаю по халтуре, ну или без понимания, что она не просто текст и описание, а может иметь js API как минимум или модуль на php.

Так что как обычно костыльком пробовать в файле cart.tpl изобразить подобие связки способа доставки с его API.

{if !empty($delivery_methods)}
    {$active = $delivery_method_id|default:0}
    {foreach $delivery_methods as $item}
        {$id = $item->delivery_method_id}
        <input name="delivery_method_id" type="radio" value="{$id}" {if $id == $active}checked{/if}> {name}
        {if $item->name == 'Точное Имя Доставки'}
            подключить js API доставки
            или теги доп. полей
        {/if}
    {/foreach}
{/if}

Сохранить добавочные данные к заказу наверно можно по примеру шаблона ecommerce, когда к отзыву о товаре сохраняется оценка товара прямо в отзыве.

09:38
05 мар
#
?
Евгений написал:

Понятно, я примерно так себе это и представлял. Можно ещё к id прицепиться. Спасибо за ответ.

10:57
08 мар
#
?
Евгений написал:

Здравствуйте, ещё раз коллеги!

Как написал Андрей, я примерно сделал:

  • 1. При выборе моего варианта доставки, я убрал автосубмит (на других вариантах оставил)
  • 2. Далее, если человек выбрал вариант доставки "курьер" или "самовывоз" я вывожу (ранее скрытое) дополнительной поле "город" с автокомплитом. Автокомплит вытаскивает города из справочника городов логистической компании, через AJAX.
  • 3. После того, как человек выбрал нужный город, в случае курьерской доставки появляется, ранее скрытое поле "адрес". А если человек выбрал "самовывоз" подгружаются пункты самовывоза (из выбранного города) из справочника логистической компании, через AJAX.
  • 4. Далее человек выбирает конкретный пункт, я рассчитываю стоимость доставки.
  • 5. В случае если человек меняет в селекторе вариант доставки, все автоматически перерассчитывается.
  • 6. Также если сделать субмит, но не заполнив емайл и фио, то я сделал восстановление выбранный покупателем город и пункт самовывоза.

На этом я остановится, так как не знаю как поступить дальше.

Мне надо сохранить в заказ новые поля:

  • 1. Выбранный город (у меня есть название и id из справочника)
  • 2. Выбранный пункт самовывоза (id из справочника)

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

Вобщем предложите как лучше поступить

09:23
10 мар
#
?
Андрей написал:

Сделано как фрагмент cart.htm по примеру файла eCommerce/html/product.htm в том его месте, где выводится и редактируется отзыв о товаре.

{$text = trim($comment|default:'')}

по умолчанию
{$gorod = ''}
{$gorod_id = 0}
{$punkt = ''}
{$punkt_id = 0}

извлекаем город
{$exp = '/^(.*?)\[город: ([0-9]+)( .*?)?\](.*)$/ius'}
{if preg_match($exp, $text)}
    {$gorod = trim(preg_replace($exp, '$3', $text))}
    {$gorod_id = preg_replace($exp, '$2', $text)}
    {$text = trim(preg_replace($exp, '$1$4', $text))}
{/if}

извлекаем пункт
{$exp = '/^(.*?)\[пункт: ([0-9]+)( .*?)?\](.*)$/ius'}
{if preg_match($exp, $text)}
    {$punkt = trim(preg_replace($exp, '$3', $text))}
    {$punkt_id = preg_replace($exp, '$2', $text)}
    {$text = trim(preg_replace($exp, '$1$4', $text))}
{/if}

как то используем в api
<input id="gorod_i" type="hidden" value="{$gorod_id}">
<input id="gorod_n" type="hidden" value="{$gorod|escape}">
<input id="punkt_i" type="hidden" value="{$punkt_id}">
<input id="punkt_n" type="hidden" value="{$punkt|escape}">
<script>
    api.controls('gorod_i', 'gorod_n', 'punkt_i', 'punkt_n');
    api.init({$gorod_id}, {$punkt_id});
</script>

комментарий уже без города и пункта
<textarea id="comment_t" name="comment">
    {$text|escape}
</textarea>

с отправкой формы добавляем
в комментарий данные города и пункта
<button onclick="return submit_cart()">Оформить</button>
<script>
    function submit_cart() {
        var gi = document.getElementById('gorod_i').value,
            gn = document.getElementById('gorod_n').value,
            pi = document.getElementById('punkt_i').value,
            pn = document.getElementById('punkt_n').value,
            t = document.getElementById('comment_t').value;
        t += '\r\n\r\n' +
             '[город: ' + gi + ' ' + gn + ']\r\n' +
             '[пункт: ' + pi + ' ' + pn + ']';
        document.getElementById('comment_t').value = t;
        return true;
    }
</script>
10:03
10 мар
#
Разработчик написал:

Спасибо Андрей за ваш труд. Я лишь посоветовал бы Евгению перенести вызов cart_submit с клика кнопки "Оформить" на onsubmit формы, чтобы сведения о городе с пунктом самовывоза прикреплялись в комментарий всегда, даже когда кнопка отправки явно не была нажата, например при нажатии Ctrl+Enter в поле ввода формы.

11:12
10 мар
#
?
Евгений написал:

Коллеги, спасибо большое за ответы! Я именно так и сделал :)

Повесил обработчик на субмит формы:

<form ... onsubmit="return MyFunction()">...</form>

Также пришлось в форму добавить скрытую кнопку submit, дабы форма срабатывала по нажатию ENTER на любом поле

<input type="submit" style="display: none;">

В этом обработчике, я делаю JS валидацию заполненности обязательных полей (тип доставки, город, адрес, пункт самовывоза)

И есть все ок, я в поле пользовательского комментария добавляю данные по параметрам доставки и возвращаю true и форма субмитится.

Если были какие то ошибки, то перед выводом пользовательского комментария в шаблон, я отсекаю данные по доставке.

У меня остался единственный вопрос, это серверная валидация этих данных. Как мне лучше это организовать?

11:15
10 мар
#
?
Евгений написал:

Забыл добавить, когда перед сибмитом мы прицепляем даные доставки к описанию, это визуально видно, что не есть хорошо. И я поменял name у textarea пользовательского описания на другой. И при этом добавил дополнительный textarea скрытый с именем comment, и при субмите уже в него кладу пользовательское описание и данные по доставке.

12:26
12 мар
#
?
Андрей написал:
Разработчик написал: Спасибо Андрей за ваш труд

Рад друзья, мой скромный труд принес кому-то пользу. Пусть импера ступенька для меня в освоении стека современных приложений, все же приятно когда ты смог помочь.

Хочу от себя поблагодатить админов что раскрашивают мои посты. Редактор визуальный на форуме очень кривой, самостоятельно раскрасить это надо уметь.

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

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


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


Хостинг для сайта

Хостинг для интернет магазина

Svai.net

Украина
г. Черкассы
5+ Заказать

TutHost.ua

Украина
г. Киев
Заказать

Mirohost.net

Украина
г. Киев
? Заказать

HyperHosting.com.ua

Украина
г. Винница
i подробнее Заказать

Agava.ru

Россия
г. Москва
Заказать

Ukraine.com.ua

Украина
г. Киев
5 Заказать
Импераготовасотрудничатьс провайдерами Важно Учтите Этот список перечисляет лишь некоторых хостинг-провайдеров, у которых существуют специальные тарифные планы для интернет магазинов, а сам список не означает, что другие провайдеры чем-то хуже.

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

Демо Главная Хронология Соглашение Материалы Контакты