Перейти к содержанию
Официальный форум поддержки Simpla

Трекинг номер посылки в личном кабинете


Рекомендуемые сообщения

1. Создаем в базе данных в таблице s_orders поле delivery_number у меня уже было изначально

 

2. Открываем /api/Orders.php и находим

 

$query = $this->db->placehold("SELECT  o.id, o.delivery_id, o.delivery_price, o.separate_delivery,
										o.payment_method_id, o.paid, o.payment_date, o.closed, o.discount, o.coupon_code, o.coupon_discount,
										o.date, o.user_id, o.name, o.address, o.phone, o.email, o.comment, o.status,
										o.url, o.total_price, o.note
										FROM __orders o $where LIMIT 1");

заменяем на

$query = $this->db->placehold("SELECT  o.id, o.delivery_id, o.delivery_price, o.separate_delivery,
										o.payment_method_id, o.paid, o.payment_date, o.closed, o.discount, o.coupon_code, o.coupon_discount,
										o.date, o.user_id, o.name, o.address, o.phone, o.email, o.comment, o.status,
										o.url, o.total_price, o.note, o.delivery_number
										FROM __orders o $where LIMIT 1");

далее в этом же файле

// Выбираем заказы
		$query = $this->db->placehold("SELECT o.id, o.delivery_id, o.delivery_price, o.separate_delivery,
										o.payment_method_id, o.paid, o.payment_date, o.closed, o.discount, o.coupon_code, o.coupon_discount,
										o.date, o.user_id, o.name, o.address, o.phone, o.email, o.comment, o.status,
										o.url, o.total_price, o.note

меняем на 

// Выбираем заказы
		$query = $this->db->placehold("SELECT o.id, o.delivery_id, o.delivery_price, o.separate_delivery,
										o.payment_method_id, o.paid, o.payment_date, o.closed, o.discount, o.coupon_code, o.coupon_discount,
										o.date, o.user_id, o.name, o.address, o.phone, o.email, o.comment, o.status,
										o.url, o.total_price, o.note, o.delivery_number

3. /simpla/OrderAdmin.php находим строку:

$order->separate_delivery = $this->request->post('separate_delivery', 'integer');

после нее вставляем:

$order->delivery_number = $this->request->post('delivery_number');

4. Открываем /simpla/design/html/order.tpl в нужном месте (я поставил в блоке доставки) ставим

<li>
<label class=delivery_number>Трекинг номер</label>
<textarea name="delivery_number">{$order->delivery_number|escape}</textarea>
</li>

5. /design/ваша тема/html/user.tpl

после строки

{if $order->status == 0}ждет обработки{elseif $order->status == 1}в обработке{elseif $order->status == 2}выполнен{/if}

добавляем

{if $order->delivery_number}<h4>трекинг номер:</h4> {$order->delivery_number|escape}{/if}<hr>

6. /simpla/design/css/style.css

добавим стили

 .block li {
	clear: left;
	display: block;
	overflow: hidden;
	margin-top: 7px;
	width: 500px;
}

.block label.delivery_number {
	display: block;
  	float: left;
  	width: 132px;
  	clear: left;
  	padding-top: 2px;
  	overflow: hidden;
  	font-size: 18px;
}

.block li textarea {
	width: 210px;
	height: 60px;

 

 

 

СПАСИБО yr4ik ЗА ПОДСКАЗКУ

Изменено пользователем yodaexolon
Ссылка на сообщение
Поделиться на другие сайты

Для России не подойдет?

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

Изменено пользователем yodaexolon
Ссылка на сообщение
Поделиться на другие сайты

Спасибо за данное решение! Очень удобно :-)

 

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

Изменено пользователем keks
Ссылка на сообщение
Поделиться на другие сайты

Можно проще

{if $order->delivery_number == ""} {else}Трекинг номер: {$order->delivery_number|escape}{/if}

 

Т.е. если поле не заполнено, то нет трекинга, и наоборот соответственно

Ссылка на сообщение
Поделиться на другие сайты

Я сделал чтоб и на почту отправлялось письмо с трек кодом

 

аналогично, вчера все украсил...здорово все получилось ;)

Ссылка на сообщение
Поделиться на другие сайты
  • 1 месяц спустя...

Я сделал чтоб и на почту отправлялось письмо с трек кодом

 Подскажите пожалуйста способ отправки трека на почту )

Ссылка на сообщение
Поделиться на другие сайты
  • 1 месяц спустя...

Все сделал как написано, но покупателю не приходит трекинг в заказе, куда копать?

email_order.tpl

{if $order->delivery_id}
	<tr>
		<td style="padding:6px; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;">
			Доставка
		</td>
		<td style="padding:6px; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;">
			{$delivery->name|escape}
		</td>
	</tr>
	{/if}
{if $order->delivery_number}
	<tr>
		<td style="padding:6px; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;">
			Трекинг номер
		</td>
Изменено пользователем Gandalf
Ссылка на сообщение
Поделиться на другие сайты
  • 3 года спустя...

Подскажите пожалуйста, добавил еще форму ввода трека на странице заказов (simpla/design/html/orders.tpl). Но сохранение в базу не происходит, что необходимо добавить в orders.php чтобы заработало сохранение со страницы заказов?

Ссылка на сообщение
Поделиться на другие сайты

Пробую добавить 

case 'set_track':
				{
					foreach($ids as $id)
					{
						if(!$this->orders->close(intval($id)))
							$this->design->assign('message_error', 'error_closing');
						else
							$this->orders->update_order($id, array('track', 'integer'));
							
								
					}
					break;
				}

 

Но этот код не срабатывает.

Ссылка на сообщение
Поделиться на другие сайты

Этот код прекрасно срабатывает и выполняет именно те действия, которые в нем прописаны.

Если он делает не то, что Вы ожидаете, то код не виноват в том, что Вы пишете явную бессмыслицу.

Пробуйте добавлять другие варианты кода. Их миллиарды и даже больше...

Ссылка на сообщение
Поделиться на другие сайты

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

 

Но я хочу немного дополнить его и добавить такое же поле на странице со списком заказов (ordrers.tpl), поэтому и прошу помощи...

Ссылка на сообщение
Поделиться на другие сайты

Цель этой доработки: оператор со сканером штрих кодов будет добавлять треки к заказам, непосредственно со страницы заказов (не входя в каждый заказ отдельно).

Ссылка на сообщение
Поделиться на другие сайты

Цель этой доработки: оператор со сканером штрих кодов будет добавлять треки к заказам, непосредственно со страницы заказов (не входя в каждый заказ отдельно).

 

Тогда и код надо писать соответственно целям, а не всякую белиберду...

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

Ссылка на сообщение
Поделиться на другие сайты

Это я понимаю, только вот там нет аналогичных полей... Там из вариантов изменений заказа - это статусы заказов и метки..

 

Статусы заказов там меняются таким кодом:

 

switch($this->request->post('action'))
...........
.........

case 'set_status_0':
{
foreach($ids as $id)
{
if($this->orders->open(intval($id)))
$this->orders->update_order($id, array('status'=>0));

}
break;
}
Ссылка на сообщение
Поделиться на другие сайты

Да, Вы правы, нет там аналогичных полей.

Тогда сложнее. Надо брать аналогию со страницы товаров в админке. Хот я и там не совсем то, там поля от вариантов...

Ссылка на сообщение
Поделиться на другие сайты

Я пробовал взять аналогию с шаблона settings.tpl там в принципе то что мне надо

 

<li><label class=property>Имя сайта</label><input name="site_name" class="simpla_inp" type="text" value="{$settings->site_name|escape}" /></li>

 

 

За вывод отвечает

 

if($this->request->method('POST'))
{
$this->settings->site_name = $this->request->post('site_name');
..............
..............

 

 

Пробовал вставить аналогию в OrdersAdmin, но ничего не получается...

 

$this->order->track = $this->request->post('track');
Изменено пользователем esistema1
Ссылка на сообщение
Поделиться на другие сайты

Я пробовал взять аналогию с шаблона settings.tpl там в принципе то что мне надо

Как раз там в принципе совсем НЕ то, что надо. Надо, чтоб на странице редактировалась таблица БД с произвольным списком записей...

Полностью аналогичного в Simpla, похоже, совсем нет, надо все же свой код писать.

Ссылка на сообщение
Поделиться на другие сайты

Победил я его!

 

В шаблон orders.tpl

<li>
<label class=track>Трек</label>
<input name="track[{$order->id}]" value="{$order->track|escape}"></input>
</li>

 

 

В OrdersAdmin.php после 

// Обработка действий
if($this->request->method('post'))
{

 

вставляем

// ТРЕКИ
$track = $this->request->post('track');
foreach($track as $id=>$track)
{
$this->orders->update_order($id, array('track'=>$track));
}
// ТРЕКИ

 

phukortsin, спасибо за наводку ))

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...