Erstellen von individuellen Funktionen in edoc invoice link for DATEV
In der Administration unter <app_path>/admin können Sie in der Feldkonfiguration neben den Kopfdaten und Positionsdaten der Rechnung unter anderem auch eine spezifische Funktion hinzufügen, die eigens auf Ihre Bedürfnisse zugeschnitten ist. Eine individuelle Funktion ist immer dann relevant, wenn Sie spezifische Berechnungen anstellen oder z.B. den Wert von mehreren Rechnungsfeldern miteinander kombinieren möchten.
Im Installationsverzeichnis unter <app>/data/persistent/fieldFunctions können Sie PHP-Dateien mit Ihren individuellen Funktionen speichern. Erstellen Sie pro Funktion immer eine einzelne PHP-Datei und speichern Sie die PHP-Datei mit einem aussagekräftigen Dateinamen. Den Dateinamen benötigen Sie für die Feldkonfiguration.
Folgende Grundsätze müssen Sie beim Erstellen von individuellen Funktionen beachten:
Die Dateien müssen eine Klasse beinhalten, die genauso heißt wie die Datei selbst (Ohne Dateierweiterung).
Die Klasse muss die Klasse App\CustomFunction erweitern.
Von der Schnittstelle wird die Funktion exec() aufgerufen und der Rückgabewert für den Feldwert verwendet.
Sie können mit der Erweiterung der App\CustomFunction-Klasse auf folgende Eigenschaften zugreifen:
logger: Ist ein Objekt der Klasse PSR\Log\LoggerInterface. Mithilfe des logger-Objekts können Debuginformationen und Fehlermeldungen in die Log-Datei geschrieben werden.
invoice: Ist ein Objekt der Klasse App\Invoice und beinhaltet folgende Eigenschaften:
header: Enthält die Kopfdaten der aktuellen Rechnung.
status: Enthält die Statusinformationen der aktuellen Rechnung.
positions: Enthält die Positionsdaten der aktuellen Rechnung mit den Transferdaten der Rechnung.
position: Ist ein Array. Wenn Positionsdaten verarbeitet werden, ist dieses Array mit den Daten der aktuellen Position gefüllt. Andernfalls enthält das Array die Daten der erste Position, falls vorhanden.
api: Ist ein Objekt der Klasse edoc\appserver\ScriptAPI\Action mit den Helfermethoden für Datenquellen und Aktionen. Weitere Informationen zu den Aktionen finden Sie im Handbuch zu edoc automate.
Beispiel für eine individuelle Funktion
<?php
use App\CustomFunction;
class PrefixVendorId extends CustomFunction
{
public function exec()
{
$this->logger->debug("Start processing PrefixVendorId");
$data = "PREFIX_" . ($this->invoice->header["vendor_id"] ?? "");
// Use position:
//$account = $this->position["account"];
// Use Script API i.E. do something with d.3
//$this->api->getDatasource("d3");
$this->logger->debug("End processing PrefixVendorId");
return $data;
}
}
Anschließend fügen Sie in der Feldkonfiguration Ihrer App die individuelle Funktion hinzu.
So geht's
Erstellen Sie eine neue Feldkonfiguration oder wechseln Sie in eine bereits existierende Konfiguration.
Wählen Sie unter Zuordnungstyp den Eintrag Individuelle Funktion aus.
Geben Sie unter Zuordnungsdetails den Namen der Klasse an. Geben Sie den Namen der PHP-Datei ohne Dateiendung an (z.B. ManipulateVendorName statt ManipulateVendorName.php).
Die Funktion wird beim Ermitteln des Feldwertes ausgeführt.