Sie können ein eigenes Inkasso-Modul erstellen, um einen neuen Inkasso-Anbieter an sourceDESK anzubinden.
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(); } } }