Ü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){
$head = $xDoc->getDocumentFieldByName($originHeadField);
$head->alternatives = getUniqueAlternatives($head, $logger);
if (count($head->alternatives) > 1){
$head->getValue()->value = '';
$head->getValue()->text = '';
$strOrdernr = '';
for ($i = 0; $i < count($head->alternatives); $i++)
{
$strOrdernr .= ','.$head->alternatives[$i]->value;
}
$strOrdernr = ltrim ($strOrdernr, ",");
$head->getValue()->value = $strOrdernr;
$head->getValue()->text = $strOrdernr;
}
}
/**
* @param xDocumentField $field
* @param Logger $logger
* @return xDocumentField[]
*/
function getUniqueAlternatives($field, $logger){
// ==========================================================
// Only keep unique alternatives
// ==========================================================
$tmpStore = array();
$uniqueAlternatives = array();
$logger->debug('The field '. $field->name .' has ' . count($field->alternatives) . ' alternatives');
for ($i = 0; $i < count($field->alternatives); $i++)
{
$logger->debug('Alternative = ' . $field->alternatives[$i]->value);
if(!in_array ($field->alternatives[$i]->value, $tmpStore))
{
$logger->debug('Alternative will be kept ' . $field->alternatives[$i]->value);
$tmpStore[] = $field->alternatives[$i]->value;
$uniqueAlternatives[] = $field->alternatives[$i];
}
}
if(count($uniqueAlternatives) > 0)
{
$field->alternatives = $uniqueAlternatives;
}
return $field->alternatives;
}
Aufruf der Funktion per:
allOrderNumbersInHeadField($xDoc, $logger, "OrderNumber");