updateConfigInHist($pdo, $item, $value); } public static function execSql($pdo,$sql) { $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt->execute(); } public static function execSqlWithParam($pdo,$sql,$param) { $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt->execute($param); } public static function insertIntRow($pdo,$table,$rowToInsert,$afterRow) { self::insertTypeRow($pdo, $table, $rowToInsert, $afterRow, 'INT(1) NULL'); } public static function insertTypeRow($pdo,$table,$rowToInsert,$afterRow,$type) { $sql = "SHOW COLUMNS FROM $table LIKE '$rowToInsert'"; $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt->execute(); $result = $stmt->fetchAll(); if (count($result) == 0) { $sql = "ALTER TABLE $table ADD $rowToInsert $type AFTER $afterRow"; $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt->execute(); } } public static function getDefaultCustomRecTemplate() { return file_get_contents(__DIR__. '/../../customer/rectemplate.txt'); } private static function getDefaultCustomCashTemplate() { return file_get_contents(__DIR__. '/../../customer/cashtemplate.txt'); } private static function getDefaultCustomClsTemplate() { return file_get_contents(__DIR__. '/../../customer/clstemplate.txt'); } public static function getDefaultCustomFoodTemplate() { return file_get_contents(__DIR__. '/../../customer/foodworktemplate.txt'); } public static function getDefaultCustomDrinkTemplate() { return file_get_contents(__DIR__. '/../../customer/drinkworktemplate.txt'); } private static function getDefaultCustomCancelTemplate() { return file_get_contents(__DIR__. '/../../customer/canceltemplate.txt'); } private static function getDefaultCustomPickupTemplate() { return file_get_contents(__DIR__. '/../../customer/pickuptemplate.txt'); } public static function getDefaultWorkTemplateFood() { $rect = "SS:Speisen\n\ni_ID:v\nt:v\nz:v\n"; $rect .= "\n"; $rect .= "START_WORK\n"; $rect .= "f:-;\n"; $rect .= "N:v;\ns: ;b:v;\n"; $rect .= "e:v\n"; $rect .= "END_WORK\n"; $rect .= "f:-"; return $rect; } public static function getDefaultWorkTemplateDrinks() { $rect = "SS:Getränke\n\ni_ID:v\nt:v\nz:v\n"; $rect .= "\n"; $rect .= "START_WORK\n"; $rect .= "f:-;\n"; $rect .= "N:v;\ns: ;b:v;\n"; $rect .= "e:v\n"; $rect .= "END_WORK\n"; $rect .= "f:-"; return $rect; } public static function getDefaultPickupTemplate() { $rect = "S:Abholbon\n\nII_ID:v\n"; $rect .= "START_WORK\n"; $rect .= "f:-;\n"; $rect .= "N:v;\ns: ;b:v;\n"; $rect .= "e:v\n"; $rect .= "END_WORK\n"; $rect .= "f:-"; return $rect; } public static function genSampleHostText() { $hosttext = "\n\nAngaben zum Nachweis der Höhe\nund der betrieblichen\nVeranlassung von\nBewirtungsaufwendungen\n(Par. 4 Abs. 5 Ziff. 2 EStG)\n\n"; $hosttext .= "Tag der Bewirtung:\n\n\n"; $hosttext .= "Ort der Bewirtung:\n\n\n"; $hosttext .= "Bewirtete Person(en):\n\n\n\n\n\n"; $hosttext .= "Anlass der Bewirtung:\n\n\n\n\n\n\n"; $hosttext .= "Ort, Datum Unterschrift\n\n"; return $hosttext; } public static function getDefaultCancelWorkTemplate() { $rect = "SS: Stornierung\n\n"; $rect .= "s:zu stornieren ;n:v\n"; $rect .= "s: ID: ;i:v\n"; $rect .= "s: Tisch: ;t:v\n"; $rect .= "s: Zeit: ;z:v\n"; $rect .= "s: Extras: ;e:v\n"; $rect .= "s: Preis: ;p:v\n"; $rect .= "s: Typ: ;k:v\n"; $rect .= "s: zu storn. Arb.bon: ;q:v\n"; return $rect; } public static function getDefaultClosTemplate($pdo) { $r = Basedb::loadSampleCusHtmlTemplate($pdo); return $r; } private static function updateNettoValuesOfBill($pdo) { $sql = "SELECT %bill%.id as billid,IF(status='s',-1,1)*ROUND(SUM(price/(1 + %queue%.tax/100.0)),6) as netto FROM %queue%,%billproducts%,%bill% WHERE %billproducts%.billid=%bill%.id AND %billproducts%.queueid=%queue%.id AND (status is null OR status=? OR status=?) GROUP by billid"; $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt->execute(array('x','s')); $result = $stmt->fetchAll(PDO::FETCH_ASSOC); $sql = "UPDATE %bill% SET netto=? WHERE id=?"; $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); foreach($result as $r) { $stmt->execute(array($r["netto"],$r["billid"])); } } private static function addHistClsReference($pdo) { $sql = "UPDATE %hist% SET clsid=(SELECT(SELECT MIN(id) FROM %closing% WHERE `date` < closingdate) AS clsidval)"; $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt->execute(); } public static function upd_1300_1301($pdo, $prefix, $dbname) { try { $basedb = new BaseDb(); $basedb->createCustomerLogTable($pdo); self::insertOrUpdateConfigItem($pdo, 'cancelguestcode', ''); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1301_1302($pdo, $prefix, $dbname) { try { self::insertOrUpdateConfigItem($pdo, 'returntoorder', '1'); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1302_1303($pdo, $prefix, $dbname) { try { $sql = "SHOW COLUMNS FROM %customers% LIKE 'hello'"; $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt->execute(); $result = $stmt->fetchAll(); if (count($result) == 0) { self::execSql($pdo, "ALTER TABLE %customers% ADD hello VARCHAR(100) NULL AFTER www"); self::execSql($pdo, "ALTER TABLE %customers% ADD regards VARCHAR(100) NULL AFTER hello"); self::execSql($pdo, "OPTIMIZE TABLE %customers%"); } self::insertOrUpdateConfigItem($pdo, 'rksvserver', ''); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1303_1304($pdo, $prefix, $dbname) { try { return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1304_1305($pdo, $prefix, $dbname) { try { return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1305_1306($pdo, $prefix, $dbname) { try { return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1306_1307($pdo, $prefix, $dbname) { try { self::insertOrUpdateConfigItem($pdo, 'updateurl', 'http://www.ordersprinter.de/update'); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1307_1308($pdo, $prefix, $dbname) { try { $sql = "SHOW COLUMNS FROM %user% LIKE 'mobiletheme'"; $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt->execute(); $result = $stmt->fetchAll(); if (count($result) == 0) { $sql = "ALTER TABLE %user% ADD mobiletheme INT(2) NULL AFTER language"; $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt->execute(); } self::insertOrUpdateConfigItem($pdo, 'discountname1', ''); self::insertOrUpdateConfigItem($pdo, 'discountname2', ''); self::insertOrUpdateConfigItem($pdo, 'discountname3', ''); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1308_1309($pdo, $prefix, $dbname) { try { self::execSql($pdo, "ALTER TABLE %products% ADD unit INT(2) NULL AFTER priceC"); self::execSql($pdo, "ALTER TABLE %histprod% ADD unit INT(2) NULL AFTER priceC"); self::execSql($pdo, "ALTER TABLE %products% ADD days VARCHAR(20) NULL AFTER unit"); self::execSql($pdo, "ALTER TABLE %histprod% ADD days VARCHAR(20) NULL AFTER unit"); self::execSql($pdo, "ALTER TABLE %user% ADD failedlogins VARCHAR(20) NULL AFTER extrasapplybtnpos"); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1309_1310($pdo, $prefix, $dbname) { try { $sql = "INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL,?,?)"; $stmt = $pdo->prepare(DbUtils::substTableAliasCore($sql, $prefix)); $stmt->execute(array('closshowci', '1')); $stmt->execute(array('closshowpaytaxes', '1')); $stmt->execute(array('closshowprods', '1')); $sql = "SELECT setting FROM %config% WHERE name=?"; $stmt = $pdo->prepare(DbUtils::substTableAliasCore($sql, $prefix)); $stmt->execute(array("paymentconfig")); $row = $stmt->fetchObject(); $paymentconfig = $row->setting; $sql = "INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL,?,?)"; $stmt = $pdo->prepare(DbUtils::substTableAliasCore($sql, $prefix)); if ($paymentconfig == 0) { $stmt->execute(array('showpayment2', '1')); $stmt->execute(array('showpayment3', '1')); $stmt->execute(array('showpayment4', '1')); $stmt->execute(array('showpayment5', '1')); $stmt->execute(array('showpayment6', '1')); $stmt->execute(array('showpayment7', '1')); $stmt->execute(array('showpayment8', '1')); } else { $stmt->execute(array('showpayment2', '1')); $stmt->execute(array('showpayment3', '0')); $stmt->execute(array('showpayment4', '0')); $stmt->execute(array('showpayment5', '0')); $stmt->execute(array('showpayment6', '0')); $stmt->execute(array('showpayment7', '0')); $stmt->execute(array('showpayment8', '0')); } self::execSql($pdo, "ALTER TABLE %extras% ADD sorting INT(2) NULL AFTER price"); $sql = "SELECT id FROM %extras% WHERE removed is null"; $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt->execute(); $result = $stmt->fetchAll(); $pos = 1; $sql = "UPDATE %extras% SET sorting=? WHERE id=?"; $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); foreach ($result as $extraid) { $stmt->execute(array($pos, $extraid["id"])); $pos++; } return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1310_1311($pdo, $prefix, $dbname) { try { $hosttext = self::genSampleHostText(); self::insertOrUpdateConfigItem($pdo, 'hosttext', $hosttext); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1311_1312($pdo, $prefix, $dbname) { try { return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1312_1313($pdo, $prefix, $dbname) { try { return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1313_1314($pdo, $prefix, $dbname) { try { self::insertOrUpdateConfigItem($pdo, 'k1prinstance', '1'); self::insertOrUpdateConfigItem($pdo, 'k2prinstance', '1'); self::insertOrUpdateConfigItem($pdo, 'k3prinstance', '1'); self::insertOrUpdateConfigItem($pdo, 'k4prinstance', '1'); self::insertOrUpdateConfigItem($pdo, 'k5prinstance', '1'); self::insertOrUpdateConfigItem($pdo, 'k6prinstance', '1'); self::insertOrUpdateConfigItem($pdo, 'd1prinstance', '1'); self::insertOrUpdateConfigItem($pdo, 'd2prinstance', '1'); self::insertOrUpdateConfigItem($pdo, 'f1prinstance', '1'); self::insertOrUpdateConfigItem($pdo, 'f2prinstance', '1'); self::insertOrUpdateConfigItem($pdo, 'dashslot1', '1'); self::insertOrUpdateConfigItem($pdo, 'dashslot2', '2'); self::insertOrUpdateConfigItem($pdo, 'dashslot3', '3'); $sql = "SHOW COLUMNS FROM %user% LIKE 'right_dash'"; $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt->execute(); $result = $stmt->fetchAll(); if (count($result) == 0) { self::execSql($pdo, "ALTER TABLE %user% ADD right_dash INT(2) NULL AFTER right_closing"); self::execSql($pdo, "ALTER TABLE %histuser% ADD right_dash INT(2) NULL AFTER right_closing"); self::execSqlWithParam($pdo, "UPDATE %user% SET right_dash=?", array(0)); self::execSqlWithParam($pdo, "UPDATE %histuser% SET right_dash=?", array(0)); self::execSqlWithParam($pdo, "UPDATE %user% SET right_dash=? WHERE right_manager=? OR is_admin=?", array(1, 1, 1)); self::execSqlWithParam($pdo, "UPDATE %histuser% SET right_dash=? WHERE right_manager=? OR is_admin=?", array(1, 1, 1)); self::execSql($pdo, "OPTIMIZE TABLE %user%"); self::execSql($pdo, "OPTIMIZE TABLE %histuser%"); } return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1314_1315($pdo, $prefix, $dbname) { try { return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1315_1316($pdo, $prefix, $dbname) { try { $sql = "UPDATE %config% SET name=? WHERE name=?"; $stmt = $pdo->prepare(DbUtils::substTableAliasCore($sql, $prefix)); $stmt->execute(array('groupworkitemsf', 'groupworkitems')); $sql = "SELECT setting FROM %config% WHERE name=?"; $stmt = $pdo->prepare(DbUtils::substTableAliasCore($sql, $prefix)); $stmt->execute(array('groupworkitemsf')); $row = $stmt->fetchObject(); $groupworkitemsf = $row->setting; $sql = "INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL,?,?)"; $stmt = $pdo->prepare(DbUtils::substTableAliasCore($sql, $prefix)); $stmt->execute(array('groupworkitemsd', $groupworkitemsf)); $sql = "UPDATE %config% SET name=? WHERE name=?"; $stmt = $pdo->prepare(DbUtils::substTableAliasCore($sql, $prefix)); $stmt->execute(array('oneprodworkrecf', 'oneprodworkreceipts')); $sql = "SELECT setting FROM %config% WHERE name=?"; $stmt = $pdo->prepare(DbUtils::substTableAliasCore($sql, $prefix)); $stmt->execute(array('oneprodworkrecf')); $row = $stmt->fetchObject(); $oneprodworkrecf = $row->setting; $sql = "INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL,?,?)"; $stmt = $pdo->prepare(DbUtils::substTableAliasCore($sql, $prefix)); $stmt->execute(array('oneprodworkrecd', $oneprodworkrecf)); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1316_1317($pdo, $prefix, $dbname) { try { self::insertOrUpdateConfigItem($pdo, 'dblog', '1'); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1317_1318($pdo, $prefix, $dbname) { try { self::insertOrUpdateConfigItem($pdo, 'startprodsearch', '3'); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1318_1319($pdo, $prefix, $dbname) { try { self::insertOrUpdateConfigItem($pdo, 'priceinlist', '0'); $basedb = new BaseDb(); $basedb->createProdimagesTable($pdo); $sql = "SHOW COLUMNS FROM %products% LIKE 'prodimageid'"; $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt->execute(); $result = $stmt->fetchAll(); if (count($result) == 0) { self::execSql($pdo, "ALTER TABLE %products% ADD prodimageid INT(10) NULL AFTER audio"); self::execSql($pdo, "OPTIMIZE TABLE %products%"); self::execSql($pdo, "ALTER TABLE %histprod% ADD prodimageid INT(10) NULL AFTER audio"); self::execSql($pdo, "OPTIMIZE TABLE %histprod%"); } $sql = "SHOW COLUMNS FROM %user% LIKE 'preferimgdesk'"; $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt->execute(); $result = $stmt->fetchAll(); if (count($result) == 0) { $sql = "ALTER TABLE %user% ADD preferimgdesk INT(1) NULL AFTER prefertablemap"; $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt->execute(); $sql = "ALTER TABLE %user% ADD preferimgmobile INT(1) NULL AFTER preferimgdesk"; $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt->execute(); } return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1319_1320($pdo, $prefix, $dbname) { try { $sql = "SHOW COLUMNS FROM %user% LIKE 'showplusminus'"; $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt->execute(); $result = $stmt->fetchAll(); if (count($result) == 0) { $sql = "ALTER TABLE %user% ADD showplusminus INT(1) NULL AFTER preferimgmobile"; $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt->execute(); $sql = "UPDATE %user% SET showplusminus=?"; $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt->execute(array(1)); } return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1320_1321($pdo, $prefix, $dbname) { try { return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1321_1322($pdo, $prefix, $dbname) { try { self::insertOrUpdateConfigItem($pdo, 'tmpdir', ''); self::insertOrUpdateConfigItem($pdo, 'ftphost', ''); self::insertOrUpdateConfigItem($pdo, 'ftpuser', ''); self::insertOrUpdateConfigItem($pdo, 'ftppass', ''); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1322_1323($pdo, $prefix, $dbname) { try { self::insertIntRow($pdo, "%printjobs%", "removed", "printer"); self::insertIntRow($pdo, "%queue%", "printjobid", "workprinted"); $cancelTemplate = self::getDefaultCancelWorkTemplate(); self::insertOrUpdateConfigItem($pdo, 'canceltemplate', $cancelTemplate); $sql = "SHOW COLUMNS FROM %user% LIKE 'right_waiter'"; $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt->execute(); $result = $stmt->fetchAll(); if (count($result) > 0) { $basedb = new BaseDb(); $basedb->createRolesTable($pdo); try { $sql = "DELETE FROM %roles%"; $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt->execute(); } catch (Exception $ex) { } $sql = "ALTER TABLE %user% ADD roleid INT (10) NULL AFTER active"; $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt->execute(); $existingRights = array( "is_admin", "right_waiter", "right_kitchen", "right_bar", "right_supply", "right_paydesk", "right_statistics", "right_bill", "right_products", "right_manager", "right_closing", "right_dash", "right_reservation", "right_rating", "right_changeprice", "right_customers" ); $rightInStr = implode(",", $existingRights); $sql = "SELECT DISTINCT $rightInStr FROM %user% WHERE active='1'"; $stmt = $pdo->prepare(DbUtils::substTableAliasCore($sql, $prefix)); $stmt->execute(); $allDistinctPermutations = $stmt->fetchAll(PDO::FETCH_ASSOC); $i = 1; foreach ($allDistinctPermutations as $aPerm) { $addOnToName = ""; if ($aPerm["is_admin"] == 1) { $addOnToName = " (Admin)"; } else if ($aPerm["right_manager"] == 1) { $addOnToName = " (Verwaltung)"; } $sql = "INSERT INTO %roles% (name,$rightInStr) VALUES('Rolle $i $addOnToName',?,?,?,?,? ,?,?,?,?,? , ?,?,?,?,?, ?)"; $params = array( $aPerm["is_admin"], $aPerm["right_waiter"], $aPerm["right_kitchen"], $aPerm["right_bar"], $aPerm["right_supply"], $aPerm["right_paydesk"], $aPerm["right_statistics"], $aPerm["right_bill"], $aPerm["right_products"], $aPerm["right_manager"], $aPerm["right_closing"], $aPerm["right_dash"], $aPerm["right_reservation"], $aPerm["right_rating"], $aPerm["right_changeprice"], $aPerm["right_customers"] ); $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt->execute($params); $newroleid = $pdo->lastInsertId(); $where = "is_admin=? AND "; $where .= "right_waiter=? AND "; $where .= "right_kitchen=? AND "; $where .= "right_bar=? AND "; $where .= "right_supply=? AND "; $where .= "right_paydesk=? AND "; $where .= "right_statistics=? AND "; $where .= "right_bill=? AND "; $where .= "right_products=? AND "; $where .= "right_manager=? AND "; $where .= "right_closing=? AND "; $where .= "right_dash=? AND "; $where .= "right_reservation=? AND "; $where .= "right_rating=? AND "; $where .= "right_changeprice=? AND "; $where .= "right_customers=?"; $sql = "SELECT id FROM %user% WHERE $where AND active=1"; $stmt = $pdo->prepare(DbUtils::substTableAliasCore($sql, $prefix)); $stmt->execute($params); $allUserIdsOfThatRole = $stmt->fetchAll(PDO::FETCH_ASSOC); foreach ($allUserIdsOfThatRole as $u) { $sql = "UPDATE %user% SET roleid=? WHERE id=?"; $stmt = $pdo->prepare(DbUtils::substTableAliasCore($sql, $prefix)); $stmt->execute(array($newroleid, $u["id"])); } $i++; } foreach ($existingRights as $r) { $sql = "ALTER TABLE %user% DROP COLUMN " . $r; $stmt = $pdo->prepare(DbUtils::substTableAliasCore($sql, $prefix)); $stmt->execute(); } $sql = "UPDATE %user% SET roleid=? WHERE active='0'"; $stmt = $pdo->prepare(DbUtils::substTableAliasCore($sql, $prefix)); $stmt->execute(array(null)); $sql = "OPTIMIZE TABLE %user%"; $stmt = $pdo->prepare(DbUtils::substTableAliasCore($sql, $prefix)); $stmt->execute(); } return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1323_1324($pdo, $prefix, $dbname) { try { return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1324_1325($pdo, $prefix, $dbname) { try { return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1325_1326($pdo, $prefix, $dbname) { return array(true); } public static function upd_1326_1400($pdo, $prefix, $dbname) { try { self::insertOrUpdateConfigItem($pdo, 'guestjobprint', '1'); $sql = "SHOW COLUMNS FROM %products% LIKE 'display'"; $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt->execute(); $result = $stmt->fetchAll(); if (count($result) == 0) { self::execSql($pdo, "ALTER TABLE %products% ADD display VARCHAR(3) NULL AFTER prodimageid"); self::execSql($pdo, "OPTIMIZE TABLE %products%"); self::execSql($pdo, "ALTER TABLE %histprod% ADD display VARCHAR(3) NULL AFTER prodimageid"); self::execSql($pdo, "OPTIMIZE TABLE %histprod%"); } self::insertOrUpdateConfigItem($pdo, 'guesturl', ''); self::insertOrUpdateConfigItem($pdo, 'guestcode', ''); self::insertOrUpdateConfigItem($pdo, 'dailycode', ''); self::insertIntRow($pdo, "%user%", "preferfixbtns", "preferimgmobile"); $sql = "ALTER TABLE %queue% MODIFY orderuser INT(10) NULL"; $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt->execute(); self::insertTypeRow($pdo, '%resttables%', 'code', 'roomid', 'VARCHAR ( 200 ) NULL'); self::insertTypeRow($pdo, '%resttables%', 'name', 'code', 'VARCHAR ( 50 ) NULL'); self::insertTypeRow($pdo, '%resttables%', 'active', 'name', 'INT(1) NULL'); self::insertTypeRow($pdo, '%resttables%', 'allowoutorder', 'active', 'INT(1) NULL'); $sql = "UPDATE %resttables% SET name=tableno"; $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt->execute(); $basedb = new BaseDb(); $basedb->initTableOrder($pdo); $basedb = new BaseDb(); $basedb->initRoomOrder($pdo); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1400_1401($pdo, $prefix, $dbname) { try { $sql = "ALTER TABLE %bill% MODIFY netto DECIMAL (17,6) NULL"; $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt->execute(); self::updateNettoValuesOfBill($pdo); $sql = "OPTIMIZE TABLE %bill%"; $stmt = $pdo->prepare(DbUtils::substTableAliasCore($sql, $prefix)); $stmt->execute(); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1401_1402($pdo, $prefix, $dbname) { return array(true); } public static function upd_1402_1403($pdo, $prefix, $dbname) { try { $sql = "ALTER TABLE %queue% ADD INDEX tqueue (tablenr)"; $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt->execute(); $sql = "ALTER TABLE %queue% ADD INDEX pqueue (productid)"; $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt->execute(); $sql = "ALTER TABLE %queue% ADD INDEX bqueue (billid)"; $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt->execute(); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1403_1404($pdo, $prefix, $dbname) { return array(true); } public static function upd_1404_1405($pdo, $prefix, $dbname) { return array(true); } public static function upd_1405_1406($pdo, $prefix, $dbname) { try { self::insertOrUpdateConfigItem($pdo, 'askdaycode', '1'); self::insertOrUpdateConfigItem($pdo, 'asktablecode', '1'); self::insertOrUpdateConfigItem($pdo, 'guesttimeout', '5'); self::insertOrUpdateConfigItem($pdo, 'showdaycode', '0'); $sql = "ALTER TABLE %products% ADD INDEX pcatindex (category)"; $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt->execute(); $sql = "OPTIMIZE TABLE %products%"; $stmt = $pdo->prepare(DbUtils::substTableAliasCore($sql, $prefix)); $stmt->execute(); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1406_1407($pdo, $prefix, $dbname) { try { $basedb = new BaseDb(); $basedb->sortProdTypes($pdo); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1407_1408($pdo, $prefix, $dbname) { try { $basedb = new BaseDb(); $basedb->sortProdTypes($pdo); $basedb->createRecordsTable($pdo); $basedb->createRecordsQueueTable($pdo); $sql = "ALTER TABLE %user% ADD tablesaftersend INT(1) NULL AFTER keeptypelevel"; $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt->execute(); $sql = "UPDATE %user% SET tablesaftersend=?"; $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt->execute(array(1)); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1408_1409($pdo, $prefix, $dbname) { return array(true); } public static function upd_1409_1410($pdo, $prefix, $dbname) { return array(true); } public static function upd_1410_1411($pdo, $prefix, $dbname) { return array(true); } public static function upd_1411_1412($pdo, $prefix, $dbname) { return array(true); } public static function upd_1412_1413($pdo, $prefix, $dbname) { return array(true); } public static function upd_1413_1414($pdo, $prefix, $dbname) { return array(true); } public static function upd_1414_1415($pdo, $prefix, $dbname) { return array(true); } public static function upd_1415_1416($pdo, $prefix, $dbname) { return array(true); } public static function upd_1416_1417($pdo, $prefix, $dbname) { try { self::insertOrUpdateConfigItem($pdo, 'forceprint', '0'); self::insertOrUpdateConfigItem($pdo, 'printextras', '0'); $sql = "ALTER TABLE %queueextras% ADD INDEX tqueueextras (queueid)"; $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt->execute(); $sql = "ALTER TABLE %bill% ADD printextras INT(1) NULL AFTER intguestpaid"; $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt->execute(); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1417_1418($pdo, $prefix, $dbname) { try { self::insertOrUpdateConfigItem($pdo, 'beepordered', '0'); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1418_1500($pdo, $prefix, $dbname) { try { self::execSql($pdo, "ALTER TABLE %roles% ADD right_timetracking INT(1) NULL AFTER right_dash"); self::execSql($pdo, "ALTER TABLE %roles% ADD right_timemanager INT(1) NULL AFTER right_timetracking"); self::execSql($pdo, "ALTER TABLE %histuser% ADD right_timetracking INT(1) NULL AFTER right_dash"); self::execSql($pdo, "ALTER TABLE %histuser% ADD right_timemanager INT(1) NULL AFTER right_timetracking"); self::execSqlWithParam($pdo, "UPDATE %roles% SET right_timetracking=?,right_timemanager=?", array(1,0)); self::execSqlWithParam($pdo, "UPDATE %histuser% SET right_timetracking=?,right_timemanager=?", array(1,0)); self::execSqlWithParam($pdo, "UPDATE %roles% SET right_timemanager=? WHERE right_manager=? OR is_admin=?", array(1, 1, 1)); self::execSqlWithParam($pdo, "UPDATE %histuser% SET right_timemanager=? WHERE right_manager=? OR is_admin=?", array(1, 1, 1)); self::execSql($pdo, "OPTIMIZE TABLE %roles%"); self::execSql($pdo, "OPTIMIZE TABLE %histuser%"); $basedb = new BaseDb(); $basedb->createTimesTable($pdo); self::insertOrUpdateConfigItem($pdo, 'minbeforecome', '0'); self::insertOrUpdateConfigItem($pdo, 'minaftergo', '0'); self::execSql($pdo, "ALTER TABLE %config% MODIFY name VARCHAR(30) NULL"); $sql = "ALTER TABLE %config% ADD INDEX tconfig (name)"; $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt->execute(); self::execSql($pdo, "ALTER TABLE %prodimages% ADD keyname VARCHAR(30) NULL AFTER id"); self::execSql($pdo, "UPDATE %prodimages% set keyname=CONCAT('Bild_',id)"); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1500_1501($pdo, $prefix, $dbname) { try { self::insertOrUpdateConfigItem($pdo, 'defaultview', '0'); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1501_1502($pdo, $prefix, $dbname) { try { self::execSql($pdo, "ALTER TABLE %roles% ADD right_tasks INT(1) NULL AFTER right_timetracking"); self::execSql($pdo, "ALTER TABLE %roles% ADD right_tasksmanagement INT(1) NULL AFTER right_tasks"); self::execSql($pdo, "ALTER TABLE %histuser% ADD right_tasks INT(1) NULL AFTER right_timetracking"); self::execSql($pdo, "ALTER TABLE %histuser% ADD right_tasksmanagement INT(1) NULL AFTER right_tasks"); self::execSqlWithParam($pdo, "UPDATE %roles% SET right_tasks=?,right_tasksmanagement=?", array(0,0)); self::execSqlWithParam($pdo, "UPDATE %histuser% SET right_tasks=?,right_tasksmanagement=?", array(0,0)); self::execSqlWithParam($pdo, "UPDATE %roles% SET right_tasksmanagement=? WHERE right_manager=? OR is_admin=?", array(1, 1, 1)); self::execSqlWithParam($pdo, "UPDATE %histuser% SET right_tasksmanagement=? WHERE right_manager=? OR is_admin=?", array(1, 1, 1)); self::execSql($pdo, "OPTIMIZE TABLE %roles%"); self::execSql($pdo, "OPTIMIZE TABLE %histuser%"); $basedb = new BaseDb(); $basedb->createTasksTable($pdo); $basedb = new BaseDb(); $basedb->createTaskHistTable($pdo); self::execSql($pdo, "ALTER TABLE %resttables% ADD area INT(1) NULL AFTER name"); self::execSql($pdo, "OPTIMIZE TABLE %resttables%"); self::execSql($pdo, "ALTER TABLE %user% ADD area INT(1) NULL AFTER roleid"); self::execSql($pdo, "OPTIMIZE TABLE %user%"); self::execSql($pdo, "ALTER TABLE %histuser% ADD area INT(1) NULL AFTER right_customers"); self::execSql($pdo, "OPTIMIZE TABLE %histuser%"); self::insertOrUpdateConfigItem($pdo, 'taskallassign', '0'); self::insertOrUpdateConfigItem($pdo, 'taskifempty', 0); self::insertOrUpdateConfigItem($pdo, 'taskownerempty', 0); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1502_1503($pdo, $prefix, $dbname) { try { self::insertOrUpdateConfigItem($pdo, 'showtogo', '1'); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1503_1504($pdo, $prefix, $dbname) { try { $sql = "ALTER TABLE %printjobs% ADD INDEX tprintjobs (type,removed,printer)"; $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt->execute(); self::insertOrUpdateConfigItem($pdo, 'showprepinwaiter', '1'); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1504_1505($pdo, $prefix, $dbname) { return array(true); } public static function upd_1505_1506($pdo, $prefix, $dbname) { try { self::insertOrUpdateConfigItem($pdo, 'pollbills', '2'); self::insertOrUpdateConfigItem($pdo, 'pollworksf', '2'); self::insertOrUpdateConfigItem($pdo, 'pollworksd', '2'); self::insertOrUpdateConfigItem($pdo, 'pollclosings', '2'); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1506_1507($pdo, $prefix, $dbname) { try { $closTemplate = self::getDefaultClosTemplate($pdo); self::insertOrUpdateConfigItem($pdo, 'clostemplate', $closTemplate); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1507_1508($pdo, $prefix, $dbname) { try { self::insertOrUpdateConfigItem($pdo, 'printpickups', 0); self::insertOrUpdateConfigItem($pdo, 'pollpickups', 2); $pickuptemplate = self::getDefaultPickupTemplate(); self::insertOrUpdateConfigItem($pdo, 'pickuptemplate', $pickuptemplate); self::insertOrUpdateConfigItem($pdo, 'p1prinstance', 1); self::insertOrUpdateConfigItem($pdo, 'showpickupsno', 20); self::execSql($pdo, "ALTER TABLE %roles% ADD right_pickups INT(1) NULL AFTER right_customers"); self::execSql($pdo, "ALTER TABLE %histuser% ADD right_pickups INT(1) NULL AFTER right_customers"); self::execSqlWithParam($pdo, "UPDATE %roles% SET right_pickups=?", array(0)); self::execSqlWithParam($pdo, "UPDATE %histuser% SET right_pickups=?", array(0)); self::execSql($pdo, "OPTIMIZE TABLE %roles%"); self::execSql($pdo, "OPTIMIZE TABLE %histuser%"); self::execSql($pdo, "ALTER TABLE %printjobs% ADD pickready INT(1) NULL AFTER removed"); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1508_1509($pdo, $prefix, $dbname) { return array(true); } public static function upd_1509_1510($pdo, $prefix, $dbname) { try { self::insertOrUpdateConfigItem($pdo, 'togoworkprinter', 0); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1510_1511($pdo, $prefix, $dbname) { try { self::insertOrUpdateConfigItem($pdo, 'showhostprint', 1); self::insertOrUpdateConfigItem($pdo, 'oneclickcooked', 0); self::insertOrUpdateConfigItem($pdo, 'showpickupdelbtn', 1); self::insertOrUpdateConfigItem($pdo, 'showpickhelp', 1); self::insertOrUpdateConfigItem($pdo, 'showpayments', 1); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1511_1512($pdo, $prefix, $dbname) { try { self::insertOrUpdateConfigItem($pdo, 'cbirdfolder', ''); self::execSql($pdo, "ALTER TABLE %user% ADD calcpref INT(2) NULL AFTER extrasapplybtnpos"); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1512_1513($pdo, $prefix, $dbname) { try { self::execSql($pdo, "ALTER TABLE %prodtype% ADD fixbind INT(1) NULL AFTER printer"); self::execSql($pdo, "UPDATE %prodtype% SET fixbind='0'"); self::insertOrUpdateConfigItem($pdo, 'd3prinstance', '1'); self::insertOrUpdateConfigItem($pdo, 'd4prinstance', '1'); self::insertOrUpdateConfigItem($pdo, 'f3prinstance', '1'); self::insertOrUpdateConfigItem($pdo, 'f4prinstance', '1'); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1513_1514($pdo, $prefix, $dbname) { try { $sql = "UPDATE %work% SET signature=? WHERE item=?"; self::execSqlWithParam($pdo, $sql, array("","privkey")); self::execSqlWithParam($pdo, $sql, array("","cert")); self::execSqlWithParam($pdo, $sql, array("","lastbillid")); self::execSql($pdo, "UPDATE %work% SET signature=''"); self::execSql($pdo, "ALTER TABLE %work% MODIFY signature VARCHAR(50) NULL"); CommonUtils::setMd5OfLastBillidInWorkTable($pdo); self::execSql($pdo, "UPDATE %bill% SET signature=''"); self::execSql($pdo, "ALTER TABLE %bill% MODIFY signature VARCHAR(50) NULL"); CommonUtils::calcSignaturesForAllBills($pdo); self::execSql($pdo, "UPDATE %closing% SET signature=''"); self::execSql($pdo, "ALTER TABLE %closing% MODIFY signature VARCHAR(50) NULL"); Closing::signAllClosings($pdo); self::insertOrUpdateConfigItem($pdo, 'billprintjobs', '2'); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1514_1515($pdo, $prefix, $dbname) { return array(true); } public static function upd_1515_1516($pdo, $prefix, $dbname) { return array(true); } public static function upd_1516_1517($pdo, $prefix, $dbname) { return array(true); } public static function upd_1517_1518($pdo, $prefix, $dbname) { try { self::insertOrUpdateConfigItem($pdo, 'payprinttype', 's'); self::execSql($pdo, "ALTER TABLE %products% ADD barcode VARCHAR(25) NULL AFTER priceC"); self::execSql($pdo, "ALTER TABLE %histprod% ADD barcode VARCHAR(25) NULL AFTER priceC"); self::insertOrUpdateConfigItem($pdo, 'usebarcode', '0'); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1518_1519($pdo, $prefix, $dbname) { try { self::insertOrUpdateConfigItem($pdo, 'sumupforcard', '0'); self::insertOrUpdateConfigItem($pdo, 'affiliatekey', ''); self::insertOrUpdateConfigItem($pdo, 'appid', ''); self::insertOrUpdateConfigItem($pdo, 'sumupfailuretext', 'Fehlgeschlagene Kartenzahlung'); $sql = "UPDATE `%payment%` SET name=?, name_en=?, name_esp=? WHERE id=?"; self::execSqlWithParam($pdo, $sql, array("Kartenzahlung","Card Payment","Pago con tarjeta",2)); $sql = "UPDATE `%bill%` SET paymentid=? WHERE paymentid=?"; self::execSqlWithParam($pdo, $sql, array(2,3)); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1519_1520($pdo, $prefix, $dbname) { try { self::insertOrUpdateConfigItem($pdo, 'printcash', '0'); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1520_1521($pdo, $prefix, $dbname) { try { $sql = "UPDATE %queue% SET toremove=?"; self::execSqlWithParam($pdo, $sql, array(0)); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1521_1522($pdo, $prefix, $dbname) { try { self::insertOrUpdateConfigItem($pdo, 'showerrorlog', '1'); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1522_1523($pdo, $prefix, $dbname) { try { self::execSql($pdo, "ALTER TABLE %queue% ADD clsid INT(1) NULL AFTER isclosed"); self::execSql($pdo, "ALTER TABLE %queue% ADD FOREIGN KEY(clsid) REFERENCES %closing% (id)"); $sql = "SELECT max(id) as maxid FROM %queue%"; $stmt = $pdo->prepare(DbUtils::substTableAliasCore($sql, $prefix)); $stmt->execute(); $r = $stmt->fetchAll(PDO::FETCH_ASSOC); $maxid = 0; if (count($r) > 0) { $maxid = $r[0]["maxid"]; if (is_null($maxid)) { $maxid = 0; } } $sql = "INSERT INTO %work% (item,value) VALUES(?,?)"; $stmt = $pdo->prepare(DbUtils::substTableAliasCore($sql, $prefix)); $stmt->execute(array("indexunclosedqueue",$maxid)); self::execSql($pdo, "ALTER TABLE %work% MODIFY value VARCHAR(100) NULL"); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1523_1524($pdo, $prefix, $dbname) { try { self::execSql($pdo, "ALTER TABLE %queue% ADD unit INT(1) NULL AFTER price"); self::execSql($pdo, "ALTER TABLE %queue% ADD unitamount decimal(15,2) NULL AFTER unit"); self::execSql($pdo, "UPDATE %queue% SET unitamount='1'"); $sql = "UPDATE %queue% SET unit=(SELECT COALESCE(unit,0) FROM %products% P WHERE productid=P.id)"; self::execSql($pdo, $sql); self::execSql($pdo, "OPTIMIZE TABLE %queue%"); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1524_1525($pdo, $prefix, $dbname) { try { self::insertOrUpdateConfigItem($pdo, 'showtransferbtns', '1'); self::execSql($pdo, "ALTER TABLE %reservations% ADD tableid INT(10) NULL AFTER phone"); $sql = "ALTER TABLE %reservations% ADD INDEX tresdate (scheduledate)"; $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt->execute(); $sql = "ALTER TABLE %logo% MODIFY setting MEDIUMBLOB NULL"; $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt->execute(); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1525_1526($pdo, $prefix, $dbname) { try { self::insertOrUpdateConfigItem($pdo, 'logolocation', '1'); self::execSql($pdo, "ALTER TABLE %queueextras% ADD amount INT(3) NULL AFTER extraid"); self::execSql($pdo, "ALTER TABLE %extras% ADD maxamount INT(3) NULL AFTER price"); self::execSql($pdo, "UPDATE %extras% SET maxamount='1'"); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1526_1527($pdo, $prefix, $dbname) { try { self::execSql($pdo, "UPDATE %queueextras% SET amount='1' where amount is null"); self::insertOrUpdateConfigItem($pdo, 'doublereceipt', '0'); $sql = "UPDATE `%payment%` SET name=?, name_en=?, name_esp=? WHERE id=?"; self::execSqlWithParam($pdo, $sql, array('EC-Kartenzahlung','Electr. purse (EC)','Pago con tarjeta EC',2)); self::insertOrUpdateConfigItem($pdo, 'austriabind', '0'); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1527_1528($pdo, $prefix, $dbname) { try { self::insertOrUpdateConfigItem($pdo, 'printextraprice', '1'); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1528_1529($pdo, $prefix, $dbname) { try { self::execSql($pdo, "ALTER TABLE %customerlog% ADD clsid INT(1) NULL AFTER `userid`"); self::execSql($pdo, "ALTER TABLE %customerlog% ADD FOREIGN KEY(clsid) REFERENCES %closing% (id)"); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1529_1530($pdo, $prefix, $dbname) { try { self::insertOrUpdateConfigItem($pdo, 'turbo', '5'); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1530_1531($pdo, $prefix, $dbname) { return array(true); } public static function upd_1531_1532($pdo, $prefix, $dbname) { return array(true); } public static function upd_1532_1533($pdo, $prefix, $dbname) { return array(true); } public static function upd_1533_1600($pdo, $prefix, $dbname) { try { self::execSql($pdo, "ALTER TABLE %reservations% ADD starttimemin INT(3) NULL AFTER `starttime`"); self::execSql($pdo, "UPDATE %reservations% SET starttimemin='0'"); self::execSql($pdo, "ALTER TABLE %reservations% ADD durationmins INT(3) NULL AFTER `duration`"); self::execSql($pdo, "UPDATE %reservations% SET durationmins='0'"); self::insertOrUpdateConfigItem($pdo, 'guestqrtext', 'Gastbestellung'); self::insertOrUpdateConfigItem($pdo, 'guestqrfontsize', '15'); self::insertOrUpdateConfigItem($pdo, 'guestqrsize', '150'); self::insertOrUpdateConfigItem($pdo, 'reservationitem', "{Name}\n{Start-Stunde}:{Start-Minute}-{Ende-Stunde}:{Ende-Minute}\nDauer: {Dauer-Stunden}:{Dauer-Minuten}\n{Personen} Personen\n{Bemerkung}"); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1600_1601($pdo, $prefix, $dbname) { return array(true); } public static function upd_1601_1602($pdo, $prefix, $dbname) { try { self::execSql($pdo, "ALTER TABLE %user% ADD quickcash INT(2) NULL DEFAULT '0' AFTER area"); self::execSql($pdo, "ALTER TABLE %histuser% ADD quickcash INT(2) NULL DEFAULT '0' AFTER area"); self::execSql($pdo, "UPDATE %user% SET quickcash='0'"); self::execSql($pdo, "UPDATE %histuser% SET quickcash='0'"); self::execSql($pdo, "UPDATE %config% SET setting=(1-setting) WHERE name='cashenabled'"); self::execSql($pdo, "UPDATE %histconfig% SET setting=(1-setting) WHERE configid=(SELECT id from %config% WHERE name='cashenabled')"); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1602_1603($pdo, $prefix, $dbname) { return array(true); } public static function upd_1603_1604($pdo, $prefix, $dbname) { return array(true); } public static function upd_1604_1605($pdo, $prefix, $dbname) { try { self::execSql($pdo, "ALTER TABLE %reservations% ADD restype INT(1) NULL DEFAULT '0' AFTER remark"); self::execSql($pdo, "UPDATE %reservations% SET restype='0'"); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1605_1606($pdo, $prefix, $dbname) { try { $basedb = new BaseDb(); $basedb->createOrUpdateUID($pdo,'1.6.6'); $basedb->createOrUpdateSN($pdo,'ORD1'); self::insertOrUpdateConfigItem($pdo, 'systemid', 1); self::execSql($pdo, "ALTER TABLE %hist% ADD clsid INT(1) NULL DEFAULT NULL AFTER refid"); self::execSql($pdo, "ALTER TABLE %hist% ADD FOREIGN KEY(clsid) REFERENCES %closing% (id)"); self::execSql($pdo, "ALTER TABLE %closing% ADD INDEX dclosing (closingdate)"); self::addHistClsReference($pdo); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1606_1607($pdo, $prefix, $dbname) { try { self::insertOrUpdateConfigItem($pdo, 'dsfinvk_name', ''); self::insertOrUpdateConfigItem($pdo, 'dsfinvk_street', ''); self::insertOrUpdateConfigItem($pdo, 'dsfinvk_postalcode', ''); self::insertOrUpdateConfigItem($pdo, 'dsfinvk_city', ''); self::insertOrUpdateConfigItem($pdo, 'dsfinvk_country', ''); self::insertOrUpdateConfigItem($pdo, 'dsfinvk_stnr', ''); self::insertOrUpdateConfigItem($pdo, 'dsfinvk_ustid', ''); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1607_1608($pdo, $prefix, $dbname) { return array(true); } public static function upd_1608_1609($pdo, $prefix, $dbname) { return array(true); } public static function upd_1609_1610($pdo, $prefix, $dbname) { try { self::execSql($pdo, "ALTER TABLE %bill% ADD cashtype INT(1) NULL DEFAULT NULL AFTER paymentid"); self::execSql($pdo, "UPDATE %bill% SET cashtype=(IF(status='c',(IF(brutto<='0.00',1,2)),null))"); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static function upd_1610_2000($pdo, $prefix, $dbname) { try { self::insertOrUpdateConfigItem($pdo, 'usetse', '0'); self::insertOrUpdateConfigItem($pdo, 'tseurl', 'http://localhost:8000'); self::insertOrUpdateConfigItem($pdo, 'tsepass', '123'); self::insertOrUpdateConfigItem($pdo, 'tsepin', '1, 2, 3, 4, 5'); self::insertOrUpdateConfigItem($pdo, 'tsepuk', '1, 2, 3, 4, 5, 6'); $basedb = new BaseDb(); $basedb->createTseValuesTable($pdo); self::execSql($pdo, "ALTER TABLE %bill% ADD `logtime` INT(5) NULL DEFAULT NULL AFTER signature"); self::execSql($pdo, "ALTER TABLE %queue% ADD `logtime` INT(5) NULL DEFAULT NULL AFTER clsid"); self::execSql($pdo, "ALTER TABLE %queue% ADD `cancellogtime` INT(5) NULL DEFAULT NULL AFTER logtime"); self::execSql($pdo, "ALTER TABLE %queue% ADD pricetype INT(1) NULL AFTER `tax`"); self::execSql($pdo, "UPDATE %queue% SET pricetype='0'"); self::execSql($pdo, "ALTER TABLE %bill% ADD billuid INT(1) NULL AFTER `id`"); self::execSql($pdo, "UPDATE %bill% SET billuid=id"); $basedb = new BaseDb(); $basedb->createTerminalsTable($pdo); $basedb->createOperationsTable($pdo); self::execSql($pdo, "ALTER TABLE %bill% ADD opid INT(10) NULL DEFAULT NULL AFTER logtime"); self::execSql($pdo, "ALTER TABLE %bill% ADD FOREIGN KEY(opid) REFERENCES %operations% (id)"); self::execSql($pdo, "ALTER TABLE %queue% ADD opidok INT(10) NULL DEFAULT NULL AFTER cancellogtime"); self::execSql($pdo, "ALTER TABLE %queue% ADD FOREIGN KEY(opidok) REFERENCES %operations% (id)"); self::execSql($pdo, "ALTER TABLE %queue% ADD opidcancel INT(10) NULL DEFAULT NULL AFTER opidok"); self::execSql($pdo, "ALTER TABLE %queue% ADD poszeile INT NULL DEFAULT NULL AFTER opidcancel"); self::execSql($pdo, "UPDATE %queue% SET poszeile='0'"); self::execSql($pdo, "ALTER TABLE %queue% ADD FOREIGN KEY(opidcancel) REFERENCES %operations% (id)"); $rectemplate = self::getDefaultCustomRecTemplate(); $clstemplate = self::getDefaultCustomClsTemplate(); $cashtemplate = self::getDefaultCustomCashTemplate(); $foodTemplate = self::getDefaultCustomFoodTemplate(); $drinkTemplate = self::getDefaultCustomDrinkTemplate(); $cancelTemplate = self::getDefaultCustomCancelTemplate(); $pickupTemplate = self::getDefaultCustomPickupTemplate(); self::insertOrUpdateConfigItem($pdo, 'rectemplate', $rectemplate); self::insertOrUpdateConfigItem($pdo, 'clstemplate', $clstemplate); self::insertOrUpdateConfigItem($pdo, 'cashtemplate', $cashtemplate); self::insertOrUpdateConfigItem($pdo, 'foodtemplate', $foodTemplate); self::insertOrUpdateConfigItem($pdo, 'drinktemplate', $drinkTemplate); self::insertOrUpdateConfigItem($pdo, 'canceltemplate', $cancelTemplate); self::insertOrUpdateConfigItem($pdo, 'pickuptemplate', $pickupTemplate); self::execSql($pdo, "ALTER TABLE %billproducts% ADD position INT NULL DEFAULT NULL AFTER billid"); self::execSql($pdo, "ALTER TABLE %user% ADD `photo` MEDIUMBLOB"); self::execSql($pdo, "DELETE FROM %printjobs%"); self::insertOrUpdateConfigItem($pdo, 'coins', '1,2,5,10,20,50,100,200'); self::insertOrUpdateConfigItem($pdo, 'notes', '5,10,20,50,100,200,500'); self::insertOrUpdateConfigItem($pdo, 'coinvalname', 'Cent'); self::insertOrUpdateConfigItem($pdo, 'notevalname', 'Euro'); $basedb->createCountingTable($pdo); self::execSql($pdo, "ALTER TABLE %closing% ADD counting INT NULL"); self::execSql($pdo, "UPDATE %closing% SET counting='0'"); self::execSql($pdo, "ALTER TABLE %closing% ADD counted DECIMAL (19,2) NULL"); self::execSql($pdo, "UPDATE %closing% SET counted='0.0'"); Closing::createdCountedValuesForClosing($pdo); self::execSql($pdo, "ALTER TABLE %queue% ADD taxkey INT NULL DEFAULT NULL AFTER tax"); $sqlTaxChange = "(CASE "; $sqlTaxChange .= " WHEN ROUND(tax)='19' THEN '1'"; $sqlTaxChange .= " WHEN ROUND(tax)='7' THEN '2'"; $sqlTaxChange .= " WHEN ROUND(tax)='0' THEN '5'"; $sqlTaxChange .= " WHEN ROUND(tax)='16' THEN '21'"; $sqlTaxChange .= " WHEN ROUND(tax)='5' THEN '22'"; $sqlTaxChange .= " ELSE '1' END)"; $sql = "UPDATE %queue% SET taxkey = $sqlTaxChange"; self::execSql($pdo, $sql); // Food: erm. Steuersatz -> needs to be put 5%, Drinks: allg. Steuersatz -> needs to be put to 16% self::execSql($pdo, "ALTER TABLE %products% MODIFY tax INT NULL DEFAULT NULL"); self::execSql($pdo, "UPDATE %products% P, %prodtype% T SET P.tax='2' WHERE P.category=T.id AND T.kind='0'"); self::execSql($pdo, "UPDATE %products% P, %prodtype% T SET P.tax='1' WHERE P.category=T.id AND T.kind='1'"); self::execSql($pdo, "ALTER TABLE %products% ADD togotax INT NULL DEFAULT NULL AFTER tax"); self::execSql($pdo, "UPDATE %products% SET togotax='2'"); self::execSql($pdo, "ALTER TABLE %histprod% MODIFY tax INT NULL DEFAULT NULL"); self::execSql($pdo, "ALTER TABLE %histprod% ADD togotax INT NULL DEFAULT NULL AFTER tax"); self::insertOrUpdateConfigItem($pdo, 'tax', '16.0'); self::insertOrUpdateConfigItem($pdo, 'togotax', '5.0'); self::execSql($pdo, "ALTER TABLE %closing% ADD opid INT(10) NULL DEFAULT NULL "); self::execSql($pdo, "ALTER TABLE %closing% ADD FOREIGN KEY(opid) REFERENCES %operations% (id)"); self::execSql($pdo, "ALTER TABLE %closing% ADD COLUMN dsfinvkversion VARCHAR(5) DEFAULT NULL"); self::execSql($pdo, "ALTER TABLE %closing% ADD COLUMN dsfinvk_name VARCHAR(100) DEFAULT NULL"); self::execSql($pdo, "ALTER TABLE %closing% ADD COLUMN dsfinvk_street VARCHAR(100) DEFAULT NULL"); self::execSql($pdo, "ALTER TABLE %closing% ADD COLUMN dsfinvk_postalcode VARCHAR(100) DEFAULT NULL"); self::execSql($pdo, "ALTER TABLE %closing% ADD COLUMN dsfinvk_city VARCHAR(100) DEFAULT NULL"); self::execSql($pdo, "ALTER TABLE %closing% ADD COLUMN dsfinvk_country VARCHAR(100) DEFAULT NULL"); self::execSql($pdo, "ALTER TABLE %closing% ADD COLUMN dsfinvk_stnr VARCHAR(100) DEFAULT NULL"); self::execSql($pdo, "ALTER TABLE %closing% ADD COLUMN dsfinvk_ustid VARCHAR(100) DEFAULT NULL"); self::execSql($pdo, "ALTER TABLE %closing% ADD COLUMN terminalid INT DEFAULT NULL"); self::execSql($pdo, "ALTER TABLE %closing% ADD COLUMN version VARCHAR(30) DEFAULT NULL"); self::execSql($pdo, "ALTER TABLE %closing% ADD COLUMN taxset1 DECIMAL (15,2) DEFAULT NULL"); self::execSql($pdo, "ALTER TABLE %closing% ADD COLUMN taxset2 DECIMAL (15,2) DEFAULT NULL"); self::execSql($pdo, "UPDATE %closing% C SET C.taxset1=(SELECT setting FROM %config% WHERE name='tax')"); self::execSql($pdo, "UPDATE %closing% C SET C.taxset2=(SELECT setting FROM %config% WHERE name='togotax')"); self::execSql($pdo, "ALTER TABLE %closing% ADD COLUMN cashsum DECIMAL (17,2) DEFAULT NULL"); self::insertOrUpdateConfigItem($pdo, 'dsfinvkversion', '2.2'); $basedb->createVouchersTable($pdo); self::execSql($pdo, "ALTER TABLE %queue% ADD ordertype INT NULL DEFAULT NULL"); self::execSql($pdo, "UPDATE %queue% SET ordertype='" . DbUtils::$ORDERTYPE_PRODUCT . "'"); self::execSql($pdo, "ALTER TABLE %queue% ADD voucherid INT NULL DEFAULT NULL"); self::execSql($pdo, "UPDATE %queue% SET voucherid=null"); self::execSql($pdo, "ALTER TABLE %queue% ADD FOREIGN KEY(voucherid) REFERENCES %vouchers% (id)"); return array(true); } catch (PDOException $e) { return array(false,$e); } } public static $updateOrder = array( "1.3.0" => array("upd_1300_1301","1.3.1"), "1.3.1" => array("upd_1301_1302","1.3.2"), "1.3.2" => array("upd_1302_1303","1.3.3"), "1.3.3" => array("upd_1303_1304","1.3.4"), "1.3.4" => array("upd_1304_1305","1.3.5"), "1.3.5" => array("upd_1305_1306","1.3.6"), "1.3.6" => array("upd_1306_1307","1.3.7"), "1.3.7" => array("upd_1307_1308","1.3.8"), "1.3.8" => array("upd_1308_1309","1.3.9"), "1.3.9" => array("upd_1309_1310","1.3.10"), "1.3.10" => array("upd_1310_1311","1.3.11"), "1.3.11" => array("upd_1311_1312","1.3.12"), "1.3.12" => array("upd_1312_1313","1.3.13"), "1.3.13" => array("upd_1313_1314","1.3.14"), "1.3.14" => array("upd_1314_1315","1.3.15"), "1.3.15" => array("upd_1315_1316","1.3.16"), "1.3.16" => array("upd_1316_1317","1.3.17"), "1.3.17" => array("upd_1317_1318","1.3.18"), "1.3.18" => array("upd_1318_1319","1.3.19"), "1.3.19" => array("upd_1319_1320","1.3.20"), "1.3.20" => array("upd_1320_1321","1.3.21"), "1.3.21" => array("upd_1321_1322","1.3.22"), "1.3.22" => array("upd_1322_1323","1.3.23"), "1.3.23" => array("upd_1323_1324","1.3.24"), "1.3.24" => array("upd_1324_1325","1.3.25"), "1.3.25" => array("upd_1325_1326","1.3.26"), "1.3.26" => array("upd_1326_1400","1.4.0"), "1.4.0" => array("upd_1400_1401","1.4.1"), "1.4.1" => array("upd_1401_1402","1.4.2"), "1.4.2" => array("upd_1402_1403","1.4.3"), "1.4.3" => array("upd_1403_1404","1.4.4"), "1.4.4" => array("upd_1404_1405","1.4.5"), "1.4.5" => array("upd_1405_1406","1.4.6"), "1.4.6" => array("upd_1406_1407","1.4.7"), "1.4.7" => array("upd_1407_1408","1.4.8"), "1.4.8" => array("upd_1408_1409","1.4.9"), "1.4.9" => array("upd_1409_1410","1.4.10"), "1.4.10" => array("upd_1410_1411","1.4.11"), "1.4.11" => array("upd_1411_1412","1.4.12"), "1.4.12" => array("upd_1412_1413","1.4.13"), "1.4.13" => array("upd_1413_1414","1.4.14"), "1.4.14" => array("upd_1414_1415","1.4.15"), "1.4.15" => array("upd_1415_1416","1.4.16"), "1.4.16" => array("upd_1416_1417","1.4.17"), "1.4.17" => array("upd_1417_1418","1.4.18"), "1.4.18" => array("upd_1418_1500","1.5.0"), "1.5.0" => array("upd_1500_1501","1.5.1"), "1.5.1" => array("upd_1501_1502","1.5.2"), "1.5.2" => array("upd_1502_1503","1.5.3"), "1.5.3" => array("upd_1503_1504","1.5.4"), "1.5.4" => array("upd_1504_1505","1.5.5"), "1.5.5" => array("upd_1505_1506","1.5.6"), "1.5.6" => array("upd_1506_1507","1.5.7"), "1.5.7" => array("upd_1507_1508","1.5.8"), "1.5.8" => array("upd_1508_1509","1.5.9"), "1.5.9" => array("upd_1509_1510","1.5.10"), "1.5.10" => array("upd_1510_1511","1.5.11"), "1.5.11" => array("upd_1511_1512","1.5.12"), "1.5.12" => array("upd_1512_1513","1.5.13"), "1.5.13" => array("upd_1513_1514","1.5.14"), "1.5.14" => array("upd_1514_1515","1.5.15"), "1.5.15" => array("upd_1515_1516","1.5.16"), "1.5.16" => array("upd_1516_1517","1.5.17"), "1.5.17" => array("upd_1517_1518","1.5.18"), "1.5.18" => array("upd_1518_1519","1.5.19"), "1.5.19" => array("upd_1519_1520","1.5.20"), "1.5.20" => array("upd_1520_1521","1.5.21"), "1.5.21" => array("upd_1521_1522","1.5.22"), "1.5.22" => array("upd_1522_1523","1.5.23"), "1.5.23" => array("upd_1523_1524","1.5.24"), "1.5.24" => array("upd_1524_1525","1.5.25"), "1.5.25" => array("upd_1525_1526","1.5.26"), "1.5.26" => array("upd_1526_1527","1.5.27"), "1.5.27" => array("upd_1527_1528","1.5.28"), "1.5.28" => array("upd_1528_1529","1.5.29"), "1.5.29" => array("upd_1529_1530","1.5.30"), "1.5.30" => array("upd_1530_1531","1.5.31"), "1.5.31" => array("upd_1531_1532","1.5.32"), "1.5.32" => array("upd_1532_1533","1.5.33"), "1.5.33" => array("upd_1533_1600","1.6.0"), "1.6.0" => array("upd_1600_1601","1.6.1"), "1.6.1" => array("upd_1601_1602","1.6.2"), "1.6.2" => array("upd_1602_1603","1.6.3"), "1.6.3" => array("upd_1603_1604","1.6.4"), "1.6.4" => array("upd_1604_1605","1.6.5"), "1.6.5" => array("upd_1605_1606","1.6.6"), "1.6.6" => array("upd_1606_1607","1.6.7"), "1.6.7" => array("upd_1607_1608","1.6.8"), "1.6.8" => array("upd_1608_1609","1.6.9"), "1.6.9" => array("upd_1609_1610","1.6.10"), "1.6.10" => array("upd_1610_2000","2.0.0") ); public static function runUpdateProcess($pdo,$prefix, $dbname, $untilVersion,$checkValidVersion) { $curversion = CommonUtils::getConfigValue($pdo, "version", "0"); if ($checkValidVersion && !array_key_exists($curversion, self::$updateOrder) && ($curversion != "{VERSION}")) { return array("status" => "ERROR","msg" => "Versionsupdate von Quellversion $curversion nicht möglich."); } $params = [$pdo, $prefix, $dbname]; $updateCompleted = false; while (!$updateCompleted) { $curversion = CommonUtils::getConfigValue($pdo, "version", "0"); if ($curversion == $untilVersion) { // final version reached break; } if (!array_key_exists($curversion, self::$updateOrder)) { $updateCompleted = true; break; } $updContext = self::$updateOrder[$curversion]; $updFct = $updContext[0]; set_time_limit(60*60); $ret = call_user_func_array(["Version", $updFct], $params); if (!$ret[0]) { return array("status" => "ERROR","msg" => $ret[1]); } self::updateVersion($pdo, $updContext[1]); } return array("status" => "OK"); } }