+ */
+ public function attachments(): array
+ {
+ return [];
+ }
+}
diff --git a/app/Tasks/CloseCostUnit.php b/app/Tasks/CloseCostUnit.php
index 6854426..2e80dc3 100644
--- a/app/Tasks/CloseCostUnit.php
+++ b/app/Tasks/CloseCostUnit.php
@@ -6,9 +6,11 @@ use App\Domains\CostUnit\Actions\ChangeCostUnitDetails\ChangeCostUnitDetailsComm
use App\Domains\CostUnit\Actions\ChangeCostUnitDetails\ChangeCostUnitDetailsRequest;
use App\Domains\CostUnit\Actions\ChangeCostUnitState\ChangeCostUnitStateCommand;
use App\Domains\CostUnit\Actions\ChangeCostUnitState\ChangeCostUnitStateRequest;
+use App\Mail\AdminMails\CostUnitInvalidBillingDeadlineMail;
use App\Models\CostUnit;
use App\Repositories\CostUnitRepository;
use App\ValueObjects\Amount;
+use Illuminate\Support\Facades\Mail;
class CloseCostUnit implements CronTask {
public function handle(): void
@@ -33,6 +35,27 @@ class CloseCostUnit implements CronTask {
}
$billingEndTime = \DateTime::createFromFormat('Y-m-d H:i:s', $billingEnd);
+ if (false === $billingEndTime) {
+ $billingEndTime = \DateTime::createFromFormat('Y-m-d', $billingEnd);
+ }
+
+ if (false === $billingEndTime) {
+ $recipients = config('app.admin_mail');
+ if (null === $recipients) {
+ $recipients = CostUnit::where('id', $costUnit['id'])->first()
+ ?->treasurers()->pluck('email')->all() ?? [];
+ }
+
+ if (!empty($recipients)) {
+ Mail::to($recipients)->send(new CostUnitInvalidBillingDeadlineMail(
+ costUnitId: $costUnit['id'],
+ costUnitName: $costUnit['name'] ?? null,
+ invalidBillingDeadline: $billingEnd,
+ ));
+ }
+
+ continue;
+ }
$billingEndTime->setTime(0,0,0);
$billingEndTime->add(new \DateInterval('P1D'));
diff --git a/config/app.php b/config/app.php
index 99d08ae..70f221a 100644
--- a/config/app.php
+++ b/config/app.php
@@ -15,6 +15,8 @@ return [
'name' => env('APP_NAME', 'Laravel'),
+ 'admin_mail' => env('APP_ADMIN_MAIL'),
+
/*
|--------------------------------------------------------------------------
| Application Environment
diff --git a/resources/views/emails/admin/cost_unit_invalid_billing_deadline.blade.php b/resources/views/emails/admin/cost_unit_invalid_billing_deadline.blade.php
new file mode 100644
index 0000000..95c95c6
--- /dev/null
+++ b/resources/views/emails/admin/cost_unit_invalid_billing_deadline.blade.php
@@ -0,0 +1,16 @@
+
+
+
+
+ Für die Kostenstelle "{{ $costUnitName }}" (ID {{ $costUnitId }}) konnte das Abrechnungsende
+ nicht verarbeitet werden.
+
+
+ Der hinterlegte Wert "{{ $invalidBillingDeadline }}" ist weder ein gültiges Datum noch ein
+ Datum mit Uhrzeit. Die automatische Verarbeitung dieser Kostenstelle wurde deshalb übersprungen.
+
+
+ Bitte prüft und korrigiert das Abrechnungsende dieser Kostenstelle.
+
+
+
diff --git a/version b/version
index 8ac28bf..c78c496 100644
--- a/version
+++ b/version
@@ -1 +1 @@
-4.6.1
+4.6.2