Improved handling for new invoices

This commit is contained in:
2026-04-18 23:42:39 +02:00
parent 33a9271013
commit 4878f750bd
16 changed files with 206 additions and 32 deletions

View File

@@ -3,7 +3,10 @@
namespace App\Domains\Invoice\Actions\CreateInvoice;
use App\Enumerations\InvoiceStatus;
use App\Mail\InvoiceMails\InvoiceMailsNewInvoiceMail;
use App\Mail\ParticipantParticipationMails\EventSignUpSuccessfullMail;
use App\Models\Invoice;
use Illuminate\Support\Facades\Mail;
class CreateInvoiceCommand {
private CreateInvoiceRequest $request;
@@ -36,6 +39,7 @@ class CreateInvoiceCommand {
'amount' => $this->request->totalAmount,
'distance' => $this->request->distance,
'travel_direction' => $this->request->travelRoute,
'travel_reason' => $this->request->travelReason,
'passengers' => $this->request->passengers,
'transportation' => $this->request->transportations,
'document_filename' => $this->request->receiptFile !== null ? $this->request->receiptFile->fullPath : null,
@@ -46,6 +50,23 @@ class CreateInvoiceCommand {
$response->invoice = $invoice;
}
if ($this->request->costUnit->mail_on_new) {
$recipients = [app('tenant')->email_finance];
foreach ($this->request->costUnit->treasurers()->get() as $treasurer) {
if (!in_array($treasurer->email, $recipients)) {
$recipients[] = $treasurer->email;
}
}
foreach ($recipients as $recipient) {
Mail::to($recipient)->send(new InvoiceMailsNewInvoiceMail(
invoice: $invoice,
costUnit: $this->request->costUnit,
));
}
}
return $response;
}

View File

@@ -22,6 +22,7 @@ class CreateInvoiceRequest {
public float $totalAmount;
public bool $isDonation;
public ?int $userId;
public ?string $travelReason;
public function __construct(
@@ -41,6 +42,7 @@ class CreateInvoiceRequest {
?int $distance = null,
?int $passengers = null,
?int $transportations,
?string $travelReason = null,
) {
$this->costUnit = $costUnit;
@@ -59,6 +61,7 @@ class CreateInvoiceRequest {
$this->totalAmount = $totalAmount;
$this->isDonation = $isDonation;
$this->userId = $userId;
$this->travelReason = $travelReason;
if ($accountIban === 'undefined') {
$this->accountIban = null;