Ссылка на платежную квитанцию в личном кабинете

Материал из Umicms
Перейти к:навигация, поиск

Актуально для версии 2.9.6

Задача: В некоторых проектах, при просмотре списка совершенных покупок, возникает необходимость вывести ссылку на платежную квитанцию, если при оформлении заказа был выбран данный способ оплаты.

Реализация:


Можно использовать так называемый личный кабинет:

http://ваш_сайт/emarket/personal/

для просмотра списка заказов.

В файл /classes/modules/custom.php добавим следующий код:

public function receipt_link($order_id){
	if ( !$order_id ) {
		$order_id = getRequest('param0');
	}
	$objects = umiObjectsCollection::getInstance();
	$object_order = $objects->getObject($order_id);
	
	$payment_id = $object_order->getValue('payment_id');
	if ( !$payment_id ) {
		return "";
	}
	$payment_type_id = $objects->getObject($payment_id)->getValue('payment_type_id');
	$class_name = $objects->getObject($payment_type_id)->getValue('class_name'); 
	if($class_name == 'receipt'){
	  $customer_id = $object_order->getValue('customer_id');
	  $customer_mail = $objects->getObject($customer_id)->getValue('email');  
	  $date = $object_order->order_date;
	  $getcode = sha1("{$customer_id}:{$customer_mail}:{$date}");
	  $url = "/emarket/receipt/{$order_id}/{$getcode}/";
	  return "<a href=\"{$url}\">Платежная квитанция</a>";
	}else{
	  return "";
	}
}

TPL-шаблонизатор

Системная страница /emarket/personal/ использует шаблон:

tpls/emarket/default.tpl

в котором должен быть блок personal:

$FORMS['personal'] = <<<END
%emarket ordersList()%
END;

также, в этом же самом шаблоне необходимо прописать данные блоки если их еще нет:

$FORMS['orders_block'] = <<<END
<p>Список ваших заказов:</p>
<ul>
%items%
</ul>
END;

$FORMS['orders_block_empty'] = <<<END
<p>Заказов нет</p>
END;

$FORMS['orders_item'] = <<<END
<li>%name% (%id%) %custom receipt_link(%id%)%</li>
END;

XSLT-шаблонизатор

В демонстрационном дизайне "Современный интернет-магазин" ("demodizzy") в файле \templates\demodizzy\xslt\modules\emarket\orders-list.xsl в шаблон xsl:template match="udata[@module = 'emarket'][@method = 'order']"> для вывода ссылки на платежную квитанцию можно воспользоваться следующей конструкцией:

<xsl:value-of select="document(concat('udata://custom/receipt_link/', $document-page-id))/udata" />


В итоге, при просмотре списка совершенный заказов на системной странице:

http://ваш_сайт/emarket/personal/

рядом с теми заказами, при формировании которых был выбран способ оплаты "Платежная квитанция", будет ссылка на просмотр квитанции.