OrderSprinter 1.5.18

This commit is contained in:
Geno 2020-11-19 23:12:18 +01:00
parent 09b4fb7110
commit a8d14ae349
38 changed files with 349 additions and 143 deletions

View File

@ -9,8 +9,8 @@
<meta http-equiv="content-type" content="text/html; charset=utf-8"> <meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="author" content="Stefan Pichel"> <meta name="author" content="Stefan Pichel">
<link rel="stylesheet" href="css/gueststyle.css?v=1.5.17" /> <link rel="stylesheet" href="css/gueststyle.css?v=1.5.18" />
<link rel="stylesheet" href="php/3rdparty/orderstyle/orderstyle.min.css?v=1.5.17" /> <link rel="stylesheet" href="php/3rdparty/orderstyle/orderstyle.min.css?v=1.5.18" />
<link rel="stylesheet" href="php/3rdparty/orderstyle/jquery.mobile.icons.min.css" /> <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" /> <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-1.11.3.min.js"></script>
@ -105,7 +105,7 @@
<div data-role="footer" data-theme="b" id="thefooter1"> <div data-role="footer" data-theme="b" id="thefooter1">
<div class="ui-grid-a"> <div class="ui-grid-a">
<div class="ui-block-a">&nbsp;&nbsp;OrderSprinter</div> <div class="ui-block-a">&nbsp;&nbsp;OrderSprinter</div>
<div class="ui-block-b grid_right" id="versioninfo">1.5.17&nbsp;&nbsp;</div> <div class="ui-block-b grid_right" id="versioninfo">1.5.18&nbsp;&nbsp;</div>
</div><!-- /grid-a --> </div><!-- /grid-a -->
</div> </div>
</div> </div>

View File

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

View File

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

Binary file not shown.

View File

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

View File

@ -5,7 +5,7 @@
<meta http-equiv="content-type" content="text/html; charset=utf-8"> <meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="author" content="Stefan Pichel"> <meta name="author" content="Stefan Pichel">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.17"> <link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.18">
<link rel="stylesheet" href="php/contenthandler.php?module=admin&command=getmobilecss" /> <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/orderstyle/jquery.mobile.icons.min.css" />

View File

@ -11,6 +11,7 @@ function createProdTableHeaderLine() {
"<th id=shortnameheader class='prodheader'>Kurzname<th>Preis (A)" + "<th id=shortnameheader class='prodheader'>Kurzname<th>Preis (A)" +
"<th class='prodheader'>Preis (B)" + "<th class='prodheader'>Preis (B)" +
"<th class='prodheader'>Preis (C)" + "<th class='prodheader'>Preis (C)" +
"<th class='prodheader'>Barcode" +
"<th class='prodheader'>Einheit" + "<th class='prodheader'>Einheit" +
"<th class='prodheader'>Anzeige" + "<th class='prodheader'>Anzeige" +
"<th class='prodheader'>Tage" + "<th class='prodheader'>Tage" +
@ -30,7 +31,7 @@ function ident(depth) {
return txt; return txt;
} }
function newProduct(id, longname, shortname,priceA,priceB,priceC,unit,display,days,tax,taxaustria,amount,available,audio,favorite) { function newProduct(id, longname, shortname,priceA,priceB,priceC,barcode,unit,display,days,tax,taxaustria,amount,available,audio,favorite) {
var product = { var product = {
id:id, id:id,
longname:longname, longname:longname,
@ -38,6 +39,7 @@ function newProduct(id, longname, shortname,priceA,priceB,priceC,unit,display,da
priceA: priceA, priceA: priceA,
priceB: priceB, priceB: priceB,
priceC: priceC, priceC: priceC,
barcode: barcode,
unit: unit, unit: unit,
display: display, display: display,
days: days, days: days,
@ -57,6 +59,7 @@ function newProduct(id, longname, shortname,priceA,priceB,priceC,unit,display,da
+ "<td><input type='text' class='prodpriceA'></input>" + "<td><input type='text' class='prodpriceA'></input>"
+ "<td><input type='text' class='prodpriceB'></input>" + "<td><input type='text' class='prodpriceB'></input>"
+ "<td><input type='text' class='prodpriceC'></input>" + "<td><input type='text' class='prodpriceC'></input>"
+ "<td><input type='text' class='barcode'></input>"
+ "<td><input type='text' class='produnit'></input>" + "<td><input type='text' class='produnit'></input>"
+ "<td><input type='text' class='proddisplay'></input>" + "<td><input type='text' class='proddisplay'></input>"
+ "<td><input type='text' class='proddays'></input>" + "<td><input type='text' class='proddays'></input>"
@ -76,6 +79,7 @@ function newProduct(id, longname, shortname,priceA,priceB,priceC,unit,display,da
$("#prodleaf_" + this.id + " input.prodpriceA").val(this.priceA); $("#prodleaf_" + this.id + " input.prodpriceA").val(this.priceA);
$("#prodleaf_" + this.id + " input.prodpriceB").val(this.priceB); $("#prodleaf_" + this.id + " input.prodpriceB").val(this.priceB);
$("#prodleaf_" + this.id + " input.prodpriceC").val(this.priceC); $("#prodleaf_" + this.id + " input.prodpriceC").val(this.priceC);
$("#prodleaf_" + this.id + " input.barcode").val(this.barcode);
$("#prodleaf_" + this.id + " input.produnit").val(this.unit); $("#prodleaf_" + this.id + " input.produnit").val(this.unit);
$("#prodleaf_" + this.id + " input.proddisplay").val(this.display); $("#prodleaf_" + this.id + " input.proddisplay").val(this.display);
if (this.days == '0123456') { if (this.days == '0123456') {
@ -251,6 +255,8 @@ function newProduct(id, longname, shortname,priceA,priceB,priceC,unit,display,da
+ createInputField("prodpriceB_" + this.id,"prodpriceB_input_" + this.id,"priceB") + createInputField("prodpriceB_" + this.id,"prodpriceB_input_" + this.id,"priceB")
+ createInputField("prodpriceC_" + this.id,"prodpriceC_input_" + this.id,"priceC") + createInputField("prodpriceC_" + this.id,"prodpriceC_input_" + this.id,"priceC")
+ createInputField("prodbarcode_" + this.id,"prodbarcode_input_" + this.id,"barcode")
+ "<div id=unitcont_" + this.id + ">" + "<div id=unitcont_" + this.id + ">"
+ this.createUnitField("produnit_input_" + this.id) + this.createUnitField("produnit_input_" + this.id)
+ "</div>" + "</div>"
@ -310,6 +316,10 @@ function newProduct(id, longname, shortname,priceA,priceB,priceC,unit,display,da
$("#prodpriceA_" + this.id).html(PROD_PRICE[lang] + ' (A)'); $("#prodpriceA_" + this.id).html(PROD_PRICE[lang] + ' (A)');
$("#prodpriceB_" + this.id).html(PROD_PRICE[lang] + ' (B)'); $("#prodpriceB_" + this.id).html(PROD_PRICE[lang] + ' (B)');
$("#prodpriceC_" + this.id).html(PROD_PRICE[lang] + ' (C)'); $("#prodpriceC_" + this.id).html(PROD_PRICE[lang] + ' (C)');
$("#prodbarcode_" + this.id).html(PROD_BARCODE[lang]);
$("#prodbarcode_input_" + this.id).val(this.barcode);
$("#produnit_" + this.id).html(PROD_UNIT[lang]); $("#produnit_" + this.id).html(PROD_UNIT[lang]);
$("#proddisplay_" + this.id).html(PROD_DISPLAY[lang]); $("#proddisplay_" + this.id).html(PROD_DISPLAY[lang]);
$("#proddays_" + this.id).html(PROD_DAYS[lang]); $("#proddays_" + this.id).html(PROD_DAYS[lang]);

View File

@ -4,7 +4,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="content-type" content="text/html; charset=utf-8"> <meta http-equiv="content-type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.17"> <link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.18">
<link rel="stylesheet" href="php/contenthandler.php?module=admin&command=getmobilecss" /> <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/orderstyle/jquery.mobile.icons.min.css" />

View File

@ -9,8 +9,8 @@
<meta http-equiv="content-type" content="text/html; charset=utf-8"> <meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="author" content="Stefan Pichel"> <meta name="author" content="Stefan Pichel">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.17"> <link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.18">
<link rel="stylesheet" type="text/css" href="css/numfield.css?v=1.5.17"> <link rel="stylesheet" type="text/css" href="css/numfield.css?v=1.5.18">
<link rel="stylesheet" href="php/3rdparty/orderstyle/orderstyle.min.css" /> <link rel="stylesheet" href="php/3rdparty/orderstyle/orderstyle.min.css" />
<link rel="stylesheet" href="php/3rdparty/orderstyle/jquery.mobile.icons.min.css" /> <link rel="stylesheet" href="php/3rdparty/orderstyle/jquery.mobile.icons.min.css" />
@ -229,7 +229,7 @@ function handleResultOfInstallCheck(is_installed) {
if (is_installed == "Yes") { if (is_installed == "Yes") {
useInstallation(); useInstallation();
} else { } else {
setTimeout(function(){document.location.href = "install.html?v=1.5.17"},500); setTimeout(function(){document.location.href = "install.html?v=1.5.18"},500);
} }
} }

View File

@ -847,19 +847,19 @@ El servicio web OrderSprinter no requiere una conexión a Internet. Sin embargo,
<tr> <tr>
<td id="db" rowspan=7>Datenbank <td id="db" rowspan=7>Datenbank
<td id="dbserver" align="right">Datenbank-Server:</td> <td id="dbserver" align="right">Datenbank-Server:</td>
<td><input id="db_host" type="text" size="30" maxlength="30" placeholder="localhost"></td> <td><input id="db_host" type="text" size="30" maxlength="70" placeholder="localhost"></td>
</tr> </tr>
<tr> <tr>
<td id="dbname" align="right">Datenbank-Name:</td> <td id="dbname" align="right">Datenbank-Name:</td>
<td><input id="db_name" type="text" size="30" maxlength="30"></td> <td><input id="db_name" type="text" size="30" maxlength="70"></td>
<tr> <tr>
<tr> <tr>
<td id="dbusertxt" align="right">Datenbank-Benutzer:</td> <td id="dbusertxt" align="right">Datenbank-Benutzer:</td>
<td><input id="dbuser" type="text" size="30" maxlength="30"></td> <td><input id="dbuser" type="text" size="30" maxlength="70"></td>
</tr> </tr>
<tr> <tr>
<td id="dbpassword" align="right">Datenbank-Passwort:</td> <td id="dbpassword" align="right">Datenbank-Passwort:</td>
<td><input id="dbpass" type="password" size="30" maxlength="30"></td> <td><input id="dbpass" type="password" size="30" maxlength="70"></td>
</tr> </tr>
<tr> <tr>
<td id="prefix" align="right">Präfix für die Tabellen:</td> <td id="prefix" align="right">Präfix für die Tabellen:</td>
@ -909,7 +909,7 @@ El servicio web OrderSprinter no requiere una conexión a Internet. Sin embargo,
<tr id=updateline> <tr id=updateline>
<td>&nbsp;</td> <td>&nbsp;</td>
<td align=center> <td align=center>
<button id="updatebtn">Update -> 1.5.17</button> <button id="updatebtn">Update -> 1.5.18</button>
<span id="updateinprogresstxt" style="display:none;">Update... bitte warten.</span> <span id="updateinprogresstxt" style="display:none;">Update... bitte warten.</span>
</td> </td>
<td>&nbsp;</td> <td>&nbsp;</td>

View File

@ -345,7 +345,7 @@ return;
$companyinfo = $_POST["companyinfo"]; $companyinfo = $_POST["companyinfo"];
$restaurantmode = $_POST["restaurantmode"]; $restaurantmode = $_POST["restaurantmode"];
$cancelcode = $_POST["cancelcode"]; $cancelcode = $_POST["cancelcode"];
$printpass = $_POST["printpass"]; $printpass = md5($_POST["printpass"]);
$defaultview = $_POST["defaultview"]; $defaultview = $_POST["defaultview"];
$basedb->changeInitialConfig($pdo,$restaurantmode,$companyinfo,$defaultview,$cancelcode,$printpass); $basedb->changeInitialConfig($pdo,$restaurantmode,$companyinfo,$defaultview,$cancelcode,$printpass);
@ -389,7 +389,7 @@ $zones[] = $timezone_identifiers[$i];
echo json_encode($zones); echo json_encode($zones);
} else if ($command == 'update') { } else if ($command == 'update') {
set_time_limit(60*30); set_time_limit(60*30);
$installerVersion = "1.5.17"; $installerVersion = "1.5.18";
$admin = new InstallAdmin(); $admin = new InstallAdmin();
$pdo = $admin->openDbAndReturnPdo($_POST['host'],$_POST['db'],$_POST['user'],$_POST['password']); $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 http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="author" content="Stefan Pichel"> <meta name="author" content="Stefan Pichel">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.17"> <link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.18">
<link rel="stylesheet" href="php/contenthandler.php?module=admin&command=getmobilecss" /> <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/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" /> <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-2.0.3.min.js"></script>
<script src="php/3rdparty/jquery.mobile-1.4.0.min.js"></script> <script src="php/3rdparty/jquery.mobile-1.4.0.min.js"></script>
<script src="utilities.js?v=1.5.17"></script> <script src="utilities.js?v=1.5.18"></script>
<script src="kitchenbar.js?v=1.5.17"></script> <script src="kitchenbar.js?v=1.5.18"></script>
<style> <style>
#tableWithEntriesToCook,#tableWithCookedEntries,#headertableToCook #tableWithEntriesToCook,#tableWithCookedEntries,#headertableToCook

View File

@ -5,7 +5,7 @@
<meta http-equiv="content-type" content="text/html; charset=utf-8"> <meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="author" content="Stefan Pichel"> <meta name="author" content="Stefan Pichel">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.17"> <link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.18">
<link rel="stylesheet" href="php/contenthandler.php?module=admin&command=getmobilecss" /> <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/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" /> <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-1.11.3.min.js"></script>
<script src="php/3rdparty/jquery.mobile-1.4.5.min.js"></script> <script src="php/3rdparty/jquery.mobile-1.4.5.min.js"></script>
<script src="utilities.js?v=1.5.17"></script> <script src="utilities.js?v=1.5.18"></script>
<script src="elements/tablemap.js?v=1.5.17"></script> <script src="elements/tablemap.js?v=1.5.18"></script>
<script src="elements/roommap.js?v=1.5.17"></script> <script src="elements/roommap.js?v=1.5.18"></script>
<script src="elements/groundplan.js?v=1.5.17"></script> <script src="elements/groundplan.js?v=1.5.18"></script>
<link href="php/3rdparty/hayageek_uploadfile.css" rel="stylesheet"> <link href="php/3rdparty/hayageek_uploadfile.css" rel="stylesheet">
<script src="php/3rdparty/hayageek_jquery_uploadfile.js"></script> <script src="php/3rdparty/hayageek_jquery_uploadfile.js"></script>
@ -408,6 +408,7 @@ var MAN_ASK_TABLECODE = ["Abfrage Tischcode","Require input of table code","Preg
var MAN_GUEST_TIMEOUT = ["Timeout (Min)","Timeout (min)","Timeout (min)"]; var MAN_GUEST_TIMEOUT = ["Timeout (Min)","Timeout (min)","Timeout (min)"];
var MAN_GUESTTIMEOUT_HINT = ["Ein Timeout von 0 bedeutet, dass kein Timeout abläuft.","A timeout value of 0 means that there is no timeout at all.","Un valor de timeout de 0 significa que no hay ningún timeout."]; var MAN_GUESTTIMEOUT_HINT = ["Ein Timeout von 0 bedeutet, dass kein Timeout abläuft.","A timeout value of 0 means that there is no timeout at all.","Un valor de timeout de 0 significa que no hay ningún timeout."];
var MAN_RESTAURANT_MODE = ["Restaurantmodus","Restaurant mode","Usar para restaurantes"]; var MAN_RESTAURANT_MODE = ["Restaurantmodus","Restaurant mode","Usar para restaurantes"];
var MAN_USE_BARCODE = ["Barcodeeingabe","Input by barcode","Usar Codigo de barras"];
var MAN_REST_MODE_HINT = ["Hinweis: Wird der Restaurantmodus auf <i>Nein</i> gesetzt, wird in der <b>Desktopansicht</b> die Tischauswahl deaktiviert. Alle Produkte werden als Außer-Haus-Verkauf gebucht.","Hint: If the restautant mode is set to <i>no</i> in the <b>desktop view</b> the table selection is deactivated and all products are ordered as <i>to-go</i>","Nota: Si el modus del restaurante es configurado a <i>no</i> en la vista de <b>Desktop</b> la selección de las mesas es deactivada y todos los productos son ordenados como <i>to-go</i>"]; var MAN_REST_MODE_HINT = ["Hinweis: Wird der Restaurantmodus auf <i>Nein</i> gesetzt, wird in der <b>Desktopansicht</b> die Tischauswahl deaktiviert. Alle Produkte werden als Außer-Haus-Verkauf gebucht.","Hint: If the restautant mode is set to <i>no</i> in the <b>desktop view</b> the table selection is deactivated and all products are ordered as <i>to-go</i>","Nota: Si el modus del restaurante es configurado a <i>no</i> en la vista de <b>Desktop</b> la selección de las mesas es deactivada y todos los productos son ordenados como <i>to-go</i>"];
var MAN_SPECIAL_SETTINGS_TXT = ["Einstellungen für spezielle Abläufe:","Settings for special workflows:","Configuración para workflows muy escpeciales:"]; var MAN_SPECIAL_SETTINGS_TXT = ["Einstellungen für spezielle Abläufe:","Settings for special workflows:","Configuración para workflows muy escpeciales:"];
var MAN_DASH_SECTION_TXT = ["Dashboard:","Dashboard:","Dashboard:"]; var MAN_DASH_SECTION_TXT = ["Dashboard:","Dashboard:","Dashboard:"];
@ -472,7 +473,7 @@ var MAN_NO_NEW_UPD_VERSION = ["Update nicht möglich (Version auf dem Server ist
var MAN_UPDATE_BTN_CLICK = ["Das Update startet und kann einige Minuten dauern. Bitte bestätigen diese Meldung und warten Sie, bis dass ein Hinweistext über den Abschluss des Updates informiert.","The update will start and may take a few minutes. Please confirm this message and wait until a message informs you that the update is complete.","La actualización se iniciará y puede tardar unos minutos. Confirme este mensaje y espere a que un mensaje le informe de que la actualización ha finalizado."]; var MAN_UPDATE_BTN_CLICK = ["Das Update startet und kann einige Minuten dauern. Bitte bestätigen diese Meldung und warten Sie, bis dass ein Hinweistext über den Abschluss des Updates informiert.","The update will start and may take a few minutes. Please confirm this message and wait until a message informs you that the update is complete.","La actualización se iniciará y puede tardar unos minutos. Confirme este mensaje y espere a que un mensaje le informe de que la actualización ha finalizado."];
var lang = 0; 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]; 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];
var numberOfClosings = 0; var numberOfClosings = 0;
@ -616,7 +617,8 @@ var generalValuesSettings = [
["showpickhelp",MAN_SHOWPICKHELP[lang],"s",59], ["showpickhelp",MAN_SHOWPICKHELP[lang],"s",59],
["showpayments",MAN_SHOWPAYMENTS[lang],"s",60], ["showpayments",MAN_SHOWPAYMENTS[lang],"s",60],
["cbirdfolder",MAN_CBIRD_FOLDER[lang],"i",0,""], ["cbirdfolder",MAN_CBIRD_FOLDER[lang],"i",0,""],
["billprintjobs",MAN_BILLPRINTJOBS[lang],"s",61] ["billprintjobs",MAN_BILLPRINTJOBS[lang],"s",61],
["usebarcode",MAN_USE_BARCODE[lang],"s",62],
]; ];
var predef = ""; var predef = "";
@ -957,6 +959,7 @@ function insertGeneralConfigItems(configResult) {
$("#partOfBeepCooked").html(createYesNo("beepcooked",MAN_BEEP_COOKED, values.beepcooked)); $("#partOfBeepCooked").html(createYesNo("beepcooked",MAN_BEEP_COOKED, values.beepcooked));
$("#partOfBeepOrdered").html(createYesNo("beepordered",MAN_BEEP_ORDERED, values.beepordered)); $("#partOfBeepOrdered").html(createYesNo("beepordered",MAN_BEEP_ORDERED, values.beepordered));
$("#partOfRestaurantmode").html(createYesNo("restaurantmode",MAN_RESTAURANT_MODE, values.restaurantmode)); $("#partOfRestaurantmode").html(createYesNo("restaurantmode",MAN_RESTAURANT_MODE, values.restaurantmode));
$("#partOfUsebarcode").html(createYesNo("usebarcode",MAN_USE_BARCODE, values.usebarcode));
$("#partOfDblog").html(createYesNo("dblog",MAN_DBLOG, values.dblog)); $("#partOfDblog").html(createYesNo("dblog",MAN_DBLOG, values.dblog));
$("#partOfPrintpickups").html(createPickupConfigPart(values.printpickups)); $("#partOfPrintpickups").html(createPickupConfigPart(values.printpickups));
$("#partOfBillprintjobs").html(createBillprintjobsConfigPart(values.billprintjobs)); $("#partOfBillprintjobs").html(createBillprintjobsConfigPart(values.billprintjobs));
@ -1079,6 +1082,7 @@ function insertGeneralConfigItems(configResult) {
generalVals[59] = values.showpickhelp; generalVals[59] = values.showpickhelp;
generalVals[60] = values.showpayments; generalVals[60] = values.showpayments;
generalVals[61] = values.billprintjobs; generalVals[61] = values.billprintjobs;
generalVals[62] = values.usebarcode;
defaulttmp = values.defaulttmp; defaulttmp = values.defaulttmp;
@ -1536,7 +1540,7 @@ function initRestoreFileUpload() {
} else { } else {
alert("Import war erfolgreich."); alert("Import war erfolgreich.");
setTimeout(function(){ setTimeout(function(){
document.location.href = "index.html?v=1.5.17"; document.location.href = "index.html?v=1.5.18";
},250); },250);
} }
}, },
@ -1945,6 +1949,7 @@ function binding() {
$("#update_btn").off("click").on("click", function (e) { $("#update_btn").off("click").on("click", function (e) {
e.stopImmediatePropagation(); e.stopImmediatePropagation();
e.preventDefault(); e.preventDefault();
if (newerversionavailable == 0) { if (newerversionavailable == 0) {
alert(MAN_NO_NEW_UPD_VERSION[lang] + version); alert(MAN_NO_NEW_UPD_VERSION[lang] + version);
} else { } else {
@ -2079,24 +2084,33 @@ function handleUpdateCheckResult(answer) {
totalLines--; totalLines--;
$("#sliderarea").show();
for (var index=0;index<totalLines;index++) {
var data = {
fileindex: index,
millis: getMillis(),
totalLines: totalLines
};
doAjax("GET","php/updatehandler.php?command=replace",data,handleUpdateReplace,"Replace problem",null,false);
}
$("#sliderarea").hide();
var millis=getMillis();
setTimeout(function(){ setTimeout(function(){
document.location.href = "install.html?v=1.5.17&mode=onlyupdate&n=" + millis; $("#sliderarea").show();
},250); },250);
document.location.href = "install.html?v=1.5.17&mode=onlyupdate&n=" + millis;
updateIndex = 0;
updateTotalLines = totalLines;
updateOneSingleFile();
}
var updateIndex = 0;
var updateTotalLines = 0;
function updateOneSingleFile() {
if (updateIndex < updateTotalLines) {
var data = {
fileindex: updateIndex,
millis: getMillis(),
totalLines: updateTotalLines
};
doAjax("GET","php/updatehandler.php?command=replace",data,handleUpdateReplace,"Replace problem",true);
} else {
setTimeout(function(){
$("#sliderarea").hide();
var millis=getMillis();
document.location.href = "install.html?v=1.5.18&mode=onlyupdate&n=" + millis;
},250);
}
} }
function handleUpdateReplace(answer) { function handleUpdateReplace(answer) {
@ -2110,9 +2124,13 @@ function handleUpdateReplace(answer) {
var totalLines = parseInt(answer.msg.totalLines); var totalLines = parseInt(answer.msg.totalLines);
var porc = Math.round(index * 100 / totalLines); var porc = Math.round(index * 100 / totalLines);
setTimeout(function(){
$("#updatestatus").html(porc + "% (" + toHtml(file) + ")"); $("#updatestatus").html(porc + "% (" + toHtml(file) + ")");
$("#updateslider").val(porc); $("#updateslider").val(porc);
$("#updateslider").slider("refresh"); $("#updateslider").slider("refresh");
},250);
updateIndex++;
updateOneSingleFile();
} }
function getPrinterInstance() { function getPrinterInstance() {
@ -3547,6 +3565,8 @@ $(document).on("pageinit", "#admin-page", function () {
<div id="partOfRestaurantmode"></div> <div id="partOfRestaurantmode"></div>
<i id=restmodehint style="padding-left: 50px;padding-right: 50px;">Hinweis: siehe Anleitung</i> <i id=restmodehint style="padding-left: 50px;padding-right: 50px;">Hinweis: siehe Anleitung</i>
<div id="partOfUsebarcode"></div>
<div data-role="fieldcontain"> <div data-role="fieldcontain">
<label for="companyinfo">Betriebsinfo:</label> <label for="companyinfo">Betriebsinfo:</label>
<textarea cols="40" rows="8" name="companyinfo" id="companyinfo" class="genConfigEl" style="background-color:#FFFFFF;color:black;"></textarea> <textarea cols="40" rows="8" name="companyinfo" id="companyinfo" class="genConfigEl" style="background-color:#FFFFFF;color:black;"></textarea>
@ -3688,7 +3708,7 @@ $(document).on("pageinit", "#admin-page", function () {
<br><b><u><span id="generalprintsectiontxt">Drucken allg.:</span></u></b><br><br> <br><b><u><span id="generalprintsectiontxt">Drucken allg.:</span></u></b><br><br>
<div id="partOfPayPrintType"></div> <div id="partOfPayPrintType" style="display:none;"></div>
<div data-role="fieldcontain"> <div data-role="fieldcontain">
<label for="printpass">Printcode:</label> <label for="printpass">Printcode:</label>
<input type="password" value="" data-mini="true" id="printpass" class="genConfigEl"/> <input type="password" value="" data-mini="true" id="printpass" class="genConfigEl"/>
@ -4094,7 +4114,7 @@ $(document).on("pageinit", "#admin-page", function () {
<h3>Produkteinträge</h3> <h3>Produkteinträge</h3>
<p>Ein Produkteintrag hat in der einfachsten Schreibweise folgende Syntax: <i>Produktname; Preis</i>. Sollen jedoch weitere Eigenschaften <p>Ein Produkteintrag hat in der einfachsten Schreibweise folgende Syntax: <i>Produktname; Preis</i>. Sollen jedoch weitere Eigenschaften
festgelegt werden, können diese hinter einem Doppelkreuz per Semikolon getrennt angegeben werden: <i>Produktname; Preis # Eigenschaft1:Wert1; Eigenschaft2: Wert2</i>. festgelegt werden, können diese hinter einem Doppelkreuz per Semikolon getrennt angegeben werden: <i>Langname des Produkts; Preis # Eigenschaft1:Wert1; Eigenschaft2: Wert2</i>.
<p>Folgende Eigenschaften können angegeben werden: <p>Folgende Eigenschaften können angegeben werden:
@ -4124,6 +4144,7 @@ $(document).on("pageinit", "#admin-page", function () {
<li><b>Tage</b>: Man kann die Tage einschränken, an denen ein Produkt bestellt werden kann. 0=Sonntag, 1=Montag, usw. bis 6=Samstag. Wird ein Produkt an allen Tagen verkauft, ist keine Angabe erforderlich. Ein Produkt, welches nur an Wochenenden verkauft wird, muss mit '06' oder '60' ausgezeichnet werden. <li><b>Tage</b>: Man kann die Tage einschränken, an denen ein Produkt bestellt werden kann. 0=Sonntag, 1=Montag, usw. bis 6=Samstag. Wird ein Produkt an allen Tagen verkauft, ist keine Angabe erforderlich. Ein Produkt, welches nur an Wochenenden verkauft wird, muss mit '06' oder '60' ausgezeichnet werden.
<li><b>Bildnr</b>: Produkte können mit Bildern versehen werden. Jedes Bild in der Bilddatenbank besitzt eine eindeutige ID. Über die Angabe der Bildnummer können Bilder mehreren Produkten zugeordnet werden. Bilder, die keine Referenz mehr besitzen, werden regelmäßig aus der Datenbank entfernt. <li><b>Bildnr</b>: Produkte können mit Bildern versehen werden. Jedes Bild in der Bilddatenbank besitzt eine eindeutige ID. Über die Angabe der Bildnummer können Bilder mehreren Produkten zugeordnet werden. Bilder, die keine Referenz mehr besitzen, werden regelmäßig aus der Datenbank entfernt.
<li><b>Anzeige</b>: K: Anzeige nur in der Kellneransicht, G: Anzeige nur in der Gastbestellansicht, KG: Anzeige in beiden Ansichten (Standard) <li><b>Anzeige</b>: K: Anzeige nur in der Kellneransicht, G: Anzeige nur in der Gastbestellansicht, KG: Anzeige in beiden Ansichten (Standard)
<li><b>Barcode</b>: Der Barcode des Produkts. Dieser Wert ist nur dann von Interesse, wenn nicht im Restaurantmodus gearbeitet wird.
</ul> </ul>
<p>Ein Produkteintrag mit weiteren Eigenschaften kann beispielsweise so aussehen: <p>Ein Produkteintrag mit weiteren Eigenschaften kann beispielsweise so aussehen:

View File

@ -5,7 +5,7 @@
<meta http-equiv="content-type" content="text/html; charset=utf-8"> <meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="author" content="Stefan Pichel"> <meta name="author" content="Stefan Pichel">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.17"> <link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.18">
<link rel="stylesheet" href="php/contenthandler.php?module=admin&command=getmobilecss" /> <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/orderstyle/jquery.mobile.icons.min.css" />

View File

@ -1026,7 +1026,7 @@ class Admin {
return; return;
} }
$configItems = join(",",array("'decpoint'","'version'","'cancelunpaidcode'","'tax'","'togotax'","'taxaustrianormal'","'taxaustriaerm1'","'taxaustriaerm2'","'taxaustriaspecial'","'currency'","'workflowconfig'","'prominentsearch'","'discount1'","'discount2'","'discount3'","'discountname1'","'discountname2'","'discountname3'","'waitergopayprint'","'cashenabled'","'returntoorder'","'restaurantmode'","'startprodsearch'","'priceinlist'","'showdaycode'","'dailycode'","'showtogo'","'restaurantmode'","'billprintjobs'")); $configItems = join(",",array("'decpoint'","'version'","'cancelunpaidcode'","'tax'","'togotax'","'taxaustrianormal'","'taxaustriaerm1'","'taxaustriaerm2'","'taxaustriaspecial'","'currency'","'workflowconfig'","'prominentsearch'","'discount1'","'discount2'","'discount3'","'discountname1'","'discountname2'","'discountname3'","'waitergopayprint'","'cashenabled'","'returntoorder'","'restaurantmode'","'usebarcode'","'startprodsearch'","'priceinlist'","'showdaycode'","'dailycode'","'showtogo'","'billprintjobs'"));
$sql = "select name,setting FROM %config% WHERE name in ($configItems)"; $sql = "select name,setting FROM %config% WHERE name in ($configItems)";
$stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt = $pdo->prepare(DbUtils::substTableAlias($sql));
$stmt->execute(); $stmt->execute();
@ -1167,6 +1167,7 @@ class Admin {
array("showpayment7",1,false), array("showpayment7",1,false),
array("showpayment8",1,false), array("showpayment8",1,false),
array("restaurantmode",1,false), array("restaurantmode",1,false),
array("usebarcode",0,false),
array("defaultview",0,false), array("defaultview",0,false),
array("dblog",1,false), array("dblog",1,false),
array("printpickups",0,false), array("printpickups",0,false),
@ -1399,7 +1400,7 @@ class Admin {
$view = "preferences.html"; $view = "preferences.html";
} }
echo json_encode($view . "?v=1.5.17"); echo json_encode($view . "?v=1.5.18");
} }
} }
@ -1615,31 +1616,31 @@ class Admin {
if (!self::isOnlyRatingUser($rights, $right_rating, true)) { if (!self::isOnlyRatingUser($rights, $right_rating, true)) {
if ($_SESSION['modus'] == 0) { if ($_SESSION['modus'] == 0) {
if ($_SESSION['right_waiter']) { $mainMenu[] = array("name" => $waitertxt[$lang], "link" => "waiter.html?v=1.5.17"); } if ($_SESSION['right_waiter']) { $mainMenu[] = array("name" => $waitertxt[$lang], "link" => "waiter.html?v=1.5.18"); }
} else { } else {
if ($_SESSION['right_waiter']) { $mainMenu[] = array("name" => $waiterdesktxt[$lang], "link" => "waiterdesktop.php?v=1.5.17"); } if ($_SESSION['right_waiter']) { $mainMenu[] = array("name" => $waiterdesktxt[$lang], "link" => "waiterdesktop.php?v=1.5.18"); }
} }
if ($_SESSION['right_kitchen']) { $mainMenu[] = array("name" => $kitchentxt[$lang], "link" => "kitchen.html?v=1.5.17"); } if ($_SESSION['right_kitchen']) { $mainMenu[] = array("name" => $kitchentxt[$lang], "link" => "kitchen.html?v=1.5.18"); }
if ($_SESSION['right_bar']) { $mainMenu[] = array("name" => "Bar", "link" => "bar.html?v=1.5.17"); } if ($_SESSION['right_bar']) { $mainMenu[] = array("name" => "Bar", "link" => "bar.html?v=1.5.18"); }
if ($_SESSION['right_supply']) { $mainMenu[] = array("name" => $supplytxt[$lang], "link" => "supplydesk.html?v=1.5.17"); } if ($_SESSION['right_supply']) { $mainMenu[] = array("name" => $supplytxt[$lang], "link" => "supplydesk.html?v=1.5.18"); }
if ($_SESSION['modus'] == 0) { if ($_SESSION['modus'] == 0) {
if ($_SESSION['right_paydesk']) { $mainMenu[] = array("name" => $paydesktxt[$lang], "link" => "paydesk.html?v=1.5.17"); } if ($_SESSION['right_paydesk']) { $mainMenu[] = array("name" => $paydesktxt[$lang], "link" => "paydesk.html?v=1.5.18"); }
} }
if ($_SESSION['right_statistics']) { $mainMenu[] = array("name" => $stattxt[$lang], "link" => "reports.html?v=1.5.17"); } if ($_SESSION['right_statistics']) { $mainMenu[] = array("name" => $stattxt[$lang], "link" => "reports.html?v=1.5.18"); }
if ($_SESSION['right_bill']) { $mainMenu[] = array("name" => $bontxt[$lang], "link" => "bill.html?v=1.5.17"); } if ($_SESSION['right_bill']) { $mainMenu[] = array("name" => $bontxt[$lang], "link" => "bill.html?v=1.5.18"); }
if ($_SESSION['right_products']) { $mainMenu[] = array("name" => $prodtxt[$lang], "link" => "products.html?v=1.5.17"); } if ($_SESSION['right_products']) { $mainMenu[] = array("name" => $prodtxt[$lang], "link" => "products.html?v=1.5.18"); }
if ($_SESSION['right_reservation']) { $mainMenu[] = array("name" => $restxt[$lang], "link" => "reservation.html?v=1.5.17"); } if ($_SESSION['right_reservation']) { $mainMenu[] = array("name" => $restxt[$lang], "link" => "reservation.html?v=1.5.18"); }
if ($_SESSION['right_tasks'] || $_SESSION['right_tasksmanagement']) { $mainMenu[] = array("name" => $taskstxt[$lang], "link" => "tasks.html?v=1.5.17"); } if ($_SESSION['right_tasks'] || $_SESSION['right_tasksmanagement']) { $mainMenu[] = array("name" => $taskstxt[$lang], "link" => "tasks.html?v=1.5.18"); }
if ($_SESSION['right_rating']) { $mainMenu[] = array("name" => $ratingtxt[$lang], "link" => "rating.html?v=1.5.17"); } if ($_SESSION['right_rating']) { $mainMenu[] = array("name" => $ratingtxt[$lang], "link" => "rating.html?v=1.5.18"); }
if ($_SESSION['right_customers']) { $mainMenu[] = array("name" => $customerstxt[$lang], "link" => "customers.html?v=1.5.17"); } if ($_SESSION['right_customers']) { $mainMenu[] = array("name" => $customerstxt[$lang], "link" => "customers.html?v=1.5.18"); }
if ($_SESSION['right_pickups']) { $mainMenu[] = array("name" => $pickupstxt[$lang], "link" => "pickups.html?v=1.5.17"); } if ($_SESSION['right_pickups']) { $mainMenu[] = array("name" => $pickupstxt[$lang], "link" => "pickups.html?v=1.5.18"); }
if ($_SESSION['right_dash']) { $mainMenu[] = array("name" => $dashtxt[$lang], "link" => "dash.php?v=1.5.17"); } if ($_SESSION['right_dash']) { $mainMenu[] = array("name" => $dashtxt[$lang], "link" => "dash.php?v=1.5.18"); }
if ($_SESSION['right_manager'] || $_SESSION['is_admin'] || $_SESSION['right_closing']) { $mainMenu[] = array("name" => $admintxt[$lang], "link" => "manager.html?v=1.5.17"); } if ($_SESSION['right_manager'] || $_SESSION['is_admin'] || $_SESSION['right_closing']) { $mainMenu[] = array("name" => $admintxt[$lang], "link" => "manager.html?v=1.5.18"); }
$mainMenu[] = array("name" => $settingtxt[$lang], "link" => "preferences.html?v=1.5.17"); $mainMenu[] = array("name" => $settingtxt[$lang], "link" => "preferences.html?v=1.5.18");
if ($_SESSION['right_timetracking'] || $_SESSION['right_timemanager']) { $mainMenu[] = array("name" => $timetrackingtxt[$lang], "link" => "timetracking.html?v=1.5.17"); } if ($_SESSION['right_timetracking'] || $_SESSION['right_timemanager']) { $mainMenu[] = array("name" => $timetrackingtxt[$lang], "link" => "timetracking.html?v=1.5.18"); }
$mainMenu[] = array("name" => "Hilfe", "link" => "help.php?v=1.5.17"); $mainMenu[] = array("name" => "Hilfe", "link" => "help.php?v=1.5.18");
$mainMenu[] = array("name" => "Feedback", "link" => "feedback.html?v=1.5.17"); $mainMenu[] = array("name" => "Feedback", "link" => "feedback.html?v=1.5.18");
} }
$mainMenu[] = array("name" => $logout[$lang], "link" => "logout.php"); $mainMenu[] = array("name" => $logout[$lang], "link" => "logout.php");
@ -2193,6 +2194,7 @@ class Admin {
"showpayment8" => array("dbcol" => "showpayment8","checknum" => 0), "showpayment8" => array("dbcol" => "showpayment8","checknum" => 0),
"restaurantmode" => array("dbcol" => "restaurantmode","checknum" => 0), "restaurantmode" => array("dbcol" => "restaurantmode","checknum" => 0),
"usebarcode" => array("dbcol" => "usebarcode","checknum" => 0),
"defaultview" => array("dbcol" => "defaultview", "checknum" => 0), "defaultview" => array("dbcol" => "defaultview", "checknum" => 0),
"dblog" => array("dbcol" => "dblog","checknum" => 0), "dblog" => array("dbcol" => "dblog","checknum" => 0),
"printpickups" => array("dbcol" => "printpickups","checknum" => 0), "printpickups" => array("dbcol" => "printpickups","checknum" => 0),

View File

@ -39,21 +39,10 @@ class CommonUtils {
$row =$stmt->fetchObject(); $row =$stmt->fetchObject();
$lastBillid = intval($row->value); $lastBillid = intval($row->value);
$lastBillInc = $lastBillid+1; $lastBillInc = $lastBillid+1;
$signature = $row->signature;
if ($lastBillInc != $nextIdToUse) { if ($lastBillInc != $nextIdToUse) {
return false; return false;
} else { } else {
$check = md5("B($lastBillid)");
$ok = 1;
if ($check != $signature) {
$ok = 0;
}
if ($ok == 0) {
return false;
} else {
// is id already used in bill table?
$sql = "SELECT id FROM %bill% WHERE id=?"; $sql = "SELECT id FROM %bill% WHERE id=?";
$stmt = $pdo->prepare($this->dbutils->resolveTablenamesInSqlString($sql)); $stmt = $pdo->prepare($this->dbutils->resolveTablenamesInSqlString($sql));
$stmt->execute(array($nextIdToUse)); $stmt->execute(array($nextIdToUse));
@ -70,7 +59,7 @@ class CommonUtils {
return true; return true;
} }
} }
}
} }
} }

View File

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

View File

@ -204,6 +204,7 @@ class DbUtils {
array("col" => 'priceA', "hist" => 1, "property" => "priceA"), array("col" => 'priceA', "hist" => 1, "property" => "priceA"),
array("col" => 'priceB', "hist" => 1, "property" => "priceB"), array("col" => 'priceB', "hist" => 1, "property" => "priceB"),
array("col" => 'priceC', "hist" => 1, "property" => "priceC"), array("col" => 'priceC', "hist" => 1, "property" => "priceC"),
array("col" => 'barcode', "hist" => 1, "property" => "barcode"),
array("col" => 'unit', "hist" => 1, "property" => "unit"), array("col" => 'unit', "hist" => 1, "property" => "unit"),
array("col" => 'days', "hist" => 1, "property" => "days"), array("col" => 'days', "hist" => 1, "property" => "days"),
array("col" => 'tax', "hist" => 1, "property" => "tax"), array("col" => 'tax', "hist" => 1, "property" => "tax"),

View File

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

View File

@ -363,6 +363,18 @@ class PrintQueue {
} }
} }
public static function internalQueueReceiptPrintjob($pdo,$billid,$recprinter) {
try {
CommonUtils::log($pdo, "PRINTQUEUE", "Insert bill with id=$billid for printer=$printer into queue.");
$printInsertSql = "INSERT INTO `%printjobs%` (`content`,`type`,`printer`) VALUES (?,?,?)";
CommonUtils::execSql($pdo, $printInsertSql, array((string)($billid),self::$RECEIPT,$recprinter));
} catch (Exception $ex) {
return array("status" => "ERROR","msg" => $ex->getMessage());
}
return array("status" => "OK");
}
function queueReceiptPrintJob($billid,$useaddrecprinter) { function queueReceiptPrintJob($billid,$useaddrecprinter) {
// waiter, or manager, bill, admin rights required // waiter, or manager, bill, admin rights required
if (!($this->userrights->hasCurrentUserRight('right_paydesk')) && if (!($this->userrights->hasCurrentUserRight('right_paydesk')) &&

View File

@ -188,6 +188,7 @@ class Products {
array("id" => "priceA", "get" => "priceA","histid" => "priceA","histget" => "priceA","histexportname" => "Preis (Stufe A)","isnumber" => "1"), array("id" => "priceA", "get" => "priceA","histid" => "priceA","histget" => "priceA","histexportname" => "Preis (Stufe A)","isnumber" => "1"),
array("id" => "priceB", "get" => "priceB","histid" => "priceB","histget" => "priceB","histexportname" => "Preis (Stufe B)","isnumber" => "1"), array("id" => "priceB", "get" => "priceB","histid" => "priceB","histget" => "priceB","histexportname" => "Preis (Stufe B)","isnumber" => "1"),
array("id" => "priceC", "get" => "priceC","histid" => "priceC","histget" => "priceC","histexportname" => "Preis (Stufe C)","isnumber" => "1"), array("id" => "priceC", "get" => "priceC","histid" => "priceC","histget" => "priceC","histexportname" => "Preis (Stufe C)","isnumber" => "1"),
array("id" => "barcode", "get" => "barcode","histid" => "barcode","histget" => "barcode","histexportname" => "Barcode","isnumber" => "0"),
array("id" => "unit", "get" => "unit","histid" => "unit","histget" => "unit","histexportname" => "Einheit","isnumber" => "0", "exportvals" => array("default" => "Stück","1" => "Preiseingabe bei Bestellung")), array("id" => "unit", "get" => "unit","histid" => "unit","histget" => "unit","histexportname" => "Einheit","isnumber" => "0", "exportvals" => array("default" => "Stück","1" => "Preiseingabe bei Bestellung")),
array("id" => "days", "get" => "days","histid" => "days","histget" => "days","histexportname" => "Tage","isnumber" => "0"), array("id" => "days", "get" => "days","histid" => "days","histget" => "days","histexportname" => "Tage","isnumber" => "0"),
array("id" => "tax", "get" => "IF(tax is not null, tax, 'null') as tax","histid" => "tax","histget" => "tax","histexportname" => "Steuer","isnumber" => "1"), array("id" => "tax", "get" => "IF(tax is not null, tax, 'null') as tax","histid" => "tax","histget" => "tax","histexportname" => "Steuer","isnumber" => "1"),
@ -255,7 +256,7 @@ class Products {
} }
$typeArray[] = array("id" => $row['id'], "name" => $row['name'], "ref" => $ref,"sorting" => $row["sorting"]); $typeArray[] = array("id" => $row['id'], "name" => $row['name'], "ref" => $ref,"sorting" => $row["sorting"]);
} }
$sql = "select id,shortname,longname,audio,category as ref,favorite,$priceTxt as price,IF(unit is not null, unit, '0') as unit,IF(days is not null, days, '0123456') as days,IF(tax is not null, tax, 'null') as tax,IF(taxaustria is not null, taxaustria, 'null') as taxaustria,IF(amount is not null, amount, 'null') as amount,IFNULL(prodimageid,0) as prodimageid "; $sql = "select id,shortname,longname,audio,category as ref,favorite,$priceTxt as price,IFNULL(barcode, '') as barcode,IF(unit is not null, unit, '0') as unit,IF(days is not null, days, '0123456') as days,IF(tax is not null, tax, 'null') as tax,IF(taxaustria is not null, taxaustria, 'null') as taxaustria,IF(amount is not null, amount, 'null') as amount,IFNULL(prodimageid,0) as prodimageid ";
$sql .= " from %products% where available='1' AND removed is null AND (days is null OR days like ?) AND (display = 'KG' OR display = 'K' OR display is null) ORDER BY sorting"; $sql .= " from %products% where available='1' AND removed is null AND (days is null OR days like ?) AND (display = 'KG' OR display = 'K' OR display is null) ORDER BY sorting";
$result = CommonUtils::fetchSqlAll($pdo, $sql, array("%$dayofweek%")); $result = CommonUtils::fetchSqlAll($pdo, $sql, array("%$dayofweek%"));
@ -281,7 +282,20 @@ class Products {
$stmt->execute(array($row['id'])); $stmt->execute(array($row['id']));
$extras = $stmt->fetchAll(PDO::FETCH_OBJ); $extras = $stmt->fetchAll(PDO::FETCH_OBJ);
$prodArray[] = array("id" => $row['id'], "name" => $row['shortname'], "longname" => $row['longname'], "audio" => $audio, "ref" => $ref, "favorite" => $fav, "price" => $row['price'], "unit" => $row['unit'],"days" => $row['days'],"tax" => $row['tax'], "taxaustria" => $row['taxaustria'],"amount" => $row['amount'],"prodimageid" => $row['prodimageid'], "extras" => $extras); $prodArray[] = array("id" => $row['id'],
"name" => $row['shortname'], "longname" => $row['longname'],
"audio" => $audio,
"ref" => $ref,
"favorite" => $fav,
"price" => $row['price'],
"barcode" => $row['barcode'],
"unit" => $row['unit'],
"days" => $row['days'],
"tax" => $row['tax'],
"taxaustria" => $row['taxaustria'],
"amount" => $row['amount'],
"prodimageid" => $row['prodimageid'],
"extras" => $extras);
} }
$pdo->commit(); $pdo->commit();
@ -655,7 +669,7 @@ class Products {
function getSingleProdData($pdo,$id) { function getSingleProdData($pdo,$id) {
if (is_numeric($id)) { if (is_numeric($id)) {
$sql = "SELECT id,shortname,longname,priceA,priceB,priceC,IF(unit is not null, unit, '0') as unit,IF(days is not null, days, '0123456') as days,IF(tax is not null, tax, 'null') as tax,available,audio,favorite,IFNULL(amount,'null') as amount,IF(display is not null, display, 'KG') as display from %products% where id=?"; $sql = "SELECT id,shortname,longname,priceA,priceB,priceC,IFNULL(barcode,'') as barcode,IF(unit is not null, unit, '0') as unit,IF(days is not null, days, '0123456') as days,IF(tax is not null, tax, 'null') as tax,available,audio,favorite,IFNULL(amount,'null') as amount,IF(display is not null, display, 'KG') as display from %products% where id=?";
$stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt = $pdo->prepare(DbUtils::substTableAlias($sql));
$stmt->execute(array($id)); $stmt->execute(array($id));

View File

@ -28,6 +28,11 @@ class QueueContent {
return; return;
} }
if ($command == "addAndCashProdByRestCall") {
$pdo = DbUtils::openDbAndReturnPdoStatic();
$this->addAndCashProdByRestCall($pdo, $_POST);
return;
}
// these command are only allowed for user with supply rights // these command are only allowed for user with supply rights
$cmdArray = array('getJsonAllPreparedProducts', 'getJsonLastDeliveredProducts', 'declareProductBeDelivered', 'declareMultipleProductsDelivered','declareProductNotBeDelivered'); $cmdArray = array('getJsonAllPreparedProducts', 'getJsonLastDeliveredProducts', 'declareProductBeDelivered', 'declareMultipleProductsDelivered','declareProductNotBeDelivered');
if (in_array($command, $cmdArray)) { if (in_array($command, $cmdArray)) {
@ -107,7 +112,7 @@ class QueueContent {
$this->getJsonProductsOfTableToPay($_GET['tableid']); $this->getJsonProductsOfTableToPay($_GET['tableid']);
} else if ($command == 'declarePaidCreateBillReturnBillId') { } else if ($command == 'declarePaidCreateBillReturnBillId') {
$pdo = DbUtils::openDbAndReturnPdoStatic(); $pdo = DbUtils::openDbAndReturnPdoStatic();
$this->declarePaidCreateBillReturnBillId($pdo,$_POST['ids'],$_POST['tableid'],$_POST['paymentid'],$_POST['declareready'],$_POST['host'],false,$_POST['reservationid'],$_POST['guestinfo'],$_POST['intguestid']); $this->declarePaidCreateBillReturnBillId($pdo,$_POST['ids'],$_POST['tableid'],$_POST['paymentid'],$_POST['declareready'],$_POST['host'],false,$_POST['reservationid'],$_POST['guestinfo'],$_POST['intguestid'],null);
} else { } else {
echo "Command not supported."; echo "Command not supported.";
} }
@ -946,6 +951,111 @@ class QueueContent {
return array("status" => "OK","msg" => $records); return array("status" => "OK","msg" => $records);
} }
function addAndCashProdByRestCall($pdo,$data) {
if (!isset($data["remotecode"])) {
echo json_encode(array("status" => "ERROR","msg" => "Remote code not sent in POST data"));
return;
}
if (!isset($data["price"])) {
echo json_encode(array("status" => "ERROR","msg" => "Price not sent in POST data"));
return;
}
if (!isset($data["prodid"])) {
echo json_encode(array("status" => "ERROR","msg" => "Product id not sent in POST data"));
return;
}
if (!isset($data["userid"])) {
echo json_encode(array("status" => "ERROR","msg" => "User id not sent in POST data"));
return;
}
$printer = -1;
if (isset($data["printer"])) {
$printer = $data["printer"];
}
$remotecode = $data["remotecode"];
$prodid = $data["prodid"];
$price = $data["price"];
$userid = $data["userid"];
$remote = CommonUtils::getConfigValue($pdo, 'remoteaccesscode', '');
if (is_null($remote) || ($remote == '')) {
echo json_encode(array("status" => "ERROR","msg" => "No remote access code set in configuration. No booking allowed."));
return;
}
if (md5($remotecode) != $remote) {
echo json_encode(array("status" => "ERROR","msg" => "Wrong access code given!"));
return;
}
if (!is_numeric($price)) {
echo json_encode(array("status" => "ERROR","msg" => "Price not numerical!"));
return;
}
$pdo->beginTransaction();
date_default_timezone_set(DbUtils::getTimeZone());
$ordertime = date('Y-m-d H:i:s');
$sql = "INSERT INTO %records% (date,userid,tableid,action) VALUES(?,?,?,?)";
CommonUtils::execSql($pdo, $sql, array($ordertime,$userid,null,T_ORDER));
$recordid = $pdo->lastInsertId();
$sql = "SELECT longname,amount,tax FROM %products% where id=?";
$prodInfo = CommonUtils::fetchSqlAll($pdo, $sql, array($prodid));
if (count($prodInfo) != 1) {
echo json_encode(array("status" => "ERROR","msg" => "Product not identifyable by id"));
return;
};
$tax = $prodInfo[0]["tax"];
if (is_null($tax)) {
$tax = CommonUtils::getConfigValue($pdo, 'togotax', "7.0");
}
$productname = $prodInfo[0]["longname"];
$amount = $prodInfo[0]["amount"];
$insertSql = "INSERT INTO `%queue%` (
`id` , `tablenr`,`productid`,`pricelevel`,`price`,`tax`,`taxaustria`,`productname`,`ordertime`,`orderuser`,`anoption`,`pricechanged`,`togo`,`readytime`,`delivertime`,`paidtime`,`billid`,`toremove`,`cooking`,`workprinted`)
VALUES (
NULL , ?,?,?,?,?,?,?,?,?,?,?,?, null, null, NULL,NULL,'0',NULL,'0');";
try {
$stmt = $pdo->prepare(DbUtils::substTableAlias($insertSql));
$stmt->execute(array(null,$prodid,1,$price,$tax,null,$productname,$ordertime,$userid,'',1,0));
$queueid = $pdo->lastInsertId();
} catch (Exception $ex) {
echo json_encode(array("status" => "ERROR","msg" => "Error happened when queuing the product: " . $ex->getMessage()));
$pdo->rollBack();
return;
}
$sql = "INSERT INTO %recordsqueue% (recordid,queueid) VALUES(?,?)";
CommonUtils::execSql($pdo, $sql, array($recordid,$queueid));
if (!is_null($amount)) {
$amount = max(($amount -1),0);
$sql = "UPDATE %products% SET amount=? WHERE id=?";
CommonUtils::execSql($pdo, $sql, array($amount,$prodid));
if ($amount < 11) {
Tasks::createTaskForEmptyInventory($pdo, $prodid);
}
}
$pdo->commit();
$billid = $this->declarePaidCreateBillReturnBillId($pdo, $queueid, 0, 1, 1, 0, true, '', '', '',$userid);
if ($printer >= 0) {
PrintQueue::internalQueueReceiptPrintjob($pdo, $billid, $printer);
}
echo json_encode(array("status" => "OK"));
}
/* /*
* Add a product list to the queue as if it was ordered by the waiter. * Add a product list to the queue as if it was ordered by the waiter.
* The ordertime is set by the time that this method is invoked. * The ordertime is set by the time that this method is invoked.
@ -1143,7 +1253,7 @@ class QueueContent {
$cashenabled = CommonUtils::getConfigValue($pdo, "cashenabled", 1); $cashenabled = CommonUtils::getConfigValue($pdo, "cashenabled", 1);
if ($cashenabled == 0) { if ($cashenabled == 0) {
$idStr = join(',',$insertedQueueIds); $idStr = join(',',$insertedQueueIds);
$this->declarePaidCreateBillReturnBillId($pdo,$idStr, $theTableid, 1, 0, 0, true,'','',''); $this->declarePaidCreateBillReturnBillId($pdo,$idStr, $theTableid, 1, 0, 0, true,'','','',null);
} }
if ($doPrint == 1) { if ($doPrint == 1) {
@ -1256,7 +1366,7 @@ class QueueContent {
$cashenabled = CommonUtils::getConfigValue($pdo, "cashenabled", 1); $cashenabled = CommonUtils::getConfigValue($pdo, "cashenabled", 1);
if ($cashenabled == 0) { if ($cashenabled == 0) {
$idStr = join(',',$insertedQueueIds); $idStr = join(',',$insertedQueueIds);
$this->declarePaidCreateBillReturnBillId($pdo,$idStr, $theTableid, 1, 0, 0, true,'','',''); $this->declarePaidCreateBillReturnBillId($pdo,$idStr, $theTableid, 1, 0, 0, true,'','','',null);
} }
if ($doPrint == 1) { if ($doPrint == 1) {
@ -1905,7 +2015,7 @@ class QueueContent {
* Create bill * Create bill
* Return a bill id * Return a bill id
*/ */
function declarePaidCreateBillReturnBillId($pdo,$ids,$tableid,$paymentId,$declareready,$host,$calledInternally = false,$reservationid='',$guestinfo='',$intguestid='') { function declarePaidCreateBillReturnBillId($pdo,$ids,$tableid,$paymentId,$declareready,$host,$calledInternally = false,$reservationid='',$guestinfo='',$intguestid='',$userid=null) {
date_default_timezone_set(DbUtils::getTimeZone()); date_default_timezone_set(DbUtils::getTimeZone());
$currentTime = date('Y-m-d H:i:s'); $currentTime = date('Y-m-d H:i:s');
@ -1921,7 +2031,9 @@ class QueueContent {
$printextras = CommonUtils::getConfigValue($pdo, 'printextras', 0); $printextras = CommonUtils::getConfigValue($pdo, 'printextras', 0);
if (is_null($userid)) {
$userid = $this->getUserId(); $userid = $this->getUserId();
}
$ids = trim($ids, ","); $ids = trim($ids, ",");
@ -2076,6 +2188,8 @@ class QueueContent {
if (!$calledInternally) { if (!$calledInternally) {
echo json_encode(array("status" => "OK", "msg" => $billInfo)); echo json_encode(array("status" => "OK", "msg" => $billInfo));
} else {
return $billid;
} }
} }

View File

@ -6,6 +6,7 @@ class ProductEntry {
private $priceA; // the price of the product (default) private $priceA; // the price of the product (default)
private $priceB; // price level B private $priceB; // price level B
private $priceC; // price level C private $priceC; // price level C
private $barcode;
private $tax; private $tax;
private $taxaustria; private $taxaustria;
private $amount; private $amount;
@ -22,6 +23,7 @@ class ProductEntry {
private static $PRICE_B = "PreisB"; private static $PRICE_B = "PreisB";
private static $PRICE_C = "PreisC"; private static $PRICE_C = "PreisC";
private static $BARCODE = "Barcode";
private static $TAX = "Fixsteuersatz"; private static $TAX = "Fixsteuersatz";
private static $TAXAUSTRIA = "Steuersatz-Austria"; private static $TAXAUSTRIA = "Steuersatz-Austria";
private static $AMOUNT = "Menge"; private static $AMOUNT = "Menge";
@ -89,29 +91,36 @@ class ProductEntry {
if (trim($this->shortName) == "") { if (trim($this->shortName) == "") {
$this->shortName = $this->longName; $this->shortName = $this->longName;
} }
if (trim($this->barcode) == "") {
$this->barcode = "";
}
if ($this->amount == "null") { if ($this->amount == "null") {
$this->amount = null; $this->amount = null;
} }
} }
public function createProductInDb($pdo) { public function createProductInDb($pdo) {
$sql = "INSERT INTO `%products%` (`id`,`shortname`,`longname`,`priceA`,`priceB`,`priceC`,`unit`,`display`,`days`,`tax`,`taxaustria`,`amount`,`category`,`favorite`,`available`,`audio`) VALUES (NULL,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; $sql = "INSERT INTO `%products%` (`id`,`shortname`,`longname`,`priceA`,`priceB`,`priceC`,`barcode`,`unit`,`display`,`days`,`tax`,`taxaustria`,`amount`,`category`,`favorite`,`available`,`audio`) VALUES (NULL,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
$stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt = $pdo->prepare(DbUtils::substTableAlias($sql));
if ($this->days == '0123456') { if ($this->days == '0123456') {
$this->days = null; $this->days = null;
} }
$stmt->execute(array($this->shortName,$this->longName,$this->priceA,$this->priceB,$this->priceC,$this->unit,$this->display,$this->days,$this->tax,$this->taxaustria,$this->amount,$this->category,$this->favorite,$this->available,$this->audio)); $barcode = $this->barcode;
if (strlen($barcode) > 25) {
$barcode = substr($barcode, 0, 25);
}
$stmt->execute(array($this->shortName,$this->longName,$this->priceA,$this->priceB,$this->priceC,$barcode,$this->unit,$this->display,$this->days,$this->tax,$this->taxaustria,$this->amount,$this->category,$this->favorite,$this->available,$this->audio));
return ($pdo->lastInsertId()); return ($pdo->lastInsertId());
} }
public function applyProductInDb($pdo) { public function applyProductInDb($pdo) {
$updateSql = "UPDATE %products% SET shortname=?, longname=?, priceA=?, priceB=?, priceC=?, unit=?, display=?, days=?, tax=?, taxaustria=?, amount=?,available=?, audio=?, favorite=? WHERE id=?"; $updateSql = "UPDATE %products% SET shortname=?, longname=?, priceA=?, priceB=?, priceC=?, barcode=?, unit=?, display=?, days=?, tax=?, taxaustria=?, amount=?,available=?, audio=?, favorite=? WHERE id=?";
$stmt = $pdo->prepare(DbUtils::substTableAlias($updateSql)); $stmt = $pdo->prepare(DbUtils::substTableAlias($updateSql));
if ($this->days == '0123456') { if ($this->days == '0123456') {
$this->days = null; $this->days = null;
} }
$stmt->execute(array($this->shortName,$this->longName,$this->priceA,$this->priceB,$this->priceC,$this->unit,$this->display,$this->days,$this->tax,$this->taxaustria,$this->amount,$this->available,$this->audio,$this->favorite,$this->prodid)); $stmt->execute(array($this->shortName,$this->longName,$this->priceA,$this->priceB,$this->priceC,$this->barcode,$this->unit,$this->display,$this->days,$this->tax,$this->taxaustria,$this->amount,$this->available,$this->audio,$this->favorite,$this->prodid));
} }
// //
@ -125,6 +134,7 @@ class ProductEntry {
$priceA = str_replace('.', $decpoint, $aProd['priceA']); $priceA = str_replace('.', $decpoint, $aProd['priceA']);
$priceB = str_replace('.', $decpoint, $aProd['priceB']); $priceB = str_replace('.', $decpoint, $aProd['priceB']);
$priceC = str_replace('.', $decpoint, $aProd['priceC']); $priceC = str_replace('.', $decpoint, $aProd['priceC']);
$barcode = $aProd['barcode'];
$unit = $aProd['unit']; $unit = $aProd['unit'];
$days = $aProd['days']; $days = $aProd['days'];
$prodimageid = $aProd['prodimageid']; $prodimageid = $aProd['prodimageid'];
@ -149,6 +159,10 @@ class ProductEntry {
$extArr[] = self::$PRICE_C . ":$priceC"; $extArr[] = self::$PRICE_C . ":$priceC";
} }
if (($barcode != "") && ($barcode != 'null')) {
$extArr[] = self::$BARCODE . ":$barcode";
}
if (!is_null($taxaustria) && ($taxaustria != 'null')) { if (!is_null($taxaustria) && ($taxaustria != 'null')) {
$extArr[] = self::$TAXAUSTRIA . ":$taxaustria"; $extArr[] = self::$TAXAUSTRIA . ":$taxaustria";
} }
@ -205,6 +219,7 @@ class ProductEntry {
$this->priceB = null; $this->priceB = null;
$this->priceC = null; $this->priceC = null;
$this->barcode = null;
$this->unit = null; $this->unit = null;
$this->days = null; $this->days = null;
$this->prodimageid = null; $this->prodimageid = null;
@ -242,6 +257,8 @@ class ProductEntry {
$this->tax = floatval(str_replace(",",".",(string) $value)); $this->tax = floatval(str_replace(",",".",(string) $value));
} else if ($identifier == self::$SHORTNAME) { } else if ($identifier == self::$SHORTNAME) {
$this->shortName = $value; $this->shortName = $value;
} else if ($identifier == self::$BARCODE) {
$this->barcode = $value;
} else if ($identifier == self::$ID) { } else if ($identifier == self::$ID) {
$this->prodid = $value; $this->prodid = $value;
} else if ($identifier == self::$TAXAUSTRIA) { } else if ($identifier == self::$TAXAUSTRIA) {
@ -299,6 +316,10 @@ class ProductEntry {
return $this->priceC; return $this->priceC;
} }
function getBarcode() {
return $this->barcode;
}
function getUnit() { function getUnit() {
return $this->unit; return $this->unit;
} }
@ -345,6 +366,6 @@ class ProductEntry {
return (($this->display == 'KG') ? null : $this->display); return (($this->display == 'KG') ? null : $this->display);
} }
function toString() { function toString() {
return "S:" . $this->shortName . " PA:" . $this->priceA . " PB:" . $this->priceB . " PC:" . $this->priceC . " Tax:" . $this->tax . " R:" . $this->longName; return "S:" . $this->shortName . " PA:" . $this->priceA . " PB:" . $this->priceB . " PC:" . $this->priceC . " Barcode:" . $this->barcode . " Tax:" . $this->tax . " R:" . $this->longName;
} }
} }

View File

@ -353,6 +353,7 @@ class TypeAndProductFileManager {
$priceA = $product->getPriceA(); $priceA = $product->getPriceA();
$priceB = $product->getPriceB(); $priceB = $product->getPriceB();
$priceC = $product->getPriceC(); $priceC = $product->getPriceC();
$barcode = $product->getBarcode();
$unit = $product->getUnit(); $unit = $product->getUnit();
$days = $product->getDays(); $days = $product->getDays();
$tax = $product->getTax(); $tax = $product->getTax();
@ -400,15 +401,15 @@ class TypeAndProductFileManager {
} }
} }
if ($isNewProd) { if ($isNewProd) {
$sql = "INSERT INTO `%products%` (`id`, `shortname`, `longname`, `priceA`, `priceB`, `priceC`, `unit`,`days`, `tax`, `taxaustria`, `amount`, `category`,`available`,`favorite`,`sorting`,`prodimageid`,`display`) VALUES (NULL,"; $sql = "INSERT INTO `%products%` (`id`, `shortname`, `longname`, `priceA`, `priceB`, `priceC`, `barcode`, `unit`,`days`, `tax`, `taxaustria`, `amount`, `category`,`available`,`favorite`,`sorting`,`prodimageid`,`display`) VALUES (NULL,";
$sql = $sql . "?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; $sql = $sql . "?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
$stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt = $pdo->prepare(DbUtils::substTableAlias($sql));
$stmt->execute(array($shortName,$longName,$priceA,$priceB,$priceC,$unit,$days,$tax, $taxaustria, $amount, $category,$available,$favorite,$sorting,$prodimageid,$display)); $stmt->execute(array($shortName,$longName,$priceA,$priceB,$priceC,$barcode,$unit,$days,$tax, $taxaustria, $amount, $category,$available,$favorite,$sorting,$prodimageid,$display));
$prodid = $pdo->lastInsertId(); $prodid = $pdo->lastInsertId();
HistFiller::createProdInHist($pdo, $prodid); HistFiller::createProdInHist($pdo, $prodid);
} else { } else {
$sql = "SELECT shortname,longname,priceA,priceB,priceC,unit,days,tax,taxaustria,amount,available,category,prodimageid,display FROM %products% WHERE id=?"; $sql = "SELECT shortname,longname,priceA,priceB,priceC,barcode,unit,days,tax,taxaustria,amount,available,category,prodimageid,display FROM %products% WHERE id=?";
$stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt = $pdo->prepare(DbUtils::substTableAlias($sql));
$stmt->execute(array($prodid)); $stmt->execute(array($prodid));
$row = $stmt->fetchObject(); $row = $stmt->fetchObject();
@ -418,6 +419,7 @@ class TypeAndProductFileManager {
|| ($row->priceA != $priceA) || ($row->priceA != $priceA)
|| ($row->priceB != $priceB) || ($row->priceB != $priceB)
|| ($row->priceC != $priceC) || ($row->priceC != $priceC)
|| ($row->barcode != $barcode)
|| ($row->unit != $unit) || ($row->unit != $unit)
|| ($row->days != $days) || ($row->days != $days)
|| ($row->available != $available) || ($row->available != $available)
@ -428,9 +430,9 @@ class TypeAndProductFileManager {
|| ($row->amount != $amount)); || ($row->amount != $amount));
if ($changed) { if ($changed) {
$sql = "UPDATE %products% SET shortname=?,longname=?,priceA=?,priceB=?,priceC=?,unit=?,days=?,tax=?,taxaustria=?,amount=?,available=?,sorting=?,prodimageid=?,display=? WHERE id=?"; $sql = "UPDATE %products% SET shortname=?,longname=?,priceA=?,priceB=?,priceC=?,barcode=?,unit=?,days=?,tax=?,taxaustria=?,amount=?,available=?,sorting=?,prodimageid=?,display=? WHERE id=?";
$stmt = $pdo->prepare(DbUtils::substTableAlias($sql)); $stmt = $pdo->prepare(DbUtils::substTableAlias($sql));
$stmt->execute(array($shortName,$longName,$priceA,$priceB,$priceC,$unit,$days,$tax,$taxaustria,$amount,$available,$sorting,$prodimageid,$display,$prodid)); $stmt->execute(array($shortName,$longName,$priceA,$priceB,$priceC,$barcode,$unit,$days,$tax,$taxaustria,$amount,$available,$sorting,$prodimageid,$display,$prodid));
$changedProdIds[] = $prodid; $changedProdIds[] = $prodid;
} else { } else {
$sql = "UPDATE %products% SET sorting=? WHERE id=?"; $sql = "UPDATE %products% SET sorting=? WHERE id=?";

View File

@ -1108,6 +1108,20 @@ class Version {
return array(true); return array(true);
} }
public static function upd_1517_1518($pdo, $prefix, $dbname) {
try {
self::insertOrUpdateConfigItem($pdo, 'payprinttype', 's');
self::execSql($pdo, "ALTER TABLE %products% ADD barcode VARCHAR(25) NULL AFTER priceC");
self::execSql($pdo, "ALTER TABLE %histprod% ADD barcode VARCHAR(25) NULL AFTER priceC");
self::insertOrUpdateConfigItem($pdo, 'usebarcode', '0');
return array(true);
} catch (PDOException $e) {
return array(false,$e);
}
}
public static $updateOrder = array( public static $updateOrder = array(
"1.3.0" => array("upd_1300_1301","1.3.1"), "1.3.0" => array("upd_1300_1301","1.3.1"),
"1.3.1" => array("upd_1301_1302","1.3.2"), "1.3.1" => array("upd_1301_1302","1.3.2"),
@ -1172,7 +1186,8 @@ class Version {
"1.5.13" => array("upd_1513_1514","1.5.14"), "1.5.13" => array("upd_1513_1514","1.5.14"),
"1.5.14" => array("upd_1514_1515","1.5.15"), "1.5.14" => array("upd_1514_1515","1.5.15"),
"1.5.15" => array("upd_1515_1516","1.5.16"), "1.5.15" => array("upd_1515_1516","1.5.16"),
"1.5.16" => array("upd_1516_1517","1.5.17") "1.5.16" => array("upd_1516_1517","1.5.17"),
"1.5.17" => array("upd_1517_1518","1.5.18")
); );
// RE;* also for install process no check is required // RE;* also for install process no check is required

View File

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

View File

@ -5,7 +5,7 @@
<meta http-equiv="content-type" content="text/html; charset=utf-8"> <meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="author" content="Stefan Pichel"> <meta name="author" content="Stefan Pichel">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.17"> <link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.18">
<link rel="stylesheet" href="php/contenthandler.php?module=admin&command=getmobilecss" /> <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/orderstyle/jquery.mobile.icons.min.css" />

View File

@ -7,7 +7,7 @@
<meta http-equiv="content-type" content="text/html; charset=utf-8"> <meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="author" content="Stefan Pichel"> <meta name="author" content="Stefan Pichel">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.17"> <link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.18">
<link rel="stylesheet" href="php/contenthandler.php?module=admin&command=getmobilecss" /> <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/orderstyle/jquery.mobile.icons.min.css" />
@ -15,8 +15,8 @@
<script src="php/3rdparty/jquery-2.0.3.min.js"></script> <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="php/3rdparty/jquery.mobile-1.4.0.min.js"></script>
<script src="utilities.js"></script> <script src="utilities.js"></script>
<script src="elements/product.js?v=1.5.17"></script> <script src="elements/product.js?v=1.5.18"></script>
<script src="elements/extra.js?v=1.5.17"></script> <script src="elements/extra.js?v=1.5.18"></script>
<link href="php/3rdparty/hayageek_uploadfile.css" rel="stylesheet"> <link href="php/3rdparty/hayageek_uploadfile.css" rel="stylesheet">
<script src="php/3rdparty/hayageek_jquery_uploadfile.js"></script> <script src="php/3rdparty/hayageek_jquery_uploadfile.js"></script>
</head> </head>
@ -37,6 +37,7 @@ var PROD_TAX = ["Steuersatz immer","Tax always","Impuesto siempre"];
var PROD_TAXAUSTRIA = ["Steuersatz Österreich","Tax Austria","Impuesto Austria"]; var PROD_TAXAUSTRIA = ["Steuersatz Österreich","Tax Austria","Impuesto Austria"];
var PROD_AMOUNT = ["Verfügbare Menge","Available amount","Cuanto hay"]; var PROD_AMOUNT = ["Verfügbare Menge","Available amount","Cuanto hay"];
var PROD_SHORTNAME = ["Kurzname:","Short name:","Nombre corto"]; var PROD_SHORTNAME = ["Kurzname:","Short name:","Nombre corto"];
var PROD_BARCODE = ["Barcode","Barcode","Código de barras"];
var PROD_LONG_NAME = ["Langname:","Long name:","Nombre largo"]; var PROD_LONG_NAME = ["Langname:","Long name:","Nombre largo"];
var PROD_AVAILABLE = ["Verfügbar","Available","Disponible"]; var PROD_AVAILABLE = ["Verfügbar","Available","Disponible"];
var PROD_FAVORITE = ["Favorit","Favorite","Favorito"]; var PROD_FAVORITE = ["Favorit","Favorite","Favorito"];
@ -394,7 +395,7 @@ function setLanguage(language) {
if (days != '0123456') { if (days != '0123456') {
days = prod.days; days = prod.days;
} }
var aProduct = newProduct(prod.id,prod.longname,prod.shortname,prod.priceA,prod.priceB,prod.priceC,unit,display,days,prod.tax,prod.taxaustria,prod.amount,prod.available,prod.audio,prod.favorite); var aProduct = newProduct(prod.id,prod.longname,prod.shortname,prod.priceA,prod.priceB,prod.priceC,prod.barcode,unit,display,days,prod.tax,prod.taxaustria,prod.amount,prod.available,prod.audio,prod.favorite);
prodleafs[prodleafs.length] = aProduct; prodleafs[prodleafs.length] = aProduct;
if (!prodsListPrinted) { if (!prodsListPrinted) {
@ -405,7 +406,7 @@ function setLanguage(language) {
} }
if (ct != null) { if (ct != null) {
var dummyPrice = "0.00".replace(".",decpoint); var dummyPrice = "0.00".replace(".",decpoint);
var aProduct = newProduct("n" + ct.id,"","",dummyPrice,dummyPrice,dummyPrice,0,'KG',"0123456","null",0,"null",1,"",0); var aProduct = newProduct("n" + ct.id,"","",dummyPrice,dummyPrice,dummyPrice,'',0,'KG',"0123456","null",0,"null",1,"",0);
prodleafs[prodleafs.length] = aProduct; prodleafs[prodleafs.length] = aProduct;
txt += aProduct.createListStructureLine(audiofiles); txt += aProduct.createListStructureLine(audiofiles);
} }
@ -661,6 +662,7 @@ function setLanguage(language) {
{ prop: "priceA", field: "prodpriceA_input", fieldtype: "v", default: '', isnum: true, allowempty: false}, { prop: "priceA", field: "prodpriceA_input", fieldtype: "v", default: '', isnum: true, allowempty: false},
{ prop: "priceB", field: "prodpriceB_input", fieldtype: "v", default: '', isnum: true, allowempty: "priceA"}, { prop: "priceB", field: "prodpriceB_input", fieldtype: "v", default: '', isnum: true, allowempty: "priceA"},
{ prop: "priceC", field: "prodpriceC_input", fieldtype: "v", default: '', isnum: true, allowempty: "priceA"}, { prop: "priceC", field: "prodpriceC_input", fieldtype: "v", default: '', isnum: true, allowempty: "priceA"},
{ prop: "barcode", field: "prodbarcode_input", fieldtype: "v", default: '', isnum: false, allowempty: "barcode"},
{ prop: "unit", field: "produnit_input", fieldtype: "v", default: '', isnum: false, allowempty: true}, { prop: "unit", field: "produnit_input", fieldtype: "v", default: '', isnum: false, allowempty: true},
{ prop: "display", field: "proddisplay_input", fieldtype: "v", default: '', isnum: false, allowempty: true}, { prop: "display", field: "proddisplay_input", fieldtype: "v", default: '', isnum: false, allowempty: true},
{ prop: "days", field: "proddays_input", fieldtype: "v", default: '0123456', isnum: false, allowempty: true}, { prop: "days", field: "proddays_input", fieldtype: "v", default: '0123456', isnum: false, allowempty: true},
@ -787,7 +789,7 @@ function setLanguage(language) {
} }
function refreshProduct(prodData) { function refreshProduct(prodData) {
var aProduct = newProduct(prodData.id,prodData.longname,prodData.shortname,prodData.priceA,prodData.priceB,prodData.priceC,prodData.unit,prodData.display,prodData.days,prodData.tax,prodData.taxaustria,prodData.amount,prodData.available,prodData.audio,prodData.favorite); var aProduct = newProduct(prodData.id,prodData.longname,prodData.shortname,prodData.priceA,prodData.priceB,prodData.priceC,prodData.barcode,prodData.unit,prodData.display,prodData.days,prodData.tax,prodData.taxaustria,prodData.amount,prodData.available,prodData.audio,prodData.favorite);
aProduct.insertValuesIntoMenuList(); aProduct.insertValuesIntoMenuList();
$("#assextralist_" + prodData.id).html(""); $("#assextralist_" + prodData.id).html("");
$("#assextralist_" + prodData.id).trigger("create"); $("#assextralist_" + prodData.id).trigger("create");

View File

@ -7,7 +7,7 @@
<meta http-equiv="content-type" content="text/html; charset=utf-8"> <meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="author" content="Stefan Pichel"> <meta name="author" content="Stefan Pichel">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.17"> <link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.18">
<link rel="stylesheet" href="php/contenthandler.php?module=admin&command=getmobilecss" /> <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/orderstyle/jquery.mobile.icons.min.css" />

View File

@ -7,7 +7,7 @@
<meta http-equiv="content-type" content="text/html; charset=utf-8"> <meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="author" content="Stefan Pichel"> <meta name="author" content="Stefan Pichel">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.17"> <link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.18">
<link rel="stylesheet" href="php/contenthandler.php?module=admin&command=getmobilecss" /> <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/orderstyle/jquery.mobile.icons.min.css" />

View File

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="content-type" content="text/html; charset=utf-8"> <meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="author" content="Stefan Pichel"> <meta name="author" content="Stefan Pichel">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.17"> <link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.18">
<link rel="stylesheet" href="php/contenthandler.php?module=admin&command=getmobilecss" /> <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/orderstyle/jquery.mobile.icons.min.css" />

View File

@ -5,7 +5,7 @@
<meta http-equiv="content-type" content="text/html; charset=utf-8"> <meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="author" content="Stefan Pichel"> <meta name="author" content="Stefan Pichel">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.17"> <link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.18">
<link rel="stylesheet" href="php/contenthandler.php?module=admin&command=getmobilecss" /> <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/orderstyle/jquery.mobile.icons.min.css" />

View File

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

View File

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="content-type" content="text/html; charset=utf-8"> <meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="author" content="Stefan Pichel"> <meta name="author" content="Stefan Pichel">
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.17"> <link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.18">
<link rel="stylesheet" href="php/contenthandler.php?module=admin&command=getmobilecss" /> <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/orderstyle/jquery.mobile.icons.min.css" />

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -28,7 +28,10 @@
<!-- a hack: info-page is for compatibility to mobile view at which data is stored --> <!-- a hack: info-page is for compatibility to mobile view at which data is stored -->
<div id="info-page" style='display:none;'></div> <div id="info-page" style='display:none;'></div>
<div id="searchpanel" style="display:none;"><input id="search" class="input100 inputwhite" type="text" placeholder="Suchen..." /></div> <div id="searchpanel" tabindex="-1" style="display:none;">
<input id="search" class="input100 inputwhite" type="text" placeholder="Suchen..." />
<input id="barcode" tabindex="-1" class="input100 inputwhite" type="text" placeholder="Barcode..." style="display:none;" />
</div>
<div id="productspanel" class="productspanel" style="display:none;"></div> <div id="productspanel" class="productspanel" style="display:none;"></div>