Skip to main content

Attribute einer Importdatei in ein Squeeze Feld übergeben

In diversen Verarbeitungsszenarien kann es notwendig sein, den Dateinamen oder Anteile des Dateinamens im Verarbeitungsprozess zu berücksichtigen.

In dem folgenden Code-Beispiel wird der Dateiname ohne Pfadangabe und ohne Extension in das mehrdimensionale Array "additionalInfo" geschrieben. Dabei wird der Dateiname in den Index "Filename" geschrieben.

Zusätzlich wird aus dem Importpfad der Datei, der Mandant abgeleitet und entsprechend vorbelegt.
Der Mandant wird in den Index "Company" geschrieben. 

Sobald ein identisch benanntes Feld in der Squeeze Dokumentenklasse existiert, wird der Inhalt des Array-Indexes (hier der Dateiname und der Mandant) in das entsprechende Squeeze-Feld geschrieben.

<?php

use Squeeze\xDataBaseClass;
use Squeeze\xReturnObject;
use Squeeze\xTools;

/**
 * @param array $params
 * @return xReturnObject
 * @throws Exception
 */
function BeforeFileImport(array $params): xReturnObject
{
    $logger = Logger::getLogger("main");
    $db = xDataBaseClass::getDBConnection();

    return prepareFileImport($db, $params, $logger);
}

/**
 * @param PDO $db
 * @param array $params
 * @param Logger $logger
 * @return xReturnObject
 * @throws Exception
 */
function prepareFileImport(PDO $db, array $params, Logger $logger): xReturnObject
{
    try {
        $originalFileName = $params['originalFile'];

        if (!isset($originalFileName)) {
            return new xReturnObject(false, 400, 'originalFile not set', null);
        }

        // initialize additionalInfo array
        $params['additionalInfo'] = array();

        // Save fileName without the extension in the additionalInfo
        $params['additionalInfo']['Importfile'] = $originalFileName;
        $params['additionalInfo']['Filename'] = xTools::getFileNameWithoutExtension($originalFileName);

        // Get the company from the folder structure
        // Example: "C:\tmp\import\Test\1000_Test\0003_63da7bb4b0589621675295.pdf"
        $logger->debug('Original Path and File Name = ' . $originalFileName);
        $directories = explode(DIRECTORY_SEPARATOR, $originalFileName);
        // $directories[0] = 'C:'
        // $directories[1] = 'tmp'
        // $directories[2] = 'import'
        // $directories[3] = 'Test'
        // $directories[4] = '1000_Test'
        // $directories[5] = '0003_63da7bb4b0589621675295.pdf'

        $companyDir = $directories[4]; // 1000_Test
        $companyId = substr($companyDir, 0, 4);  // 1000
        $params['additionalInfo']['Company'] = $companyId;

    } catch (Throwable $e) {
        xTools::handleException($e, false, true);
    }
    
    return new xReturnObject(true, 200, 'File ready for import!', $params);
}

Der Dateiname wird anschließend in dem entsprechenden Feld angezeigt.

Squeeze-Screeenshot-BeforeFileImport_Filename.png