Jump to content

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


Recommended Posts

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 ЗА ПОДСКАЗКУ

Edited by yodaexolon
Link to post
Share on other sites

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

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

Edited by yodaexolon
Link to post
Share on other sites

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

 

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

Edited by keks
Link to post
Share on other sites

Можно проще

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

 

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

Link to post
Share on other sites

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

 

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

Link to post
Share on other sites
  • 1 month later...
  • 1 month later...

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

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>
Edited by Gandalf
Link to post
Share on other sites
  • 3 years later...

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

Link to post
Share on other sites

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

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;
				}

 

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

Link to post
Share on other sites

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

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

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

Link to post
Share on other sites

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

 

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

Link to post
Share on other sites

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

Link to post
Share on other sites

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

 

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

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

Link to post
Share on other sites

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

 

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

 

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;
}
Link to post
Share on other sites

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

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

Link to post
Share on other sites

Я пробовал взять аналогию с шаблона 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');
Edited by esistema1
Link to post
Share on other sites

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

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

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

Link to post
Share on other sites

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

 

В шаблон 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, спасибо за наводку ))

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...