Inkasso-Module erstellen: Unterschied zwischen den Versionen
Aus sourceDESK Wiki
(Die Seite wurde neu angelegt: „== Grundaufbau == ... == Methoden == ...“) |
|||
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
+ | Sie können ein eigenes [[Inkasso]]-Modul erstellen, um einen neuen [[Inkasso]]-Anbieter an sourceDESK anzubinden. | ||
+ | |||
== Grundaufbau == | == Grundaufbau == | ||
− | ... | + | Ein Inkasso-Modul bekommt ein eigenes Verzeichnis unter ''modules/encashment''. In diesem Verzeichnis muss sich eine PHP-Datei mit dem gleichen Namen wie das Verzeichnis und der Endung ''.php'' befinden. In dieser PHP-Datei wird eine Klasse definiert, die von der Klasse ''Encashment'' erbt. |
+ | |||
+ | == Attribute == | ||
+ | Es werden mehrere Attribute innerhalb der erstellten Klasse benötigt, die höchstens ''protected'' sein dürfen: | ||
+ | |||
+ | * ''$short'' gibt den Kurznamen des Moduls an, das entspricht dem Verzeichnis- bzw. Dateinamen | ||
+ | * ''$name'' gibt einen Anzeigenamen für das Modul an | ||
+ | * ''$version'' definiert die Version des Moduls | ||
== Methoden == | == Methoden == | ||
− | ... | + | Folgende Methoden können definiert werden: |
+ | |||
+ | * ''getSettings()'' gibt die verfügbaren Modul-Einstellungen als Array zurück - auf sie kann nachher über das Objekt (stdClass) ''$this->options'' zugegriffen werden | ||
+ | * ''newClaim($debtor, $claim)'' dient der Übergabe einer neuer Forderung an den Anbieter - ''$debtor'' enthält Kundeninformationen, ''$claim'' Forderungsinformationen | ||
+ | * ''claimStatus($id)'' ruft den aktuellen Status vom Anbieter ab, dazu wird das Aktenzeichen übergeben | ||
+ | |||
+ | == Beispiel-Code == | ||
+ | <source lang="php"> | ||
+ | <?php | ||
+ | |||
+ | class Mediafinanz extends Encashment { | ||
+ | protected $short = "mediafinanz"; | ||
+ | protected $name = "Mediafinanz"; | ||
+ | protected $version = "1.0"; | ||
+ | |||
+ | public function getSettings() { | ||
+ | return Array( | ||
+ | "mid" => Array("type" => "text", "name" => "Mandanten-ID"), | ||
+ | "mkey" => Array("type" => "password", "name" => "Mandanten-Schlüssel"), | ||
+ | ); | ||
+ | } | ||
+ | |||
+ | public function newClaim($debtor, $claim) { | ||
+ | $auth = Array( | ||
+ | "clientId" => $this->options->mid, | ||
+ | "sandbox" => false, | ||
+ | ); | ||
+ | |||
+ | $options = Array( | ||
+ | "trace" => 1, | ||
+ | "compression" => true, | ||
+ | "exceptions" => true, | ||
+ | ); | ||
+ | |||
+ | try { | ||
+ | $soap = new SoapClient('https://soap.mediafinanz.de/encashment204.wsdl', $options); | ||
+ | |||
+ | $debt = Array( | ||
+ | "address" => "@", | ||
+ | "firstname" => $debtor->firstname, | ||
+ | "lastname" => $debtor->lastname, | ||
+ | "company" => $debtor->company, | ||
+ | "co" => "", | ||
+ | "street" => $debtor->street . " " . $debtor->street_number, | ||
+ | "postcode" => $debtor->postcode, | ||
+ | "city" => $debtor->city, | ||
+ | "country" => $debtor->country_alpha2, | ||
+ | "telephone1" => $debtor->telephone, | ||
+ | "telephone2" => "", | ||
+ | "fax" => "", | ||
+ | "email" => $debtor->mail, | ||
+ | ); | ||
+ | |||
+ | if (!empty($debtor->ID)) { | ||
+ | $debt['id'] = $debtor->ID; | ||
+ | } | ||
+ | |||
+ | if (strtotime($debtor->birthday) !== false) { | ||
+ | $debt['dateOfBirth'] = $debtor->birthday; | ||
+ | } | ||
+ | |||
+ | $claim = Array( | ||
+ | "invoiceid" => $claim->invoice, | ||
+ | "type" => "3", | ||
+ | "reason" => $claim->reason, | ||
+ | "originalValue" => $claim->amount, | ||
+ | "overdueFees" => $claim->latefee, | ||
+ | "dateOfOrigin" => $claim->date, | ||
+ | "dateOfLastReminder" => $claim->lastnotice, | ||
+ | "note" => $claim->note, | ||
+ | ); | ||
+ | |||
+ | foreach ($claim as $key => &$value) { | ||
+ | $value = utf8_encode($value); | ||
+ | } | ||
+ | |||
+ | foreach ($debt as $key => &$value) { | ||
+ | $value = utf8_encode($value); | ||
+ | } | ||
+ | |||
+ | $res = $soap->newClaim($auth, $claim, $debt); | ||
+ | |||
+ | if (!empty($res->fileNumber)) { | ||
+ | return Array(true, $res->fileNumber); | ||
+ | } | ||
+ | |||
+ | $text = "Es ist ein technischer Fehler aufgetreten."; | ||
+ | if (is_array($res->errorList)) { | ||
+ | if (count($res->errorList) == 1) { | ||
+ | $text = $res->errorList[0]; | ||
+ | } else { | ||
+ | $text = "<ul>"; | ||
+ | foreach ($res->errorList as $e) { | ||
+ | $text .= "<li>$e</li>"; | ||
+ | } | ||
+ | |||
+ | $text .= "</ul>"; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | return Array(false, $text); | ||
+ | } catch (SoapFault $ex) { | ||
+ | return Array(false, $ex->getMessage()); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | public function claimStatus($id) { | ||
+ | $auth = Array( | ||
+ | "clientId" => $this->options->mid, | ||
+ | "sandbox" => false, | ||
+ | ); | ||
+ | |||
+ | $options = Array( | ||
+ | "trace" => 1, | ||
+ | "compression" => true, | ||
+ | "exceptions" => true, | ||
+ | ); | ||
+ | |||
+ | try { | ||
+ | $soap = new SoapClient('https://soap.mediafinanz.de/encashment204.wsdl', $options); | ||
+ | |||
+ | $res = $soap->getClaimStatus($auth, Array("fileNumber" => $id)); | ||
+ | return $res->statusText ?: false; | ||
+ | } catch (SoapFault $ex) { | ||
+ | return $ex->getMessage(); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </source> |
Aktuelle Version vom 10. Oktober 2018, 08:32 Uhr
Sie können ein eigenes Inkasso-Modul erstellen, um einen neuen Inkasso-Anbieter an sourceDESK anzubinden.
Inhaltsverzeichnis
Grundaufbau
Ein Inkasso-Modul bekommt ein eigenes Verzeichnis unter modules/encashment. In diesem Verzeichnis muss sich eine PHP-Datei mit dem gleichen Namen wie das Verzeichnis und der Endung .php befinden. In dieser PHP-Datei wird eine Klasse definiert, die von der Klasse Encashment erbt.
Attribute
Es werden mehrere Attribute innerhalb der erstellten Klasse benötigt, die höchstens protected sein dürfen:
- $short gibt den Kurznamen des Moduls an, das entspricht dem Verzeichnis- bzw. Dateinamen
- $name gibt einen Anzeigenamen für das Modul an
- $version definiert die Version des Moduls
Methoden
Folgende Methoden können definiert werden:
- getSettings() gibt die verfügbaren Modul-Einstellungen als Array zurück - auf sie kann nachher über das Objekt (stdClass) $this->options zugegriffen werden
- newClaim($debtor, $claim) dient der Übergabe einer neuer Forderung an den Anbieter - $debtor enthält Kundeninformationen, $claim Forderungsinformationen
- claimStatus($id) ruft den aktuellen Status vom Anbieter ab, dazu wird das Aktenzeichen übergeben
Beispiel-Code
<?php class Mediafinanz extends Encashment { protected $short = "mediafinanz"; protected $name = "Mediafinanz"; protected $version = "1.0"; public function getSettings() { return Array( "mid" => Array("type" => "text", "name" => "Mandanten-ID"), "mkey" => Array("type" => "password", "name" => "Mandanten-Schlüssel"), ); } public function newClaim($debtor, $claim) { $auth = Array( "clientId" => $this->options->mid, "sandbox" => false, ); $options = Array( "trace" => 1, "compression" => true, "exceptions" => true, ); try { $soap = new SoapClient('https://soap.mediafinanz.de/encashment204.wsdl', $options); $debt = Array( "address" => "@", "firstname" => $debtor->firstname, "lastname" => $debtor->lastname, "company" => $debtor->company, "co" => "", "street" => $debtor->street . " " . $debtor->street_number, "postcode" => $debtor->postcode, "city" => $debtor->city, "country" => $debtor->country_alpha2, "telephone1" => $debtor->telephone, "telephone2" => "", "fax" => "", "email" => $debtor->mail, ); if (!empty($debtor->ID)) { $debt['id'] = $debtor->ID; } if (strtotime($debtor->birthday) !== false) { $debt['dateOfBirth'] = $debtor->birthday; } $claim = Array( "invoiceid" => $claim->invoice, "type" => "3", "reason" => $claim->reason, "originalValue" => $claim->amount, "overdueFees" => $claim->latefee, "dateOfOrigin" => $claim->date, "dateOfLastReminder" => $claim->lastnotice, "note" => $claim->note, ); foreach ($claim as $key => &$value) { $value = utf8_encode($value); } foreach ($debt as $key => &$value) { $value = utf8_encode($value); } $res = $soap->newClaim($auth, $claim, $debt); if (!empty($res->fileNumber)) { return Array(true, $res->fileNumber); } $text = "Es ist ein technischer Fehler aufgetreten."; if (is_array($res->errorList)) { if (count($res->errorList) == 1) { $text = $res->errorList[0]; } else { $text = "<ul>"; foreach ($res->errorList as $e) { $text .= "<li>$e</li>"; } $text .= "</ul>"; } } return Array(false, $text); } catch (SoapFault $ex) { return Array(false, $ex->getMessage()); } } public function claimStatus($id) { $auth = Array( "clientId" => $this->options->mid, "sandbox" => false, ); $options = Array( "trace" => 1, "compression" => true, "exceptions" => true, ); try { $soap = new SoapClient('https://soap.mediafinanz.de/encashment204.wsdl', $options); $res = $soap->getClaimStatus($auth, Array("fileNumber" => $id)); return $res->statusText ?: false; } catch (SoapFault $ex) { return $ex->getMessage(); } } }