ELO Indexserver - Before Mapping
Vor der Übertragung bzw. dem Export an ELO via Indexserver REST API kann das Mapping der Felder mit diesem UserExit manipuliert oder gar gänzlich geändert werden.
Als Parameter erhält der UserExit das xDoc, mit dem ein feldabhängiges Mapping erstellt werden kann.
Außerdem das Default Mapping, in dem alle Felder mit externen Namen bereits aufgelistet sind.
Hier können auch Felder gemappt werden, die nicht im sogenannten "Sord" (Metadaten Objekt) enthalten sind.
Bspw. das Datumsfeld xDateIso
oder der Name des ELO Vorgangs name
(nicht zu verwechseln mit dem Dateinamen selbst).
Hier ein Beispiel:
<?php
declare(strict_types=1);
namespace Squeeze\UserExits\Invoices;
use Squeeze\xDoc;
use Squeeze\xReturnObject;
function BeforeEloIndexServerMapping(xDoc $doc, array $mapping): xReturnObject
{
$company = $doc->getActualFieldValue('Company');
// Use a completely different mapping for each company.
$mapping = match ($company) {
'<COMPANY_1>' => [
//"ELO_FIELD_NAME" => "SQUEEZE_FIELD_NAME",
"XDateIso" => "DocumentDate", // XDateIso is a reserved field name which refers to the ELO process field "Date".
"name" => "DocumentName" // Name is a reserved field name which refers to the ELO process field "name".
],
'<COMPANY_2>' => [
//"ELO_FIELD_NAME" => "SQUEEZE_FIELD_NAME",
"XDateIso" => "DocumentDate", // XDateIso is a reserved field name and is not mapped like the other fields, but is included here.
"name" => "DocumentName" // Name is a reserved field name and is not mapped like the other fields, but is included here.
],
default => [], // empty mapping will result in an error, please provide the original mapping if no change is needed.
};
return new xReturnObject(true, 200, "Mapping ok", $mapping);
}
No Comments