Zum Inhalt springen
BirdAPI powered by SKYLITE.DESIGN
Kontakt
Zurück zum Blog

Tutorial: E-Rechnung in Laravel integrieren

Meist gelesen

Fortgeschritten

  • Laravel 12
  • PHP 8.4

Laravel ist das bevorzugte PHP-Framework vieler Entwickler aufgrund seiner eleganten Syntax, der umfassenden Funktionalität und der schnellen Entwicklungsmöglic...

PDF / Drucken
0 Bewertungen
2.467 0 Kommentare

1. Voraussetzungen und Vorbereitung

Bevor wir loslegen, stellen wir sicher, dass alle Voraussetzungen erfüllt sind: Laravel-Projekt: Stellen Sie sicher, dass Ihr Projekt auf einer der neueren Laravel-Versionen läuft (mindestens Laravel 8). PHP Version: PHP 7.4 oder höher. Composer: Paketmanager für PHP. Grundlegende Kenntnisse in Laravel: Sie sollten wissen, wie man Modelle, Migrationen, Controller und Services in Laravel erstellt.

2. E-Rechnungs-Bibliothek installieren

Um E-Rechnungen im vorgeschriebenen Format wie XRechnung oder ZUGFeRD zu erstellen, benötigen wir eine geeignete Bibliothek. Eine der besten Optionen ist php-xrechnung, die die Generierung von XRechnung-konformen XML-Dateien ermöglicht. Fügen Sie die Bibliothek Ihrem Laravel-Projekt hinzu:
shell
composer require e-venement/php-xrechnung

3. E-Commerce-Plugin integrieren (Optional)

Falls Sie ein E-Commerce-System betreiben, benötigen Sie möglicherweise ein E-Commerce-Plugin, das einfach in Laravel integriert werden kann. Bagisto ist eine großartige Wahl, da es ein umfangreiches Feature-Set und eine einfache Integration bietet:
shell
composer require bagisto/bagisto
php artisan bagisto:install

4. Erstellen von Modellen und Migrations für Rechnungen

Jetzt erstellen wir ein Modell und eine Migration für unsere Rechnungen. Damit legen wir die Struktur der Rechnungstabellen in unserer Datenbank fest:

Bearbeiten Sie die generierte Migration, um die benötigten Felder hinzuzufügen:

shell
php artisan make:model Invoice -m

Führen Sie die Migration durch:

php
Schema::create('invoices', function (Blueprint $table) {
    $table->id();
    $table->string('invoice_number')->unique();
    $table->date('invoice_date');
    $table->decimal('total_amount', 10, 2);
    $table->string('currency')->default('EUR');
    $table->json('items'); // Speichert Artikel und Dienstleistungen als JSON
    $table->timestamps();
});
shell
php artisan migrate

5. Service zur Generierung von E-Rechnungen erstellen

Nun erstellen wir eine Service-Klasse, die die E-Rechnungen generiert. Diese Klasse verwendet die php-xrechnung-Bibliothek, um Rechnungsdaten in das XRechnung-Format zu konvertieren:

In der neuen Klasse InvoiceService.php fügen wir folgende Logik hinzu:

shell
php artisan make:service InvoiceService
php
namespace App\Services;

use ERechnung\XRechnung;
use App\Models\Invoice;

class InvoiceService
{
    public function generateEInvoice(Invoice $invoice)
    {
        // Erstellen Sie eine neue XRechnung-Instanz
        $xRechnung = new XRechnung();

        // Setzen der notwendigen Daten für die XRechnung
        $xRechnung->setInvoiceNumber($invoice->invoice_number);
        $xRechnung->setInvoiceDate($invoice->invoice_date);
        $xRechnung->setTotalAmount($invoice->total_amount);
        $xRechnung->setCurrency($invoice->currency);
        $xRechnung->setItems($invoice->items); // Erwartet ein JSON-Array

        // Speichern der XML-Datei
        $filePath = storage_path('app/invoices/' . $invoice->invoice_number . '.xml');
        $xRechnung->saveToFile($filePath);

        return $filePath;
    }
}

6. API-Endpunkt zur Erstellung und Bereitstellung von Rechnungen

Nun erstellen wir einen API-Endpunkt, um die E-Rechnungs-Funktionalität bereitzustellen. Dieser Endpunkt kann beispielsweise im InvoiceController hinzugefügt werden:

Registrieren Sie die Route in Ihrer web.php oder api.php:

php
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Invoice;
use App\Services\InvoiceService;

class InvoiceController extends Controller
{
    protected $invoiceService;

    public function __construct(InvoiceService $invoiceService)
    {
        $this->invoiceService = $invoiceService;
    }

    public function downloadEInvoice($id)
    {
        $invoice = Invoice::findOrFail($id);

        // E-Rechnung generieren
        $filePath = $this->invoiceService->generateEInvoice($invoice);

        // Datei herunterladen
        return response()->download($filePath);
    }
}
php
Route::get('/invoices/{id}/download', [InvoiceController::class, 'downloadEInvoice']);

7. Validierung und Testen der E-Rechnungen

Der wichtigste Schritt in jedem Entwicklungsprozess ist das Testen. Testen Sie die generierten E-Rechnungen mit offiziellen Tools wie dem Zentralen Rechnungseingang der Bundesregierung oder anderen Prüfprogrammen. So stellen Sie sicher, dass die XML-Dateien den gesetzlichen Anforderungen entsprechen.

8. Optimierung und Bereitstellung

Sobald Sie alle Funktionalitäten implementiert und getestet haben, ist es Zeit für den letzten Feinschliff: Caching und Optimierung: Nutzen Sie Laravels Caching-Mechanismen (z. B. config:cache, route:cache), um die Leistung Ihrer Anwendung zu verbessern. Deployment: Stellen Sie sicher, dass Ihre Anwendung auf einem sicheren Server läuft. Verwenden Sie Laravel Forge oder Envoyer für einfache und sichere Bereitstellung. Dokumentation und Schulung: Dokumentieren Sie alle Änderungen und erstellen Sie eine kurze Schulung für Ihre Mitarbeiter, damit sie wissen, wie sie mit dem neuen E-Rechnungs-System arbeiten können.
Mit dieser Anleitung haben Sie die Grundlagen geschaffen, um E-Rechnungen in Ihrem Laravel-Projekt zu integrieren. Die Einhaltung der neuen E-Rechnungs-Pflicht ist nicht nur eine gesetzliche Notwendigkeit, sondern kann auch die Effizienz Ihrer Prozesse erheblich verbessern. Nutzen Sie die Tipps und Tricks, um Ihre Implementierung weiter zu optimieren und sicherzustellen, dass alles reibungslos läuft. Viel Spaß beim Entwickeln – und denken Sie daran: Manchmal ist die Lösung viel einfacher, als man denkt, wenn man es einfach Schritt für Schritt angeht!

Kommentare 0

Noch keine Kommentare. Seien Sie der Erste!

Kommentar schreiben

Ihre Meinung ist willkommen — Kommentare erscheinen nach kurzer Prüfung.

Kommentare werden vor Veröffentlichung moderiert.