payments()->whereNeedsRemember()->get(); } public function linkLabel(): string { return 'Erinnerung erstellen'; } public function getSubject(): string { return 'Zahlungserinnerung'; } public function setFilename(string $filename): static { $this->filename = $filename; return $this; } public function getFilename(): string { return $this->filename; } public function getScript(): EnvType { return EnvType::XELATEX; } public function getView(): string { return 'tex.remember'; } public function getTemplate(): ?string { return 'default'; } public function getPositions(Collection $page): array { $memberIds = $page->pluck('id')->toArray(); $payments = Payment::whereIn('member_id', $memberIds) ->orderByRaw('nr, member_id')->whereNeedsRemember()->get(); return $payments->mapWithKeys(function (Payment $payment) { $key = "Beitrag {$payment->nr} für {$payment->member->firstname} {$payment->member->lastname} ({$payment->subscription->name})"; return [$key => $this->number($payment->subscription->amount)]; })->toArray(); } public function getFamilyName(Collection $page): string { return $page->first()->lastname; } public function getAddress(Collection $page): string { return $page->first()->address; } public function getZip(Collection $page): string { return $page->first()->zip; } public function getEmail(Collection $page): string { return $page->first()->email_parents ?: $page->first()->email; } public function getLocation(Collection $page): string { return $page->first()->location; } public function getUsage(Collection $page): string { return "Mitgliedsbeitrag für {$this->getFamilyName($page)}"; } public function allLabel(): string { return 'Erinnerungen versenden'; } /** * Get Descriptions for sendpayment page. * * @return array */ public function getDescription(): array { return [ 'Diese Funktion erstellt Erinnerungs-PDFs mit allen versendeten aber noch nich bezahlten Rechnungen bei den Mitgliedern die Post als Versandweg haben.', 'Das zuletzt erinnerte Datum wird auf heute gesetzt.', ]; } public function afterSingle(Payment $payment): void { $payment->update(['last_remembered_at' => now()]); } public function getMailSubject(): string { return 'Zahlungserinnerung'; } }