how can we get the Revenue using custom Period or Date?
below is code,
custom.php : /var/www/html/m2_new_staging/app/code/Rental/Totalrevenue/Model/Api
<?php namespace Rental\Totalrevenue\Model\Api; use Magento\Reports\Model\ResourceModel\Order\CollectionFactory; use Psr\Log\LoggerInterface; class Custom { protected $_collectionFactory; protected $logger; public function __construct( LoggerInterface $logger, CollectionFactory $collectionFactory ) { $this->logger = $logger; } /** * @inheritdoc */ public function getTotalRevenue() { //pass ID parameter as you need from store or website $isFilter = $this->getRequest()->getParam( 'store' ) || $this->getRequest()->getParam( 'website' ) || $this->getRequest()->getParam( 'group' ); $period = $this->getRequest()->getParam('period', Period::PERIOD_24_HOURS); // 1y, 2y / @var $collection Collection / $collection = $this->_collectionFactory->create()->addCreateAtPeriodFilter( $period )->calculateTotals( $isFilter ); if ($this->getRequest()->getParam('store')) { $collection->addFieldToFilter('store_id', $this->getRequest()->getParam('store')); } else { if ($this->getRequest()->getParam('website')) { $storeIds = $this->_storeManager->getWebsite($this->getRequest()->getParam('website'))->getStoreIds(); $collection->addFieldToFilter('store_id', ['in' => $storeIds]); } else { if ($this->getRequest()->getParam('group')) { $storeIds = $this->_storeManager->getGroup($this->getRequest()->getParam('group'))->getStoreIds(); $collection->addFieldToFilter('store_id', ['in' => $storeIds]); } elseif (!$collection->isLive()) { $collection->addFieldToFilter( 'store_id', ['eq' => $this->_storeManager->getStore(Store::ADMIN_CODE)->getId()] ); } } } $collection->load(); $totals = $collection->getFirstItem(); return $totals->getRevenue(); //return 'Total Revenue $param ' . $param; } }
here i have code $period = $this->getRequest()->getParam('period', Period::PERIOD_24_HOURS); how to get revenue to changing period like, today, last months, last 3 months, custom date range?
after searching in google, I get some idea that I need to create custom Filter for the period., but how to create that kind of custom period filter?
Like, in below code hot set Filter?
$period = $this->getRequest()->getParam('period', Period::PERIOD_24_HOURS);
please help me with this how can I make a new custom Filter?