From 863683ef23dde5575e4f0c53f3da75b66f6817fa Mon Sep 17 00:00:00 2001 From: Geno Date: Thu, 19 Nov 2020 22:58:20 +0100 Subject: [PATCH] OrderSprinter 1.1.22 --- javaprinter/javaprinter.jar | Bin 42352 -> 42375 bytes printserver/OrderSprinterPrintserver.exe | Bin 260096 -> 260096 bytes webapp/OrderSprinterPrintserver.exe | Bin 260096 -> 260096 bytes webapp/bar.html | 2 +- webapp/bill.html | 2 +- webapp/feedback.html | 2 +- webapp/index.html | 4 +- webapp/install.html | 2 +- webapp/install/installer.php | 64 +++++++++++++++++-- webapp/kitchen.html | 2 +- webapp/manager.html | 76 ++++++++++++++++++++++- webapp/paydesk.html | 2 +- webapp/php/admin.php | 36 ++++++----- webapp/php/bill.php | 21 +++++++ webapp/php/closing.php | 2 +- webapp/php/queuecontent.php | 12 +++- webapp/php/utilities/basedb.php | 2 + webapp/preferences.html | 2 +- webapp/products.html | 2 +- webapp/rating.html | 2 +- webapp/reports.html | 2 +- webapp/reservation.html | 2 +- webapp/supplydesk.html | 2 +- webapp/waiter.html | 4 +- 24 files changed, 205 insertions(+), 40 deletions(-) diff --git a/javaprinter/javaprinter.jar b/javaprinter/javaprinter.jar index b5a4d1d2fb70d392ab7a3a349924009cbb3648d2..d840991e42384cf6273fe78376d9e5f00d2917a9 100644 GIT binary patch delta 3208 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 MDsN}{#{7>F0Hmik`2YX_ delta 161 zcmZqpz~AtJe?kZI!3%F2yIZ>%Tf3RIb~B&vWfa{W-N*b`RoTVR)Y;k4P1nT4&`H%Tf3RIb~B&vWfa>U-N*b`RoTGN+1bh5P}kYm#ZA}5 z(9u!X(aqUH*UZV%#K_3d$l1`@aC_nwW*corqwVwVGtXlcC_KH!;r`)Oj_XfkPf-#& zcyPPVQ|2$+KxxO1%)X4AVhoHx$iN`BeflTnct)W3_s`6$f%NpnUzyEWjTrP83?>^g MDsN}{#{7>F0Hmik`2YX_ delta 161 zcmZqpz~AtJe?kZI!3%F2yIZ>%Tf3RIb~B&vWfa{W-N*b`RoTVR)Y;k4P1nT4&`H - + diff --git a/webapp/bill.html b/webapp/bill.html index ee66d72..80016cf 100644 --- a/webapp/bill.html +++ b/webapp/bill.html @@ -5,7 +5,7 @@ - + diff --git a/webapp/feedback.html b/webapp/feedback.html index 5830265..c15efde 100644 --- a/webapp/feedback.html +++ b/webapp/feedback.html @@ -4,7 +4,7 @@ - + diff --git a/webapp/index.html b/webapp/index.html index f43833e..273ac30 100644 --- a/webapp/index.html +++ b/webapp/index.html @@ -7,8 +7,8 @@ - - + + diff --git a/webapp/install.html b/webapp/install.html index 861e1b0..4b28bfc 100644 --- a/webapp/install.html +++ b/webapp/install.html @@ -679,7 +679,7 @@ $(document).ready(function() {   - +   diff --git a/webapp/install/installer.php b/webapp/install/installer.php index 88c9342..a393af9 100644 --- a/webapp/install/installer.php +++ b/webapp/install/installer.php @@ -943,6 +943,59 @@ return false; } } +function updateUserTable1121_1122($prefix,$version) { +$pdo = $this->pdo; +try { +if ($version != "1.1.21") { +$ret = $this->updateUserTable1120_1121($prefix,$version); +if (!$ret) { +return false; +} +} + +$adminCl = new Admin(); +DbUtils::overrulePrefix($prefix); + +$sql = "INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL,?,?)"; +$stmt = $pdo->prepare($this->basedb->resolveTablenamesInSqlString($sql)); +$stmt->execute(array('paydeskid','OrderSprinter-1')); +$stmt->execute(array('aeskey','0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20')); +$stmt->execute(array('certificatesn','1234567')); + +$sql = "ALTER TABLE %bill% ADD prevbrutto DECIMAL (9,2) NULL AFTER netto"; +$stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); +$stmt->execute(); +$sql = "ALTER TABLE %bill% ADD prevnetto DECIMAL (9,2) NULL AFTER prevbrutto"; +$stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); +$stmt->execute(); + +$sql = "SELECT IFNULL(MAX(id), 0) as maxid FROM %bill%"; +$stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); +$stmt->execute(); +$row = $stmt->fetchObject(); +$maxid = $row->maxid; + +$sql = "UPDATE %bill% SET prevbrutto=?, prevnetto=? WHERE id=?"; +$stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); +$stmt->execute(array(0,0,1)); + +for ($i=2;$i<=$maxid;$i++) { +$sql = "SELECT SUM(brutto) as sumbrutto, SUM(netto) as sumnetto FROM %bill% WHERE idprepare(DbUtils::substTableAlias($sql)); +$stmt->execute(array($i)); +$row = $stmt->fetchObject(); +$sql = "UPDATE %bill% SET prevbrutto=?, prevnetto=? WHERE id=?"; +$stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); +$stmt->execute(array($row->sumbrutto,$row->sumnetto,$i)); +} + +$this->updateVersion($pdo, '1.1.22'); +return true; +} catch (PDOException $e) { +return false; +} +} + function setVersion($prefix,$theVersion) { $pdo = $this->pdo; try { @@ -1014,7 +1067,7 @@ $this->basedb->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VAL $this->basedb->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'billlanguage', $billlanguage)"); $this->basedb->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'currency', '$currency')"); $this->basedb->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'receiptfontsize', '12')"); -$this->basedb->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'version', '1.1.21')"); +$this->basedb->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'version', '1.1.22')"); $this->basedb->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'paymentconfig', '0')"); $this->basedb->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'remoteaccesscode', null)"); $this->basedb->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'decpoint', '$decpoint')"); @@ -1037,6 +1090,9 @@ $this->basedb->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VAL $this->basedb->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'discount3', '10')"); $this->basedb->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'austria', '0')"); +$this->basedb->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'paydeskid', 'OrderSprinter-1')"); +$this->basedb->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'aeskey', '0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20')"); +$this->basedb->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'certificatesn', '1234567')"); // prepare for later inconsistency check if version is obsolete date_default_timezone_set($timezone); @@ -1372,7 +1428,7 @@ $zones[] = $timezone_identifiers[$i]; } echo json_encode($zones); } else if ($command == 'update') { -$installerVersion = "1.1.21"; +$installerVersion = "1.1.22"; $admin = new InstallAdmin(); $pdo = $admin->openDbAndReturnPdo($_POST['host'],$_POST['db'],$_POST['user'],$_POST['password']); @@ -1401,7 +1457,7 @@ $supportedVersions = array("1.0.22","1.0.23","1.0.24","1.0.25","1.0.26","1.0.27" "1.0.30","1.0.31","1.0.32","1.0.33","1.0.34","1.0.35","1.0.36","1.0.37","1.0.38","1.0.39", "1.0.40","1.0.41","1.0.42","1.0.43", "1.1.0","1.1.1","1.1.2","1.1.3","1.1.4","1.1.5","1.1.6","1.1.7","1.1.8", "1.1.9","1.1.10","1.1.11","1.1.12","1.1.13","1.1.14","1.1.15","1.1.16","1.1.17", -"1.1.18","1.1.19","1.1.20" +"1.1.18","1.1.19","1.1.20","1.1.21" ); if (!in_array($version, $supportedVersions)) { @@ -1409,7 +1465,7 @@ echo json_encode("Quellversion nicht unterstützt"); return; } -$ret = $admin->updateUserTable1120_1121($_POST['prefix'], $version); +$ret = $admin->updateUserTable1121_1122($_POST['prefix'], $version); if(session_id() == '') { session_start(); diff --git a/webapp/kitchen.html b/webapp/kitchen.html index f150a40..d2c06ac 100644 --- a/webapp/kitchen.html +++ b/webapp/kitchen.html @@ -5,7 +5,7 @@ - + diff --git a/webapp/manager.html b/webapp/manager.html index 8bd7911..29cb1d1 100644 --- a/webapp/manager.html +++ b/webapp/manager.html @@ -5,7 +5,7 @@ - + @@ -253,7 +253,13 @@ var MAN_UNPAID1 = ["Es wurden folgende Tische noch nicht abgerechnet: ", var MAN_UNPAID2 = ["Soll die Tageserfassung vorgenommen werden? In diesem Fall wird die Tisch-Zuweisung der unbezahlten Artikel gelöscht!", "Do you want to continue create the closing? In this case these products will be unassigned from the tables!", "Quieres continuar y removar estos productos?"]; - +var MAN_AUSTRIA_INCOMPLETE = ["Aktuell ist OrderSprinter noch nicht kompatibel mit der RKSV in Österreich!","Currently OrderSprinter is still incompatible with the RKSV in Austria!","De momento OrderSprinter no esta acuerdo con la RKSV en Austria!"]; +var MAN_PAYDESKID = ["Kassenidentifikationsnummer","Paydesk ID","Caja identificación"]; +var MAN_AESKEY = ["AES256 Schlüssel","AES256 Key","AES256 LLave"]; +var MAN_AESKEY_WRONG_LENGTH = ["Ein AES256-Schlüssel muss in Hex-Darstellung 64 Zeichen haben.","An AES256 key requires to have 64 characters in a hex string.", "Una llave de AES256 tiene que contener 64 characteres en forma hex."]; +var MAN_AESKEY_NO_HEX = ["Der AES-Schlüssel muss als Hex-Zahl angegeben werden.","The AES key must be specified as hex number","La llava AES tiene que especificado en formato hex."]; +var MAN_CERTIFICATE_SN = ["Zertifikatsseriennummer", "Certificate Serial No","Certificado ID"]; + var lang = 0; var generalVals = [12,2,0,3,0,1,1,0,0,1, 0,50,20,10]; @@ -295,7 +301,11 @@ var generalValuesSettings = [ ["smtpsecure",MAN_SMTPSECURE[lang],"s",6], ["smtpport",MAN_SMTPPORT[lang],"i",0,""], // // REM Web setting - ["webimpressum",MAN_WEBIMPRESSUM[lang],"i",0,""] + ["webimpressum",MAN_WEBIMPRESSUM[lang],"i",0,""], + + ["paydeskid",MAN_PAYDESKID[lang],"i",0,""], + ["aeskey",MAN_AESKEY[lang],"i",0,""], + ["certificatesn",MAN_CERTIFICATE_SN[lang],"i",0,""] ]; var predef = ""; @@ -348,6 +358,11 @@ function setLanguage(l) { $("#smtppasstxt").html(MAN_SMTPPASS[l]); $("#smtpporttxt").html(MAN_SMTPPORT[l]); + $("#paydeskidtxt").html(MAN_PAYDESKID[l]); + $("#austriahint").html(MAN_AUSTRIA_INCOMPLETE[l]); + $("#aeskeytxt").html(MAN_AESKEY[l]); + $("#certificatesntxt").html(MAN_CERTIFICATE_SN[l]); + $("#emailbadratingtxt").html(MAN_EMAIL_BAD_RATING[l]); $("#emailratingcontacttxt").html(MAN_EMAIL_RATING_CONTACT[l]); @@ -505,6 +520,10 @@ function insertGeneralConfigItems(configResult) { $("#partOfSmtpsecure").html(createSMTPSecure(values.smtpsecure)); $("#smtpport").val(values.smtpport); + $("#paydeskid").val(values.paydeskid); + $("#aeskey").val(values.aeskey); + $("#certificatesn").val(values.certificatesn); + $("#configpart").trigger("create"); } else { setTimeout(function(){document.location.href = "index.html"},250); // not logged in @@ -876,6 +895,21 @@ function binding() { needsCheck : aGenConfigEntry[3], checkTxt : (aGenConfigEntry[3] ? aGenConfigEntry[4] : "") }; + + if (entryName == "aeskey") { + var aeskey = $("#aeskey").val().trim(); + if (aeskey.length != 64) { + alert(MAN_AESKEY_WRONG_LENGTH[lang]); + return; + } + + var isOk = /^[0-9A-F]{64}$/i.test(aeskey); + if (!isOk) { + alert(MAN_AESKEY_NO_HEX[lang]); + return; + } + } + changedEntries[changedEntries.length] = valueElToChange; } @@ -1068,8 +1102,28 @@ function binding() { }; doAjax("POST","php/contenthandler.php?module=admin&command=assignTaxes",data,confirmMsg,"Problem Steuersatzzuweisung"); }); + + $("#configpart").off("collapsibleexpand").on("collapsibleexpand", function (e) { + e.stopImmediatePropagation(); + e.preventDefault(); + setVisibilityOfAustriaButtons(); + }); + + $("#austria").off("change").on("change", function (e) { + e.stopImmediatePropagation(); + e.preventDefault(); + setVisibilityOfAustriaButtons(); + }); } +function setVisibilityOfAustriaButtons() { + var austriaSelectionBox = $("#austria").find(":selected").val(); + if (austriaSelectionBox == 1) { + $("#partIfAustriaEnabled").show(); + } else { + $("#partIfAustriaEnabled").hide(); + } +} function confirmMsg (result) { if (result.status != 'OK') { @@ -2141,6 +2195,22 @@ $(document).on("pageinit", "#admin-page", function () {
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
diff --git a/webapp/paydesk.html b/webapp/paydesk.html index 4e5807d..8aaa86b 100644 --- a/webapp/paydesk.html +++ b/webapp/paydesk.html @@ -5,7 +5,7 @@ - + diff --git a/webapp/php/admin.php b/webapp/php/admin.php index 38c4705..6d22375 100644 --- a/webapp/php/admin.php +++ b/webapp/php/admin.php @@ -784,6 +784,10 @@ class Admin { $smtpport = $this->getConfigItemOrDefault("smtpport",$stmt,""); } + $paydeskid = $this->getConfigItemOrDefault("paydeskid",$stmt,""); + $aeskey = $this->getConfigItemOrDefault("aeskey",$stmt,""); + $certificatesn = $this->getConfigItemOrDefault("certificatesn", $stmt, ""); + $webimpressum = $this->getConfigItemOrDefault("webimpressum",$stmt,""); restore_error_handler(); @@ -810,7 +814,7 @@ class Admin { "sday" => $now["mday"],"smonth" => $now["mon"], "syear" => $now["year"], "shour" => $now["hours"], "smin" => $now["minutes"], "smtphost" => $smtphost,"smtpauth" => $smtpauth,"smtpuser" => $smtpuser,"smtppass" => $smtppass,"smtpsecure" => $smtpsecure,"smtpport" => $smtpport, "webimpressum" => $webimpressum, "cancelunpaidcode" => $cancelunpaidcode, "discount1" => $discount1,"discount2" => $discount2,"discount3" => $discount3, - "austria" => $austria + "austria" => $austria, "paydeskid" => $paydeskid, "aeskey" => $aeskey, "certificatesn" => $certificatesn ); if ($forHtml) { @@ -1123,19 +1127,19 @@ class Admin { $right_rating = $_SESSION['right_rating']; if (!self::isOnlyRatingUser($rights, $right_rating, true)) { - if ($_SESSION['right_waiter']) { $mainMenu[] = array("name" => $waitertxt[$lang], "link" => "waiter.html?v=1.1.21"); }; - if ($_SESSION['right_kitchen']) { $mainMenu[] = array("name" => $kitchentxt[$lang], "link" => "kitchen.html?v=1.1.21"); }; - if ($_SESSION['right_bar']) { $mainMenu[] = array("name" => "Bar", "link" => "bar.html?v=1.1.21"); }; - if ($_SESSION['right_supply']) { $mainMenu[] = array("name" => $supplytxt[$lang], "link" => "supplydesk.html?v=1.1.21"); }; + if ($_SESSION['right_waiter']) { $mainMenu[] = array("name" => $waitertxt[$lang], "link" => "waiter.html?v=1.1.22"); }; + if ($_SESSION['right_kitchen']) { $mainMenu[] = array("name" => $kitchentxt[$lang], "link" => "kitchen.html?v=1.1.22"); }; + if ($_SESSION['right_bar']) { $mainMenu[] = array("name" => "Bar", "link" => "bar.html?v=1.1.22"); }; + if ($_SESSION['right_supply']) { $mainMenu[] = array("name" => $supplytxt[$lang], "link" => "supplydesk.html?v=1.1.22"); }; if ($_SESSION['right_paydesk']) { $mainMenu[] = array("name" => $paydesktxt[$lang], "link" => "paydesk.html"); }; - if ($_SESSION['right_statistics']) { $mainMenu[] = array("name" => $stattxt[$lang], "link" => "reports.html?v=1.1.21"); }; - if ($_SESSION['right_bill']) { $mainMenu[] = array("name" => $bontxt[$lang], "link" => "bill.html?v=1.1.21"); }; - if ($_SESSION['right_products']) { $mainMenu[] = array("name" => $prodtxt[$lang], "link" => "products.html?v=1.1.21"); }; - if ($_SESSION['right_reservation']) { $mainMenu[] = array("name" => $restxt[$lang], "link" => "reservation.html?v=1.1.21"); }; - if ($_SESSION['right_rating']) { $mainMenu[] = array("name" => $ratingtxt[$lang], "link" => "rating.html?v=1.1.21"); }; - if ($_SESSION['right_manager'] || $_SESSION['is_admin']) { $mainMenu[] = array("name" => $admintxt[$lang], "link" => "manager.html?v=1.1.21"); }; - $mainMenu[] = array("name" => $settingtxt[$lang], "link" => "preferences.html?v=1.1.21"); - $mainMenu[] = array("name" => "Feedback", "link" => "feedback.html?v=1.1.21"); + if ($_SESSION['right_statistics']) { $mainMenu[] = array("name" => $stattxt[$lang], "link" => "reports.html?v=1.1.22"); }; + if ($_SESSION['right_bill']) { $mainMenu[] = array("name" => $bontxt[$lang], "link" => "bill.html?v=1.1.22"); }; + if ($_SESSION['right_products']) { $mainMenu[] = array("name" => $prodtxt[$lang], "link" => "products.html?v=1.1.22"); }; + if ($_SESSION['right_reservation']) { $mainMenu[] = array("name" => $restxt[$lang], "link" => "reservation.html?v=1.1.22"); }; + if ($_SESSION['right_rating']) { $mainMenu[] = array("name" => $ratingtxt[$lang], "link" => "rating.html?v=1.1.22"); }; + if ($_SESSION['right_manager'] || $_SESSION['is_admin']) { $mainMenu[] = array("name" => $admintxt[$lang], "link" => "manager.html?v=1.1.22"); }; + $mainMenu[] = array("name" => $settingtxt[$lang], "link" => "preferences.html?v=1.1.22"); + $mainMenu[] = array("name" => "Feedback", "link" => "feedback.html?v=1.1.22"); } $mainMenu[] = array("name" => $logout[$lang], "link" => "logout.php"); @@ -1144,7 +1148,7 @@ class Admin { $waiterMessage = $this->getMessage(null, "waitermessage"); } // CAUTION: change version also in config.txt!!! - $mainMenuAndVersion = array ("version" => "OrderSprinter 1.1.21", + $mainMenuAndVersion = array ("version" => "OrderSprinter 1.1.22", "user" => $currentUser, "menu" => $mainMenu, "waitermessage" => $waiterMessage, @@ -1359,6 +1363,10 @@ class Admin { "smtppass" => array("dbcol" => "smtppass","checknum" => 0), "smtpsecure" => array("dbcol" => "smtpsecure","checknum" => 1), "smtpport" => array("dbcol" => "smtpport","checknum" => 0), + + "paydeskid" => array("dbcol" => "paydeskid","checknum" => 0), + "aeskey" => array("dbcol" => "aeskey","checknum" => 0), + "certificatesn" => array("dbcol" => "certificatesn","checksum" => 0) ); $problem = false; foreach ($changedValues as $aChangeSet) { diff --git a/webapp/php/bill.php b/webapp/php/bill.php index 29b68e9..407f68a 100644 --- a/webapp/php/bill.php +++ b/webapp/php/bill.php @@ -363,6 +363,19 @@ class Bill { $stmt = $pdo->prepare($this->dbutils->resolveTablenamesInSqlString($sql)); $stmt->execute(array($nextbillid,$currentTime,$money,$money,'0.00',-1,1,$userId,NULL,$signature)); + $lastId = $pdo->lastInsertId(); + $prevbrutto = 0; + $prevnetto = 0; + if ($lastId > 1) { + $sql = "SELECT brutto,prevbrutto,netto,prevnetto FROM %bill% WHERE id=?"; + $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); + $stmt->execute(array($lastId-1)); + $row =$stmt->fetchObject(); + } + $sql = "UPDATE %bill% SET prevbrutto=?,prevnetto=? WHERE id=?"; + $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); + $stmt->execute(array($row->brutto + $row->prevbrutto,$row->netto + $row->prevnetto,$lastId)); + $pdo->commit(); echo json_encode(array("status" => "OK")); } else { @@ -717,6 +730,14 @@ class Bill { $stmt->execute(array($nextbillid,$currentTime,$stornval,$stornonettoval,$tax,$tableid,$paymentid,$userIdOfStornoUser,$billid,0,$signature)); $refIdOfStornoEntry = $pdo->lastInsertId(); + $sql = "SELECT brutto,netto,prevbrutto,prevnetto FROM %bill% WHERE id=?"; + $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); + $stmt->execute(array($refIdOfStornoEntry-1)); + $row =$stmt->fetchObject(); + $sql = "UPDATE %bill% set prevbrutto=?,prevnetto=? WHERE id=?"; + $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); + $stmt->execute(array($row->brutto + $row->prevbrutto + $stornval,$row->netto + $row->prevnetto + $stornonettoval,$refIdOfStornoEntry)); + // 3. mark bill as part of storno $sql = "UPDATE %bill% SET status='x', closingid=null, ref=? WHERE id=?"; $stmt = $pdo->prepare($this->dbutils->resolveTablenamesInSqlString($sql)); diff --git a/webapp/php/closing.php b/webapp/php/closing.php index 771e4ac..105f7fe 100644 --- a/webapp/php/closing.php +++ b/webapp/php/closing.php @@ -619,7 +619,7 @@ $sql = "select count(%queue%.productname) as count,%queue%.productname,%queue%.p $sql .= " from %queue%,%bill% where "; $sql .= "%queue%.billid=%bill%.id AND %bill%.closingid=? AND "; $sql .= "%bill%.status is null "; -$sql .= "group by %queue%.productname,%queue%.price"; +$sql .= "group by %queue%.productname,%queue%.tax,%queue%.price"; $stmt = $pdo->prepare($this->dbutils->resolveTablenamesInSqlString($sql)); $stmt->execute(array($closingid)); diff --git a/webapp/php/queuecontent.php b/webapp/php/queuecontent.php index 9bd6c02..57da660 100644 --- a/webapp/php/queuecontent.php +++ b/webapp/php/queuecontent.php @@ -1575,10 +1575,18 @@ class QueueContent { $stmt->execute(); $numberOfIds = $stmt->rowCount(); + $newprevbrutto = 0; + $newprevnetto = 0; if ($numberOfIds > 0) { $row =$stmt->fetchObject(); if ($row != null) { $billid = intval($row->id)+1; + $sql = "SELECT brutto,netto,prevbrutto,prevnetto FROM %bill% WHERE id=?"; + $stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); + $stmt->execute(array($row->id)); + $row = $stmt->fetchObject(); + $newprevbrutto = $row->prevbrutto + $row->brutto; + $newprevnetto = $row->prevnetto + $row->netto; } else { echo " - row ist null - "; $pdo->rollBack(); @@ -1605,9 +1613,9 @@ class QueueContent { // now calculate the signature for the bill entry $signature = $this->commonUtils->calcSignatureForBill($pdo,$currentTime, $brutto, $netto, '0.00', $userid); - $billInsertSql = "INSERT INTO `%bill%` (`id` , `billdate`,`brutto`,`netto`,`tableid`,`paymentid`,`userid`,`ref`,`tax`,`host`,`signature`) VALUES (?,?,?,?,?,?,?,NULL,NULL,?,?)"; + $billInsertSql = "INSERT INTO `%bill%` (`id` , `billdate`,`brutto`,`netto`,`prevbrutto`,`prevnetto`,`tableid`,`paymentid`,`userid`,`ref`,`tax`,`host`,`signature`) VALUES (?,?,?,?,?,?,?,?,?,NULL,NULL,?,?)"; $stmt = $pdo->prepare($this->dbutils->resolveTablenamesInSqlString($billInsertSql)); - $stmt->execute(array($billid,$currentTime,$brutto,$netto,$tableid,$paymentId,$userid,$host,$signature)); + $stmt->execute(array($billid,$currentTime,$brutto,$netto,$newprevbrutto,$newprevnetto,$tableid,$paymentId,$userid,$host,$signature)); // now declare them all to be paid: for ($i=0;$i - + diff --git a/webapp/products.html b/webapp/products.html index c39dc2a..62efee2 100644 --- a/webapp/products.html +++ b/webapp/products.html @@ -7,7 +7,7 @@ - + diff --git a/webapp/rating.html b/webapp/rating.html index b3535de..99a089a 100644 --- a/webapp/rating.html +++ b/webapp/rating.html @@ -7,7 +7,7 @@ - + diff --git a/webapp/reports.html b/webapp/reports.html index 1b18719..520df94 100644 --- a/webapp/reports.html +++ b/webapp/reports.html @@ -7,7 +7,7 @@ - + diff --git a/webapp/reservation.html b/webapp/reservation.html index ca762d1..05326cc 100644 --- a/webapp/reservation.html +++ b/webapp/reservation.html @@ -5,7 +5,7 @@ - + diff --git a/webapp/supplydesk.html b/webapp/supplydesk.html index 1a858bb..fe2dded 100644 --- a/webapp/supplydesk.html +++ b/webapp/supplydesk.html @@ -5,7 +5,7 @@ - + diff --git a/webapp/waiter.html b/webapp/waiter.html index 3c9aeae..588f840 100644 --- a/webapp/waiter.html +++ b/webapp/waiter.html @@ -4,7 +4,7 @@ - + @@ -30,7 +30,7 @@ +var W_TABLES=["Tische","Tables","Mesas"];var W_ROOMS=["Räume","Rooms","Espacios"];var W_SELECTION=["Auswahl","Selection","Selección"];var W_LAST_SELECTED=["zuletzt","last","seleccionado"];var W_FAVS=["Favoriten","Favorites","Favoritos"];var W_NEW_ORDER=["Neue Order","New Orders","Ordenes nuevas"];var W_KIT_BAR=["nicht serviert/unbezahlt","unserved/unpaid","no servido/impagado"];var W_OTHER_PROD=["Auswahl Produktkategorie","Select product categroy","Categoría diferente"];var W_WORK_TICKET=["Arbeitsbon","Work ticket","Tique de trabajar"];var W_NOTE=["Bemerkung","Comment","Comentario"];var W_SEND_ORDERS=["Bestellung senden","Send orders","Enviar Ordenes"];var W_TO_PAYDESK=["-> Kasse","-> Paydesk","-> Caja"];var W_TABLECHANGE=["Tischwechsel","Change table","Cambiar mesa"];var W_ROOMTABLE=["Raum-Tisch","Room-Table","Espacio-Mesa"];var W_TABLE_SEL=["Tischauswahl","Select table","Qué mesa?"];var W_UNDELIV_INFO=["Liste enthält die Produkte die noch in der Küchen-/Baransicht sind, sowie unbezahlte Produkte, die die Bereitstellungsansicht nicht durchlaufen.","List contains the products which are still in kitchen or bar view, as well as unpaid products that do not pass the supplydesk view.","La lista contiene los productos que estan todavía en modulo de cocina/bar, también productos impagados que no pasan vista de productos preparados."];var W_REMOVE_ERROR=["Ansicht nicht mehr aktuell - Liste wird neu geladen.","View is obsolete - List will be reloaded.","Vista no esta actual - vamos a actualisar la lista."];var W_FOOD_FOR=["Speisen für","Food for","Comidas para"];var W_DRINKS_FOR=["Getränke für","Beverage for","Bebidas para"];var W_ACT_NEW_ORD_EL=["Aktion auswählen","Select action","Que acción?"];var W_ACT_CHANGE=["Ändern","Modify","Modificar"];var W_ACT_CHANGE_ALL=["Alle Ändern","Modify all","Modificar todo"];var W_ACT_CHANGE_ONE=["Einen Artikel ändern","Modify one item","Modificar un artículo"];var W_APPLY=["Anwenden","Apply","Aplicar"];var W_CANCEL=["Abbrechen","Cancel","Cancelar"];var W_STILL_UNSENT_ORDERS=["Es sind noch ungesendete Orders vorhanden!","There are unsent orders in the list","Hay elementos in la liste que no han enviados"];var W_EXTRAS=["Extras/Optionen","Add-ons/Options","Opciones"];var W_OPEN_PANEL=["Extras-Auswahl noch offen","Add-ons selection still open","Selección de opciones todavía abierta"];var W_DEL=["Löschen","Delete","Removar"];var W_MSG=["Nachricht","Message","Mensaje"];var W_CHANGE_PRICE=["Neuer Preis: ","New price: ","Cambiar precio: "];var W_PRICE=["Preis","Price","Precio"];var W_WRONG_FORMAT=["Falsches Zahlenformat","Wrong number format","Formato de precio incorecto"];var W_TOGO=["Außer-Haus-Verkauf","Sale with Tax No 2","Venta IVA 2"];var W_YES=["Ja","Yes","Si"];var W_NO=["Nein","No","No"];var W_DISCARD_NO_ASK=["Es sind noch ungesendete Orders vorhanden! Sollen diese verworfen werden?","There are still unsent orders. Do you want to discard them?","Hay todavía ordenes non-enviados. Removarlos?"];var W_DISCARD_HEADER=["Neue Orders verwerfen?","Discard new orders?","Removar ordenes nuevos?"];var W_SEARCH=["Produktsuche","Product search","Buscar producto"];var W_SEARCHRESULTS=["Suchergebnis","Search Result","Encontrado"];var W_WRONG_PIN=["Falscher Stornocode","Wrong cancel code","Codigo falso"];var W_NO_ORDERS=["Keine gebuchten Orders vorhanden!","No orders available!","No hay ningún orden!"];var W_TO_PAY=["offen","to pay","a pagar"];var W_UNPAID=["unbezahlt","unpaid","no pagado"];var W_UNDELIVERED=["nicht serviert (+ unbezahlt)","not served (and unpaid)","no servidos (y non-pagado)"];var W_MOVE_PRODS=["Produkte verschieben","Move products","Productos a otra mesa"];var W_NO_PRODS_SELECTED=["Es wurden keine Produkte ausgewählt!","You have not chosen any products!","No ha seleccionado ningún producto!"];var CHANGE_ALL=0;var CHANGE_ONE=1;var WORKFLOW_DIGI_WORK=0;var WORKFLOW_DIGI=1;var WORKFLOW_WORK=2;var WORKFLOW_WORK_SEND=3;function Grouping(b,a){this.set=b;this.sortedset=[];this.group=function(){this.sortedset=[];for(var g=0;g/g,">"))}function setLanguage(h){lang=h;$("#roomtableheader2").html(W_ROOMTABLE[lang]);$("#tableselection").html(W_TABLE_SEL[lang]);$("#actiontxt").html(W_ACT_NEW_ORD_EL[lang]);$("#actdeltxt").html(W_DEL[lang]);$("#discard_new_orders_yes").html(W_YES[lang]);$("#discard_new_orders_no").html(W_NO[lang]);$("#discardnewordersask").html(W_DISCARD_NO_ASK[lang]);$("#discardnoheader").html(W_DISCARD_HEADER[lang]);$("#change_unpaid_txt").html(W_UNPAID[lang]);$("#change_undelivered_txt").html(W_UNDELIVERED[lang]);$("#moveprods").html(W_MOVE_PRODS[lang]);var f="";if(prominentsearch==0){f+='
'}else{f+='
'}f+="
";var e='
';if(prominentsearch==0){$("#searchposition-normal").html(f)}else{$("#searchposition-prominent").html(f)}var b=e;if((workflowconfig==WORKFLOW_DIGI_WORK)||(workflowconfig==WORKFLOW_DIGI)||(workflowconfig==WORKFLOW_WORK_SEND)){b+=''+W_SEND_ORDERS[lang]+""}if((workflowconfig==WORKFLOW_DIGI_WORK)||(workflowconfig==WORKFLOW_WORK)||(workflowconfig==WORKFLOW_WORK_SEND)){b+=''+W_WORK_TICKET[lang]+""}b+=''+W_TO_PAYDESK[lang]+'';$("#commandbuttons").html(b);$("#waiterui").trigger("create");var c='
';$("#actremark").html(c);if(rightchangeprice==1){var a='';$("#actchangepricesection").html(a);var g='";$("#actdiscount").html(g)}$("#actionneworderconfirm_all").html(W_ACT_CHANGE_ALL[lang]);$("#actionneworderconfirm_one").html(W_ACT_CHANGE_ONE[lang]);$("#actionnewordercancel").html(W_CANCEL[lang]);$("#select-comment").off("click").on("click",function(k){k.stopImmediatePropagation();k.preventDefault();var i=$("#select-comment").find(":selected").val();$("#optionfield").val(i)});$("#act-select-comment").off("click").on("click",function(k){k.stopImmediatePropagation();k.preventDefault();var i=$("#act-select-comment").find(":selected").val();$("#act-optionfield").val(i)});$("#discard_new_orders_no").off("click").on("click",function(i){i.stopImmediatePropagation();i.preventDefault();parent.history.back()});$("#discard_new_orders_no").off("click").on("click",function(i){i.stopImmediatePropagation();i.preventDefault();parent.history.back()});$("#discard_new_orders_yes").off("click").on("click",function(i){i.stopImmediatePropagation();i.preventDefault();neworders=[];gotoOtherPage($("#discardnewordersdlg").data("link"))});$("#prodbackbtn").off("click").on("click",function(i){if(neworders.length!=0){i.stopImmediatePropagation();i.preventDefault();hideMenuProd();$("#discardnewordersdlg").data("link","back_table");$.mobile.changePage("#discardnewordersdlg")}else{parent.history.back()}});$("#searchField").off("keyup").on("keyup",function(i){generateSearchResults()})}function generateSearchResults(){var e=$("#searchField").val().trim().toLowerCase();if(e.length<3){$("#searchResult").html("")}else{var c=getProdSizeClass();var b='";$("#searchResult").html(b);$("#searchResult").trigger("create");$(".srinfo").off("click").on("click",function(i){i.stopImmediatePropagation();i.preventDefault();var f=this.id.split("_")[1];var h=getProdEntry(f);var g=h.price;alert(W_PRICE[lang]+": "+g+" "+currency)});$(".srplus").off("click").on("click",function(h){h.stopImmediatePropagation();h.preventDefault();var g=this.id.split("_")[1];var f=getSearchProdCount(g);$("#srprodcount_"+g).html(f+1)});$(".srminus").off("click").on("click",function(h){h.stopImmediatePropagation();h.preventDefault();var g=this.id.split("_")[1];var f=getSearchProdCount(g);if(f==2){$("#srprodcount_"+g).html("");selectedProdCount=1}else{if(f>2){$("#srprodcount_"+g).html(f-1)}}});$(".searchresult").off("click").on("click",function(g){g.stopImmediatePropagation();g.preventDefault();var f=this.id.split("_")[1];selectedProdCount=getSearchProdCount(f);clearSearchAndGoToHigherTypeIfExtrasOpen();levelOneType=0;handleClickOnProd(f)})}}function fillGenCommentsList(f){if(f.status!="OK"){alert("Fehler "+f.code+": "+f.msg);return}var b='';var e=f.msg;var c=0;for(c=0;c'+a+""}htmlComments=b;predefinedComments=b;$("#select-comment").html(b);$("#select-comment").selectmenu("refresh")}function initializeMainMenu(a,h,e,i,g){$("#"+e).html(" "+a.user);$("#"+i).html(a.version+" ");var k='
  • Module
  • ';$.each(a.menu,function(n,m){var l=m.name;var o=m.link;if(g){k+='
  • '+l+"
  • "}else{k+='
  • '+l+"
  • "}});$(h).empty().append(k).promise().done(function(){refreshList(h)});if(h=="#modulemenu-room"){var c=a.waitermessage;if(c!=""){$("#waitermessage").show();var b='
  • '+W_MSG[lang]+"
  • ";var f='
  • '+c+"
  • ";$("#waitermessage").html(b+f);refreshList("#waitermessage")}else{$("#waitermessage").hide()}}$(".modulebutton").off("click").on("click",function(m){var l=$(this).attr("href");doJsonAjaxAsync("POST","php/contenthandler.php?module=admin&command=setLastModuleOfUser",{view:l},null,"Problem Benutzerdatenpflege",false)})}function refreshList(a){if($(a).hasClass("ui-listview")){$(a).listview("refresh")}else{$(a).trigger("create")}}function gotoOtherPage(a){var b=a.split("_");if(b[0]=="menu"){doJsonAjax("POST","php/contenthandler.php?module=admin&command=setLastModuleOfUser",{view:b[1]},null,null);setTimeout(function(){document.location.href=b[1]},250)}else{if(b[0]=="back"){$("#discardnewordersdlg").dialog("close");parent.history.back()}}}function moduleForward(a){if(neworders.length==0){gotoOtherPage(a)}else{hideMenuProd();$("#discardnewordersdlg").data("link",a);$.mobile.changePage("#discardnewordersdlg")}}function getPayPrintType(){doJsonAjax("GET","php/contenthandler.php?module=admin&command=getPayPrintType",null,insertPayPrintType,"Fehler Druckkonfiguration")}function insertPayPrintType(a){$("#workprintarea").data("payPrintType",a)}function getUserHasRightForPaydesk(){doJsonAjax("GET","php/contenthandler.php?module=admin&command=hasUserPaydeskRight",null,hasUserPaydeskRight,"Fehler Kassenberechtigung")}function hasUserPaydeskRight(a){$("#gopaydesk_btn").data("allowed",a)}function hideMenuRoom(){$("#modulepanel-room").panel("close");$("#menuswitch").off("click").on("click",function(a){a.stopImmediatePropagation();a.preventDefault();$("#modulepanel-room").panel("open")})}function hideMenuTable(){$("#modulepanel-table").panel("close");$("#menuswitchtable").off("click").on("click",function(a){a.stopImmediatePropagation();a.preventDefault();$("#modulepanel-table").panel("open")})}function hideMenuProd(){$("#modulepanel-prod").panel("close");$("#menuswitchprod").off("click").on("click",function(a){a.stopImmediatePropagation();a.preventDefault();$("#modulepanel-prod").panel("open")})}function addProductToQueueNoGuiUpdate(f,l,g,c,e){var b=getProdProperties(f);var a=b.name;var h=b.price;var m={name:a,option:l,extras:g,prodid:f,price:h,changedPrice:c,togo:e};for(var k=0;k";var l=groupedNewOrders.count.length;for(f=0;f1){k=""+g.toString()+"x "+k}var e=groupedNewOrders.prodids[f];if(h!=""){h="

    "+toHtml(h)+"

    "}var b=groupedNewOrders.changedPrices[f];var a=groupedNewOrders.togos[f];var n="";var c=groupedNewOrders.extras[f];if((c!=null)&&(c!="")){n=""+c+""}if(b!="NO"){b=b.replace(".",decpoint);if(a!=0){m+='
  • '+k+h+n+" ("+b+" - To-Go)
  • "}else{m+='
  • '+k+h+n+" ("+b+")
  • "}}else{if(a!=0){m+='
  • '+k+h+n+" - To-Go
  • "}else{m+='
  • '+k+h+n+"
  • "}}}$("#neworders").html(m);refreshList("#neworders");binding_neworderelem()}function getProdSizeClass(){if(osprodbtnsize==1){return("osprod-1")}else{if(osprodbtnsize==2){return("osprod-2")}}return""}function binding_neworderelem(){$(".neworder_el").off("click").on("click",function(c){c.stopImmediatePropagation();c.preventDefault();var b=$("#neworders li").index($(this).closest("li"))-1;var a={count:groupedNewOrders.count[b],name:groupedNewOrders.name[b],price:groupedNewOrders.price[b],option:groupedNewOrders.option[b],extras:groupedNewOrders.extras[b],prodid:groupedNewOrders.prodids[b],origidxs:groupedNewOrders.origidxs[b],changedPrices:groupedNewOrders.changedPrices[b],togos:groupedNewOrders.togos[b]};$("#actiononneworderel").data("entry",a);$("#actiononneworderel").data("newcount",a.count);$("#actiononneworderel").data("groupedListIndex",b);$("#act-optionfield").val(a.option);$("#togocheckbox").prop("checked",a.togos==1?true:false);actionSelOnNewOrderElem()})}function sendNewOrders(c,f,a){var g=$("#typprodpage").data("table-info");var b=g[1];if(neworders.length!=0){var e={tableid:b,prods:neworders,print:(c?1:0),payprinttype:f};$("#typprodpage").data("neworders",[]);if(f=="s"){doJsonAjax("POST","php/contenthandler.php?module=queue&command=addProductListToQueue",e,a,"Fehler bei Produktversand")}else{doJsonAjax("POST","php/contenthandler.php?module=queue&command=addProductListToQueue",e,fillPrintAreaAndPrint,"Fehler bei Produktversand")}}else{if(c&¬DeliveredProdsAvailable){}}}function reloadPage(){tableListActive=false;setTimeout(function(){document.location.href="waiter.html"},250)}function gotoTablePage(){var a=$("#tables-page").data("allroomtables");var b=a.length;if(!isTogoOrderSelected||(b==1)){$.mobile.changePage("#tables-page")}else{reloadPage()}}function removeProductFromQueue(a,b,e,c){$.ajax({type:"POST",dataType:"json",url:"php/contenthandler.php?module=queue&command=removeProductFromQueue",data:{queueid:a,isPaid:b,isCooking:e,isReady:c},async:false,success:function(i){if(i.status!="OK"){alert(W_REMOVE_ERROR[lang])}var h=$("#typprodpage").data("table-info");var f=h[1];var g="php/contenthandler.php?module=queue&command=getJsonLongNamesOfProdsForTableNotDelivered&tableid="+f;fillNotDeliveredProductsOfATable(g)},error:function(f){alert("Sorry, Fehler bei Produktentfernung!")}})}function getWaiterSettings(){doJsonAjax("GET","php/contenthandler.php?module=admin&command=getWaiterSettings",null,insertWaiterSettings,"Fehler Konfigurationsdaten")}function insertWaiterSettings(c){var a=c.isUserLoggedIn;if(a!=1){setTimeout(function(){document.location.href="index.html"},250)}else{var b=c.config;workflowconfig=b.workflowconfig;decpoint=b.decpoint;currency=b.currency;rightchangeprice=c.rightchangeprice;supplyright=c.supplyright;keeptypelevel=c.keeptypelevel;applyExtraBtnPos=c.extrasapplybtnpos;prominentsearch=b.prominentsearch;discount1=b.discount1;discount2=b.discount2;discount3=b.discount3;setLanguage(c.userlanguage);if(rightchangeprice==1){$("#changepricesection").show()}else{$("#changepricesection").hide()}if((b.cancelunpaidcode!=null)&&(b.cancelunpaidcode!="")){cancelunpaidcode=b.cancelunpaidcode}else{cancelunpaidcode=""}osroombtnsize=c.buttonsizes.roombtnsize;ostablebtnsize=c.buttonsizes.tablebtnsize;osprodbtnsize=c.buttonsizes.prodbtnsize;initializeMainMenu(c.jsonMenuItemsAndVersion,"#modulemenu-room","loggedinuser1","versioninfo1",false);initializeMainMenu(c.jsonMenuItemsAndVersion,"#modulemenu-table","loggedinuser2","versioninfo2",false);initializeMainMenu(c.jsonMenuItemsAndVersion,"#modulemenu-prod","loggedinuser3","versioninfo3",true);doJsonAjax("GET","php/contenthandler.php?module=products&command=getAllGeneralComments",null,fillGenCommentsList,"Fehler Bemerkungsdatensatz");getTableMapPreferences();neworders=[];updateNewOrdersGui();initializeEverything()}}$(document).on("pageinit","#info-page",function(){fetchTypeProdsFromServer();getWaiterSettings();fetchMenuInInterval(60);intervalFetchRoomTableInfoFromServer(10)});function intervalFetchRoomTableInfoFromServer(b){var a=setInterval(function(){if(tableListActive){doJsonAjaxAsync("GET","php/contenthandler.php?module=products&command=getAllTypesAndAvailProds",null,updateTableViewIfListStillOpen,true)}},b*1000)}function updateTableViewIfListStillOpen(){$.getJSON("php/contenthandler.php?module=roomtables&command=showAllRooms",function(a){if(tableListActive){insertTableList(a)}})}function fetchMenuInInterval(b){var a=setInterval(function(){fetchTypeProdsFromServer()},b*1000)}function getTableMapPreferences(){doJsonAjax("GET","php/tablemap.php?command=getTableMapPreferences",null,insertTMInfo,"Keine TM-Information")}function insertTMInfo(a){tminfo=a}function updateTableList(){$.getJSON("php/contenthandler.php?module=roomtables&command=showAllRooms",function(a){insertTableList(a)})}function insertTableList(e){var c=e.roomstables;$("#tables-page").data("allroomtables",c);var f=c.length;var a=c;if(f==1){$("#info-page").data("type","t");$("#tables-page").data("roomdetail",c[0]);nextPage="typprodpage"}else{$("#info-page").data("type","r");$("#roomtableheader").html(W_ROOMS[lang]);var b=a[currentRoomIndex];$("#tables-page").data("roomdetail",b)}displayTablesListOrMap("#tables-list")}function initializeEverything(){lastSelectedProduct="";$(".modules").off("click").on("click",function(a){a.stopImmediatePropagation();a.preventDefault();moduleForward(this.id)});hideMenuRoom();$.getJSON("php/contenthandler.php?module=roomtables&command=showAllRooms",function(h){queueIdsOfTakeAway=h.takeawayReadyQueueIds;var g=h.roomstables;$("#tables-page").data("allroomtables",g);var i=g.length;var b=g;if(i==1){$("#info-page").data("type","t");$("#tables-page").data("roomdetail",g[0]);nextPage="tables-page";currentRoomIndex=0;$.mobile.changePage("#tables-page");$("#tableselbackbtn").hide()}else{$("#info-page").data("type","r");$("#roomtableheader").html(W_ROOMS[lang]);var a="";var e="";if(osroombtnsize==1){e="osroom-1"}else{if(osroombtnsize==2){e="osroom-2"}}$.each(b,function(l,k){a+='
  • '+k.name+"
  • "});a+='
  • '+W_TOGO[lang];var f=h.takeawayprice;var c=f.replace(".",decpoint)+" "+currency;if(f!=0){a+=" ("+W_TO_PAY[lang]+": "+c+")"}a+=createServeInfo(null,h.takeawayprodcount,h.takeawayprodready);a+="
  • ";$("#room-list").append(a).promise().done(function(){bindTogoOrdering();bindServeClick();$(this).off("click").on("click","a",function(l){l.stopImmediatePropagation();l.preventDefault();var k=b[this.id];currentRoomIndex=this.id;isTogoOrderSelected=false;$("#tables-page").data("roomdetail",k);nextPage="tables-page";$.mobile.changePage("#tables-page")});refreshList(this)})}})}function shallDisplayRoom(b){for(var a=0;a"+f+"

    "}if(c&&((workflowconfig==WORKFLOW_DIGI_WORK)||(workflowconfig==WORKFLOW_DIGI))){a+=W_UNDELIVERED[lang]+":
    "+e}$("#changetablecontent").html(a);$("#change_unpaid").off("click").on("click",function(g){g.stopImmediatePropagation();g.preventDefault();$("#changetablewhatdialog").data("show_unpaid",1-b);updateChangeTableDialog()});$("#change_undelivered").off("click").on("click",function(g){g.stopImmediatePropagation();g.preventDefault();$("#changetablewhatdialog").data("show_undelivered",1-c);updateChangeTableDialog()});$("#moveprods").off("click").on("click",function(s){s.stopImmediatePropagation();s.preventDefault();var l=$("#changetablewhatdialog").data("show_unpaid");var t=$("#changetablewhatdialog").data("show_undelivered");var r=[];if(l==1){var k=$("#changetablewhatdialog").data("unpaid");for(var p=0;p'+W_TOGO[lang]+"";$("#tables-list-togo").html(k);$("#togoarea").show();refreshList("#tables-list-togo");bindTogoOrdering();bindServeClick()}}else{$(h).show();$("#togoarea").hide();$("#tablemapcontent").hide();var k='
  • '+W_TABLES[lang]+"
  • ";var f="";if(ostablebtnsize==1){f="ostable-1"}else{if(ostablebtnsize==2){f="ostable-2"}}$.each(l,function(p,s){var r=s.pricesum;var n=r.replace(".",decpoint)+" "+currency;var o=s.prodcount;var m=s.prodready;var q=s.readyQueueIds;if(r!=0){k+='
  • '+s.name+" ("+W_TO_PAY[lang]+": "+n+")"+createServeInfo(s.id,o,m)+"
  • "}else{k+='
  • '+s.name+createServeInfo(s.id,o,m)+"
  • "}});if(c=="t"){k+='
  • '+W_TOGO[lang]+"
  • "}$(h).empty().append(k).promise().done(function(){bindTogoOrdering();bindServeClick();$(this).off("click").on("click",".info-go",function(p){p.stopImmediatePropagation();p.preventDefault();var o=g;var m=l[this.id]["id"];var n=l[this.id]["name"];forwardDisplayToProductView.call(this,a,m,n)});refreshList(this)})}}function bindServeClick(){$(".prodreadyicon").off("click").on("click",function(l){l.stopImmediatePropagation();l.preventDefault();var f=this.id.split("_")[1];var h=queueIdsOfTakeAway;if((f!=null)&&(f!="n")){var a=$("#tables-page").data("roomdetail");var c=a.tables;for(var b=0;b0){var k=h.join();doJsonAjax("POST","php/contenthandler.php?module=queue&command=declareMultipleProductsDelivered",{queueids:k},updateAfterDelivery,"Bereitstellung")}})}function updateAfterDelivery(a){if(tableListActive){updateTableList()}else{reloadPage()}}function bindTogoOrdering(){$(".togoorder").off("click").on("click",function(a){a.stopImmediatePropagation();a.preventDefault();isTogoOrderSelected=true;forwardDisplayToProductView.call(this,0,0,W_TOGO[lang])})}function forwardDisplayToProductView(b,a,c){neworders=[];updateNewOrdersGui();var e=new Array(b,a,c);$("#typprodpage").data("table-info",e);nextPage="typprodpage";$.mobile.changePage("#typprodpage");neworders=[];updateNewOrdersGui()}function attachAndDisplayFirstRefTypes(e){$("#typprodpage").data("types_prods",e);var a=e.prods;var c=[];for(var b=0;b";if(applyExtraBtnPos!=1){k+='
  • '+W_APPLY[lang]+"
  • "}for(var f=0;f=0){b="f";h="check"}k+='
  • '+toHtml(g)+"
  • "}if(applyExtraBtnPos!=2){k+='
  • '+W_APPLY[lang]+"
  • "}k+=createHigherLine(l);return k}function bindExtrasSel(){$(".extrasel").off("click").on("click",function(m){m.stopImmediatePropagation();m.preventDefault();var a=this.id.split("_");var b=a[1];var f=a[2];if((b=="abottom")||(b=="atop")){var k=getProdEntry(f);var c=k.extras;var n=[];for(var h=0;h=0){n[n.length]={id:b,name:l}}}extrasMenuOpen=false;addProductToNewOrdersList(f,n)}else{if(w_extras.indexOf(b)>=0){w_extras.splice(w_extras.indexOf(b),1)}else{w_extras[w_extras.length]=b}var o=listOfExtras(f);$("#typeproducts-list").html(o);refreshList("#typeproducts-list");extrasMenuOpen=true;bindExtrasSel();bindHigherButtons()}})}function lastSelectedProdToStr(){return" ("+W_LAST_SELECTED[lang]+": "+lastSelectedProduct+")"}function listOfTypesProds(e){var a='
  • '+W_SELECTION[lang]+"";if(lastSelectedProduct!=""){a+=lastSelectedProdToStr()}a+="
  • ";var b=$("#typprodpage").data("types_prods");var c=getProdSizeClass();$.each(b.types,function(g,f){if(parseInt(f.ref)==e){a+='
  • '+toHtml(f.name)+"
  • "}});$.each(b.prods,function(f,g){if(parseInt(g.ref)==e){a+='
  • '+toHtml(g.name);a+=createProdInfoTxt(g.id);a+="
  • "}});if(e!=0){a+=createHigherLine(c)}return a}function createHigherLine(b){var a='
  • ';a+='
    ';a+='
    ';a+='
    ';a+="
    ";a+="
  • ";return a}function createProdInfoTxt(b){var a="";a+="
    ";a+="
    ";a+="
    ";return a}function createSearchProdInfoTxt(b){var a="";a+="
    ";a+="
    ";a+="
    ";return a}function createServeInfo(e,c,b){if(supplyright==0){return""}if(e==null){e="n"}if(b>0){var a=""+b+"("+c+")";if(b>=c){a+="
    "}else{a+="
    "}return a}else{return""}}function getProdEntry(e){var b=$("#typprodpage").data("types_prods");var c=0;var a=b.prods;for(c=0;c";var b=$("#typprodpage").data("types_prods");var c=getProdSizeClass();var a=false;$.each(b.prods,function(f,g){if(parseInt(g.favorite)==1){a=true;e+='
  • '+toHtml(g.longname);e+=createProdInfoTxt(g.id);e+="
  • "}});e+="";if(a){$("#favarea").html(e);$("#favarea").trigger("create")}else{$("#favarea").html("");$("#favarea").trigger("create")}}function bindFavEvent(){$(".fav").off("click").on("click",function(b){b.stopImmediatePropagation();b.preventDefault();levelOneType=0;var a=this.id.split("_")[1];selectedProdCount=getProdCount(a);handleClickOnProd(a)})}function displayTypesProds(c,b){window.scrollTo(0,0);if(c==0){fillFavArea();bindFavEvent()}else{$("#favarea").html("")}if(b==null){idOfHigherType=c;var a=listOfTypesProds(parseInt(c))}else{var a=listOfExtras(parseInt(c))}$("#typeproducts-list").empty().append(a).promise().done(function(){refreshList("#typeproducts-list");$(this).off("click").on("click","a",function(i){i.stopImmediatePropagation();i.preventDefault();$("#searchField").val("");generateSearchResults();var g=this.id;var f=g.split("_");if(f[0]=="t"){if(c==0){levelOneType=f[1];c=f[1]}extrasMenuOpen=false;displayTypesProds(f[1],null)}else{var h=f[1];selectedProdCount=getProdCount(h);handleClickOnProd(h)}});bindHigherButtons()});$(".prodinfo").off("click").on("click",function(i){i.stopImmediatePropagation();i.preventDefault();var f=this.id.split("_")[1];var h=getProdEntry(f);var g=h.price;alert(W_PRICE[lang]+": "+g+" "+currency)});$(".prodplus").off("click").on("click",function(h){h.stopImmediatePropagation();h.preventDefault();var g=this.id.split("_")[1];var f=getProdCount(g);$("#prodcount_"+g).html(f+1)});$(".prodminus").off("click").on("click",function(h){h.stopImmediatePropagation();h.preventDefault();var g=this.id.split("_")[1];var f=getProdCount(g);if(f==2){$("#prodcount_"+g).html("");selectedProdCount=1}else{if(f>2){$("#prodcount_"+g).html(f-1)}}})}function getHigherType(){var c=$("#typprodpage").data("types_prods");var b=c.types;var f=0;if(!extrasMenuOpen){for(var e=0;e0)){w_extras=[];w_allextras=a;extrasMenuOpen=true;idOfHigherType=c.ref;displayTypesProds(b,a);bindExtrasSel()}else{addProductToNewOrdersList(b,null)}}function addProductToNewOrdersList(f,e){var i=$("#typprodpage").data("table-info");var c=i[1];addProductToQueue(f,e,"NO",0);var a=getProdAudio(parseInt(f));var b=parseInt($("#typprodpage").data("ordervolume"))/10;if(a!=""){var h="customer/"+a;if(a.match(/mp3$/)){$("#audiofile").html('')}else{if(a.match(/ogg$/)){$("#audiofile").html('')}else{if(a.match(/wav$/)){$("#audiofile").html('')}}}document.getElementById("audiofile").load();document.getElementById("audiofile").volume=b;document.getElementById("audiofile").play()}else{if(b>0.5){beep()}}var g="php/contenthandler.php?module=queue&command=getJsonLongNamesOfProdsForTableNotDelivered&tableid="+c;fillNotDeliveredProductsOfATable(g);if(keeptypelevel==0){displayTypesProds(levelOneType,null)}refreshList("#typeproducts-list")}function beep(){var a=new Audio("data:audio/wav;base64,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qJrx4KOQjahZxWbcZgztj2c49nKmkId44S71j0c8eV9yDK6uPRzx5X18eDvjvQ6yKo9ZSS6l//8elePK/Lf//IInrOF/FvDoADYAGBMGb7FtErm5MXMlmPAJQVgWta7Zx2go+8xJ0UiCb8LHHdftWyLJE0QIAIsI+UbXu67dZMjmgDGCGl1H+vpF4NSDckSIkk7Vd+sxEhBQMRU8j/12UIRhzSaUdQ+rQU5kGeFxm+hb1oh6pWWmv3uvmReDl0UnvtapVaIzo1jZbf/pD6ElLqSX+rUmOQNpJFa/r+sa4e/pBlAABoAAAAA3CUgShLdGIxsY7AUABPRrgCABdDuQ5GC7DqPQCgbbJUAoRSUj+NIEig0YfyWUho1VBBBA//uQZB4ABZx5zfMakeAAAAmwAAAAF5F3P0w9GtAAACfAAAAAwLhMDmAYWMgVEG1U0FIGCBgXBXAtfMH10000EEEEEECUBYln03TTTdNBDZopopYvrTTdNa325mImNg3TTPV9q3pmY0xoO6bv3r00y+IDGid/9aaaZTGMuj9mpu9Mpio1dXrr5HERTZSmqU36A3CumzN/9Robv/Xx4v9ijkSRSNLQhAWumap82WRSBUqXStV/YcS+XVLnSS+WLDroqArFkMEsAS+eWmrUzrO0oEmE40RlMZ5+ODIkAyKAGUwZ3mVKmcamcJnMW26MRPgUw6j+LkhyHGVGYjSUUKNpuJUQoOIAyDvEyG8S5yfK6dhZc0Tx1KI/gviKL6qvvFs1+bWtaz58uUNnryq6kt5RzOCkPWlVqVX2a/EEBUdU1KrXLf40GoiiFXK///qpoiDXrOgqDR38JB0bw7SoL+ZB9o1RCkQjQ2CBYZKd/+VJxZRRZlqSkKiws0WFxUyCwsKiMy7hUVFhIaCrNQsKkTIsLivwKKigsj8XYlwt/WKi2N4d//uQRCSAAjURNIHpMZBGYiaQPSYyAAABLAAAAAAAACWAAAAApUF/Mg+0aohSIRobBAsMlO//Kk4soosy1JSFRYWaLC4qZBYWFRGZdwqKiwkNBVmoWFSJkWFxX4FFRQWR+LsS4W/rFRb/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////VEFHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU291bmRib3kuZGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjAwNGh0dHA6Ly93d3cuc291bmRib3kuZGUAAAAAAAAAACU=");a.play()}function fetchTypeProdsFromServer(){doJsonAjaxAsync("GET","php/contenthandler.php?module=products&command=getAllTypesAndAvailProds",null,attachAndDisplayFirstRefTypes,true)}var waitProdTimer=null;function fillTypeProdList(b){var a=$("#typprodpage").data("types_prods");if(a!=undefined){displayTypesProds(b,null)}else{waitProdTimer=setInterval(function(){var c=$("#typprodpage").data("types_prods");if(c!=undefined){clearInterval(waitProdTimer);displayTypesProds(b,null)}},200)}}function fillTypeProdList_(a){displayTypesProds(a,null)}function createTxtAssignedProd(e){var b="";if(e.option!=""){b=" ("+toHtml(e.option)+")"}var c=e.longname;if(e.togo==1){c="To-Go: "+c}if(e.pricechanged==1){c+=" - "+e.price.replace(".",decpoint)}var a="";if(e.isready=="1"){a+=" ☞"}if(e.isCooking=="1"){a+=" ♨"}if(e.isPaid=="1"){a+=" ☑"}return toHtml(c)+b+a+"
    "+createExtraParagraph(e.extras)}function createListElOfAssignedProd(b){var a="";if("count" in b){if(b.count>1){a=b.count+"x "}}if(b.isready=="0"){return'
  • '+a+createTxtAssignedProd(b)+"
  • "}else{return'
  • '+a+createTxtAssignedProd(b)+"
  • "}}function fillAssignedProdList(b){if(b.length>0){notDeliveredProdsAvailable=true}else{notDeliveredProdsAvailable=false}$("#cancelcodefield").val("");if(cancelunpaidcode!=""){if(b.length>0){$("#cancelcodearea").show()}else{$("#cancelcodearea").hide()}}else{$("#cancelcodearea").hide()}var c=new Grouping(b,createTxtAssignedProd);c.group();var a='
  • '+W_KIT_BAR[lang]+"
  • ";a+=c.outputList(createListElOfAssignedProd);$("#orderedprod-list-0").html(a);refreshList("#orderedprod-list-0");$("#undeliveredheader").off("click").on("click",function(f){f.stopImmediatePropagation();f.preventDefault();alert(W_UNDELIV_INFO[lang])});bindingOfAssignedProds(c)}function bindingOfAssignedProds(a){$(".notdelprod").off("click").on("click","a",function(i){i.stopImmediatePropagation();i.preventDefault();if(cancelunpaidcode!=""){if($("#cancelcodefield").val()!=cancelunpaidcode){alert(W_WRONG_PIN[lang]);return}}var b=$(this).closest("li");var m=$("#orderedprod-list-0 li").index(b)-1;var g=a.getItemsOfRow(m);var o=g[0];var c=o.id;var l=o.isready;var h=o.isPaid;var n=o.isCooking;if((h=="1")&&(l=="1")){var f="Entfernen?";var k=this;areYouSure("Produkt wurde schon zubereitet und bezahlt",f,"Ja",function(){removeProductFromQueue(c,h,n,l)})}else{if(l=="1"){var f="Entfernen?";var k=this;areYouSure("Produkt wurde schon zubereitet.",f,"Ja",function(){removeProductFromQueue(c,h,n,l)})}else{if(h=="1"){var f="Entfernen?";var k=this;areYouSure("Produkt wurde schon bezahlt.",f,"Ja",function(){removeProductFromQueue(c,h,n,l)})}else{if(n=="1"){var f="Entfernen?";var k=this;areYouSure("Produkt wird soeben zubereitet.",f,"Ja",function(){removeProductFromQueue(c,h,n,l)})}else{removeProductFromQueue(c,h,n,l)}}}}})}function fillNotDeliveredProductsOfATable(a){doJsonAjaxAsync("GET",a,null,fillAssignedProdList,true)}function fillOrderVolume(a){$("#typprodpage").data("ordervolume",a)}function checkForLogIn(){doJsonAjax("GET","php/contenthandler.php?module=admin&command=isUserAlreadyLoggedIn",null,handleTestForLoggedIn,null)}function handleTestForLoggedIn(a){if(a!="YES"){setTimeout(function(){document.location.href="index.html"},250)}}$(document).on("pagebeforeshow","#typprodpage",function(){lastSelectedProduct="";tableListActive=false;if(nextPage==""){reloadPage()}$("#tablemapcontent").hide();$.ajaxSetup({cache:false});hideMenuProd();getPayPrintType();checkForLogIn();doJsonAjax("GET","php/contenthandler.php?module=admin&command=getOrderVolume",null,fillOrderVolume,"Keine Ordertoninformation");$("#workprintarea").html("");var a=$(this).data("table-info");var c=a[0];var b=a[1];$("#changetablewhatdialog").data("fromtableid",b);var e=a[2];$("#typprodpage h1").html("Tisch: "+e);$("#optionfield").val("");fillTypeProdList(0);var f="php/contenthandler.php?module=queue&command=getJsonLongNamesOfProdsForTableNotDelivered&tableid="+b;fillNotDeliveredProductsOfATable(f);$("#workprint_btn").data("tableid",b);$("#gopaydesk_btn").data("tableid",b);$("#workprint_btn").data("tablename",e);bindPrintButton();bindGoPayDeskButton();bindChangetableButton();bindSendNewOrdersButton();getUserHasRightForPaydesk()});function bindSendNewOrdersButton(){$("#sendorder_btn").off("click").on("click",function(a){a.stopImmediatePropagation();a.preventDefault();lastSelectedProduct="";if(extrasMenuOpen){alert(W_OPEN_PANEL[lang])}else{sendNewOrders(false,"s",gotoTablePage)}})}function bindPrintButton(){$("#workprint_btn").off("click").on("click",function(b){b.stopImmediatePropagation();b.preventDefault();lastSelectedProduct="";if(extrasMenuOpen){alert(W_OPEN_PANEL[lang])}else{if(neworders.length>0){var a=$("#workprintarea").data("payPrintType");sendNewOrders(true,a,gotoTablePage)}else{alert(W_NO_ORDERS[lang])}}})}function bindGoPayDeskButton(){$("#gopaydesk_btn").off("click").on("click",function(a){a.stopImmediatePropagation();a.preventDefault();lastSelectedProduct="";if(neworders.length>0){sendNewOrders(false,"s",goToPayDesk)}else{if(notDeliveredProdsAvailable){goToPayDesk()}else{alert(W_NO_ORDERS[lang])}}})}function goToPayDesk(){var a=$("#gopaydesk_btn").data("allowed");if(a.toLowerCase()=="yes"){window.location.href="paydesk.html?t="+$("#gopaydesk_btn").data("tableid")}else{alert("Fehlendes Benutzerrecht für Kasse")}}function createRoomOrTableList(b,c){var a='
  • '+c+"
  • ";$.each(b,function(f,e){a+='
  • '+e.name+"
  • "});return a}function handleClickInChangeTablemap(a){$("#changetablewhatdialog").data("totableid",a.tableid);$.mobile.changePage("#changetablewhatdialog")}function displayTableDialog(e,g,c){$("#header_tchange").html("Tischauswahl");var f=shallDisplayRoom(e);if(f.show){$("#roomOrTableList").hide();$("#tablemapcontentchangetable").show();d=new Date();$("#mapimgpartchangetable").attr("src","php/tablemap.php?command=getTableMapImgAsPng&roomid="+e+"&"+d.getTime());var b=new Tablemap(e,null,"");b.bindingForSelection("#mapimgpartchangetable",handleClickInChangeTablemap.bind(this),f.pos,e);if(c){$.mobile.changePage("#tablechangedialog")}$("#changetablebackbtn").off("click").on("click",function(h){$("#tablemapcontentchangetable").hide();$("#roomOrTableList").show()})}else{$("#roomOrTableList").show();var a=createRoomOrTableList(g,"Tische");$("#roomOrTableList").empty().append(a).promise().done(function(){if(c){$.mobile.changePage("#tablechangedialog")}refreshList("#roomOrTableList");$(this).off("click").on("click",".info-go",function(i){i.stopImmediatePropagation();i.preventDefault();var h=($(this).attr("id")).split("_")[1];$("#changetablewhatdialog").data("totableid",g[h].id);$.mobile.changePage("#changetablewhatdialog")})})}}function resultOfChangeTable(a){if(a.status!="OK"){alert("Fehler "+a.code+": "+a.msg+"\n\nMöglicherweise hat ein Kollege\nin der Zwischenzeit Produkte zugestellt.")}else{alert("Tischwechsel durchgeführt!")}window.location.href="waiter.html"}function bindChangetableButton(){$("#changetable_btn").off("click").on("click",function(c){c.stopImmediatePropagation();c.preventDefault();var b=$("#tables-page").data("allroomtables");var f=b.length;if(f==1){displayTableDialog(b[0].id,b[0].tables,true)}else{$("#header_tchange").html("Raumauswahl");var a=createRoomOrTableList(b,W_ROOMS[lang]);$("#roomOrTableList").empty().append(a).promise().done(function(){$.mobile.changePage("#tablechangedialog");refreshList("#roomOrTableList");$(this).off("click").on("click",".info-go",function(h){h.stopImmediatePropagation();h.preventDefault();var g=($(this).attr("id")).split("_")[1];displayTableDialog(b[g].id,b[g].tables,false)})})}})}function createHtmlOfKind(e,a,k){var g="";for(var b=0;b"+c+"
    "+h+"

    "}}return g}function createExtraParagraph(b){if((b==null)||(b=="")){return""}var c="";for(var a=0;a"}return c}function arrayContainsKind(b,e,g){var a=false;for(var c=0;c";if(o.status=="OK"){var b=o.msg;var f=$("#workprintarea").data("payPrintType");var g="";var m=$("#workprint_btn").data("tablename");if(arrayContainsKind(b,0,1)){var e="

    Speisen für "+m+" (Printer 1)


    ";var l=e+"
    "+i+"

    "+createHtmlOfKind(b,0,1)+"

    ";g+=l+"
    "}if(arrayContainsKind(b,0,2)){var e="

    Speisen für "+m+" (Printer 2)


    ";var l=e+"
    "+i+"

    "+createHtmlOfKind(b,0,2)+"

    ";g+=l+"
    "}if(arrayContainsKind(b,1,1)){var c="

    Getränke für "+m+" (Printer 1)


    ";var k=c+"
    "+i+"

    "+createHtmlOfKind(b,1,1)+"

    ";g+=k+"
    "}if(arrayContainsKind(b,1,2)){var c="

    Getränke für "+m+" (Printer 2)


    ";var k=c+"
    "+i+"

    "+createHtmlOfKind(b,1,2)+"

    ";g+=k+"
    "}$("#workprintarea").html(g);window.print();setTimeout(function(){document.location.href="waiter.html"},250)}else{alert("Druckdaten konnten nicht angefordert werden")}}function printJob(h,c,f,b,g,a){var e={header:h,table:c,timestamp:f,prods:b,type:g,printer:a};doJsonAjax("POST","php/contenthandler.php?module=printqueue&command=queueWorkPrintJob",e,null,"Druckfehler")}function updateNotDeliveredList(){var a=$("#typprodpage").data("table-info");var c=a[1];var e="php/contenthandler.php?module=queue&command=getJsonLongNamesOfProdsForTableNotDelivered&tableid="+c;var b="#orderedprod-list-0";fillNotDeliveredProductsOfATable(e)}function doJsonAjax(a,b,f,e,c){$.ajax({type:a,url:b,dataType:"json",data:f,async:true,success:function(g){if(e!=null){e(g)}},error:function(k,g,h){if(c!=null){var i=c+", Status: "+g+", Error:"+h+", Msg: "+k.responseText+" ("+b+")";alert("Kommunikationsfehler zum Server: "+i)}}})}function doJsonAjaxAsync(a,b,e,c,f){$.ajax({type:a,url:b,dataType:"json",data:e,async:f,success:function(g){if(c!=null){c(g)}},error:function(i,g,h){}})}function areYouSure(c,b,a,e){$("#sure .sure-1").text(c);$("#sure .sure-2").text(b);$("#sure .sure-do").text(a).off("click.sure").on("click.sure",function(){e()});$(this).off("click.sure");$.mobile.changePage("#sure")}function changePriceInActPanel(a){if(rightchangeprice){$("#act-changepricefield").val(a.toFixed(2).replace(".",decpoint))}}function actionSelOnNewOrderElem(){var b=$("#actiononneworderel").data("entry");var a=$("#actiononneworderel").data("newcount");$("#act_count").html(a);$("#act_name").html(b.name);if(b.option!=""){$("#act_option").html(" ("+b.option+")")}if(rightchangeprice){if(b.changedPrices!="NO"){$("#act-changepricefield").val(b.changedPrices)}}$("#act-select-comment").html(predefinedComments);$.mobile.changePage("#actiononneworderel");if(a==1){$("#actionneworderconfirm_all").html(W_ACT_CHANGE[lang]);$("#actionneworderconfirm_one").hide()}else{$("#actionneworderconfirm_all").html(W_ACT_CHANGE_ALL[lang]);$("#actionneworderconfirm_one").html(W_ACT_CHANGE_ONE[lang]);$("#actionneworderconfirm_one").show()}$("#act-select-comment").selectmenu("refresh");$("#togocheckbox").checkboxradio("refresh");$("#actminusone").off("click").on("click",function(c){c.stopImmediatePropagation();c.preventDefault();reduceOneNewOrderItem();actionSelOnNewOrderElem($("#actiononneworderel").data("entry"),$("#actiononneworderel").data("groupedListIndex"))});$("#actplusone").off("click").on("click",function(c){c.stopImmediatePropagation();c.preventDefault();increaseOneNewOrderItem();actionSelOnNewOrderElem($("#actiononneworderel").data("entry"),$("#actiononneworderel").data("groupedListIndex"))});$("#actdel").off("click").on("click",function(c){delOneNewOrderItem();actionSelOnNewOrderElem($("#actiononneworderel").data("entry"),$("#actiononneworderel").data("groupedListIndex"));actionNewOrderConfirm(CHANGE_ONE)});$("#actionneworderconfirm_all").off("click").on("click",function(c){c.stopImmediatePropagation();c.preventDefault();$("#actiononneworderel").dialog("close");actionNewOrderConfirm(CHANGE_ALL)});$("#actionneworderconfirm_one").off("click").on("click",function(c){c.stopImmediatePropagation();c.preventDefault();$("#actiononneworderel").dialog("close");actionNewOrderConfirm(CHANGE_ONE)});$("#actionnewordercancel").off("click").on("click",function(c){binding_neworderelem()});$("#discount1").off("click").on("click",function(f){f.stopImmediatePropagation();f.preventDefault();var c=b.price;changePriceInActPanel(c-c*discount1/100)});$("#discount2").off("click").on("click",function(f){f.stopImmediatePropagation();f.preventDefault();var c=b.price;changePriceInActPanel(c-c*discount2/100)});$("#discount3").off("click").on("click",function(f){f.stopImmediatePropagation();f.preventDefault();var c=b.price;changePriceInActPanel(c-c*discount3/100)})}function actionNewOrderConfirm(h){var c=$("#actiononneworderel").data("entry");var n=$("#act-optionfield").val();if(rightchangeprice==1){var f=$("#act-changepricefield").val().trim();f=f.replace(",",".");if(f==""){f="NO"}else{if(!$.isNumeric(f)){alert(W_WRONG_FORMAT[lang]);return}else{$("#act-changepricefield").val("")}}}else{f="NO"}var g=$("#togocheckbox").prop("checked");if(g){g=1}else{g=0}if(h==CHANGE_ONE){var b=c.origidxs;neworders[b[0]].option=n;neworders[b[0]].changedPrice=f;neworders[b[0]].togo=g}else{var b=c.origidxs;for(m=0;m0){var b=c.origidxs;var q=b[0];var l=neworders[q].prodid;var f=neworders[q].changedPrice;var g=neworders[q].togo;var n=neworders[q].option;var k=neworders[q].extras;for(m=0;m0){$("#actiononneworderel").data("newcount",a-1)}}function delOneNewOrderItem(){$("#actiononneworderel").data("newcount",0)}function increaseOneNewOrderItem(){var b=$("#actiononneworderel").data("entry");var a=$("#actiononneworderel").data("newcount");$("#actiononneworderel").data("newcount",a+1)}function group(h){var x=[];var e=[];var z=[];var s=[];var o=[];var g=[];var v=[];var w=[];var a=[];var m=[];var y={count:x,joinedvals:e,name:z,price:s,option:o,extras:g,prodids:v,origidxs:w,changedPrices:a,togos:m};var u=0;for(u=0;u+ "+toHtml(c[t].name)+"

    "}}var q=z+"-"+o+"-"+b;if(f!="NO"){q=z+"-"+o+"-"+b+f}if(l==1){q+=" - To-Go"}var k=y.joinedvals.indexOf(q);if(k>=0){y.count[k]=y.count[k]+1;idxarr=y.origidxs[k];idxarr[idxarr.length]=u;y.origidxs[k]=idxarr}else{var n=y.count.length;y.count[n]=1;y.joinedvals[n]=q;y.name[n]=z;y.price[n]=s;y.option[n]=o;y.extras[n]=b;y.prodids[n]=p;y.changedPrices[n]=f;y.togos[n]=l;y.origidxs[n]=[u]}}return y};