Skip to main content

Ü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");