From 82309eed7e11c77fc33cc2d2119903fb5c84497c Mon Sep 17 00:00:00 2001
From: Geno
Date: Thu, 19 Nov 2020 23:02:33 +0100
Subject: [PATCH] OrderSprinter 1.3.7
---
printserver/OrderSprinterPrintserver.exe | Bin 259584 -> 259584 bytes
spider/install/installer.php | 2 +-
webapp/OrderSprinterPrintserver.exe | Bin 259584 -> 259584 bytes
webapp/bar.html | 2 +-
webapp/bill.html | 2 +-
webapp/feedback.html | 2 +-
webapp/index.html | 6 +-
webapp/install.html | 82 +++++++----
webapp/install/installer.php | 34 ++++-
webapp/kitchen.html | 2 +-
webapp/manager.html | 129 ++++++++++++++++-
webapp/paydesk.html | 4 +-
webapp/php/admin.php | 42 +++---
webapp/php/contenthandler.php | 4 +
webapp/php/updater.php | 171 +++++++++++++++++++++++
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/utilities.js | 6 +
webapp/waiter.html | 2 +-
webapp/waiterdesktop.php | 74 ++--------
webapp/waiterdesktopdefault.txt | 65 +++++++++
25 files changed, 510 insertions(+), 131 deletions(-)
create mode 100644 webapp/php/updater.php
create mode 100644 webapp/waiterdesktopdefault.txt
diff --git a/printserver/OrderSprinterPrintserver.exe b/printserver/OrderSprinterPrintserver.exe
index aa6c46efdbd02ad426945a7f357c7b0939b77086..e8787f4fc92ec61697797d482179ad9c20e6d9b6 100644
GIT binary patch
delta 154
zcmZp8!{6|Re?kZI<)>2`yIZ>%Tf3RIb~8V(Vr1W5T+O^$OU1>_+|a<-&{5aL#nnaE
z#Mr`A*U{C;RoB$W#N5oy)X3P_&1}2ZGUhXSjON?LuQDIx6p&&ry#MxYtMfX&Aou(r
z<8Rwv++$wM2bAu4%gn^g$YpPBWU
E0D50E=Kufz
delta 154
zcmZp8!{6|Re?kZIyZElg?$&O`)^4V)-OSIc7}>TLS2J(cQZY6+GchqVx70Nn)@K3$
D!7MV*
diff --git a/spider/install/installer.php b/spider/install/installer.php
index cf2cde9..6ce4ea6 100644
--- a/spider/install/installer.php
+++ b/spider/install/installer.php
@@ -85,7 +85,7 @@ class Installer {
}
Database::dropTables($pdo);
Database::createEmptyTables($pdo, $prefix);
- Database::setVersion($pdo,$prefix,"1.3.6");
+ Database::setVersion($pdo,$prefix,"1.3.7");
Database::setAccessPassword($pdo,$prefix,$adminpass);
Database::setRefreshRate($pdo,$prefix,"5"); // default: 5 times per hour
return array("status" => "OK","msg" => "Installation successful");
diff --git a/webapp/OrderSprinterPrintserver.exe b/webapp/OrderSprinterPrintserver.exe
index aa6c46efdbd02ad426945a7f357c7b0939b77086..e8787f4fc92ec61697797d482179ad9c20e6d9b6 100644
GIT binary patch
delta 154
zcmZp8!{6|Re?kZI<)>2`yIZ>%Tf3RIb~8V(Vr1W5T+O^$OU1>_+|a<-&{5aL#nnaE
z#Mr`A*U{C;RoB$W#N5oy)X3P_&1}2ZGUhXSjON?LuQDIx6p&&ry#MxYtMfX&Aou(r
z<8Rwv++$wM2bAu4%gn^g$YpPBWU
E0D50E=Kufz
delta 154
zcmZp8!{6|Re?kZIyZElg?$&O`)^4V)-OSIc7}>TLS2J(cQZY6+GchqVx70Nn)@K3$
D!7MV*
diff --git a/webapp/bar.html b/webapp/bar.html
index 4f4de87..6115fa5 100644
--- a/webapp/bar.html
+++ b/webapp/bar.html
@@ -5,7 +5,7 @@
-
+
diff --git a/webapp/bill.html b/webapp/bill.html
index 5aae576..5135118 100644
--- a/webapp/bill.html
+++ b/webapp/bill.html
@@ -5,7 +5,7 @@
-
+
diff --git a/webapp/feedback.html b/webapp/feedback.html
index 2682cb4..dea8859 100644
--- a/webapp/feedback.html
+++ b/webapp/feedback.html
@@ -4,7 +4,7 @@
-
+
diff --git a/webapp/index.html b/webapp/index.html
index 9163597..2ec67ed 100644
--- a/webapp/index.html
+++ b/webapp/index.html
@@ -9,8 +9,8 @@
-
-
+
+
@@ -203,7 +203,7 @@ function handleResultOfInstallCheck(is_installed) {
if (is_installed == "Yes") {
useInstallation();
} else {
- setTimeout(function(){document.location.href = "install.html?v=1.3.6"},500);
+ setTimeout(function(){document.location.href = "install.html?v=1.3.7"},500);
}
}
diff --git a/webapp/install.html b/webapp/install.html
index ab1e003..daf9b56 100644
--- a/webapp/install.html
+++ b/webapp/install.html
@@ -560,11 +560,41 @@ $(document).ready(function() {
$("#startinstall").css({ width: '300px', 'padding-top': '10px', 'padding-bottom': '10px' });
getTimeZones();
- $("#languagesettings").show();
- $("#timezones").hide();
- $("#installsettings").hide();
- $("#samplesettings").hide();
- $("#workflowsettings").hide();
+
+ var urlsuffix = location.search;
+ var suffices = urlsuffix.split('&');
+ var doOnlyUpdate = false;
+ for(var i=0;i
@@ -652,26 +682,26 @@ $(document).ready(function() {
Teste Schreibberechtigungen
-
- Applikation
- Administrator-Passwort:
-
-
-
- Administrator-Passwort (Wdh.):
-
-
-
- Währung:
-
-
-
- Dezimaltrennzeichen:
-
- Komma
- Punkt
-
-
+
+ Applikation
+ Administrator-Passwort:
+
+
+
+ Administrator-Passwort (Wdh.):
+
+
+
+ Währung:
+
+
+
+ Dezimaltrennzeichen:
+
+ Komma
+ Punkt
+
+
PHP-Status
?
@@ -679,7 +709,7 @@ $(document).ready(function() {
- Update -> 1.3.6
+ Update -> 1.3.7
diff --git a/webapp/install/installer.php b/webapp/install/installer.php
index 0a8b200..904f24e 100644
--- a/webapp/install/installer.php
+++ b/webapp/install/installer.php
@@ -1934,6 +1934,31 @@ return false;
}
}
+function updateUserTable1306_1307($prefix, $version, $dbname) {
+$pdo = $this->pdo;
+try {
+if ($version != "1.3.6") {
+$ret = $this->updateUserTable1305_1306($prefix, $version, $dbname);
+if (!$ret) {
+echo "Version update v1.3.5 to 1.3.6 not successful.";
+return false;
+}
+}
+
+DbUtils::overrulePrefix($prefix);
+
+$sql = "INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL,?,?)";
+$stmt = $pdo->prepare($this->basedb->resolveTablenamesInSqlString($sql));
+$stmt->execute(array('updateurl','http://www.ordersprinter.de/update'));
+
+$this->updateVersion($pdo, '1.3.7');
+return true;
+} catch (PDOException $e) {
+echo "Error in v1.3.6 to 1.3.7: $e";
+return false;
+}
+}
+
function setVersion($prefix,$theVersion) {
$pdo = $this->pdo;
@@ -2060,7 +2085,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.3.6')");
+$this->basedb->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'version', '1.3.7')");
$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')");
@@ -2104,6 +2129,7 @@ $this->basedb->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VAL
$this->basedb->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'hscurrency', 'EUR')");
$this->basedb->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'hs3refresh', '60')");
$this->basedb->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'memorylimit', '512')");
+$this->basedb->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'updateurl', 'http://www.ordersprinter.de/update')");
$this->basedb->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'restaurantmode', '1')");
$this->basedb->doSQL($pdo,"INSERT INTO `%config%` (`id` , `name`, `setting`) VALUES (NULL , 'returntoorder', '1')");
@@ -2443,7 +2469,7 @@ $zones[] = $timezone_identifiers[$i];
}
echo json_encode($zones);
} else if ($command == 'update') {
-$installerVersion = "1.3.6";
+$installerVersion = "1.3.7";
$admin = new InstallAdmin();
$pdo = $admin->openDbAndReturnPdo($_POST['host'],$_POST['db'],$_POST['user'],$_POST['password']);
@@ -2473,7 +2499,7 @@ $supportedVersions = array("1.0.22","1.0.23","1.0.24","1.0.25","1.0.26","1.0.27"
"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.21","1.1.22","1.1.23","1.1.24","1.1.25","1.1.26","1.1.27","1.1.28","1.1.29","1.1.30",
"1.2.0","1.2.1","1.2.2", "1.2.3", "1.2.4","1.2.5","1.2.6","1.2.7","1.2.8","1.2.9","1.2.10","1.2.11","1.2.12","1.2.13","1.2.14","1.2.15","1.2.16","1.2.17",
-"1.2.18","1.2.19","1.2.20","1.2.21","1.2.22","1.3.0","1.3.1","1.3.2","1.3.3","1.3.4","1.3.5"
+"1.2.18","1.2.19","1.2.20","1.2.21","1.2.22","1.3.0","1.3.1","1.3.2","1.3.3","1.3.4","1.3.5","1.3.6"
);
if (!in_array($version, $supportedVersions)) {
@@ -2481,7 +2507,7 @@ echo json_encode("Quellversion nicht unterstützt");
return;
}
-$ret = $admin->updateUserTable1305_1306($_POST['prefix'], $version, $_POST['db']);
+$ret = $admin->updateUserTable1306_1307($_POST['prefix'], $version, $_POST['db']);
if(session_id() == '') {
session_start();
diff --git a/webapp/kitchen.html b/webapp/kitchen.html
index 9a99832..da861e2 100644
--- a/webapp/kitchen.html
+++ b/webapp/kitchen.html
@@ -5,7 +5,7 @@
-
+
diff --git a/webapp/manager.html b/webapp/manager.html
index 934e2fb..6d29e1b 100644
--- a/webapp/manager.html
+++ b/webapp/manager.html
@@ -5,7 +5,7 @@
-
+
@@ -196,6 +196,14 @@ var MAN_BAK_BTN = ["Sicherung (Konfiguration)","Backup (Configuration)","Exporta
var MAN_BAK_GUEST_BTN = ["Sicherung (Konfiguration + Gäste)","Backup (Configuration + guests)","Exportar (configuración y clientes)"];
var MAN_BAK_BTN_ALL = ["Sicherung (Alles ohne Logs)","Backup (all without logs)","Exportar (todo sin protocolo)"];
var MAN_BAK_BTN_ALL_LOGS = ["Sicherung (Alles mit Logs)","Backup (all with logs)","Exportar (todo y protocolo)"];
+var MAN_UPDATE_HEAD = ["Versionsupdate","Version update","Actualizar la versión"];
+var MAN_CHECK_UPDATE_BTN = ["Update starten","Start update","Empezar actualizar"];
+var MAN_UPDATE_HINT = ["Das Updaten über diesen Weg funktioniert nur, wenn die Dateien im Webverzeichnis beschreibbar sind und eine Verbindung zum OrderSprinter-Webserver besteht.",
+ "This update function only works if the files in the web directory are not write-protected and if a internet connection to the OrderSprinter webserver is available.",
+ "Esta función the actualizar solo funciona si los ficheros no sin protegidos de escribirt y si hay una conección al servidor de OrderSprinter por Internet."];
+var MAN_UPDATE_URL = ["Updateserver","Update Server","Servidor"];
+var MAN_AVAIL_UPD_VERSION = ["Neuste verfügbare Version","Newest released version","ùltima version"];
+var MAN_UPD_PROGRESS = ["Fortschritt","Progress","Progreso"];
var MAN_RESTORE_BTN = ["Importieren","Restore","Importar"];
var MAN_GO_LIVE = ["Starte Produktivbetrieb","Start productive mode","Empezar trabajar realmente"];
var MAN_SHUTDOWN = ["Server herunterfahren","Shutdown server","Apagar servidor"];
@@ -263,6 +271,7 @@ var MAN_SMTPPASS = ["SMTP-Passwort","SMTP password","SMTP contraseña"];
var MAN_SMTPSECURE = ["SMTP-Protokoll","SMTP Protocol","SMTP Seguridad"];
var MAN_SMTPPORT = ["SMTP-Port","SMTP Port","SMTP Port"];
var MAN_MEMORYLIMIT = ["PHP Memory Limit (MB)","PHP Memory Limit (MB)","PHP Memory Limit (MB)"];
+var MAN_UPDATEURL = ["Update-Server","Update server","Servidor de actualizar"];
var MAN_HS3REFRESH = ["HS/3 Updateinterval (Sek.)","HS/3 Update interval (sec.)","HS/3 Update Interval (sec)"];
var MAN_WEBIMPRESSUM = ["Webimpressum","Web company info","www café info"];
var MAN_TAX_ASSIGN = ["Umsatzsteuer-Zuweisung","Taxes assigment","Asignar impuestos"];
@@ -334,6 +343,7 @@ var MAN_DEL_HINT = ["Zum Löschen anklicken","Click to delete","Click para remov
var MAN_FONTSIZE_HINT = ["Die Schriftgröße hat nur Einfluss, wenn kein eigenes Layout festgelegt wurde.","The font size only effects receipts if they do not use a specified layout.","El valor sólo funciona si no se usa un layout individual."];
var MAN_INIT_AUSTRIA = ["Erstelle Startbeleg (Österreich)","Create initial receipt (Austria)","Crear tiquet inicial (Austria)"];
var MAN_GOLIVE_WAIT_HINT = ["Bitte beachten Sie, dass diese Aktion auf langsamen Servern mehrere Minuten dauern kann. Schließen Sie diesen Dialog und warten Sie auf die Meldung, dass det Vorgang abgeschlossen wurde.","Please be aware that this action may take a while on slow servers. Please close this dialog and wait for the message that the process has completed.","Esta acción puede durar unos minutos. Por favor confirme este dialogo y espere por el mensaje que la acción esta completada."]
+var MAN_DO_UPDATESTEP = ["Die Dateien wurden hochgeladen. Es findet eine Weiterleitung auf die Installationsseite statt. Klicken Sie dort auf den Update-Button!","The files have been uploaded. You will be forwarded to the install page. Please click on the update button there!","Los ficheros estan aquí ahora. La página de install es el proximo paso donde puedes click on el boton 'update'!"];
var lang = 0;
var generalVals = [12,2,0,3,0,1,1,0,0,1, 0,50,20,10,1,0,0,0,1,0,1,0,0,1,1];
@@ -341,6 +351,7 @@ var generalVals = [12,2,0,3,0,1,1,0,0,1, 0,50,20,10,1,0,0,0,1,0,1,0,0,1,1];
var numberOfClosings = 0;
var unpaidTables = "";
+var version = '';
var generalValuesSettings = [
["usstval","MwSt","i",2,"Mehrwertsteuer ist kein Zahlenwert"],
@@ -404,6 +415,7 @@ var generalValuesSettings = [
["hscurrency",MAN_HSCURRENCY[lang],"i",0],
["memorylimit",MAN_MEMORYLIMIT[lang],"i",0,""],
+ ["updateurl",MAN_UPDATEURL[lang],"i",0,""],
["hs3refresh",MAN_HS3REFRESH[lang],"i",0,""]
];
@@ -458,6 +470,7 @@ function setLanguage(l) {
$("#smtpporttxt").html(MAN_SMTPPORT[l]);
$("#memorylimittxt").html(MAN_MEMORYLIMIT[l]);
+ $("#updateurltxt").html(MAN_UPDATEURL[l]);
$("#hs3refreshtxt").html(MAN_HS3REFRESH[l]);
$("#paydeskidtxt").html(MAN_PAYDESKID[l]);
@@ -476,6 +489,11 @@ function setLanguage(l) {
$("#bakresinfotxtall").html(MAN_BAK_REST_INFO_ALL[l]);
$("#uplfiletxt").html(MAN_UPLOAD_FILE[l]);
$("#bakrestxt").html(MAN_BAK_REST_HEAD[l]);
+ $("#updatetxt").html(MAN_UPDATE_HEAD[l]);
+ $("#updatebtntxt").html(MAN_CHECK_UPDATE_BTN[l]);
+ $("#updatehinttxt").html(MAN_UPDATE_HINT[l]);
+ $("#availableversiontxt").html(MAN_AVAIL_UPD_VERSION[l]);
+ $("#urltxt").html(MAN_UPDATE_URL[l]);
$("#backupbtntxt").html(MAN_BAK_BTN[l]);
$("#backupguestsbtntxt").html(MAN_BAK_GUEST_BTN[l]);
$("#backupbtntxtall").html(MAN_BAK_BTN_ALL[l]);
@@ -530,6 +548,8 @@ function setLanguage(l) {
$("#restmodehint").html(MAN_REST_MODE_HINT[l]);
$("#workfontsizehint").html(MAN_FONTSIZE_HINT[l]);
+
+ $("#updateprogresslabel").html(MAN_UPD_PROGRESS[l] + ": ");
}
function createMonthSelection(label) {
@@ -595,6 +615,8 @@ function insertGeneralConfigItems(configResult) {
saveValueIntoForm(values.taxaustriaerm2,decpoint,"#taxaustriaerm2val");
saveValueIntoForm(values.taxaustriaspecial,decpoint,"#taxaustriaspecialval");
+ version = values.version;
+
$("#companyinfo").val(values.companyinfo);
$("#rectemplate").val(values.rectemplate);
$("#foodtemplate").val(values.foodtemplate);
@@ -694,6 +716,7 @@ function insertGeneralConfigItems(configResult) {
$("#smtpport").val(values.smtpport);
$("#memorylimit").val(values.memorylimit);
+ $("#updateurl").val(values.updateurl);
$("#hs3refresh").val(values.hs3refresh);
$("#paydeskid").val(values.paydeskid);
@@ -1338,6 +1361,17 @@ function binding() {
});
});
+ $("#update_btn").off("click").on("click", function (e) {
+ e.stopImmediatePropagation();
+ e.preventDefault();
+ var availVersion = $("#availversion").html();
+ if (availVersion == version) {
+ alert("Update not possible (versions do not differ): " + version);
+ } else {
+ doAjax("GET","php/contenthandler.php?module=updater&command=updatecheck",null,handleUpdateCheckResult,"Skriptproblem");
+ }
+ });
+
$("#shutdown_btn").off("click").on("click", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
@@ -1415,6 +1449,74 @@ function getSpooledPrintJobs() {
doAjax("GET","php/contenthandler.php?module=printqueue&command=getPrintJobOverview",null,insertPrintQueue,null);
}
+function getVersionInfoForUpdate() {
+ var data = {
+ n: getMillis()
+ };
+
+ doAjax("GET","php/contenthandler.php?module=updater&command=getAvailableVersion",data,insertAvailableUpdateVersion,null,true);
+}
+
+function insertAvailableUpdateVersion(answer) {
+ $("#urlpath").val(answer.url);
+ if (answer.status == "OK") {
+ $("#availversion").html(answer.msg);
+ } else {
+ $("#availversion").html('?');
+ }
+}
+
+function handleUpdateCheckResult(answer) {
+ if (answer.status != "OK") {
+ alert("Error: " + answer.msg);
+ return;
+ }
+ var updateinfolines = answer.msg;
+
+ var totalLines = updateinfolines.length;
+
+ if (totalLines < 2) {
+ alert("Info file not valid");
+ return;
+ }
+
+ totalLines--;
+
+ $("#sliderarea").show();
+
+ for (var index=0;indexPHP Memory Limit:
+
+
+ Update-Server:
+
+
@@ -3077,6 +3186,24 @@ $(document).on("pageinit", "#admin-page", function () {
Starte Produktivbetrieb
+
+
+
Update
+
Update-Hinweis...
+
+
"}return c}function checkForLogIn(){doAjax("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)}}function isInt(a){if(Math.floor(a)==a&&$.isNumeric(a)){return true}else{return false}}function getMillis(){var a=new Date();var b=a.getTime();return b}var P_SUM=["Summe:","Sum:","Todo:"];var P_TOTAL=["Total","Total","Total"];var P_MWST=["MwSt","Tax","IVA"];var P_NETTO=["Netto","Net","Neto"];var P_BRUTTO=["Brutto","Gross","Bruto"];var P_ID=["Id:","Id:","Id:"];var P_TABLE=["Tisch:","Table:","Mesa:"];var P_WAITER=["Es bediente Sie:","Waiter:","Camarero:"];var P_NO=["Anz.","No.","Nú."];var P_DESCR=["Beschreibung","Description","Descripción"];var P_PRICE=["Preis","Price","Precio"];function createReceiptFooterFromDbTaxes(c,a,h,k,m){var b='style="border: solid black 0px;padding: 3px;text-align:right;vertical-align:bottom;"';var n='style="text-align:center;vertical-align:bottom;"';var f="  ";var l=f;l+=""+P_MWST[c]+"% "+P_MWST[c]+" "+P_NETTO[c]+" "+P_BRUTTO[c]+" ";for(var g=0;g"+e.tax;l+=" "+e.mwst.replace(".",m);l+=" "+e.netto.replace(".",m);l+=" "+e.brutto.replace(".",m);l+=""}l+=f;l+=" "+P_SUM[c]+' "+h.toFixed(2).replace(".",m)+" ";l+=f;l+=" ";l+=toHtml(a).replace(/(?:\r\n|\r|\n)/g," ");l+=" ";return l}function generateProdPart(k,b){var i=0;tablecontent="";for(i=0;i";return h}var tminfo=null;function insertTMInfo(a){tminfo=a}function Tablemap(b,a,c){this.tables=a;this.roomid=b;this.elem=c;this.selectedTableId=-1;if((a!=null)&&(a.length>0)){this.selectedTableId=a[0].id}}Tablemap.prototype.renderContent=function(){doAjaxTransmitData("GET","php/tablemap.php?command=getTableMap&roomid="+this.roomid,null,this.renderTableList,null,this);d=new Date();$("#mapimgpart").attr("src","php/tablemap.php?command=getTableMapImgAsPng&roomid="+this.roomid+"&tableid="+this.selectedTableId+"&"+d.getTime())};Tablemap.prototype.renderTableList=function(b,a){a.tables=b;var c=a.createList(b,"table_","tablebtn","c",a);$(a.elem).html(c);tmRefreshList(a.elem);a.binding(a)};Tablemap.prototype.createList=function(n,a,g,h,p){var m='";return m};Tablemap.prototype.binding=function(a){$(".tablebtn").off("click").on("click",function(b){b.stopImmediatePropagation();b.preventDefault();a.selectedTableId=this.id.split("_")[1];a.renderContent(a.elem)});$("#tmimgbtn").off("click").on("click",function(b){b.stopImmediatePropagation();b.preventDefault();a.uploadImg(a)});$("#mapimgpart").off("click").on("click",function(k){k.stopImmediatePropagation();k.preventDefault();var c=$("#mapimgpart").width();var b=$("#mapimgpart").height();var l=$(this).offset().top-$(window).scrollTop();var g=$(this).offset().left-$(window).scrollLeft();var i=Math.round((k.clientX-g));var h=Math.round((k.clientY-l));var f={tableid:a.selectedTableId,x:(100*i)/c,y:(100*h)/b};doAjaxTransmitData("POST","php/tablemap.php?command=setPosition",f,a.renderIfOk,null,a)})};Tablemap.prototype.createOverlay=function(y,h,o,v,f,k,u,n){if(typeof n==="undefined"){n=null}var q=[];var g="";if(u==0){g="overlaysize-0"}else{if(u==1){g="overlaysize-1"}else{if(u==2){g="overlaysize-2"}}}for(var x=0;x'+z;if(w!=0){r=''+z;if(o!=""){r+=" ("+o+": "+l+")"}else{r+=" ("+l+")"}}r+=" ";q[q.length]=r}}return q};Tablemap.prototype.bindingForOverlaySelection=function(a,c,b,e){if(e!=null){$("#tablemapcontent:not(.overlaytxt)").off("click").on("click",function(f){f.stopImmediatePropagation();f.preventDefault();e()})}$("#tablemapcontent .overlaytxt").off("click").on("click",function(m){m.stopImmediatePropagation();m.preventDefault();var g=this.id.split("_")[1];var h="?";for(var f=0;f0)){var u=a[0].id;var n=a[0].name;var t=(100*100)+(100*100);for(var k=0;k '}k+="";return k};Tablemap.prototype.uploadImg=function(a){var b=new FormData($("#tablemapimgform")[0]);b.append("roomid",a.roomid);$.ajax({url:"php/tablemap.php?command=uploadimg",type:"POST",dataType:"json",xhr:function(){var c=$.ajaxSettings.xhr();if(c.upload){}return c},success:function(c){if(c.status!="OK"){a.imgNotUploaded(c)}else{a.imgUploaded(c,a)}},error:function(c){a.imgNotUploaded(c)},data:b,cache:false,contentType:false,processData:false})};Tablemap.prototype.imgUploaded=function(b,a){a.renderContent()};Tablemap.prototype.imgNotUploaded=function(a){alert("Bild konnte nicht hochgeladen werden. Ist es zu groß (> 1 MB)? Oder wurde der Dateiname nicht angegeben?")};function shallDisplayRoom(c){var a=tminfo;if(tminfo==null){return{show:false}}for(var b=0;b";b.src="data:text/html;charset=utf-8,"+encodeURI(a);document.body.appendChild(b)}function Grouping(b,a){this.set=b;this.sortedset=[];this.group=function(){this.sortedset=[];for(var g=0;g Bestellansicht","-> Order view","-> Vista de Orden"];var P_TO_PAY=["Zu zahlen: ","To pay: ","Pagar total: "];var P_PAY_RETURN=["Zurück: ","Return: ","Torna: "];var P_CALC_PAYBACK=["Berechne","Calculate","Calcular"];var P_HAS_PAID=["Bezahlt: ","Paid: ","Pagado: "];var P_TOGO=["Außer-Haus-Verkauf","Sale with Tax No 2","Venta IVA 2"];var P_TIP=["nur Trinkg.: ","Only tip: ","Solo prop.: "];var P_TOTAL_INCL_TIP=["Zielbetrag:","Target pay:","Quiere pagar:"];var CALC_TIP_TXT=["Angabe extra Trinkg.","Do Tip separate","Propina individual"];var CALC_TOTAL_TXT=["Angabe inkl.Trinkg.","Do Tip incl.","Propina incl."];var P_GUESTS=["Gäste","Guests","Habitaciones"];var showHostTemplate=false;var guests=[];var internalguests=[];var hotelinterface=0;var PAYMENT_HS3=7;var PAYMENT_GUEST=8;var currentPaymentId=7;function getGeneralConfigItems(){doAjax("GET","php/contenthandler.php?module=admin&command=getGeneralConfigItems",null,insertGeneralConfigItems,"Fehler Konfigurationsdaten")}function getPayments(a){doAjax("GET","php/contenthandler.php?module=admin&command=getPayments",null,a,"Fehler Zahlungswege")}function insertGeneralConfigItems(b){if(b.status=="OK"){var a=b.msg;decpoint=a.decpoint;$("#info-page").data("decpoint",a.decpoint);currency=a.currency;var e=a.tax;var c=e.replace(".",decpoint);$("#info-page").data("usstGerVal",c);$("#info-page").data("usst",e);e=a.togotax;c=e.replace(".",decpoint);$("#info-page").data("togoTaxGerVal",c);$("#info-page").data("togotax",e);$("#info-page").data("companyinfo",a.companyinfo);$("#info-page").data("payPrintType",a.payprinttype);$("#info-page").data("currency",a.currency);$("#info-page").data("billlanguage",a.billlanguage);$("#info-page").data("userlanguage",a.userlanguage);receiptfontsize=parseInt(a.receiptfontsize);$("#receiptpart").css("font-size",receiptfontsize+"px");paymentconfig=a.paymentconfig;$("#curtopay2").html(" "+a.currency);workflowconfig=a.workflowconfig;digigopaysetready=a.digigopaysetready;setLanguage(a.userlanguage)}else{$("#contentpart").hide();setTimeout(function(){document.location.href="index.html"},250)}}function addEntryOrIncreaseCount(a,f){var c=0;var g=false;var e=f.prodid+"-"+f.extras.join("_")+f.price+"-"+f.pricelevelname+"#"+f.tax+"_"+f.togo;for(c=0;c ";g+=" "+i+' ID:"+e+" ";g+=' ";g+=""+c+" ";g+="  ";if(l!=""){g+="Gast: "+toHtml(l)+" ";g+="  "}g+=""+P_NO[b]+" "+P_DESCR[b]+" "+P_PRICE[b]+" "+P_TOTAL[b]+" ";return g}function genCreateReceiptFooterNoSum(c,e,b,a){return genCreateReceiptFooter(c,e,b,"","","",a)}function genCreateReceiptFooter(a,f,b,k,e,m,n){var c='style="border: solid black 0px;padding: 3px;text-align:right;vertical-align:bottom;"';var p='style="text-align:center;vertical-align:bottom;"';var h="  ";var o=h;o+=""+P_MWST[f]+"% "+P_MWST[f]+" "+P_NETTO[f]+" "+P_BRUTTO[f]+" ";for(var l=0;l"+k+' "+e+' "+m+""}o+=h;o+=" "+P_SUM[f]+' "+m+" ";o+=h;o+=" ";o+=toHtml(b).replace(/(?:\r\n|\r|\n)/g," ");o+=" ";return o}function generateOneProdLine(k,g,i,a,n,f){var b='style="border: solid black 0px;padding: 3px;text-align:right;vertical-align:bottom;"';var h='style="border: solid black 0px;padding: 3px;text-align:center;vertical-align:bottom;"';var c=(parseFloat(i)).toFixed(2).replace(".",n);if(a!="A"){g+=" ("+a+")"}if(f==1){g="To-Go: "+g}var m=k*i;var l="";var e='style="white-space: nowrap;overflow: hidden;text-overflow:ellipsis;width: 60%;"';l+="'+k+" "+g;l=l+" "+c;l+=" "+m.toFixed(2).replace(".",n)+" ";return l}function generateProdPartByDbContent(f,e){var c=0;tablecontent="";for(c=0;c=0);var m=(p.toLowerCase().indexOf(g)>=0);if(l||m){i++;h=toHtml(k+" - "+p);if(!c){c=true;f+=''+toHtml(k+" - "+p)+" "}else{f+=''+toHtml(k+" - "+p)+" "}}});if(i===1){$("#hotelroomfoundguest").html(h);$("#hotelroomselection").html(f)}else{$("#hotelroomselection").html(f)}if(b){$("#hotelroomselection").selectmenu("refresh")}}function setLanguage(b){$("#roomsel").html(P_ROOMSEL[b]);$("#oben").listview("refresh");lang=b;var a=''+P_PAYDESK_ACTIONS[lang]+' '+P_BAR_INPUT[lang]+' '+P_BAR_GET[lang]+' '+P_BAR_SUM[lang]+" ";$("#cashactions").html(a);$("#cashactions").listview("refresh");$("#navtitle").html(P_NAV[lang]);$("#nav2order").html(P_ORDER_ACTION[lang]);$("#navactions").listview("refresh");$("#paydesktitle").html(P_TITLE[lang]);$("#OnlyPayTxt").html(P_ONLY_PAY[lang]);$("#payprinttxt").html(P_PAY_PRINT[lang]);$("#payway").html(P_CHANGE_CALC[lang]);$("#choosepayway").html(P_CHOOSE_PAYWAY[lang]);$("#canceltxt").html(P_CANCEL[lang]);$("#cancelroomselectiontxt").html(P_CANCEL[lang]);$("#cashtakeouttxt").html(P_CASHTAKEOUT[lang]);$("#amounttxt").html(P_AMOUNT[lang]);$("#amounttxt2").html(P_AMOUNT[lang]);$("#cashtakeintxt").html(P_CASHTAKIN[lang]);$("#cashoverviewtxt").html(P_OVERVIEW[lang]);$("#putinact").html(P_PUT_IN[lang]);$("#takeoutact").html(P_TAKE_OUT[lang]);$("#overviewdetails").html(P_OVERV_DETAILS[lang]);$("#cashsum").html(P_CASH_SUM[lang]);$("#includeowncash").html(P_INCLUDE_OWN[lang]);$("#noelementstxt").html(P_NO_ELEM[lang]);$("#noelementsdetailstxt").html(P_NO_ELEM_DETAILS[lang]);$("#topaytxt").html(P_TO_PAY[lang]);$("#rettxt").html(P_PAY_RETURN[lang]);$("#calcreturn").html(P_CALC_PAYBACK[lang]);$("#haspaidtxt").html(P_HAS_PAID[lang]);$("#tableselimmaptxt").html(P_TABLE_SEL[lang]);setCalcModusBtn()}function getButtonSizes(){doAjax("GET","php/contenthandler.php?module=admin&command=getButtonSizes",null,fillButtonSizes,"Keine Buttongroesseninformation")}function fillButtonSizes(a){osroombtnsize=a.roombtnsize;ostablebtnsize=a.tablebtnsize;osprodbtnsize=a.prodbtnsize}function getProdSizeClass(){if(osprodbtnsize==1){return("osprod-1")}else{if(osprodbtnsize==2){return("osprod-2")}else{return""}}}function getTableSizeClass(){if(ostablebtnsize==1){return("ostable-1")}else{if(ostablebtnsize==2){return("ostable-2")}else{return""}}}function getRoomSizeClass(){if(osroombtnsize==1){return("osroom-1")}else{if(osroombtnsize==2){return("osroom-2")}else{return""}}}function insertPayments(f){var e=f.payments;hotelinterface=f.hotelinterface;guests=f.guests;internalguests=f.internalguests;var c="";var a=20;if(paymentconfig==1){a=2}var b=false;$.each(e,function(h,g){if(h'+g.name+" ";if(!b){c+=" ";b=true}}});c+=''+P_CANCEL[lang]+" ";$("#paymentlist").html(c)}function hideReceiptPart(){$("#payWithoutPrint").hide();$("#payWithPrint").hide();$("#hostbutton").hide();$("#unten").hide()}function showReceiptPart(){$("#payWithoutPrint").show();$("#payWithPrint").show();$("#hostbutton").show();$("#unten").show();$("#tablemapcontent").hide();$("#togoarea").hide()}function getTableMapPreferences(){doAjax("GET","php/tablemap.php?command=getTableMapPreferences",null,insertTMInfoAndStartDisplayProc,"Keine TM-Information")}function insertTMInfoAndStartDisplayProc(a){tminfo=a;startDisplayProcess()}function handleClickInTablemap(a){checkForLogIn();$("#info-page").data("roomid",null);$("#info-page").data("tableviewactive",0);$("#info-page").data("tid",a.tableid);$("#info-page").data("tablename",a.tablename);$("#oben").show();getProdsToPayForTable(a.tableid,a.tablename)}function displayAllRooms(){checkForLogIn();$("#moneyToInsert").val("");$("#moneyToTakeOut").val("");$("#cashactions").show();$("#navactions").show();$("#remarkin").val("");$("#remarkout").val();hideReceiptPart();var a=$("#info-page").data("billlanguage");$("#prodlistinreceipt").empty().append('"+P_DESCR[a]+' '+P_PRICE[a]+' '+P_TOTAL[a]);$.getJSON("php/contenthandler.php?module=roomtables&command=getRooms",function(f){var g=f.roomstables;var c=f.takeawayprice;var h=g.length;if(h==1){$("#info-page").data("roomid",g[0]["id"]);displayTablesOfRoom(g[0],false);if(cameFromOrdering==1){$("#startpaypage").show()}else{$("#startpaypage").hide()}}else{var b="";var e=getRoomSizeClass();$.each(g,function(l,k){b+=''+k.name+" "});if(c!="0.00"){b+=''+P_TOGO[a]+" ("+c+" "+currency+") "}$("#startpaypage").hide();$("#oben").append(b).promise().done(function(){bindTogoOrdering();$(this).off("click").on("click","a",function(k){k.stopImmediatePropagation();k.preventDefault();var i=g[this.id];$("#info-page").data("roomid",i.id);$("#startpaypage").show();displayTablesOfRoom(i,true)});refreshList(this)})}})}function bindTogoOrdering(){$(".togoorder").off("click").on("click",function(a){a.stopImmediatePropagation();a.preventDefault();$("#info-page").data("roomid",null);$("#info-page").data("tableviewactive",0);$("#info-page").data("tid",0);$("#info-page").data("tablename",P_TOGO[lang]);$("#oben").show();getProdsToPayForTable(0,"")})}function displayTablesOfRoom(a,b){checkForLogIn();hasRooms=b;var c=$("#info-page").data("roomid");hideReceiptPart();displayUnpaidTables("Tischinfo nicht erhalten!")}$(document).ready(function(){checkForLogIn();var a=setInterval(function(){var b=$("#info-page").data("roomid");if(b!=null){displayUnpaidTables(null)}},10000);$.ajaxSetup({cache:false})});function displayUnpaidTables(a){doAjax("GET","php/contenthandler.php?module=roomtables&command=getUnpaidTables",{roomid:$("#info-page").data("roomid")},displayTables,a)}function displayTables(f){var i=f.tables;var e=f.takeawayprice;$("#info-page").data("tableviewactive",1);var a=$("#info-page").data("roomid");var g=shallDisplayRoom(a);if(g.show){$("#oben").hide();$("#tablemapcontent").show();$("#togoarea").show();d=new Date();$("#mapimgpart").attr("src","php/tablemap.php?command=getUnpaidTablesMapImgAsPng&showBubbles=0&roomid="+a+"&"+d.getTime());var b=new Tablemap(a,null,"");var c=b.createOverlay("#mapimgpart",g.pos,"",decpoint,currency,i,ostablebtnsize);$("#tableoverlay").html(c);b.bindingForOverlaySelection(handleClickInTablemap.bind(this),a,i,null);if(!hasRooms){if(e!="0.00"){var h=''+P_TOGO[lang]+" ";$("#tables-list-togo").html(h);$("#togoarea").show()}refreshList("#tables-list-togo");bindTogoOrdering()}}else{$("#oben").show();$("#tablemapcontent").hide();$("#togoarea").hide();var h=''+P_TABLE_SEL[lang]+" ";var k=getTableSizeClass();$.each(i,function(m,o){var n=o.pricesum.replace(".",decpoint);var l=o.name+" ("+n+" "+currency+") ";h+=''+l+" "});if(!hasRooms){if(e!="0.00"){h+=''+P_TOGO[lang]+" "}}$("#oben").empty().append(h).promise().done(function(){bindTogoOrdering();$(this).off("click").on("click",".info-go",function(n){n.stopImmediatePropagation();n.preventDefault();$("#info-page").data("roomid",null);$("#info-page").data("tableviewactive",0);var l=i[this.id]["id"];var m=i[this.id]["name"];$("#info-page").data("tid",l);$("#info-page").data("tablename",m);getProdsToPayForTable(l,m)});refreshList(this)})}}function getProdsToPayForTable(a,b){$("#startpaypage").show();if(a==0){b=P_TOGO[lang];$("#info-page").data("taxtype","togo")}else{$("#info-page").data("taxtype","normal")}$("#cashactions").hide();$("#navactions").hide();$.ajax({type:"GET",dataType:"json",data:{tableid:a},url:"php/contenthandler.php?module=queue&command=getJsonProductsOfTableToPay",async:false,success:function(e){var c=e.status;var f=e.msg;if(c!="ERROR"){showReceiptPart();prodsToPayList=f;$("#info-page").data("tableprods",f);bindPayButton(f,a,b);initiatePayableView(f,b)}else{alert("Fehler: "+f)}},error:function(c){alert("Sorry, there was a problem getting the products to pay for table!")}})}function initiatePayableView(a,b){$("#tableinreceipt").html(b+" ");clearUntenAndReceipt();createAllEntriesInReceipt();calcSum();prodsToPayList=a;payTable=b;displayProdsToPayForTable();bindingPressReceipt()}function bindingPressReceipt(){$(".receipttable").off("click").on("click",function(a){a.stopImmediatePropagation();a.preventDefault();if(onlyReceiptShown===1){$("#oben").show();$("#unten").show();$("#paybuttongroup").show();$("#hostbuttongroup").show();$(".receipttable").css("width","70%")}else{$("#oben").hide();$("#unten").hide();$("#paybuttongroup").hide();$("#hostbuttongroup").hide();$(".receipttable").css("width","100%")}onlyReceiptShown=1-onlyReceiptShown})}function displayProdsToPayForTable(){prodsToPayListGrouping=new Grouping(prodsToPayList,createHashOfPayableItem);prodsToPayListGrouping.group();var b=getProdSizeClass();var a=''+P_NOT_PAID[lang]+payTable+" ";a+=''+P_ALL[lang]+" ";var c=a+prodsToPayListGrouping.outputList(createPayableItemListElement);$("#oben").html(c);refreshList("#oben");$(".payable").off("click").on("click",function(h){h.stopImmediatePropagation();h.preventDefault();var g=$(this).closest("li");var i=$("#oben li").index(g)-2;var f=prodsToPayListGrouping.popSortedEntry(i);prodsOnReceiptList[prodsOnReceiptList.length]=f;displayProdsToPayForTable();displayProdsOnReceipt()});$("#payall").off("click").on("click",function(g){g.stopImmediatePropagation();g.preventDefault();for(var f=0;f0,00 '+currency+"";var c=a+prodsOnReceiptListGrouping.outputList(createOnReceiptItemListElement);$("#unten").html(c);refreshList("#unten");createAllEntriesInReceipt();$(".onreceipt").off("click").on("click",function(h){h.stopImmediatePropagation();h.preventDefault();var g=$(this).closest("li");var i=$("#unten li").index(g)-1;var f=prodsOnReceiptListGrouping.popSortedEntry(i);prodsToPayList[prodsToPayList.length]=f;displayProdsToPayForTable();displayProdsOnReceipt()})}function generateListItem(g,c,h,e,f){var b=getProdSizeClass();var a='';a+=''+e+" ";return a}function createHashOfPayableItem(b){var a=b.longname;if(b.pricelevelname!="A"){a+=" ("+b.pricelevelname+")"}a+=" - "+(parseFloat(b.price).toFixed(2).replace(".",decpoint));if(b.togo==1){a="To-Go: "+a}var c=createExtraParagraph(b.extras);return toHtml(a)+c}function createPayableItemListElement(b){var a="";if("count" in b){if(b.count>1){a=b.count+"x "}}var c=generateListItem("c","plus","payable_"+b.id,a+createHashOfPayableItem(b),"payable");return c}function createOnReceiptItemListElement(b){var a="";if("count" in b){if(b.count>1){a=b.count+"x "}}var c=generateListItem("c","plus","payable_"+b.id,a+createHashOfPayableItem(b),"onreceipt");return c}function clearUntenAndReceipt(){var a='';a+=P_CONTENT_RECEIPT[lang]+': 0,00 '+currency+"
";$("#unten").empty().append(a).promise().done(function(){refreshList("#unten")});$("#prodlistinreceipt tr").each(function(){$(this).remove()});$("#thedate").html(" ")}function createAllEntriesInReceipt(){var a=new Array();for(var e=0;e'+$("#receiptpart").html()+"";var q=$("#info-page").data("payPrintType");if(q=="s"){printBill(billid)}else{$("#oben").hide();var u=""+$(".receipttable").html()+"
";printContent(u)}}prodsOnReceiptList=[];getProdsToPayForTable(b,k);var i=$("#oben li").size()-2;if(i>0){}else{if(cameFromOrdering==1){goToUrl("waiter.html")}else{goToUrl("paydesk.html")}}}}else{alert("Fehler: "+s)}},error:function(i){alert("Sorry, there was a problem! "+i)}})}function goToUrl(a){setTimeout(function(){document.location.href=a},500)}function cashactions(){$(".cashaction").off("click").on("click",function(a){var b=$(this).attr("id");if(b=="cashtakeout"){startCashTakeOutProcess()}else{if(b=="cashinsert"){startCashInsertProcess()}else{if(b=="cashoverview"){startCashOverviewProcess()}}}})}function startCashInsertProcess(){$("#cashinsertdialog .sure-do").off("click").on("click",function(){$.mobile.changePage("#info-page");var a=$("#moneyToInsert").val().replace($("#info-page").data("decpoint"),".");var b=$("#remarkin").val();if(isNaN(a)){alert("Keine Zahl!")}else{if((parseFloat(a)>=0)&&(parseFloat(a)<=10000)){doCashInsert(a,b)}else{alert("Betrag muss positiv und kleiner als 10000 sein!")}}});$.mobile.changePage("#cashinsertdialog");removeInputValsCashIn()}function removeInputValsCashOut(){setTimeout(function(){$("#moneyToTakeOut").val("");$("#remarkout").val("")},1000)}function removeInputValsCashIn(){setTimeout(function(){$("#moneyToInsert").val("");$("#remarkin").val("")},1000)}function startCashTakeOutProcess(){$("#cashtakeoutdialog .sure-do").off("click").on("click",function(){$.mobile.changePage("#info-page");var a=$("#moneyToTakeOut").val().replace(decpoint,".");var b=$("#remarkout").val();if(isNaN(a)){alert("Keine Zahl!")}else{if((parseFloat(a)>=0)&&(parseFloat(a)<=10000)){doCashTakeOut(a,b)}else{alert("Betrag muss positiv und kleiner als 10000 sein!")}}});$.mobile.changePage("#cashtakeoutdialog");removeInputValsCashOut()}function doCashInsert(a,b){doAjax("POST","php/contenthandler.php?module=bill&command=doCashAction",{money:a,remark:b},handleCashActionResult,"Fehler Kassenaktion")}function doCashTakeOut(a,b){a=0-parseFloat(a);doAjax("POST","php/contenthandler.php?module=bill&command=doCashAction",{money:a,remark:b},handleCashActionResult,"Fehler Kassenaktion")}function startCashOverviewProcess(){doAjax("POST","php/contenthandler.php?module=bill&command=getCashOverviewOfUser",null,showCashOverview,"Fehler Kassenaktion")}function handleCashActionResult(a){if(a.status=="ERROR"){alert("Fehler "+a.code+": "+a.msg)}else{if(a.status=="OK"){alert(P_CASHACTION_OK[lang])}}}function showCashOverview(a){$("#cashbyguests").html((parseFloat(a.guestmoney).toFixed(2)).replace(".",decpoint));$("#cashtotal").html((parseFloat(a.total).toFixed(2)).replace(".",decpoint));$.mobile.changePage("#cashoverviewinfo")}function startDisplayProcess(){var b=location.search;if(b.indexOf("t=")<0){displayAllRooms()}else{var e="";var g=b.split(/&|\?/);for(var a=0;a
diff --git a/webapp/php/admin.php b/webapp/php/admin.php
index 80cbe8f..efcc52b 100644
--- a/webapp/php/admin.php
+++ b/webapp/php/admin.php
@@ -830,6 +830,7 @@ class Admin {
}
$memorylimit = CommonUtils::getConfigValue($pdo,"memorylimit",256);
+ $updateurl = CommonUtils::getConfigValue($pdo,"updateurl","");
$hs3refresh = CommonUtils::getConfigValue($pdo, "hs3refresh", 60);
$paydeskid = CommonUtils::getConfigValue($pdo,"paydeskid","");
@@ -864,7 +865,7 @@ class Admin {
"smtphost" => $smtphost,"smtpauth" => $smtpauth,"smtpuser" => $smtpuser,"smtppass" => $smtppass,"smtpsecure" => $smtpsecure,"smtpport" => $smtpport,
"webimpressum" => $webimpressum, "cancelunpaidcode" => $cancelunpaidcode, "cancelguestcode" => $cancelguestcode, "discount1" => $discount1,"discount2" => $discount2,"discount3" => $discount3,
"austria" => $austria, "digigopaysetready" => $digigopaysetready, "waitergopayprint" => $waitergopayprint, "oneprodworkreceipts" => $oneprodworkreceipts,
- "digiprintwork" => $digiprintwork, "memorylimit" => $memorylimit, "hs3refresh" => $hs3refresh,
+ "digiprintwork" => $digiprintwork, "memorylimit" => $memorylimit, "updateurl" => $updateurl, "hs3refresh" => $hs3refresh,
"paydeskid" => $paydeskid, "aeskey" => $aeskey, "certificatesn" => $certificatesn, "rksvserver" => $rksvserver, "addreceipttoprinter" => $addreceipttoprinter,
"printandqueuejobs" => $printandqueuejobs, "cashenabled" => $cashenabled, "returntoorder" => $returntoorder, "beepcooked" => $beepcooked,"restaurantmode" => $restaurantmode
);
@@ -956,7 +957,7 @@ class Admin {
$view = "preferences.html";
}
- echo json_encode($view . "?v=1.3.6");
+ echo json_encode($view . "?v=1.3.7");
}
}
@@ -1158,25 +1159,25 @@ class Admin {
if (!self::isOnlyRatingUser($rights, $right_rating, true)) {
if ($_SESSION['modus'] == 0) {
- if ($_SESSION['right_waiter']) { $mainMenu[] = array("name" => $waitertxt[$lang], "link" => "waiter.html?v=1.3.6"); };
+ if ($_SESSION['right_waiter']) { $mainMenu[] = array("name" => $waitertxt[$lang], "link" => "waiter.html?v=1.3.7"); };
} else {
- if ($_SESSION['right_waiter']) { $mainMenu[] = array("name" => $waiterdesktxt[$lang], "link" => "waiterdesktop.php?v=1.3.6"); };
+ if ($_SESSION['right_waiter']) { $mainMenu[] = array("name" => $waiterdesktxt[$lang], "link" => "waiterdesktop.php?v=1.3.7"); };
}
- if ($_SESSION['right_kitchen']) { $mainMenu[] = array("name" => $kitchentxt[$lang], "link" => "kitchen.html?v=1.3.6"); };
- if ($_SESSION['right_bar']) { $mainMenu[] = array("name" => "Bar", "link" => "bar.html?v=1.3.6"); };
- if ($_SESSION['right_supply']) { $mainMenu[] = array("name" => $supplytxt[$lang], "link" => "supplydesk.html?v=1.3.6"); };
+ if ($_SESSION['right_kitchen']) { $mainMenu[] = array("name" => $kitchentxt[$lang], "link" => "kitchen.html?v=1.3.7"); };
+ if ($_SESSION['right_bar']) { $mainMenu[] = array("name" => "Bar", "link" => "bar.html?v=1.3.7"); };
+ if ($_SESSION['right_supply']) { $mainMenu[] = array("name" => $supplytxt[$lang], "link" => "supplydesk.html?v=1.3.7"); };
if ($_SESSION['modus'] == 0) {
- if ($_SESSION['right_paydesk']) { $mainMenu[] = array("name" => $paydesktxt[$lang], "link" => "paydesk.html?v=1.3.6"); };
+ if ($_SESSION['right_paydesk']) { $mainMenu[] = array("name" => $paydesktxt[$lang], "link" => "paydesk.html?v=1.3.7"); };
}
- if ($_SESSION['right_statistics']) { $mainMenu[] = array("name" => $stattxt[$lang], "link" => "reports.html?v=1.3.6"); };
- if ($_SESSION['right_bill']) { $mainMenu[] = array("name" => $bontxt[$lang], "link" => "bill.html?v=1.3.6"); };
- if ($_SESSION['right_products']) { $mainMenu[] = array("name" => $prodtxt[$lang], "link" => "products.html?v=1.3.6"); };
- if ($_SESSION['right_reservation']) { $mainMenu[] = array("name" => $restxt[$lang], "link" => "reservation.html?v=1.3.6"); };
- if ($_SESSION['right_rating']) { $mainMenu[] = array("name" => $ratingtxt[$lang], "link" => "rating.html?v=1.3.6"); };
- if ($_SESSION['right_customers']) { $mainMenu[] = array("name" => $customerstxt[$lang], "link" => "customers.html?v=1.3.6"); };
- if ($_SESSION['right_manager'] || $_SESSION['is_admin'] || $_SESSION['right_closing']) { $mainMenu[] = array("name" => $admintxt[$lang], "link" => "manager.html?v=1.3.6"); };
- $mainMenu[] = array("name" => $settingtxt[$lang], "link" => "preferences.html?v=1.3.6");
- $mainMenu[] = array("name" => "Feedback", "link" => "feedback.html?v=1.3.6");
+ if ($_SESSION['right_statistics']) { $mainMenu[] = array("name" => $stattxt[$lang], "link" => "reports.html?v=1.3.7"); };
+ if ($_SESSION['right_bill']) { $mainMenu[] = array("name" => $bontxt[$lang], "link" => "bill.html?v=1.3.7"); };
+ if ($_SESSION['right_products']) { $mainMenu[] = array("name" => $prodtxt[$lang], "link" => "products.html?v=1.3.7"); };
+ if ($_SESSION['right_reservation']) { $mainMenu[] = array("name" => $restxt[$lang], "link" => "reservation.html?v=1.3.7"); };
+ if ($_SESSION['right_rating']) { $mainMenu[] = array("name" => $ratingtxt[$lang], "link" => "rating.html?v=1.3.7"); };
+ if ($_SESSION['right_customers']) { $mainMenu[] = array("name" => $customerstxt[$lang], "link" => "customers.html?v=1.3.7"); };
+ if ($_SESSION['right_manager'] || $_SESSION['is_admin'] || $_SESSION['right_closing']) { $mainMenu[] = array("name" => $admintxt[$lang], "link" => "manager.html?v=1.3.7"); };
+ $mainMenu[] = array("name" => $settingtxt[$lang], "link" => "preferences.html?v=1.3.7");
+ $mainMenu[] = array("name" => "Feedback", "link" => "feedback.html?v=1.3.7");
}
$mainMenu[] = array("name" => $logout[$lang], "link" => "logout.php");
@@ -1184,7 +1185,7 @@ class Admin {
$waiterMessage = $this->getMessage(null, "waitermessage");
}
- $mainMenuAndVersion = array ("version" => "OrderSprinter 1.3.6",
+ $mainMenuAndVersion = array ("version" => "OrderSprinter 1.3.7",
"user" => $currentUser,
"menu" => $mainMenu,
"waitermessage" => $waiterMessage,
@@ -1470,6 +1471,7 @@ class Admin {
"smtpport" => array("dbcol" => "smtpport","checknum" => 0),
"memorylimit" => array("dbcol" => "memorylimit","checknum" => 0),
+ "updateurl" => array("dbcol" => "updateurl","checknum" => 0),
"hs3refresh" => array("dbcol" => "hs3refresh","checknum" => 0),
"paydeskid" => array("dbcol" => "paydeskid","checknum" => 0),
@@ -1521,6 +1523,10 @@ class Admin {
}
}
+ if ($name == "updateurl") {
+ $aVal = trim($aVal);
+ }
+
if ($name == "hs3refresh") {
$aVal = trim($aVal);
if (!ctype_digit($aVal)) {
diff --git a/webapp/php/contenthandler.php b/webapp/php/contenthandler.php
index fb192a7..43bb54d 100644
--- a/webapp/php/contenthandler.php
+++ b/webapp/php/contenthandler.php
@@ -15,6 +15,7 @@ require_once ('reservation.php');
require_once ('rating.php');
require_once ('customers.php');
require_once ('commonutils.php');
+require_once ('updater.php');
require_once ('utilities/Logger.php');
$module = $_GET["module"];
@@ -70,6 +71,9 @@ if ($module == 'admin') {
} else if ($module == 'customers') {
$rating = new Customers();
$rating->handleCommand($command);
+} else if ($module == 'updater') {
+ $updater = new Updater();
+ $updater->handleCommand($command);
}
diff --git a/webapp/php/updater.php b/webapp/php/updater.php
new file mode 100644
index 0000000..0f1bced
--- /dev/null
+++ b/webapp/php/updater.php
@@ -0,0 +1,171 @@
+ "ERROR", "msg" => "Not authorized"));
+ } else {
+ $pdo = DbUtils::openDbAndReturnPdoStatic();
+ if ($command == 'getAvailableVersion') {
+ echo json_encode(self::getAvailableVersion($pdo));
+ } else if ($command == 'updatecheck') {
+ echo json_encode(self::updatecheck($pdo));
+ } else if ($command == 'replace') {
+ echo json_encode(self::replace($pdo,$_GET["fileindex"],$_GET["totalLines"]));
+ }
+ else {
+ echo "Kommando nicht unterstuetzt.";
+ }
+ }
+ }
+
+ private static function isUserAlreadyLoggedInAndAdmin() {
+ if(session_id() == '') {
+ session_start();
+ }
+ if (!isset($_SESSION['angemeldet']) || !$_SESSION['angemeldet']) {
+ return false;
+ } else {
+ return ($_SESSION['is_admin']);
+ }
+ }
+
+
+ private static function getFile($url,$file,$asArray = false,$timeout = 200) {
+ $ctx = stream_context_create(array('http' =>
+ array(
+ 'timeout' => $timeout, // seconds
+ )
+ ));
+
+ $url = $url . "/" . $file;
+
+ try {
+ $infoFile = @file_get_contents($url, false, $ctx);
+
+ if ($infoFile != FALSE) {
+ if ($asArray) {
+ $retArr = array();
+ $lines = explode("\n", $infoFile);
+
+ if (count($lines) < 1) {
+ return array("status" => "ERROR","msg" => "Info file not valid");
+ }
+ $versionMatch = '/^[0-9]*\.[0-9]*\.[0-9]*/';
+ $ret = preg_match($versionMatch, $lines[0]);
+ if ($ret == 0) {
+ return array("status" => "ERROR","msg" => "Info file has no version info.");
+ }
+
+ foreach($lines as $aLine) {
+ $l = trim($aLine);
+ if ($l != '') {
+ $retArr[] = $l;
+ }
+ }
+ return array("status" => "OK","msg" => $retArr);
+ } else {
+ return array("status" => "OK","msg" => $infoFile);
+ }
+ } else {
+ return array("status" => "ERROR","msg" => "Info file not found");
+ }
+ } catch (Exception $ex) {
+ return array("status" => "ERROR","msg" => $ex->getMessage());
+ }
+ }
+ private static function getAvailableVersion($pdo) {
+ $url = CommonUtils::getConfigValue($pdo, "updateurl", '');
+ $infoFile = self::getFile($url,'updateinfo.txt',true,3);
+ if ($infoFile["status"] != "OK") {
+ return array("status" => "ERROR","msg" => "could not get info file: " . $infoFile["msg"],"url" => $url);
+ }
+ $infoFileLines = $infoFile["msg"];
+
+ if (count($infoFileLines) > 1) {
+ return array("status" => "OK","msg" => $infoFileLines[0],"url" => $url);
+ } else {
+ return array("status" => "ERROR","msg" => "Info file not valid","url" => $url);
+ }
+ }
+
+
+ private static function doCheck($lineArr) {
+ if (count($lineArr) < 2) {
+ return array("status" => "OK","msg" => '');
+ }
+
+ for ($i=1;$i "ERROR","msg" => $aLine . " cannot be overwritten");
+ }
+ } else {
+ // file does not exist, but can it be created?
+ if (!$isDirWritable) {
+ return array("status" => "ERROR","msg" => $basename . " cannot be written into $dirname");
+ }
+ }
+ } else {
+ return array("status" => "ERROR","msg" => $dirname . " does not exist");
+ }
+ }
+ return array("status" => "OK","msg" => "");
+ }
+
+ public static function updatecheck($pdo) {
+ $url = CommonUtils::getConfigValue($pdo, "updateurl", '');
+
+ $infoFile = self::getFile($url,'updateinfo.txt',true,3);
+ if ($infoFile["status"] != "OK") {
+ return array("status" => "ERROR","msg" => "could not get info file: " . $infoFile["msg"]);
+ }
+ $infoFileLines = $infoFile["msg"];
+
+ $check = self::doCheck($infoFileLines);
+ if ($check["status"] != "OK") {
+ $ret = array("status" => "ERROR","msg" => "Check returned: " . $check["msg"]);
+ } else {
+ $ret = array("status" => "OK","msg" => $infoFileLines);
+ }
+
+ return $ret;
+ }
+
+ public static function replace($pdo,$fileindex,$totallines) {
+ $url = CommonUtils::getConfigValue($pdo, "updateurl", '');
+ $infoFile = self::getFile($url,'updateinfo.txt',true,3);
+ if ($infoFile["status"] != "OK") {
+ return array("status" => "ERROR","msg" => "could not get info file: " . $infoFile["msg"]);
+ }
+ $lineArr = $infoFile["msg"];
+
+ try {
+ $fileToRead = $lineArr[intval($fileindex) + 1];
+
+ if (trim($fileToRead) != '') {
+ $targetFile = "../" . $fileToRead;
+ $fileContent = self::getFile($url, $fileToRead);
+ file_put_contents($targetFile, $fileContent["msg"]);
+ }
+ } catch (Exception $ex) {
+ return array("status" => "ERROR","msg" => $ex->getMessage());
+ }
+
+ return array("status" => "OK","msg" => array("index" => $fileindex,"file" => $fileToRead,"totalLines" => $totallines));
+ }
+}
diff --git a/webapp/preferences.html b/webapp/preferences.html
index 6a6607d..ed4c7b5 100644
--- a/webapp/preferences.html
+++ b/webapp/preferences.html
@@ -5,7 +5,7 @@
-
+
diff --git a/webapp/products.html b/webapp/products.html
index 57c99f5..0dfa19f 100644
--- a/webapp/products.html
+++ b/webapp/products.html
@@ -7,7 +7,7 @@
-
+
diff --git a/webapp/rating.html b/webapp/rating.html
index c05f06f..c6f349a 100644
--- a/webapp/rating.html
+++ b/webapp/rating.html
@@ -7,7 +7,7 @@
-
+
diff --git a/webapp/reports.html b/webapp/reports.html
index 6cd6209..4909dbb 100644
--- a/webapp/reports.html
+++ b/webapp/reports.html
@@ -7,7 +7,7 @@
-
+
diff --git a/webapp/reservation.html b/webapp/reservation.html
index 1712b88..dce0814 100644
--- a/webapp/reservation.html
+++ b/webapp/reservation.html
@@ -5,7 +5,7 @@
-
+
diff --git a/webapp/supplydesk.html b/webapp/supplydesk.html
index 30f7616..631f222 100644
--- a/webapp/supplydesk.html
+++ b/webapp/supplydesk.html
@@ -5,7 +5,7 @@
-
+
diff --git a/webapp/utilities.js b/webapp/utilities.js
index bc68b91..dc08232 100644
--- a/webapp/utilities.js
+++ b/webapp/utilities.js
@@ -198,4 +198,10 @@ function isInt(value) {
} else {
return false;
}
+}
+
+function getMillis() {
+ var d = new Date();
+ var n = d.getTime();
+ return n;
}
\ No newline at end of file
diff --git a/webapp/waiter.html b/webapp/waiter.html
index eb3e275..c5b990b 100644
--- a/webapp/waiter.html
+++ b/webapp/waiter.html
@@ -4,7 +4,7 @@
-
+
diff --git a/webapp/waiterdesktop.php b/webapp/waiterdesktop.php
index 6111667..3bc073c 100644
--- a/webapp/waiterdesktop.php
+++ b/webapp/waiterdesktop.php
@@ -26,7 +26,7 @@
+function sendNewOrders(b){var a=getTableid();if(neworders.length!=0){var c={tableid:a,prods:neworders,print:(b?1:0),payprinttype:"s"};doAjax("POST","php/contenthandler.php?module=queue&command=addProductListToQueue",c,handleSentNewOrders,"Fehler bei Produktversand",false)}else{alert("Es sind keine Produkte ausgewählt worden.")}}function handleSentNewOrders(a){if(a.status!="OK"){alert("Es ist ein Fehler beim Versenden der Bestellung aufgetreten")}else{neworders=[];$("#search").val("");refreshGui()}}function refreshGui(){requestRoomInformation();clearProductsSelection();requestProdInformation();requestOrderedInformation();displayPanels();allowPrintAndOrderBtn=true}function getTableid(){if(selectedroomindex!==null){if(selectedroomindex<0){return 0}else{if(selectedtableindex!==null){var a=roominfo.roomstables[selectedroomindex].tables[selectedtableindex];return a.id}else{return 0}}}}function enableSendButton(){}function disableSendButton(){}function moveItems(){$("#selectiondialog").dialog({autoOpen:false,modal:true,height:400,buttons:{Abbrechen:function(){$(this).dialog("close")}}});var a=getRoomsForDialog();$("#selectiondialog").html(a);$("#selectiondialog").dialog("open");$(".ui-dialog-buttonset .ui-button").css("background-color","#44ff44");$(".ui-widget-header").css("background-color","#ff4400");bindMoveItemsRoom()}function bindMoveItemsRoom(){$(".roomchangeitem").off("click").on("click",function(c){c.stopImmediatePropagation();c.preventDefault();var b=parseInt(this.id.split("_")[1]);var a=getTablesForDialog(b);$("#selectiondialog").dialog("open");$("#selectiondialog").html(a);bindMoveItemsTable(b)})}function bindRightButtons(){$("#sendNewOrders").off("click").on("click",function(a){a.stopImmediatePropagation();a.preventDefault();if(allowPrintAndOrderBtn){allowPrintAndOrderBtn=false;unZoomTableMap();updateChangeTableBtnIfTableIsSelected();sendNewOrders(false)}});$("#paydeskbtn").off("click").on("click",function(a){a.stopImmediatePropagation();a.preventDefault();if(allowPrintAndOrderBtn){allowPrintAndOrderBtn=false;unZoomTableMap();if(neworders.length>0){if(waitergopayprint==1){sendNewOrders(true)}else{sendNewOrders(false)}}goPayDesk()}});$("#workbtn").off("click").on("click",function(a){if(allowPrintAndOrderBtn){allowPrintAndOrderBtn=false;unZoomTableMap();updateChangeTableBtnIfTableIsSelected();if(neworders.length>0){sendNewOrders(true)}}});$("#goorderbtn").off("click").on("click",function(a){a.stopImmediatePropagation();a.preventDefault();unZoomTableMap();goOrderDesk()});$("#mainmenudlg").dialog({autoOpen:false,modal:true});$("#changetablebtn").off("click").on("click",function(a){a.stopImmediatePropagation();a.preventDefault();unZoomTableMap();moveItems()})}function bindMoveItemsTable(a){$(".tablechangeitem").off("click").on("click",function(c){c.stopImmediatePropagation();c.preventDefault();moveToRoomIndex=a;var b=parseInt(this.id.split("_")[1]);var f=roominfo.roomstables[a].tables[b];moveToTableId=f.id;if(selectedroomindex!="-1"){var f=roominfo.roomstables[selectedroomindex].tables[selectedtableindex];moveFromTableId=f.id;$("#selectiondialog").dialog("close");doAjax("GET","php/contenthandler.php?module=queue&command=getProdsForTableChange",{tableId:moveFromTableId},insertProductsToChangeTableDlg,null,true)}else{$("#selectiondialog").dialog("close")}})}function insertProductsToChangeTableDlg(a){if(a.status!="OK"){alert("Fehler");return}prodsToMove=a.msg;allselected=1;updateProdToMoveList();$("#selectallnothing").off("click").on("click",function(f){f.stopImmediatePropagation();f.preventDefault();allselected=1-allselected;for(var c=0;c"+c.productname+b+"";a+=""+g+" "}$("#productsToMoveList").html(a);$("#moveItemdslg").dialog({autoOpen:false,modal:true,height:600,width:800,buttons:{Abbrechen:function(){$(this).dialog("close")},Verschieben:function(){$(this).dialog("close");doMoveItems()}}});$("#moveItemdslg").dialog("open");handleClickOnMoveableProd()}function handleClickOnMoveableProd(){$(".prodToMoveEl").off("click").on("click",function(f){f.stopImmediatePropagation();f.preventDefault();var b=this.id.split("_")[1];var a=prodsToMove[b];var c=a["class"];if(c=="unselecteditem"){a["class"]="selecteditem"}else{a["class"]="unselecteditem"}updateProdToMoveList()})}function doMoveItems(){$("#moveItemdslg").dialog("close");var a=[];for(var f=0;f'+g.name+""}else{a+=''+g.name+"
"}});var e=roominfo.takeawayprice.replace(".",decpoint)+" "+currency;if(e!=""){e=''+e+"
"}if(selectedroomindex<0){a+='';a+='
Zum Mitnehmen
';a+=e;a+="
"}else{a+='';a+='
Zum Mitnehmen
';a+=e;a+="
"}$("#roompanel").html(a);$("#tablepanelcontent").html("");showRoomTableTextInfo();showTablesForRoomIndex();bindingRoom()}function getRoomsForDialog(){var b=roominfo.roomstables;var a="";$.each(b,function(e,c){a+=''+c.name+"
"});return a}function bindingRoom(){$(".roomitem").off("click").on("click",function(b){b.stopImmediatePropagation();b.preventDefault();var a=parseInt(this.id.split("_")[1]);$("#changetablebtn").hide();if(panelMode=="waiter"){if(neworders.length>0){$("#unsentorderdlg").dialog({autoOpen:false,modal:true,height:400,buttons:{Nein:function(){$(this).dialog("close")},Ja:function(){$(this).dialog("close");discardChangeRoom(a)}}});$("#unsentorderdlg").dialog("open")}else{changeRoom(a);if(selectedroomindex=="-1"){startProductDisplay()}}}else{changeRoom(a);goPayDesk()}})}function discardChangeRoom(a){neworders=[];groupedNewOrders=null;showNewOrders();changeRoom(a)}function changeRoom(a){clearProductsSelection();selectedtableindex=null;selectedroomindex=a;if(restaurantmode==1){showRooms()}}function showRoomTableTextInfo(){var a="Keine Auswahl";if(selectedroomindex!==null){if(selectedroomindex<0){a="Zum Mitnehmen"}else{a="Raum: "+roominfo.roomstables[selectedroomindex].name;if(selectedtableindex!==null){var b=roominfo.roomstables[selectedroomindex].tables[selectedtableindex];a+=" - Tisch: "+b.name}}}$("#location").html(a)}function showTablesForRoomIndex(){if((selectedroomindex>=0)&&(selectedroomindex!==null)){var f=roominfo.roomstables[selectedroomindex].id;var g=shallDisplayRoom(f);if(g.show){$("#tablepanelcontent").hide();d=new Date();$("#mapimgpart").attr("src","php/tablemap.php?command=getTableMapImgAsPng&showBubbles=0&roomid="+f+"&"+d.getTime());$("#tablemapcontent").show();var c=new Tablemap(selectedroomindex,null,"");var e=roominfo.roomstables[selectedroomindex]["tables"];var a=null;if(selectedtableindex!=null){a=roominfo.roomstables[selectedroomindex].tables[selectedtableindex].id}var b=c.createOverlay("#mapimgpart",g.pos,W_TO_PAY[lang],decpoint,currency,e,ostablebtnsize,a);$("#tableoverlay").html(b);c.bindingForOverlaySelection(handleClickInTablemap.bind(this),f,e,switchZoomView)}else{showTablesListForRoomIndex()}}else{showTablesListForRoomIndex()}}function switchZoomView(){if(tableMapIsZoomed){$(".main").show();$("#roompanel").show();tableMapIsZoomed=false}else{$(".main").hide();$("#roompanel").hide();tableMapIsZoomed=true}}function unZoomTableMap(){tableMapIsZoomed=true;switchZoomView()}function handleClickInTablemap(b){selectedtableindex=null;var c=roominfo.roomstables[selectedroomindex].tables;for(var a=0;a=0)&&(selectedroomindex!==null)){var c=roominfo.roomstables[selectedroomindex].tables;var a="";$.each(c,function(f,g){if((selectedtableindex!=null)&&(c[selectedtableindex].id==g.id)){a+=''}else{a+='
'}a+='
";var h=g.pricesum;if(h!=0){var e=h.replace(".",decpoint)+" "+currency;a+='
'+e+"
"}a+="
"});$("#tablepanelcontent").html(a)}else{$("#tablepanelcontent").html("")}$("#tablepanelcontent").show();bindingTable()}function getTablesForDialog(b){var c=roominfo.roomstables[b].tables;var a="";$.each(c,function(e,f){a+='
'+f.name+"
"});return a}function updateChangeTableBtnIfTableIsSelected(){if(panelMode=="waiter"){$("#changetablebtn").show()}else{$("#changetablebtn").hide()}}function bindingTable(){$(".tableitem").off("click").on("click",function(b){b.stopImmediatePropagation();b.preventDefault();var a=parseInt(this.id.split("_")[1]);if(panelMode=="waiter"){$("#changetablebtn").show();if(neworders.length>0){$("#unsentorderdlg").dialog({autoOpen:false,modal:true,height:400,buttons:{Nein:function(){$(this).dialog("close")},Ja:function(){$(this).dialog("close");discardChangeTable(a)}}});$("#unsentorderdlg").dialog("open")}else{changeTable(a);startProductDisplay()}}else{changeTable(a);goPayDesk()}})}function discardChangeTable(a){neworders=[];groupedNewOrders=null;showNewOrders();changeTable(a)}function changeTable(a){selectedtableindex=a;showRoomTableTextInfo();showTablesForRoomIndex()}function startProductDisplay(){selectedtypeid=null;selectedprodid=null;clearProductsSelection();requestProdInformation();requestOrderedInformation();$("#search").val("");$("#searchpanel").show();$("#remarkpanel").show()}function clearProductsSelection(){neworders=[];groupedNewOrders=[];selectedtypeid=null;$("#groupchain").html("");$("#groupchoice").html("");$("#productspanel").html("");$("#remark").val("");$("#neworders").html("");$("#ordered").html("");$("#searchpanel").hide();$("#remarkpanel").hide()}var allOrderdItems=[];function requestOrderedInformation(){if(panelMode!="waiter"){return}var a=0;if((selectedroomindex!=null)&&(selectedroomindex!="-1")){var b=roominfo.roomstables[selectedroomindex].tables[selectedtableindex];a=b.id}doAjax("GET","php/contenthandler.php?module=queue&command=getJsonLongNamesOfProdsForTableNotDelivered&tableid="+a,null,insertOrderedInformation,true)}function insertOrderedInformation(b){allOrderdItems=b;var c=new Grouping(b,createTxtAssignedProd);c.group();var a="";a+=c.outputList(createListElOfAssignedProd);$("#ordered").html(a);bindOrderedItem()}function createTxtAssignedProd(e){var b="";if(e.option!=""){b="
"+toHtml(e.option)+" "}var f="";var c=toHtml(e.longname);if(e.togo==1){f="To-Go: "}c='
'+f+''+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 c+'
'+b+a+createExtraParagraphForOrderedEl(e.extras)+"
"}function createListElOfAssignedProd(c){var b="";if("count" in c){if(c.count>1){b='
'+c.count+"x
"}}var a="
"+b+createTxtAssignedProd(c)+"
";return a}function createExtraParagraphForOrderedEl(b){if((b==null)||(b=="")){return""}var e="";var c=[];for(var a=0;a
"}return""+c.join(" ")}function bindOrderedItem(){$(".ordereditem-item-sent").off("click").on("click",function(g){g.stopImmediatePropagation();g.preventDefault();var b=this.id.split("_")[1];var h=allOrderdItems;for(var c=0;c=0){c[c.length]={id:h.id,name:h.name,amount:h.amount}}}}else{if(selectedtypeid!=null){var a=getType(selectedtypeid);for(var e=0;e'+c.name+"
"}else{a+=''+c.name+"
"}})}$("#groupchoice").html(a);showChain();bindType()}function bindType(){$(".groupitemchoice").off("click").on("click",function(a){a.stopImmediatePropagation();a.preventDefault();$("#search").val("");productFilter=null;showAllProdsToChoose();selectedtypeid=parseInt(this.id.split("_")[1]);updateProductInfoDisplay()})}function showAllProdsToChoose(){var b="osprod-desk-0";if(osprodbtnsize==1){b="osprod-desk-1"}else{if(osprodbtnsize==2){b="osprod-desk-2"}}var a="";if((selectedroomindex=="-1")||(selectedtableindex!=null)){var c=getAllProds(productFilter);$.each(c,function(e,f){a+=''+f.name;if((f.amount!="null")&&(f.amount<11)){a+=" ("+W_ONLY[lang]+" "+f.amount+") "}a+="
"})}$("#productspanel").html(a);bindProduct();bindRemark()}function getTypeChain(){var b=getType(selectedtypeid);if(b==null){return[]}var e=[b];var c=false;while(!c){var a=b.ref;if((a==null)||(a==0)){c=true;break}else{b=getType(a);e[e.length]=b}}return e}function showChain(){var a="";if((selectedroomindex=="-1")||(selectedtableindex!=null)){var e=getTypeChain();a+='Auswahl
';for(var c=e.length-1;c>=0;c--){var b=e[c];a+=''+b.name+"
"}}$("#groupchain").html(a);bindChain();bindSearch()}function bindChain(){$(".groupitem").off("click").on("click",function(a){a.stopImmediatePropagation();a.preventDefault();selectedtypeid=parseInt(this.id.split("_")[1]);if(selectedtypeid=="-1"){selectedtypeid=null}updateProductInfoDisplay();$("#search").val("");productFilter=null;showAllProdsToChoose()})}function bindSearch(){$("#search").off("keyup").on("keyup",function(a){a.stopImmediatePropagation();a.preventDefault();productFilter=($("#search").val().trim().toLowerCase()).trim();if(productFilter==""){productFilter=null}showAllProdsToChoose()})}function bindProduct(){$(".productitem").off("click").on("click",function(f){f.stopImmediatePropagation();f.preventDefault();$("#search").val("");selectedprodid=parseInt(this.id.split("_")[1]);var c=$("#remark").val();var a=getProdEntry(selectedprodid);var b=a.extras;if((b!=null)&&(b.length>0)){showExtras(a,c)}else{addProductToNewOrders(selectedprodid,c,null,"NO",0)}})}function bindRemark(){$("#remark").off("click").on("click",function(c){if(genComments!=null){if(genComments.length>0){c.stopImmediatePropagation();c.preventDefault();var a="";for(var b=0;b