"Bonpos", "fileprefix" => "bonpos_", "csvfilename" => "lines.csv", "fct" => "bonpos"), array("header" => "Bonpos_Ust", "fileprefix" => "bonposust_", "csvfilename" => "lines_vat.csv", "fct" => "bonposust"), array("header" => "Bonpos_Preisfindung", "fileprefix" => "bonpospreis_", "csvfilename" => "itemamounts.csv", "fct" => "bonpospreisfindung"), array("header" => "Bonkopf", "fileprefix" => "bonkopf_", "csvfilename" => "transactions.csv", "fct" => "bonkopf"), array("header" => "Bonkop_Ust", "fileprefix" => "bonkopfust_", "csvfilename" => "transactions_vat.csv", "fct" => "bonkopfust"), array("header" => "Bonkopf_AbrKreis", "fileprefix" => "bonkopfabrkreis_", "csvfilename" => "allocation_groups.csv", "fct" => "bonkopfabrkreis"), array("header" => "Bonkopf_Zahlarten", "fileprefix" => "bonkopfzahlarten_", "csvfilename" => "datapayment.csv", "fct" => "bonkopfzahlarten"), array("header" => "Bon_Referenzen", "fileprefix" => "bonrefs_", "csvfilename" => "references.csv", "fct" => "bonreferenzen"), array("header" => "TSE_Transaktionen", "fileprefix" => "tsetrans_", "csvfilename" => "transactions_tse.csv", "fct" => "tsetransactions"), array("header" => "Stamm_Abschluss", "fileprefix" => "stammabschluss_", "csvfilename" => "cashpointclosing.csv", "fct" => "stammabschluss"), array("header" => "Stamm_Orte", "fileprefix" => "stammorte_", "csvfilename" => "location.csv", "fct" => "stammorte"), array("header" => "Stamm_Kassen", "fileprefix" => "stammkassen_", "csvfilename" => "cashregister.csv", "fct" => "stammkassen"), array("header" => "Stamm_Terminals", "fileprefix" => "stammterminals_", "csvfilename" => "slaves.csv", "fct" => "stammterminals"), array("header" => "Stamm_Agenturen", "fileprefix" => "stammagenturen_", "csvfilename" => "ps.csv", "fct" => "stammagenturen"), array("header" => "Stamm_USt", "fileprefix" => "stammust_", "csvfilename" => "vat.csv", "fct" => "stammust"), array("header" => "Stamm_TSE", "fileprefix" => "stammtse_", "csvfilename" => "tse.csv", "fct" => "stammtse"), array("header" => "Z_GV_Typ", "fileprefix" => "zgvtyp_", "csvfilename" => "businesscases.csv", "fct" => "zgvtyp"), array("header" => "Z_Zahlart", "fileprefix" => "zzahlart_", "csvfilename" => "payment.csv", "fct" => "zzahlart"), array("header" => "Z_WAEHRUNGEN", "fileprefix" => "zcurrencies_", "csvfilename" => "cash_per_currency.csv", "fct" => "zwaehrungen") ); $arrayToZip = array(); if (!$dohtml) { foreach($csvtables as $aCsvtable) { $tempFileName = tempnam($tmpdir,$aCsvtable["fileprefix"]); $arrayToZip[] = array("tmpfilename" => $tempFileName,"csvfilename" => $aCsvtable["csvfilename"]); $fct = $aCsvtable["fct"]; $params = [$pdo, $tempFileName]; call_user_func_array(["Dsfinvk", $fct], $params); } $zipfile = tempnam($tmpdir,"zip"); $zip = new ZipArchive(); if ($zip->open($zipfile, ZipArchive::CREATE)!==TRUE) { exit("cannot open <$zipfile>\n"); } foreach($arrayToZip as $aCsvtable) { $zip->addFile($aCsvtable["tmpfilename"],$aCsvtable["csvfilename"]); } $zip->close(); foreach($arrayToZip as $aCsvtable) { unlink($aCsvtable["tmpfilename"]); } header('Content-Description: File Transfer'); header('Content-Type: application/zip'); header('Content-Disposition: attachment; filename="dsfinvk-export.zip"'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($zipfile)); readfile($zipfile); unlink($zipfile); } else { echo self::getPage(); //echo "

DSFinv-k Export

"; foreach($csvtables as $aCsvtable) { $fct = $aCsvtable["fct"]; $params = [$pdo, null]; $tablecontent = call_user_func_array(["Dsfinvk", $fct], $params); //echo self::getPage(); // self::getStyle() . self::getScript(); echo "

" . $aCsvtable["header"] . " (" . $aCsvtable["csvfilename"] . ")

"; //

" . $tablecontent . "
"; echo "" . $tablecontent . "
"; } echo "\n"; } } private static function combineSqlSelectQueries($cols) { $sqltxt = []; foreach($cols as $c) { $sqltxt[] = $c["select"] . " as " . $c["colname"]; } return implode(",",$sqltxt); } private static function bonpos($pdo,$fileToSave) { $paydeskid = CommonUtils::getConfigValue($pdo, 'paydeskid', 1); $ztime = "IF(C.closingdate is not null,CONCAT(DATE(C.closingdate),'T',TIME(C.closingdate)),'')"; $bonid = "CONCAT(CASE WHEN O.typerange='" . RANGE_ORDER . "' THEN 'BESTL-' WHEN O.typerange='" . RANGE_BILL . "' THEN 'BELEG-' WHEN O.typerange='" . RANGE_CLOSING . "' THEN 'SONST-' ELSE 'X' END,bonid)"; $unitSelect = "(CASE "; $unitSelect .= " WHEN unit is null OR unit='0' OR unit='1' THEN 'Stück' "; $unitSelect .= " WHEN unit='2' THEN 'kg' "; $unitSelect .= " WHEN unit='3' THEN 'gr' "; $unitSelect .= " WHEN unit='4' THEN 'mg' "; $unitSelect .= " WHEN unit='5' THEN 'l' "; $unitSelect .= " WHEN unit='6' THEN 'ml' "; $unitSelect .= " WHEN unit='7' THEN 'm' "; $unitSelect .= " ELSE 'Stück' "; $unitSelect .= "END)"; $gvtyp = "(CASE "; $gvtyp .= " WHEN unit='8' THEN 'EinzweckgutscheinKauf' "; $gvtyp .= " WHEN unit='9' THEN 'EinzweckgutscheinEinloesung' "; $gvtyp .= " ELSE 'Umsatz' "; $gvtyp .= "END)"; $colsPaidUnpaid = array( "SIGN" => array("select" => "O.signtxt","colname" => "signtxt","quote" => true,"suspect" => 1), "MARKER" => array("select" => "'paid.unpaid'","colname" => "marker","quote" => true,"suspect" => 1), "Z_KASSE_ID" => array("select" => "'$paydeskid'","colname" => "paydeskid","quote" => true), "Z_ERSTELLUNG" => array("select" => "$ztime","colname" => "closingdate","quote" => false), "Z_NR" => array("select" => "COALESCE(C.id,'')","colname" => "clsid","quote" => false), "BON_ID" => array("select" => $bonid,"colname" => "oid","quote" => false), "POS_ZEILE" => array("select" => "Q.poszeile","colname" => "position","quote" => false), "GUTSCHEIN_NR" => array("select" => "COALESCE(V.id,'')","colname" => "voucherid","quote" => false), "ARTIKELTEXT" => array("select" => "Q.productname","colname" => "productname","quote" => true), "POS_TERMINAL_ID" => array("select" => "O.terminalid","colname" => "terminalid","quote" => false), "GV_TYP" => array("select" => "$gvtyp","colname" => "gvtyp","quote" => true), "GV_NAME" => array("select" => "'Rechnungsartikel'","colname" => "gvname","quote" => true), "INHAUS" => array("select" => "CASE WHEN Q.tablenr is null THEN 0 ELSE (CASE WHEN Q.togo is null THEN 1 ELSE (1-Q.togo) END) END","colname" => "inhaus","quote" => false), "P_STORNO" => array("select" => "'0'","colname" => "pstorno","quote" => false), "AGENTUR_ID" => array("select" => "'0'","colname" => "agenturid","quote" => false), "ART_NR" => array("select" => "Q.productid","colname" => "productid","quote" => false), "GTIN" => array("select" => "''","colname" => "gtin","quote" => true), "WARENGR_ID" => array("select" => "''","colname" => "warengrid","quote" => true), "WARENGR" => array("select" => "''","colname" => "warengr","quote" => true), "MENGE" => array("select" => "ROUND(IF(B.status='s',-1,1) * Q.unitamount,3)","colname" => "unitamount","quote" => false), "FAKTOR" => array("select" => "'1.000'","colname" => "faktor","quote" => false), "EINHEIT" => array("select" => "$unitSelect","colname" => "einheit","quote" => true), "STK_BR" => array("select" => "ROUND(price / unitamount,2)","colname" => "stkbr","quote" => false) ); $sqltxt = self::createSqlSelects($colsPaidUnpaid, $fileToSave); $sql = "SELECT " . implode(",",$sqltxt) . " FROM %operations% O "; $sql .= " INNER JOIN %queue% Q ON Q.opidok = O.id "; $sql .= " LEFT JOIN %billproducts% BP ON BP.queueid=Q.id "; $sql .= " LEFT JOIN %bill% B ON BP.billid=B.id "; $sql .= " LEFT JOIN %closing% C ON B.closingid=C.id "; $sql .= " LEFT JOIN %vouchers% V ON Q.voucherid=V.id "; $sql .= " WHERE B.status is null OR B.status='x' "; $colsProdCancelled = array( "SIGN" => array("select" => "O.signtxt","colname" => "signtxt","quote" => true,"suspect" => 1), "MARKER" => array("select" => "'prodcancelled'","colname" => "marker","quote" => true,"suspect" => 1), "Z_KASSE_ID" => array("select" => "'$paydeskid'","colname" => "paydeskid","quote" => true), "Z_ERSTELLUNG" => array("select" => "$ztime","colname" => "closingdate","quote" => false), "Z_NR" => array("select" => "COALESCE(C.id,'')","colname" => "clsid","quote" => false), "BON_ID" => array("select" => $bonid,"colname" => "oid","quote" => false), "POS_ZEILE" => array("select" => "'1'","colname" => "position","quote" => false), "GUTSCHEIN_NR" => array("select" => "COALESCE(V.id,'')","colname" => "voucherid","quote" => false), "ARTIKELTEXT" => array("select" => "Q.productname","colname" => "productname","quote" => true), "POS_TERMINAL_ID" => array("select" => "O.terminalid","colname" => "terminalid","quote" => false), "GV_TYP" => array("select" => "$gvtyp","colname" => "gvtyp","quote" => true), "GV_NAME" => array("select" => "'Artikelstorno'","colname" => "gvname","quote" => true), "INHAUS" => array("select" => "CASE WHEN Q.tablenr is null THEN 0 ELSE (CASE WHEN Q.togo is null THEN 1 ELSE (1-Q.togo) END) END","colname" => "inhaus","quote" => false), "P_STORNO" => array("select" => "'0'","colname" => "pstorno","quote" => false), "AGENTUR_ID" => array("select" => "'0'","colname" => "agenturid","quote" => false), "ART_NR" => array("select" => "Q.productid","colname" => "productid","quote" => false), "GTIN" => array("select" => "''","colname" => "gtin","quote" => true), "WARENGR_ID" => array("select" => "''","colname" => "warengrid","quote" => true), "WARENGR" => array("select" => "''","colname" => "warengr","quote" => true), "MENGE" => array("select" => "ROUND(((-1) * Q.unitamount),3)","colname" => "unitamount","quote" => false), "FAKTOR" => array("select" => "'1.000'","colname" => "faktor","quote" => false), "EINHEIT" => array("select" => "$unitSelect","colname" => "einheit","quote" => true), "STK_BR" => array("select" => "ROUND(price / unitamount,2)","colname" => "stkbr","quote" => false) ); $sqltxt = self::createSqlSelects($colsProdCancelled, $fileToSave); $sql .= " UNION ALL "; $sql .= " SELECT " . implode(",",$sqltxt) . " FROM %operations% O "; $sql .= " INNER JOIN %queue% Q ON Q.opidcancel = O.id "; $sql .= " LEFT JOIN %closing% C ON Q.clsid=C.id "; $sql .= " LEFT JOIN %vouchers% V ON Q.voucherid=V.id "; $sql = "SELECT * FROM ($sql) a ORDER BY CAST(SUBSTRING_INDEX(a.oid,'-',-1) AS UNSIGNED),a.clsid"; $dataPart = self::createCsvDataPartByCursor($pdo, $sql, $colsPaidUnpaid, $fileToSave, 'bonpos'); return $dataPart; } private static function bonposust($pdo,$fileToSave) { $paydeskid = CommonUtils::getConfigValue($pdo, 'paydeskid', 1); $ztime = "IF(C.closingdate is not null,CONCAT(DATE(C.closingdate),'T',TIME(C.closingdate)),'')"; $bonid = "CONCAT(CASE WHEN O.typerange='" . RANGE_ORDER . "' THEN 'BESTL-' WHEN O.typerange='" . RANGE_BILL . "' THEN 'BELEG-' WHEN O.typerange='" . RANGE_CLOSING . "' THEN 'SONST-' ELSE 'X' END,bonid)"; $cols = array( "MARKER" => array("select" => "'paid.unpaid'","colname" => "marker","quote" => true,"suspect" => 1), "Z_KASSE_ID" => array("select" => "'$paydeskid'","colname" => "paydeskid","quote" => true), "Z_ERSTELLUNG" => array("select" => "$ztime","colname" => "closingdate","quote" => false), "Z_NR" => array("select" => "COALESCE(C.id,'')","colname" => "clsid","quote" => false), "BON_ID" => array("select" => $bonid,"colname" => "oid","quote" => false), "POS_ZEILE" => array("select" => "Q.poszeile","colname" => "position","quote" => false), "UST_SCHLUESSEL" => array("select" => "Q.taxkey","colname" => "ustid","quote" => false), "POS_BRUTTO" => array("select" => "ROUND(Q.price,5)","colname" => "brutto","quote" => false), "POS_NETTO" => array("select" => "''","colname" => "netto","quote" => false), "POS_UST" => array("select" => "''","colname" => "tax","quote" => false) ); $sqltxt = self::createSqlSelects($cols, $fileToSave); $sql = "SELECT " . implode(",",$sqltxt) . " FROM %operations% O "; $sql .= " INNER JOIN %queue% Q ON Q.opidok = O.id "; $sql .= " LEFT JOIN %billproducts% BP ON BP.queueid=Q.id "; $sql .= " LEFT JOIN %bill% B ON BP.billid=B.id "; $sql .= " LEFT JOIN %closing% C ON B.closingid=C.id "; $sql .= " WHERE B.status is null OR B.status='x' "; $cols = array( "MARKER" => array("select" => "'prodcancelled'","colname" => "marker","quote" => true,"suspect" => 1), "Z_KASSE_ID" => array("select" => "'$paydeskid'","colname" => "paydeskid","quote" => true), "Z_ERSTELLUNG" => array("select" => "$ztime","colname" => "closingdate","quote" => false), "Z_NR" => array("select" => "COALESCE(C.id,'')","colname" => "clsid","quote" => false), "BON_ID" => array("select" => $bonid,"colname" => "oid","quote" => false), "POS_ZEILE" => array("select" => "'1'","colname" => "position","quote" => false), "UST_SCHLUESSEL" => array("select" => "Q.taxkey","colname" => "ustid","quote" => false), "POS_BRUTTO" => array("select" => "ROUND(0-Q.price,5)","colname" => "brutto","quote" => false), "POS_NETTO" => array("select" => "''","colname" => "netto","quote" => false), "POS_UST" => array("select" => "''","colname" => "tax","quote" => false) ); $sqltxt = self::createSqlSelects($cols, $fileToSave); $sql .= " UNION ALL "; $sql .= " SELECT " . implode(",",$sqltxt) . " FROM %operations% O "; $sql .= " INNER JOIN %queue% Q ON Q.opidcancel = O.id "; $sql .= " LEFT JOIN %closing% C ON Q.clsid=C.id "; $sql = "SELECT * FROM ($sql) a ORDER BY CAST(SUBSTRING_INDEX(a.oid,'-',-1) AS UNSIGNED),a.clsid,a.position"; $dataPart = self::createCsvDataPartByCursor($pdo, $sql, $cols, $fileToSave, 'bonposust'); return $dataPart; } private static function bonpospreisfindung($pdo,$fileToSave) { $paydeskid = CommonUtils::getConfigValue($pdo, 'paydeskid', 1); $ztime = "IF(C.closingdate is not null,CONCAT(DATE(C.closingdate),'T',TIME(C.closingdate)),'')"; $bonid = "CONCAT(CASE WHEN O.typerange='" . RANGE_ORDER . "' THEN 'BESTL-' WHEN O.typerange='" . RANGE_BILL . "' THEN 'BELEG-' WHEN O.typerange='" . RANGE_CLOSING . "' THEN 'SONST-' ELSE 'X' END,bonid)"; $priceTypeSelect = "(CASE "; $priceTypeSelect .= " WHEN Q.pricetype is null OR Q.pricetype='0' THEN 'base_amount' "; $priceTypeSelect .= " WHEN Q.pricetype='1' THEN 'discount' "; $priceTypeSelect .= " WHEN Q.pricetype='2' THEN 'extra_amount' "; $priceTypeSelect .= " ELSE 'base_amount' "; $priceTypeSelect .= "END)"; $cols = array( "MARKER" => array("select" => "'paid.unpaid'","colname" => "marker","quote" => true,"suspect" => 1), "Z_KASSE_ID" => array("select" => "'$paydeskid'","colname" => "paydeskid","quote" => true), "Z_ERSTELLUNG" => array("select" => "$ztime","colname" => "closingdate","quote" => false), "Z_NR" => array("select" => "COALESCE(C.id,'')","colname" => "clsid","quote" => false), "BON_ID" => array("select" => $bonid,"colname" => "oid","quote" => false), "POS_ZEILE" => array("select" => "Q.poszeile","colname" => "position","quote" => false), "TYP" => array("select" => "$priceTypeSelect","colname" => "pricetype","quote" => false), "UST_SCHLUESSEL" => array("select" => "Q.taxkey","colname" => "ustid","quote" => false), "POS_BRUTTO" => array("select" => "ROUND(Q.price,5)","colname" => "brutto","quote" => false), "PF_NETTO" => array("select" => "round(price / (1.0 + Q.tax/100.0),5)","colname" => "netto","quote" => false), "PF_UST" => array("select" => "ROUND(Q.price-price / (1.0 + Q.tax/100.0),5)","colname" => "tax","quote" => false) ); $sqltxt = self::createSqlSelects($cols, $fileToSave); $sql = "SELECT " . implode(",",$sqltxt) . " FROM %operations% O "; $sql .= " INNER JOIN %queue% Q ON Q.opidok = O.id "; $sql .= " LEFT JOIN %billproducts% BP ON BP.queueid=Q.id "; $sql .= " LEFT JOIN %bill% B ON BP.billid=B.id "; $sql .= " LEFT JOIN %closing% C ON B.closingid=C.id "; $sql .= " WHERE B.status is null OR B.status='x' "; $cols = array( "MARKER" => array("select" => "'prodcancelled'","colname" => "marker","quote" => true,"suspect" => 1), "Z_KASSE_ID" => array("select" => "'$paydeskid'","colname" => "paydeskid","quote" => true), "Z_ERSTELLUNG" => array("select" => "$ztime","colname" => "closingdate","quote" => false), "Z_NR" => array("select" => "COALESCE(C.id,'')","colname" => "clsid","quote" => false), "BON_ID" => array("select" => $bonid,"colname" => "oid","quote" => false), "POS_ZEILE" => array("select" => "'1'","colname" => "position","quote" => false), "TYP" => array("select" => "$priceTypeSelect","colname" => "pricetype","quote" => false), "UST_SCHLUESSEL" => array("select" => "Q.taxkey","colname" => "ustid","quote" => false), "POS_BRUTTO" => array("select" => "ROUND(0-Q.price,5)","colname" => "brutto","quote" => false), "PF_NETTO" => array("select" => "round(price / (1.0 + Q.tax/100.0),5)","colname" => "netto","quote" => false), "PF_UST" => array("select" => "ROUND(Q.price-price / (1.0 + Q.tax/100.0),5)","colname" => "tax","quote" => false) ); $sqltxt = self::createSqlSelects($cols, $fileToSave); $sql .= " UNION ALL "; $sql .= " SELECT " . implode(",",$sqltxt) . " FROM %operations% O "; $sql .= " INNER JOIN %queue% Q ON Q.opidcancel = O.id "; $sql .= " LEFT JOIN %closing% C ON Q.clsid=C.id "; $sql = "SELECT * FROM ($sql) a ORDER BY CAST(SUBSTRING_INDEX(a.oid,'-',-1) AS UNSIGNED),a.clsid,a.position"; $dataPart = self::createCsvDataPartByCursor($pdo, $sql, $cols, $fileToSave, 'bonpospreisfindung'); return $dataPart; } private static function bonkopf($pdo,$fileToSave) { $paydeskid = CommonUtils::getConfigValue($pdo, 'paydeskid', 1); $ztime = "IF(C.closingdate is not null,CONCAT(DATE(C.closingdate),'T',TIME(C.closingdate)),'')"; $bonid = "CONCAT(CASE WHEN O.typerange='" . RANGE_ORDER . "' THEN 'BESTL-' WHEN O.typerange='" . RANGE_BILL . "' THEN 'BELEG-' WHEN O.typerange='" . RANGE_CLOSING . "' THEN 'SONST-' ELSE 'X' END,bonid)"; $minTime = "CASE WHEN Qsub.logtime='0' THEN NULL ELSE Qsub.logtime END"; $minlogTime = "(SELECT MIN($minTime) as starttime FROM %queue% Qsub,%billproducts% BPsub WHERE BPsub.billid=B.id AND BPsub.queueid=Qsub.id)"; $dsfinDateTimeFormat = "CONCAT(DATE(from_unixtime($minlogTime)),'T',TIME(from_unixtime($minlogTime)))"; $startLogTime = "COALESCE($dsfinDateTimeFormat,'')"; $bonEnde = "(IF(B.logtime is not null AND (B.logtime <> '0'),CONCAT(DATE(from_unixtime(B.logtime)),'T',TIME(from_unixtime(B.logtime))),''))"; $billuid = "CASE WHEN B.status='c' THEN CONCAT('V-',B.billuid) ELSE B.billuid END"; $cols = array( "SIGN" => array("select" => "O.signtxt","colname" => "signtxt","quote" => true,"suspect" => 1), "MARKER" => array("select" => "'bills'","colname" => "marker","quote" => true,"suspect" => 1), "Z_KASSE_ID" => array("select" => "'$paydeskid'","colname" => "paydeskid","quote" => true), "Z_ERSTELLUNG" => array("select" => "$ztime","colname" => "closingdate","quote" => false), "Z_NR" => array("select" => "COALESCE(C.id,'')","colname" => "clsid","quote" => false), "BON_ID" => array("select" => $bonid,"colname" => "oid","quote" => false), "BON_NR" => array("select" => "$billuid","colname" => "billuid","quote" => false), "BON_TYP" => array("select" => "'Beleg'","colname" => "billtype","quote" => false), "BON_NAME" => array("select" => "''","colname" => "billname","quote" => false), "TERMINAL_ID" => array("select" => "'1'","colname" => "terminalid","quote" => false), "BON_STORNO" => array("select" => "''","colname" => "billstorno","quote" => false), "BON_START" => array("select" => "$startLogTime","colname" => "billstart","quote" => false), "BON_ENDE" => array("select" => "$bonEnde","colname" => "billend","quote" => false), "BEDIENER_ID" => array("select" => "B.userid","colname" => "userid","quote" => false), "BEDIENER_NAME" => array("select" => "U.username","colname" => "username","quote" => true), "UMS_BRUTTO" => array("select" => "B.brutto","colname" => "brutto","quote" => false), "KUNDE_NAME" => array("select" => "''","colname" => "customername","quote" => true), "KUNDE_ID" => array("select" => "''","colname" => "customerid","quote" => false), "KUNDE_TYP" => array("select" => "''","colname" => "customertype","quote" => false), "KUNDE_STRASSE" => array("select" => "''","colname" => "customerstreet","quote" => true), "KUNDE_PLZ" => array("select" => "''","colname" => "customerplz","quote" => true), "KUNDE_ORT" => array("select" => "''","colname" => "customerort","quote" => true), "KUNDE_LAND" => array("select" => "''","colname" => "customerland","quote" => true), "KUNDE_USTID" => array("select" => "''","colname" => "customerustid","quote" => true), "BON_NOTIZ" => array("select" => "''","colname" => "bonnotiz","quote" => true) ); $sqltxt = self::createSqlSelects($cols, $fileToSave); $sql = " SELECT " . implode(",",$sqltxt) . " FROM %operations% O "; $sql .= " INNER JOIN %bill% B ON B.opid = O.id "; $sql .= " LEFT JOIN %user% U ON B.userid = U.id "; $sql .= " LEFT JOIN %closing% C ON B.closingid=C.id "; $sql = "SELECT * FROM ($sql) a ORDER BY CAST(SUBSTRING_INDEX(a.oid,'-',-1) AS UNSIGNED),a.clsid"; $dataPart = self::createCsvDataPartByCursor($pdo, $sql, $cols, $fileToSave, 'bonkopf'); return $dataPart; } private static function bonkopfust($pdo,$fileToSave) { $paydeskid = CommonUtils::getConfigValue($pdo, 'paydeskid', 1); $ztime = "IF(C.closingdate is not null,CONCAT(DATE(C.closingdate),'T',TIME(C.closingdate)),'')"; $bonid = "CONCAT(CASE WHEN O.typerange='" . RANGE_ORDER . "' THEN 'BESTL-' WHEN O.typerange='" . RANGE_BILL . "' THEN 'BELEG-' WHEN O.typerange='" . RANGE_CLOSING . "' THEN 'SONST-' ELSE 'X' END,bonid)"; $cols = array( "Z_KASSE_ID" => array("select" => "'$paydeskid'","colname" => "paydeskid","quote" => true), "Z_ERSTELLUNG" => array("select" => "$ztime","colname" => "closingdate","quote" => false), "Z_NR" => array("select" => "COALESCE(C.id,'')","colname" => "clsid","quote" => false), "BON_ID" => array("select" => $bonid,"colname" => "oid","quote" => false), "ARTIKEL" => array("select" => "GROUP_CONCAT(Q.productname)","colname" => "prodname","quote" => false, "suspect" => 1), "STATUS" => array("select" => "B.status","colname" => "bstatus","quote" => true, "suspect" => 1), "TAXVAL" => array("select" => "Q.tax","colname" => "taxval","quote" => false, "suspect" => 1), "UST_SCHLUESSEL" => array("select" => "taxkey","colname" => "ustid","quote" => false), "BON_BRUTTO" => array("select" => "ROUND(SUM(Q.price),2)","colname" => "billbrutto","quote" => false), "BON_NETTO" => array("select" => "ROUND(SUM(Q.price / (1.0 + Q.tax/100.0)),2)","colname" => "billnetto","quote" => false), "BON_UST" => array("select" => "ROUND(SUM(Q.price - Q.price / (1.0 + Q.tax/100.0)),2)","colname" => "billust","quote" => false) ); $sqltxt = self::createSqlSelects($cols, $fileToSave); $sql = " SELECT " . implode(",",$sqltxt) . " FROM %operations% O "; $sql .= " INNER JOIN %bill% B ON B.opid = O.id "; $sql .= " LEFT JOIN %billproducts% BP ON B.id=BP.billid "; $sql .= " INNER JOIN %queue% Q ON BP.queueid=Q.id "; $sql .= " LEFT JOIN %closing% C ON B.closingid=C.id "; $sql .= " WHERE B.status is null OR B.status <> 'c' "; $sql .= " GROUP BY Q.taxkey,O.id "; $cols = array( "Z_KASSE_ID" => array("select" => "'$paydeskid'","colname" => "paydeskid","quote" => true), "Z_ERSTELLUNG" => array("select" => "$ztime","colname" => "closingdate","quote" => false), "Z_NR" => array("select" => "COALESCE(C.id,'')","colname" => "clsid","quote" => false), "BON_ID" => array("select" => $bonid,"colname" => "oid","quote" => false), "ARTIKEL" => array("select" => "'Bareinlage'","colname" => "prodname","quote" => false, "suspect" => 1), "STATUS" => array("select" => "B.status","colname" => "bstatus","quote" => true, "suspect" => 1), "TAXVAL" => array("select" => "'0.00'","colname" => "taxval","quote" => false, "suspect" => 1), "UST_SCHLUESSEL" => array("select" => "'5'","colname" => "ustid","quote" => false), "BON_BRUTTO" => array("select" => "ROUND(B.brutto,2)","colname" => "billbrutto","quote" => false), "BON_NETTO" => array("select" => "'0.00'","colname" => "billnetto","quote" => false), "BON_UST" => array("select" => "'0.00'","colname" => "billust","quote" => false) ); $sqltxt = self::createSqlSelects($cols, $fileToSave); $sql .= " UNION ALL "; $sql .= " SELECT " . implode(",",$sqltxt) . " FROM %operations% O "; $sql .= " INNER JOIN %bill% B ON B.opid = O.id "; $sql .= " LEFT JOIN %closing% C ON B.closingid=C.id "; $sql .= " WHERE B.status is not null AND B.status = 'c' "; $sql = "SELECT * FROM ($sql) a ORDER BY CAST(SUBSTRING_INDEX(a.oid,'-',-1) AS UNSIGNED),a.clsid"; $dataPart = self::createCsvDataPartByCursor($pdo, $sql, $cols, $fileToSave, 'bonkopfust'); return $dataPart; } private static function bonkopfabrkreis($pdo,$fileToSave) { $paydeskid = CommonUtils::getConfigValue($pdo, 'paydeskid', 1); $ztime = "IF(C.closingdate is not null,CONCAT(DATE(C.closingdate),'T',TIME(C.closingdate)),'')"; $bonid = "CONCAT(CASE WHEN O.typerange='" . RANGE_ORDER . "' THEN 'BESTL-' WHEN O.typerange='" . RANGE_BILL . "' THEN 'BELEG-' WHEN O.typerange='" . RANGE_CLOSING . "' THEN 'SONST-' ELSE 'X' END,bonid)"; $cols = array( "Z_KASSE_ID" => array("select" => "'$paydeskid'","colname" => "paydeskid","quote" => true), "Z_ERSTELLUNG" => array("select" => "$ztime","colname" => "closingdate","quote" => false), "Z_NR" => array("select" => "COALESCE(C.id,'')","colname" => "clsid","quote" => false), "BON_ID" => array("select" => $bonid,"colname" => "oid","quote" => false), "ABRECHNUNGSKREIS" => array("select" => "COALESCE(R.name,CASE WHEN status='c' THEN '' ELSE 'Ausser-Haus' END)","colname" => "resttablename","quote" => true), ); $sqltxt = self::createSqlSelects($cols, $fileToSave); $sql = " SELECT " . implode(",",$sqltxt) . " FROM %operations% O "; $sql .= " INNER JOIN %bill% B ON B.opid = O.id "; $sql .= " LEFT JOIN %closing% C ON B.closingid=C.id "; $sql .= " LEFT JOIN %resttables% R ON B.tableid=R.id "; $sql = "SELECT * FROM ($sql) a ORDER BY CAST(SUBSTRING_INDEX(a.oid,'-',-1) AS UNSIGNED),a.clsid"; $dataPart = self::createCsvDataPartByCursor($pdo, $sql, $cols, $fileToSave, 'bonkopfabrkreis'); return $dataPart; } private static function bonkopfzahlarten($pdo,$fileToSave) { $paydeskid = CommonUtils::getConfigValue($pdo, 'paydeskid', 1); $ztime = "IF(C.closingdate is not null,CONCAT(DATE(C.closingdate),'T',TIME(C.closingdate)),'')"; $bonid = "CONCAT(CASE WHEN O.typerange='" . RANGE_ORDER . "' THEN 'BESTL-' WHEN O.typerange='" . RANGE_BILL . "' THEN 'BELEG-' WHEN O.typerange='" . RANGE_CLOSING . "' THEN 'SONST-' ELSE 'X' END,bonid)"; $paymenttype = "(CASE "; $paymenttype .= " WHEN paymentid is null OR paymentid='1' THEN 'Bar' "; $paymenttype .= " WHEN paymentid='2' THEN 'ECKarte' "; $paymenttype .= " WHEN paymentid='3' THEN 'Kreditkarte' "; $paymenttype .= " ELSE 'Unbar' "; $paymenttype .= "END)"; $cols = array( "Z_KASSE_ID" => array("select" => "'$paydeskid'","colname" => "paydeskid","quote" => true), "Z_ERSTELLUNG" => array("select" => "$ztime","colname" => "closingdate","quote" => false), "Z_NR" => array("select" => "COALESCE(C.id,'')","colname" => "clsid","quote" => false), "BON_ID" => array("select" => $bonid,"colname" => "oid","quote" => false), "ZAHLART_TYP" => array("select" => "$paymenttype","colname" => "paymenttype","quote" => true), "ZAHLART_NAME" => array("select" => "PA.name","colname" => "paymentname","quote" => true), "ZAHLWAEH_CODE" => array("select" => "''","colname" => "curcode","quote" => true), "ZAHLWAEH_BETRAG" => array("select" => "''","colname" => "zaehbetrag","quote" => false), "BASISWAEH_BETRAG" => array("select" => "B.brutto","colname" => "basvalue","quote" => false) ); $sqltxt = self::createSqlSelects($cols, $fileToSave); $sql = " SELECT " . implode(",",$sqltxt) . " FROM %operations% O "; $sql .= " INNER JOIN %bill% B ON B.opid = O.id "; $sql .= " INNER JOIN %payment% PA ON PA.id=B.paymentid "; $sql .= " LEFT JOIN %closing% C ON B.closingid=C.id "; $sql .= " LEFT JOIN %resttables% R ON B.tableid=R.id "; $sql = "SELECT * FROM ($sql) a ORDER BY CAST(SUBSTRING_INDEX(a.oid,'-',-1) AS UNSIGNED),a.clsid"; $dataPart = self::createCsvDataPartByCursor($pdo, $sql, $cols, $fileToSave, 'bonkopfzahlarten'); return $dataPart; } private static function bonreferenzen($pdo,$fileToSave) { $paydeskid = CommonUtils::getConfigValue($pdo, 'paydeskid', 1); $ztime = "IF(C.closingdate is not null,CONCAT(DATE(C.closingdate),'T',TIME(C.closingdate)),'')"; $bonid = "CONCAT(CASE WHEN O.typerange='" . RANGE_ORDER . "' THEN 'BESTL-' WHEN O.typerange='" . RANGE_BILL . "' THEN 'BELEG-' WHEN O.typerange='" . RANGE_CLOSING . "' THEN 'SONST-' ELSE 'X' END,O.bonid)"; $refTimeFilter = "CASE WHEN OREF.logtime='0' THEN NULL ELSE OREF.logtime END"; $reftime = "CONCAT(DATE(from_unixtime($refTimeFilter)),'T',TIME(from_unixtime($refTimeFilter)))"; $refbonid = "CONCAT(CASE WHEN OREF.typerange='" . RANGE_ORDER . "' THEN 'BESTL-' WHEN OREF.typerange='" . RANGE_BILL . "' THEN 'BELEG-' ELSE 'X' END,OREF.bonid)"; $unitSelect = "(CASE "; $unitSelect .= " WHEN unit is null OR unit='0' OR unit='1' THEN 'Stück' "; $unitSelect .= " WHEN unit='2' THEN 'kg' "; $unitSelect .= " WHEN unit='3' THEN 'gr' "; $unitSelect .= " WHEN unit='4' THEN 'mg' "; $unitSelect .= " WHEN unit='5' THEN 'l' "; $unitSelect .= " WHEN unit='6' THEN 'ml' "; $unitSelect .= " WHEN unit='7' THEN 'm' "; $unitSelect .= " ELSE 'Stück' "; $unitSelect .= "END)"; $colsPaidUnpaid = array( "SIGN" => array("select" => "O.signtxt","colname" => "signtxt","quote" => true,"suspect" => 1), "MARKER" => array("select" => "'paid.unpaid'","colname" => "marker","quote" => true,"suspect" => 1), "Z_KASSE_ID" => array("select" => "'$paydeskid'","colname" => "paydeskid","quote" => true), "Z_ERSTELLUNG" => array("select" => "$ztime","colname" => "closingdate","quote" => false), "Z_NR" => array("select" => "COALESCE(C.id,'')","colname" => "clsid","quote" => false), "BON_ID" => array("select" => $bonid,"colname" => "oid","quote" => false), "POS_ZEILE" => array("select" => "Q.poszeile","colname" => "position","quote" => false), "REF_TYP" => array("select" => "'Transaktion'","colname" => "reftyp","quote" => true), "REF_NAME" => array("select" => "''","colname" => "refname","quote" => true), "REF_DATUM" => array("select" => "$reftime","colname" => "refdatum","quote" => false), "REF_Z_KASSE_ID" => array("select" => "'$paydeskid'","colname" => "refzkasseid","quote" => true), "REF_Z_NR" => array("select" => "COALESCE(C.id,'')","colname" => "refznr","quote" => false), "REF_BON_ID" => array("select" => $refbonid,"colname" => "refbonid","quote" => false) ); $sqltxt = self::createSqlSelects($colsPaidUnpaid, $fileToSave); $sql = "SELECT " . implode(",",$sqltxt) . " FROM %operations% O "; $sql .= " INNER JOIN %queue% Q ON Q.opidok = O.id "; $sql .= " LEFT JOIN %billproducts% BP ON BP.queueid=Q.id "; $sql .= " LEFT JOIN %bill% B ON BP.billid=B.id "; $sql .= " LEFT JOIN %closing% C ON B.closingid=C.id "; $sql .= " LEFT JOIN %operations% OREF ON B.opid=OREF.id "; $sql .= " WHERE B.status is null OR B.status='x' "; $sql = "SELECT * FROM ($sql) a ORDER BY CAST(SUBSTRING_INDEX(a.oid,'-',-1) AS UNSIGNED),a.clsid"; $dataPart = self::createCsvDataPartByCursor($pdo, $sql, $colsPaidUnpaid, $fileToSave, 'bonreferences'); return $dataPart; } private static function tsetransactions($pdo,$fileToSave) { $bonid = "CONCAT(CASE WHEN O.typerange='" . RANGE_ORDER . "' THEN 'BESTL-' WHEN O.typerange='" . RANGE_BILL . "' THEN 'BELEG-' WHEN O.typerange='" . RANGE_CLOSING . "' THEN 'SONST-' ELSE 'X' END,bonid)"; $paydeskid = CommonUtils::getConfigValue($pdo, 'paydeskid', 1); $ztime = "IF(C.closingdate is not null,CONCAT(DATE(C.closingdate),'T',TIME(C.closingdate)),'')"; $logTimeFilter = "CASE WHEN O.logtime='0' THEN NULL ELSE O.logtime END"; $taLogTime = "CONCAT(DATE(from_unixtime($logTimeFilter)),'T',TIME(from_unixtime($logTimeFilter)))"; $billvorgang = "(CASE WHEN B.status is null OR status='x' THEN 'Kassenbon' WHEN B.status='s' THEN 'Bonstorno' WHEN B.status='c' THEN 'Barein-/auslage' ELSE '' END)"; $belegtype = DbUtils::$PROCESSTYPE_BELEG; $vorgangtype = DbUtils::$PROCESSTYPE_VORGANG; $sonstigtype = DbUtils::$PROCESSTYPE_SONSTIGER_VORGANG; $processType = "(CASE "; $processType .= " WHEN O.processtype='$belegtype' THEN 'Kassenbeleg-V1' "; $processType .= " WHEN O.processtype='$vorgangtype' THEN 'Bestellung-V1' "; $processType .= " WHEN O.processtype='$sonstigtype' THEN 'SonstigerVorgang' "; $processType .= " ELSE 'Kassenbeleg-V1' "; $processType .= "END)"; $noTse = DbUtils::$NO_TSE; $tseOk = DbUtils::$TSE_OK; $tseKnownError = DbUtils::$TSE_KNOWN_ERROR; $tseRuntimeError = DbUtils::$TSE_RUNTIME_ERROR; $tseMisconfig = DbUtils::$TSE_MISCONFIG; $tseerror = "(CASE WHEN O.tseerror is null OR O.tseerror='$tseOk' THEN '' "; $tseerror .= " WHEN O.tseerror='$noTse' THEN 'Keine TSE angeschlossen' "; $tseerror .= " WHEN O.tseerror='$tseKnownError' THEN 'Bekannter TSE-Fehler' "; $tseerror .= " WHEN O.tseerror='$tseRuntimeError' THEN 'Unbekannter TSE-Fehler' "; $tseerror .= " WHEN O.tseerror='$tseMisconfig' THEN 'TSE falsch konfiguriert' "; $tseerror .= " WHEN O.tseerror='$noTse' THEN 'keine TSE' WHEN O.tseerror='$tseKnownError' THEN 'TSE-Fehler' "; $tseerror .= " ELSE '' END)"; $sql = "SELECT * FROM ("; $colsBills = array( "MARKER" => array("select" => "'bills'","colname" => "marker","quote" => true,"suspect" => 1), "Z_KASSE_ID" => array("select" => "'$paydeskid'","colname" => "paydeskid","quote" => true), "Z_ERSTELLUNG" => array("select" => "$ztime","colname" => "closingdate","quote" => false), "Z_NR" => array("select" => "COALESCE(C.id,'')","colname" => "clsid","quote" => false), "BON_ID" => array("select" => $bonid,"colname" => "opid","quote" => false), "TSE_TANR" => array("select" => "O.trans","colname" => "trans","quote" => false), "TSE_TA_START" => array("select" => "$taLogTime","colname" => "tastart","quote" => false), "TSE_TA_ENDE" => array("select" => "$taLogTime","colname" => "taende","quote" => false), "TSE_TA_VORGANGSART" => array("select" => "$processType","colname" => "vorgangsart","quote" => true), "TSE_TA_SIGZ" => array("select" => "O.sigcounter","colname" => "sigcounter","quote" => false), "TSE_TA_SIG" => array("select" => "O.tsesignature","colname" => "tsesignature","quote" => false), "TSE_TA_VORGANGSDATEN" => array("select" => "$billvorgang","colname" => "vorgang","quote" => true), "TSE_TA_FEHLER" => array("select" => "$tseerror","colname" => "tseerror","quote" => true) ); $billTableStore = DbUtils::$OPERATION_IN_BILL_TABLE; $sqlBilltxt = self::createSqlSelects($colsBills, $fileToSave); $sql .= "SELECT " . implode(",",$sqlBilltxt) . " from %operations% O "; $sql .= " LEFT JOIN %bill% B ON B.opid=O.id "; $sql .= " LEFT JOIN %closing% C ON B.closingid=C.id "; $sql .= " WHERE O.handledintable='$billTableStore' AND O.tseerror <> $noTse "; $colsClosings = array( "MARKER" => array("select" => "'closings'","colname" => "marker","quote" => true,"suspect" => 1), "Z_KASSE_ID" => array("select" => "'$paydeskid'","colname" => "paydeskid","quote" => true), "Z_ERSTELLUNG" => array("select" => "$ztime","colname" => "closingdate","quote" => false), "Z_NR" => array("select" => "COALESCE(C.id,'')","colname" => "clsid","quote" => false), "BON_ID" => array("select" => $bonid,"colname" => "opid","quote" => false), "TSE_TANR" => array("select" => "O.trans","colname" => "trans","quote" => false), "TSE_TA_START" => array("select" => "$taLogTime","colname" => "tastart","quote" => false), "TSE_TA_ENDE" => array("select" => "$taLogTime","colname" => "taende","quote" => false), "TSE_TA_VORGANGSART" => array("select" => "$processType","colname" => "vorgangsart","quote" => true), "TSE_TA_SIGZ" => array("select" => "O.sigcounter","colname" => "sigcounter","quote" => false), "TSE_TA_SIG" => array("select" => "O.tsesignature","colname" => "tsesignature","quote" => false), "TSE_TA_VORGANGSDATEN" => array("select" => "'Kassenabschluss'","colname" => "vorgang","quote" => true), "TSE_TA_FEHLER" => array("select" => "$tseerror","colname" => "tseerror","quote" => true) ); $closingTableStore = DbUtils::$OPERATION_IN_CLOSING_TABLE; $sqlClosingtxt = self::createSqlSelects($colsClosings, $fileToSave); $sql .= " UNION ALL "; $sql .= "SELECT " . implode(",",$sqlClosingtxt) . " from %operations% O "; $sql .= " INNER JOIN %closing% C ON O.id=C.opid "; $sql .= " WHERE O.handledintable='$closingTableStore' AND O.tseerror <> $noTse "; $queueVorgang = "IF(Q.toremove='0',CONCAT('Bestellung: ',Q.productname),CONCAT('Bestellstorno: ',Q.productname))"; $colsQueue = array( "MARKER" => array("select" => "'queue'","colname" => "marker","quote" => true,"suspect" => 1), "Z_KASSE_ID" => array("select" => "'$paydeskid'","colname" => "paydeskid","quote" => true), "Z_ERSTELLUNG" => array("select" => "$ztime","colname" => "closingdate","quote" => false), "Z_NR" => array("select" => "COALESCE(C.id,'')","colname" => "clsid","quote" => false), "BON_ID" => array("select" => "$bonid","colname" => "opid","quote" => false), "TSE_TANR" => array("select" => "O.trans","colname" => "trans","quote" => false), "TSE_TA_START" => array("select" => "$taLogTime","colname" => "tastart","quote" => true), "TSE_TA_ENDE" => array("select" => "$taLogTime","colname" => "taende","quote" => true), "TSE_TA_VORGANGSART" => array("select" => "$processType","colname" => "vorgangsart","quote" => true), "TSE_TA_SIGZ" => array("select" => "O.sigcounter","colname" => "sigcounter","quote" => false), "TSE_TA_SIG" => array("select" => "O.tsesignature","colname" => "tsesignature","quote" => false), "TSE_TA_VORGANGSDATEN" => array("select" => "$queueVorgang","colname" => "vorgang","quote" => true), "TSE_TA_FEHLER" => array("select" => "$tseerror","colname" => "tseerror","quote" => true) ); $queueTableStore = DbUtils::$OPERATION_IN_QUEUE_TABLE; $sqlQueuetxt = self::createSqlSelects($colsQueue, $fileToSave); $sql .= " UNION ALL "; $sql .= "SELECT " . implode(",",$sqlQueuetxt) . " from %operations% O "; $sql .= " INNER JOIN %queue% Q ON Q.opidok=O.id "; $sql .= " LEFT JOIN %billproducts% BP ON BP.queueid=Q.id "; $sql .= " INNER JOIN %bill% B ON BP.billid=B.id "; $sql .= " LEFT JOIN %closing% C ON B.closingid=C.id "; $sql .= " WHERE O.handledintable='$queueTableStore' AND O.tseerror <> $noTse "; $sql .= " AND Q.toremove='0' "; $sql .= " UNION "; $sql .= "SELECT " . implode(",",$sqlQueuetxt) . " from %operations% O "; $sql .= " INNER JOIN %queue% Q ON Q.opidcancel=O.id "; $sql .= " LEFT JOIN %billproducts% BP ON BP.queueid=Q.id "; $sql .= " INNER JOIN %bill% B ON BP.billid=B.id "; $sql .= " LEFT JOIN %closing% C ON B.closingid=C.id "; $sql .= " WHERE O.handledintable='$queueTableStore' AND O.tseerror <> $noTse "; $sql .= " AND Q.toremove='1' "; $sql .= " ) AS i "; $sql .= " ORDER BY SUBSTRING_INDEX(i.opid,'-',1),CAST(SUBSTRING_INDEX(i.opid,'-',-1) AS UNSIGNED)"; $dataPart = self::createCsvDataPartByCursor($pdo, $sql, $colsBills, $fileToSave, 'tsetransactions'); return $dataPart; } private static function stammabschluss($pdo,$fileToSave) { $paydeskid = CommonUtils::getConfigValue($pdo, 'paydeskid', 1); $ztime = "IF(C.closingdate is not null,CONCAT(DATE(C.closingdate),'T',TIME(C.closingdate)),'')"; $zstartid = "(SELECT MIN(O.bonid) from %operations% O INNER JOIN %bill% B ON B.opid=O.id WHERE B.closingid=C.id)"; $zendid = "(SELECT MAX(O.bonid) from %operations% O INNER JOIN %bill% B ON B.opid=O.id WHERE B.closingid=C.id)"; $billsum = "ROUND(SUM(B.brutto),2)"; $billcashsum = "ROUND(SUM(CASE WHEN B.paymentid='1' THEN B.brutto ELSE '0.00' END),2)"; $cols = array( "Z_KASSE_ID" => array("select" => "'$paydeskid'","colname" => "paydeskid","quote" => true), "Z_ERSTELLUNG" => array("select" => "$ztime","colname" => "zerstellung","quote" => false), "Z_NR" => array("select" => "COALESCE(C.id,'')","colname" => "clsid","quote" => false), "Z_BUCHUNGSTAG" => array("select" => "DATE(C.closingdate)","colname" => "buchungstag","quote" => false), "TAXONOMIE_VERSION" => array("select" => "COALESCE(C.dsfinvkversion,'')","colname" => "dsfinvkversion","quote" => false), "Z_START_ID" => array("select" => "$zstartid","colname" => "zstartid","quote" => false), "Z_ENDE_ID" => array("select" => "$zendid","colname" => "zendid","quote" => false), "NAME" => array("select" => "C.dsfinvk_name","colname" => "name","quote" => true), "STRASSE" => array("select" => "C.dsfinvk_street","colname" => "street","quote" => true), "PLZ" => array("select" => "C.dsfinvk_postalcode","colname" => "plz","quote" => true), "ORT" => array("select" => "C.dsfinvk_city","colname" => "city","quote" => true), "LAND" => array("select" => "C.dsfinvk_country","colname" => "country","quote" => true), "STRN" => array("select" => "C.dsfinvk_stnr","colname" => "strn","quote" => true), "USTID" => array("select" => "C.dsfinvk_ustid","colname" => "ustid","quote" => true), "Z_SE_ZAHLUNGEN" => array("select" => "$billsum","colname" => "billsum","quote" => false), "Z_SE_BARZAHLUNGEN" => array("select" => "$billcashsum","colname" => "billcashsum","quote" => false) ); $sqltxt = self::createSqlSelects($cols, $fileToSave); $sql = "SELECT " . implode(",",$sqltxt) . " FROM %closing% C"; $sql .= " LEFT JOIN %bill% B ON B.closingid=C.id "; $sql .= " GROUP BY C.id "; $sql .= " ORDER BY clsid"; $dataPart = self::createCsvDataPartByCursor($pdo, $sql, $cols, $fileToSave, 'stammabschluss'); return $dataPart; } private static function stammorte($pdo,$fileToSave) { $paydeskid = CommonUtils::getConfigValue($pdo, 'paydeskid', 1); $ztime = "IF(C.closingdate is not null,CONCAT(DATE(C.closingdate),'T',TIME(C.closingdate)),'')"; $cols = array( "Z_KASSE_ID" => array("select" => "'$paydeskid'","colname" => "paydeskid","quote" => true), "Z_ERSTELLUNG" => array("select" => "$ztime","colname" => "zerstellung","quote" => false), "Z_NR" => array("select" => "COALESCE(C.id,'')","colname" => "clsid","quote" => false), "LOC_NAME" => array("select" => "C.dsfinvk_name","colname" => "name","quote" => true), "LOC_STRASSE" => array("select" => "C.dsfinvk_street","colname" => "street","quote" => true), "LOC_PLZ" => array("select" => "C.dsfinvk_postalcode","colname" => "plz","quote" => true), "LOC_ORT" => array("select" => "C.dsfinvk_city","colname" => "city","quote" => true), "LOC_LAND" => array("select" => "C.dsfinvk_country","colname" => "country","quote" => true), "LOC_USTID" => array("select" => "C.dsfinvk_ustid","colname" => "ustid","quote" => true) ); $sqltxt = self::createSqlSelects($cols, $fileToSave); $sql = "SELECT " . implode(",",$sqltxt) . " FROM %closing% C"; $sql .= " LEFT JOIN %bill% B ON B.closingid=C.id "; $sql .= " GROUP BY C.id "; $sql .= " ORDER BY clsid"; $dataPart = self::createCsvDataPartByCursor($pdo, $sql, $cols, $fileToSave, 'stammorte'); return $dataPart; } private static function stammkassen($pdo,$fileToSave) { $paydeskid = CommonUtils::getConfigValue($pdo, 'paydeskid', 1); $ztime = "IF(C.closingdate is not null,CONCAT(DATE(C.closingdate),'T',TIME(C.closingdate)),'')"; $sn = CommonUtils::getConfigValue($pdo, 'sn', ''); $currency = CommonUtils::getCurrencyAsIsoVal($pdo); $cols = array( "Z_KASSE_ID" => array("select" => "'$paydeskid'","colname" => "paydeskid","quote" => true), "Z_ERSTELLUNG" => array("select" => "$ztime","colname" => "zerstellung","quote" => false), "Z_NR" => array("select" => "COALESCE(C.id,'')","colname" => "clsid","quote" => false), "KASSE_BRAND" => array("select" => "'OrderSprinter'","colname" => "brand","quote" => true), "KASSE_MODELL" => array("select" => "'OrderSprinter'","colname" => "modell","quote" => true), "KASSE_SERIENNR" => array("select" => "'$sn'","colname" => "sn","quote" => true), "KASSE_SW_BRAND" => array("select" => "'OrderSprinter'","colname" => "swbrand","quote" => true), "KASSE_SW_VERSION" => array("select" => "C.version","colname" => "swversion","quote" => true), "KASSE_BASISWAEH_CODE" => array("select" => "'$currency'","colname" => "basiswae","quote" => false), "KEINE_UST_ZUORDNUNG" => array("select" => "''","colname" => "ustassign","quote" => false) ); $sqltxt = self::createSqlSelects($cols, $fileToSave); $sql = "SELECT " . implode(",",$sqltxt) . " FROM %closing% C"; $dataPart = self::createCsvDataPartByCursor($pdo, $sql, $cols, $fileToSave, 'stammkassen'); return $dataPart; } private static function stammterminals($pdo,$fileToSave) { $paydeskid = CommonUtils::getConfigValue($pdo, 'paydeskid', 1); $ztime = "IF(C.closingdate is not null,CONCAT(DATE(C.closingdate),'T',TIME(C.closingdate)),'')"; $cols = array( "Z_KASSE_ID" => array("select" => "'$paydeskid'","colname" => "paydeskid","quote" => true), "Z_ERSTELLUNG" => array("select" => "$ztime","colname" => "zerstellung","quote" => false), "Z_NR" => array("select" => "COALESCE(C.id,'')","colname" => "clsid","quote" => false), "TERMINAL_ID" => array("select" => "COALESCE(C.terminalid,'')","colname" => "terminalid","quote" => false), "TERMINAL_BRAND" => array("select" => "'Browser'","colname" => "terminalbrand","quote" => true), "TERMINAL_MODELL" => array("select" => "CONCAT(T.browser,'-',T.platform)","colname" => "terminalmodell","quote" => true), "TERMINAL_SERIENNR" => array("select" => "T.useragent","colname" => "terminalsn","quote" => true), "TERMINAL_SW_BRAND" => array("select" => "''","colname" => "terminalswbrand","quote" => true), "TERMINAL_SW_VERSION" => array("select" => "T.version","colname" => "terminalswversion","quote" => true) ); $sqltxt = self::createSqlSelects($cols, $fileToSave); $sql = "SELECT " . implode(",",$sqltxt) . " FROM %closing% C"; $sql .= " LEFT JOIN %terminals% T ON C.terminalid=T.id "; $sql .= " ORDER BY T.id "; $dataPart = self::createCsvDataPartByCursor($pdo, $sql, $cols, $fileToSave, 'stammterminals'); return $dataPart; } private static function stammagenturen($pdo,$fileToSave) { $paydeskid = CommonUtils::getConfigValue($pdo, 'paydeskid', 1); $ztime = "IF(C.closingdate is not null,CONCAT(DATE(C.closingdate),'T',TIME(C.closingdate)),'')"; $cols = array( "Z_KASSE_ID" => array("select" => "'$paydeskid'","colname" => "paydeskid","quote" => true), "Z_ERSTELLUNG" => array("select" => "$ztime","colname" => "zerstellung","quote" => false), "Z_NR" => array("select" => "COALESCE(C.id,'')","colname" => "clsid","quote" => false), "AGENTUR_ID" => array("select" => "''","colname" => "agenturid","quote" => false), "AGENTUR_NAME" => array("select" => "''","colname" => "agenturname","quote" => true), "AGENTUR_STRASSE" => array("select" => "''","colname" => "agenturstreet","quote" => true), "AGENTUR_PLZ" => array("select" => "''","colname" => "agenturplz","quote" => true), "AGENTUR_ORT" => array("select" => "''","colname" => "agenturcity","quote" => true), "AGENTUR_LAND" => array("select" => "''","colname" => "agenturciuntry","quote" => true), "AGENTUR_STNR" => array("select" => "''","colname" => "agenturstnr","quote" => true), "AGENTUR_USTID" => array("select" => "''","colname" => "agenturustid","quote" => true) ); $sqltxt = self::createSqlSelects($cols, $fileToSave); $sql = "SELECT " . implode(",",$sqltxt) . " FROM %closing% C"; $sql .= " LEFT JOIN %terminals% T ON C.terminalid=T.id "; $sql .= " ORDER BY T.id,clsid "; $dataPart = self::createCsvDataPartByCursor($pdo, $sql, $cols, $fileToSave, 'stammagenturen'); return $dataPart; } private static function _stammust_helper_getTaxPart($pdo,$taxkey,$fileToSave,$paydeskid,$ztime) { $taxVal = CommonUtils::getTaxFromKey($pdo, $taxkey); $taxDesc = CommonUtils::getTaxDescriptionFromKey($pdo, $taxkey); $colsTaxSet5 = array( "Z_KASSE_ID" => array("select" => "'$paydeskid'","colname" => "paydeskid","quote" => true), "Z_ERSTELLUNG" => array("select" => "$ztime","colname" => "zerstellung","quote" => false), "Z_NR" => array("select" => "COALESCE(C.id,'')","colname" => "clsid","quote" => false), "UST_SCHLUESSEL" => array("select" => "'$taxkey'","colname" => "akey","quote" => false), "UST_SATZ" => array("select" => "ROUND('$taxVal',2)","colname" => "avalue","quote" => false), "UST_BESCHR" => array("select" => "'$taxDesc'","colname" => "aname","quote" => false), ); return "SELECT " . implode(',',self::createSqlSelects($colsTaxSet5, $fileToSave)) . " FROM %closing% C "; } private static function stammust($pdo,$fileToSave) { $paydeskid = CommonUtils::getConfigValue($pdo, 'paydeskid', 1); $ztime = "IF(C.closingdate is not null,CONCAT(DATE(C.closingdate),'T',TIME(C.closingdate)),'')"; $taxKey1Descr = CommonUtils::getTaxDescriptionFromKey($pdo, 1); $taxKey2Descr = CommonUtils::getTaxDescriptionFromKey($pdo, 2); $colsTaxSet1 = array( "Z_KASSE_ID" => array("select" => "'$paydeskid'","colname" => "paydeskid","quote" => true), "Z_ERSTELLUNG" => array("select" => "$ztime","colname" => "zerstellung","quote" => false), "Z_NR" => array("select" => "COALESCE(C.id,'')","colname" => "clsid","quote" => false), "UST_SCHLUESSEL" => array("select" => "'1'","colname" => "akey","quote" => false), "UST_SATZ" => array("select" => "ROUND(C.taxset1,2)","colname" => "avalue","quote" => false), "UST_BESCHR" => array("select" => "'$taxKey1Descr'","colname" => "aname","quote" => false), ); $sqlParts1 = "SELECT " . implode(',',self::createSqlSelects($colsTaxSet1, $fileToSave)) . " FROM %closing% C "; $colsTaxSet2 = array( "Z_KASSE_ID" => array("select" => "'$paydeskid'","colname" => "paydeskid","quote" => true), "Z_ERSTELLUNG" => array("select" => "$ztime","colname" => "zerstellung","quote" => false), "Z_NR" => array("select" => "COALESCE(C.id,'')","colname" => "clsid","quote" => false), "UST_SCHLUESSEL" => array("select" => "'2'","colname" => "akey","quote" => false), "UST_SATZ" => array("select" => "ROUND(C.taxset2,2)","colname" => "avalue","quote" => false), "UST_BESCHR" => array("select" => "'$taxKey2Descr'","colname" => "aname","quote" => false), ); $sqlParts2 = "SELECT " . implode(',',self::createSqlSelects($colsTaxSet2, $fileToSave)) . " FROM %closing% C "; $sqlParts5 = self::_stammust_helper_getTaxPart($pdo, 5, $fileToSave, $paydeskid, $ztime); $sqlParts11 = self::_stammust_helper_getTaxPart($pdo, 11, $fileToSave, $paydeskid, $ztime); $sqlParts12 = self::_stammust_helper_getTaxPart($pdo, 12, $fileToSave, $paydeskid, $ztime); $sqlParts21 = self::_stammust_helper_getTaxPart($pdo, 21, $fileToSave, $paydeskid, $ztime); $sqlParts22 = self::_stammust_helper_getTaxPart($pdo, 22, $fileToSave, $paydeskid, $ztime); $ustkeys = implode(" UNION ALL ",array($sqlParts1,$sqlParts2,$sqlParts5,$sqlParts11,$sqlParts12,$sqlParts21,$sqlParts22)); $sql = "SELECT * FROM ("; $sql .= $ustkeys; $sql .= " ) AS i "; $sql .= " ORDER BY (CAST(i.clsid AS UNSIGNED)),(CAST(i.akey AS UNSIGNED))"; $dataPart = self::createCsvDataPartByCursor($pdo, $sql, $colsTaxSet1, $fileToSave, 'stammust'); return $dataPart; } private static function stammtse($pdo,$fileToSave) { $paydeskid = CommonUtils::getConfigValue($pdo, 'paydeskid', 1); $ztime = "IF(C.closingdate is not null,CONCAT(DATE(C.closingdate),'T',TIME(C.closingdate)),'')"; $sigalg = "(SELECT textvalue as sigalg FROM %tsevalues% TSE WHERE TSE.id=O.sigalg)"; $serialno = "(SELECT textvalue as serialno FROM %tsevalues% TSE WHERE TSE.id=O.serialno)"; $pubkey = "(SELECT textvalue as publickey FROM %tsevalues% TSE WHERE TSE.id=O.pubkey)"; $certificate1 = "(SELECT SUBSTRING(textvalue,1,1000) as certificate FROM %tsevalues% TSE WHERE TSE.id=O.certificate)"; $certificate2 = "(SELECT SUBSTRING(textvalue,1001) as certificate FROM %tsevalues% TSE WHERE TSE.id=O.certificate)"; $cols = array( "Z_KASSE_ID" => array("select" => "'$paydeskid'","colname" => "paydeskid","quote" => true), "Z_ERSTELLUNG" => array("select" => "$ztime","colname" => "zerstellung","quote" => false), "Z_NR" => array("select" => "COALESCE(C.id,'')","colname" => "clsid","quote" => false), "TSE_ID" => array("select" => "'1'","colname" => "tseid","quote" => false), "TSE_SERIAL" => array("select" => "$serialno","colname" => "tseseial","quote" => true, "suspect" => 1), "TSE_SIG_ALGO" => array("select" => "$sigalg","colname" => "sigalgo","quote" => true), "TSE_ZEITFORMAT" => array("select" => "'unixTime'","colname" => "tsezeitformat","quote" => true, "suspect" => 1), "TSE_PD_ENCODING" => array("select" => "'UTF-8'","colname" => "encoding","quote" => true), "TSE_PUBLIC_KEY" => array("select" => $pubkey,"colname" => "pubkey","quote" => true), "TSE_ZERTIFIKAT_I" => array("select" => $certificate1,"colname" => "cert1","quote" => true), "TSE_ZERTIFIKAT_II" => array("select" => $certificate2,"colname" => "cert2","quote" => true) ); $sqltxt = self::createSqlSelects($cols, $fileToSave); $sql = "SELECT " . implode(",",$sqltxt) . " FROM %closing% C "; $sql .= " LEFT JOIN %operations% O ON O.id=C.opid "; $sql .= " ORDER BY clsid"; $dataPart = self::createCsvDataPartByCursor($pdo, $sql, $cols, $fileToSave, 'stammtse'); return $dataPart; } private static function _zgvtyp_helper_getonlycols() { $cols = array( "Z_KASSE_ID" => array("select" => "''","colname" => "paydeskid","quote" => true), "Z_ERSTELLUNG" => array("select" => "''","colname" => "zerstellung","quote" => false), "Z_NR" => array("select" => "COALESCE(C.id,'')","colname" => "clsid","quote" => false), "GV_TYP" => array("select" => "''","colname" => "gvtyp","quote" => true), "GV_NAME" => array("select" => "''","colname" => "gvname","quote" => true), "AGENTUR_ID" => array("select" => "'0'","colname" => "agenturid","quote" => true), "UST_SCHLUESSEL" => array("select" => "'5'","colname" => "ustkey","quote" => false), "Z_UMS_BRUTTO" => array("select" => "ROUND(SUM(B.brutto),5)","colname" => "brutto","quote" => false), "Z_UMS_NETTO" => array("select" => "ROUND(SUM(B.brutto),5)","colname" => "netto","quote" => false), "Z_UST" => array("select" => "ROUND('0.00',5)","colname" => "zust","quote" => false) ); return $cols; } private static function _zgvtyp_helper_billsSums($fileToSave,$paydeskid,$ztime,$gvtyp) { $gvtypelabel = $gvtyp['label']; $cashtype = $gvtyp['cashtype']; $cols = array( "Z_KASSE_ID" => array("select" => "'$paydeskid'","colname" => "paydeskid","quote" => true), "Z_ERSTELLUNG" => array("select" => "$ztime","colname" => "zerstellung","quote" => false), "Z_NR" => array("select" => "COALESCE(C.id,'')","colname" => "clsid","quote" => false), "GV_TYP" => array("select" => "'$gvtypelabel'","colname" => "gvtyp","quote" => true), "GV_NAME" => array("select" => "''","colname" => "gvname","quote" => true), "AGENTUR_ID" => array("select" => "'0'","colname" => "agenturid","quote" => true), "UST_SCHLUESSEL" => array("select" => "'5'","colname" => "ustkey","quote" => false), "Z_UMS_BRUTTO" => array("select" => "ROUND(SUM(B.brutto),5)","colname" => "brutto","quote" => false), "Z_UMS_NETTO" => array("select" => "ROUND(SUM(B.brutto),5)","colname" => "netto","quote" => false), "Z_UST" => array("select" => "'0.00000'","colname" => "zust","quote" => false) ); $sqltxt = self::createSqlSelects($cols, $fileToSave); $sql = "SELECT " . implode(",",$sqltxt) . " FROM %closing% C "; $sql .= " INNER JOIN %bill% B ON B.closingid=C.id "; $sql .= " WHERE B.status='c' AND B.cashtype='$cashtype' "; $sql .= " GROUP BY C.id "; return $sql; } private static function _zgvtyp_helper_diffsollist($fileToSave,$paydeskid,$ztime) { $cols = array( "Z_KASSE_ID" => array("select" => "'$paydeskid'","colname" => "paydeskid","quote" => true), "Z_ERSTELLUNG" => array("select" => "$ztime","colname" => "zerstellung","quote" => false), "Z_NR" => array("select" => "COALESCE(C.id,'')","colname" => "clsid","quote" => false), "GV_TYP" => array("select" => "'DifferenzSollIst'","colname" => "gvtyp","quote" => true), "GV_NAME" => array("select" => "''","colname" => "gvname","quote" => true), "AGENTUR_ID" => array("select" => "'0'","colname" => "agenturid","quote" => true), "UST_SCHLUESSEL" => array("select" => "'5'","colname" => "ustkey","quote" => false), "Z_UMS_BRUTTO" => array("select" => "ROUND(C.cashsum - C.counted,5)","colname" => "brutto","quote" => false), "Z_UMS_NETTO" => array("select" => "ROUND(C.cashsum - C.counted,5)","colname" => "netto","quote" => false), "Z_UST" => array("select" => "'0.00000'","colname" => "zust","quote" => false) ); $sqltxt = self::createSqlSelects($cols, $fileToSave); $sql = "SELECT " . implode(",",$sqltxt) . " FROM %closing% C "; $sql .= " WHERE C.counting='1' "; $sql .= " GROUP BY C.id "; return $sql; } private static function _zgvtyp_helper_prodSums($fileToSave,$paydeskid,$ztime,$gvtyp) { $gvtypelabel = $gvtyp['label']; $taxkey = $gvtyp['taxkey']; $ordertype = $gvtyp['ordertype']; $cols = array( "Z_KASSE_ID" => array("select" => "'$paydeskid'","colname" => "paydeskid","quote" => true), "Z_ERSTELLUNG" => array("select" => "$ztime","colname" => "zerstellung","quote" => false), "Z_NR" => array("select" => "COALESCE(C.id,'')","colname" => "clsid","quote" => false), "GV_TYP" => array("select" => "'$gvtypelabel'","colname" => "gvtyp","quote" => true), "GV_NAME" => array("select" => "''","colname" => "gvname","quote" => true), "AGENTUR_ID" => array("select" => "'0'","colname" => "agenturid","quote" => true), "UST_SCHLUESSEL" => array("select" => "'$taxkey'","colname" => "ustkey","quote" => false), "Z_UMS_BRUTTO" => array("select" => "ROUND(SUM(Q.price),5)","colname" => "brutto","quote" => false), "Z_UMS_NETTO" => array("select" => "round(SUM(price / (1.0 + Q.tax/100.0)),5)","colname" => "netto","quote" => false), "Z_UST" => array("select" => "ROUND(SUM(Q.price - price / (1.0 + Q.tax/100.0)),5)","colname" => "zust","quote" => false) ); $sqltxt = self::createSqlSelects($cols, $fileToSave); $sql = "SELECT " . implode(",",$sqltxt) . " FROM %closing% C "; $sql .= " INNER JOIN %bill% B ON B.closingid=C.id "; $sql .= " INNER JOIN %billproducts% BP ON BP.billid=B.id "; $sql .= " INNER JOIN %queue% Q ON Q.id=BP.queueid "; $sql .= " WHERE (B.status is null OR B.status <> 'c') AND Q.taxkey='$taxkey' AND Q.ordertype='$ordertype'"; $sql .= " GROUP BY C.id "; return $sql; } private static function zgvtyp($pdo,$fileToSave) { $paydeskid = CommonUtils::getConfigValue($pdo, 'paydeskid', 1); $ztime = "IF(C.closingdate is not null,CONCAT(DATE(C.closingdate),'T',TIME(C.closingdate)),'')"; $colsPrivateinlage = self::_zgvtyp_helper_billsSums($fileToSave, $paydeskid, $ztime, array("label" => "Privateinlage", "cashtype" => 2)); $colsPrivatentnahme = self::_zgvtyp_helper_billsSums($fileToSave, $paydeskid, $ztime, array("label" => "Privatentnahme", "cashtype" => 1)); $colsEinzahlung = self::_zgvtyp_helper_billsSums($fileToSave, $paydeskid, $ztime, array("label" => "Einzahlung", "cashtype" => 5)); $colsAuszahlung = self::_zgvtyp_helper_billsSums($fileToSave, $paydeskid, $ztime, array("label" => "Auszahlung", "cashtype" => 6)); $colsTrinkgeldAN= self::_zgvtyp_helper_billsSums($fileToSave, $paydeskid, $ztime, array("label" => "TrinkgeldAN", "cashtype" => 7)); $colsTrinkgeldAG= self::_zgvtyp_helper_billsSums($fileToSave, $paydeskid, $ztime, array("label" => "TrinkgeldAG", "cashtype" => 8)); $colsDiffSollIst = self::_zgvtyp_helper_diffsollist($fileToSave, $paydeskid, $ztime); $colsProdSumsUmsatzKey1 = self::_zgvtyp_helper_prodSums($fileToSave, $paydeskid, $ztime, array("label" => "Umsatz","taxkey" => 1, "ordertype" => DbUtils::$ORDERTYPE_PRODUCT)); $colsProdSumsUmsatzKey2 = self::_zgvtyp_helper_prodSums($fileToSave, $paydeskid, $ztime, array("label" => "Umsatz","taxkey" => 2, "ordertype" => DbUtils::$ORDERTYPE_PRODUCT)); $colsProdSumsUmsatzKey5 = self::_zgvtyp_helper_prodSums($fileToSave, $paydeskid, $ztime, array("label" => "Umsatz","taxkey" => 5, "ordertype" => DbUtils::$ORDERTYPE_PRODUCT)); $colsProdSumsUmsatzKey11 = self::_zgvtyp_helper_prodSums($fileToSave, $paydeskid, $ztime, array("label" => "Umsatz","taxkey" => 11, "ordertype" => DbUtils::$ORDERTYPE_PRODUCT)); $colsProdSumsUmsatzKey12 = self::_zgvtyp_helper_prodSums($fileToSave, $paydeskid, $ztime, array("label" => "Umsatz","taxkey" => 12, "ordertype" => DbUtils::$ORDERTYPE_PRODUCT)); $colsProdSumsUmsatzKey21 = self::_zgvtyp_helper_prodSums($fileToSave, $paydeskid, $ztime, array("label" => "Umsatz","taxkey" => 21, "ordertype" => DbUtils::$ORDERTYPE_PRODUCT)); $colsProdSumsUmsatzKey22 = self::_zgvtyp_helper_prodSums($fileToSave, $paydeskid, $ztime, array("label" => "Umsatz","taxkey" => 22, "ordertype" => DbUtils::$ORDERTYPE_PRODUCT)); $colsVoucherSumsUmsatzKey1 = self::_zgvtyp_helper_prodSums($fileToSave, $paydeskid, $ztime, array("label" => "EinzweckgutscheinKauf","taxkey" => 1, "ordertype" => DbUtils::$ORDERTYPE_1ZweckKauf)); $colsVoucherSumsUmsatzKey2 = self::_zgvtyp_helper_prodSums($fileToSave, $paydeskid, $ztime, array("label" => "EinzweckgutscheinKauf","taxkey" => 2, "ordertype" => DbUtils::$ORDERTYPE_1ZweckKauf)); $colsVoucherSumsUmsatzKey5 = self::_zgvtyp_helper_prodSums($fileToSave, $paydeskid, $ztime, array("label" => "EinzweckgutscheinKauf","taxkey" => 5, "ordertype" => DbUtils::$ORDERTYPE_1ZweckKauf)); $colsVoucherSumsUmsatzKey11 = self::_zgvtyp_helper_prodSums($fileToSave, $paydeskid, $ztime, array("label" => "EinzweckgutscheinKauf","taxkey" => 11, "ordertype" => DbUtils::$ORDERTYPE_1ZweckKauf)); $colsVoucherSumsUmsatzKey12 = self::_zgvtyp_helper_prodSums($fileToSave, $paydeskid, $ztime, array("label" => "EinzweckgutscheinKauf","taxkey" => 12, "ordertype" => DbUtils::$ORDERTYPE_1ZweckKauf)); $colsVoucherSumsUmsatzKey21 = self::_zgvtyp_helper_prodSums($fileToSave, $paydeskid, $ztime, array("label" => "EinzweckgutscheinKauf","taxkey" => 21, "ordertype" => DbUtils::$ORDERTYPE_1ZweckKauf)); $colsVoucherSumsUmsatzKey22 = self::_zgvtyp_helper_prodSums($fileToSave, $paydeskid, $ztime, array("label" => "EinzweckgutscheinKauf","taxkey" => 22, "ordertype" => DbUtils::$ORDERTYPE_1ZweckKauf)); $colsVoucherEinlSumsUmsatzKey5 = self::_zgvtyp_helper_prodSums($fileToSave, $paydeskid, $ztime, array("label" => "EinzweckgutscheinEinloesung","taxkey" => 5, "ordertype" => DbUtils::$ORDERTYPE_1ZweckEinl)); $allCols = implode(" UNION ALL ",array( $colsPrivateinlage,$colsPrivatentnahme, $colsEinzahlung,$colsAuszahlung, $colsTrinkgeldAN,$colsTrinkgeldAG, $colsDiffSollIst, $colsProdSumsUmsatzKey1,$colsProdSumsUmsatzKey2,$colsProdSumsUmsatzKey5,$colsProdSumsUmsatzKey11,$colsProdSumsUmsatzKey12,$colsProdSumsUmsatzKey21,$colsProdSumsUmsatzKey22, $colsVoucherSumsUmsatzKey1,$colsVoucherSumsUmsatzKey2,$colsVoucherSumsUmsatzKey5,$colsVoucherSumsUmsatzKey11,$colsVoucherSumsUmsatzKey12,$colsVoucherSumsUmsatzKey21,$colsVoucherSumsUmsatzKey22, $colsVoucherEinlSumsUmsatzKey5 )); $sql = "SELECT * FROM ("; $sql .= $allCols; $sql .= " ) AS i "; $sql .= " ORDER BY (CAST(i.clsid AS UNSIGNED)),(CAST(i.gvtyp AS UNSIGNED)),(CAST(i.ustkey AS UNSIGNED))"; $dataPart = self::createCsvDataPartByCursor($pdo, $sql, self::_zgvtyp_helper_getonlycols(), $fileToSave, 'zgvtyp'); return $dataPart; } private static function zzahlart($pdo,$fileToSave) { $paydeskid = CommonUtils::getConfigValue($pdo, 'paydeskid', 1); $ztime = "IF(C.closingdate is not null,CONCAT(DATE(C.closingdate),'T',TIME(C.closingdate)),'')"; $zahlarttyp = "(CASE WHEN B.paymentid='1' THEN 'Bar' WHEN B.paymentid='2' THEN 'ECKarte' WHEN B.paymentid='3' THEN 'Kreditkarte' ELSE 'Keine' END)"; $cols = array( "Z_KASSE_ID" => array("select" => "'$paydeskid'","colname" => "paydeskid","quote" => true), "Z_ERSTELLUNG" => array("select" => "$ztime","colname" => "zerstellung","quote" => false), "Z_NR" => array("select" => "COALESCE(C.id,'')","colname" => "clsid","quote" => false), "ZAHLART_TYP" => array("select" => "$zahlarttyp","colname" => "paymenttype","quote" => true), "ZAHLART_NAME" => array("select" => "''","colname" => "paymentname","quote" => true), "Z_ZAHLART_BETRAG" => array("select" => "ROUND(SUM(B.brutto),2)","colname" => "paymentsum","quote" => false) ); $sqltxt = self::createSqlSelects($cols, $fileToSave); $allCols = "SELECT " . implode(",",$sqltxt) . " FROM %closing% C "; $allCols .= " INNER JOIN %bill% B ON B.closingid=C.id "; $allCols .= " WHERE B.paymentid='1' OR B.paymentid='2' OR B.paymentid='3'"; $allCols .= " GROUP BY C.id,B.paymentid "; $sql = "SELECT * FROM ("; $sql .= $allCols; $sql .= " ) AS i "; $sql .= " ORDER BY (CAST(i.clsid AS UNSIGNED)),paymenttype"; $dataPart = self::createCsvDataPartByCursor($pdo, $sql, $cols, $fileToSave, 'zzahlart'); return $dataPart; } private static function zwaehrungen($pdo,$fileToSave) { $paydeskid = CommonUtils::getConfigValue($pdo, 'paydeskid', 1); $ztime = "IF(C.closingdate is not null,CONCAT(DATE(C.closingdate),'T',TIME(C.closingdate)),'')"; $currency = CommonUtils::getConfigValue($pdo, 'currency', ''); if (in_array(strtoupper($currency), array("EURO","EUR","E","€"))) { $currency = "EUR"; } $cols = array( "Z_KASSE_ID" => array("select" => "'$paydeskid'","colname" => "paydeskid","quote" => true), "Z_ERSTELLUNG" => array("select" => "$ztime","colname" => "zerstellung","quote" => false), "Z_NR" => array("select" => "COALESCE(C.id,'')","colname" => "clsid","quote" => false), "ZAHLART_WAEH" => array("select" => "'$currency'","colname" => "paymentcurrency","quote" => true), ); $sqltxt = self::createSqlSelects($cols, $fileToSave); $allCols = "SELECT " . implode(",",$sqltxt) . " FROM %closing% C "; $allCols .= " GROUP BY C.id "; $sql = "SELECT * FROM ("; $sql .= $allCols; $sql .= " ) AS i "; $sql .= " ORDER BY (CAST(i.clsid AS UNSIGNED)),paymentcurrency"; $dataPart = self::createCsvDataPartByCursor($pdo, $sql, $cols, $fileToSave, 'zwaehrungen'); return $dataPart; } private static function createCsvHeader($cols,$doHtml,$tablename) { $startOfRow = ""; $endOfRow = ""; $sep = ";"; if ($doHtml) { $startOfRow = ''; $endOfRow = ""; $sep = ""; } $colArray = array(); $keys = array_keys($cols); foreach($keys as $k) { if ($doHtml) { $colArray[] = "" . $k; } else { if (!isset($cols[$k]["suspect"]) || $cols[$k]["suspect"] == 0) { $colArray[] = $k; } } } return $startOfRow . implode($sep,$colArray) . $endOfRow; } private static function createCsvDataRow($cols,$entry, $doHtml,$tablename,$linenumber) { $startOfRow = ""; $endOfRow = ""; $sep = ";"; if ($doHtml) { $startOfRow = "" . $linenumber; $endOfRow = ""; $sep = ""; } $colArray = array(); $keys = array_keys($cols); foreach($keys as $k) { $dataEntry = $entry[$cols[$k]["colname"]]; if ($cols[$k]["quote"]) { $dataEntry = "\"" . str_replace("\"", "\"\"", $dataEntry) . "\""; } if ($doHtml) { if (isset($cols[$k]["suspect"]) && ($cols[$k]["suspect"] == 1)) { $colArray[] = "" . $dataEntry; } else { $colArray[] = "" . $dataEntry; } } else { if (!isset($cols[$k]["suspect"]) || ($cols[$k]["suspect"] == 0)) { $colArray[] = $dataEntry; } } } return $startOfRow . implode($sep,$colArray) . $endOfRow; } private static function createCsvDataPartByCursor($pdo,$sql,$cols,$fileToSave,$tablename) { $stmt = $pdo->prepare(DbUtils::substTableAlias($sql),array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL)); $stmt->execute(); $doHtml = (is_null($fileToSave) ? true : false); $header = self::createCsvHeader($cols,$doHtml,$tablename); if (is_null($fileToSave)) { $dataRows = array(); $linenumber = 1; while ($row = $stmt->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT)) { $data = self::createCsvDataRow($cols, $row, $doHtml,$tablename,$linenumber); $dataRows[] = $data; $linenumber++; } $stmt->closeCursor(); $stmt = null; return $header . "\n" . implode("\n",$dataRows); } else { if (file_exists($fileToSave)) { try { unlink($fileToSave); } catch (Exception $ex) { exit("File " . $fileToSave . " could not be deleted"); } } file_put_contents($fileToSave, $header . "\n", FILE_APPEND | LOCK_EX); while ($row = $stmt->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT)) { $data = self::createCsvDataRow($cols, $row, $doHtml,$tablename,0) . "\n"; try { file_put_contents($fileToSave, $data, FILE_APPEND | LOCK_EX); } catch (Exception $ex) { exit ("In csv File " . $fileToSave . " kann nicht geschrieben werden: " . $ex->getMessage()); } } $stmt->closeCursor(); $stmt = null; return ''; } } private static function getPage() { $txt = "\n"; $txt .= "\n"; $txt .= "DSFinv-k Export\n"; $txt .= self::getScript(); $txt .= self::getStyle(); $txt .= "\n"; $txt .= "\n"; return $txt; } private static function getStyle() { $txt = "\n"; return $txt; } private static function getScript() { $txt = "\n "; return $txt; } private static function createSqlSelects($cols,$fileToSave) { $sqltxt = array(); foreach($cols as $c) { if (!is_null($fileToSave)) { if (!isset($c["suspect"]) || $c["suspect"] == 0) { $sqltxt[] = $c["select"] . " as " . $c["colname"]; } } else { $sqltxt[] = $c["select"] . " as " . $c["colname"]; } } return $sqltxt; } }