©Sergey Emelyanov 2025 | Alle Rechte vorbehalten
Das Anhängen externer Dokumente (z. B. Scans, Verträge) an Kontakte via API spart Zeit und automatisert Workflows. In dieser Anleitung zeigen wir, wie Sie:
Senden Sie einen POST-Request an /webservice.php:
// Beispiel in PHP mit cURL
$data = [
'operation' => 'create',
'sessionName' => 'SESSION_KEY_HIER_EINFÜGEN',
'elementType' => 'Documents',
'element' => json_encode([
"notes_title" => "Externer Vertrag",
"filename" => "https://ihr-service.com/vertrag.pdf", // Externe URL
"assigned_user_id" => "19x1", // Benutzer-ID
"filelocationtype" => "E", // "E" = Extern
"relations" => "12x100" // Kontakt-ID (Format: [Modul-ID]x[Record-ID])
])
];
$ch = curl_init('https://ihre-domain.de/webservice.php');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
Erklärung der Felder:
Obwohl das Dokument erstellt wird, fehlt die Verknüpfung in der Kontaktkarte. Grund: Die Relation wird beim API-Call nicht automatisch gesetzt.
Fügen Sie diese Funktion in include/Webservices/Utils.php ein:
// Gibt die Modul-ID zurück (z. B. für "Contacts")
function vtws_getEntityId($entityName) {
global $adb;
$result = $adb->pquery('SELECT id FROM vtiger_ws_entity WHERE name = ?', [$entityName]);
return ($result && $adb->num_rows($result) > 0)
? $adb->query_result($result, 0, 'id')
: 0;
}
Ändern Sie die Funktion vtws_internal_setrelation in include/Webservices/SetRelation.php (ca. Zeile 57):
Vorher:
relateEntities($focus, $moduleName, $elementId, $withModuleName, $withElementId);
Nachher:
// Korrektur der Dokument-Kontakt-Relation
if ($moduleName === 'Documents' && $withModuleName === 'Contacts') {
$focus = CRMEntity::getInstance($withModuleName);
// Variablen tauschen
list($elementId, $withElementId) = [$withElementId, $elementId];
list($moduleName, $withModuleName) = [$withModuleName, $moduleName];
}
relateEntities($focus, $moduleName, $elementId, $withModuleName, $withElementId);
Fazit
Mit diesen Anpassungen integrieren Sie externe Dokumente nahtlos in VtigerCRM. Für komplexere Szenarien (z. B. Datei-Uploads) nutzen Sie filelocationtype = "I" und kodieren Sie die Datei in Base64.
📩 Fragen? Kontaktieren Sie uns für Support bei individuellen Anpassungen!
©Sergey Emelyanov 2025 | Alle Rechte vorbehalten