Add settings for letter pdf
This commit is contained in:
parent
39b680a0e4
commit
33df7bef1f
|
@ -44,6 +44,7 @@ abstract class Letter extends Document
|
|||
public string $subject;
|
||||
protected string $filename;
|
||||
public string $until;
|
||||
public LetterSettings $settings;
|
||||
|
||||
/**
|
||||
* @param Collection<int, Page> $pages
|
||||
|
@ -54,6 +55,7 @@ abstract class Letter extends Document
|
|||
$this->subject = $this->getSubject();
|
||||
$this->until = now()->addWeeks(2)->format('d.m.Y');
|
||||
$this->setFilename(Str::slug("{$this->getSubject()} für {$pages->first()?->familyName}"));
|
||||
$this->settings = app(LetterSettings::class);
|
||||
}
|
||||
|
||||
public function number(int $number): string
|
||||
|
|
|
@ -22,6 +22,10 @@ class LetterSettings extends LocalSettings
|
|||
|
||||
public string $zip;
|
||||
|
||||
public string $iban;
|
||||
|
||||
public string $bic;
|
||||
|
||||
public static function group(): string
|
||||
{
|
||||
return 'bill';
|
||||
|
|
|
@ -24,6 +24,8 @@ class SettingIndexAction
|
|||
'address' => $settings->address,
|
||||
'place' => $settings->place,
|
||||
'zip' => $settings->zip,
|
||||
'iban' => $settings->iban,
|
||||
'bic' => $settings->bic,
|
||||
];
|
||||
}
|
||||
|
||||
|
|
|
@ -26,6 +26,8 @@ class SettingSaveAction
|
|||
'address' => $input['address'] ?? '',
|
||||
'place' => $input['place'] ?? '',
|
||||
'zip' => $input['zip'] ?? '',
|
||||
'iban' => $input['iban'] ?? '',
|
||||
'bic' => $input['bic'] ?? '',
|
||||
]);
|
||||
|
||||
$settings->save();
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
<?php
|
||||
|
||||
use Spatie\LaravelSettings\Migrations\SettingsMigration;
|
||||
|
||||
class IbanSettings extends SettingsMigration
|
||||
{
|
||||
public function up(): void
|
||||
{
|
||||
$this->migrator->add('bill.iban', '');
|
||||
$this->migrator->add('bill.bic', '');
|
||||
}
|
||||
}
|
|
@ -2,7 +2,7 @@
|
|||
<form class="grow p-6 grid grid-cols-2 gap-3 items-start content-start" @submit.prevent="submit">
|
||||
<f-text
|
||||
label="Absender"
|
||||
hint="Absender-Name, i.d.R. der kurze Stammesname"
|
||||
hint="Absender-Name in Kurzform, i.d.R. der kurze Stammesname"
|
||||
name="from"
|
||||
id="from"
|
||||
v-model="inner.from"
|
||||
|
@ -12,7 +12,7 @@
|
|||
v-model="inner.from_long"
|
||||
name="from_long"
|
||||
id="from_long"
|
||||
hint="Absender-Name in Kurzform, i.d.R. der Stammesname"
|
||||
hint="Absender-Name in Langform, i.d.R. der Stammesname"
|
||||
></f-text>
|
||||
<h2 class="text-lg font-semibold text-gray-300 col-span-2 mt-5">Kontaktdaten</h2>
|
||||
<div class="col-span-2 text-gray-300 text-sm">
|
||||
|
@ -24,6 +24,8 @@
|
|||
<f-text label="E-Mail-Adresse" v-model="inner.email" name="email" id="email"></f-text>
|
||||
<f-text label="Telefonnummer" v-model="inner.mobile" name="mobile" id="mobile"></f-text>
|
||||
<f-text label="Webseite" v-model="inner.website" name="website" id="website"></f-text>
|
||||
<f-text label="IBAN" v-model="inner.iban" name="iban" id="iban"></f-text>
|
||||
<f-text label="BIC" v-model="inner.bic" name="bic" id="bic"></f-text>
|
||||
|
||||
<div>
|
||||
<button type="submit" class="mt-3 btn block btn-primary">Speichern</button>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
\documentclass[silvaletter,12pt]{scrlttr2}
|
||||
|
||||
\setkomavar{subject}{<<< $subject >>>}
|
||||
@include('tex.letter-header')
|
||||
|
||||
\begin{document}
|
||||
@foreach($pages as $page)
|
||||
|
@ -24,9 +24,9 @@
|
|||
Somit bitten wir Sie, den ausstehenden Betrag von \totalttc bis zum \textbf{<<< $until >>>} auf folgendes Konto zu überweisen:
|
||||
|
||||
\begin{tabular}{ll}
|
||||
Kontoinhaber: & DPSG Stamm Silva \\
|
||||
IBAN: & DE40 3425 0000 0000 2145 51 \\
|
||||
Bic: & SOLSDE33XXX \\
|
||||
Kontoinhaber: & <<<$settings->from_long>>> \\
|
||||
IBAN: & <<<$settings->iban>>> \\
|
||||
Bic: & <<<$settings->bic>>> \\
|
||||
Verwendungszweck: & <<<$page->usage>>>
|
||||
\end{tabular}
|
||||
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
\setkomavar{subject}{{{ $subject }}}
|
||||
\setkomavar{fromname}[{{ $settings->from}}]{{{ $settings->from_long}}}
|
||||
\setkomavar{frommobilephone}[Mobiltelefon: ]{{{ $settings->mobile}}}
|
||||
\setkomavar{fromemail}[E-Mail: ]{{{ $settings->email}}}
|
||||
\setkomavar{fromurl}[Website: ]{{{ $settings->website}}}
|
||||
\setkomavar{fromaddress}{{{ $settings->address}}}
|
||||
\setkomavar{place}{{{ $settings->place}}}
|
||||
\setkomavar{fromzipcode}{{{ $settings->zip}}}
|
||||
\setkomavar{fromlogo}{\includegraphics[width=2cm]{logo.png}} % stammeslogo
|
|
@ -1,6 +1,6 @@
|
|||
\documentclass[silvaletter,12pt]{scrlttr2}
|
||||
|
||||
\setkomavar{subject}{<<< $subject >>>}
|
||||
@include('tex.letter-header')
|
||||
|
||||
\begin{document}
|
||||
@foreach($pages as $page)
|
||||
|
@ -24,9 +24,9 @@
|
|||
Somit bitten wir Sie, den ausstehenden Betrag von \totalttc bis zum \textbf{<<< $until >>>} auf folgendes Konto zu überweisen:
|
||||
|
||||
\begin{tabular}{ll}
|
||||
Kontoinhaber: & DPSG Stamm Silva \\
|
||||
IBAN: & DE40 3425 0000 0000 2145 51 \\
|
||||
Bic: & SOLSDE33XXX \\
|
||||
Kontoinhaber: & <<<$settings->from_long>>> \\
|
||||
IBAN: & <<<$settings->iban>>> \\
|
||||
Bic: & <<<$settings->bic>>> \\
|
||||
Verwendungszweck: & <<<$page->usage>>>
|
||||
\end{tabular}
|
||||
|
||||
|
|
|
@ -22,6 +22,8 @@ class SettingTest extends TestCase
|
|||
'address' => 'Musterstr 4',
|
||||
'place' => 'Solingen',
|
||||
'zip' => '12345',
|
||||
'iban' => 'DE05',
|
||||
'bic' => 'SOLSDE',
|
||||
]);
|
||||
|
||||
$response = $this->get('/setting/bill');
|
||||
|
@ -36,6 +38,8 @@ class SettingTest extends TestCase
|
|||
'address' => 'Musterstr 4',
|
||||
'place' => 'Solingen',
|
||||
'zip' => '12345',
|
||||
'iban' => 'DE05',
|
||||
'bic' => 'SOLSDE',
|
||||
], $response, 'data');
|
||||
}
|
||||
|
||||
|
@ -71,10 +75,14 @@ class SettingTest extends TestCase
|
|||
'address' => 'Musterstr 4',
|
||||
'place' => 'Solingen',
|
||||
'zip' => '12345',
|
||||
'iban' => 'DE05',
|
||||
'bic' => 'SOLSDE',
|
||||
]);
|
||||
|
||||
$response->assertRedirect('/setting/bill');
|
||||
$settings = app(LetterSettings::class);
|
||||
$this->assertEquals('DPSG Stamm Muster', $settings->from_long);
|
||||
$this->assertEquals('DE05', $settings->iban);
|
||||
$this->assertEquals('SOLSDE', $settings->bic);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,6 +8,8 @@ use App\Group;
|
|||
use App\Letter\BillDocument;
|
||||
use App\Letter\DocumentFactory;
|
||||
use App\Letter\Letter;
|
||||
use App\Letter\LetterSettings;
|
||||
use App\Letter\Page;
|
||||
use App\Member\Member;
|
||||
use App\Nationality;
|
||||
use App\Payment\Subscription;
|
||||
|
@ -201,6 +203,40 @@ class GenerateTest extends TestCase
|
|||
$this->assertEquals('inline; filename="'.$filename.'"', $response->headers->get('content-disposition'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @testWith ["App\\Letter\\BillDocument"]
|
||||
* ["App\\Letter\\RememberDocument"]
|
||||
*/
|
||||
public function testTheDocumentHasSettings(string $type): void
|
||||
{
|
||||
LetterSettings::fake([
|
||||
'from_long' => 'langer Stammesname',
|
||||
'from' => 'Stammeskurz',
|
||||
'mobile' => '+49 176 55555',
|
||||
'email' => 'max@muster.de',
|
||||
'website' => 'https://example.com',
|
||||
'address' => 'Musterstr 4',
|
||||
'place' => 'Münster',
|
||||
'zip' => '12345',
|
||||
'iban' => 'DE444',
|
||||
'bic' => 'SOLSSSSS',
|
||||
]);
|
||||
|
||||
$member = Member::factory()->defaults()->create();
|
||||
$document = new $type(collect([new Page(Member::get())]));
|
||||
|
||||
$document->assertHasContent('langer Stammesname');
|
||||
$document->assertHasContent('Stammeskurz');
|
||||
$document->assertHasContent('+49 176 55555');
|
||||
$document->assertHasContent('max@muster.de');
|
||||
$document->assertHasContent('https://example.com');
|
||||
$document->assertHasContent('Musterstr 4');
|
||||
$document->assertHasContent('Münster');
|
||||
$document->assertHasContent('12345');
|
||||
$document->assertHasContent('DE444');
|
||||
$document->assertHasContent('SOLSSSSS');
|
||||
}
|
||||
|
||||
private function setupMembers(array $members): Collection
|
||||
{
|
||||
return collect($members)->map(function (array $member): Member {
|
||||
|
|
Loading…
Reference in New Issue