Implement invoice period warming queue handling with Redis interface

- Added methods `enqueueInvoicePeriodWarming` and `consumeInvoicePeriodWarmingQueue` to the `Redis` interface for managing warming periods.
- Modified `invoice_period_flag_service` to enqueue warming periods on cache misses.
- Updated cron job logic to process invoice period warming queues and ensure flags are warmed effectively.
This commit is contained in:
Jeppe Bundgaard
2026-05-12 16:01:55 +02:00
parent 5f36939833
commit 5965c5d72d
4 changed files with 65 additions and 2 deletions
+17 -2
View File
@@ -160,11 +160,26 @@ function WarmInvoicePeriodAutomaticFlagsCron(): void
$service = new invoice_period_flag_service();
$now = new DateTime();
$previousMonth = new DateTime('first day of previous month');
$toWarm = [];
foreach ([$now, $previousMonth] as $date) {
$dateFrom = $date->format('Y-m-01');
$dateTo = $date->format('Y-m-t');
$service->warmOrderItemRowsForPeriod($dateFrom, $dateTo);
$service->warmAutomaticFlagsForPeriod($dateFrom, $dateTo);
$toWarm[$dateFrom . '|' . $dateTo] = ['dateFrom' => $dateFrom, 'dateTo' => $dateTo];
}
try {
$queued = (new redis())->consume_invoice_period_warming_queue();
foreach ($queued as $period) {
$key = $period['dateFrom'] . '|' . $period['dateTo'];
$toWarm[$key] = $period;
}
} catch (Throwable) {
}
foreach ($toWarm as $period) {
$service->warmOrderItemRowsForPeriod($period['dateFrom'], $period['dateTo']);
$service->warmAutomaticFlagsForPeriod($period['dateFrom'], $period['dateTo']);
}
}