| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 | 
							- <?php
 
- class StructController
 
- {
 
- 	private $dir;
 
- 	private $config;
 
- 	private $pattern;
 
- 	private $result;
 
- 	public static function Validate ($action, $filename, $logfile = "") {
 
- 		if (!file_exists($filename)) return;
 
- 		$struct = new StructController($filename);
 
- 		$result = $struct->ValidateFinance();
 
- 		if ($logfile == "") {
 
- 			echo "FEHLER:";
 
- 			foreach($result['error'] as $type => $list) {
 
- 				echo "\r\n\r\n" . $type . ": \r\n";
 
- 				echo implode("\r\n", $list);
 
- 			}
 
- 		} else {
 
- 			file_put_contents($logfile, json_encode($result));
 
- 		}
 
- 	}
 
- 	
 
- 	public function __construct ($configFile) {
 
- 		$this->dir = dirname(dirname($configFile));
 
- 		$xml = simplexml_load_file($configFile);
 
- 		$this->config = $this->xmlToArray($xml);
 
- 	}
 
- 	public function ExportSKR51 ($csvFile) {
 
- 	}
 
- 	public function ValidateFinance () {
 
- 		$this->pattern = array(
 
- 			'error' => array(
 
- 				'Neues Konto' => '^[^;]*;[^;]*;[^;]*$',
 
- 				'Konto_Art' => '^([^;]*;){2};',
 
- 				'Kostenstelle' => '^([^;]*;){2}[02];;',
 
- 				'Konto_1' => '^([^;]*;){5};'
 
- 			),
 
- 			'info' => array(
 
- 				'FB' => '^([^;]*;){10};',
 
- 				'TEK' => '^([^;]*;){20};',
 
- 				'GuV' => '^([^;]*;){2}[02];([^;]*;){27};',
 
- 				'Bilanz' => '^([^;]*;){2}1;([^;]*;){37};',
 
- 				'GuV_extern' => '^([^;]*;){2}[02];([^;]*;){47};'
 
- 			)
 
- 		);
 
- 		$csvFile = $this->dir . "\\" . $this->config['Dateipfade']['KontenrahmenPfad'] . $this->config['Dateipfade']['KontenrahmenCsv'];
 
- 		$this->result = array('error' => array(), 'info' => array());
 
- 		foreach(file($csvFile) as $i => $row) {
 
- 			if ($i == 0) continue;
 
- 			$this->CheckRow(mb_convert_encoding($row, "ISO-8859-1", "UTF-8"));
 
- 		}
 
- 		return $this->result;
 
- 	}
 
- 	public function CheckRow ($row) {
 
- 		$info = "";
 
- 		if (!preg_match("/^([^;]*);([^;]*)/", $row, $info)) {
 
- 			return;
 
- 		}
 
- 		foreach ($this->pattern as $level => $list) {
 
- 			foreach ($list as $type => $p) {
 
- 				if (preg_match("/". $p . "/", $row)) {
 
- 					$this->result[$level][$type][] = mb_convert_encoding($info[1] . " - " . $info[2], "UTF-8", "Windows-1252");
 
- 				}
 
- 			}
 
- 		}
 
- 	}
 
- 	public function xmlToArray ($xml) {
 
- 		$s = array();
 
- 		$s['Kunde'] = (string)$xml->Kunde->Firma;
 
- 		$s['Dateipfade'] = (array)$xml->Dateipfade;
 
- 		$sd = array();
 
- 		for ($i=0; $i < count($xml->Strukturdefinitionen->Struktur); $i++) {
 
- 			$str = $xml->Strukturdefinitionen->Struktur[$i];
 
- 			$attr = $xml->Strukturdefinitionen->Struktur[$i]->attributes();
 
- 			$sd[] = array(
 
- 				'KontenInStruktur' => (string)$attr->KontenInStruktur,
 
- 				'Name' => (string)$str->Name,
 
- 				'Beschreibung' => (string)$str->Beschreibung,
 
- 				'Kontenfilter' => (string)$str->Kontenfilter,
 
- 				'ExportStk' => (string)$str->ExportStk,
 
- 				'ExportUebersetzung' => (string)$str->ExportUebersetzung,
 
- 				'ExportUebersetzungStk' => (string)$str->ExportUebersetzungStk,
 
- 				'ExportAdjazenz' => (string)$str->ExportAdjazenz,
 
- 				'ExportHerstellerKontenrahmen' => (string)$str->ExportHerstellerKontenrahmen
 
- 			);
 
- 		}
 
- 		$s['Strukturdefinitionen'] = $sd;
 
- 		$sf = array();
 
- 		for ($i=0; $i < count($xml->Suchfilter->Filter); $i++) {
 
- 			$attr = $xml->Suchfilter->Filter[$i]->attributes();
 
- 			$sf[] = array(
 
- 				'Name' => (string)$attr->Bezeichnung,
 
- 				'Kontenfilter' => (string)$attr->Regex
 
- 			);
 
- 		}
 
- 		$s['Suchfilter'] = $sf;
 
- 		$kdf = array();
 
- 		for ($i=0; $i < count($xml->KontoDatenfelder->Feld); $i++) {
 
- 			$str = $xml->KontoDatenfelder->Feld[$i];
 
- 			$attr = $xml->KontoDatenfelder->Feld[$i]->attributes();
 
- 			$opt = array();
 
- 			for ($j = 0; $j < count($str->Optionen->Option); $j++) {
 
- 				$optAttr = $str->Optionen->Option[$j]->attributes();
 
- 				$opt[] = array(
 
- 					'Name' => (string)$optAttr->Name,
 
- 					'Wert' => (string)$optAttr->Wert
 
- 				);
 
- 			}
 
- 			$kdf[] = array(
 
- 				'id' => (string)$attr->id,
 
- 				'Aktiv' => (string)$str->Aktiv,
 
- 				'Optionen' => $opt,
 
- 				'Name' => (string)$str->Name,
 
- 				'Beschreibung' => (string)$str->Beschreibung,
 
- 				'Default' => (string)$str->Default,
 
- 				'Darstellung' => (string)$str->Darstellung
 
- 			);
 
- 		}
 
- 		$s['KontoDatenfelder'] = $kdf;
 
- 		return $s;
 
- 	}
 
- }
 
 
  |