Änderungen

Inkasso-Module erstellen

4.052 Byte hinzugefügt, 08:30, 10. Okt. 2018
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->info'' 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&uuml;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>