17 class Collection extends \Magento\Customer\Model\ResourceModel\Customer\Collection
98 \Psr\Log\LoggerInterface
$logger,
100 \
Magento\Framework\
Event\ManagerInterface $eventManager,
103 \
Magento\Eav\Model\EntityFactory $eavEntityFactory,
112 $modelName = self::CUSTOMER_MODEL_NAME
131 $this->_quoteItemFactory = $quoteItemFactory;
143 $quote = $this->quoteRepository->getForCustomer(
$item->getId());
147 $quoteItems = $this->_quoteItemFactory->create()->setQuoteFilter(
$quote->getId());
149 $item->setItems($quoteItems->count());
150 }
catch (\
Magento\Framework\Exception\NoSuchEntityException $e) {
176 $this->_addOrderStatistics =
true;
177 $this->_addOrderStatFilter = (bool)$isFilter;
190 if ($this->_addOrderStatistics && !empty($customerIds)) {
191 $connection = $this->orderResource->getConnection();
192 $baseSubtotalRefunded =
$connection->getIfNullSql(
'orders.base_subtotal_refunded', 0);
193 $baseSubtotalCanceled =
$connection->getIfNullSql(
'orders.base_subtotal_canceled', 0);
194 $baseDiscountCanceled =
$connection->getIfNullSql(
'orders.base_discount_canceled', 0);
196 $totalExpr = $this->_addOrderStatFilter ?
197 "(orders.base_subtotal-{$baseSubtotalCanceled}-{$baseSubtotalRefunded} - {$baseDiscountCanceled}" 198 .
" - ABS(orders.base_discount_amount))*orders.base_to_global_rate" :
199 "orders.base_subtotal-{$baseSubtotalCanceled}-{$baseSubtotalRefunded} - {$baseDiscountCanceled}" 200 .
" - ABS(orders.base_discount_amount)";
202 $select = $this->orderResource->getConnection()->select();
204 [
'orders' => $this->orderResource->getTable(
'sales_order')],
206 'orders_avg_amount' =>
"AVG({$totalExpr})",
207 'orders_sum_amount' =>
"SUM({$totalExpr})",
208 'orders_count' =>
'COUNT(orders.entity_id)',
213 \
Magento\Sales\Model\Order::STATE_CANCELED
215 'orders.customer_id IN(?)',
221 foreach ($this->orderResource->getConnection()->fetchAll(
$select) as $ordersInfo) {
222 $this->
getItemById($ordersInfo[
'customer_id'])->addData($ordersInfo);
260 $countSelect->reset(\
Magento\Framework\DB\Select::ORDER);
261 $countSelect->reset(\
Magento\Framework\DB\Select::LIMIT_COUNT);
262 $countSelect->reset(\
Magento\Framework\DB\Select::LIMIT_OFFSET);
263 $countSelect->reset(\
Magento\Framework\DB\Select::COLUMNS);
264 $countSelect->reset(\
Magento\Framework\DB\Select::GROUP);
265 $countSelect->reset(\
Magento\Framework\DB\Select::HAVING);
266 $countSelect->columns(
"count(DISTINCT e.entity_id)");
__construct(\Magento\Framework\Data\Collection\EntityFactory $entityFactory, \Psr\Log\LoggerInterface $logger, \Magento\Framework\Data\Collection\Db\FetchStrategyInterface $fetchStrategy, \Magento\Framework\Event\ManagerInterface $eventManager, \Magento\Eav\Model\Config $eavConfig, \Magento\Framework\App\ResourceConnection $resource, \Magento\Eav\Model\EntityFactory $eavEntityFactory, \Magento\Eav\Model\ResourceModel\Helper $resourceHelper, \Magento\Framework\Validator\UniversalFactory $universalFactory, \Magento\Framework\Model\ResourceModel\Db\VersionControl\Snapshot $entitySnapshot, \Magento\Framework\DataObject\Copy\Config $fieldsetConfig, \Magento\Quote\Api\CartRepositoryInterface $quoteRepository, \Magento\Quote\Model\ResourceModel\Quote\Item\CollectionFactory $quoteItemFactory, \Magento\Sales\Model\ResourceModel\Order\Collection $orderResource, \Magento\Framework\DB\Adapter\AdapterInterface $connection=null, $modelName=self::CUSTOMER_MODEL_NAME)
orderByCustomerRegistration($dir=self::SORT_ORDER_DESC)
addAttributeToSort($attribute, $dir=self::SORT_ORDER_ASC)
addOrdersStatistics($isFilter=false)
getColumnValues($colName)