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;
- }
- }
|