dart_proffix_rest 0.3.8 copy "dart_proffix_rest: ^0.3.8" to clipboard
dart_proffix_rest: ^0.3.8 copied to clipboard

A Dart wrapper for Proffix Rest API with automatic login and logout and many useful helper functions

pub package Build Status codecov License

Dart Wrapper für PROFFIX REST-API #

alt text

Dieser Wrapper wird von der Pedrett IT+Web AG - dem unabhängigen und innovativen Proffix Px5 Partner - unterhalten und entwickelt.

Übersicht #

Installation #

dart pub add dart_proffix_rest
copied to clipboard

Konfiguration #

Die Konfiguration wird dem Client mitgegeben:

Konfiguration Beispiel Type Bemerkung
restURL https://myserver.ch:12299 string URL der REST-API ohne pxapi/v4/
database DEMO string Name der Datenbank
username USR string Names des Benutzers
password b62cce2fe18f7a156a9c... string SHA256-Hash des Benutzerpasswortes
modules ["ADR", "FIB"] List<String>? Benötigte Module (mit Komma getrennt)
options ProffixRestOptions(volumeLicence: true) ProffixRestOptions Optionen (Details unter Optionen)

Beispiel:

import 'package:dart_proffix_rest/dart_proffix_rest.dart';


var pxClient = ProffixClient(
        database: 'DEMODBPX5',
        restURL: 'https://myserver.ch:12299',
        username: 'USR',
        password: 'b62cce2fe18f7a156a9c719c57bebf0478a3d50f0d7bd18d9e8a40be2e663017',
        modules: ["VOL"],
        options: null);

    var request =
        await pxClient.get(endpoint: "ADR/Adresse", params: {"Limit": "1"});


copied to clipboard

Optionen #

Optionen sind fakultativ und werden in der Regel nicht benötigt:

Option Beispiel Bemerkung
key 112a5a90fe28b...242b10141254b4de59028 API-Key als SHA256 - Hash (kann auch direkt mitgegeben werden)
version v3 API-Version; Standard = v3
loginEndpoint /pxapi/ Prefix für die API; Standard = /pxapi/
LoginEndpoint PRO/Login Endpunkt für Login; Standard = PRO/Login
userAgent DartWrapper User Agent; Standard = DartWrapper
timeout 15 Timeout in Sekunden
batchsize 200 Batchgrösse für Batchrequests; Standard = 200
log true Aktiviert den Log für Debugging; Standard = false
volumeLicence false Nutzt PROFFIX Volumenlizenzierung

Methoden

Parameter Typ Bemerkung
endpoint string Endpunkt der PROFFIX REST-API; z.B. ADR/Adresse,STU/Rapporte...
data string Daten (werden automatisch in JSON konvertiert)
parameters Map<String, dynamic>? Parameter gemäss PROFFIX REST API Docs

Folgende unterschiedlichen Methoden sind mit dem Wrapper möglich:

Get / Query

    var request =
        await pxClient.get(endpoint: "ADR/Adresse/1", params: {"Fields": "AdressNr"});

copied to clipboard
Put / Update

    var request =
        await pxClient.put(endpoint: "ADR/Adresse/1", {
  "Name":   "Muster GmbH",
  "Ort":    "Zürich",
  "Zürich": "8000",
 });

copied to clipboard
Patch / Update

 var request =
        await pxClient.patch(endpoint: "ADR/Adresse/1", {
  "Name":   "Muster GmbH",
  "Ort":    "Zürich",
  "Zürich": "8000",
 });

copied to clipboard
Post / Create

 var request =
        await pxClient.post(endpoint: "ADR/Adresse/1", {
  "Name":   "Muster GmbH",
  "Ort":    "Zürich",
  "Zürich": "8000",
 });

copied to clipboard
Delete / Delete

  var request =
        await pxClient.delete(endpoint: "ADR/Adresse/1");

copied to clipboard

Spezielle Endpunkte

Check

Prüft die Login - Credentials und gibt bei Fehlern eine Exception aus.


 var check = await pxClient.check();

 // If statusCode = 200 -> Success
 if(check.statusCode = 200){
  print("OK")
// Else show exception
 } else {
  print(check)
 }

copied to clipboard
Upload / Download File

Lädt eine Datei auf PRO/Datei hoch und gibt die DateiNr als String zurück


  // Upload File
  final File file = File("_assets/dart-proffix.png");

  var bytes = file.readAsBytesSync();
  var dataUpload = Uint8List.fromList(bytes);

  var dateiNr = await pxClient.uploadFile("testDate.png",dataUpload);

  // Download File (again)
  var fileAgain = await pxClient.downloadFile(dateiNr: dateiNr.toString());

copied to clipboard
Logout

Loggt den Client von der PROFFIX REST-API aus und gibt die Session / Lizenz damit wieder frei. Zusätzlich wird der Dart Client geschlossen.

Hinweis: Es wird automatisch die zuletzt verwendete PxSessionId für den Logout verwendet


 var lgout = await pxClient.logout();

copied to clipboard

Der Wrapper führt den Logout auch automatisch bei Fehlern durch damit keine Lizenz geblockt wird.

getPxSessionId()

Gibt die aktuelle PxSessionId zurück


 var pxSessionId = await pxClient.getPxSessionId();

copied to clipboard
setPxSessionId()

Setzt die PxSessionId manuell

Hinweis: Diese Methode wird nur für Servicelogins (z.b. via Extension oder Proffix WebView benötigt)


 pxClient.setPxSessionId("99753429-9716-cf41-066a-8c98edc5e928");

copied to clipboard
GET List

Gibt direkt die Liste der PROFFIX REST API aus (ohne Umwege)


var list = await pxClient.getList(listeNr: 1232,data: {});

copied to clipboard

Hinweis: Der Dateityp (zurzeit nur PDF) kann über den Header File-Type ermittelt werden*

Hilfsfunktionen

convertPxTimeToTime

Konvertiert einen Zeitstempel der PROFFIX REST-API in time.Time


var tim = ProffixHelpers().convertPxTimeToTime('2004-04-11 00:00:00')

copied to clipboard
convertTimeToPxTime

Konvertiert einen time.Time in einen Zeitstempel der PROFFIX REST-API


// Create DateTime from now
var timeNow = DateTime tmpDateTime = DateTime.now();

// Convert to PxTime
var tm = ProffixHelpers().convertTimeToPxTime(timeNow);

copied to clipboard
convertLocationId

Extrahiert die ID aus dem Header Location der PROFFIX REST-API


// Example Create Address
  var postReq =
        await tempClient.post(endpoint: "ADR/Adresse", data: {
    "Name": "Test",
    "Vorname": "Rest",
    "Ort": "Zürich",
    "PLZ": "8000",
    "Land": {"LandNr": "CH"},
  });

  // Get LocationID from Header --> returns newly created AdressNr from posted Address
 createdAdressNr = ProffixHelpers().convertLocationId(postReq.headers);

copied to clipboard
getFilteredCount

Extrahiert die Anzahl Ergebnisse aus dem Header PxMetaData der PROFFIX REST-API


// Example Get Address with Filter PLZ == Münchwilen
    var getReq = await tempClient.get(endpoint: "ADR/Adresse", params: {
      "Filter": "PLZ=='Münchwilen'",
      "Fields": "AdressNr,Name,Vorname,Ort,PLZ"
    });

  // Get FilteredCount from Header --> returns the total amount of filtered Addresses
 countAddresses = ProffixHelpers().getFilteredCount(getReq.headers);

copied to clipboard

Weitere Beispiele #

Im Ordner /example finden sich weitere, auskommentierte Beispiele.

Proof of Work #

Dieser Wrapper wird produktiv mit allen pfx Apps - den Apps für Proffix eingesetzt.

3
likes
160
points
307
downloads

Publisher

verified publisherpitw.ch

Weekly Downloads

2024.09.19 - 2025.04.03

A Dart wrapper for Proffix Rest API with automatic login and logout and many useful helper functions

Repository (GitHub)

Documentation

API reference

License

MIT (license)

Dependencies

async, crypto, dartz, dio, intl

More

Packages that depend on dart_proffix_rest