OrderSprinter 1.6.1

This commit is contained in:
Geno 2020-11-19 23:13:57 +01:00
parent be41226c0d
commit 14c0ebc7df
49 changed files with 4258 additions and 472 deletions

View File

@ -9,8 +9,8 @@
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="author" content="Stefan Pichel">
<link rel="stylesheet" href="css/gueststyle.css?v=1.5.33" />
<link rel="stylesheet" href="php/3rdparty/orderstyle/orderstyle.min.css?v=1.5.33" />
<link rel="stylesheet" href="css/gueststyle.css?v=1.6.1" />
<link rel="stylesheet" href="php/3rdparty/orderstyle/orderstyle.min.css?v=1.6.1" />
<link rel="stylesheet" href="php/3rdparty/orderstyle/jquery.mobile.icons.min.css" />
<link rel="stylesheet" href="php/3rdparty/jquery.mobile-1.4.0.min.css" type="text/css" />
<script src="php/3rdparty/jquery-1.11.3.min.js"></script>
@ -97,10 +97,16 @@
<H2>Bestellvorgang</H2>
<p>Sollen noch weitere Speisen oder Getränke bestellt werden?
<div id="askformoreyesno" style="display:none;">
<div class="ui-grid-a">
<div class="ui-block-a"><button type="submit" data-theme="d" data-icon="back" id="askformorenobtn">Nein</button></div>
<div class="ui-block-b"><button type="submit" data-theme="f" data-icon="check" id="askformoreyesbtn">Ja</button></div>
</div><!-- /grid-a -->
</div>
<div id="askformoreonlyyes" style="display:none;">
<button type="submit" data-theme="f" data-icon="check" id="askformoreyesbtn2">Ja</button>
</div>
<p><div id="orderslist"></div>
@ -109,11 +115,10 @@
<div id="timecounter"></div>
</div>
<div data-role="footer" data-theme="b" id="thefooter1">
<div class="ui-grid-a">
<div class="ui-block-a">&nbsp;&nbsp;OrderSprinter</div>
<div class="ui-block-b grid_right" id="versioninfo">1.5.33&nbsp;&nbsp;</div>
<div class="ui-block-b grid_right" id="versioninfo">1.6.1&nbsp;&nbsp;</div>
</div><!-- /grid-a -->
</div>
</div>

View File

@ -114,10 +114,10 @@ if (isset($_POST['code'])) {
} else {
echo "<html>";
echo "<head><title>Installation Gastsystem</title>";
echo '<link rel="stylesheet" type="text/css" href="css/gueststyle.css?v=1.5.33">';
echo '<link rel="stylesheet" type="text/css" href="css/gueststyle.css?v=1.6.1">';
echo "</head>";
echo "<body><div class=surround>";
echo "<span class=headerline>Installation OrderSprinter-Gastsystem 1.5.33</span><br><br>";
echo "<span class=headerline>Installation OrderSprinter-Gastsystem 1.6.1</span><br><br>";
echo "<form action='install.php' method='post'><input class=installfield name=code id=code type=text placeholder='Installationscode' />";
echo "<br><input type=submit value='Installation starten' class=installbtn />";
echo "</form></div></html>";

File diff suppressed because one or more lines are too long

View File

@ -84,7 +84,10 @@ class Tables {
if (isset($_GET["command"])) {
$command = $_GET["command"];
$pdo = null;
if (DB == "mysql") {
$pdo = DbUtils::openDbAndReturnPdoStatic();
}
switch ($command) {
case "gettables":

Binary file not shown.

BIN
printserver/OrderSprinterPrintserver.exe Normal file → Executable file

Binary file not shown.

View File

@ -85,7 +85,7 @@ class Installer {
}
Database::dropTables($pdo);
Database::createEmptyTables($pdo, $prefix);
Database::setVersion($pdo,$prefix,"1.5.33");
Database::setVersion($pdo,$prefix,"1.6.1");
Database::setAccessPassword($pdo,$prefix,$adminpass);
Database::setRefreshRate($pdo,$prefix,"5"); // default: 5 times per hour
return array("status" => "OK","msg" => "Installation successful");

BIN
webapp/OrderSprinterPrintserver.exe Normal file → Executable file

Binary file not shown.

View File

@ -5,7 +5,7 @@
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="author" content="Stefan Pichel">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.33">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.6.1">
<link rel="stylesheet" href="php/contenthandler.php?module=admin&command=getmobilecss" />
<link rel="stylesheet" href="php/3rdparty/orderstyle/jquery.mobile.icons.min.css" />
@ -13,8 +13,8 @@
<link rel="stylesheet" href="php/3rdparty/jquery.mobile-1.4.0.min.css" type="text/css" />
<script src="php/3rdparty/jquery-2.0.3.min.js"></script>
<script src="php/3rdparty/jquery.mobile-1.4.0.min.js"></script>
<script src="utilities.js?v=1.5.33"></script>
<script src="kitchenbar.js?v=1.5.33"></script>
<script src="utilities.js?v=1.6.1"></script>
<script src="kitchenbar.js?v=1.6.1"></script>
<style>
#tableWithEntriesToCook,#tableWithCookedEntries,#headertableToCook

View File

@ -5,7 +5,7 @@
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="author" content="Stefan Pichel">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.33">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.6.1">
<link rel="stylesheet" href="php/contenthandler.php?module=admin&command=getmobilecss" />
<link rel="stylesheet" href="php/3rdparty/orderstyle/jquery.mobile.icons.min.css" />
@ -21,7 +21,7 @@
<link rel="stylesheet" href="php/3rdparty/jqueryui1-11-4/jquery-ui.min.css" />
<script src="php/3rdparty/jqueryui1-11-4/jquery-ui.min.js"></script>
<script src="php/3rdparty/jqueryui1-11-4/jquery-ui-i18n.min.js"></script>
<script src="utilities.js?v=1.5.33"></script>
<script src="utilities.js?v=1.6.1"></script>
<script src="receiptutils.js"></script>
<script>

File diff suppressed because one or more lines are too long

View File

@ -7,7 +7,7 @@
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="author" content="Stefan Pichel">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.33">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.6.1">
<link rel="stylesheet" href="php/contenthandler.php?module=admin&command=getmobilecss" />
<link rel="stylesheet" href="php/3rdparty/orderstyle/jquery.mobile.icons.min.css" />
@ -23,7 +23,7 @@
<link rel="stylesheet" href="php/3rdparty/jqueryui1-11-4/jquery-ui.min.css" />
<script src="php/3rdparty/jqueryui1-11-4/jquery-ui.min.js"></script>
<script src="php/3rdparty/jqueryui1-11-4/jquery-ui-i18n.min.js"></script>
<script src="utilities.js?v=1.5.33"></script>
<script src="utilities.js?v=1.6.1"></script>
<script src="elements/customers.js"></script>
</head>

View File

@ -4,7 +4,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="author" content="Stefan Pichel">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.33">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.6.1">
<link rel="stylesheet" href="css/ospage.css" />
@ -17,7 +17,7 @@
<script src="php/3rdparty/jquery-2.0.3.min.js"></script>
<script src="php/3rdparty/jquery.mobile-1.4.0.min.js"></script>
<script src="utilities.js?v=1.5.33"></script>
<script src="utilities.js?v=1.6.1"></script>
<script src="receiptutils.js"></script>
<script src="elements/dash.js"></script>
<script src="php/3rdparty/Chart.bundle.min.js"></script>

View File

@ -71,6 +71,15 @@ function Groundplan() {
return txt;
};
this.renderCreateTableCodes = function() {
var txt = '<div data-role="collapsible" data-content-theme="c" data-collapsed="true" data-theme="e">';
txt += "<h3>" + MAN_GUESTSECTION[lang] + "</h3>";
txt += '<p><button type="submit" data-theme="f" id="createtablecodesbtn"><span id=createtablecodesbtntxt>' + MAN_CREATETABLECODES[lang] + '</span></button>';
txt += '<button type="submit" data-theme="f" id="createtableqrcodesbtn"><span id=createtableqrcodesbtntxt>' + MAN_CREATETABLEQR[lang] + '</span></button>';
txt += "</div>";
return txt;
};
this.bindRoomChanges = function() {
var instance = this;
for (var i=0;i<this.rooms.length;i++) {
@ -144,6 +153,19 @@ function Groundplan() {
instance.createNewRoom.call(instance);
});
$("#createtablecodesbtn").off("click").on("click", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
hideTableMap();
instance.createTableCodes.call(instance);
});
$("#createtableqrcodesbtn").off("click").on("click", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
window.open("php/contenthandler.php?module=roomtables&command=tableqrcodes&v=1.6.1",'_blank');
});
this.bindRoomChanges();
};
@ -173,6 +195,7 @@ function Groundplan() {
};
txt += this.getTogoEntry();
txt += this.renderCancelApplyBtn();
txt += this.renderCreateTableCodes();
txt += "</form>";
$("#roomfield").html(txt);
@ -290,6 +313,20 @@ function Groundplan() {
this.rooms[this.rooms.length] = new Room(roomSpec);
this.repaintGround();
};
this.createTableCodes = function() {
var instance = this;
doAjax("POST","php/contenthandler.php?module=roomtables&command=createTableCodes",null,instance.serverAnswerFromTablesChange.bind(instance),null,true);
};
this.serverAnswerFromTablesChange = function(answer) {
if (answer.status != "OK") {
alert("Fehler: " + answer.msg);
} else {
alert("Aktion durchgeführt");
this.init();
}
};
}
function Room(jsonRoom) {

View File

@ -0,0 +1 @@
function ReservationsTable(){this.dayStartHour=5;this.dayEndHour=20;this.compare=function(d,c){var a=d.starthour*4+d.startmin/15;var e=c.starthour*4+c.startmin/15;var b=a-e;if(b<0){return -1}else{if(b>0){return 1}else{return 0}}};this.generateTableHeader=function(){var a="<tr><td>&nbsp;";for(var b=this.dayStartHour;b<this.dayEndHour;b++){a+="<th style='text-align:left;' class='hour'>"+b+"<th class='minute'>15<th class='minute'>30<th class='minute'>45"}a+="</tr>";return a};this.getSlotsCount=function(a){return this.getSlotsInPeriodByHour(a.starthour,a.startmin,a.endhour,a.endmin)};this.getSlotsInPeriod=function(a,c,b){return this.getSlotsInPeriodByHour(a,c,b.starthour,b.startmin)};this.getSlotsInPeriodByHour=function(c,d,b,a){if(c<this.dayStartHour){c=this.dayStartHour;d=0}if(b>this.dayEndHour){b=this.dayEndHour;a=0}var e=(b*4+a/15)-(c*4+d/15);return e};this.getRealEndHour=function(a){var b=this.getSlotsInPeriodByHour(a.starthour,a.startmin,a.endhour,a.endmin);if(b>=0){return a.endhour}else{return 24+a.endhour}};this.genCell=function(d,c,f,e){var a="";var b="";if(e!=null){a=" id='resitem_"+e+"' ";b=" resitem "}if(c>0){return"<td colspan='"+c+"' class='"+f+b+"' "+a+">"+d+"</td>"}else{return""}};this.cellContent=function(e){var d=this.reservationitem.split("\n");var a=[];for(var c=0;c<d.length;c++){var b=d[c];b=b.replace(/\{Name\}/g,toHtml(e.guest));b=b.replace(/\{Start-Stunde\}/g,e.starthour);b=b.replace(/\{Start-Minute\}/g,pad(parseInt(e.startmin),2));b=b.replace(/\{Ende-Stunde\}/g,parseInt(e.endhour)%24);b=b.replace(/\{Ende-Minute\}/g,pad(parseInt(e.endmin),2));b=b.replace(/\{Dauer-Stunden\}/g,parseInt(e.durationhours));b=b.replace(/\{Dauer-Minuten\}/g,pad(parseInt(e.durationmins),2));b=b.replace(/\{Personen\}/g,parseInt(e.persons));b=b.replace(/\{Bemerkung\}/g,toHtml(e.remark));a[a.length]=b}return a.join("<br>")};this.distributeTable=function(e){var n=e.sort(this.compare);var o=[];var k=[];var a=true;while(a){a=false;var p=0;var c=0;var f=0;var h="";for(var g=0;g<n.length;g++){var j=n[g];if(k.indexOf(j.id)<0){var m=j.starthour*4+j.startmin/15;var q=c*4+f/15;if(m>=q){var d=this.getSlotsInPeriod(c,f,j);if(this.dayStartHour>j.starthour){d=0}var l=this.getSlotsCount(j);var b=this.genCell("",d,"fillcell",null);if(j.starthour<this.dayEndHour){b+=this.genCell(this.cellContent(j),l,"rescell",j.id)}h+=b;c=j.endhour;f=j.endmin;p+=d+l;k[k.length]=j.id;a=true}}}if(a){var d=this.getSlotsInPeriodByHour(c,f,this.dayEndHour,0);if(c<this.dayEndHour){h+=this.genCell("",d,"fillcell",null)}o[o.length]=h}}return o};this.distribute=function(f){var c=f.tablename;var g=f.reservations;var b=this.distributeTable(g);var e=b.length;if(e>0){var a="<tr><td rowspan='"+e+"' class='rowitem'>"+c;var d=true;b.forEach(function(h){if(!d){a+="<tr>"}else{d=false}a+=h+"</tr>"});return a}else{return""}};this.layoutTable=function(d,c,b,f){this.dayStartHour=parseInt(d);this.dayEndHour=parseInt(c);this.reservationitem=f;var a="<table class='timeschedule'>";a+=this.generateTableHeader();for(var e=0;e<b.length;e++){var h=b[e];a+=this.distribute(h);var g=1+(c-d)*4;a+="<tr><td colspan='"+g+"' class='divider'></td></tr>"}a+="</table>";return a}};

View File

@ -4,7 +4,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.33">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.6.1">
<link rel="stylesheet" href="php/contenthandler.php?module=admin&command=getmobilecss" />
<link rel="stylesheet" href="php/3rdparty/orderstyle/jquery.mobile.icons.min.css" />
@ -12,7 +12,7 @@
<link rel="stylesheet" href="php/3rdparty/jquery.mobile-1.4.0.min.css" type="text/css" />
<script src="php/3rdparty/jquery-2.0.3.min.js"></script>
<script src="php/3rdparty/jquery.mobile-1.4.0.min.js"></script>
<script src="utilities.js?v=1.5.33"></script>
<script src="utilities.js?v=1.6.1"></script>
<script src="kitchenbar.js"></script>
<style>

View File

@ -9,8 +9,8 @@
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="author" content="Stefan Pichel">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.33">
<link rel="stylesheet" type="text/css" href="css/numfield.css?v=1.5.33">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.6.1">
<link rel="stylesheet" type="text/css" href="css/numfield.css?v=1.6.1">
<link rel="stylesheet" href="php/3rdparty/orderstyle/orderstyle.min.css" />
<link rel="stylesheet" href="php/3rdparty/orderstyle/jquery.mobile.icons.min.css" />
@ -18,7 +18,7 @@
<link rel="stylesheet" href="php/3rdparty/jquery.mobile-1.4.0.min.css" type="text/css" />
<script src="php/3rdparty/jquery-2.0.3.min.js"></script>
<script src="php/3rdparty/jquery.mobile-1.4.0.min.js"></script>
<script src="utilities.js?v=1.5.33"></script>
<script src="utilities.js?v=1.6.1"></script>
</head>
<body>

View File

@ -9,8 +9,8 @@
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="author" content="Stefan Pichel">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.33">
<link rel="stylesheet" type="text/css" href="css/numfield.css?v=1.5.33">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.6.1">
<link rel="stylesheet" type="text/css" href="css/numfield.css?v=1.6.1">
<link rel="stylesheet" href="php/3rdparty/orderstyle/orderstyle.min.css" />
<link rel="stylesheet" href="php/3rdparty/orderstyle/jquery.mobile.icons.min.css" />
@ -18,7 +18,7 @@
<link rel="stylesheet" href="php/3rdparty/jquery.mobile-1.4.0.min.css" type="text/css" />
<script src="php/3rdparty/jquery-2.0.3.min.js"></script>
<script src="php/3rdparty/jquery.mobile-1.4.0.min.js"></script>
<script src="utilities.js?v=1.5.33"></script>
<script src="utilities.js?v=1.6.1"></script>
</head>
<body>
@ -231,7 +231,7 @@ function handleResultOfInstallCheck(is_installed) {
if (is_installed == "Yes") {
useInstallation();
} else {
setTimeout(function(){document.location.href = "install.html?v=1.5.33"},500);
setTimeout(function(){document.location.href = "install.html?v=1.6.1"},500);
}
}
@ -285,11 +285,11 @@ $(document).on("pageinit", "#index-page", function () {
<div data-role="content">
<p><div id="toplogolocation" style="text-align: center;display:none;"><img src="php/contenthandler.php?module=printqueue&command=getLogoAsPngWithAlphaChannel&v=1.5.33&style=always" style="max-height:150px;"/></div>
<p><div id="toplogolocation" style="text-align: center;display:none;"><img src="php/contenthandler.php?module=printqueue&command=getLogoAsPngWithAlphaChannel&v=1.6.1&style=always" style="max-height:150px;"/></div>
<div data-role="collapsible" data-content-theme="c" data-collapsed="false" data-theme="e" id="loginmask">
<H2>Anmelden</H2>
<p><div id="middlelogolocation" style="text-align: left;padding-left: 80px;padding-right:80px;display:none;"><img src="php/contenthandler.php?module=printqueue&command=getLogoAsPngWithAlphaChannel&v=1.5.33&style=always" style="max-height:150px;"/></div>
<p><div id="middlelogolocation" style="text-align: left;padding-left: 80px;padding-right:80px;display:none;"><img src="php/contenthandler.php?module=printqueue&command=getLogoAsPngWithAlphaChannel&v=1.6.1&style=always" style="max-height:150px;"/></div>
<form method="post">
<table border=0>

View File

@ -916,7 +916,7 @@ El servicio web OrderSprinter no requiere una conexión a Internet. Sin embargo,
<tr id=updateline>
<td>&nbsp;</td>
<td align=center>
<button id="updatebtn">Update -> 1.5.33</button>
<button id="updatebtn">Update -> 1.6.1</button>
<span id="updateinprogresstxt" style="display:none;"><img id="installprogressindicator" src="php/3rdparty/images/ajax-loader.gif" alt="Progress indication" style="display:none;"/> Update... bitte warten.</span>
</td>
<td>&nbsp;</td>

View File

@ -455,7 +455,7 @@ return;
}
set_time_limit(60*30);
$installerVersion = "1.5.33";
$installerVersion = "1.6.1";
$admin = new InstallAdmin();
$pdo = $admin->openDbAndReturnPdo($_POST['host'],$_POST['db'],$_POST['user'],$_POST['password']);

View File

@ -5,7 +5,7 @@
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="author" content="Stefan Pichel">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.33">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.6.1">
<link rel="stylesheet" href="php/contenthandler.php?module=admin&command=getmobilecss" />
<link rel="stylesheet" href="php/3rdparty/orderstyle/jquery.mobile.icons.min.css" />
@ -13,8 +13,8 @@
<link rel="stylesheet" href="php/3rdparty/jquery.mobile-1.4.0.min.css" type="text/css" />
<script src="php/3rdparty/jquery-2.0.3.min.js"></script>
<script src="php/3rdparty/jquery.mobile-1.4.0.min.js"></script>
<script src="utilities.js?v=1.5.33"></script>
<script src="kitchenbar.js?v=1.5.33"></script>
<script src="utilities.js?v=1.6.1"></script>
<script src="kitchenbar.js?v=1.6.1"></script>
<style>
#tableWithEntriesToCook,#tableWithCookedEntries,#headertableToCook

View File

@ -5,7 +5,7 @@
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="author" content="Stefan Pichel">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.33">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.6.1">
<link rel="stylesheet" href="php/contenthandler.php?module=admin&command=getmobilecss" />
<link rel="stylesheet" href="php/3rdparty/orderstyle/jquery.mobile.icons.min.css" />
@ -13,10 +13,10 @@
<link rel="stylesheet" href="php/3rdparty/jquery.mobile-1.4.0.min.css" type="text/css" />
<script src="php/3rdparty/jquery-1.11.3.min.js"></script>
<script src="php/3rdparty/jquery.mobile-1.4.5.min.js"></script>
<script src="utilities.js?v=1.5.33"></script>
<script src="elements/tablemap.js?v=1.5.33"></script>
<script src="elements/roommap.js?v=1.5.33"></script>
<script src="elements/groundplan.js?v=1.5.33"></script>
<script src="utilities.js?v=1.6.1"></script>
<script src="elements/tablemap.js?v=1.6.1"></script>
<script src="elements/roommap.js?v=1.6.1"></script>
<script src="elements/groundplan.js?v=1.6.1"></script>
<link href="php/3rdparty/hayageek_uploadfile.css" rel="stylesheet">
<script src="php/3rdparty/hayageek_jquery_uploadfile.js"></script>
@ -69,6 +69,8 @@ var MAN_STAT = ["Statistik","Statistics","Estadisticas"];
var MAN_BILLS = ["Kassenbons","Receipts","Tiques"];
var MAN_PRODUCTS = ["Angebot","Products","Productos"];
var MAN_RESERVATION = ["Reservierung","Reservation","Reserva"];
var MAN_RES_ITEM = ["Reservierungseintrag","Entry of reservation","Reservación"];
var MAN_RES_ITEM_HINT = ["Es stehen diese Platzhalter zur Verfügung: {Start-Stunde}, {Start-Minute}, {Ende-Stunde}, {Ende-Minute}, {Personen}, {Bemerkung}, {Dauer-Stunden}, {Dauer-Minuten}","This placeholder are available: {Start-Stunde}, {Start-Minute}, {Ende-Stunde}, {Ende-Minute}, {Personen}, {Bemerkung}, {Dauer-Stunden}, {Dauer-Minuten}","Puede usar estas variables: {Start-Stunde}, {Start-Minute}, {Ende-Stunde}, {Ende-Minute}, {Personen}, {Bemerkung}, {Dauer-Stunden}, {Dauer-Minuten}"];
var MAN_RATING = ["Bewertung","Rating","Valoración"];
var MAN_CHANGEPRICE = ["Preisänderung während Bestellung","Change price during ordering","Modificar precio durante ordenar"];
var MAN_CUSTOMERS = ["Gäste","Guests","Clientes"];
@ -90,7 +92,7 @@ var MAN_CREATE_WITH_REC = ["... mit Bon","... with receipt","... con tiquet"];
var MAN_CREATE_WITHOUT_REC = ["... ohne Bon","... without receipt","... sin tiquet"];
var MAN_SPEISEKARTE = ["Speisekarte","Menu","Menú"];
var MAN_ROOMPLAN = ["Raumplan","Plan of rooms","Mapa de espacio"];
var MAN_ROOMPLAN = ["Raumplan","Tables","Mapa de las mesas"];
var MAN_DATAEXPORT = ["Datenexport","Data export","Grabar datos"];
var MAN_CLOSINGDET_TXT = ["Hier können Sie die seit dem letzten <i>Abschluss</i> getätigten neuen Transaktionen zu einem neuen Abschluss führen. Anschließend sind alle bis zu diesem Zeitpunkt erstellten Transaktionen/Kassenbons nicht mehr stornierbar!",
"Here you can create a closing of all new transactions since the last closing. All transactions that are part of a closing cannot be cancelled later on.",
@ -510,6 +512,14 @@ var MAN_LAST_CLOSING = ["Letzte Tageserfassung","Last closing","Cerrada última"
var MAN_PDF_REPORT_HINT = ["Erste und letzte Tageserfassung des Reports nach Eingrenzung des Datumsbereich (oben) auswählen:","Choose first and last closing after limit the time frame (above):","Seleccione la cerrada primera y última después de delimitar el intervalo de fechas (arriba):"];
var MAN_PRINT_EXTRAPRICE = ["Preisangabe bei Extras auf Bon","Show price next to extra on receipt","Precio al lado del extra"];
var MAN_TURBO_HINT = ["Mit dem Turbo-Slider lässt sich die Import-Geschwindigkeit beeinflussen. Je höher der Turbo-Wert eingestellt ist, desto größer muss die max_allowed_packet in der DB-Konfiguration sein.","With the Turbo-Slider you can influence the import speed. The higher the turbo value is set, the larger the max_allowed_packet must be in the DB configuration.","Con el Turbo-Slider puede influir en la velocidad de importación. Cuanto mayor sea el valor del turbo, mayor tengo que ser el tamaño del max_allowed_packet en la configuración de la base de datos."];
var MAN_GUESTSECTION = ["Anbindung Gastbestellsystem","Integration guest order system","Integración ordenes por huéspedes"];
var MAN_CREATETABLECODES = ["Tischcodes automatisch erstellen","Generate table codes","Crear codigos de las mesas"];
var MAN_CREATETABLEQR = ["Zeige Tisch-QR-Codes","Show table QR Codes","Mostrat QR Codigos para las mesas"];
var MAN_GUEST_QR_HEADER = ["Tisch-QR-Codes","Table QR Codes","Codigos QR para las mesas"];
var MAN_GUEST_QRTEXT = ["Beschriftung","Text next to QR code","Texto al lado del codigo QR"];
var MAN_GUEST_QRFONTSIZE = ["Beschriftung Fontgröße","Font size","Tamaño del QR texto"];
var MAN_GUEST_QRSIZE = ["Größe (Pixels)","Size in pixels","Tamaño del codigo"];
var MAN_GUEST_QR_INFO = ["Die QR-Codes können im Bereich Datenbank/Raumplan/Anbindung Gastbestellsystem ausgedruckt werden.","The QR codes can be printed in the area Database/Tables/Integration Guest Order System","Los codigos QR se puede imprimir en la area de Base de datos/Mapa de las mesas/Integration ordenes por huespedes."];
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, 1,1,1,1,1,1,1,1,1,1, 1,2,3, 1,0, 1,0,1, 1,1,0,0, 0,0,0, 0,0,0,1,1, 0,1,0,1,1, 1,2,0, 0,0,1,1,1, 0,0,1];
@ -669,7 +679,11 @@ var generalValuesSettings = [
["austriabind",MAN_AUSTRIA_BIND[lang],"s",68],
["doublereceipt",MAN_DOUBLERECEIPT[lang],"s",69],
["printextraprice",MAN_PRINT_EXTRAPRICE[lang],"s",70]
["printextraprice",MAN_PRINT_EXTRAPRICE[lang],"s",70],
["guestqrtext",MAN_GUEST_QRTEXT[lang],"i",0],
["guestqrfontsize",MAN_GUEST_QRFONTSIZE[lang],"i",0],
["guestqrsize",MAN_GUEST_QRSIZE[lang],"i",0],
["reservationitem",MAN_RES_ITEM[lang],"i",0]
];
var predef = "";
@ -879,6 +893,10 @@ function setLanguage(l) {
$("#firstclostxt").html(MAN_VERYFIRST_CLOSING[l]);
$("#lastclostxt").html(MAN_VERYLAST_CLOSING[l]);
$("#guestqrheadertxt").html(MAN_GUEST_QR_HEADER[l]);
$("#guestqrinfotxt").html(MAN_GUEST_QR_INFO[l]);
$("#reservationitemhint").html(MAN_RES_ITEM_HINT[l]);
}
function toggleinlinedisplayelem(iconid) {
@ -1006,6 +1024,7 @@ function insertGeneralConfigItems(configResult) {
$("#pickuptemplate").val(values.pickuptemplate);
$("#reservationnote").val(values.reservationnote);
$("#reservationitem").val(values.reservationitem);
$("#cbirdfolder").val(values.cbirdfolder);
var payPrintType = values.payprinttype;
@ -1121,6 +1140,9 @@ function insertGeneralConfigItems(configResult) {
$("#hsinfile").val(values.hsinfile);
$("#hsoutfile").val(values.hsoutfile);
$("#hscurrency").val(values.hscurrency);
$("#guestqrtext").val(values.guestqrtext);
$("#guestqrsize").val(values.guestqrsize);
$("#guestqrfontsize").val(values.guestqrfontsize);
generalVals[5] = values.smtpauth;
generalVals[6] = values.smtpsecure;
@ -1688,7 +1710,7 @@ function initRestoreFileUpload() {
} else {
alert("Import war erfolgreich.");
setTimeout(function(){
document.location.href = "index.html?v=1.5.33";
document.location.href = "index.html?v=1.6.1";
},250);
}
},
@ -2172,38 +2194,38 @@ function binding() {
$("#backup_btn").off("click").on("click", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
window.location.href = "php/contenthandler.php?module=admin&command=backup&type=configuration&v=1.5.33";
window.location.href = "php/contenthandler.php?module=admin&command=backup&type=configuration&v=1.6.1";
});
$("#backup_btnall").off("click").on("click", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
window.location.href = "php/contenthandler.php?module=admin&command=backup&type=all&v=1.5.33";
window.location.href = "php/contenthandler.php?module=admin&command=backup&type=all&v=1.6.1";
});
$("#backup_btnalllogs").off("click").on("click", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
window.location.href = "php/contenthandler.php?module=admin&command=backup&type=alllogs&v=1.5.33";
window.location.href = "php/contenthandler.php?module=admin&command=backup&type=alllogs&v=1.6.1";
});
$("#backup_btnftpall").off("click").on("click", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
showProgressPopup();
doAjax("GET","php/contenthandler.php?module=admin&command=ftpbackup&type=all&v=1.5.33",null,handleFtpResult,null);
doAjax("GET","php/contenthandler.php?module=admin&command=ftpbackup&type=all&v=1.6.1",null,handleFtpResult,null);
});
$("#backup_debugdata").off("click").on("click", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
window.open("php/contenthandler.php?module=admin&command=backup&type=debugdata&v=1.5.33",'_blank');
window.open("php/contenthandler.php?module=admin&command=backup&type=debugdata&v=1.6.1",'_blank');
});
$("#backupguests_btn").off("click").on("click", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
window.location.href = "php/contenthandler.php?module=admin&command=backup&type=confandguests&v=1.5.33";
window.location.href = "php/contenthandler.php?module=admin&command=backup&type=confandguests&v=1.6.1";
});
$("#golive").off("click").on("click", function (e) {
@ -2384,7 +2406,7 @@ function updateOneSingleFile() {
setTimeout(function(){
$("#sliderarea").hide();
var millis=getMillis();
document.location.href = "install.html?v=1.5.33&mode=onlyupdate&n=" + millis;
document.location.href = "install.html?v=1.6.1&mode=onlyupdate&n=" + millis;
},250);
}
}
@ -4200,6 +4222,11 @@ $(document).on("pageinit", "#admin-page", function () {
<label for="reservationnote">Reservierungstemplate Email:</label>
<textarea cols="40" rows="8" name="reservationnote" id="reservationnote" class="genConfigEl" style="background-color:#FFFFFF;color:black;"></textarea>
</div>
<div data-role="fieldcontain">
<label for="reservationitem">Reservierungstemplate Eintrag:</label>
<textarea cols="40" rows="8" name="reservationitem" id="reservationitem" class="genConfigEl" style="background-color:#FFFFFF;color:black;"></textarea>
<i id=reservationitemhint style="padding-left: 50px;padding-right: 50px;">Hinweis zu Platzhalter</i>
</div>
</div> <!-- conftemplatessection -->
<p><a class="genconflink" href="" onclick="javascript:showconfsection('confsumupsection'); return false">
@ -4338,6 +4365,24 @@ $(document).on("pageinit", "#admin-page", function () {
<input type="text" value="" data-mini="true" placeholder="5" id="guesttimeout" data-theme="c" class="genConfigEl"/><br>
<i id=guesttimeouthint style="padding-left: 50px;padding-right: 50px;">Hinweis: 0 = kein Timeout</i>
</div>
<p><b><span id="guestqrheadertxt">QR</span>:</b><br><p />
<div data-role="fieldcontain">
<label for="guestqrtext">Beschriftung:</label>
<input type="text" value="" data-mini="true" placeholder="Gastbestellung" id="guestqrtext" data-theme="c" class="genConfigEl"/>
</div>
<div data-role="fieldcontain">
<label for="guestqrsize">Größe (Pixel):</label>
<input type="text" value="" data-mini="true" placeholder="Gastbestellung" id="guestqrsize" data-theme="c" class="genConfigEl"/>
</div>
<div data-role="fieldcontain">
<label for="guestqrfontsize">Beschriftung Fontgröße:</label>
<input type="text" value="" data-mini="true" placeholder="Gastbestellung" id="guestqrfontsize" data-theme="c" class="genConfigEl"/>
</div>
<i style="padding-left: 50px;padding-right: 50px;"><span id="guestqrinfotxt">Druck in Datenbank/Raumplan/Anbindunbg Gastbestellsystem</span></i>
</div> <!-- confguestsyssection -->
<p><a class="genconflink" href="" onclick="javascript:showconfsection('confspecialssection'); return false">

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,165 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license
document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it
is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.

3312
webapp/php/3rdparty/phpqrcode.php vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1228,7 +1228,11 @@ class Admin {
array("austriabind",0,false),
array("doublereceipt",0,false),
array("printextraprice",1,false),
array("turbo",5,false)
array("turbo",5,false),
array("guestqrtext",null,false),
array("guestqrsize",null,false),
array("guestqrfontsize",null,false),
array("reservationitem",null,false)
);
if (is_null($pdo)) {
@ -1423,7 +1427,7 @@ class Admin {
$view = "preferences.html";
}
echo json_encode($view . "?v=1.5.33");
echo json_encode($view . "?v=1.6.1");
}
}
@ -1644,31 +1648,31 @@ 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.5.33"); }
if ($_SESSION['right_waiter']) { $mainMenu[] = array("name" => $waitertxt[$lang], "link" => "waiter.html?v=1.6.1"); }
} else {
if ($_SESSION['right_waiter']) { $mainMenu[] = array("name" => $waiterdesktxt[$lang], "link" => "waiterdesktop.php?v=1.5.33"); }
if ($_SESSION['right_waiter']) { $mainMenu[] = array("name" => $waiterdesktxt[$lang], "link" => "waiterdesktop.php?v=1.6.1"); }
}
if ($_SESSION['right_kitchen']) { $mainMenu[] = array("name" => $kitchentxt[$lang], "link" => "kitchen.html?v=1.5.33"); }
if ($_SESSION['right_bar']) { $mainMenu[] = array("name" => "Bar", "link" => "bar.html?v=1.5.33"); }
if ($_SESSION['right_supply']) { $mainMenu[] = array("name" => $supplytxt[$lang], "link" => "supplydesk.html?v=1.5.33"); }
if ($_SESSION['right_kitchen']) { $mainMenu[] = array("name" => $kitchentxt[$lang], "link" => "kitchen.html?v=1.6.1"); }
if ($_SESSION['right_bar']) { $mainMenu[] = array("name" => "Bar", "link" => "bar.html?v=1.6.1"); }
if ($_SESSION['right_supply']) { $mainMenu[] = array("name" => $supplytxt[$lang], "link" => "supplydesk.html?v=1.6.1"); }
if ($_SESSION['modus'] == 0) {
if ($_SESSION['right_paydesk']) { $mainMenu[] = array("name" => $paydesktxt[$lang], "link" => "paydesk.html?v=1.5.33"); }
if ($_SESSION['right_paydesk']) { $mainMenu[] = array("name" => $paydesktxt[$lang], "link" => "paydesk.html?v=1.6.1"); }
}
if ($_SESSION['right_statistics']) { $mainMenu[] = array("name" => $stattxt[$lang], "link" => "reports.html?v=1.5.33"); }
if ($_SESSION['right_bill']) { $mainMenu[] = array("name" => $bontxt[$lang], "link" => "bill.html?v=1.5.33"); }
if ($_SESSION['right_products']) { $mainMenu[] = array("name" => $prodtxt[$lang], "link" => "products.html?v=1.5.33"); }
if ($_SESSION['right_reservation']) { $mainMenu[] = array("name" => $restxt[$lang], "link" => "reservation.html?v=1.5.33"); }
if ($_SESSION['right_tasks'] || $_SESSION['right_tasksmanagement']) { $mainMenu[] = array("name" => $taskstxt[$lang], "link" => "tasks.html?v=1.5.33"); }
if ($_SESSION['right_rating']) { $mainMenu[] = array("name" => $ratingtxt[$lang], "link" => "rating.html?v=1.5.33"); }
if ($_SESSION['right_customers']) { $mainMenu[] = array("name" => $customerstxt[$lang], "link" => "customers.html?v=1.5.33"); }
if ($_SESSION['right_pickups']) { $mainMenu[] = array("name" => $pickupstxt[$lang], "link" => "pickups.html?v=1.5.33"); }
if ($_SESSION['right_dash']) { $mainMenu[] = array("name" => $dashtxt[$lang], "link" => "dash.php?v=1.5.33"); }
if ($_SESSION['right_manager'] || $_SESSION['is_admin'] || $_SESSION['right_closing']) { $mainMenu[] = array("name" => $admintxt[$lang], "link" => "manager.html?v=1.5.33"); }
$mainMenu[] = array("name" => $settingtxt[$lang], "link" => "preferences.html?v=1.5.33");
if ($_SESSION['right_timetracking'] || $_SESSION['right_timemanager']) { $mainMenu[] = array("name" => $timetrackingtxt[$lang], "link" => "timetracking.html?v=1.5.33"); }
if ($_SESSION['right_statistics']) { $mainMenu[] = array("name" => $stattxt[$lang], "link" => "reports.html?v=1.6.1"); }
if ($_SESSION['right_bill']) { $mainMenu[] = array("name" => $bontxt[$lang], "link" => "bill.html?v=1.6.1"); }
if ($_SESSION['right_products']) { $mainMenu[] = array("name" => $prodtxt[$lang], "link" => "products.html?v=1.6.1"); }
if ($_SESSION['right_reservation']) { $mainMenu[] = array("name" => $restxt[$lang], "link" => "reservation.html?v=1.6.1"); }
if ($_SESSION['right_tasks'] || $_SESSION['right_tasksmanagement']) { $mainMenu[] = array("name" => $taskstxt[$lang], "link" => "tasks.html?v=1.6.1"); }
if ($_SESSION['right_rating']) { $mainMenu[] = array("name" => $ratingtxt[$lang], "link" => "rating.html?v=1.6.1"); }
if ($_SESSION['right_customers']) { $mainMenu[] = array("name" => $customerstxt[$lang], "link" => "customers.html?v=1.6.1"); }
if ($_SESSION['right_pickups']) { $mainMenu[] = array("name" => $pickupstxt[$lang], "link" => "pickups.html?v=1.6.1"); }
if ($_SESSION['right_dash']) { $mainMenu[] = array("name" => $dashtxt[$lang], "link" => "dash.php?v=1.6.1"); }
if ($_SESSION['right_manager'] || $_SESSION['is_admin'] || $_SESSION['right_closing']) { $mainMenu[] = array("name" => $admintxt[$lang], "link" => "manager.html?v=1.6.1"); }
$mainMenu[] = array("name" => $settingtxt[$lang], "link" => "preferences.html?v=1.6.1");
if ($_SESSION['right_timetracking'] || $_SESSION['right_timemanager']) { $mainMenu[] = array("name" => $timetrackingtxt[$lang], "link" => "timetracking.html?v=1.6.1"); }
$mainMenu[] = array("name" => "Hilfe", "link" => "help.php?v=1.5.33");
$mainMenu[] = array("name" => "Feedback", "link" => "feedback.html?v=1.5.33");
$mainMenu[] = array("name" => "Hilfe", "link" => "help.php?v=1.6.1");
$mainMenu[] = array("name" => "Feedback", "link" => "feedback.html?v=1.6.1");
}
$mainMenu[] = array("name" => $logout[$lang], "link" => "logout.php");
@ -2288,7 +2292,11 @@ class Admin {
"logolocation" => array("dbcol" => "logolocation","checknum" => 1),
"austriabind" => array("dbcol" => "austriabind","checknum" => 0),
"doublereceipt" => array("dbcol" => "doublereceipt","checknum" => 0),
"printextraprice" => array("dbcol" => "printextraprice","checknum" => 0)
"printextraprice" => array("dbcol" => "printextraprice","checknum" => 0),
"guestqrtext" => array("dbcol" => "guestqrtext","checknum" => 0),
"guestqrsize" => array("dbcol" => "guestqrsize","checknum" => 1),
"guestqrfontsize" => array("dbcol" => "guestqrfontsize","checknum" => 1),
"reservationitem" => array("dbcol" => "reservationitem","checknum" => 0)
);
$problem = false;
foreach ($changedValues as $aChangeSet) {

View File

@ -189,6 +189,7 @@ $newClosingId = $maxIdVal + 1;
$closingEntrySql = "INSERT INTO `%closing%` (`id`,`closingdate`,`remark`,`billcount`,`billsum`,`signature`) VALUES (?,?,?,?,?,?)";
CommonUtils::execSql($pdo, $closingEntrySql, array($newClosingId,$closingTime,$remark,0,0.0,null));
set_time_limit(60*60);
$sql = "SELECT id FROM %bill% WHERE closingid is null AND (tableid >= '0' OR status='c') ";
$stmt = $pdo->prepare($this->dbutils->resolveTablenamesInSqlString($sql));
$stmt->execute();
@ -207,9 +208,11 @@ if (!$ok) {
return(array("status" => "ERROR", "code" => ERROR_INCONSISTENT_DB, "msg" => ERROR_INCONSISTENT_DB_MSG));
}
set_time_limit(60*60);
$sql = "UPDATE %bill% SET closingid='$newClosingId' WHERE closingid is null AND (tableid >= '0' OR status='c') AND (paymentid <> ?)";
CommonUtils::execSql($pdo, $sql, array(8));
set_time_limit(60*60);
$sql = "SELECT count(id) as billstotake FROM %bill% WHERE closingid=? AND (tableid >= '0' OR status='c')";
$stmt = $pdo->prepare($this->dbutils->resolveTablenamesInSqlString($sql));
$stmt->execute(array($newClosingId));
@ -238,9 +241,11 @@ $pricesumstr = number_format($pricesum, 2, ".", '');
$data = "I($newClosingId)-S($prevClosingDate)-E($closingTime)-D($billsToTake)-S($pricesumstr)";
$signature = md5($data);
set_time_limit(60*60);
$sql = "UPDATE %closing% SET billcount=?, billsum=?,signature=? WHERE id=?";
CommonUtils::execSql($pdo, $sql, array($billsToTake,$pricesum,$signature,$newClosingId));
set_time_limit(60*60);
$sql = "SELECT value as val FROM %work% WHERE item=?";
$indexunclosedqueue = 0;
$r = CommonUtils::fetchSqlAll($pdo, $sql, array('indexunclosedqueue'));
@ -250,15 +255,18 @@ if (!is_null($rval)) {
$indexunclosedqueue = intval($rval);
}
}
set_time_limit(60*60);
$sql = "UPDATE %queue% Q,%work% W SET Q.clsid=? WHERE Q.id > ? AND Q.clsid is null";
CommonUtils::execSql($pdo, $sql, array($newClosingId,$indexunclosedqueue));
set_time_limit(60*60);
$sql = "UPDATE %queue% SET toremove='1' WHERE billid is null AND clsid=?";
CommonUtils::execSql($pdo, $sql, array($newClosingId));
set_time_limit(60*60);
$sql = "UPDATE %queue% set paidtime=?,delivertime=? WHERE billid is not null AND paidtime is null";
CommonUtils::execSql($pdo, $sql, array($closingTime,$closingTime));
@ -272,6 +280,7 @@ CommonUtils::execSql($pdo, "OPTIMIZE TABLE %printjobs%", null);
$sql = "DELETE FROM %work% WHERE item=?";
CommonUtils::execSql($pdo, $sql, array("sumuphash"));
set_time_limit(60*60);
$sql = "UPDATE %queue% SET isclosed=?";
CommonUtils::execSql($pdo, $sql, array(1));

View File

@ -878,7 +878,7 @@ class Customers {
$txt = "<head>";
$txt .= "<title>" . self::$CUS_OVERVIEW[$lang] . "</title>";
$txt .= '<meta http-equiv="content-type" content="text/html; charset=utf-8">';
$txt .= '<link rel="stylesheet" type="text/css" href="../css/guestreport.css?v=1.5.33">';
$txt .= '<link rel="stylesheet" type="text/css" href="../css/guestreport.css?v=1.6.1">';
$txt .= "</head>";
return $txt;
}

View File

@ -27,7 +27,7 @@ if (isset($_POST["cmd"])) {
if (strlen($status) > 150) {
$status = substr($status, 0,149);
}
$version = "1.5.33";
$version = "1.6.1";
$arr = array("cmd" => $cmd,"fct" => $fct, "xhr" => $xhr,"errormsg" => $errormsg,"status" => $status,"version" => $version,"phpversion" => $phpversion);
} else {

View File

@ -84,7 +84,11 @@ class Reports {
echo json_encode(array("status" => "OK","msg" => $values));
break;
case 'getProds':
$values = $this->sumSortedByProducts($pdo, $allDates['last30days'][0], $allDates['currentTimeStr']);
$days = null;
if (isset($_GET['days'])) {
$days = intval($_GET['days']);
}
$values = $this->sumSortedByProducts($pdo, $allDates['last30days'][0], $allDates['currentTimeStr'],null,null,$days);
echo json_encode(array("status" => "OK","msg" => $values));
break;
case 'getRatings':
@ -204,7 +208,7 @@ class Reports {
$retArrayLastMonth = $this->iterateForDays($pdo, $allDates['monthAndYearOfLastMonth'],intval($allDates['lastDayOfLastMonth']),true);
// products in the last 30 days:
$retArrayProds = $this->sumSortedByProducts($pdo, $allDates['last30days'][0], $allDates['currentTimeStr']);
$retArrayProds = $this->sumSortedByProducts($pdo, $allDates['last30days'][0], $allDates['currentTimeStr'],null,null,null);
$retRatings = $this->getRatings($pdo,$allDates['last30days'],$allDates['lastMonthComplete'], $allDates['currentTimeStr']);
@ -306,15 +310,14 @@ class Reports {
return ($asum < $bsum) ? 1 : -1;
}
/*
* returns a sorted by prices list:
* array("prodid" => $aProdId,"prodname" => $aProd['prodname'], "sum" => $sumprice);
* array("prodid" => $aProdId,"prodname" => $aProd['prodname'], "sum" => $sumprice);
* (...)
*/
public function sumSortedByProducts($pdo,$startDateTime,$endDateTime,$closidstart=null,$closidend=null) {
public function sumSortedByProducts($pdo,$startDateTime,$endDateTime,$closidstart=null,$closidend=null,$days=null) {
// first get all products and with their id and name
if (!is_null($days)) {
date_default_timezone_set(DbUtils::getTimeZone());
$startDateTime = date("Y-m-d", strtotime('-' . ($days - 1) . ' day') );
}
if (is_null($closidstart)) {
$sql = "SELECT DISTINCT productid from %queue%,%bill%,%products% ";
$sql .= "WHERE %queue%.productid=%products%.id ";

View File

@ -13,11 +13,11 @@ class Reservation {
echo json_encode(array("status" => "ERROR", "code" => ERROR_RES_NOT_AUTHOTRIZED, "msg" => ERROR_RES_NOT_AUTHOTRIZED_MSG));
} else {
if ($command == 'createReservation') {
$this->createReservation($_POST['day'],$_POST['month'],$_POST['year'],$_POST['start'],$_POST['name'],$_POST['email'],$_POST['persons'],$_POST['duration'],$_POST['phone'],$_POST['remark'],$_POST["tableid"]);
$this->createReservation($_POST['day'],$_POST['month'],$_POST['year'],$_POST['starthour'],$_POST['startmin'],$_POST['name'],$_POST['email'],$_POST['persons'],$_POST['durationhours'],$_POST['durationmins'],$_POST['phone'],$_POST['remark'],$_POST["tableid"]);
} else if ($command == 'getReservations') {
$this->getReservations($_GET['day'],$_GET['month'],$_GET['year']);
} else if ($command == 'changeReservation') {
$this->changeReservation($_POST['id'],$_POST['day'],$_POST['month'],$_POST['year'],$_POST['start'],$_POST['name'],$_POST['email'],$_POST['persons'],$_POST['duration'],$_POST['phone'],$_POST['remark'],$_POST["tableid"]);
$this->changeReservation($_POST['id'],$_POST['day'],$_POST['month'],$_POST['year'],$_POST['starthour'],$_POST['startmin'],$_POST['name'],$_POST['email'],$_POST['persons'],$_POST['durationhours'],$_POST['durationmins'],$_POST['phone'],$_POST['remark'],$_POST["tableid"]);
} else if ($command == 'delReservation') {
$this->delReservation($_POST['id']);
} else if ($command == 'emailConfirmReservation') {
@ -42,7 +42,7 @@ class Reservation {
}
}
private function createReservation($day,$month,$year,$start,$name,$email,$persons,$duration,$phone,$remark,$tableid) {
private function createReservation($day,$month,$year,$start,$startmin,$name,$email,$persons,$durationhours,$durationmins,$phone,$remark,$tableid) {
$userid = $_SESSION['userid'];
date_default_timezone_set(DbUtils::getTimeZone());
$currentTime = date('Y-m-d H:i:s');
@ -56,11 +56,11 @@ class Reservation {
$pdo->beginTransaction();
$sql = "INSERT INTO `%reservations%` (
`id` , `creator`,`creationdate`,`scheduledate`,`name`,`email`,`starttime`,`duration`,`persons`,`phone`,`remark`,`tableid`)
`id` , `creator`,`creationdate`,`scheduledate`,`name`,`email`,`starttime`,`starttimemin`,`duration`,`durationmins`,`persons`,`phone`,`remark`,`tableid`)
VALUES (
NULL , ?,?,?,?,?,?,?,?,?,?,?)";
NULL , ?,?,?,?,?,?,?,?,?,?,?,?,?)";
$stmt = $pdo->prepare($this->dbutils->resolveTablenamesInSqlString($sql));
$stmt->execute(array($userid,$currentTime,$scheduledDate,$name,$email,$start,$duration,$persons,$phone,$remark,$tableid));
$stmt->execute(array($userid,$currentTime,$scheduledDate,$name,$email,$start,$startmin,$durationhours,$durationmins,$persons,$phone,$remark,$tableid));
$pdo->commit();
echo json_encode(array("status" => "OK"));
}
@ -70,7 +70,7 @@ class Reservation {
}
}
private function changeReservation($id,$day,$month,$year,$start,$name,$email,$persons,$duration,$phone,$remark,$tableid) {
private function changeReservation($id,$day,$month,$year,$startHour,$startMin,$name,$email,$persons,$durationHours,$durationMins,$phone,$remark,$tableid) {
$userid = $_SESSION['userid'];
date_default_timezone_set(DbUtils::getTimeZone());
$currentTime = date('Y-m-d H:i:s');
@ -80,8 +80,8 @@ class Reservation {
try {
$pdo->beginTransaction();
$sql = "UPDATE `%reservations%` SET creator=?,creationdate=?,scheduledate=?,name=?,email=?,starttime=?,duration=?,persons=?,phone=?,remark=?,tableid=? WHERE id=?";
CommonUtils::execSql($pdo, $sql, array($userid,$currentTime,$scheduledDate,$name,$email,$start,$duration,$persons,$phone,$remark,$tableid,$id));
$sql = "UPDATE `%reservations%` SET creator=?,creationdate=?,scheduledate=?,name=?,email=?,starttime=?,starttimemin=?,duration=?,durationmins=?,persons=?,phone=?,remark=?,tableid=? WHERE id=?";
CommonUtils::execSql($pdo, $sql, array($userid,$currentTime,$scheduledDate,$name,$email,$startHour,$startMin,$durationHours,$durationMins,$persons,$phone,$remark,$tableid,$id));
$pdo->commit();
echo json_encode(array("status" => "OK"));
}
@ -144,7 +144,7 @@ class Reservation {
$txt = "<html><head>";
$txt .= "<title>Reservierungsübersicht</title>";
$txt .= '<meta http-equiv="content-type" content="text/html; charset=utf-8">';
$txt .= '<link rel="stylesheet" type="text/css" href="../css/bestformat.css?v=1.5.33">';
$txt .= '<link rel="stylesheet" type="text/css" href="../css/bestformat.css?v=1.6.1">';
$txt .= "</head>";
$txt .= "<body>";
$txt .= "<h1>Reservierungsübersicht für $day.$month.$year</h1><p>";
@ -170,7 +170,8 @@ class Reservation {
}
private static function getSqlForResByTime() {
// REM* roomname and tablename only for the html output
$sql = "SELECT R.id,U.username as username,creationdate,scheduledate,starttime,name,email,persons,duration,phone,remark,tableid, ";
$sqlEndTime = self::sqlForEndTime();
$sql = "SELECT R.id,U.username as username,creationdate,scheduledate,starttime as starthour,starttimemin as startmin,$sqlEndTime,name,email,persons,duration,durationmins,phone,remark,tableid, ";
$sql .= "IF(tableid is null,'-1',(SELECT RO.id as roomid FROM %room% RO,%resttables% T WHERE T.id=tableid AND T.roomid=RO.id)) as roomid, ";
$sql .= "IF(tableid is null,'-1',(SELECT RO.sorting as roomsorting FROM %room% RO,%resttables% T WHERE T.id=tableid AND T.roomid=RO.id)) as roomsorting, ";
$sql .= "IF(tableid is null,'',(SELECT RO.roomname as roomname FROM %room% RO,%resttables% T WHERE T.id=tableid AND T.roomid=RO.id)) as roomname, ";
@ -180,14 +181,25 @@ class Reservation {
$sql .= "WHERE DATE(scheduledate)=? AND R.creator=U.id ";
return $sql;
}
// REM* the end time may be in next day, and the minutes may also need an hiour to be increased
private static function sqlForEndTime() {
$sqlEndTimeStamp = 'ADDTIME(CONCAT(starttime,":",starttimemin,":00"),CONCAT(duration,":",durationmins,":00"))';
// REM* will return something like 26:15:00 in case endtime is on next day
$sqlEndHour = 'HOUR(' . $sqlEndTimeStamp . ') as endhour';
$sqlEndMin = 'MINUTE(' . $sqlEndTimeStamp . ') as endmin';
$sqlEndTime = "$sqlEndHour,$sqlEndMin";
return $sqlEndTime;
}
private function getReservations($day,$month,$year) {
$pdo = DbUtils::openDbAndReturnPdoStatic();
$sqlEndTime = self::sqlForEndTime();
// REM* the many sortings in the sql allow the sorting by time, room-sort and table-sort
$sql = self::getSqlForResByTime();
$timeSortedReservations = $this->getReservationsCore($pdo,$day,$month,$year,$sql . " ORDER BY starttime,roomsorting,tablesorting");
// REM* and now by table
$sql = "SELECT DISTINCT R.tableid as tableid,ROOM.id as roomid,ROOM.sorting as roomsorting,T.sorting as tablesorting FROM %reservations% R,%room% ROOM,%resttables% T ";
$sql = "SELECT DISTINCT R.tableid as tableid,T.tableno as tablename,ROOM.id as roomid,ROOM.sorting as roomsorting,T.sorting as tablesorting FROM %reservations% R,%room% ROOM,%resttables% T ";
$sql .= " WHERE DATE(scheduledate)=? AND tableid is not null AND tableid >= '0' ";
$sql .= " AND R.tableid = T.id AND T.roomid=ROOM.id ";
$sql .= " ORDER BY ROOM.sorting,T.sorting ";
@ -198,23 +210,23 @@ class Reservation {
$byTables = array();
foreach($allTablesOfResAtThatDate as $tableRes) {
$sql = "SELECT R.id,U.username as creator,creationdate,scheduledate,starttime as start,name as guest,email,persons,duration,(starttime + duration) as endhour,";
$sql = "SELECT R.id,U.username as creator,creationdate,scheduledate,YEAR(scheduledate) as year,MONTH(scheduledate) as month, DAY(scheduledate) as day,starttime as starthour,starttimemin as startmin,name as guest,email,persons,duration as durationhours,durationmins,$sqlEndTime,";
$sql .= " phone,remark,tableid,'" . $tableRes["roomid"] . "' as roomid ";
$sql .= "FROM %reservations% R,%user% U ";
$sql .= "WHERE DATE(scheduledate)=? AND R.creator=U.id AND tableid=? ";
$sql .= "ORDER BY starttime";
$allResOfThatTable = CommonUtils::fetchSqlAll($pdo, $sql, array($scheduledDate,$tableRes["tableid"]));
$byTables[] = array("tableid" => $tableRes["tableid"],"roomid" => $tableRes["roomid"], "reservations" => $allResOfThatTable);
$byTables[] = array("tableid" => $tableRes["tableid"],"tablename" => $tableRes["tablename"],"roomid" => $tableRes["roomid"], "reservations" => $allResOfThatTable);
}
// REM* these were all reservations by table at the given date. Let's add all reservations without a table assignment
$sql = "SELECT R.id,U.username as creator,creationdate,scheduledate,starttime as start,name as guest,email,persons,duration,(starttime + duration) as endhour,";
$sql = "SELECT R.id,U.username as creator,creationdate,scheduledate,YEAR(scheduledate) as year,MONTH(scheduledate) as month, DAY(scheduledate) as day,starttime as starthour,starttimemin as startmin,name as guest,email,persons,duration as durationhours,durationmins,$sqlEndTime,";
$sql .= " phone,remark,'-1' as tableid,'-1' as roomid ";
$sql .= "FROM %reservations% R,%user% U ";
$sql .= "WHERE DATE(scheduledate)=? AND R.creator=U.id AND (tableid is null OR tableid='-1') ";
$sql .= "ORDER BY starttime";
$allResOfUndefinedTable = CommonUtils::fetchSqlAll($pdo, $sql, array($scheduledDate));
if (count($allResOfUndefinedTable) > 0) {
$byTables[] = array("tableid" => '-1',"roomid" => '-1', "reservations" => $allResOfUndefinedTable);
$byTables[] = array("tableid" => '-1',"tablename" => "?","roomid" => '-1', "reservations" => $allResOfUndefinedTable);
}
$msg = array("bytimes" => $timeSortedReservations,"bytables" => $byTables);
@ -239,21 +251,22 @@ class Reservation {
$resArray = array();
foreach($result as $row) {
$datetimeparts = explode(" ",$row['scheduledate']);
$thedate = $datetimeparts[0];
$thedateparts = explode("-",$thedate);
$resArray[] = array(
"id" => $row['id'],
"creator" => $row['username'],
"creationdate" => $row['creationdate'],
"day" => $thedateparts[2],
"month" => $thedateparts[1],
"year" => $thedateparts[0],
"start" => $row['starttime'],
"day" => $row['day'],
"month" => $row['month'],
"year" => $row['year'],
"starthour" => $row['starthour'],
"startmin" => $row['startmin'],
"endhour" => $row['endhour'],
"endmin" => $row['endmin'],
"guest" => $row['name'],
"email" => $row['email'],
"persons" => $row['persons'],
"duration" => $row['duration'],
"durationhours" => $row['duration'],
"durationmins" => $row['durationmins'],
"phone" => $row['phone'],
"remark" => $row['remark'],
"roomid" => $row['roomid'],

View File

@ -38,13 +38,17 @@ class Roomtables {
} else if ($command == 'getRoomfieldAlsoInactive') {
$this->getRoomfieldAlsoInactive();
} else if ($command == 'setRoomInfo') {
if ($this->hasCurrentUserAdminRights()) {
if (self::hasCurrentUserAdminRights()) {
$this->setRoomInfo($_POST['rooms'],$_POST['togoworkprinter']);
}
} else if ($command == 'createTableCodes') {
self::createTableCodes();
} else if ($command == 'tableqrcodes') {
self::tableqrcodes();
}
}
private function hasCurrentUserAdminRights() {
private static function hasCurrentUserAdminRights() {
if(session_id() == '') {
session_start();
}
@ -55,6 +59,27 @@ class Roomtables {
}
}
private static function createTableCodes() {
if (!self::hasCurrentUserAdminRights()) {
echo json_encode(array("status" => "ERROR","msg" => "Benutzerrechte nicht ausreichend"));
return;
}
try {
$pdo = DbUtils::openDbAndReturnPdoStatic();
$sql = "SELECT id FROM %resttables% WHERE removed is null AND (code is NULL OR code='')";
$activeTables = CommonUtils::fetchSqlAll($pdo, $sql);
$updateSql = "UPDATE %resttables% SET code=? WHERE id=?";
foreach($activeTables as $table) {
$tableid = $table["id"];
$uniqid = md5(uniqid());
CommonUtils::execSql($pdo, $updateSql, array($uniqid,$tableid));
}
echo json_encode(array("status" => "OK"));
} catch (Exception $ex) {
echo json_encode(array("status" => "ERROR","msg" => "Datenbank nicht erreichbar"));
}
}
function showAllRooms() {
$pdo = DbUtils::openDbAndReturnPdoStatic();
$roomtables = $this->getAllTablesAndRooms($pdo);
@ -220,9 +245,22 @@ class Roomtables {
return '';
}
private static function sqlForEndTime() {
$sqlEndTimeStamp = 'ADDTIME(CONCAT(starttime,":",starttimemin,":00"),CONCAT(duration,":",durationmins,":00"))';
$sqlEndHour = 'HOUR(' . $sqlEndTimeStamp . ') as endhour';
$sqlEndMin = 'MINUTE(' . $sqlEndTimeStamp . ') as endmin';
$sqlEndTime = "$sqlEndHour,$sqlEndMin";
return $sqlEndTime;
}
private function getAllTablesAndRooms($pdo)
{
$sql = "SELECT tableid,GROUP_CONCAT(DISTINCT CONCAT(starttime,':00-',(starttime+duration),':00') ORDER BY starttime) as times from %reservations% R ";
$sqlEndTimeStamp = 'ADDTIME(CONCAT(starttime,":",starttimemin,":00"),CONCAT(duration,":",durationmins,":00"))';
$sqlEndHour = 'HOUR(' . $sqlEndTimeStamp . ') ';
$sqlEndMin = 'LPAD(MINUTE(' . $sqlEndTimeStamp . '),2,0)';
$sql = "SELECT tableid,GROUP_CONCAT(DISTINCT CONCAT(starttime,':',LPAD(starttimemin,2,0),'-',($sqlEndHour),':',($sqlEndMin)) ORDER BY starttime) as times from %reservations% R ";
//$sql = "SELECT tableid,GROUP_CONCAT(DISTINCT CONCAT(starttime,':00-',(starttime+duration),':00') ORDER BY starttime) as times from %reservations% R ";
$sql .= "WHERE DATE(scheduledate)=CURDATE() AND (HOUR(NOW())-1) <= starttime GROUP BY tableid";
$reservations = CommonUtils::fetchSqlAll($pdo, $sql);
@ -484,4 +522,85 @@ class Roomtables {
$result = CommonUtils::fetchSqlAll($pdo, $sql, array(1,1));
return $result;
}
private static function createSingleQRCode($guesturl,$tablename,$tableid,$code,$addOnText,$guestqrsize,$guestqrfontsize) {
$arg = $guesturl . '/index.php?code=' . $code . "_" . $tableid;
$txt = '<div style="width:' . $guestqrsize . 'px;text-align:center;">';
$txt .= 'Tisch: ' . $tablename . '<br>';
if (!is_null($code) && ($code != '')) {
$txt .= '<img src="utilities/osqrcode.php?cmd=link&arg=' . $arg . '" style="width:' . $guestqrsize . 'px;" /><br>';
} else {
$txt .= '<p><b>Tischcode wurde noch nicht zugewiesen</b><br>';
}
$txt .= '<p><span style="font-size:' . $guestqrfontsize . 'px;">' . $addOnText . '</span>';
$txt .= '</div>';
return $txt;
}
private static function createQrCodeForTables($pdo,$guesturl,$addOnText,$guestqrsize,$guestqrfontsize) {
$maxCols = round(500.0/($guestqrsize + 20));
$allTables = self::getTablesForGuestsystem($pdo);
$txt = '<table class="qrcodes">';
$col = 0;
foreach($allTables as $aTable) {
$code = $aTable['code'];
$tableid = $aTable['id'];
$tablename = $aTable['name'];
if ($col == 0) {
$txt .= "<tr>";
}
$txt .= '<td>' . self::createSingleQRCode($guesturl, $tablename, $tableid, $code, $addOnText, $guestqrsize, $guestqrfontsize);
$col++;
if ($col == $maxCols) {
$col = 0;
$txt .= "</tr>";
}
}
$txt .= "</table>";
return $txt;
}
private static function tableqrcodes() {
header( "Expires: Mon, 20 Dec 1998 01:00:00 GMT" );
header( "Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT" );
header( "Cache-Control: no-cache, must-revalidate" );
header( "Content-Type: text/html; charset=utf8" );
$pdo = DbUtils::openDbAndReturnPdoStatic();
$guestUrl = CommonUtils::getConfigValue($pdo, 'guesturl', '');
if (CommonUtils::strEndsWith($guestUrl, "/")) {
$guestUrl = substr($guestUrl, 0, strlen($guestUrl) - 1);
}
if (CommonUtils::strEndsWith($guestUrl, "/index.php")) {
$guestUrl = substr($guestUrl, 0, strlen($guestUrl) - strlen("/index.php"));
}
$guestqrtext = CommonUtils::getConfigValue($pdo, 'guestqrtext', '');
$guestqrsize = CommonUtils::getConfigValue($pdo, 'guestqrsize', '');
if (($guestqrsize < 20) || ($guestqrsize > 500)) {
$guestqrsize = 150;
}
$guestqrfontsize = CommonUtils::getConfigValue($pdo, 'guestqrfontsize', '');
if (($guestqrfontsize < 5) || ($guestqrfontsize > 50)) {
$guestqrfontsize = 15;
}
if (is_null($guestUrl) || ($guestUrl == '')) {
echo "Gastbestell-URL noch nicht konfiguriert";
return;
}
$txt = "<html><head>";
$txt .= "<title>Tisch QR-Codes für die Gastbestellung</title>";
$txt .= '<meta http-equiv="content-type" content="text/html; charset=utf-8">';
$txt .= '<link rel="stylesheet" type="text/css" href="../css/bestformat.css?v=1.6.1">';
$txt .= "</head>";
$txt .= "<body>";
$txt .= "<h1>Tisch QR-Codes für die Gastbestellung</h1><p>";
$txt .= self::createQrCodeForTables($pdo,$guestUrl,$guestqrtext,$guestqrsize,$guestqrfontsize);
$txt .= "</body></html>";
echo $txt;
}
}

View File

@ -0,0 +1,23 @@
<?php
error_reporting(E_ERROR);
require_once (__DIR__. '/../3rdparty/phpqrcode.php');
class OsQrcode {
public static function createQrCodeForLink($text) {
QRcode::png($text);
}
}
$cmd = $_GET["cmd"];
$arg = $_GET["arg"];
switch($cmd) {
case "link":
OsQrcode::createQrCodeForLink($arg);
break;
default:
break;
}

View File

@ -361,9 +361,9 @@ class PdfExport extends FPDF {
$startDate = $this->calcStartDate($startMonth, $startYear);
$endDate = $this->calcEndDate($endMonth, $endYear);
$prodStat = $reports->sumSortedByProducts($pdo, $startDate, $endDate,null,null);
$prodStat = $reports->sumSortedByProducts($pdo, $startDate, $endDate,null,null,null);
} else {
$prodStat = $reports->sumSortedByProducts($pdo, 0,0,$closidstart,$closidend);
$prodStat = $reports->sumSortedByProducts($pdo, 0,0,$closidstart,$closidend,null);
}
$this->setProdsTableHeader();

View File

@ -1287,6 +1287,26 @@ class Version {
return array(true);
}
public static function upd_1533_1600($pdo, $prefix, $dbname) {
try {
self::execSql($pdo, "ALTER TABLE %reservations% ADD starttimemin INT(3) NULL AFTER `starttime`");
self::execSql($pdo, "UPDATE %reservations% SET starttimemin='0'");
self::execSql($pdo, "ALTER TABLE %reservations% ADD durationmins INT(3) NULL AFTER `duration`");
self::execSql($pdo, "UPDATE %reservations% SET durationmins='0'");
self::insertOrUpdateConfigItem($pdo, 'guestqrtext', 'Gastbestellung');
self::insertOrUpdateConfigItem($pdo, 'guestqrfontsize', '15');
self::insertOrUpdateConfigItem($pdo, 'guestqrsize', '150');
self::insertOrUpdateConfigItem($pdo, 'reservationitem', "<b>{Name}</b>\n{Start-Stunde}:{Start-Minute}-{Ende-Stunde}:{Ende-Minute}\nDauer: {Dauer-Stunden}:{Dauer-Minuten}\n{Personen} Personen\n{Bemerkung}");
return array(true);
} catch (PDOException $e) {
return array(false,$e);
}
}
public static function upd_1600_1601($pdo, $prefix, $dbname) {
return array(true);
}
public static $updateOrder = array(
"1.3.0" => array("upd_1300_1301","1.3.1"),
"1.3.1" => array("upd_1301_1302","1.3.2"),
@ -1367,7 +1387,9 @@ class Version {
"1.5.29" => array("upd_1529_1530","1.5.30"),
"1.5.30" => array("upd_1530_1531","1.5.31"),
"1.5.31" => array("upd_1531_1532","1.5.32"),
"1.5.32" => array("upd_1532_1533","1.5.33")
"1.5.32" => array("upd_1532_1533","1.5.33"),
"1.5.33" => array("upd_1533_1600","1.6.0"),
"1.6.0" => array("upd_1600_1601","1.6.1")
);
public static function runUpdateProcess($pdo,$prefix, $dbname, $untilVersion,$checkValidVersion) {

View File

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="author" content="Stefan Pichel">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.33">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.6.1">
<link rel="stylesheet" href="php/contenthandler.php?module=admin&command=getmobilecss" />
<link rel="stylesheet" href="php/3rdparty/orderstyle/jquery.mobile.icons.min.css" />
@ -13,7 +13,7 @@
<script src="php/3rdparty/jquery-1.11.3.min.js"></script>
<script src="php/3rdparty/jquery.mobile-1.4.5.min.js"></script>
<script src="utilities.js?v=1.5.33"></script>
<script src="utilities.js?v=1.6.1"></script>
<link rel="stylesheet" href="php/3rdparty/jqueryui1-11-4/jquery-ui.min.css" />
<script src="php/3rdparty/jqueryui1-11-4/jquery-ui.min.js"></script>

View File

@ -5,7 +5,7 @@
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="author" content="Stefan Pichel">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.33">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.6.1">
<link rel="stylesheet" href="php/contenthandler.php?module=admin&command=getmobilecss" />
<link rel="stylesheet" href="php/3rdparty/orderstyle/jquery.mobile.icons.min.css" />
@ -13,7 +13,7 @@
<link rel="stylesheet" href="php/3rdparty/jquery.mobile-1.4.0.min.css" type="text/css" />
<script src="php/3rdparty/jquery-1.11.3.min.js"></script>
<script src="php/3rdparty/jquery.mobile-1.4.5.min.js"></script>
<script src="utilities.js?v=1.5.33"></script>
<script src="utilities.js?v=1.6.1"></script>
</head>

View File

@ -7,16 +7,16 @@
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="author" content="Stefan Pichel">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.33">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.6.1">
<link rel="stylesheet" href="php/contenthandler.php?module=admin&command=getmobilecss" />
<link rel="stylesheet" href="php/3rdparty/orderstyle/jquery.mobile.icons.min.css" />
<link rel="stylesheet" href="php/3rdparty/jquery.mobile-1.4.0.min.css" type="text/css" />
<script src="php/3rdparty/jquery-2.0.3.min.js"></script>
<script src="php/3rdparty/jquery.mobile-1.4.0.min.js"></script>
<script src="utilities.js?v=1.5.33"></script>
<script src="elements/product.js?v=1.5.33"></script>
<script src="elements/extra.js?v=1.5.33"></script>
<script src="utilities.js?v=1.6.1"></script>
<script src="elements/product.js?v=1.6.1"></script>
<script src="elements/extra.js?v=1.6.1"></script>
<link href="php/3rdparty/hayageek_uploadfile.css" rel="stylesheet">
<script src="php/3rdparty/hayageek_jquery_uploadfile.js"></script>
</head>

View File

@ -4,7 +4,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="author" content="Stefan Pichel">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.33">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.6.1">
<link rel="stylesheet" href="css/ospage.css" />
<link rel="stylesheet" href="css/tablepanel.css" />
@ -15,7 +15,7 @@
<script src="php/3rdparty/jquery-2.2.4.min.js"></script>
<script src="php/3rdparty/jqueryui1-12-0/jquery-ui.min.js"></script>
<script src="utilities.js?v=1.5.33"></script>
<script src="utilities.js?v=1.6.1"></script>
<script>

View File

@ -7,14 +7,14 @@
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="author" content="Stefan Pichel">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.33">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.6.1">
<link rel="stylesheet" href="php/contenthandler.php?module=admin&command=getmobilecss" />
<link rel="stylesheet" href="php/3rdparty/orderstyle/jquery.mobile.icons.min.css" />
<link rel="stylesheet" href="php/3rdparty/jquery.mobile-1.4.0.min.css" type="text/css" />
<script src="php/3rdparty/jquery-2.0.3.min.js"></script>
<script src="php/3rdparty/jquery.mobile-1.4.0.min.js"></script>
<script src="utilities.js?v=1.5.33"></script>
<script src="utilities.js?v=1.6.1"></script>
</head>
<body>

View File

@ -7,14 +7,14 @@
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="author" content="Stefan Pichel">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.33">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.6.1">
<link rel="stylesheet" href="php/contenthandler.php?module=admin&command=getmobilecss" />
<link rel="stylesheet" href="php/3rdparty/orderstyle/jquery.mobile.icons.min.css" />
<link rel="stylesheet" href="php/3rdparty/jquery.mobile-1.4.0.min.css" type="text/css" />
<script src="php/3rdparty/jquery-2.0.3.min.js"></script>
<script src="php/3rdparty/jquery.mobile-1.4.0.min.js"></script>
<script src="utilities.js?v=1.5.33"></script>
<script src="utilities.js?v=1.6.1"></script>
<script src="elements/rating.js"></script>
</head>
@ -51,9 +51,9 @@ var REP_THIS_MONTH_TXT = ["Diese Übersicht umfasst alle Einnahmen dieses Monats
var REP_LAST_MONTH_TXT = ["Diese Übersicht umfasst Einnahmen des letzten Monats.",
"This overview shows all revenues of the last month.",
"Este parte muestra todo el cobro del mes pasado."];
var REP_PROD_LAST30_TXT = ["Diese Übersicht zeigt die Einnahmen, die mit den in den letzten 30 Tagen verkauften Produkten erzielt wurden.",
"This overview displays the revenue that could be achieved with all sold products in the last 30 days.",
"Este parte muestra el cobro con el productos vendido en los últimos 30 días."];
var REP_PROD_LAST30_TXT = ["Diese Übersicht zeigt die Einnahmen, die mit den in den letzten Tagen verkauften Produkten erzielt wurden.",
"This overview displays the revenue that could be achieved with all sold products in the last days.",
"Este parte muestra el cobro con el productos vendido en los últimos días."];
var REP_NO_DATA = ["Es liegen keine Daten vor.", "There is no data.", "No hay ningún datos."];
var REP_PRODREP = ["Produktstatistik","Product report","Estadistica de productos"];
var REP_TITLE = ["Statistik","Statistics","Estadisticas"];
@ -76,6 +76,7 @@ var REP_RECORD_ACTION = [
["Tischwechsel Produktbuchung","Received moved products","Recibo productos de otra mesa"]
];
var REP_NO_ENTRIES = ["Keine Einträge","No entries","Ningún data"];
var REP_PRODSLIDER_LABEL = ["Seit wievielen Tagen","Since how many days","Desce hace cuantos dias"];
var lang = 0;
var allorders = [];
@ -193,6 +194,27 @@ function setLanguage(language) {
});
}
function getProdsSlider() {
var txt = '<div id="prodsliderarea">';
txt += '<label for="prodsslider" id="prodssliderlabel"><span id="prodssliderlabeltxt">' + REP_PRODSLIDER_LABEL[lang] + '</span>:</label>';
txt += '<input type="range" name="prodsslider" id="prodsslider" value="30" min="1" max="731" data-theme="b" data-track-theme="e" /><br>';
txt += '</div><p />';
return txt;
}
function bindProdsSlider() {
$("#prodsslider").off("slidestop").on("slidestop", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
requestNewProdStat();
});
}
function requestNewProdStat() {
var days = $("#prodsslider").val();
$("#content_prods_section .divaroundtable").html('<img id="progressimginprodsstattable" src="php/3rdparty/images/ajax-loader.gif" />');
doAjax("GET", "php/contenthandler.php?module=reports&command=getProds&days=" + days, null, updateProdsStat, "Fehler keine Daten für Produktverkäufe",true);
}
function fillUsersums(answer) {
if (answer.status == "OK") {
var htmlTable = createTableWithData(answer.msg,REP_USER[lang],"center",15,10,75);
@ -230,10 +252,18 @@ function setLanguage(language) {
function fillProds(answer) {
if (answer.status == "OK") {
var htmlTable = createTableWithData(answer.msg,REP_PROD[lang],"left",30,10,60);
$("#content_prods_section").html(htmlTable);
var prodsSlider = getProdsSlider();
$("#content_prods_section").html(prodsSlider + htmlTable);
$("#prodsliderarea").trigger("create");
bindProdsSlider();
}
}
function updateProdsStat(answer) {
if (answer.status == "OK") {
var htmlTable = createTableWithData(answer.msg,REP_PROD[lang],"left",30,10,60);
$("#content_prods_section .divaroundtable").html(htmlTable);
}
}
function fillRatings(answer) {
if (answer.status == "OK") {
var htmlPart = createRatingsPartCore(answer.msg,REP_DAY[lang],10,10,40,40);
@ -459,10 +489,11 @@ function setLanguage(language) {
function createTableWithData(values,iterObjName,iterAlignment,width1,width2,width3) {
var maxValue = values.max;
var content = REP_NO_DATA[lang];
var content = "<div class='divaroundtable'>" + REP_NO_DATA[lang] + "</div>";
if (maxValue != 0.0) {
var content = "<table width=100% class='reporttable'>";
var content = "<div class='divaroundtable'>";
content += "<table width=100% class='reporttable'>";
content += aTableHeader(iterObjName,REP_SUM[lang],"Graph",width1,width2,width3);
var contentValues = values.content;
@ -475,7 +506,7 @@ function setLanguage(language) {
width1,width2,width3);
});
content += "</table>";
content += "</table></div>";
}
return content;
}

View File

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="author" content="Stefan Pichel">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.33">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.6.1">
<link rel="stylesheet" href="php/contenthandler.php?module=admin&command=getmobilecss" />
<link rel="stylesheet" href="php/3rdparty/orderstyle/jquery.mobile.icons.min.css" />
@ -13,8 +13,9 @@
<script src="php/3rdparty/jquery-1.11.3.min.js"></script>
<script src="php/3rdparty/jquery.mobile-1.4.5.min.js"></script>
<script src="elements/tablemap.js"></script>
<script src="elements/reservation.js?v=1.6.1"></script>
<script src="utilities.js?v=1.5.33"></script>
<script src="utilities.js?v=1.6.1"></script>
<link rel="stylesheet" href="php/3rdparty/jqueryui1-11-4/jquery-ui.min.css" />
<script src="php/3rdparty/jqueryui1-11-4/jquery-ui.min.js"></script>
@ -29,6 +30,11 @@
<style>
@media print
{
#thefooter,#theheader,#modulemenu,#newresbox,#printsummary,#timeperiodsliderform {display: none;}
}
.schbtn,.schtablebtn {
font-size: 9px;
width: 170px;
@ -57,19 +63,27 @@ var RES_DATE = ["Datum","Date","Fecha"];
var RES_NEW = ["Neue Reservierung","New Reservation","Reserva nueva"];
var RES_STARTTIME = ["Start-Uhrzeit","Start time","Hora de Empieza"];
var RES_NO_PERSONS = ["Anzahl Gäste","Number of persons","Personas"];
var RES_DURATION = ["Dauer (Stunden)","Duration (hours)","Duración (horas)"];
var RES_HOUR = ["Stunde","Hour","Hora"];
var RES_MIN = ["Minute","Minute","Minuto"];
var RES_DURATION = ["Dauer","Duration","Quanto tiempo"];
var RES_DURATION_HOURS = ["Stunden","Hours","Horas"];
var RES_DURATION_MINS = ["Minuten","Minutes","Minutos"];
var RES_GUEST_INFO_HEADER = ["Gästeinformation","Guest information","Información sobre huespedes"];
var RES_NAME = ["Name","Name","Nombre"];
var RES_EMAIL = ["E-Mail","Email","Email"];
var RES_TEL = ["Telefon","Phone","Telefono"];
var RES_REMARK = ["Notiz","Remark","Comentario"];
var RES_NO_NAME = ["Name wurde nicht angegeben!","Name field not filled!","Falta el nombre!"];
var RES_NO_PERSONS = ["Anzahl Personen wurde nicht eingetragen","Number of persons not specified","Falta numero de personas"];
var RES_INVALID_NUMBER_OF_PERSONS = ["Invalide Angabe der Personenanzahl","Invalid number of guests","Número de huespedes invalido"];
var RES_APPLY = ["Anwenden","Apply","Aplicar"];
var RES_CANCEL = ["Abbrechen","Cancel","Cancelar"];
var RES_CHANGE_TITLE = ["Reservierung ändern","Change Reservation","Modificar Reserva"];
var RES_LASTCREATOR = ["Letzte Änderung von","Last change by","Ultima modificación de"];
var RES_LASTUPDATE = ["Zuletzt geändert","Last changed","Ultimo cambio"];
var RES_HOUR = ["Uhrzeit","Time","Hora"];
var RES_TIME = ["Uhrzeit","Time","Hora"];
var RES_RES = ["Reservierungen","Reservations","Reservaciones"];
var RES_TIME_PERIOD = ["Zeitraum","Time frame","Periodo del tiempo"];
var RES_NORES = ["Keine Reservierungen an diesem Tag","No reservations at the selected day","No hay ningúna reserva"];
var RES_DEL = ["Löschen","Delete","Borrar"];
var RES_EMAIL_IMPOSSIBLE = ["(Eine Email-Reservierungsbestätigung ist erst nach Konfiguration des Emailsystems möglich.)",
@ -85,17 +99,18 @@ var RES_HINT_CUS_CHOOSE = ["Oder manuell eingeben:","or type in manually:","o in
var RES_TABLESPEC = ["Tischangabe","Table","Mesa"];
var RES_ROOM = ["Raum","Room","Habitación"];
var RES_TABLE = ["Tisch","Table","Mesa"];
var RES_BY_TIMES = ["Reservierungen nach Uhrzeit","Reservations sorted by times","Reservaciones ordenado por tiempos"];
var RES_BY_TABLES = ["Reservierungen nach Tisch","Reservations sorted by table","Reservaciones ordenado por mesa"];
var RES_HTMLREPORT = ["Übersicht","Overview","Lista en html"];
var RES_CREATED_OK = ["Reservierung angelegt","Reservation created","Reservación creado"];
var lang = (-1);
var reservationnote = "";
var reservationitem = "";
var companyinfo = "";
var emailIsPossible = false;
var emailTemplate = "";
var filteredCustomers = [];
var tableoverview = [];
var resofselecteddate = [];
function setLanguage(language) {
lang = language;
@ -105,20 +120,30 @@ function setLanguage(language) {
$("#newtxt").html(RES_NEW[lang]);
$("#newresboxtxt").html(RES_NEW[lang]);
$("#starttimetxt").html(RES_STARTTIME[lang]);
$("#datehourtxt").html(RES_HOUR[lang]);
$("#datemintxt").html(RES_MIN[lang]);
$("#guestheadertxt").html(RES_GUEST_INFO_HEADER[lang]);
$("#personstxt").html(RES_NO_PERSONS[lang]);
$("#durationtxt").html(RES_DURATION[lang]);
$("#durationheadertxt").html(RES_DURATION[lang]);
$("#durationhourtxt").html(RES_DURATION_HOURS[lang]);
$("#durationmintxt").html(RES_DURATION_MINS[lang]);
$("#nametxt").html(RES_NAME[lang]);
$("#customertxt").html(RES_CUS_LABEL[lang]);
$("#emailtxt").html(RES_EMAIL[lang]);
$("#teltxt").html(RES_TEL[lang]);
$("#remarktxt").html(RES_REMARK[lang]);
$("#cdurationheadertxt").html(RES_DURATION[lang]);
$("#cdurationhourtxt").html(RES_DURATION_HOURS[lang]);
$("#cdurationmintxt").html(RES_DURATION_MINS[lang]);
$("#cguestheadertxt").html(RES_GUEST_INFO_HEADER[lang]);
$("#cnewresboxtxt").html(RES_CHANGE_TITLE[lang]);
$("#reschangetitletxt").html(RES_CHANGE_TITLE[lang]);
$("#cdatetxt").html(RES_DATE[lang]);
$("#cstarttimetxt").html(RES_STARTTIME[lang]);
$("#cstarttimehourtxt").html(RES_HOUR[lang]);
$("#cpersonstxt").html(RES_NO_PERSONS[lang]);
$("#cdurationtxt").html(RES_DURATION[lang]);
$("#cdurationtxt").html(RES_DURATION_HOURS[lang]);
$("#cnametxt").html(RES_NAME[lang]);
$("#cemailtxt").html(RES_EMAIL[lang]);
$("#cteltxt").html(RES_TEL[lang]);
@ -136,8 +161,9 @@ function setLanguage(language) {
$("#sendemailtotxt").html(RES_TO[lang]);
$("#reshintchoosecustomer").html(RES_HINT_CUS_CHOOSE[lang]);
$("#resbytimesheadertxt").html(RES_BY_TIMES[lang]);
$("#resbytablesheadertxt").html(RES_BY_TABLES[lang]);
$("#resbytimesofdaytxt").html(RES_RES[lang]);
$(".timeperiodslider").html(RES_TIME_PERIOD[lang]);
var langtxt = "de";
if (lang == 1) {
@ -174,6 +200,7 @@ function insertGenConfigStartRest(configResult) {
if (configResult.status == "OK") {
var values = configResult.msg;
reservationnote = values.reservationnote;
reservationitem = values.reservationitem;
companyinfo = values.companyinfo;
setLanguage(values.userlanguage);
if (values.email != "") {
@ -195,6 +222,9 @@ function handleDateChangeEvents() {
$("#res-page").data("date",date);
displayTodaySchedule(date);
});
$("#cdatepicker").off("change").on("change", function (e) {
var date = $("#cdatepicker").datepicker("getDate");
});
}
function displayTodaySchedule(date) {
@ -224,7 +254,7 @@ function displaySpecificDateSchedule() {
var year = dateParts[0];
var month = dateParts[1];
var day = dateParts[2];
data = {
var data = {
day: day,
month: month,
year: year
@ -246,10 +276,12 @@ function bindNewReservationBtn() {
$("#newbtn").off("click").on("click", function (e) {
var date = $("#datepicker").datepicker("getDate");
var startTime = $("#timefieldse").val();
var startTimeHour = $("#timefieldse").val();
var startTimeMin = $("#timefieldmin").val();
var name = ($("#guestname").val()).trim();
var email = ($("#email").val()).trim();
var duration = $("#durationse").val();
var durationhours = $("#durationse").val();
var durationmins = $("#durationmin").val();
var persons = $("#noofguestse").val();
var phone = $("#telno").val();
var remark = $("#remark").val();
@ -272,15 +304,21 @@ function bindNewReservationBtn() {
if (name.length == 0) {
alert(RES_NO_NAME[lang]);
} else if (persons == "") {
alert(RES_NO_PERSONS[lang]);
} else if (!isInt(persons)) {
alert(RES_INVALID_NUMBER_OF_PERSONS[lang]);
} else {
var data = {
day: date.getDate(),
month: (date.getMonth() + 1),
year: date.getFullYear(),
start: startTime,
starthour: startTimeHour,
startmin: startTimeMin,
name: name,
email: email,
duration: duration,
durationhours: durationhours,
durationmins: durationmins,
persons: persons,
phone: phone,
remark: remark,
@ -290,7 +328,7 @@ function bindNewReservationBtn() {
var emailtext = emailTemplate;
emailtext = emailtext.replace(/DATUM/g,date.getDate() + "." + (date.getMonth() + 1) + "." + date.getFullYear());
emailtext = emailtext.replace(/ANZAHL/g,persons);
emailtext = emailtext.replace(/ZEIT/g,startTime);
emailtext = emailtext.replace(/ZEIT/g,startTimeHour + ":" + startTimeMin);
emailtext = emailtext.replace(/BETRIEBSINFO/g,companyinfo);
$("#emailfield").val(emailtext);
$("#emailtofield").val(email);
@ -310,7 +348,7 @@ function handleCreateNewReservation(answer) {
$.mobile.changePage("#sentemail-page");
} else {
resetFields();
alert(RES_CREATED_OK[lang]);
}
$("#cancelemailsentbtn").off("click").on("click", function (e) {
@ -347,10 +385,14 @@ function handleEmailSendResult(result) {
function resetFields() {
$("#guestname").val("");
$("#email").val("");
$("#timefieldmin").val(0);
$("#timefieldmin").selectmenu().selectmenu('refresh', true);
$("#durationse").val(2);
$("#durationse").selectmenu('refresh', true);
$("#noofguestse").val(2);
$("#noofguestse").selectmenu('refresh', true);
$("#durationse").selectmenu().selectmenu('refresh', true);
$("#noofguestse").val("");
$("#durationmin").val(0);
$("#durationmin").selectmenu().selectmenu('refresh', true);
$("#telno").val("");
$("#remark").val("");
@ -385,119 +427,30 @@ function getTableName(roomid,tableid) {
return tablename;
}
function createTableOfReservationsByTime(res) {
var number = res.length;
var times = [];
var hour = 0;
var residx = 0;
for (hour=0;hour<24;hour++) {
var resofhour = [];
times[hour] = resofhour;
}
function updateTableOfReservationsByTables(reservations) {
var date = $('#datepicker').datepicker({ dateFormat: 'dd-mm-yy' }).val();
$("#dateofreservations").html(date);
var restable = new ReservationsTable();
var startDisplayHour = $("#range-starthour").val();
var endDisplayHour = $("#range-endhour").val();
var maxCol = 0;
var hasTotalRes = false;
var tableHtml = restable.layoutTable(startDisplayHour,endDisplayHour,reservations,reservationitem);
$("#restablearea").html(tableHtml);
var resindex = 0;
var h=0;
for (resindex = 0; resindex < number; resindex++) {
hasTotalRes = true;
var aRes = res[resindex];
var start = parseInt(aRes.start);
var end = Math.min(23, start + parseInt(aRes.duration) - 1);
var colToFill = fitsInCol(times,maxCol,start,end);
for (h=start;h<=end;h++) {
times[h][colToFill] = resindex;
}
if (maxCol < colToFill) {
maxCol = colToFill;
}
}
if (!hasTotalRes) {
html += "<tr><td>&nbsp;<td><b>" + RES_NORES[lang] + "</b></tr>";
} else {
var html = "<tr><td>" + RES_HOUR[lang] + "<td>" + RES_RES[lang] + "</tr>";
for (h=0;h<=23;h++) {
var hasRes = false;
var col=0;
var dayTxt = '<tr>' + aTimeField(h);
var aResLine = times[h];
for (col=0;col<=maxCol;col++) {
var residx = aResLine[col];
if (residx != null) {
var roomid = res[residx].roomid;
var tableid = res[residx].tableid;
var tablename = getTableName(roomid,tableid);
dayTxt += aButtonField(residx,res[residx].persons,res[residx].guest,tablename);
hasRes = true;
} else {
dayTxt += "<td>&nbsp;";
}
}
dayTxt += "</tr>";
if (hasRes) {
html += dayTxt;
}
}
}
$("#dayschedule").html(html);
if (hasTotalRes) {
var htmlReportBtn = '<p><button id="htmlreportbtn" data-theme="f">' + RES_HTMLREPORT[lang] + '</button>';
$("#reshtmlarea").html(htmlReportBtn);
} else {
$("#reshtmlarea").html("");
}
$("#resbytimes").trigger("create");
bindHourButton();
bindCustomerField();
bindChangeButton();
bindHtmlReportButton();
}
function createTableOfReservationsByTables(res) {
var number = res.length;
var html = "";
if (number == 0) {
html += "<tr><td>&nbsp;<td><b>" + RES_NORES[lang] + "</b></tr>";
} else {
html += "<tr><td>" + RES_TABLE[lang] + "<td>" + RES_RES[lang] + "</tr>";
for (var i=0;i<number;i++) {
var aRes = res[i];
var roomid = aRes.roomid;
var tableid = aRes.tableid;
var tablename = "?";
if (tableid >= 0) {
tablename = getTableName(roomid,tableid);
}
html += '<tr>' + aTableField(tablename);
var reservations = aRes.reservations;
for (var col=0;col<=reservations.length;col++) {
var aRes = reservations[col];
if (aRes != null) {
var starttime = aRes.start;
var endhour = aRes.endhour;
var period = starttime + ":00-" + endhour + ":00";
html += aResFieldForTableSort(aRes.id,aRes.persons,aRes.guest,period);
function getResWithId(id) {
for (var i=0;i<resofselecteddate.length;i++) {
var allReservationsOfATable = resofselecteddate[i].reservations;
for (var j=0;j<allReservationsOfATable.length;j++) {
var aRes = allReservationsOfATable[j];
if (aRes.id == id) {
return aRes;
}
}
html += "</tr>";
}
}
$("#tableschedule").html(html);
$("#tableschedule").trigger("create");
bindChangeResByTableButton();
return null;
}
function insertReservations(answer) {
@ -507,59 +460,37 @@ function insertReservations(answer) {
} else {
tableoverview = answer.tableoverview;
fillRoomList("tablespecinforoomarea","roomselect","tablespecinfotablearea","tableselect",null,null);
var res = answer.msg.bytimes;
$("#res-page").data("res",res);
//var res = answer.msg.bytimes;
//$("#res-page").data("res",res);
var resbytables = answer.msg.bytables;
resofselecteddate = resbytables;
$("#res-page").data("resbytables",resbytables);
createTableOfReservationsByTime(res);
createTableOfReservationsByTables(resbytables);
updateTableOfReservationsByTables(resbytables);
bindTimeRangeSliders();
bindPrintBtn();
bindClickResItem();
bindCustomerField();
}
}
function fitsInCol(times,maxCol,start,end) {
var col = 0;
for (col=0;col<=(maxCol+1);col++) {
var h = 0;
var fits = true;
for (h=start;h<=end;h++) {
var entry = times[h][col];
if (entry != null) {
fits = false;
}
}
if (fits) {
return col;
}
}
return maxCol+1;
function bindPrintBtn() {
$("#printsummary").off("click").on("click", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
window.print();
});
}
function aTableField(tableid) {
return '<td><button data-theme="a" class="timeschbtn">' + tableid + '</button>';
}
function aResFieldForTableSort(resid,persons,name,timeperiod) {
var txt = timeperiod + "<br>" + toHtml(name) + " - " + toHtml(persons) + " Pers.";
return '<td style="width:110px;"><button data-theme="e" class="schtablebtn" style="width:120px;height:50px;" id="residbytable_'+ resid + '">' + txt + '</button>';
}
function aTimeField(theVal) {
var nextHour = parseInt(theVal) + 1;
return '<td><button data-theme="a" class="timeschbtn">' + theVal + ' - ' + nextHour + '</button>';
}
function aButtonField(theVal,persons,name,tablename) {
var txt = toHtml(name) + " - " + toHtml(persons) + " Pers.";
if (tablename != '') {
txt += "<br>Tisch: " + tablename;
}
return '<td style="width:110px;"><button data-theme="e" class="schbtn" style="width:120px;height:50px;" id="resid_'+ theVal + '">' + txt + '</button>';
}
function bindHourButton() {
$(".timeschbtn").off("click").on("click", function (e) {
var startTime = (($(this).html()).split(" "))[0];
$("#timefieldse").val(startTime);
$("#timefieldse").selectmenu('refresh', true);
function bindTimeRangeSliders() {
$("#range-starthour").off("slidestop").on("slidestop", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
displayTodaySchedule($("#res-page").data("date"));
});
$("#range-endhour").off("slidestop").on("slidestop", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
displayTodaySchedule($("#res-page").data("date"));
});
}
@ -631,7 +562,7 @@ function bindCancelButtn() {
var year = date.getFullYear();
var dateStr = year + "-" + month + "-" + day;
setTimeout(function(){document.location.href = "reservation.html?v=1.5.33&date=" + dateStr;},500);
setTimeout(function(){document.location.href = "reservation.html?v=1.6.1&date=" + dateStr;},500);
});
}
@ -641,8 +572,10 @@ function openEditPageForRes(res) {
var day = res.day;
var month = parseInt(res.month)-1;
var year = res.year;
var startTime = res.start;
var duration = res.duration;
var startHour = res.starthour;
var startMin = res.startmin;
var durationhours = res.durationhours;
var durationmins = res.durationmins;
var name = res.guest;
var email = res.email;
var noOfGuests = res.persons;
@ -657,10 +590,13 @@ function openEditPageForRes(res) {
var changeDate = new Date(year, month, day, 0,0,0,0);
$('#cdatepicker').datepicker('setDate', changeDate);
handleDateChangeEvents();
$("#ctimefieldse").val(startTime);
$("#ctimefieldse").val(startHour);
$("#ctimefieldmin").val(startMin);
$("#cnoofguestse").val(noOfGuests);
$("#cdurationse").val(duration);
$("#cdurationse").val(durationhours);
$("#cdurationmin").val(durationmins);
$("#cguestname").val(name);
$("#cemail").val(email);
$("#ctelno").val(phone);
@ -675,11 +611,10 @@ function openEditPageForRes(res) {
$.mobile.changePage("#changeres-page");
}
function bindChangeButton() {
$(".schbtn").off("click").on("click", function (e) {
function bindClickResItem() {
$(".resitem").off("click").on("click", function (e) {
var resid = ((this.id).split("_"))[1];
var res = ($("#res-page").data("res"))[resid];
openEditPageForRes(res);
openEditPageForRes(getResWithId(resid));
});
}
function bindHtmlReportButton() {
@ -716,9 +651,11 @@ function bindDlgChangeBtn() {
$("#changebtn").off("click").on("click", function (e) {
e.stopImmediatePropagation();
e.preventDefault();
var startTime = $("#ctimefieldse").val();
var startHour = $("#ctimefieldse").val();
var startMin = $("#ctimefieldmin").val();
var persons = $("#cnoofguestse").val();
var duration = $("#cdurationse").val();
var durationHours = $("#cdurationse").val();
var durationMins = $("#cdurationmin").val();
var guestname = $("#cguestname").val();
var email = $("#cemail").val();
var phone = $("#ctelno").val();
@ -749,10 +686,12 @@ function bindDlgChangeBtn() {
day: date.getDate(),
month: (date.getMonth() + 1),
year: date.getFullYear(),
start: startTime,
starthour: startHour,
startmin: startMin,
name: guestname,
email: email,
duration: duration,
durationhours: durationHours,
durationmins: durationMins,
persons: persons,
phone: phone,
remark: remark,
@ -784,26 +723,37 @@ $(document).on("pageinit", "#res-page", function () {
handleDateChangeEvents();
displaySpecificDateSchedule();
bindNewReservationBtn();
bindChangeButton();
bindClickResItem();
bindCancelButtn();
var currentHour = String(new Date().getHours());
$("#timefieldse").val(currentHour);
$("#timefieldse").selectmenu('refresh', true);
$("#timefieldse").selectmenu().selectmenu('refresh', true);
$("#timefieldmin").val(0);
$("#timefieldmin").selectmenu().selectmenu('refresh', true);
$("#durationse").val(2);
$("#durationse").selectmenu().selectmenu('refresh', true);
$("#durationmin").val(0);
$("#durationmin").selectmenu().selectmenu('refresh', true);
$("#customer").val("");
$("#noofguestse").val("");
$("#guestname").val("");
$("#email").val("");
$("#telno").val("");
$("#remark").val("");
});
$(document).on("pagebeforeshow", "#changeres-page", function () {
if (lang < 0) {
setTimeout(function(){document.location.href = "reservation.html?"},500);
} else {
$("#ctimefieldse").selectmenu('refresh', true);
$("#cnoofguestse").selectmenu('refresh', true);
$("#cdurationse").selectmenu('refresh', true);
$("#ctimefieldse").selectmenu().selectmenu('refresh', true);
$("#ctimefieldmin").selectmenu().selectmenu('refresh', true);
$("#cdurationse").selectmenu().selectmenu('refresh', true);
$("#cdurationmin").selectmenu().selectmenu('refresh', true);
}
});
@ -903,9 +853,11 @@ function bindRoomSelect(roomsectionid,roomselectid,tablesectionid,tableselectid,
<h3><span id="newresboxtxt">Neue Reservierung</span></h3>
<form>
<span id="starttimetxt" class="headerformat">Start-Uhrzeit</span>:
<div data-role="fieldcontain">
<label for="timefieldse" class="select" style="width: 200px;"><span id="starttimetxt">Start-Uhrzeit</span>: </label>
<select name="timefieldse" id="timefieldse">
<label for="timefieldse"><span id=datehourtxt>Stunde</span>: </label>
<select name="timefieldse" id="timefieldse" data-theme="a">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
@ -931,11 +883,24 @@ function bindRoomSelect(roomsectionid,roomselectid,tablesectionid,tableselectid,
<option value="22">22</option>
<option value="23">23</option>
</select>
</div> <!-- fieldcontain for start time -->
</div>
<div data-role="fieldcontain">
<label for="durationse" class="select" style="width: 200px;"><span id="durationtxt">Dauer (Stunden)</span>: </label>
<select name="durationse" id="durationse" >
<label for="timefieldmin"><span id=datemintxt>Minute</span>: </label>
<select name="timefieldmin" id="timefieldmin" data-theme="a">
<option value="0">0</option>
<option value="15">15</option>
<option value="30">30</option>
<option value="45">45</option>
</select>
</div>
<span id="durationheadertxt" class="headerformat">Dauer</span>:
<div data-role="fieldcontain">
<label for="durationse"><span id="durationhourtxt">Stunden</span>: </label>
<select name="durationse" id="durationse" data-theme="a" >
<option value="0">0</option>
<option value="1">1</option>
<option value="2" selected>2</option>
<option value="3">3</option>
@ -949,31 +914,28 @@ function bindRoomSelect(roomsectionid,roomselectid,tablesectionid,tableselectid,
<option value="11">11</option>
<option value="12">12</option>
</select>
</div> <!-- fieldcontain for duration -->
</div> <!-- fieldcontain for duration hour -->
<div data-role="fieldcontain">
<label for="noofguestse" class="select" style="width: 200px;"><span id="personstxt">Anzahl Gäste</span>: </label>
<select name="noofguestse" id="noofguestse" >
<option value="1">1</option>
<option value="2" selected>2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11-15</option>
<option value="15">15-20</option>
<option value="20">20-30</option>
<option value="30">30-40</option>
<option value="40">40+</option>
<label for="durationmin"><span id="durationmintxt">Minuten</span>: </label>
<select name="durationmin" id="durationmin" data-theme="a" >
<option value="0" selected>0</option>
<option value="15">15</option>
<option value="30">30</option>
<option value="45">45</option>
</select>
</div> <!-- fieldcontain for duration min -->
<span id="guestheadertxt" class="headerformat">Gästeinformation</span>:
<div data-role="fieldcontain">
<label for="noofguestse"><span id="personstxt">Anzahl Gäste</span>: </label>
<input data-wrapper-class="shortfield" type="text" name="noofguestse" id="noofguestse" class="whiteinput" />
</div> <!-- fieldcontain for number of guests -->
<div data-role="fieldcontain">
<label for="customer" class="select" style="width: 100%;"><span id="customertxt">Kunde</span>: </label>
<label for="customer" style="width: 100%;"><span id="customertxt">Kunde</span>: </label>
<input type="text" id="customer" class="reservationinputfield whiteinput" value="" data-mini="true" placeholder="Name / Telefon"/>
</div> <!-- fieldcontain name -->
<div id="customerlist"></div>
@ -981,22 +943,22 @@ function bindRoomSelect(roomsectionid,roomselectid,tablesectionid,tableselectid,
<p id="reshintchoosecustomer">Oder manuell eingeben:
<p><div data-role="fieldcontain">
<label for="guestname" class="select" style="width: 100%;"><span id="nametxt">Name</span>: </label>
<label for="guestname" style="width: 100%;"><span id="nametxt">Name</span>: </label>
<input type="text" id="guestname" class="reservationinputfield whiteinput" value="" data-mini="true" />
</div> <!-- fieldcontain name -->
<div data-role="fieldcontain">
<label for="email" class="select" style="width: 100%;"><span id="emailtxt">Email</span>: </label>
<label for="email" style="width: 100%;"><span id="emailtxt">Email</span>: </label>
<input type="text" id="email" class="reservationinputfield whiteinput" value="" data-mini="true" />
</div> <!-- fieldcontain name -->
<div data-role="fieldcontain">
<label for="telno" class="select" style="width: 100%;"><span id="teltxt">Telefon</span>: </label>
<label for="telno" style="width: 100%;"><span id="teltxt">Telefon</span>: </label>
<input type="text" id="telno" class="reservationinputfield whiteinput" value="" data-mini="true" />
</div> <!-- fieldcontain name -->
<div data-role="fieldcontain">
<label for="remark" class="select" style="width: 100%;"><span id="remarktxt">Notiz</span>: </label>
<label for="remark" style="width: 100%;"><span id="remarktxt">Notiz</span>: </label>
<input type="text" id="remark" class="reservationinputfield whiteinput" value="" data-mini="true" />
</div> <!-- fieldcontain name -->
@ -1015,16 +977,28 @@ function bindRoomSelect(roomsectionid,roomselectid,tablesectionid,tableselectid,
<br>
<div id="resbytimes" data-role="collapsible" data-theme="c" data-content-theme="c" data-collapsed="false">
<h3><span id="resbytimesheadertxt">Reservierungen nach Z.</span></h3>
<table id="dayschedule"></table>
<div id="reshtmlarea"></div>
<div id="resoverview" data-role="collapsible" data-theme="c" data-content-theme="c" data-collapsed="false">
<h3><span id="resbytimesofdaytxt">Reservierungen</span> <span id="dateofreservations">Datum</span></h3>
<div id="restablearea"></div>
<div id="timeperiodsliderform">
<p><form>
<div data-role="rangeslider">
<label for="range-starthour"><span class="timeperiodslider">Zeitr.</span>:</label>
<input name="range-starthour" id="range-starthour" min="0" max="23" value="10" type="range">
<label for="range-endhour"><span class="timeperiodslider">Zeitr.</span>:</label>
<input name="range-endhour" id="range-endhour" min="1" max="24" value="18" type="range">
</div>
</form>
</div>
<p /><button type="submit" data-theme="f" data-icon="check" id="printsummary">Drucken</button></div>
</div> <!-- resbytimes -->
<div id="resbytables" data-role="collapsible" data-theme="c" data-content-theme="c" data-collapsed="false">
<h3><span id="resbytablesheadertxt">Reservierungen nach T.</span></h3>
<table id="tableschedule"></table>
</div> <!-- resbytimes -->
</div>
<div data-role="footer" data-theme="b" id="thefooterr" style="background-color:black;">
@ -1051,12 +1025,11 @@ function bindRoomSelect(roomsectionid,roomselectid,tablesectionid,tableselectid,
<label for="emailtofield"><span id="sendemailtotxt">An</span>:</label>
<input type="text" id="emailtofield" style="background-color: white; color:black;" value="" data-mini="true" disabled />
</div>
<p>
<p />
<fieldset class="ui-grid-a" id="changecancelarea">
<div class="ui-block-a"><button type="submit" data-theme="d" class="cancelButton" data-icon="back" id="cancelemailsentbtn"><span id="cancelemailbtntxt">Nicht senden</span></button></div>
<div class="ui-block-b"><button type="submit" data-theme="f" class="applyButton" data-icon="check" id="sendemailbtn"><span id="sendemailtxtbtn">Senden</span></button></div>
</fieldset>
</p>
</form>
</div> <!-- content -->
</div> <!-- page for email sending -->
@ -1075,13 +1048,15 @@ function bindRoomSelect(roomsectionid,roomselectid,tablesectionid,tableselectid,
<p><span id="clastcreatortxt">Letzte Änderung von</span>: <span id="clastcreator"></span></p>
<p><span id="clastchangetxt">zuletzt geändert</span>: <span id="clastchanged"></span></p>
<span id="cstarttimetxt" class="headerformat">Start-Uhrzeit</span>:
<div data-role="fieldcontain">
<label for="cdatepicker" style="width:200px;"><span id=cdatetxt>Datum</span>: </label>
<label for="cdatepicker" ><span id=cdatetxt>Datum</span>: </label>
<input data-role="date" data-inline="true" type="text" id="cdatepicker" data-theme="d" >
</div>
<label for="ctimefieldse" class="select" style="width:200px;"><span id="cstarttimetxt">Start-Uhrzeit</span>: </label>
<select name="ctimefieldse" id="ctimefieldse" >
<label for="ctimefieldse" ><span id="cstarttimehourtxt">Start-Uhrzeit</span>: </label>
<select name="ctimefieldse" id="ctimefieldse" data-theme="a" >
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
@ -1110,8 +1085,21 @@ function bindRoomSelect(roomsectionid,roomselectid,tablesectionid,tableselectid,
</div> <!-- fieldcontain for start time -->
<div data-role="fieldcontain">
<label for="cdurationse" class="select" style="width:200px;"><span id="cdurationtxt">Dauer (Stunden)</span>: </label>
<select name="cdurationse" id="cdurationse" >
<label for="ctimefieldmin"><span id=cdatemintxt>Minute</span>: </label>
<select name="ctimefieldmin" id="ctimefieldmin" data-theme="a">
<option value="0">0</option>
<option value="15">15</option>
<option value="30">30</option>
<option value="45">45</option>
</select>
</div>
<span id="cdurationheadertxt" class="headerformat">Dauer</span>:
<div data-role="fieldcontain">
<label for="cdurationse"><span id="cdurationhourtxt">Stunden</span>: </label>
<select name="cdurationse" id="cdurationse" data-theme="a" >
<option value="0">0</option>
<option value="1">1</option>
<option value="2" selected>2</option>
<option value="3">3</option>
@ -1125,27 +1113,24 @@ function bindRoomSelect(roomsectionid,roomselectid,tablesectionid,tableselectid,
<option value="11">11</option>
<option value="12">12</option>
</select>
</div> <!-- fieldcontain for duration -->
</div> <!-- fieldcontain for duration hour -->
<div data-role="fieldcontain">
<label for="cnoofguestse" class="select" style="width:200px;"><span id="cpersonstxt">Anzahl Gäste</span>: </label>
<select name="cnoofguestse" id="cnoofguestse" >
<option value="1">1</option>
<option value="2" selected>2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11-15</option>
<option value="15">15-20</option>
<option value="20">20-30</option>
<option value="30">30-40</option>
<option value="40">40+</option>
<label for="cdurationmin"><span id="cdurationmintxt">Minuten</span>: </label>
<select name="cdurationmin" id="cdurationmin" data-theme="a" >
<option value="0" selected>0</option>
<option value="15">15</option>
<option value="30">30</option>
<option value="45">45</option>
</select>
</div> <!-- fieldcontain for duration min -->
<span id="guestheadertxt" class="headerformat">Gästeinformation</span>:
<div data-role="fieldcontain">
<label for="cnoofguestse"><span id="cpersonstxt">Anzahl Gäste</span>: </label>
<input data-wrapper-class="shortfield" type="text" name="cnoofguestse" id="cnoofguestse" class="whiteinput" />
</div> <!-- fieldcontain for number of guests -->
<div data-role="fieldcontain">

View File

@ -14,7 +14,7 @@
<link rel="stylesheet" href="php/3rdparty/jquery.mobile-1.4.0.min.css" type="text/css" />
<script src="php/3rdparty/jquery-2.0.3.min.js"></script>
<script src="php/3rdparty/jquery.mobile-1.4.0.min.js"></script>
<script src="utilities.js?v=1.5.33"></script>
<script src="utilities.js?v=1.6.1"></script>
</head>
<body>
@ -30,7 +30,7 @@ var SUM_REASON = ["Grund","Reason","Razón"];
var SUM_CANCEL_ITEM = ["Stornierung","Cancellation","Revocación"];
var SUM_CANCELLATION_OK = ["Die Zahlung wurde in OrderSprinter storniert.","The payment was cancelled in OrderSprinter.","El pago se canceló en OrderSprinter."];
var nextpage = "paydesk.html?version=1.5.33";
var nextpage = "paydesk.html?version=1.6.1";
var lang;
@ -84,10 +84,10 @@ function setLanguage(language) {
if (nextPage == "p") {
$("#nextpagebtntxt").html(SUM_TO_PAYMENT[lang]);
nextpage = "paydesk.html?t=" + tableid + "&version=1.5.33";
nextpage = "paydesk.html?t=" + tableid + "&version=1.6.1";
} else {
$("#nextpagebtntxt").html(SUM_TO_ORDER[lang]);
nextpage = "waiter.html?version=1.5.33";
nextpage = "waiter.html?version=1.6.1";
}
var txt = "<table class='viewtable'>";

View File

@ -5,7 +5,7 @@
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="author" content="Stefan Pichel">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.33">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.6.1">
<link rel="stylesheet" href="php/contenthandler.php?module=admin&command=getmobilecss" />
<link rel="stylesheet" href="php/3rdparty/orderstyle/jquery.mobile.icons.min.css" />
@ -13,7 +13,7 @@
<link rel="stylesheet" href="php/3rdparty/jquery.mobile-1.4.0.min.css" type="text/css" />
<script src="php/3rdparty/jquery-2.0.3.min.js"></script>
<script src="php/3rdparty/jquery.mobile-1.4.0.min.js"></script>
<script src="utilities.js?v=1.5.33"></script>
<script src="utilities.js?v=1.6.1"></script>
<style>
#tableWithPreparedProds,#tableWithDeliveredEntries,#headertableToCook

View File

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="author" content="Stefan Pichel">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.33">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.6.1">
<link rel="stylesheet" href="php/contenthandler.php?module=admin&command=getmobilecss" />
<link rel="stylesheet" href="php/3rdparty/orderstyle/jquery.mobile.icons.min.css" />
@ -13,7 +13,7 @@
<script src="php/3rdparty/jquery-1.11.3.min.js"></script>
<script src="php/3rdparty/jquery.mobile-1.4.5.min.js"></script>
<script src="utilities.js?v=1.5.33"></script>
<script src="utilities.js?v=1.6.1"></script>
<link rel="stylesheet" href="php/3rdparty/jqueryui1-11-4/jquery-ui.min.css" />
<script src="php/3rdparty/jqueryui1-11-4/jquery-ui.min.js"></script>

View File

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="author" content="Stefan Pichel">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.33">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.6.1">
<link rel="stylesheet" href="php/contenthandler.php?module=admin&command=getmobilecss" />
<link rel="stylesheet" href="php/3rdparty/orderstyle/jquery.mobile.icons.min.css" />
@ -13,7 +13,7 @@
<script src="php/3rdparty/jquery-1.11.3.min.js"></script>
<script src="php/3rdparty/jquery.mobile-1.4.5.min.js"></script>
<script src="utilities.js?v=1.5.33"></script>
<script src="utilities.js?v=1.6.1"></script>
<link rel="stylesheet" href="php/3rdparty/jqueryui1-11-4/jquery-ui.min.css" />
<script src="php/3rdparty/jqueryui1-11-4/jquery-ui.min.js"></script>

View File

@ -345,6 +345,11 @@ function createLabelWithOption(prefix,id,aLabel,displayedName,allValues,theValue
return text;
}
function pad(num, size) {
var s = "000000000" + num;
return s.substr(s.length-size);
}
var g_units_arr = [
{ text: "Stück", value: 0, id: "piece", longtext: "Stück"},
{ text: "Eingabe", value: 1, id: "input", longtext: "Preiseingabe"},

File diff suppressed because one or more lines are too long

View File

@ -4,7 +4,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="author" content="Stefan Pichel">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.33">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.6.1">
<link rel="stylesheet" href="css/ospage.css" />
<link rel="stylesheet" href="css/tablepanel.css" />
@ -16,7 +16,7 @@
<link rel="stylesheet" href="css/extraspanel.css" />
<link rel="stylesheet" href="css/actpanel.css" />
<link rel="stylesheet" href="css/paypanel.css" />
<link rel="stylesheet" href="css/numfield.css?v=1.5.33" />
<link rel="stylesheet" href="css/numfield.css?v=1.6.1" />
<link rel="stylesheet" href="php/3rdparty/jqueryui1-12-0/jquery-ui.min.css" />
<script src="php/3rdparty/jquery-2.2.4.min.js"></script>