diff --git a/app/Invoice/InvoiceSettings.php b/app/Invoice/InvoiceSettings.php
index 9971da78..92197ee9 100644
--- a/app/Invoice/InvoiceSettings.php
+++ b/app/Invoice/InvoiceSettings.php
@@ -18,6 +18,7 @@ class InvoiceSettings extends LocalSettings implements Storeable
public ?string $zip;
public ?string $iban;
public ?string $bic;
+ public ?string $replyTo;
public ?int $rememberWeeks;
public static function group(): string
@@ -43,6 +44,7 @@ class InvoiceSettings extends LocalSettings implements Storeable
'iban' => $this->iban,
'bic' => $this->bic,
'rememberWeeks' => $this->rememberWeeks,
+ 'replyTo' => $this->replyTo,
]
];
}
@@ -64,6 +66,7 @@ class InvoiceSettings extends LocalSettings implements Storeable
'iban' => '',
'bic' => '',
'rememberWeeks' => '',
+ 'replyTo' => '',
];
}
diff --git a/app/Invoice/Mails/BillMail.php b/app/Invoice/Mails/BillMail.php
index 541c1970..613ffee5 100644
--- a/app/Invoice/Mails/BillMail.php
+++ b/app/Invoice/Mails/BillMail.php
@@ -2,6 +2,7 @@
namespace App\Invoice\Mails;
+use App\Invoice\InvoiceSettings;
use App\Invoice\Models\Invoice;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
@@ -12,6 +13,8 @@ class BillMail extends Mailable
use Queueable;
use SerializesModels;
+ public InvoiceSettings $settings;
+
/**
* Create a new message instance.
*
@@ -19,6 +22,7 @@ class BillMail extends Mailable
*/
public function __construct(public Invoice $invoice, public string $filename)
{
+ $this->settings = app(InvoiceSettings::class);
}
/**
@@ -30,7 +34,7 @@ class BillMail extends Mailable
{
return $this->markdown('mail.invoice.bill')
->attach($this->filename)
- ->replyTo('kasse@stamm-silva.de')
- ->subject('Rechnung | DPSG Stamm Silva');
+ ->when($this->settings->replyTo, fn ($mail) => $mail->replyTo($this->settings->replyTo))
+ ->subject('Rechnung | '.$this->settings->from_long);
}
}
diff --git a/app/Invoice/Mails/RememberMail.php b/app/Invoice/Mails/RememberMail.php
index 0231624f..8a7660d7 100644
--- a/app/Invoice/Mails/RememberMail.php
+++ b/app/Invoice/Mails/RememberMail.php
@@ -2,6 +2,7 @@
namespace App\Invoice\Mails;
+use App\Invoice\InvoiceSettings;
use App\Invoice\Models\Invoice;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
@@ -12,6 +13,8 @@ class RememberMail extends Mailable
use Queueable;
use SerializesModels;
+ public InvoiceSettings $settings;
+
/**
* Create a new message instance.
*
@@ -19,6 +22,7 @@ class RememberMail extends Mailable
*/
public function __construct(public Invoice $invoice, public string $filename)
{
+ $this->settings = app(InvoiceSettings::class);
}
/**
@@ -30,7 +34,7 @@ class RememberMail extends Mailable
{
return $this->markdown('mail.invoice.remember')
->attach($this->filename)
- ->replyTo('kasse@stamm-silva.de')
- ->subject('Zahlungserinnerung | DPSG Stamm Silva');
+ ->when($this->settings->replyTo, fn ($mail) => $mail->replyTo($this->settings->replyTo))
+ ->subject('Zahlungserinnerung | '.$this->settings->from_long);
}
}
diff --git a/database/settings/202511-07_create_replyTo_invoice_mail_settings.php b/database/settings/202511-07_create_replyTo_invoice_mail_settings.php
new file mode 100644
index 00000000..0df50757
--- /dev/null
+++ b/database/settings/202511-07_create_replyTo_invoice_mail_settings.php
@@ -0,0 +1,11 @@
+migrator->add('bill.replyTo', '');
+ }
+};
diff --git a/resources/js/views/setting/Bill.vue b/resources/js/views/setting/Bill.vue
index b6b71e1b..427c818e 100644
--- a/resources/js/views/setting/Bill.vue
+++ b/resources/js/views/setting/Bill.vue
@@ -18,6 +18,7 @@
+
diff --git a/resources/views/mail/invoice/bill.blade.php b/resources/views/mail/invoice/bill.blade.php
index 964ac500..35278c7b 100644
--- a/resources/views/mail/invoice/bill.blade.php
+++ b/resources/views/mail/invoice/bill.blade.php
@@ -1,7 +1,7 @@
@component('mail::message')
# {{ $invoice->greeting }},
-Im Anhang findet ihr die aktuelle Rechnung des Stammes Silva für das laufende Jahr. Bitte begleicht diese bis zum angegebenen Datum.
+Im Anhang findet ihr die aktuelle Rechnung an {{$settings->from}} für das laufende Jahr. Bitte begleicht diese bis zum angegebenen Datum.
@component('mail::subcopy')
diff --git a/resources/views/mail/invoice/remember.blade.php b/resources/views/mail/invoice/remember.blade.php
index a7951a40..94bba5b5 100644
--- a/resources/views/mail/invoice/remember.blade.php
+++ b/resources/views/mail/invoice/remember.blade.php
@@ -1,7 +1,7 @@
@component('mail::message')
# {{ $invoice->greeting }},
-Hiermit möchten wir euch an die noch ausstehenden Mitgliedsbeiträge des Stammes Silva für das laufende Jahr erinnern. Bitte begleicht diese bis zum angegebenen Datum.
+Hiermit möchten wir euch an die noch ausstehenden Mitgliedsbeiträge an {{$settings->from}} für das laufende Jahr erinnern. Bitte begleicht diese bis zum angegebenen Datum.
@component('mail::subcopy')
diff --git a/tests/Feature/Invoice/InvoiceSendActionTest.php b/tests/Feature/Invoice/InvoiceSendActionTest.php
index 83b8dc66..7a6a48f8 100644
--- a/tests/Feature/Invoice/InvoiceSendActionTest.php
+++ b/tests/Feature/Invoice/InvoiceSendActionTest.php
@@ -48,6 +48,7 @@ class InvoiceSendActionTest extends TestCase
Tex::spy();
Storage::fake('temp');
$this->withoutExceptionHandling()->login()->loginNami();
+ app(InvoiceSettings::class)->fill(['from_long' => 'Stammname', 'replyTo' => 'reply@mail.com'])->save();
$invoice = Invoice::factory()
->to(ReceiverRequestFactory::new()->name('Familie Muster'))
->has(InvoicePosition::factory()->withMember(), 'positions')
@@ -57,7 +58,13 @@ class InvoiceSendActionTest extends TestCase
InvoiceSendAction::run();
- Mail::assertSent(RememberMail::class, fn ($mail) => $mail->build() && $mail->hasTo('max@muster.de', 'Familie Muster') && Storage::disk('temp')->path('zahlungserinnerung-fur-familie-muster.pdf') === $mail->filename && Storage::disk('temp')->exists('zahlungserinnerung-fur-familie-muster.pdf'));
+ Mail::assertSent(RememberMail::class, fn ($mail) => $mail->build()
+ && $mail->hasTo('max@muster.de', 'Familie Muster')
+ && $mail->hasSubject('Zahlungserinnerung | Stammname')
+ && Storage::disk('temp')->path('zahlungserinnerung-fur-familie-muster.pdf') === $mail->filename
+ && Storage::disk('temp')->exists('zahlungserinnerung-fur-familie-muster.pdf')
+ && $mail->hasReplyTo('reply@mail.com')
+ );
Tex::assertCompiled(RememberDocument::class, fn ($document) => 'Familie Muster' === $document->toName);
$this->assertEquals(now()->format('Y-m-d'), $invoice->fresh()->last_remembered_at->format('Y-m-d'));
}
diff --git a/tests/Feature/Invoice/SettingTest.php b/tests/Feature/Invoice/SettingTest.php
index e4ce8e3c..98aceffa 100644
--- a/tests/Feature/Invoice/SettingTest.php
+++ b/tests/Feature/Invoice/SettingTest.php
@@ -33,7 +33,8 @@ class SettingTest extends TestCase
'zip' => '12345',
'iban' => 'DE05',
'bic' => 'SOLSDE',
- 'rememberWeeks' => 6
+ 'rememberWeeks' => 6,
+ 'replyTo' => 'reply@example.com',
])->save();
$this->get(route('setting.data', ['settingGroup' => 'bill']))
@@ -49,7 +50,8 @@ class SettingTest extends TestCase
->assertInertiaPath('data.zip', '12345')
->assertInertiaPath('data.iban', 'DE05')
->assertInertiaPath('data.bic', 'SOLSDE')
- ->assertInertiaPath('data.rememberWeeks', 6);
+ ->assertInertiaPath('data.rememberWeeks', 6)
+ ->assertInertiaPath('data.replyTo', 'reply@example.com');
}
public function testItReturnsTabs(): void
@@ -78,7 +80,8 @@ class SettingTest extends TestCase
'zip' => '12345',
'iban' => 'DE05',
'bic' => 'SOLSDE',
- 'rememberWeeks' => 10
+ 'rememberWeeks' => 10,
+ 'replyTo' => 'reply@example.com2',
]);
$response->assertRedirect('/setting/bill');
@@ -86,6 +89,7 @@ class SettingTest extends TestCase
$this->assertEquals('DPSG Stamm Muster', $settings->from_long);
$this->assertEquals('DE05', $settings->iban);
$this->assertEquals('SOLSDE', $settings->bic);
+ $this->assertEquals('reply@example.com2', $settings->replyTo);
$this->assertEquals(10, $settings->rememberWeeks);
}
}