Remove Silva from invoice mails
continuous-integration/drone/push Build is passing Details

This commit is contained in:
philipp lang 2026-05-07 21:25:24 +02:00
parent 163d3cc18a
commit a920954b45
9 changed files with 44 additions and 10 deletions

View File

@ -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' => '',
];
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -0,0 +1,11 @@
<?php
use Spatie\LaravelSettings\Migrations\SettingsMigration;
return new class extends SettingsMigration
{
public function up(): void
{
$this->migrator->add('bill.replyTo', '');
}
};

View File

@ -18,6 +18,7 @@
<f-text id="iban" v-model="inner.iban" label="IBAN"></f-text>
<f-text id="bic" v-model="inner.bic" label="BIC"></f-text>
<f-text id="remember_weeks" v-model="inner.rememberWeeks" type="number" label="Erinnerung alle X Wochen versenden"></f-text>
<f-text id="reply_to" v-model="inner.replyTo" label="Reply-To E-Mail-Adresse"></f-text>
</form>
</setting-layout>
</page-layout>

View File

@ -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')

View File

@ -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')

View File

@ -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'));
}

View File

@ -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);
}
}