Initial commit: Vendor Sales Report Magento 2 module
This commit is contained in:
99
Cron/GenerateMonthlyReport.php
Normal file
99
Cron/GenerateMonthlyReport.php
Normal file
@@ -0,0 +1,99 @@
|
||||
<?php
|
||||
namespace Shopkeeper\VendorSalesReport\Cron;
|
||||
|
||||
use Shopkeeper\VendorSalesReport\Helper\Data as ConfigHelper;
|
||||
use Shopkeeper\VendorSalesReport\Model\ReportGenerator;
|
||||
use Shopkeeper\VendorSalesReport\Model\EmailSender;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
class GenerateMonthlyReport
|
||||
{
|
||||
/**
|
||||
* @var ConfigHelper
|
||||
*/
|
||||
protected $configHelper;
|
||||
|
||||
/**
|
||||
* @var ReportGenerator
|
||||
*/
|
||||
protected $reportGenerator;
|
||||
|
||||
/**
|
||||
* @var EmailSender
|
||||
*/
|
||||
protected $emailSender;
|
||||
|
||||
/**
|
||||
* @var LoggerInterface
|
||||
*/
|
||||
protected $logger;
|
||||
|
||||
/**
|
||||
* @param ConfigHelper $configHelper
|
||||
* @param ReportGenerator $reportGenerator
|
||||
* @param EmailSender $emailSender
|
||||
* @param LoggerInterface $logger
|
||||
*/
|
||||
public function __construct(
|
||||
ConfigHelper $configHelper,
|
||||
ReportGenerator $reportGenerator,
|
||||
EmailSender $emailSender,
|
||||
LoggerInterface $logger
|
||||
) {
|
||||
$this->configHelper = $configHelper;
|
||||
$this->reportGenerator = $reportGenerator;
|
||||
$this->emailSender = $emailSender;
|
||||
$this->logger = $logger;
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute cron job
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function execute()
|
||||
{
|
||||
if (!$this->configHelper->isEnabled()) {
|
||||
$this->logger->info('Vendor Sales Report: Automated report is disabled');
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
// Get last month's date range
|
||||
$startDate = date('Y-m-01', strtotime('first day of last month'));
|
||||
$endDate = date('Y-m-t', strtotime('last day of last month'));
|
||||
|
||||
$month = date('F', strtotime('first day of last month'));
|
||||
$year = date('Y', strtotime('first day of last month'));
|
||||
|
||||
$this->logger->info("Vendor Sales Report: Generating report for {$month} {$year}");
|
||||
|
||||
// Get order statuses
|
||||
$orderStatuses = $this->configHelper->getOrderStatus();
|
||||
|
||||
// Generate report data
|
||||
$data = $this->reportGenerator->generateReportData($startDate, $endDate, $orderStatuses);
|
||||
|
||||
if (empty($data)) {
|
||||
$this->logger->info("Vendor Sales Report: No data found for {$month} {$year}");
|
||||
return;
|
||||
}
|
||||
|
||||
// Generate CSV
|
||||
$csvContent = $this->reportGenerator->generateCsv($data);
|
||||
$filename = $this->reportGenerator->getFilename();
|
||||
|
||||
// Send email
|
||||
$emailSent = $this->emailSender->sendReport($csvContent, $filename, $month, $year);
|
||||
|
||||
if ($emailSent) {
|
||||
$this->logger->info("Vendor Sales Report: Successfully sent report for {$month} {$year}");
|
||||
} else {
|
||||
$this->logger->warning("Vendor Sales Report: Failed to send email for {$month} {$year}");
|
||||
}
|
||||
|
||||
} catch (\Exception $e) {
|
||||
$this->logger->error('Vendor Sales Report Cron Error: ' . $e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user