Rechnungsseite: neue STR/MAN-Rechnungen gelistet, STR bei Stripe verlinkt
Die Kundenseite /admin/me/invoices zeigte bisher nur das Legacy-Archiv. Neue Sektion "Aktuelle Rechnungen" mit Netto/USt/Gesamt und Status; STR-Rechnungen oeffnen die gehostete Stripe-Rechnungsansicht ueber einen Redirect-Endpunkt (URL wird je Aufruf frisch geholt, Zugriff nur fuer den Eigentuemer). KPIs zaehlen neu + Archiv zusammen. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
2a8fd0179e
commit
5166fc7b40
4 changed files with 226 additions and 25 deletions
44
app/Http/Controllers/StripeInvoiceRedirectController.php
Normal file
44
app/Http/Controllers/StripeInvoiceRedirectController.php
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\Invoice;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Laravel\Cashier\Cashier;
|
||||
|
||||
/**
|
||||
* Öffnet die bei Stripe gehostete Rechnungsansicht (inkl. PDF-Download) zu
|
||||
* einer gespiegelten STR-Rechnung. Die URL wird bei jedem Aufruf frisch von
|
||||
* Stripe geholt statt gespeichert — gehostete Links können sich ändern.
|
||||
*/
|
||||
class StripeInvoiceRedirectController extends Controller
|
||||
{
|
||||
public function __invoke(Request $request, Invoice $invoice): RedirectResponse
|
||||
{
|
||||
abort_unless($invoice->user_id === $request->user()->id, 404);
|
||||
abort_unless(filled($invoice->stripe_invoice_id), 404);
|
||||
|
||||
try {
|
||||
$stripeInvoice = Cashier::stripe()->invoices->retrieve($invoice->stripe_invoice_id);
|
||||
$hostedUrl = $stripeInvoice->hosted_invoice_url;
|
||||
} catch (\Throwable $exception) {
|
||||
Log::warning('Stripe-Rechnungsansicht nicht erreichbar.', [
|
||||
'invoice_id' => $invoice->id,
|
||||
'stripe_invoice_id' => $invoice->stripe_invoice_id,
|
||||
'error' => $exception->getMessage(),
|
||||
]);
|
||||
|
||||
$hostedUrl = null;
|
||||
}
|
||||
|
||||
if (! $hostedUrl) {
|
||||
return redirect()
|
||||
->route('me.invoices.index')
|
||||
->with('invoice-error', __('Die Stripe-Rechnungsansicht ist gerade nicht erreichbar. Bitte versuchen Sie es später erneut.'));
|
||||
}
|
||||
|
||||
return redirect()->away($hostedUrl);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue