#!/usr/bin/env php \n"); exit(1); } // Relative Angaben beziehen sich auf das Projektverzeichnis. if (!str_starts_with($datei, '/')) { $datei = dirname(__DIR__) . '/' . $datei; } if (!is_file($datei)) { fwrite(STDERR, "Datei nicht gefunden: {$datei}\n"); exit(1); } if ($benutzer !== null) { $zeile = Benutzer::findByName($benutzer); if ($zeile === null) { fwrite(STDERR, "Benutzer nicht gefunden: {$benutzer}\n"); exit(1); } Mandant::setze((int)$zeile['id']); } try { $parser = QifParser::ausDatei($datei); $ergebnis = (new QifStammdatenImport($parser))->ausfuehren(!$uebernehmen); } catch (\Throwable $e) { fwrite(STDERR, 'Import fehlgeschlagen: ' . $e->getMessage() . "\n"); exit(1); } echo ($uebernehmen ? 'Import' : 'Trockenlauf') . ': ' . basename($datei) . "\n"; $abschnitte = []; foreach ($parser->zusammenfassung() as $typ => $anzahl) { $abschnitte[] = "{$typ}: {$anzahl}"; } echo 'Datei enthält ' . implode(' · ', $abschnitte) . "\n\n"; printf("%-12s %8s %12s %8s\n", 'Bereich', $uebernehmen ? 'angelegt' : 'neu', 'vorhanden', 'Fehler'); foreach (['klassen' => 'Klassen', 'kategorien' => 'Kategorien', 'konten' => 'Konten'] as $schluessel => $titel) { printf( "%-12s %8d %12d %8d\n", $titel, $ergebnis[$schluessel]['neu'], $ergebnis[$schluessel]['vorhanden'], $ergebnis[$schluessel]['fehler'] ); } if ($ergebnis['meldungen'] !== []) { echo "\nProtokoll:\n"; foreach ($ergebnis['meldungen'] as $meldung) { echo ' - ' . $meldung['text'] . "\n"; } } if (!$uebernehmen) { echo "\nEs wurde nichts gespeichert. Mit --uebernehmen wird der Import durchgeführt.\n"; } else { echo "\nAnfangssalden stehen nicht im Export – sie werden je Konto in der\n" . "Kontenübersicht nachgetragen.\n"; } $fehler = $ergebnis['klassen']['fehler'] + $ergebnis['kategorien']['fehler'] + $ergebnis['konten']['fehler']; exit($fehler > 0 ? 1 : 0);