# BeforeFileImport

Dieser UserExit wird nach dem Import von Belege über den PollDirectory-Import (Filesystem-Import) ausgelöst.

# 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
<?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](https://docs.squeeze.one/uploads/images/gallery/2023-02/scaled-1680-/squeeze-screeenshot-beforefileimport-filename.png)](https://docs.squeeze.one/uploads/images/gallery/2023-02/squeeze-screeenshot-beforefileimport-filename.png)