FlexiPeeHP-Logo" title="Projektlogo" style="max-width: 100%;">
PHP-basierte Bibliothek für die einfache Interaktion mit dem tschechischen Buchhaltungssystem FlexiBee.
CZ: PHP-Bibliothek für einfache Arbeit mit dem tschechischen Wirtschaftssystem FlexiBee
❗ Diese Bibliothek wird als veraltet markiert. Bitte achten Sie auf den leichtgewichtigen Nachfolger https://github.com/Spoje-NET/php-flexibee ❗
Die Erstellung dieser Bibliothek wäre ohne die freundliche Unterstützung von Spoje.Net nicht möglich gewesen, das die Entwicklung der Lösung für die Anbindung von LMS/FlexiBee und den Import des Lagers finanziert hat. ?
Ich möchte mich auch beim technischen Support von ABRA Flexi s.r.o. für die Geduld bei der Beantwortung meiner nicht immer klugen Fragen und Fehlerberichte bedanken.
Das Parsen der Ergebnisse für DSGVO-Protokollierungszwecke wurde mit freundlicher Unterstützung von <PureHTML> verfeinert
composer require spoje.net/ FlexiPeeHP
Wenn Ihre resultierende „composer.json“-Datei etwa so aussieht:
{
"name" : " vendor/projectname " ,
"description" : " Test " ,
"type" : " project " ,
"require" : {
"spoje.net/ FlexiPeeHP " : " * "
},
"license" : " MIT " ,
"authors" : [
{
"name" : " Vítězslav Dvořák " ,
"email" : " [email protected] "
}
],
"minimum-stability" : " stable "
}
Der Composer-Installationsbefehl startet die Installation:
Die Konfiguration erfolgt durch Festlegen der folgenden Konstanten:
/*
* URL Flexibee API
*/
define ( ' FLEXIBEE_URL ' , ' https://flexibee-dev.spoje.net:5434 ' );
/*
* Uživatel FlexiBee API
*/
define ( ' FLEXIBEE_LOGIN ' , ' apiuser ' );
/*
* Heslo FlexiBee API
*/
define ( ' FLEXIBEE_PASSWORD ' , ' apipass ' );
/*
* Společnost v FlexiBee
*/
define ( ' FLEXIBEE_COMPANY ' , ' test_s_r_o_ ' );
/*
* Nebo pokud nechceme používat jméno a heslo
*/
define ( ' FLEXIBEE_AUTHSESSID ' , ' 6QuifebMits ' ); //Volitelné
/*
* Pomalý server, velká databáze a přes modem k tomu
*/
define ( ' FLEXIBEE_TIMEOUT ' , 60 ); //Volitelné
oder Anmeldeinformationen können beim Instanziieren der Klasse bereitgestellt werden.
$ invoicer = new FlexiPeeHP FakturaVydana ( null ,[
' company ' => ' Firma_s_r_o_ ' ,
' url ' => ' https://flexibee.firma.cz/ ' ,
' user ' => ' rest ' ,
' password ' => ' -dj3x21xaA_ '
]);
Diese Einstellungsmethode hat eine höhere Priorität als die oben definierten Konstanten.
$ order = new FlexiPeeHP ObjednavkaPrijata( ' code:OBP0034/2019 ' ,[ ' companyUrl ' => $ _GET [ ' companyUrl ' ], ' authSessionId ' => $ _GET [ ' authSessionId ' ] ])
Auf diese Weise kann eine Anwendung, die über eine Benutzerschaltfläche aufgerufen wird und die Werte „companyUrl“ und „authSessionId“ übergibt, eine Verbindung zum Flexibee und der konkreten Bestellung herstellen
Zentraler Bestandteil der gesamten Bibliothek ist die FlexiBeeRO-Klasse, die über die PHP-Erweiterung „curl“ mit der FlexiBee REST API kommunizieren kann.
Daraus werden dann Klassen für einzelne Datensätze abgeleitet, die Methoden für häufig verwendete Operationen enthalten, beispielsweise „Bezahlen“ bei eingegangenen Rechnungen.
Eine neue abgeleitete Klasse wird so erstellt, dass der Name der Klasse der Name des Datensatzes ist, jedoch ohne Bindestriche. Diese werden im Namen durch einen Großbuchstaben ersetzt.
function evidenceToClass ( $ evidence )
{
return str_replace ( ' ' , '' , ucwords ( str_replace ( ' - ' , ' ' , $ evidence )));
}
Das heißt Wenn wir eine neue Klasse für den Datensatz „Maßeinheiten“ ableiten möchten, sieht diese folgendermaßen aus:
<?php
/**
* @link https://demo.flexibee.eu/c/demo/merna-jednotka/properties Vlastnosti evidence
*/
class MernaJednotka extends / FlexiPeeHP /FlexiBee
{
/**
* Evidence užitá objektem.
*
* @var string
*/
public $ evidence = ' merna-jednotka ' ;
}
Und dann ist es ganz einfach, die Maßeinheiten in 2 Zeilen zu schreiben:
$ jednotky = new MernaJednotka ();
print_r ( $ jednotky -> getAllFromFlexiBee () );
Wenn wir möchten, dass die neu erstellte Klasse in den Flexibee schreiben kann, muss sie vom Vorfahren FlexiBeeRW abgeleitet werden.
Weitere Anwendungsbeispiele finden Sie in einem separaten Projekt
In manchen Fällen ist es gut zu wissen, welche Maßnahmen wir ergreifen können oder wie die Struktur der Aufzeichnungen ist. Diese Informationen können unter https://demo.flexibee.eu/c/demo/*/properties.json oder https://demo.flexibee.eu/c/demo/*/actions.json abgerufen werden. Dies ist jedoch der Fall relativ zeitaufwändiger Vorgang. Da sich die Struktur von Datensätzen und Aktionen oder Beziehungen zwischen FlexiBee-Datensätzen nicht oft ändern, verfügt FlexiPeeHP über einen Mechanismus, der das Arbeiten mit diesen Daten ermöglicht, ohne dass eine Abfrage beim Server erforderlich ist.
Die Struktur wird in der Strukturklasse (Aktionen, Beziehungen) gespeichert, die ein statisch definiertes Feld mit Informationen enthält, die andernfalls von FlexiBee abgerufen werden müssten.
Der Eintrag in der Beweisliste https://demo.flexibee.eu/c/demo/evidence-list kann dann jederzeit einfach angezeigt werden:
echo FlexiPeeHP Structure:: $ evidence [ ' faktura-vydana ' ];
Die Strukturen einzelner Datensätze werden dann in statischen Variablen gespeichert. Für ihren Namen gelten dieselben Regeln wie für die Erstellung eines neuen Klassennamens, mit der Ausnahme, dass der erste Buchstabe ein Kleinbuchstabe ist. Das heißt:
lcfirst ( FlexiPeeHP FlexiBeeRO:: evidenceToClassName ( $ evidence ))
Bei Bedarf können diese Klassen dann mit dem folgenden Befehl mit dem aktuellen Inhalt generiert werden:
cd tools/
./update_all.sh
Der Vorgang dauert einige Minuten. Wir können den Fortschritt wie folgt anzeigen:
tail -f /var/log/syslog | grep FlexiPeeHP test
Wenn Sie $this->debug in FlexiPeeHP -Objekten auf true setzen, werden zusätzliche Tests durchgeführt, bevor Daten an FlexiBee gesendet werden. Folgende mögliche Fehler werden überprüft:
Im Debug-Modus werden alle Flexibee-Anfragen und deren Antworten auch im Ordner /tmp gespeichert
Die Bibliothek enthält einen Mechanismus zum Senden von FlexiBee-Laufzeitfehlern an Entwickler:
Wenn FlexiBee einen internen Serverfehler 500 zurückgibt, wird eine E-Mail mit der Fehlermeldung an die Entwickler gesendet.
Wenn FlexiBee auf demselben Server verwendet wird und die Fehlerprotokolle gelesen werden können, wird ein entsprechendes Fragment daraus extrahiert und dem E-Mail-Text hinzugefügt.
Die E-Mail enthält außerdem zusätzliche Informationen zur Lizenz und den aktivierten Modulen.
Als Anhänge werden außerdem Dateien angehängt, die den Hauptteil der Anfrage an den Server, den Hauptteil der Antwort und eine Datei mit Informationen zu Curl enthalten.
Während der Lebensdauer des Objekts werden Fehler protokolliert und nur der erste jedes Typs gesendet.
PHPUnit-Tests befinden sich im Testordner . Wenn Sie mit einem anderen Server als dem offiziellen http://demo.flexibee.eu/ testen möchten, müssen Sie die Einstellungen in der Datei bootstrap.php ändern.
Der Inhalt der Variablen $testServer bestimmt, welche der Standardeinstellungen verwendet werden. Und natürlich können Sie Ihre eigene definieren. Als Beispiel wird hier der Testserver von spoje.net gezeigt.
Zum Testen erstellen Sie bitte zunächst eine Testfirma TESTING s.r.o. und legen Sie die Zugangsdaten eines Benutzers fest, der zur Nutzung der REST-API berechtigt ist. (Das ist der Admin-Benutzer, der bei der Installation von FlexiBee angegeben wurde.)
Achtung: Der Test gegen ein Unternehmen mit vielen Rechnungen und einer angeschlossenen Bank kann einige Zeit dauern, da auch der automatische Dokumentenabgleichsaufruf getestet wird.
Wenn Sie sich entscheiden, FlexiPeeHP in Ihrem Projekt zu erben und Tests für diese Klassen zu schreiben, die auch von FlexiPeeHP geerbt wurden, z. B.:
Die Klasse HookRecieverTest erweitert Test FlexiPeeHP ChangesTest
Fügen Sie außerdem die Pfade zu den Originaltests zu Ihrer Composer.json hinzu:
"autoload-dev": {
"psr-4": {
"Test\": "vendor/spoje.net/ FlexiPeeHP /testing/src/ FlexiPeeHP /testing/",
"Test\Ease\": "vendor/vitexsoftware/ease-framework/tests/src/Ease",
"Test\ FlexiPeeHP \": "vendor/spoje.net/ FlexiPeeHP /testing/src/ FlexiPeeHP /",
}
}
Im Ordner Beispiele finden Sie die folgenden Anwendungsbeispiele:
Datei | Beschreibung |
---|---|
AnhangSaveToFile.php | Speichern Sie den Anhang in einer Datei |
AnhangUpload.php | Anhang hochladen |
AuthSessionIdUsage.php | AuthSessionId-Authentifizierungsbeispiel |
AuthenticateContact.php | Kontaktauthentifizierung |
BatchOperation.php | Verwendung eines Filters in Batch-Vorgängen |
CreateLabel.php | mit Etiketten arbeiten |
DryRun.php | Probelagerung (Trockenlauf) |
Laden Sie InvoicePDF.php herunter | PDF-Rechnung herunterladen |
Fehler404.php | mit nicht vorhandenen Datensätzen arbeiten |
FindOverdueInvoices.php | Finden Sie überfällige Rechnungen |
GetRecordWithRelation.php | Einholen eines Datensatzes inklusive Daten aus der Unterlastschrift |
GetBankAccountForCompany.php | Beziehen eines Bankkontos für ein Unternehmen aus dem Verzeichnis |
InvoiceLockUnlock.php | Sperren und Entsperren des Datensatzes |
InvoiceCopy.php | Erstellung eines Steuerbelegs aus der Vorauszahlung |
AnmeldenAbmelden | Benutzeranmeldung und -abmeldung |
NajdiDanovyDokladKzalohovemu.php | Dokumentenverfolgung |
Storage.php | Lagerprodukt mit Seriennummern |
NeueRechnung.php | Neue Rechnung mit Fälligkeitsdatum im JSON-Format |
ObjectChaining.php | Verkettung von Objekten für mehrere Vorgänge nur in einer Warteschlange |
ObjectCooperation.php | Teilen von Daten und Verbindungsparametern zwischen Objekten |
PerformingActions.php | So führen Sie Aktionen für ein Aktionsdokument durch. z.B. Stornierung |
ReadAddressColumns.php | bestimmte Spalten zurückgeben |
sendInvoiceByMail.php | Versenden der Rechnung per E-Mail |
SendReminders.php | Senden von Erinnerungen |
SetContactAuth.php | Authentifizierungseinstellungen |
TestConnection.php | Verbindungsprüfung |
docker pull vitexsoftware/ FlexiPeeHP
Für Linux sind .deb-Pakete verfügbar. Bitte nutzen Sie das Repo:
wget -O - http://v.s.cz/[email protected]|sudo apt-key add -
echo deb http://v.s.cz/ stable main > /etc/apt/sources.list.d/ease.list
aptitude update
aptitude install FlexiPeeHP
In diesem Fall müssen Sie Folgendes zur Datei „composer.json“ Ihrer Anwendung hinzufügen:
"require" : {
"spojenet_ FlexiPeeHP " : " * " ,
"vitexsoftware_ease-framework" : " * "
},
"repositories" : [
{
"type" : " path " ,
"url" : " /usr/share/php/ FlexiPeeHP " ,
"options" : {
"symlink" : true
}
},
{
"type" : " path " ,
"url" : " /usr/share/php/Ease " ,
"options" : {
"symlink" : true
}
}
]
Wenn Sie also die Abhängigkeiten installieren, sieht es in etwa so aus:
Loading composer repositories with package information
Installing dependencies from lock file
- Installing vitexsoftware_ease-framework (1.1.3.3)
Symlinked from /usr/share/php/Ease
- Installing spojenet_ FlexiPeeHP (0.2.1)
Symlinked from /usr/share/php/ FlexiPeeHP
Und es wird möglich sein, über apt-get global für das gesamte System zu aktualisieren.
Wir generieren auch das FlexiPeeHP -doc- Paket, das Entwicklerdokumentation enthält, die mit dem ApiGen-Programm erstellt wurde. Die Dokumentation ist online verfügbar unter http://flexibee-dev.spoje.net/FlexiPeeHP/
Testen:
cd /usr/share/doc/ FlexiPeeHP /
composer install
php -f flexibeeping.php
Wir erstellen das Debian-Paket, indem wir make deb ausführen
Docker-Image:
docker build -t vitexsoftware/ FlexiPeeHP
Arbeitsstatistiken zum WakaTime-Projekt