Просмотр общей суммы заказов пользователя — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
(Новая страница: «'''Актуально для версии 2.9.1''' Иногда возникает необходимость узнать сумму всех заказов опр…»)
 
Строка 1: Строка 1:
'''Актуально для версии 2.9.1'''
+
'''Актуально для версии 20'''
  
Иногда возникает необходимость узнать сумму всех заказов определенного пользователя. Для реализации данной задачи необходимо создать кастомный макрос, разместим его в файле /classes/modules/custom.php
+
Иногда возникает необходимость узнать сумму всех заказов определенного пользователя. Для реализации данной задачи необходимо создать кастомный макрос, разместим его в файле /classes/components/customMacros.php
  
 
<source lang="php">
 
<source lang="php">
 
public function totalSum ($userId) {
 
public function totalSum ($userId) {
    $pages = new selector('objects');
+
$orders = new selector('objects');
    $pages->types('object-type')->name('emarket', 'order');
+
$orders->types('object-type')->name('emarket', 'order');
    $pages->where('owner')->equals($userId);
+
$orders->where('owner')->equals($userId);
    $pages->where('status_id')->equals('20');
+
$orders->where('status_id')->equals('198');
    $total_price_all = 0;  
+
$total_price_all = 0;
+
foreach($orders as $order)  {
    foreach($pages as $page)  {
+
$total_price_once = $order->getValue('total_price');
$total_price_once = $page->getValue('total_price');
+
$total_price_all = $total_price_all + $total_price_once;
        $total_price_all = $total_price_all + $total_price_once;
+
}
    }
+
return $total_price_all;
    return $total_price_all;
+
}
}
+
 
 
</source>
 
</source>
  
Строка 22: Строка 22:
  
 
<source lang="php">
 
<source lang="php">
$pages->where('status_id')->equals('20');
+
$pages->where('status_id')->equals('198’);
 +
</source>
 +
 
 +
мы выбираем только заказы, у которых статус заказа - "Готов". Если нам необходима выборка по другому статусу заказа - тогда вместо 198 подставьте id необходимого вам статуса заказа. Информацию о соответствующих идентификаторов статусов заказов можно посмотреть в базе данных в таблице cms3_objects.
 +
 
 +
Также все доступные статусы заказов и информация о них может быть выведена следующим запросом к базе данных:
 +
<source lang='sql'>
 +
SELECT * FROM cms3_objects WHERE guid LIKE 'emarket-orderstatus%'
 
</source>
 
</source>
  
мы выбираем только заказы, у которых статус заказа - "Готов". Если нам необходима выборка по другому статусу заказа - тогда вместо 20 подставьте id необходимого Вам статуса заказа.
+
Вызов этого макроса на примере php шаблонизатора:
 +
<source lang="php">
 +
<?= $this->macros('catalog', 'totalSum', array(<идентификатор пользователя>)); ?>
 +
</source>
  
 
[[Категория:Вопросы и уроки разработки сайтов на UMI.CMS]][[Категория:Модуль Интернет магазин]]
 
[[Категория:Вопросы и уроки разработки сайтов на UMI.CMS]][[Категория:Модуль Интернет магазин]]

Версия 08:59, 30 марта 2019

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

Иногда возникает необходимость узнать сумму всех заказов определенного пользователя. Для реализации данной задачи необходимо создать кастомный макрос, разместим его в файле /classes/components/customMacros.php

public function totalSum ($userId) {
			$orders = new selector('objects');
			$orders->types('object-type')->name('emarket', 'order');
			$orders->where('owner')->equals($userId);
			$orders->where('status_id')->equals('198');
			$total_price_all = 0; 			
			foreach($orders as $order)  {
			$total_price_once = $order->getValue('total_price');
				$total_price_all = $total_price_all + $total_price_once;
			}
			return $total_price_all;
		}

При вызове этого макроса мы передаем ему id пользователя, для которого необходимо найти сумму всех заказов. В строке

$pages->where('status_id')->equals('198);

мы выбираем только заказы, у которых статус заказа - "Готов". Если нам необходима выборка по другому статусу заказа - тогда вместо 198 подставьте id необходимого вам статуса заказа. Информацию о соответствующих идентификаторов статусов заказов можно посмотреть в базе данных в таблице cms3_objects.

Также все доступные статусы заказов и информация о них может быть выведена следующим запросом к базе данных:

SELECT * FROM cms3_objects WHERE guid LIKE 'emarket-orderstatus%'

Вызов этого макроса на примере php шаблонизатора:

<?= $this->macros('catalog', 'totalSum', array(<идентификатор пользователя>)); ?>