Übergabe jeder Bestellnummer Alternative als kommaseparierte Liste
Um jede Bestellnummer Alternative in einer kommaseparierten Liste als Rechnungskopffeld zu übergeben folgende Erweiterungen hinzufügen:
function allOrderNumbersInHeadField(xDoc $xDoc, Logger $logger, string $originHeadField): void
{
$head = $xDoc->getDocumentFieldByName($originHeadField);
$head->alternatives = getUniqueAlternatives($head, $logger);
if (count($head->alternatives) > 1) {
$head->getValue()->value = '';
$head->getValue()->text = '';
$strOrdernr = '';
foreach ($head->alternatives as $alternative) {
$strOrdernr .= ',' . $alternative->value;
}
$strOrdernr = ltrim($strOrdernr, ",");
$head->getValue()->value = $strOrdernr;
$head->getValue()->text = $strOrdernr;
}
}
/**
* @param xDocumentField $field
* @param Logger $logger
* @return xDocumentField[]
*/
function getUniqueAlternatives(xDocumentField $field, Logger e$logger): array
{
// ==========================================================
// Only keep unique alternatives
// ==========================================================
$tmpStore = [];
$uniqueAlternatives = [];
$logger->debug('The field ' . $field->name . ' has ' . count($field->alternatives) . ' alternatives');
foreach ($head->alternatives as $alternative) {
$logger->debug('Alternative = ' . $alternative->value);
if (!in_array($alternative->value, $tmpStore)) {
$logger->debug('Alternative will be kept ' . $alternative->value);
$tmpStore[] = $alternative->value;
$uniqueAlternatives[] = $alternative;
}
}
if (count($uniqueAlternatives) > 0) {
$field->alternatives = $uniqueAlternatives;
}
return $field->alternatives;
}
Aufruf der Funktion per:
allOrderNumbersInHeadField($xDoc, $logger, "OrderNumber");
No Comments