Alle Kollektionen
Dokumentation und Hilfe
Tipps und Tricks
Datenübernahme von primaERP nach Flexi
Datenübernahme von primaERP nach Flexi

So übertragen Sie Daten von primaERP nach Flexi

Lenka Haringerová avatar
Verfasst von Lenka Haringerová
Vor über einer Woche aktualisiert

ABRA

primaERP ist eine praktische Cloud-Anwendung aus der ABRA Software Produktfamilie. Es ist ein Werkzeug zur Verfolgung der für Teamprojekte aufgewendeten Zeit (Timetracking) und deren anschließende Abrechnung mit dem Kunden (Billing). Die Anwesenheit kann in primaERP auch über das Modul Anwesenheit verfolgt werden. PrimaERP verfügt wie ABRA Flexi über eine ausgefeilte API-Schnittstelle und daher ist es kein Problem, diese beiden Systeme zu verbinden

.

Die API in jeder Anwendung arbeitet in mancher Hinsicht anders. Wenn Sie bereits mit der API in ABRA Flexi vertraut sind, müssen Sie sich an die Unterschiede in der PrimaERP-API gewöhnen.

API-Schlüssel

Zunächst müssen Sie einen API-Schlüssel erhalten, der Ihnen die Nutzung der API ermöglicht. Um sie zu erhalten, müssen Sie den Support kontaktieren, indem Sie direkt im Chat innerhalb der Anwendung nachfragen oder eine E-Mail an podpora@primaerp.com schreiben .

Sobald Sie die E-Mail mit dem generierten Schlüssel erhalten haben, können Sie mit der Einrichtung beginnen.

Authentifizierung und Folgefragen

Die API von primaERP unterscheidet sich auch in der Art und Weise des Datenabrufs von Flexi. Mit Flexi können Sie die HTTP-Authentifizierung verwenden, um die benötigten Daten mit der ersten Abfrage zu erhalten. In der primaERP-API müssen Sie sich zunächst anmelden

. Bei der Anmeldung wird ein Token mit begrenzter Gültigkeit generiert, das dann für individuelle Abfragen an die API verwendet wird. Sobald der Token abläuft, muss ein neuer beschafft werden.

Dieses Prinzip kann auch in Flexi verwendet werden, obwohl es nur für Benutzer der Weboberfläche sinnvoller ist. Sie hat jedoch einen unbestreitbaren Vorteil. Bei richtiger Verwendung, d. h. das Token wird nur abgerufen, wenn es abläuft, beschleunigt es die Abfrageverarbeitung. Flexi muss nicht für jede Abfrage neue Sessions erstellen und eine Menge Daten in den Puffer laden. Das Anlegen einer Sitzung und das Laden von Daten in den Cache wird also nur einmal durchgeführt. Eine Beschreibung der Verwendung dieser Authentifizierungsmethode finden Sie in der Flexi-API-Dokumentation im Abschnitt Anmeldung

.

Um ein Authentifizierungs-Token zu erhalten, müssen Sie eine GET-Anfrage an

https://{mieter}.api.primaerp.com/v1/auth/login?apikey={apikey}

Ersetzen Sie {Mieter} durch den Kontonamen in primaERP

Ersetzen Sie {apikey} durch den API-Schlüssel, den Sie vom primaERP-Support erhalten haben.

Zusätzlich muss der Autorisierungs-Header den Namen und das Passwort des primaERP-Benutzers enthalten.

Abrufen von Konten aus primaERP

Wenn Sie also angemeldet sind und ein gültiges Authentifizierungs-Token haben, können Sie beginnen, Daten aus primaERP abzurufen. Für dieses Szenario müssen Sie eine Liste von Konten erhalten, die Sie dann an Flexi übertragen.

Die Liste der Rechnungen finden Sie unter /v1/billing/bills. Wie bei Flexi können die Daten in zwei Formaten abgerufen werden. Die Wahl des Formats ist die gleiche wie bei Flexi. Sie können XML-Daten durch Hinzufügen der Erweiterung .xml und JSON-Daten durch Hinzufügen der Erweiterung .json

erhalten. Sie müssen auch den Token-Parameter zur URL hinzufügen.

Die vollständige URL zum Abrufen von JSON-Kontodaten aus primaERP lautet also

https://{mieter}.api.primaerp.com/v1/billing/bills.json?token={token}

Beispieldaten im JSON-Format:

[ { "id": "1b5127a5-b8c3-4adf-a961-0cad42f718a3", "createdAt":"/Date(1495654409685)/", "updatedAt": null, "version": 0, "docNumber": "2017/001", "docDate": "/Datum(1495576800000)/", "vatDate":"/Datum(1495576800000)/", "dueDate":"/Datum(1496786400000)/", "lastPaymentDate": null, "description": "Flexi System s.r.o. - 2017-05", "notes": null, "vatText": null, "header": null, "footer": null, "itemsPrice": 21300.0, "totalPrice": 25773.0, "client": { "id": "c46d9eca-585b-4d2a-ba2c-1c93da0ea08c", "createdAt":"/Datum(1495654059779)/", "updatedAt":"/Datum(1495732307124)/", "version": 4, "externalSystem": null, "externalResourceId": null, "externalBrowsableUrl": null, "externalSyncedAt": null, "externalSynced": null, "name".r.o..", "code": "FLEXI", "email": "podporaflexi@abra.eu", "active": true, "billsCount": null, "projectsCount": null, "streetAddress": "Lochotínská 18", "additionalAddressInfo": null, "zipCode": "30100", "city": "Plzeň", "state": "Plzeňský kraj", "countryCode": "CZE", "phone": "371 124 321", "vatId": "CZ28019920", "website": "www."flexibee.eu", "displayName": "Flexi System s.r.o." }, "contactPerson": null, "approved": false, "items": [ { "id": "636da95d-e19a-48cf-83e3-698a89a4108b", "createdAt":"/Date(1495654409685)/", "updatedAt": null, "version": 0, "attributes": "JSON{\"duration\":63900000\"}", "itemGroup": "trbi", "docIndex": null, "quantity": 17.75, "price": 21300.0, "unitPrice": 0.0, "unit": null, "displayName": "#null"} ], "author": { "id": "9e3c6b13-dc81-4630-9a21-3b9ab4023e60", "createdAt": "/Datum(1495653967694)/", "updatedAt":"/Datum(1495818089532)/", "version": 5, "firstName": "Kája", "lastName": "z Norska", "nickName": "z Norska, K.", "email": "kbel@flexi.eu", "phone": null, "position": "A02200", "timeZone": "Europe/Berlin", "dateFormat": "tt.MM.yyyy", "timeFormat": "HH:mm", "weekStart": 1, "language": "en_CZ", "password": null, "secretKey": null, "confirmed": true, "confirmedEmail": true, "active": true, "birthdayRemind": null, "workingTimeStart": null, "workingTimeEnd": null, "created":"/Date(1495653967694)/", "admin": false, "projectManager": false, "displayName": "von Norska Kája" }, "groupAttributes": "JSON[[\"\"],null]", "draft": false, "vatMode": "DECLARE_VAT", "vats": [ { "id": "d0a1fbe9-ee92-495d-940b-b89accd586e2", "createdAt":"/Date(1495654409685)/", "updatedAt": null, "version": 0, "vatRate": 21.0, "vatPrice": 4473.0, "displayName": "21.0" } ], "displayName": "2017/001" } ]

Konvertieren und Schreiben von Daten in ABRA Flexi

Die aus primaERP ausgelesenen Daten müssen in eine für Flexi verarbeitbare Form gebracht

und dann in die entsprechenden Datensätze eingetragen werden. Die Rechnungen aus der Fakturierung können z.B. in das Rechnungsregister eingetragen und dort gebucht werden.

In primaERP wird für das Konto alles erfasst, was zum Erstellen einer neuen ausgestellten Rechnung notwendig ist. Nur der Typ des Dokuments ist in der Brücke festgelegt.

Das Schreiben in ABRA Flexi wird in dem Artikel PHP JSON writing data to ABRA Flexi

beschrieben.

Beispiel-PHP-Skript zum Übertragen von Konten

function curl_get($url){ $ch = curl_init(); // Curl-Ressource erzeugen curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); // Inhalt als String von curl_exec zurückgeben curl_setopt($ch, CURLOPT_HTTPAUTH, TRUE); // HTTP-Authentifizierung curl_setopt($ch, CURLOPT_USERPWD, "emailova@adresa.cz:heslo"); // Benutzernamen und Passwort setzen curl_setopt($ch, CURLOPT_URL, $url); // URL setzen curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); // HTTP-Methode setzen $output = curl_exec($ch); $info = curl_getinfo($ch); if (curl_getinfo($ch, CURLINFO_HTTP_CODE) != 200 && curl_getinfo($ch, CURLINFO_HTTP_CODE) != 201) { printf ("Während des Vorgangs ist ein Fehler aufgetreten (HTTP %d): %sn", curl_getinfo($ch, CURLINFO_HTTP_CODE), $output); } curl_close($ch); return $output; } function curl_put($url, $json_data){ $ch = curl_init(); // curl-Ressource anlegen curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); // Inhalt als String von curl_exec zurückgeben curl_setopt($ch, CURLOPT_HTTPAUTH, TRUE); // HTTP-Authentifizierung curl_setopt($ch, CURLOPT_USERPWD, "winstrom:winstrom"); // Benutzername und Passwort setzen curl_setopt($ch, CURLOPT_URL, $url); // URL setzen curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); // HTTP-Methode setzen curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data); // Daten setzen $output = curl_exec($ch); // ausführen // Flexi Rückgabewert header("Content-Type: application/json"); print($output); // close curl resource to free up system resources curl_close($ch); } function parse_date($primaerp_date, $to_format){ $timestamp = preg_replace('/[^\d]/','', $primaerp_date)/1000; $datetime = new DateTime(); $datetime->setTimestamp($timestamp); return $datetime->format($to_format); } // Authentifizierung $url = "https://mieter.api.primaerp.com/v1/auth/login?apikey=abcdefgh-1234-5678-ijkl-mnopqrstuv"; $output = curl_get($url); $json = json_decode($output, true); // Token für Api-Anfragen $apiToken = $json['token']; echo $apiToken; // Anfrage für Abrechnungsdaten $url = "https://tenant.api.primaerp.com/v1/billing/bills.json?token=".$apiToken; $output = curl_get($url); $billing_json = json_decode($output, true); // Daten für Flexi transformieren $invoices = array( "winstrom" => "winstrom array ( "rechnung-ausgestellt" => array() ) ); foreach($billing_json as $bill){ $invoice = array(); $invoice['id'] = array(); array_push($invoice['id'], 'ext:primaerp:'.$bill['id']); array_push($invoice['id'], 'code:'.$bill['docNumber']); $invoice['typeDoc'] = 'code:INVOICE-PRIMAERP'; $invoice['code'] = $Rechnung['docNumber']; $invoice['noPost'] = 'true'; $invoice['sumZklZakl'] = $Rechnung['itemsPrice']; $invoice['sumCelkZakl'] = $Rechnung['totalPrice']; $invoice['company'] = 'code:'.$invoice['client']['code']; $invoice['firm@if-not-found'] = 'create'; $invoice['nazFirmy'] = $bill['client']['name']; $invoice['street'] = $bill['client']['streetAddress']; $invoice['psc'] = $bill['client']['zipCode']; //$invoice['stat'] = 'code:'.$bill['client']['countryCode']; $invoice['stat'] = 'code:CZ'; $invoice['dic'] = $bill['client']['vatId']; $invoice['datVyst'] = parse_date($bill['docDate'], 'Y-m-d'); $invoice['duzpPpuv'] = parse_date($bill['vatDate'], 'Y-m-d'); $invoice['datSplat'] = parse_date($bill['dueDate'], 'Y-m-d'); array_push($invoice['winstrom']['invoice-issued'], $invoice); } // in Flexi schreiben $url = "https://demo.flexibee.eu/c/demo/invoice-issued.json"; $output = curl_put($url, json_encode($invoice)); ?

Beispielhafte Übertragung von primaERP zu demo.flexibee.eu:

{
    "winstrom": {
        "@version": "1.0",
        "success": "true",
        "stats": {
            "created": "0",
            "updated": "1",
            "deleted": "0",
            "skipped": "0",
            "failed": "0"
        },
        "results": [
            {
                "id": "3468",
                "request-id": "ext:primaerp:1b5127a5-b8c3-4adf-a961-0cad42f718a3",
                "ref": "\/c\/demo\/faktura-vydana\/3468.json"
            }
        ]
    }
}

.

Fazit und Bewertung

In diesem Beispiel werden "positionslose" Rechnungen erstellt. Es ist jedoch kein Problem, auch einen Einzelnachweis zu erstellen. Legen Sie einfach die entsprechenden Rechnungspositionen entsprechend der Artikelsammlung an. Eine weitere mögliche Verbesserung der gesamten Übertragung ist die Verwendung von Filtern, so dass z. B. nur freigegebene Konten oder Konten, die sich seit der letzten Synchronisation geändert haben, übertragen werden können. Die Filterung wird im Abschnitt Filterung

der primaERP-Dokumentation beschrieben.

Es ist auch möglich, Daten direkt aus dem Timetracking-Modul über die API abzurufen, sie in die entsprechenden Ordner in Flexi Payroll zu schreiben und dann die Gehälter der Mitarbeiter auf Basis der geleisteten Stunden zu berechnen.

In umgekehrter Richtung ist es möglich, das gesamte Verzeichnis oder die Liste der Mitarbeiter, die ihre Zeit erfassen sollen, von Flexi nach primaERP zu übertragen.

Wenn Sie auf der Suche nach einem zuverlässigen Zeiterfassungssystem für ABRA Flexi sind, ist primaERP sicherlich die richtige Wahl. Darüber hinaus bietet es die Möglichkeit, Daten automatisch von einem System in ein anderes zu übertragen.

Hat dies Ihre Frage beantwortet?