OrderSprinter 1.5.25
This commit is contained in:
parent
ab07fb4203
commit
279efdd31f
|
@ -52,4 +52,9 @@
|
|||
#timecounter {
|
||||
text-align: right;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.centermobileimg {
|
||||
top:0;bottom:0;margin:auto;position:absolute;
|
||||
height:70px;
|
||||
}
|
|
@ -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.24" />
|
||||
<link rel="stylesheet" href="php/3rdparty/orderstyle/orderstyle.min.css?v=1.5.24" />
|
||||
<link rel="stylesheet" href="css/gueststyle.css?v=1.5.25" />
|
||||
<link rel="stylesheet" href="php/3rdparty/orderstyle/orderstyle.min.css?v=1.5.25" />
|
||||
<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>
|
||||
|
@ -41,6 +41,7 @@
|
|||
|
||||
<div data-role="collapsible" data-content-theme="c" data-collapsed="false" data-theme="e" id="tableselection" style="display:none;" class="notcollapsible">
|
||||
<H2>Tischauswahl</H2>
|
||||
<p style="text-align: center;"><img src="php/ossystem.php?command=getlogo" style="max-height:300px;"/>
|
||||
<p>Bitte wählen Sie den Tisch aus:
|
||||
<div id="tableselectionbox"></div>
|
||||
</div>
|
||||
|
@ -105,7 +106,7 @@
|
|||
<div data-role="footer" data-theme="b" id="thefooter1">
|
||||
<div class="ui-grid-a">
|
||||
<div class="ui-block-a"> OrderSprinter</div>
|
||||
<div class="ui-block-b grid_right" id="versioninfo">1.5.24 </div>
|
||||
<div class="ui-block-b grid_right" id="versioninfo">1.5.25 </div>
|
||||
</div><!-- /grid-a -->
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -19,6 +19,18 @@ class Installer {
|
|||
self::dropTable($pdo, "%ossystem%");
|
||||
self::dropTable($pdo, "%gueststatus%");
|
||||
self::dropTable($pdo, "%queue%");
|
||||
self::dropTable($pdo, "%images%");
|
||||
|
||||
$sql = "
|
||||
CREATE TABLE `%images%` (
|
||||
`id` INT (2) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
|
||||
`name` VARCHAR ( 100 ) ,
|
||||
`content` MEDIUMBLOB,
|
||||
`contenttype` INT(1) NULL,
|
||||
`productid` INT(10) NULL
|
||||
) CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE = InnoDb ;
|
||||
";
|
||||
DbUtils::execSql($pdo, $sql, null);
|
||||
|
||||
$sql = "
|
||||
CREATE TABLE `%ossystem%` (
|
||||
|
@ -90,10 +102,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.24">';
|
||||
echo '<link rel="stylesheet" type="text/css" href="css/gueststyle.css?v=1.5.25">';
|
||||
echo "</head>";
|
||||
echo "<body><div class=surround>";
|
||||
echo "<span class=headerline>Installation OrderSprinter-Gastsystem 1.5.24</span><br><br>";
|
||||
echo "<span class=headerline>Installation OrderSprinter-Gastsystem 1.5.25</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
|
@ -3,6 +3,8 @@
|
|||
require_once ('config.php');
|
||||
|
||||
class DbUtils {
|
||||
public static $TYPE_LOGO = 1;
|
||||
public static $TYPE_PRODIMG = 2;
|
||||
|
||||
public static function openDbAndReturnPdoStatic () {
|
||||
$dsn = 'mysql:host=' . MYSQL_HOST . ';dbname=' . MYSQL_DB;
|
||||
|
@ -24,6 +26,7 @@ class DbUtils {
|
|||
$out = str_replace("%ossystem%",TAB_PREFIX . 'ossystem',$sqlString);
|
||||
$out = str_replace("%gueststatus%", TAB_PREFIX . 'gueststatus',$out);
|
||||
$out = str_replace("%queue%", TAB_PREFIX . 'queue',$out);
|
||||
$out = str_replace("%images%", TAB_PREFIX . 'images',$out);
|
||||
return $out;
|
||||
}
|
||||
|
||||
|
|
|
@ -22,9 +22,34 @@ class Menu {
|
|||
}
|
||||
|
||||
$types = json_decode($result[0]["value"], true);
|
||||
foreach ($types as &$t) {
|
||||
$typeid = $t["id"];
|
||||
$t["hasprodimages"] = self::hasTypeProdImages($pdo, $types, $products, $typeid);
|
||||
}
|
||||
|
||||
return array("status" => "OK","msg" => array("types" => $types,"products" => $products));
|
||||
}
|
||||
|
||||
private static function hasTypeProdImages($pdo,$alltypes,$allproducts,$typeid) {
|
||||
$prodids = array();
|
||||
foreach($allproducts as $p) {
|
||||
if ($p["ref"] == $typeid) {
|
||||
$prodids[] = $p["id"];
|
||||
}
|
||||
}
|
||||
$sql = "SELECT IFNULL(content,'') as content FROM %images% WHERE contenttype=? AND productid=?";
|
||||
foreach($prodids as $prodid) {
|
||||
$img = DbUtils::fetchSqlAll($pdo, $sql, array(DbUtils::$TYPE_PRODIMG,$prodid));
|
||||
if (count($img) > 0) {
|
||||
$imgdata = $img[0]["content"];
|
||||
if ($imgdata != '') {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (isset($_GET["command"])) {
|
||||
|
|
|
@ -0,0 +1,108 @@
|
|||
<?php
|
||||
|
||||
require_once 'dbutils.php';
|
||||
require_once 'config.php';
|
||||
|
||||
class OsSystem {
|
||||
private static function outputEmptyImage() {
|
||||
$my_img = imagecreate( 1,1 );
|
||||
$background = imagecolorallocate( $my_img, 0, 0, 255 );
|
||||
$black = imagecolorallocate($im, 0, 0, 0);
|
||||
imagecolortransparent($my_img, $black);
|
||||
header( "Content-type: image/png" );
|
||||
imagepng( $my_img );
|
||||
imagecolordeallocate( $background );
|
||||
imagedestroy( $my_img );
|
||||
}
|
||||
|
||||
public static function getlogo($pdo) {
|
||||
$sql = "SELECT content as img FROM %images% WHERE name='logo'";
|
||||
self::outputImageFromDb($pdo, $sql, null);
|
||||
}
|
||||
public static function getprodimage($pdo,$prodid) {
|
||||
$sql = "SELECT content as img FROM %images% WHERE contenttype=? AND productid=?";
|
||||
$params = array(DbUtils::$TYPE_PRODIMG,$prodid);
|
||||
self::outputImageFromDb($pdo, $sql, $params);
|
||||
}
|
||||
|
||||
private static function outputImageFromDb($pdo,$sql,$params) {
|
||||
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
|
||||
header("Pragma: no-cache");
|
||||
header("Expires: Mon, 20 Dec 1998 01:00:00 GMT" );
|
||||
header('Content-Type: ' . image_type_to_mime_type(IMAGETYPE_PNG));
|
||||
|
||||
$result = DbUtils::fetchSqlAll($pdo, $sql, $params);
|
||||
if (count($result) > 0) {
|
||||
$logoImg = $result[0]["img"];
|
||||
if ($logoImg != '') {
|
||||
$img = base64_decode($logoImg);
|
||||
$php_img = imagecreatefromstring($img);
|
||||
|
||||
imagesavealpha($php_img, true);
|
||||
$color = imagecolorallocatealpha($php_img, 0, 0, 0, 127);
|
||||
|
||||
imagepng($php_img, NULL);
|
||||
imagecolordeallocate( $color );
|
||||
imagedestroy($php_img);
|
||||
return;
|
||||
}
|
||||
}
|
||||
self::outputEmptyImage();
|
||||
}
|
||||
|
||||
public static function checkLastOsAccess($pdo) {
|
||||
$timezone = self::getTimeZone($pdo);
|
||||
date_default_timezone_set($timezone);
|
||||
|
||||
$sql = "SELECT date FROM %gueststatus% WHERE item=?";
|
||||
$result = DbUtils::fetchSqlAll($pdo, $sql, array('lastosaccess'));
|
||||
|
||||
if (count($result) == 0) {
|
||||
$msg = "0";
|
||||
} else {
|
||||
$lastaccess = $result[0]["date"];
|
||||
|
||||
$date = new DateTime();
|
||||
$currentTimeStamp = $date->getTimestamp();
|
||||
|
||||
if (($currentTimeStamp - $lastaccess) > 60) {
|
||||
$msg = 0;
|
||||
} else {
|
||||
$msg = 1;
|
||||
}
|
||||
}
|
||||
return array("status" => "OK","msg" => $msg);
|
||||
}
|
||||
|
||||
public static function getTimeZone($pdo) {
|
||||
$sql = "select value from %ossystem% where item=?";
|
||||
$result = DbUtils::fetchSqlAll($pdo, $sql, array("timezone"));
|
||||
if (count($result) == 1) {
|
||||
return $result[0]["value"];
|
||||
} else {
|
||||
return "Europe/Berlin";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($_GET["command"])) {
|
||||
$command = $_GET["command"];
|
||||
|
||||
$pdo = DbUtils::openDbAndReturnPdoStatic();
|
||||
|
||||
switch ($command) {
|
||||
case "getlastosaccess":
|
||||
$ret = OsSystem::checkLastOsAccess($pdo);
|
||||
echo json_encode($ret);
|
||||
break;
|
||||
case "getlogo":
|
||||
OsSystem::getlogo($pdo);
|
||||
break;
|
||||
case "getprodimage":
|
||||
OsSystem::getprodimage($pdo,$_GET["prodid"]);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
require_once 'dbutils.php';
|
||||
require_once 'config.php';
|
||||
require_once 'system.php';
|
||||
require_once 'ossystem.php';
|
||||
|
||||
class Queue {
|
||||
public static function putintoqueue($pdo,$prodid,$tableid,$tablecode,$dailycode) {
|
||||
$timezone = System::getTimeZone($pdo);
|
||||
$timezone = OsSystem::getTimeZone($pdo);
|
||||
date_default_timezone_set($timezone);
|
||||
$ordertime = date('Y-m-d H:i:s');
|
||||
$pdo->beginTransaction();
|
||||
|
|
|
@ -1,57 +0,0 @@
|
|||
<?php
|
||||
|
||||
require_once 'dbutils.php';
|
||||
require_once 'config.php';
|
||||
|
||||
class System {
|
||||
public static function checkLastOsAccess($pdo) {
|
||||
$timezone = self::getTimeZone($pdo);
|
||||
date_default_timezone_set($timezone);
|
||||
|
||||
$sql = "SELECT date FROM %gueststatus% WHERE item=?";
|
||||
$result = DbUtils::fetchSqlAll($pdo, $sql, array('lastosaccess'));
|
||||
|
||||
if (count($result) == 0) {
|
||||
$msg = "0";
|
||||
} else {
|
||||
$lastaccess = $result[0]["date"];
|
||||
|
||||
$date = new DateTime();
|
||||
$currentTimeStamp = $date->getTimestamp();
|
||||
|
||||
if (($currentTimeStamp - $lastaccess) > 60) {
|
||||
$msg = 0;
|
||||
} else {
|
||||
$msg = 1;
|
||||
}
|
||||
}
|
||||
return array("status" => "OK","msg" => $msg);
|
||||
}
|
||||
|
||||
public static function getTimeZone($pdo) {
|
||||
$sql = "select value from %ossystem% where item=?";
|
||||
$result = DbUtils::fetchSqlAll($pdo, $sql, array("timezone"));
|
||||
if (count($result) == 1) {
|
||||
return $result[0]["value"];
|
||||
} else {
|
||||
return "Europe/Berlin";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($_GET["command"])) {
|
||||
$command = $_GET["command"];
|
||||
|
||||
$pdo = DbUtils::openDbAndReturnPdoStatic();
|
||||
|
||||
switch ($command) {
|
||||
case "getlastosaccess":
|
||||
$ret = System::checkLastOsAccess($pdo);
|
||||
echo json_encode($ret);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -31,7 +31,23 @@ class Sync {
|
|||
if (isset($systemdata["timezone"])) {
|
||||
self::updateOsAccessStatus($pdo, $systemdata["timezone"]);
|
||||
}
|
||||
if (isset($systemdata["logo"])) {
|
||||
$logo = $systemdata["logo"];
|
||||
} else {
|
||||
$logo = "";
|
||||
}
|
||||
|
||||
DbUtils::execSql($pdo, "DELETE FROM %images% WHERE name='logo'",null);
|
||||
$sql = "INSERT INTO %images% (name,content,contenttype,productid) VALUES('logo',?,?,?)";
|
||||
DbUtils::execSql($pdo, $sql, array($logo, DbUtils::$TYPE_LOGO,null));
|
||||
|
||||
$sql = "DELETE FROM %images% WHERE contenttype=?";
|
||||
DbUtils::execSql($pdo, $sql, array(DbUtils::$TYPE_PRODIMG));
|
||||
DbUtils::execSql($pdo, "OPTIMIZE TABLE %images%",null);
|
||||
if (isset($systemdata["prodimages"])) {
|
||||
self::insertProdImages($pdo, $systemdata["prodimages"]);
|
||||
}
|
||||
|
||||
return array("status" => "OK");
|
||||
} catch (Exception $ex) {
|
||||
return array("status" => "ERROR","msg" => $ex->getMessage());
|
||||
|
@ -59,6 +75,15 @@ class Sync {
|
|||
}
|
||||
}
|
||||
|
||||
private static function insertProdImages($pdo,$imagedata) {
|
||||
$sql = "INSERT INTO %images% (name,content,contenttype,productid) VALUES(?,?,?,?)";
|
||||
foreach ($imagedata as $img) {
|
||||
$prodid = $img['prodid'];
|
||||
$imgl = $img['imagedata'];
|
||||
DbUtils::execSql($pdo, $sql, array('',$imgl, DbUtils::$TYPE_PRODIMG,$prodid));
|
||||
}
|
||||
}
|
||||
|
||||
private static function updateOsAccessStatus($pdo,$timezone) {
|
||||
date_default_timezone_set($timezone);
|
||||
$date = new DateTime();
|
||||
|
@ -86,17 +111,8 @@ class Sync {
|
|||
return $result;
|
||||
}
|
||||
}
|
||||
|
||||
//ob_start();
|
||||
//echo "111";
|
||||
//var_dump($_POST);
|
||||
//$result = ob_get_clean();
|
||||
//echo "RESULT: $result ENDE";
|
||||
//
|
||||
//return;
|
||||
|
||||
if (isset($_POST["data"])) {
|
||||
|
||||
|
||||
$pdo = DbUtils::openDbAndReturnPdoStatic();
|
||||
|
||||
|
|
Binary file not shown.
|
@ -85,7 +85,7 @@ class Installer {
|
|||
}
|
||||
Database::dropTables($pdo);
|
||||
Database::createEmptyTables($pdo, $prefix);
|
||||
Database::setVersion($pdo,$prefix,"1.5.24");
|
||||
Database::setVersion($pdo,$prefix,"1.5.25");
|
||||
Database::setAccessPassword($pdo,$prefix,$adminpass);
|
||||
Database::setRefreshRate($pdo,$prefix,"5"); // default: 5 times per hour
|
||||
return array("status" => "OK","msg" => "Installation successful");
|
||||
|
|
Binary file not shown.
|
@ -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.24">
|
||||
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.25">
|
||||
|
||||
<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.24"></script>
|
||||
<script src="kitchenbar.js?v=1.5.24"></script>
|
||||
<script src="utilities.js?v=1.5.25"></script>
|
||||
<script src="kitchenbar.js?v=1.5.25"></script>
|
||||
<style>
|
||||
|
||||
#tableWithEntriesToCook,#tableWithCookedEntries,#headertableToCook
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1 +1 @@
|
|||
.roompanel{display:-webkit-flex;display:flex;-webkit-justify-content:center;justify-content:center;-webkit-flex-wrap:row nowrap;flex-flow:row nowrap;background-color:#5d6d7e;width:100%;-webkit-align-items:stretch;align-items:stretch}.roomitem{background-color:#fff6b5;padding:10px;color:black;font-weight:bold;text-align:center;border:2px solid #aaa;-webkit-flex:1;flex:10;box-shadow:10px 10px 5px #888;word-wrap:break-word}.roomitemselected{background-color:#eee6b5;height:65px;padding:10px;color:black;font-weight:bold;text-align:center;border:2px solid red;-webkit-flex:1;flex:15;box-shadow:10px 10px 5px #888}.roomtogo{display:-webkit-flex;display:flex;-webkit-justify-content:center;justify-content:center;-webkit-flex-wrap:row wrap;flex-flow:row wrap}.osroom-desk-0{height:40px}.osroom-desk-1{height:60px}.osroom-desk-2{height:80px}.osroom-desk-sel-0{height:45px}.osroom-desk-sel-1{height:65px}.osroom-desk-sel-2{height:85px}.roomname{width:100%}.roomtogoaccounted{background:white;color:black;-webkit-flex:1;flex:1;order:2;font-weight:normal}.roomchangeitem{padding:8px 16px;border-bottom:1px solid #ddd;background-color:#dd0;height:40px;font-size:16px;font-weight:bold}
|
||||
.roompanel{display:-webkit-flex;display:flex;-webkit-justify-content:center;justify-content:center;-webkit-flex-wrap:row nowrap;flex-flow:row nowrap;background-color:#5d6d7e;width:100%;-webkit-align-items:stretch;align-items:stretch}.roomitem{background-color:#fff6b5;padding:10px;color:black;font-weight:bold;text-align:center;border:2px solid #aaa;-webkit-flex:1;flex:10;box-shadow:10px 10px 5px #888;word-wrap:break-word}.roomitemselected{background-color:#eee6b5;height:65px;padding:10px;color:black;font-weight:bold;text-align:center;border:2px solid red;-webkit-flex:1;flex:15;box-shadow:10px 10px 5px #888}.roomtogo{display:-webkit-flex;display:flex;-webkit-justify-content:center;justify-content:center;-webkit-flex-wrap:row wrap;flex-flow:row wrap}.osroom-desk-0{height:40px}.osroom-desk-1{height:60px}.osroom-desk-2{height:80px}.osroom-desk-sel-0{height:45px}.osroom-desk-sel-1{height:65px}.osroom-desk-sel-2{height:85px}.roomname{width:100%}.roomtogoaccounted{background:white;color:black;-webkit-flex:1;flex:1;order:2;font-weight:normal}.roomchangeitem{padding:8px 16px;border-bottom:1px solid #ddd;background-color:#dd0;height:40px;font-size:16px;font-weight:bold}.tablereservations{font-size:7px}
|
Binary file not shown.
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 30 KiB |
|
@ -3,12 +3,12 @@
|
|||
*/
|
||||
|
||||
function createProdTableHeaderLine() {
|
||||
var txt = "<tr><th>Name"
|
||||
var txt = "<tr><th>Produktname"
|
||||
+ "<th>Typ "
|
||||
+ "<th>Durchlauf Küche"
|
||||
+ "<th>Durchlauf Bereitst."
|
||||
+ "<th>Drucker" +
|
||||
"<th id=shortnameheader class='prodheader'>Kurzname<th>Preis (A)" +
|
||||
"<th id=shortnameheader class='prodheader'>Name in Bestellansicht<th>Preis (A)" +
|
||||
"<th class='prodheader'>Preis (B)" +
|
||||
"<th class='prodheader'>Preis (C)" +
|
||||
"<th class='prodheader'>Barcode" +
|
||||
|
|
|
@ -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.24">
|
||||
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.25">
|
||||
|
||||
<link rel="stylesheet" href="php/contenthandler.php?module=admin&command=getmobilecss" />
|
||||
<link rel="stylesheet" href="php/3rdparty/orderstyle/jquery.mobile.icons.min.css" />
|
||||
|
|
|
@ -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.24">
|
||||
<link rel="stylesheet" type="text/css" href="css/numfield.css?v=1.5.24">
|
||||
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.25">
|
||||
<link rel="stylesheet" type="text/css" href="css/numfield.css?v=1.5.25">
|
||||
|
||||
<link rel="stylesheet" href="php/3rdparty/orderstyle/orderstyle.min.css" />
|
||||
<link rel="stylesheet" href="php/3rdparty/orderstyle/jquery.mobile.icons.min.css" />
|
||||
|
@ -231,7 +231,7 @@ function handleResultOfInstallCheck(is_installed) {
|
|||
if (is_installed == "Yes") {
|
||||
useInstallation();
|
||||
} else {
|
||||
setTimeout(function(){document.location.href = "install.html?v=1.5.24"},500);
|
||||
setTimeout(function(){document.location.href = "install.html?v=1.5.25"},500);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -274,13 +274,13 @@ $(document).on("pageinit", "#index-page", function () {
|
|||
|
||||
<div data-role="content">
|
||||
|
||||
|
||||
<p><div style="text-align: center;"><img src="php/contenthandler.php?module=printqueue&command=getLogoAsPng&v=1.5.25&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>
|
||||
|
||||
<form method="post">
|
||||
<table border=0>
|
||||
<tr><td>Username: <td id="userlist"></tr>
|
||||
<tr><td>Name: <td id="userlist"></tr>
|
||||
<tr><td>Modus: <td id="moduscell">
|
||||
<select name="modus" id="modus" data-theme="e">
|
||||
<option value="0">Mobil</option>
|
||||
|
|
|
@ -912,7 +912,7 @@ El servicio web OrderSprinter no requiere una conexión a Internet. Sin embargo,
|
|||
<tr id=updateline>
|
||||
<td> </td>
|
||||
<td align=center>
|
||||
<button id="updatebtn">Update -> 1.5.24</button>
|
||||
<button id="updatebtn">Update -> 1.5.25</button>
|
||||
<span id="updateinprogresstxt" style="display:none;">Update... bitte warten.</span>
|
||||
</td>
|
||||
<td> </td>
|
||||
|
|
|
@ -449,7 +449,7 @@ $zones[] = $timezone_identifiers[$i];
|
|||
echo json_encode($zones);
|
||||
} else if ($command == 'update') {
|
||||
set_time_limit(60*30);
|
||||
$installerVersion = "1.5.24";
|
||||
$installerVersion = "1.5.25";
|
||||
|
||||
$admin = new InstallAdmin();
|
||||
$pdo = $admin->openDbAndReturnPdo($_POST['host'],$_POST['db'],$_POST['user'],$_POST['password']);
|
||||
|
|
|
@ -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.24">
|
||||
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.25">
|
||||
|
||||
<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.24"></script>
|
||||
<script src="kitchenbar.js?v=1.5.24"></script>
|
||||
<script src="utilities.js?v=1.5.25"></script>
|
||||
<script src="kitchenbar.js?v=1.5.25"></script>
|
||||
<style>
|
||||
|
||||
#tableWithEntriesToCook,#tableWithCookedEntries,#headertableToCook
|
||||
|
|
|
@ -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.24">
|
||||
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.25">
|
||||
|
||||
<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.24"></script>
|
||||
<script src="elements/tablemap.js?v=1.5.24"></script>
|
||||
<script src="elements/roommap.js?v=1.5.24"></script>
|
||||
<script src="elements/groundplan.js?v=1.5.24"></script>
|
||||
<script src="utilities.js?v=1.5.25"></script>
|
||||
<script src="elements/tablemap.js?v=1.5.25"></script>
|
||||
<script src="elements/roommap.js?v=1.5.25"></script>
|
||||
<script src="elements/groundplan.js?v=1.5.25"></script>
|
||||
|
||||
<link href="php/3rdparty/hayageek_uploadfile.css" rel="stylesheet">
|
||||
<script src="php/3rdparty/hayageek_jquery_uploadfile.js"></script>
|
||||
|
@ -401,6 +401,7 @@ var MAN_SHOWPAYMENT6 = ["Lastschrift","debitsCard","Débito"];
|
|||
var MAN_SHOWPAYMENT7 = ["Hotelzimmer","Hotel room","Habitación"];
|
||||
var MAN_SHOWPAYMENT8 = ["Gast","Guest","Huésped"];
|
||||
var MAN_DBLOG = ["Debug-Logging","Debug logging","Debug logging"];
|
||||
var MAN_SHOWTRANSFERBTNS = ["'Bestellung senden'- und/oder 'Arbeitsbon'-Button einblenden","Show buttons for send orders and/or work receipts","Mostrar botones para transmitir ordenes"];
|
||||
var MAN_PRINT_EXTRAS = ["Extras auf Kassenbon","Print extras on receipts","Imprimir extras en tiquet"];
|
||||
var MAN_PRINT_EXTRAS_HINT = ["Hinweis: Extras auf Kassenbon erst ab Printserverversion 1.4.17 möglich.","Hint: Extras on receipt require printserver version 1.4.17+","Nota: Imprimir extras exije printserver 1.4.17+"];
|
||||
var MAN_FORCE_PRINT = ["Erzwinge Bondruck","Force print of receipt","Siempre imprimir tique"];
|
||||
|
@ -417,7 +418,7 @@ var MAN_USE_BARCODE = ["Barcodeeingabe","Input by barcode","Usar Codigo de barra
|
|||
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_DASH_SECTION_TXT = ["Dashboard:","Dashboard:","Dashboard:"];
|
||||
var MAN_GUEST_SYSTEM_TXT = ["Einstellungen für das Gastsystem","Settings for the Guest system","Especificación del sistema de clientes"];
|
||||
var MAN_GUEST_SYSTEM_TXT = ["Einstellungen für das Gastbestellsystem","Settings for the Guest system","Especificación del sistema de clientes"];
|
||||
var MAN_PRINT_ON_CLOSINGS = ["Tageserfassungsbons","Closing receipts","Tiques de cerramiento"];
|
||||
var MAN_SHOW_PAYMENTS_DLG = ["Zahlungswege im Zahldialog","Payment ways in payment dialog","Que modos de pagar"];
|
||||
var MAN_ROOMCHANGE_WARNING = ["Alten Raumplan löschen und neuen festlegen? Bestellungen offener Tische gehen verloren!","Replace room map? Orders of open tables will be lost!","Sustituir mapa de mesas? Orders de mesas abiertas van a ser borradas!"];
|
||||
|
@ -497,7 +498,7 @@ 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 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];
|
||||
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];
|
||||
|
||||
var numberOfClosings = 0;
|
||||
|
||||
|
@ -648,7 +649,8 @@ var generalValuesSettings = [
|
|||
["appid","App-Id","i",0],
|
||||
["sumupfailuretext",MAN_SUMUPFAILURETEXT[lang],"i",0,""],
|
||||
["printcash",MAN_PRINTCASH[lang],"s",64],
|
||||
["showerrorlog",MAN_SHOW_ERRORLOG[lang],"s",65]
|
||||
["showerrorlog",MAN_SHOW_ERRORLOG[lang],"s",65],
|
||||
["showtransferbtns",MAN_SHOWTRANSFERBTNS[lang],"s",66]
|
||||
];
|
||||
|
||||
var predef = "";
|
||||
|
@ -852,6 +854,20 @@ function setLanguage(l) {
|
|||
$("#pdfreporthint").html(MAN_PDF_REPORT_HINT[l]);
|
||||
}
|
||||
|
||||
function toggleinlinedisplayelem(iconid) {
|
||||
var mydiv = document.getElementById(iconid);
|
||||
mydiv.style.display = (mydiv.style.display=='inline'?'none':'inline');
|
||||
}
|
||||
|
||||
function showconfsection(id) {
|
||||
if(document.getElementById) {
|
||||
var mydiv = document.getElementById(id);
|
||||
mydiv.style.display = (mydiv.style.display=='block'?'none':'block');
|
||||
toggleinlinedisplayelem(id + "_expandicon");
|
||||
toggleinlinedisplayelem(id + "_collapseicon");
|
||||
}
|
||||
}
|
||||
|
||||
function createMonthSelection(label) {
|
||||
var monthHtml = '<label for="' + label + '">' + MAN_MONTH[lang] + '</label>'
|
||||
+ '<select name="' + label + '" id="' + label + '" data-theme="e">'
|
||||
|
@ -1001,6 +1017,7 @@ function insertGeneralConfigItems(configResult) {
|
|||
$("#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));
|
||||
$("#partOfShowtransferbtns").html(createYesNo("showtransferbtns",MAN_SHOWTRANSFERBTNS, values.showtransferbtns));
|
||||
$("#partOfPrintpickups").html(createPickupConfigPart(values.printpickups));
|
||||
$("#partOfBillprintjobs").html(createBillprintjobsConfigPart(values.billprintjobs));
|
||||
$("#partOfForceprint").html(createYesNo("forceprint",MAN_FORCE_PRINT, values.forceprint));
|
||||
|
@ -1130,6 +1147,7 @@ function insertGeneralConfigItems(configResult) {
|
|||
generalVals[63] = values.sumupforcard;
|
||||
generalVals[64] = values.printcash;
|
||||
generalVals[65] = values.showerrorlog;
|
||||
generalVals[66] = values.showtransferbtns;
|
||||
|
||||
defaulttmp = values.defaulttmp;
|
||||
|
||||
|
@ -1591,7 +1609,7 @@ function initRestoreFileUpload() {
|
|||
} else {
|
||||
alert("Import war erfolgreich.");
|
||||
setTimeout(function(){
|
||||
document.location.href = "index.html?v=1.5.24";
|
||||
document.location.href = "index.html?v=1.5.25";
|
||||
},250);
|
||||
}
|
||||
},
|
||||
|
@ -2262,7 +2280,7 @@ function updateOneSingleFile() {
|
|||
setTimeout(function(){
|
||||
$("#sliderarea").hide();
|
||||
var millis=getMillis();
|
||||
document.location.href = "install.html?v=1.5.24&mode=onlyupdate&n=" + millis;
|
||||
document.location.href = "install.html?v=1.5.25&mode=onlyupdate&n=" + millis;
|
||||
},250);
|
||||
}
|
||||
}
|
||||
|
@ -3730,9 +3748,9 @@ $(document).on("pageinit", "#admin-page", function () {
|
|||
<h3><span id="configtxt">Konfiguration</span></h3>
|
||||
<form action="#" method="get">
|
||||
|
||||
<br><b><u><span id="generalsectiontxt">GENERAL</span></u></b><br><br>
|
||||
|
||||
|
||||
<p><a class="genconflink" href="" onclick="javascript:showconfsection('confgensection'); return false">
|
||||
<span id="generalsectiontxt">GENERAL</span> <span id="confgensection_expandicon" style="display:inline;">⇲</span><span id="confgensection_collapseicon" style="display:none;">⇱</span></a>
|
||||
<div style="display: none" id="confgensection">
|
||||
|
||||
<div id="partOfDefaultView"></div>
|
||||
|
||||
|
@ -3831,9 +3849,12 @@ $(document).on("pageinit", "#admin-page", function () {
|
|||
<label for="cbirdfolder"><span id="cbirdfoldertxt">CBird Imporfolder:</span></label>
|
||||
<input type="text" value="" data-mini="true" placeholder="" id="cbirdfolder" data-theme="c" class="genConfigEl"/>
|
||||
</div>
|
||||
</div>
|
||||
</div> <!-- partIfAustriaEnabled -->
|
||||
</div> <!-- confgensection -->
|
||||
|
||||
<br><b><u><span id="transfersectiontxt">Datentransfer</span></u></b><br><br>
|
||||
<p><a class="genconflink" href="" onclick="javascript:showconfsection('confdatatransfersection'); return false">
|
||||
<span id="transfersectiontxt">Datentransfer</span> <span id="confdatatransfersection_expandicon" style="display:inline;">⇲</span><span id="confdatatransfersection_collapseicon" style="display:none;">⇱</span></a>
|
||||
<div style="display: none" id="confdatatransfersection">
|
||||
|
||||
<div data-role="fieldcontain">
|
||||
<label for="ftphost"><span id="ftphosttxt">FTP-Server:</span></label>
|
||||
|
@ -3847,9 +3868,12 @@ $(document).on("pageinit", "#admin-page", function () {
|
|||
<label for="ftppass"><span id="ftppasstxt">FTP-Pass:</span></label>
|
||||
<input type="password" value="" data-mini="true" placeholder="" id="ftppass" data-theme="c" class="genConfigEl"/>
|
||||
</div>
|
||||
</div> <!-- confdatatransfersection -->
|
||||
|
||||
<p><a class="genconflink" href="" onclick="javascript:showconfsection('conftaxsection'); return false">
|
||||
<span id="taxessectiontxt">Steuern</span> <span id="conftaxsection_expandicon" style="display:inline;">⇲</span><span id="conftaxsection_collapseicon" style="display:none;">⇱</span></a>
|
||||
<div style="display: none" id="conftaxsection">
|
||||
|
||||
<br><b><u><span id="taxessectiontxt">Steuern</span></u></b><br><br>
|
||||
<div data-role="fieldcontain">
|
||||
<label for="usstval">MwSt/Tax/IVA:</label>
|
||||
<input type="text" value="" data-mini="true" placeholder="19,0" id="usstval" data-theme="c" class="genConfigEl"/>
|
||||
|
@ -3859,9 +3883,12 @@ $(document).on("pageinit", "#admin-page", function () {
|
|||
<input type="text" value="" data-mini="true" placeholder="7,0" id="togotaxval" data-theme="c" class="genConfigEl"/>
|
||||
</div>
|
||||
<i id="taxusage" style="padding-left: 50px;padding-right: 50px;">Hinweis zu Steuern</i><br><br>
|
||||
|
||||
</div> <!-- conftaxsection -->
|
||||
|
||||
<br><b><u><span id="securitysectiontxt">Sicherheit</span></u></b><br><br>
|
||||
<p><a class="genconflink" href="" onclick="javascript:showconfsection('confsecsection'); return false">
|
||||
<span id="securitysectiontxt">Sicherheit</span> <span id="confsecsection_expandicon" style="display:inline;">⇲</span><span id="confsecsection_collapseicon" style="display:none;">⇱</span></a>
|
||||
<div style="display: none" id="confsecsection">
|
||||
|
||||
<div data-role="fieldcontain">
|
||||
<label for="stornocode">Stornocode (Bons):</label>
|
||||
<input type="password" value="" data-mini="true" id="stornocode" class="genConfigEl"/>
|
||||
|
@ -3879,8 +3906,11 @@ $(document).on("pageinit", "#admin-page", function () {
|
|||
<label for="remoteaccesscode">Fernzugriffscode:</label>
|
||||
<input type="password" value="" data-mini="true" id="remoteaccesscode" class="genConfigEl"/>
|
||||
</div>
|
||||
|
||||
<br><b><u><span id="generalprintsectiontxt">Drucken allg.:</span></u></b><br><br>
|
||||
</div> <!-- consecsection -->
|
||||
|
||||
<p><a class="genconflink" href="" onclick="javascript:showconfsection('confprintsection'); return false">
|
||||
<span id="generalprintsectiontxt">Drucken allg.:</span> <span id="confprintsection_expandicon" style="display:inline;">⇲</span><span id="confprintsection_collapseicon" style="display:none;">⇱</span></a>
|
||||
<div style="display: none" id="confprintsection">
|
||||
|
||||
<div id="partOfPayPrintType" style="display:none;"></div>
|
||||
<div data-role="fieldcontain">
|
||||
|
@ -3898,8 +3928,11 @@ $(document).on("pageinit", "#admin-page", function () {
|
|||
<span id=addrecprinterhint></span>
|
||||
</div>
|
||||
<div id="partOfPrintcash"></div>
|
||||
|
||||
<br><b><u><span id="workreceiptssectiontxt">Arbeitsbons</span></u></b><br><br>
|
||||
</div> <!-- confprintsection -->
|
||||
|
||||
<p><a class="genconflink" href="" onclick="javascript:showconfsection('confworkrecsection'); return false">
|
||||
<span id="workreceiptssectiontxt">Arbeitsbons</span> <span id="confworkrecsection_expandicon" style="display:inline;">⇲</span><span id="confworkrecsection_collapseicon" style="display:none;">⇱</span></a>
|
||||
<div style="display: none" id="confworkrecsection">
|
||||
|
||||
<div id="partOfDigiprintworkContainer">
|
||||
<div id="partOfDigiprintwork"></div>
|
||||
|
@ -3920,8 +3953,12 @@ $(document).on("pageinit", "#admin-page", function () {
|
|||
<div id="partOfGroupWorkItemsf"></div>
|
||||
<div id="partOfGroupWorkItemsd"></div>
|
||||
<div id="partOfBillprintjobs"></div>
|
||||
|
||||
<br><b><u><span id="discountsectiontxt">Rabatte</span></u></b><br><br>
|
||||
</div> <!-- confworkrecsection -->
|
||||
|
||||
<p><a class="genconflink" href="" onclick="javascript:showconfsection('confdiscountssection'); return false">
|
||||
<span id="discountsectiontxt">Rabatte</span> <span id="confdiscountssection_expandicon" style="display:inline;">⇲</span><span id="confdiscountssection_collapseicon" style="display:none;">⇱</span></a>
|
||||
<div style="display: none" id="confdiscountssection">
|
||||
|
||||
<div data-role="fieldcontain">
|
||||
<label for="discountname1"><span id="discountname1txt">Rabattname 1:</span></label>
|
||||
<input type="text" value="" data-mini="true" placeholder="Bezeichnung" id="discountname1" data-theme="c" class="genConfigEl"/>
|
||||
|
@ -3938,8 +3975,12 @@ $(document).on("pageinit", "#admin-page", function () {
|
|||
<div id="partOfDiscount1"></div>
|
||||
<div id="partOfDiscount2"></div>
|
||||
<div id="partOfDiscount3"></div>
|
||||
|
||||
<br><b><u><span id="pickupsectiontxt">Abholansicht</span></u></b><br><br>
|
||||
</div> <!-- confdiscountssection -->
|
||||
|
||||
<p><a class="genconflink" href="" onclick="javascript:showconfsection('confpickupsection'); return false">
|
||||
<span id="pickupsectiontxt">Abholansicht</span> <span id="confpickupsection_expandicon" style="display:inline;">⇲</span>
|
||||
<span id="confpickupsection_collapseicon" style="display:none;">⇱</span></a>
|
||||
<div style="display: none" id="confpickupsection">
|
||||
|
||||
<div id="partOfPrintpickups"></div>
|
||||
|
||||
|
@ -3949,8 +3990,12 @@ $(document).on("pageinit", "#admin-page", function () {
|
|||
</div>
|
||||
<div id="partOfShowpickupdelbtn"></div>
|
||||
<div id="partOfShowpickhelp"></div>
|
||||
|
||||
<br><b><u><span id="emailconfigsectiontxt">Email</span></u></b><br><br>
|
||||
</div> <!-- confpickupsection -->
|
||||
|
||||
<p><a class="genconflink" href="" onclick="javascript:showconfsection('confemailsection'); return false">
|
||||
<span id="emailconfigsectiontxt">Email</span> <span id="confemailsection_expandicon" style="display:inline;">⇲</span>
|
||||
<span id="confemailsection_collapseicon" style="display:none;">⇱</span></a>
|
||||
<div style="display: none" id="confemailsection">
|
||||
|
||||
<div data-role="fieldcontain">
|
||||
<label for="smtphost"><span id="smtphosttxt">SMTP Host:</span></label>
|
||||
|
@ -3991,8 +4036,13 @@ $(document).on("pageinit", "#admin-page", function () {
|
|||
<label for="receiveremail"><span id="toemailtxt">Standard Emailempfänger:</span></label>
|
||||
<input type="email" value="" data-mini="true" placeholder="gastwirt@anbieter.de" id="receiveremail" data-theme="c" class="genConfigEl"/>
|
||||
</div>
|
||||
|
||||
<br><b><u><span id="templatesectiontxt">Templates</span></u></b><br><br>
|
||||
</div> <!-- confemailsection -->
|
||||
|
||||
<p><a class="genconflink" href="" onclick="javascript:showconfsection('conftemplatessection'); return false">
|
||||
<span id="templatesectiontxt">Templates</span> <span id="conftemplatessection_expandicon" style="display:inline;">⇲</span>
|
||||
<span id="conftemplatessection_collapseicon" style="display:none;">⇱</span></a>
|
||||
<div style="display: none" id="conftemplatessection">
|
||||
|
||||
<div data-role="fieldcontain">
|
||||
<label for="rectemplate">Kassenbonvorlage:</label>
|
||||
<textarea cols="40" rows="8" name="rectemplate" id="rectemplate" class="genConfigEl" style="background-color:#FFFFFF;color:black;"></textarea>
|
||||
|
@ -4031,8 +4081,13 @@ $(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>
|
||||
|
||||
<br><b><u><span id="sumuptxt">SumUp-Anbindung</span></u></b><br><br>
|
||||
</div> <!-- conftemplatessection -->
|
||||
|
||||
<p><a class="genconflink" href="" onclick="javascript:showconfsection('confsumupsection'); return false">
|
||||
<span id="sumuptxt">SumUp-Anbindung</span> <span id="confsumupsection_expandicon" style="display:inline;">⇲</span>
|
||||
<span id="confsumupsection_collapseicon" style="display:none;">⇱</span></a>
|
||||
<div style="display: none" id="confsumupsection">
|
||||
|
||||
<div id="partOfSumupforcard"></div>
|
||||
<div data-role="fieldcontain">
|
||||
<label for="affiliatekey">Affiliate Key:</label>
|
||||
|
@ -4046,8 +4101,13 @@ $(document).on("pageinit", "#admin-page", function () {
|
|||
<label for="sumupfailuretext"><span id="sumupfailuretexttxt">Stornotext:</span></label>
|
||||
<input type="text" value="" data-mini="true" placeholder="" id="sumupfailuretext" data-theme="c" class="genConfigEl"/>
|
||||
</div>
|
||||
</div> <!-- confsumupsection -->
|
||||
|
||||
<p><a class="genconflink" href="" onclick="javascript:showconfsection('conftimetracksection'); return false">
|
||||
<span id="timetrackingtxt">Zeitmanagement</span> <span id="conftimetracksection_expandicon" style="display:inline;">⇲</span>
|
||||
<span id="conftimetracksection_collapseicon" style="display:none;">⇱</span></a>
|
||||
<div style="display: none" id="conftimetracksection">
|
||||
|
||||
<br><b><u><span id="timetrackingtxt">Zeitmanagement</span></u></b><br><br>
|
||||
<div data-role="fieldcontain">
|
||||
<label for="minbeforecome"><span id="minbeforecometxt">Stempelminuten früher:</span></label>
|
||||
<input type="text" value="" data-mini="true" placeholder="0" id="minbeforecome" data-theme="c" class="genConfigEl"/>
|
||||
|
@ -4056,13 +4116,21 @@ $(document).on("pageinit", "#admin-page", function () {
|
|||
<label for="minaftergo"><span id="minaftergotxt">Stempelminuten später</span></label>
|
||||
<input type="text" value="" data-mini="true" placeholder="0" id="minaftergo" data-theme="c" class="genConfigEl"/>
|
||||
</div>
|
||||
|
||||
<br><b><u><span id="tasktxt">Aufgaben</span></u></b><br><br>
|
||||
</div> <!-- conftimetracksection -->
|
||||
|
||||
<p><a class="genconflink" href="" onclick="javascript:showconfsection('conftaskssection'); return false">
|
||||
<span id="tasktxt">Aufgaben</span> <span id="conftaskssection_expandicon" style="display:inline;">⇲</span>
|
||||
<span id="conftaskssection_collapseicon" style="display:none;">⇱</span></a>
|
||||
<div style="display: none" id="conftaskssection">
|
||||
<div id="partOfTaskallasssign"></div>
|
||||
<div id="partOfTaskifempty"></div>
|
||||
<div id="partOfTaskownerempty"></div>
|
||||
|
||||
<br><b><u><span id="mobilviewsectiontxt">MOBILANSICHT</span></u></b><br><br>
|
||||
</div> <!-- conftaskssection -->
|
||||
|
||||
<p><a class="genconflink" href="" onclick="javascript:showconfsection('confmobilsection'); return false">
|
||||
<span id="mobilviewsectiontxt">MOBILANSICHT</span> <span id="confmobilsection_expandicon" style="display:inline;">⇲</span>
|
||||
<span id="confmobilsection_collapseicon" style="display:none;">⇱</span></a>
|
||||
<div style="display: none" id="confmobilsection">
|
||||
|
||||
<div id="partOfProminentSearch"></div>
|
||||
|
||||
|
@ -4072,21 +4140,34 @@ $(document).on("pageinit", "#admin-page", function () {
|
|||
</div>
|
||||
|
||||
<div id="partOfPriceinlist"></div>
|
||||
|
||||
<br><b><u><span id="desktopviewsectiontxt">DESKTOPANSICHT</span></u></b><br><br>
|
||||
</div> <!-- confmobilsection -->
|
||||
|
||||
<p><a class="genconflink" href="" onclick="javascript:showconfsection('confdesksection'); return false">
|
||||
<span id="desktopviewsectiontxt">DESKTOPANSICHT</span> <span id="confdesksection_expandicon" style="display:inline;">⇲</span>
|
||||
<span id="confdesksection_collapseicon" style="display:none;">⇱</span></a>
|
||||
<div style="display: none" id="confdesksection">
|
||||
|
||||
<div>
|
||||
<div id="partOfReturntoorder"></div>
|
||||
<i id=returntoorderhint style="padding-left: 50px;padding-right: 50px;">Hinweis: siehe Anleitung</i>
|
||||
</div>
|
||||
|
||||
<br><b><u><span id="closingprintstxt">Tageserfassungsbons</span></u></b><br><br>
|
||||
</div> <!-- confdesksection -->
|
||||
|
||||
<p><a class="genconflink" href="" onclick="javascript:showconfsection('confclosingssection'); return false">
|
||||
<span id="closingprintstxt">Tageserfassungsbons</span> <span id="confclosingssection_expandicon" style="display:inline;">⇲</span>
|
||||
<span id="confclosingssection_collapseicon" style="display:none;">⇱</span></a>
|
||||
<div style="display: none" id="confclosingssection">
|
||||
|
||||
<div id="partOfclosshowci"></div>
|
||||
<div id="partOfclosshowpaytaxes"></div>
|
||||
<div id="partOfclosshowprods"></div>
|
||||
|
||||
<br><b><u><span id="showpaymentstxt">Zahlungswege</span></u></b><br><br>
|
||||
</div> <!-- confclosingssection -->
|
||||
|
||||
<p><a class="genconflink" href="" onclick="javascript:showconfsection('confpaywaysection'); return false">
|
||||
<span id="showpaymentstxt">Zahlungswege</span> <span id="confpaywaysection_expandicon" style="display:inline;">⇲</span>
|
||||
<span id="confpaywaysection_collapseicon" style="display:none;">⇱</span></a>
|
||||
<div style="display: none" id="confpaywaysection">
|
||||
|
||||
<div id="partOfshowpayments"></div>
|
||||
<i id=showpaymentshint style="padding-left: 50px;padding-right: 50px;">Hinweis: alles Bar</i><br>
|
||||
|
@ -4097,14 +4178,22 @@ $(document).on("pageinit", "#admin-page", function () {
|
|||
<div id="partOfshowpayment6"></div>
|
||||
<div id="partOfshowpayment7"></div>
|
||||
<div id="partOfshowpayment8"></div>
|
||||
|
||||
<br><b><u><span id="dashsectiontxt">Dashboard</span></u></b><br><br>
|
||||
</div> <!-- confpaywaysection -->
|
||||
|
||||
<p><a class="genconflink" href="" onclick="javascript:showconfsection('confdashsection'); return false">
|
||||
<span id="dashsectiontxt">Dashboard</span> <span id="confdashsection_expandicon" style="display:inline;">⇲</span>
|
||||
<span id="confdashsection_collapseicon" style="display:none;">⇱</span></a>
|
||||
<div style="display: none" id="confdashsection">
|
||||
<div id="partOfDashslot1"></div>
|
||||
<div id="partOfDashslot2"></div>
|
||||
<div id="partOfDashslot3"></div>
|
||||
</div> <!-- confdashsection -->
|
||||
|
||||
<br><b><u><span id="guestsystemsectiontxt">Gastsystem</span></u></b><br><br>
|
||||
|
||||
<p><a class="genconflink" href="" onclick="javascript:showconfsection('confguestsyssection'); return false">
|
||||
<span id="guestsystemsectiontxt">Gastsystem</span> <span id="confguestsyssection_expandicon" style="display:inline;">⇲</span>
|
||||
<span id="confguestsyssection_collapseicon" style="display:none;">⇱</span></a>
|
||||
<div style="display: none" id="confguestsyssection">
|
||||
|
||||
<div data-role="fieldcontain">
|
||||
<label for="guesturl">Webserver-Gastsystem:</label>
|
||||
<input type="text" value="" data-mini="true" placeholder="http://www.restaurant.de" id="guesturl" data-theme="c" class="genConfigEl"/>
|
||||
|
@ -4124,13 +4213,18 @@ $(document).on("pageinit", "#admin-page", function () {
|
|||
<div id="partOfAskdaycode"></div>
|
||||
<div id="partOfAsktablecode"></div>
|
||||
<div id="partOfShowdaycode"></div>
|
||||
|
||||
<div data-role="fieldcontain">
|
||||
<label for="guesttimeout"><span id="guesttimeoutxt">Timeout</span>:</label>
|
||||
<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>
|
||||
|
||||
<br><b><u><span id="specialsettingssectiontxt">Spezialeinstellungen</span></u></b><br><br>
|
||||
</div> <!-- confguestsyssection -->
|
||||
|
||||
<p><a class="genconflink" href="" onclick="javascript:showconfsection('confspecialssection'); return false">
|
||||
<span id="specialsettingssectiontxt">Spezialeinstellungen</span> <span id="confspecialssection_expandicon" style="display:inline;">⇲</span>
|
||||
<span id="confspecialssection_collapseicon" style="display:none;">⇱</span></a>
|
||||
<div style="display: none" id="confspecialssection">
|
||||
|
||||
<div id="partOfOneclickcooked"></div>
|
||||
|
||||
|
@ -4148,9 +4242,15 @@ $(document).on("pageinit", "#admin-page", function () {
|
|||
<div id="partOfBeepCooked"></div>
|
||||
<div id="partOfShowtogo"></div>
|
||||
<div id="partOfShowprepinwaiter"></div>
|
||||
<div id="partOfShowtransferbtns"></div>
|
||||
<div id="partOfDblog"></div>
|
||||
|
||||
<br><b><u><span id="pollssectiontxt">Druckabfrageintervalle</span></u></b><br><br>
|
||||
</div> <!-- confspecialssection -->
|
||||
|
||||
<p><a class="genconflink" href="" onclick="javascript:showconfsection('confprintpollssection'); return false">
|
||||
<span id="pollssectiontxt">Druckabfrageintervalle</span> <span id="confprintpollssection_expandicon" style="display:inline;">⇲</span>
|
||||
<span id="confprintpollssection_collapseicon" style="display:none;">⇱</span></a>
|
||||
<div style="display: none" id="confprintpollssection">
|
||||
|
||||
<i id=pollhint style="padding-left: 50px;padding-right: 50px;">Hinweis: Printserverversion 1.5.6+</i>
|
||||
<div data-role="fieldcontain">
|
||||
<label for="pollbills"><span id="pollbillstxt">Abfrageintervall Rechnungen:</span></label>
|
||||
|
@ -4172,8 +4272,13 @@ $(document).on("pageinit", "#admin-page", function () {
|
|||
<label for="pollpickups"><span id="pollpickupstxt">Abfrageintervall Abh.bons</span></label>
|
||||
<input type="text" value="" data-mini="true" placeholder="2" id="pollpickups" data-theme="c" class="genConfigEl"/>
|
||||
</div>
|
||||
|
||||
<br><b><u><span id="serversectiontxt">Server</span></u></b><br><br>
|
||||
</div> <!-- confprintpollssection -->
|
||||
|
||||
<p><a class="genconflink" href="" onclick="javascript:showconfsection('confserversection'); return false">
|
||||
<span id="serversectiontxt">Server</span> <span id="confserversection_expandicon" style="display:inline;">⇲</span>
|
||||
<span id="confserversection_collapseicon" style="display:none;">⇱</span></a>
|
||||
<div style="display: none" id="confserversection">
|
||||
|
||||
<div data-role="fieldcontain">
|
||||
<label for="memorylimit"><span id="memorylimittxt">PHP Memory Limit:</span></label>
|
||||
<input type="text" value="" data-mini="true" placeholder="256" id="memorylimit" data-theme="c" class="genConfigEl"/>
|
||||
|
@ -4196,7 +4301,8 @@ $(document).on("pageinit", "#admin-page", function () {
|
|||
</div>
|
||||
|
||||
<p>
|
||||
|
||||
</div> <!-- confserversection -->
|
||||
|
||||
<br><b><u><span id="applysectiontxt">Ändern</span></u></b><br><br>
|
||||
<div style="margin-left:30px;margin-right:30px;">
|
||||
<button type="submit" data-theme="f" data-icon="check" id="changeConfig" style="height:150px;">
|
||||
|
@ -4289,7 +4395,7 @@ $(document).on("pageinit", "#admin-page", function () {
|
|||
<p>Einrückungen bilden das Produktangebot hierarchisch ab. Die tiefsten Einrückungen stellen die <i>Produkte</i> dar,
|
||||
alle Eebenen darüber die <i>Kategorien</i>.
|
||||
|
||||
<p>Die einfachste Form einer Speisekarte (Angabe des Langnames und des Preises für alle Preisstufen) sieht folgendermaßen aus:
|
||||
<p>Die einfachste Form einer Speisekarte (Angabe des Produktnamens und des Preises für alle Preisstufen) sieht folgendermaßen aus:
|
||||
|
||||
<pre>
|
||||
Speisen
|
||||
|
@ -4306,7 +4412,7 @@ $(document).on("pageinit", "#admin-page", function () {
|
|||
<h3>Produkteinträge</h3>
|
||||
|
||||
<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>Langname des Produkts; Preis # Eigenschaft1:Wert1; Eigenschaft2: Wert2</i>.
|
||||
festgelegt werden, können diese hinter einem Doppelkreuz per Semikolon getrennt angegeben werden: <i>Produktname; Preis # Eigenschaft1:Wert1; Eigenschaft2: Wert2</i>.
|
||||
|
||||
<p>Folgende Eigenschaften können angegeben werden:
|
||||
|
||||
|
@ -4315,10 +4421,10 @@ $(document).on("pageinit", "#admin-page", function () {
|
|||
so sollte man die ID-Kennzeichnung beibehalten. Nur so kann das System das Produkt eindeutig identifizieren und in der
|
||||
Statistik später eindeutig zuordnen. Es ist wichtig, keine eigenen IDs zu vergeben, denn neue IDs werden stets
|
||||
vom OrderSprinter erzeugt!
|
||||
<li><b>Kurzname</b>: Der Kurzname ist die Produktbezeichnung, die auf dem Bestellterminal erscheint. Wenn beispielsweise die übergeordnete
|
||||
Kategorie <i>Cola</i> lautet, kann man darunter Produkte mit den Kurznamen <i>0,3l</i> und <i>0,5l</i> eintragen und damit die Übersicht auf
|
||||
mobilen Geräten verbessern. Der Langname sollte jedoch die komplette Bezeichnung enthalten (<i>Cola 0,2l</i> und <i>Cola 0,5l</i>). Wird
|
||||
der Kurzname nicht angegeben, wird automatisch der Langname verwendet.
|
||||
<li><b>Kurzname</b>: Dies ist die Produktbezeichnung, die auf dem Bestellterminal erscheint. Wenn beispielsweise die übergeordnete
|
||||
Kategorie <i>Cola</i> lautet, kann man darunter Produkte mit den Bestellansichtsnamen <i>0,3l</i> und <i>0,5l</i> eintragen und damit die Übersicht auf
|
||||
mobilen Geräten verbessern. Der Produktname sollte jedoch die komplette Bezeichnung enthalten (<i>Cola 0,2l</i> und <i>Cola 0,5l</i>). Wird
|
||||
der Name für die Bestellansicht nicht angegeben, wird automatisch der Produktname verwendet.
|
||||
<li><b>vorhanden</b>: Wenn ein Produkt zwar in der Speisekarte eingetragen werden soll, jedoch temporär nicht verfügbar ist, kann man dies
|
||||
kennzeichnen, indem man den Wert auf <i>0</i> oder <i>nein</i> setzt.
|
||||
<li><b>PreisB</b>: Preis der Preisstufe B. Wird diese Eigenschaft nicht angegeben, wird der Preis A verwendet, d.h. der Preis vor dem Doppelkreuz.
|
||||
|
@ -4349,6 +4455,7 @@ $(document).on("pageinit", "#admin-page", function () {
|
|||
<pre>
|
||||
Cola 0,2l; 2,30 # Kurzname: 0.2l; vorhanden:nein; PreisB: 1,90
|
||||
</pre>
|
||||
Der Kurzname ist der Name des Produktes, wie es in der Bestellansicht aufgeführt ist.
|
||||
|
||||
<h3>Kategorien</h3>
|
||||
|
||||
|
@ -4372,7 +4479,7 @@ $(document).on("pageinit", "#admin-page", function () {
|
|||
hat demnach folgendes Aussehen (Beispiel):
|
||||
|
||||
<pre>
|
||||
!Extraname (ID:8) 12,34 ; (45),Langname eines Produkts,(49),(50)
|
||||
!Extraname (ID:8) 12,34 ; (45),Produktname,(49),(50)
|
||||
</pre>
|
||||
|
||||
<p>Dabei gilt:
|
||||
|
@ -4381,10 +4488,10 @@ $(document).on("pageinit", "#admin-page", function () {
|
|||
beibehalten. Ein selbt erstellter neuer Extras-Eintrag sollte keine ID-Nummer enthalten.
|
||||
<li>Der Wert 12,34 ist der Aufpreis.
|
||||
<li>Hinter dem Semikolon wurden Komma-getrennt Produkte angegeben, die mit diesem Extra bestellt werden können, in diesem Fall
|
||||
die Produkte mit der ID 45, 49 und 50 sowie ein Produkt mit dem Langnamen <i>Langname eines Produkts</i>.
|
||||
die Produkte mit der ID 45, 49 und 50 sowie ein Produkt mit dem Namen <i>Produktname</i>.
|
||||
</ul>
|
||||
|
||||
<p><i>Hinweis:</i> Gibt es den Langnamen mehrfach, wird das Extra auch mehrfach zugewiesen.
|
||||
<p><i>Hinweis:</i> Gibt es den Produktnamen mehrfach, wird das Extra auch mehrfach zugewiesen.
|
||||
|
||||
<h3>Reservierte Buchstaben</h3>
|
||||
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1029,7 +1029,7 @@ class Admin {
|
|||
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'","'usebarcode'","'startprodsearch'","'priceinlist'","'showdaycode'","'dailycode'","'showtogo'","'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'","'showtransferbtns'"));
|
||||
$sql = "select name,setting FROM %config% WHERE name in ($configItems)";
|
||||
$stmt = $pdo->prepare(DbUtils::substTableAlias($sql));
|
||||
$stmt->execute();
|
||||
|
@ -1173,6 +1173,7 @@ class Admin {
|
|||
array("usebarcode",0,false),
|
||||
array("defaultview",0,false),
|
||||
array("dblog",1,false),
|
||||
array("showtransferbtns",1,false),
|
||||
array("printpickups",0,false),
|
||||
array("billprintjobs",2,false),
|
||||
array("printextras",0,false),
|
||||
|
@ -1411,7 +1412,7 @@ class Admin {
|
|||
$view = "preferences.html";
|
||||
}
|
||||
|
||||
echo json_encode($view . "?v=1.5.24");
|
||||
echo json_encode($view . "?v=1.5.25");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1632,31 +1633,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.24"); }
|
||||
if ($_SESSION['right_waiter']) { $mainMenu[] = array("name" => $waitertxt[$lang], "link" => "waiter.html?v=1.5.25"); }
|
||||
} else {
|
||||
if ($_SESSION['right_waiter']) { $mainMenu[] = array("name" => $waiterdesktxt[$lang], "link" => "waiterdesktop.php?v=1.5.24"); }
|
||||
if ($_SESSION['right_waiter']) { $mainMenu[] = array("name" => $waiterdesktxt[$lang], "link" => "waiterdesktop.php?v=1.5.25"); }
|
||||
}
|
||||
if ($_SESSION['right_kitchen']) { $mainMenu[] = array("name" => $kitchentxt[$lang], "link" => "kitchen.html?v=1.5.24"); }
|
||||
if ($_SESSION['right_bar']) { $mainMenu[] = array("name" => "Bar", "link" => "bar.html?v=1.5.24"); }
|
||||
if ($_SESSION['right_supply']) { $mainMenu[] = array("name" => $supplytxt[$lang], "link" => "supplydesk.html?v=1.5.24"); }
|
||||
if ($_SESSION['right_kitchen']) { $mainMenu[] = array("name" => $kitchentxt[$lang], "link" => "kitchen.html?v=1.5.25"); }
|
||||
if ($_SESSION['right_bar']) { $mainMenu[] = array("name" => "Bar", "link" => "bar.html?v=1.5.25"); }
|
||||
if ($_SESSION['right_supply']) { $mainMenu[] = array("name" => $supplytxt[$lang], "link" => "supplydesk.html?v=1.5.25"); }
|
||||
if ($_SESSION['modus'] == 0) {
|
||||
if ($_SESSION['right_paydesk']) { $mainMenu[] = array("name" => $paydesktxt[$lang], "link" => "paydesk.html?v=1.5.24"); }
|
||||
if ($_SESSION['right_paydesk']) { $mainMenu[] = array("name" => $paydesktxt[$lang], "link" => "paydesk.html?v=1.5.25"); }
|
||||
}
|
||||
if ($_SESSION['right_statistics']) { $mainMenu[] = array("name" => $stattxt[$lang], "link" => "reports.html?v=1.5.24"); }
|
||||
if ($_SESSION['right_bill']) { $mainMenu[] = array("name" => $bontxt[$lang], "link" => "bill.html?v=1.5.24"); }
|
||||
if ($_SESSION['right_products']) { $mainMenu[] = array("name" => $prodtxt[$lang], "link" => "products.html?v=1.5.24"); }
|
||||
if ($_SESSION['right_reservation']) { $mainMenu[] = array("name" => $restxt[$lang], "link" => "reservation.html?v=1.5.24"); }
|
||||
if ($_SESSION['right_tasks'] || $_SESSION['right_tasksmanagement']) { $mainMenu[] = array("name" => $taskstxt[$lang], "link" => "tasks.html?v=1.5.24"); }
|
||||
if ($_SESSION['right_rating']) { $mainMenu[] = array("name" => $ratingtxt[$lang], "link" => "rating.html?v=1.5.24"); }
|
||||
if ($_SESSION['right_customers']) { $mainMenu[] = array("name" => $customerstxt[$lang], "link" => "customers.html?v=1.5.24"); }
|
||||
if ($_SESSION['right_pickups']) { $mainMenu[] = array("name" => $pickupstxt[$lang], "link" => "pickups.html?v=1.5.24"); }
|
||||
if ($_SESSION['right_dash']) { $mainMenu[] = array("name" => $dashtxt[$lang], "link" => "dash.php?v=1.5.24"); }
|
||||
if ($_SESSION['right_manager'] || $_SESSION['is_admin'] || $_SESSION['right_closing']) { $mainMenu[] = array("name" => $admintxt[$lang], "link" => "manager.html?v=1.5.24"); }
|
||||
$mainMenu[] = array("name" => $settingtxt[$lang], "link" => "preferences.html?v=1.5.24");
|
||||
if ($_SESSION['right_timetracking'] || $_SESSION['right_timemanager']) { $mainMenu[] = array("name" => $timetrackingtxt[$lang], "link" => "timetracking.html?v=1.5.24"); }
|
||||
if ($_SESSION['right_statistics']) { $mainMenu[] = array("name" => $stattxt[$lang], "link" => "reports.html?v=1.5.25"); }
|
||||
if ($_SESSION['right_bill']) { $mainMenu[] = array("name" => $bontxt[$lang], "link" => "bill.html?v=1.5.25"); }
|
||||
if ($_SESSION['right_products']) { $mainMenu[] = array("name" => $prodtxt[$lang], "link" => "products.html?v=1.5.25"); }
|
||||
if ($_SESSION['right_reservation']) { $mainMenu[] = array("name" => $restxt[$lang], "link" => "reservation.html?v=1.5.25"); }
|
||||
if ($_SESSION['right_tasks'] || $_SESSION['right_tasksmanagement']) { $mainMenu[] = array("name" => $taskstxt[$lang], "link" => "tasks.html?v=1.5.25"); }
|
||||
if ($_SESSION['right_rating']) { $mainMenu[] = array("name" => $ratingtxt[$lang], "link" => "rating.html?v=1.5.25"); }
|
||||
if ($_SESSION['right_customers']) { $mainMenu[] = array("name" => $customerstxt[$lang], "link" => "customers.html?v=1.5.25"); }
|
||||
if ($_SESSION['right_pickups']) { $mainMenu[] = array("name" => $pickupstxt[$lang], "link" => "pickups.html?v=1.5.25"); }
|
||||
if ($_SESSION['right_dash']) { $mainMenu[] = array("name" => $dashtxt[$lang], "link" => "dash.php?v=1.5.25"); }
|
||||
if ($_SESSION['right_manager'] || $_SESSION['is_admin'] || $_SESSION['right_closing']) { $mainMenu[] = array("name" => $admintxt[$lang], "link" => "manager.html?v=1.5.25"); }
|
||||
$mainMenu[] = array("name" => $settingtxt[$lang], "link" => "preferences.html?v=1.5.25");
|
||||
if ($_SESSION['right_timetracking'] || $_SESSION['right_timemanager']) { $mainMenu[] = array("name" => $timetrackingtxt[$lang], "link" => "timetracking.html?v=1.5.25"); }
|
||||
|
||||
$mainMenu[] = array("name" => "Hilfe", "link" => "help.php?v=1.5.24");
|
||||
$mainMenu[] = array("name" => "Feedback", "link" => "feedback.html?v=1.5.24");
|
||||
$mainMenu[] = array("name" => "Hilfe", "link" => "help.php?v=1.5.25");
|
||||
$mainMenu[] = array("name" => "Feedback", "link" => "feedback.html?v=1.5.25");
|
||||
}
|
||||
|
||||
$mainMenu[] = array("name" => $logout[$lang], "link" => "logout.php");
|
||||
|
@ -2085,23 +2086,18 @@ class Admin {
|
|||
header("Location: ../infopage.html?e=manager.html=Datei_nicht_angegeben.");
|
||||
exit();
|
||||
}
|
||||
|
||||
$content = file_get_contents($_FILES['logofile']['tmp_name']);
|
||||
|
||||
if ($_FILES['logofile']['error'] != UPLOAD_ERR_OK //checks for errors
|
||||
&& is_uploaded_file($_FILES['logofile']['tmp_name'])) { //checks that file is uploaded
|
||||
header("Location: ../infopage.html?e=manager.html=Kann_Datei_nicht_laden.");
|
||||
exit();
|
||||
}
|
||||
|
||||
if (strlen($content) > 65535) {
|
||||
header("Location: ../infopage.html?e=manager.html=Logobild_muss_kleiner_als_64_Kilobytes_sein!");
|
||||
exit();
|
||||
}
|
||||
|
||||
$pdo = DbUtils::openDbAndReturnPdoStatic();
|
||||
|
||||
self::changeItemInTable($pdo, "logoimg", $content, "%logo%");
|
||||
$imageScaled = CommonUtils::scaleImg($_FILES['logofile']['tmp_name'], 300);
|
||||
|
||||
self::changeItemInTable($pdo, "logoimg", $imageScaled, "%logo%");
|
||||
|
||||
header("Location: ../infopage.html?i=manager.html=Import_war_erfolgreich."); /* Browser umleiten */
|
||||
exit;
|
||||
|
@ -2215,6 +2211,7 @@ class Admin {
|
|||
"usebarcode" => array("dbcol" => "usebarcode","checknum" => 0),
|
||||
"defaultview" => array("dbcol" => "defaultview", "checknum" => 0),
|
||||
"dblog" => array("dbcol" => "dblog","checknum" => 0),
|
||||
"showtransferbtns" => array("dbcol" => "showtransferbtns","checknum" => 0),
|
||||
"printpickups" => array("dbcol" => "printpickups","checknum" => 0),
|
||||
"billprintjobs" => array("dbcol" => "billprintjobs","checknum" => 0),
|
||||
"printextras" => array("dbcol" => "printextras","checknum" => 0),
|
||||
|
|
|
@ -639,16 +639,27 @@ class Bill {
|
|||
}
|
||||
|
||||
$cashByGuestsAndInsertTakeOut = 0.0;
|
||||
$sql = "SELECT sum(brutto) as sumtotal FROM %bill% WHERE closingid is null AND paymentid='1' AND userid='$userId' AND (status is null OR status ='c')";
|
||||
$stmt = $pdo->prepare($this->dbutils->resolveTablenamesInSqlString($sql));
|
||||
$stmt->execute();
|
||||
$row =$stmt->fetchObject();
|
||||
if ($row != null) {
|
||||
if ($row->sumtotal != null) {
|
||||
$cashByGuestsAndInsertTakeOut = $row->sumtotal;
|
||||
$sql = "SELECT sum(brutto) as sumtotal FROM %bill% WHERE closingid is null AND paymentid='1' AND userid=? AND (status is null OR status ='c')";
|
||||
$res = CommonUtils::fetchSqlAll($pdo, $sql, array($userId));
|
||||
if (count($res) > 0) {
|
||||
$cashVal = $res[0]["sumtotal"];
|
||||
if (!is_null($cashVal)) {
|
||||
$cashByGuestsAndInsertTakeOut = $cashVal;
|
||||
}
|
||||
}
|
||||
echo json_encode(array("cashperpayments" => $cashPerPayments,"total" => $cashByGuestsAndInsertTakeOut));
|
||||
|
||||
$onlyCash = 0.0;
|
||||
$sql = "SELECT sum(brutto) as sumtotal FROM %bill% WHERE closingid is null AND paymentid='1' AND userid=? AND status ='c'";
|
||||
CommonUtils::fetchSqlAll($pdo, $sql, array($userId));
|
||||
$res = CommonUtils::fetchSqlAll($pdo, $sql, array($userId));
|
||||
if (count($res) > 0) {
|
||||
$cashVal = $res[0]["sumtotal"];
|
||||
if (!is_null($cashVal)) {
|
||||
$onlyCash = $cashVal;
|
||||
}
|
||||
}
|
||||
|
||||
echo json_encode(array("cashperpayments" => $cashPerPayments,"total" => $cashByGuestsAndInsertTakeOut,"onlycash" => $onlyCash));
|
||||
}
|
||||
|
||||
function getLastBillsWithContent($day,$month,$year) {
|
||||
|
|
|
@ -440,5 +440,33 @@ class CommonUtils {
|
|||
$unit .= "END";
|
||||
return $unit;
|
||||
}
|
||||
|
||||
public static function scaleImg($fn,$maxDim) {
|
||||
list($width, $height, $type, $attr) = getimagesize($fn);
|
||||
$size = getimagesize($fn);
|
||||
$ratio = $size[0] / $size[1]; // width/height
|
||||
if ($ratio > 1) {
|
||||
$width = $maxDim;
|
||||
$height = $maxDim / $ratio;
|
||||
} else {
|
||||
$width = $maxDim * $ratio;
|
||||
$height = $maxDim;
|
||||
}
|
||||
$src = imagecreatefromstring(file_get_contents($fn));
|
||||
$dst = imagecreatetruecolor($width, $height);
|
||||
imagealphablending($dst, false);
|
||||
imagesavealpha($dst, true);
|
||||
$transparent = imagecolorallocatealpha($dst, 255, 255, 255, 127);
|
||||
imagefilledrectangle($dst, 0, 0, $width, $height, $transparent);
|
||||
|
||||
imagecopyresampled($dst, $src, 0, 0, 0, 0, $width, $height, $size[0], $size[1]);
|
||||
imagedestroy($src);
|
||||
ob_start();
|
||||
imagepng($dst); // adjust format as needed
|
||||
$imagedata = ob_get_contents();
|
||||
ob_end_clean();
|
||||
imagedestroy($dst);
|
||||
return $imagedata;
|
||||
}
|
||||
|
||||
}
|
|
@ -853,7 +853,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.24">';
|
||||
$txt .= '<link rel="stylesheet" type="text/css" href="../css/guestreport.css?v=1.5.25">';
|
||||
$txt .= "</head>";
|
||||
return $txt;
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@ if (isset($_POST["cmd"])) {
|
|||
if (strlen($status) > 150) {
|
||||
$status = substr($status, 0,149);
|
||||
}
|
||||
$version = "1.5.24";
|
||||
$version = "1.5.25";
|
||||
|
||||
$arr = array("cmd" => $cmd,"fct" => $fct, "xhr" => $xhr,"errormsg" => $errormsg,"status" => $status,"version" => $version,"phpversion" => $phpversion);
|
||||
} else {
|
||||
|
|
|
@ -51,6 +51,16 @@ class Guestsync {
|
|||
$asktablecode = CommonUtils::getConfigValue($pdo, 'asktablecode', "1");
|
||||
$guesttimeout = CommonUtils::getConfigValue($pdo, 'guesttimeout', "5");
|
||||
|
||||
$sql = "SELECT setting from %logo% WHERE name=? HAVING setting is not null";
|
||||
$logoImg = CommonUtils::fetchSqlAll($pdo, $sql, array("logoimg"));
|
||||
if (count($logoImg) > 0) {
|
||||
$logo = base64_encode($logoImg[0]["setting"]);
|
||||
} else {
|
||||
$logo = '';
|
||||
}
|
||||
|
||||
$prodimages = self::getImagesForGuestProducs($pdo);
|
||||
|
||||
$transferdata = array(
|
||||
"timezone" => $timezone,
|
||||
"dailycode" => $dailycode,
|
||||
|
@ -62,7 +72,9 @@ class Guestsync {
|
|||
"decpoint" => $decpoint,
|
||||
"askdaycode" => $askdaycode,
|
||||
"asktablecode" => $asktablecode,
|
||||
"guesttimeout" => $guesttimeout
|
||||
"guesttimeout" => $guesttimeout,
|
||||
"logo" => $logo,
|
||||
"prodimages" => $prodimages
|
||||
);
|
||||
|
||||
$data = json_encode($transferdata);
|
||||
|
@ -184,6 +196,24 @@ class Guestsync {
|
|||
|
||||
private static $typesWithContent = array();
|
||||
|
||||
private static function getImagesForGuestProducs($pdo) {
|
||||
date_default_timezone_set(DbUtils::getTimeZone());
|
||||
$dayofweek = date('N');
|
||||
if ($dayofweek == 7) {
|
||||
$dayofweek = 0;
|
||||
}
|
||||
$sql = "SELECT P.id as prodid,I.imgl as imagedata ";
|
||||
$sql .= " FROM %products% P,%prodimages% I WHERE P.available='1' AND P.removed is null ";
|
||||
$sql .= " AND P.prodimageid=I.id ";
|
||||
$sql .= " AND (days is null OR days like ?) AND (display = 'KG' OR display = 'G' OR display is null) ";
|
||||
$sql .= " AND (unit is null OR unit='0') ";
|
||||
|
||||
$allProductImgs = CommonUtils::fetchSqlAll($pdo, $sql, array("%$dayofweek%"));
|
||||
|
||||
|
||||
return $allProductImgs;
|
||||
}
|
||||
|
||||
private static function getMenuForGuests($pdo) {
|
||||
date_default_timezone_set(DbUtils::getTimeZone());
|
||||
$dayofweek = date('N');
|
||||
|
|
|
@ -489,10 +489,26 @@ class PrintQueue {
|
|||
}
|
||||
|
||||
|
||||
private static function outputEmptyImage() {
|
||||
$my_img = imagecreate( 1,1 );
|
||||
$background = imagecolorallocate( $my_img, 0, 0, 255 );
|
||||
$black = imagecolorallocate($im, 0, 0, 0);
|
||||
imagecolortransparent($my_img, $black);
|
||||
imagepng( $my_img );
|
||||
imagecolordeallocate( $background );
|
||||
imagedestroy( $my_img );
|
||||
}
|
||||
|
||||
function getLogoAsPng() {
|
||||
$pdo = $this->dbutils->openDbAndReturnPdo();
|
||||
$sendEmptyImageInsteadOfNone = false;
|
||||
if (isset($_GET["style"])) {
|
||||
if ($_GET["style"] == "always") {
|
||||
$sendEmptyImageInsteadOfNone = true;
|
||||
}
|
||||
}
|
||||
$pdo = DbUtils::openDbAndReturnPdoStatic();
|
||||
|
||||
header("Content-Disposition: attachment; filename=logo.png");
|
||||
//header("Content-Disposition: attachment; filename=logo.png");
|
||||
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
|
||||
header("Pragma: no-cache");
|
||||
header("Expires: Mon, 20 Dec 1998 01:00:00 GMT" );
|
||||
|
@ -506,9 +522,23 @@ class PrintQueue {
|
|||
|
||||
if ($stmt->rowCount() > 0) {
|
||||
$img = $row->setting;
|
||||
$php_img = imagecreatefromstring($img);
|
||||
imagepng($php_img, NULL);
|
||||
imagedestroy($php_img);
|
||||
if (is_null($img)) {
|
||||
if ($sendEmptyImageInsteadOfNone) {
|
||||
self::outputEmptyImage();
|
||||
}
|
||||
} else {
|
||||
$php_img = imagecreatefromstring($img);
|
||||
imagesavealpha($php_img, true);
|
||||
$color = imagecolorallocatealpha($php_img, 0, 0, 0, 127);
|
||||
|
||||
imagepng($php_img, NULL);
|
||||
imagecolordeallocate( $color );
|
||||
imagedestroy($php_img);
|
||||
}
|
||||
} else {
|
||||
if ($sendEmptyImageInsteadOfNone) {
|
||||
self::outputEmptyImage();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -190,8 +190,8 @@ class Products {
|
|||
|
||||
private static $proddefs = array(
|
||||
array("id" => "id","get" => "%products%.id as id","histid" => "prodid","histget" => "prodid","histexportname" => "Produktid","isnumber" => "0"),
|
||||
array("id" => "shortname", "get" => "shortname","histid" => "shortname","histget" => "shortname","histexportname" => "Kurzname","isnumber" => "0"),
|
||||
array("id" => "longname", "get" => "longname","histid" => "longname","histget" => "longname","histexportname" => "Langname","isnumber" => "0"),
|
||||
array("id" => "shortname", "get" => "shortname","histid" => "shortname","histget" => "shortname","histexportname" => "Name in Bestellansicht","isnumber" => "0"),
|
||||
array("id" => "longname", "get" => "longname","histid" => "longname","histget" => "longname","histexportname" => "Produktname","isnumber" => "0"),
|
||||
array("id" => "available", "get" => "available","histid" => "available","histget" => "available","histexportname" => "","histexportname" => "Verfügbarkeit","isnumber" => "0", "exportvals" => array("default" => "Nein","1" => "Ja")),
|
||||
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"),
|
||||
|
@ -1305,8 +1305,7 @@ class Products {
|
|||
fpassthru($fp);
|
||||
}
|
||||
|
||||
function getprodimage($prodid,$size='h') {
|
||||
|
||||
function getprodimage($prodid,$size='h') {
|
||||
$imgcol = 'imgh';
|
||||
if ($size == 'm') {
|
||||
$imgcol = 'imgm';
|
||||
|
@ -1334,34 +1333,6 @@ class Products {
|
|||
exit;
|
||||
}
|
||||
|
||||
private static function scaleImg($fn,$maxDim) {
|
||||
list($width, $height, $type, $attr) = getimagesize($_FILES['imagefile']['tmp_name']);
|
||||
$size = getimagesize($fn);
|
||||
$ratio = $size[0] / $size[1]; // width/height
|
||||
if ($ratio > 1) {
|
||||
$width = $maxDim;
|
||||
$height = $maxDim / $ratio;
|
||||
} else {
|
||||
$width = $maxDim * $ratio;
|
||||
$height = $maxDim;
|
||||
}
|
||||
$src = imagecreatefromstring(file_get_contents($fn));
|
||||
$dst = imagecreatetruecolor($width, $height);
|
||||
imagealphablending($dst, false);
|
||||
imagesavealpha($dst, true);
|
||||
$transparent = imagecolorallocatealpha($dst, 255, 255, 255, 127);
|
||||
imagefilledrectangle($dst, 0, 0, $width, $height, $transparent);
|
||||
|
||||
imagecopyresampled($dst, $src, 0, 0, 0, 0, $width, $height, $size[0], $size[1]);
|
||||
imagedestroy($src);
|
||||
ob_start();
|
||||
imagepng($dst); // adjust format as needed
|
||||
$imagedata = ob_get_contents();
|
||||
ob_end_clean();
|
||||
imagedestroy($dst);
|
||||
return $imagedata;
|
||||
}
|
||||
|
||||
private function deleteImageProdAssignment($prodid) {
|
||||
$pdo = DbUtils::openDbAndReturnPdoStatic();
|
||||
$pdo->beginTransaction();
|
||||
|
@ -1398,13 +1369,13 @@ class Products {
|
|||
|
||||
$fn = $_FILES['imagefile']['tmp_name'];
|
||||
|
||||
$imageh = self::scaleImg($fn, 300);
|
||||
$imageh = CommonUtils::scaleImg($fn, 300);
|
||||
$imageBaseh_64 = base64_encode($imageh);
|
||||
|
||||
$imagem = self::scaleImg($fn, 150);
|
||||
$imagem = CommonUtils::scaleImg($fn, 150);
|
||||
$imageBasem_64 = base64_encode($imagem);
|
||||
|
||||
$imagel = self::scaleImg($fn, 80);
|
||||
$imagel = CommonUtils::scaleImg($fn, 80);
|
||||
$imageBasel_64 = base64_encode($imagel);
|
||||
|
||||
$pdo->beginTransaction();
|
||||
|
|
|
@ -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']);
|
||||
$this->createReservation($_POST['day'],$_POST['month'],$_POST['year'],$_POST['start'],$_POST['name'],$_POST['email'],$_POST['persons'],$_POST['duration'],$_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']);
|
||||
$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"]);
|
||||
} else if ($command == 'delReservation') {
|
||||
$this->delReservation($_POST['id']);
|
||||
} else if ($command == 'emailConfirmReservation') {
|
||||
|
@ -26,13 +26,13 @@ class Reservation {
|
|||
else {
|
||||
echo "Kommando nicht unterstuetzt.";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function isUserAlreadyLoggedInForPhpAndMayReserve() {
|
||||
if(session_id() == '') {
|
||||
session_start();
|
||||
}
|
||||
if(session_id() == '') {
|
||||
session_start();
|
||||
}
|
||||
if (!isset($_SESSION['angemeldet']) || !$_SESSION['angemeldet']) {
|
||||
return false;
|
||||
} else {
|
||||
|
@ -40,67 +40,67 @@ class Reservation {
|
|||
}
|
||||
}
|
||||
|
||||
private function createReservation($day,$month,$year,$start,$name,$email,$persons,$duration,$phone,$remark) {
|
||||
private function createReservation($day,$month,$year,$start,$name,$email,$persons,$duration,$phone,$remark,$tableid) {
|
||||
$userid = $_SESSION['userid'];
|
||||
date_default_timezone_set(DbUtils::getTimeZone());
|
||||
date_default_timezone_set(DbUtils::getTimeZone());
|
||||
$currentTime = date('Y-m-d H:i:s');
|
||||
$scheduledDate = "$year-$month-$day 00:00:00";
|
||||
if ($tableid <= 0) {
|
||||
$tableid = null;
|
||||
}
|
||||
|
||||
$pdo = DbUtils::openDbAndReturnPdoStatic();
|
||||
try {
|
||||
$pdo = $this->dbutils->openDbAndReturnPdo();
|
||||
$pdo->beginTransaction();
|
||||
|
||||
$sql = "INSERT INTO `%reservations%` (
|
||||
`id` , `creator`,`creationdate`,`scheduledate`,`name`,`email`,`starttime`,`duration`,`persons`,`phone`,`remark`)
|
||||
`id` , `creator`,`creationdate`,`scheduledate`,`name`,`email`,`starttime`,`duration`,`persons`,`phone`,`remark`,`tableid`)
|
||||
VALUES (
|
||||
NULL , ?,?,?,?,?,?,?,?,?,?)";
|
||||
$stmt = $pdo->prepare($this->dbutils->resolveTablenamesInSqlString($sql));
|
||||
$stmt->execute(array($userid,$currentTime,$scheduledDate,$name,$email,$start,$duration,$persons,$phone,$remark));
|
||||
NULL , ?,?,?,?,?,?,?,?,?,?,?)";
|
||||
$stmt = $pdo->prepare($this->dbutils->resolveTablenamesInSqlString($sql));
|
||||
$stmt->execute(array($userid,$currentTime,$scheduledDate,$name,$email,$start,$duration,$persons,$phone,$remark,$tableid));
|
||||
$pdo->commit();
|
||||
echo json_encode(array("status" => "OK"));
|
||||
}
|
||||
catch (PDOException $e) {
|
||||
$pdo->rollBack();
|
||||
echo json_encode(array("status" => "ERROR", "code" => ERROR_GENERAL_DB_NOT_READABLE, "msg" => ERROR_GENERAL_DB_NOT_READABLE_MSG));
|
||||
$pdo->rollBack();
|
||||
echo json_encode(array("status" => "ERROR", "code" => ERROR_GENERAL_DB_NOT_READABLE, "msg" => ERROR_GENERAL_DB_NOT_READABLE_MSG));
|
||||
}
|
||||
}
|
||||
|
||||
private function changeReservation($id,$day,$month,$year,$start,$name,$email,$persons,$duration,$phone,$remark) {
|
||||
$userid = $_SESSION['userid'];
|
||||
date_default_timezone_set(DbUtils::getTimeZone());
|
||||
$currentTime = date('Y-m-d H:i:s');
|
||||
$scheduledDate = "$year-$month-$day 00:00:00";
|
||||
|
||||
try {
|
||||
$pdo = $this->dbutils->openDbAndReturnPdo();
|
||||
$pdo->beginTransaction();
|
||||
private function changeReservation($id,$day,$month,$year,$start,$name,$email,$persons,$duration,$phone,$remark,$tableid) {
|
||||
$userid = $_SESSION['userid'];
|
||||
date_default_timezone_set(DbUtils::getTimeZone());
|
||||
$currentTime = date('Y-m-d H:i:s');
|
||||
$scheduledDate = "$year-$month-$day 00:00:00";
|
||||
|
||||
$pdo = DbUtils::openDbAndReturnPdoStatic();
|
||||
try {
|
||||
$pdo->beginTransaction();
|
||||
|
||||
$sql = "UPDATE `%reservations%` SET creator=?,creationdate=?,scheduledate=?,name=?,email=?,starttime=?,duration=?,persons=?,phone=?,remark=? WHERE id=?";
|
||||
|
||||
$stmt = $pdo->prepare($this->dbutils->resolveTablenamesInSqlString($sql));
|
||||
$stmt->execute(array($userid,$currentTime,$scheduledDate,$name,$email,$start,$duration,$persons,$phone,$remark,$id));
|
||||
$pdo->commit();
|
||||
echo json_encode(array("status" => "OK"));
|
||||
}
|
||||
catch (PDOException $e) {
|
||||
$pdo->rollBack();
|
||||
echo json_encode(array("status" => "ERROR", "code" => ERROR_GENERAL_DB_NOT_READABLE, "msg" => ERROR_GENERAL_DB_NOT_READABLE_MSG));
|
||||
$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));
|
||||
$pdo->commit();
|
||||
echo json_encode(array("status" => "OK"));
|
||||
}
|
||||
catch (PDOException $e) {
|
||||
$pdo->rollBack();
|
||||
echo json_encode(array("status" => "ERROR", "code" => ERROR_GENERAL_DB_NOT_READABLE, "msg" => ERROR_GENERAL_DB_NOT_READABLE_MSG));
|
||||
}
|
||||
}
|
||||
|
||||
private function delReservation($id) {
|
||||
try {
|
||||
$pdo = $this->dbutils->openDbAndReturnPdo();
|
||||
$pdo = DbUtils::openDbAndReturnPdoStatic();
|
||||
try {
|
||||
$pdo->beginTransaction();
|
||||
$sql = "DELETE FROM `%reservations%` WHERE id=?";
|
||||
$stmt = $pdo->prepare($this->dbutils->resolveTablenamesInSqlString($sql));
|
||||
$stmt->execute(array($id));
|
||||
CommonUtils::execSql($pdo, $sql, array($id));
|
||||
$pdo->commit();
|
||||
echo json_encode(array("status" => "OK"));
|
||||
}
|
||||
catch (PDOException $e) {
|
||||
$pdo->rollBack();
|
||||
echo json_encode(array("status" => "ERROR", "code" => ERROR_GENERAL_DB_NOT_READABLE, "msg" => ERROR_GENERAL_DB_NOT_READABLE_MSG));
|
||||
echo json_encode(array("status" => "OK"));
|
||||
}
|
||||
catch (PDOException $e) {
|
||||
$pdo->rollBack();
|
||||
echo json_encode(array("status" => "ERROR", "code" => ERROR_GENERAL_DB_NOT_READABLE, "msg" => ERROR_GENERAL_DB_NOT_READABLE_MSG));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -119,38 +119,74 @@ class Reservation {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
private function getGeneralItemFromDbWithPdo($pdo,$field) {
|
||||
$aValue="";
|
||||
$sql = "SELECT setting FROM %config% where name='$field'";
|
||||
$stmt = $pdo->prepare($this->dbutils->resolveTablenamesInSqlString($sql));
|
||||
$stmt->execute();
|
||||
$row =$stmt->fetchObject();
|
||||
if ($row != null) {
|
||||
$aValue = $row->setting;
|
||||
private function getReservations($day,$month,$year) {
|
||||
$pdo = DbUtils::openDbAndReturnPdoStatic();
|
||||
|
||||
// REM* the many sortings in the sql allow the sorting by time, room-sort and table-sort
|
||||
$sql = "SELECT R.id,U.username as username,creationdate,scheduledate,starttime,name,email,persons,duration,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,'-1',(SELECT T.sorting as tablesorting FROM %room% RO,%resttables% T WHERE T.id=tableid AND T.roomid=RO.id)) as tablesorting ";
|
||||
$sql .= "FROM %reservations% R,%user% U ";
|
||||
$sql .= "WHERE DATE(scheduledate)=? AND R.creator=U.id ";
|
||||
$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 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 ";
|
||||
$day = sprintf("%02s", $day);
|
||||
$month = sprintf("%02s", $month);
|
||||
$scheduledDate = "$year-$month-$day";
|
||||
$allTablesOfResAtThatDate = CommonUtils::fetchSqlAll($pdo, $sql, array($scheduledDate));
|
||||
$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 .= " 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);
|
||||
}
|
||||
return $aValue;
|
||||
// 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 .= " 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);
|
||||
}
|
||||
|
||||
$msg = array("bytimes" => $timeSortedReservations,"bytables" => $byTables);
|
||||
|
||||
// REM* now attach a list of rooms and tables to select for new reservations
|
||||
$tableoverview = self::gettablesoverview($pdo);
|
||||
|
||||
echo json_encode(array("status" => "OK", "msg" => $msg,"tableoverview" => $tableoverview));
|
||||
}
|
||||
|
||||
private function getReservations($day,$month,$year) {
|
||||
private function getReservationsCore($pdo,$day,$month,$year,$sql) {
|
||||
$day = sprintf("%02s", $day);
|
||||
$month = sprintf("%02s", $month);
|
||||
|
||||
$scheduledDate = "$year-$month-$day 00:00:00";
|
||||
$scheduledDate = "$year-$month-$day";
|
||||
|
||||
try {
|
||||
$pdo = $this->dbutils->openDbAndReturnPdo();
|
||||
$sql = "SELECT DISTINCT %reservations%.id,%user%.username as username,creationdate,scheduledate,starttime,name,email,persons,duration,phone,remark FROM %reservations%,%user% WHERE scheduledate=? AND %reservations%.creator=%user%.id ORDER BY starttime";
|
||||
$stmt = $pdo->prepare($this->dbutils->resolveTablenamesInSqlString($sql));
|
||||
$stmt->execute(array($scheduledDate));
|
||||
try {
|
||||
$pdo = DbUtils::openDbAndReturnPdoStatic();
|
||||
|
||||
$result = $stmt->fetchAll();
|
||||
$resArray = array();
|
||||
|
||||
$result = CommonUtils::fetchSqlAll($pdo, $sql, array($scheduledDate));
|
||||
|
||||
$resArray = array();
|
||||
|
||||
foreach($result as $row) {
|
||||
$datetimeparts = explode(" ",$row['scheduledate']);
|
||||
$thedate = $datetimeparts[0];
|
||||
$thedateparts = explode("-",$thedate);
|
||||
$thedateparts = explode("-",$thedate);
|
||||
$resArray[] = array(
|
||||
"id" => $row['id'],
|
||||
"creator" => $row['username'],
|
||||
|
@ -165,13 +201,32 @@ class Reservation {
|
|||
"duration" => $row['duration'],
|
||||
"phone" => $row['phone'],
|
||||
"remark" => $row['remark'],
|
||||
);
|
||||
"roomid" => $row['roomid'],
|
||||
"tableid" => $row['tableid']
|
||||
);
|
||||
}
|
||||
echo json_encode(array("status" => "OK", "msg" => $resArray));
|
||||
return $resArray;
|
||||
}
|
||||
catch (PDOException $e) {
|
||||
echo json_encode(array("status" => "ERROR", "code" => ERROR_GENERAL_DB_NOT_READABLE, "msg" => ERROR_GENERAL_DB_NOT_READABLE_MSG));
|
||||
catch (PDOException $e) {
|
||||
return array();
|
||||
}
|
||||
}
|
||||
|
||||
private static function gettablesoverview($pdo) {
|
||||
try {
|
||||
$tableoverview = array();
|
||||
// REM* get only the rooms with not removed tables (active flag is ignored because it may be that the room is active at date for reservation)
|
||||
$sql = "SELECT R.id as roomid,R.roomname as roomname,IFNULL(R.abbreviation,'') as abbreviation from %room% R WHERE R.removed is null HAVING (SELECT COUNT(id) FROM %resttables% T WHERE T.roomid=R.id AND T.removed is null) > 0 ORDER BY sorting";
|
||||
|
||||
$rooms = CommonUtils::fetchSqlAll($pdo, $sql);
|
||||
foreach($rooms as $aRoom) {
|
||||
$sql = "SELECT id,tableno as tablename FROM %resttables% WHERE roomid=? ORDER BY sorting";
|
||||
$tablesOfRoom = CommonUtils::fetchSqlAll($pdo, $sql, array($aRoom['roomid']));
|
||||
$tableoverview[$aRoom['roomid']] = array("roomid" => $aRoom['roomid'], "roomname" => $aRoom["roomname"],"roomabbreviation" => $aRoom["abbreviation"], "tables" => $tablesOfRoom);
|
||||
}
|
||||
return $tableoverview;
|
||||
} catch (Exception $ex) {
|
||||
return array();
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
|
@ -210,8 +210,21 @@ class Roomtables {
|
|||
return $row->area;
|
||||
}
|
||||
|
||||
private static function getTimesFromArray($tableid,$reservations) {
|
||||
foreach($reservations as $res) {
|
||||
if ($res["tableid"] == $tableid) {
|
||||
return $res["times"];
|
||||
}
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
private function getAllTablesAndRooms($pdo)
|
||||
{
|
||||
$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);
|
||||
|
||||
$userarea = self::getUserArea($pdo);
|
||||
|
||||
$queue = new QueueContent();
|
||||
|
@ -228,6 +241,7 @@ class Roomtables {
|
|||
if (($showprepinwaiter == 1) && (($workflowconfig == 0) || ($workflowconfig == 1))) {
|
||||
$queryprodForTableView = true;
|
||||
}
|
||||
|
||||
foreach($dbresult as $zeile) {
|
||||
$roomid = $zeile['id'];
|
||||
|
||||
|
@ -258,6 +272,8 @@ class Roomtables {
|
|||
|
||||
|
||||
foreach ($tablesArray as $tableEntry) {
|
||||
$resTxt = self::getTimesFromArray($tableEntry->id, $reservations);
|
||||
|
||||
$arrayOfProdsAndIdsOfATable = array("prods" => array(), "ids" => '');
|
||||
if ($queryprodForTableView) {
|
||||
$arrayOfProdsAndIdsOfATable = $queue->getAllPreparedProductsForTableidAsArray($pdo,$tableEntry->id);
|
||||
|
@ -270,6 +286,7 @@ class Roomtables {
|
|||
$tableEntry->prodcount = $numberOfProductsTotalToServe;
|
||||
$tableEntry->prodready = $numberOfReadyProducts;
|
||||
$tableEntry->readyQueueIds = $queueids;
|
||||
$tableEntry->reservations = $resTxt;
|
||||
}
|
||||
|
||||
$aRoomEntry = array ("id" => $roomid, "name" => $zeile['roomname'], "tables" => $tablesArray);
|
||||
|
@ -389,6 +406,13 @@ class Roomtables {
|
|||
$hist = new HistFiller();
|
||||
$hist->updateConfigInHist($pdo, "togoworkprinter", $togoworkprinter);
|
||||
|
||||
$sql = "SELECT R.id as resid FROM %reservations% R,%resttables% T WHERE R.tableid=T.id AND T.removed is not null";
|
||||
$allReservIds = CommonUtils::fetchSqlAll($pdo, $sql, null);
|
||||
$sql = "DELETE FROM %reservations% WHERE id=?";
|
||||
foreach($allReservIds as $resid) {
|
||||
CommonUtils::execSql($pdo, $sql, array($resid["resid"]));
|
||||
}
|
||||
|
||||
$pdo->commit();
|
||||
} catch (Exception $ex) {
|
||||
echo json_encode(array("status" => "ERROR","msg" => $ex->getMessage()));
|
||||
|
|
|
@ -1200,6 +1200,25 @@ class Version {
|
|||
}
|
||||
}
|
||||
|
||||
public static function upd_1524_1525($pdo, $prefix, $dbname) {
|
||||
try {
|
||||
self::insertOrUpdateConfigItem($pdo, 'showtransferbtns', '1');
|
||||
|
||||
self::execSql($pdo, "ALTER TABLE %reservations% ADD tableid INT(10) NULL AFTER phone");
|
||||
$sql = "ALTER TABLE %reservations% ADD INDEX tresdate (scheduledate)";
|
||||
$stmt = $pdo->prepare(DbUtils::substTableAlias($sql));
|
||||
$stmt->execute();
|
||||
|
||||
$sql = "ALTER TABLE %logo% MODIFY setting MEDIUMBLOB NULL";
|
||||
$stmt = $pdo->prepare(DbUtils::substTableAlias($sql));
|
||||
$stmt->execute();
|
||||
|
||||
return array(true);
|
||||
} catch (PDOException $e) {
|
||||
return array(false,$e);
|
||||
}
|
||||
}
|
||||
|
||||
public static $updateOrder = array(
|
||||
"1.3.0" => array("upd_1300_1301","1.3.1"),
|
||||
"1.3.1" => array("upd_1301_1302","1.3.2"),
|
||||
|
@ -1271,7 +1290,8 @@ class Version {
|
|||
"1.5.20" => array("upd_1520_1521","1.5.21"),
|
||||
"1.5.21" => array("upd_1521_1522","1.5.22"),
|
||||
"1.5.22" => array("upd_1522_1523","1.5.23"),
|
||||
"1.5.23" => array("upd_1523_1524","1.5.24")
|
||||
"1.5.23" => array("upd_1523_1524","1.5.24"),
|
||||
"1.5.24" => array("upd_1524_1525","1.5.25")
|
||||
);
|
||||
|
||||
public static function runUpdateProcess($pdo,$prefix, $dbname, $untilVersion,$checkValidVersion) {
|
||||
|
|
|
@ -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.24">
|
||||
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.25">
|
||||
<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.24"></script>
|
||||
<script src="utilities.js?v=1.5.25"></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>
|
||||
|
|
|
@ -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.24">
|
||||
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.25">
|
||||
|
||||
<link rel="stylesheet" href="php/contenthandler.php?module=admin&command=getmobilecss" />
|
||||
<link rel="stylesheet" href="php/3rdparty/orderstyle/jquery.mobile.icons.min.css" />
|
||||
|
|
|
@ -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.24">
|
||||
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.25">
|
||||
<link rel="stylesheet" href="php/contenthandler.php?module=admin&command=getmobilecss" />
|
||||
<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.mobile-1.4.0.min.js"></script>
|
||||
<script src="utilities.js"></script>
|
||||
<script src="elements/product.js?v=1.5.24"></script>
|
||||
<script src="elements/extra.js?v=1.5.24"></script>
|
||||
<script src="elements/product.js?v=1.5.25"></script>
|
||||
<script src="elements/extra.js?v=1.5.25"></script>
|
||||
<link href="php/3rdparty/hayageek_uploadfile.css" rel="stylesheet">
|
||||
<script src="php/3rdparty/hayageek_jquery_uploadfile.js"></script>
|
||||
</head>
|
||||
|
@ -36,9 +36,9 @@ var PROD_DISPLAY = ["Anzeige","Display","Publicar"];
|
|||
var PROD_TAX = ["Steuersatz immer","Tax always","Impuesto siempre"];
|
||||
var PROD_TAXAUSTRIA = ["Steuersatz Österreich","Tax Austria","Impuesto Austria"];
|
||||
var PROD_AMOUNT = ["Verfügbare Menge","Available amount","Cuanto hay"];
|
||||
var PROD_SHORTNAME = ["Kurzname:","Short name:","Nombre corto"];
|
||||
var PROD_SHORTNAME = ["Name in Bestellansicht","Name in order view","Nombre en vista del orden"];
|
||||
var PROD_BARCODE = ["Barcode","Barcode","Código de barras"];
|
||||
var PROD_LONG_NAME = ["Langname:","Long name:","Nombre largo"];
|
||||
var PROD_LONG_NAME = ["Produktname","Product name:","Nombre del producto"];
|
||||
var PROD_AVAILABLE = ["Verfügbar","Available","Disponible"];
|
||||
var PROD_FAVORITE = ["Favorit","Favorite","Favorito"];
|
||||
var PROD_APPLY = ["Anwenden","Apply","Aplicar"];
|
||||
|
|
|
@ -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.24">
|
||||
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.25">
|
||||
|
||||
<link rel="stylesheet" href="css/ospage.css" />
|
||||
<link rel="stylesheet" href="css/tablepanel.css" />
|
||||
|
@ -20,8 +20,8 @@
|
|||
|
||||
<script>
|
||||
|
||||
var PRODDESK_LONG_NAME = ["Langname","Long name","Nombre largo"];
|
||||
var PRODDESK_SHORTNAME = ["Kurzname","Short name","Nombre corto"];
|
||||
var PRODDESK_LONG_NAME = ["Produktname","Product name:","Nombre del producto"];
|
||||
var PRODDESK_SHORTNAME = ["Name in Bestellansicht","Name in order view","Nombre en vista del orden"];
|
||||
var PRODDESK_PRICE = ["Preis","Price","Precio"];
|
||||
|
||||
var lang = 0;
|
||||
|
|
|
@ -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.24">
|
||||
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.25">
|
||||
<link rel="stylesheet" href="php/contenthandler.php?module=admin&command=getmobilecss" />
|
||||
<link rel="stylesheet" href="php/3rdparty/orderstyle/jquery.mobile.icons.min.css" />
|
||||
|
||||
|
|
|
@ -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.24">
|
||||
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.25">
|
||||
<link rel="stylesheet" href="php/contenthandler.php?module=admin&command=getmobilecss" />
|
||||
<link rel="stylesheet" href="php/3rdparty/orderstyle/jquery.mobile.icons.min.css" />
|
||||
|
||||
|
|
|
@ -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.24">
|
||||
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.25">
|
||||
<link rel="stylesheet" href="php/contenthandler.php?module=admin&command=getmobilecss" />
|
||||
<link rel="stylesheet" href="php/3rdparty/orderstyle/jquery.mobile.icons.min.css" />
|
||||
|
||||
|
@ -29,10 +29,10 @@
|
|||
|
||||
<style>
|
||||
|
||||
.schbtn {
|
||||
font-size: 10px;
|
||||
width: 150px;
|
||||
height: 45px;
|
||||
.schbtn,.schtablebtn {
|
||||
font-size: 9px;
|
||||
width: 170px;
|
||||
height: 65px;
|
||||
word-wrap: break-word !important;
|
||||
white-space: normal !important;
|
||||
background:Red;
|
||||
|
@ -69,7 +69,7 @@ var RES_CHANGE_TITLE = ["Reservierung ändern","Change Reservation","Modificar R
|
|||
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_RES = ["Res.","Res.","Res."];
|
||||
var RES_RES = ["Reservierungen","Reservations","Reservaciones"];
|
||||
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.)",
|
||||
|
@ -82,6 +82,11 @@ var RES_CUS_LABEL = ["Kunden aus Datenbank auswählen","Choose customer from dat
|
|||
var RES_CUSTOMERS = ["Kunden","Customers","Clientes"];
|
||||
var RES_NO_CUS_FOUND = ["Kein Kunde gefunden","No customer found","Ningún cliente en base de datos"];
|
||||
var RES_HINT_CUS_CHOOSE = ["Oder manuell eingeben:","or type in manually:","o insertar por teclado:"];
|
||||
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 lang = (-1);
|
||||
var reservationnote = "";
|
||||
|
@ -89,6 +94,7 @@ var companyinfo = "";
|
|||
var emailIsPossible = false;
|
||||
var emailTemplate = "";
|
||||
var filteredCustomers = [];
|
||||
var tableoverview = [];
|
||||
|
||||
function setLanguage(language) {
|
||||
lang = language;
|
||||
|
@ -116,6 +122,8 @@ function setLanguage(language) {
|
|||
$("#cemailtxt").html(RES_EMAIL[lang]);
|
||||
$("#cteltxt").html(RES_TEL[lang]);
|
||||
$("#cremarktxt").html(RES_REMARK[lang]);
|
||||
$("#tablespecheadertxt").html(RES_TABLESPEC[lang]);
|
||||
$("#ctablespecheadertxt").html(RES_TABLESPEC[lang]);
|
||||
$("#canceltxt").html(RES_CANCEL[lang]);
|
||||
$("#changedlgbtn").html(RES_APPLY[lang]);
|
||||
$("#clastcreatortxt").html(RES_LASTCREATOR[lang]);
|
||||
|
@ -127,6 +135,8 @@ 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]);
|
||||
|
||||
var langtxt = "de";
|
||||
if (lang == 1) {
|
||||
|
@ -182,18 +192,53 @@ function handleDateChangeEvents() {
|
|||
$("#datepicker").off("change").on("change", function (e) {
|
||||
var date = $("#datepicker").datepicker("getDate");
|
||||
$("#res-page").data("date",date);
|
||||
displayDateSchedule(date);
|
||||
displayTodaySchedule(date);
|
||||
});
|
||||
}
|
||||
|
||||
function displayDateSchedule(date) {
|
||||
function displayTodaySchedule(date) {
|
||||
|
||||
var data = {
|
||||
day: date.getDate(),
|
||||
month: (date.getMonth() + 1),
|
||||
year: date.getFullYear()
|
||||
};
|
||||
|
||||
doAjax("GET","php/contenthandler.php?module=reservation&command=getReservations",data,insertReservations,"Reservierungsinfos");
|
||||
|
||||
getReservationsOfDate(data);
|
||||
}
|
||||
|
||||
function displaySpecificDateSchedule() {
|
||||
var urlsuffix = location.search;
|
||||
if (urlsuffix.indexOf('date=') >= 0) {
|
||||
var datestamp = '';
|
||||
var urlParts = urlsuffix.split(/&|\?/);
|
||||
for (var i=0;i<urlParts.length;i++) {
|
||||
var aPart = urlParts[i];
|
||||
if (aPart.indexOf('date=') == 0) {
|
||||
var parts = aPart.split("=");
|
||||
datestamp = parts[1];
|
||||
}
|
||||
}
|
||||
var dateParts = datestamp.split("-");
|
||||
var year = dateParts[0];
|
||||
var month = dateParts[1];
|
||||
var day = dateParts[2];
|
||||
data = {
|
||||
day: day,
|
||||
month: month,
|
||||
year: year
|
||||
};
|
||||
var theSelectedDate = new Date(year,month - 1,day);
|
||||
$('#datepicker').datepicker('setDate', theSelectedDate);
|
||||
$('#cdatepicker').datepicker('setDate', theSelectedDate);
|
||||
getReservationsOfDate(data);
|
||||
} else {
|
||||
displayTodaySchedule(new Date());
|
||||
}
|
||||
}
|
||||
|
||||
function getReservationsOfDate(dateObj) {
|
||||
doAjax("GET","php/contenthandler.php?module=reservation&command=getReservations",dateObj,insertReservations,"Reservierungsinfos");
|
||||
}
|
||||
|
||||
function bindNewReservationBtn() {
|
||||
|
@ -208,6 +253,22 @@ function bindNewReservationBtn() {
|
|||
var phone = $("#telno").val();
|
||||
var remark = $("#remark").val();
|
||||
|
||||
var roomkeys = Object.keys(tableoverview);
|
||||
var roomid = -1;
|
||||
var tableid = -1;
|
||||
if (roomkeys.length == 0) {
|
||||
tableid = -1;
|
||||
} else if (roomkeys.length == 1) {
|
||||
roomid = roomkeys[0];
|
||||
tableid = $("#tableselect").val();
|
||||
} else {
|
||||
roomid = $("#roomselect").val();
|
||||
tableid = -1;
|
||||
if (roomid >= 0) {
|
||||
tableid = $("#tableselect").val();
|
||||
}
|
||||
}
|
||||
|
||||
if (name.length == 0) {
|
||||
alert(RES_NO_NAME[lang]);
|
||||
} else {
|
||||
|
@ -221,7 +282,8 @@ function bindNewReservationBtn() {
|
|||
duration: duration,
|
||||
persons: persons,
|
||||
phone: phone,
|
||||
remark: remark
|
||||
remark: remark,
|
||||
tableid: tableid
|
||||
};
|
||||
|
||||
var emailtext = emailTemplate;
|
||||
|
@ -268,7 +330,7 @@ function handleCreateNewReservation(answer) {
|
|||
doAjax("POST","php/contenthandler.php?module=reservation&command=emailConfirmReservation",data,handleEmailSendResult,"Emailbestätigung");
|
||||
});
|
||||
|
||||
displayDateSchedule($("#res-page").data("date"));
|
||||
displayTodaySchedule($("#res-page").data("date"));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -299,82 +361,151 @@ function handleChangedReservation(answer) {
|
|||
alert("Fehler " + answer.code + ": " + answer.msg);
|
||||
return;
|
||||
} else {
|
||||
setTimeout(function(){document.location.href = "reservation.html"},500);
|
||||
setTimeout(function(){document.location.href = "reservation.html";},500);
|
||||
}
|
||||
}
|
||||
|
||||
function getTableName(roomid,tableid) {
|
||||
var tablename = "";
|
||||
if ((tableid >= 0) && (roomid >= 0)) {
|
||||
var abbr = tableoverview[roomid].roomabbreviation;
|
||||
if (abbr != "") {
|
||||
tablename = abbr + "-";
|
||||
}
|
||||
var tables = tableoverview[roomid].tables;
|
||||
for (var i=0;i<tables.length;i++) {
|
||||
var aTable = tables[i];
|
||||
if (aTable.id == tableid) {
|
||||
tablename += aTable.tablename;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
var maxCol = 0;
|
||||
var hasTotalRes = false;
|
||||
|
||||
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> <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> ";
|
||||
}
|
||||
}
|
||||
dayTxt += "</tr>";
|
||||
if (hasRes) {
|
||||
html += dayTxt;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$("#dayschedule").html(html);
|
||||
$("#dayschedule").trigger("create");
|
||||
|
||||
bindHourButton();
|
||||
bindCustomerField();
|
||||
bindChangeButton();
|
||||
}
|
||||
|
||||
function createTableOfReservationsByTables(res) {
|
||||
var number = res.length;
|
||||
|
||||
var html = "";
|
||||
if (number == 0) {
|
||||
html += "<tr><td> <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);
|
||||
}
|
||||
}
|
||||
html += "</tr>";
|
||||
}
|
||||
}
|
||||
|
||||
$("#tableschedule").html(html);
|
||||
$("#tableschedule").trigger("create");
|
||||
bindChangeResByTableButton();
|
||||
}
|
||||
|
||||
function insertReservations(answer) {
|
||||
if (answer.status != "OK") {
|
||||
alert("Fehler " + answer.code + ": " + answer.msg);
|
||||
return;
|
||||
} else {
|
||||
var res = answer.msg;
|
||||
tableoverview = answer.tableoverview;
|
||||
fillRoomList("tablespecinforoomarea","roomselect","tablespecinfotablearea","tableselect",null,null);
|
||||
var res = answer.msg.bytimes;
|
||||
$("#res-page").data("res",res);
|
||||
|
||||
var number = res.length;
|
||||
var resbytables = answer.msg.bytables;
|
||||
$("#res-page").data("resbytables",resbytables);
|
||||
|
||||
var times = [];
|
||||
var hour = 0;
|
||||
var residx = 0;
|
||||
for (hour=0;hour<24;hour++) {
|
||||
var resofhour = [];
|
||||
times[hour] = resofhour;
|
||||
}
|
||||
|
||||
|
||||
var maxCol = 0;
|
||||
var hasTotalRes = false;
|
||||
|
||||
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> <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;
|
||||
dayTxt = '<tr>' + aTimeField(h);
|
||||
var aResLine = times[h];
|
||||
for (col=0;col<=maxCol;col++) {
|
||||
var residx = aResLine[col];
|
||||
if (residx != null) {
|
||||
dayTxt += aButtonField(residx,res[residx].persons,res[residx].guest);
|
||||
hasRes = true;
|
||||
} else {
|
||||
dayTxt += "<td> ";
|
||||
}
|
||||
}
|
||||
dayTxt += "</tr>";
|
||||
if (hasRes) {
|
||||
html += dayTxt;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$("#dayschedule").html(html);
|
||||
$("#dayschedule").trigger("create");
|
||||
|
||||
bindHourButton();
|
||||
bindCustomerField();
|
||||
bindChangeButton();
|
||||
createTableOfReservationsByTime(res);
|
||||
createTableOfReservationsByTables(resbytables);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -396,13 +527,24 @@ function fitsInCol(times,maxCol,start,end) {
|
|||
return maxCol+1;
|
||||
}
|
||||
|
||||
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="c" class="timeschbtn">' + theVal + ' - ' + nextHour + '</button>';
|
||||
return '<td><button data-theme="a" class="timeschbtn">' + theVal + ' - ' + nextHour + '</button>';
|
||||
}
|
||||
|
||||
function aButtonField(theVal,persons,name) {
|
||||
return '<td style="width:110px;"><button data-theme="e" class="schbtn" style="width:100px;" id="resid_'+ theVal + '">' + persons + ": " + name + '</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() {
|
||||
|
@ -471,69 +613,116 @@ function bindCusElem() {
|
|||
});
|
||||
}
|
||||
|
||||
function txtToHtml(txt) {
|
||||
return (txt.replace(/"/g, '"').replace(/</g, "<").replace(/>/g, ">").replace(/'/g, "'"));
|
||||
}
|
||||
|
||||
function bindCancelButtn() {
|
||||
$("#cancelbtn").off("click").on("click", function (e) {
|
||||
e.stopImmediatePropagation();
|
||||
e.preventDefault();
|
||||
setTimeout(function(){document.location.href = "reservation.html?"},500);
|
||||
e.preventDefault();
|
||||
var date = $("#datepicker").datepicker("getDate");
|
||||
var day = date.getDate();
|
||||
var month = date.getMonth() + 1;
|
||||
var year = date.getFullYear();
|
||||
var dateStr = year + "-" + month + "-" + day;
|
||||
|
||||
setTimeout(function(){document.location.href = "reservation.html?v=1.5.25&date=" + dateStr;},500);
|
||||
});
|
||||
}
|
||||
|
||||
function openEditPageForRes(res) {
|
||||
$("#changeres-page").data("id",res.id);
|
||||
|
||||
var day = res.day;
|
||||
var month = parseInt(res.month)-1;
|
||||
var year = res.year;
|
||||
var startTime = res.start;
|
||||
var duration = res.duration;
|
||||
var name = res.guest;
|
||||
var email = res.email;
|
||||
var noOfGuests = res.persons;
|
||||
var phone = res.phone;
|
||||
var remark = res.remark;
|
||||
var roomid = res.roomid;
|
||||
var tableid = res.tableid;
|
||||
if (tableid < 0) {
|
||||
roomid = -1;
|
||||
}
|
||||
|
||||
var changeDate = new Date(year, month, day, 0,0,0,0);
|
||||
|
||||
$('#cdatepicker').datepicker('setDate', changeDate);
|
||||
|
||||
$("#ctimefieldse").val(startTime);
|
||||
$("#cnoofguestse").val(noOfGuests);
|
||||
$("#cdurationse").val(duration);
|
||||
$("#cguestname").val(name);
|
||||
$("#cemail").val(email);
|
||||
$("#ctelno").val(phone);
|
||||
$("#cremark").val(remark);
|
||||
fillRoomList("ctablespecinforoomarea","croomselect","ctablespecinfotablearea","ctableselect",roomid,tableid);
|
||||
|
||||
$("#clastcreator").html("<i>" + toHtml(res.creator) + "</i>");
|
||||
$("#clastchanged").html("<i>" + toHtml(res.creationdate) + "</i>");
|
||||
|
||||
bindDlgChangeBtn();
|
||||
bindDlgDelBtn();
|
||||
$.mobile.changePage("#changeres-page");
|
||||
}
|
||||
|
||||
function bindChangeButton() {
|
||||
$(".schbtn").off("click").on("click", function (e) {
|
||||
var resid = ((this.id).split("_"))[1];
|
||||
|
||||
var res = ($("#res-page").data("res"))[resid];
|
||||
$("#changeres-page").data("id",res.id);
|
||||
|
||||
var day = res.day;
|
||||
var month = parseInt(res.month)-1;
|
||||
var year = res.year;
|
||||
var startTime = res.start;
|
||||
var duration = res.duration;
|
||||
var name = res.guest;
|
||||
var email = res.email;
|
||||
var noOfGuests = res.persons;
|
||||
var phone = res.phone;
|
||||
var remark = res.remark;
|
||||
|
||||
var changeDate = new Date(year, month, day, 0,0,0,0);
|
||||
|
||||
$('#cdatepicker').datepicker('setDate', changeDate);
|
||||
|
||||
$("#ctimefieldse").val(startTime);
|
||||
$("#cnoofguestse").val(noOfGuests);
|
||||
$("#cdurationse").val(duration);
|
||||
$("#cguestname").val(name);
|
||||
$("#cemail").val(email);
|
||||
$("#ctelno").val(phone);
|
||||
$("#cremark").val(remark);
|
||||
|
||||
$("#clastcreator").html("<i>" + txtToHtml(res.creator) + "</i>");
|
||||
$("#clastchanged").html("<i>" + txtToHtml(res.creationdate) + "</i>");
|
||||
|
||||
bindDlgChangeBtn();
|
||||
bindDlgDelBtn();
|
||||
$.mobile.changePage("#changeres-page");
|
||||
openEditPageForRes(res);
|
||||
});
|
||||
}
|
||||
function bindChangeResByTableButton() {
|
||||
$(".schtablebtn").off("click").on("click", function (e) {
|
||||
var resid = ((this.id).split("_"))[1];
|
||||
var allRes = $("#res-page").data("resbytables");
|
||||
var theRes = null;
|
||||
for (var i=0;i<allRes.length;i++) {
|
||||
var tableReservations = allRes[i].reservations;
|
||||
for (var j=0;j<tableReservations.length;j++) {
|
||||
var aRes = tableReservations[j];
|
||||
if (aRes.id == resid) {
|
||||
theRes = aRes;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (theRes != null) {
|
||||
openEditPageForRes(theRes);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function bindDlgChangeBtn() {
|
||||
$("#changebtn").off("click").on("click", function (e) {
|
||||
e.stopImmediatePropagation();
|
||||
e.preventDefault();
|
||||
var startTime = $("#ctimefieldse").val();
|
||||
e.preventDefault();
|
||||
var startTime = $("#ctimefieldse").val();
|
||||
var persons = $("#cnoofguestse").val();
|
||||
var duration = $("#cdurationse").val();
|
||||
var guestname = $("#cguestname").val();
|
||||
var email = $("#cemail").val();
|
||||
var phone = $("#ctelno").val();
|
||||
var remark = $("#cremark").val();
|
||||
|
||||
|
||||
var roomkeys = Object.keys(tableoverview);
|
||||
var roomid = -1;
|
||||
var tableid = -1;
|
||||
if (roomkeys.length == 0) {
|
||||
tableid = -1;
|
||||
} else if (roomkeys.length == 1) {
|
||||
roomid = roomkeys[0];
|
||||
tableid = $("#ctableselect").val();
|
||||
} else {
|
||||
roomid = $("#croomselect").val();
|
||||
tableid = -1;
|
||||
if (roomid >= 0) {
|
||||
tableid = $("#ctableselect").val();
|
||||
}
|
||||
}
|
||||
|
||||
var date = $("#cdatepicker").datepicker("getDate");
|
||||
|
||||
var id = $("#changeres-page").data("id");
|
||||
|
@ -549,7 +738,8 @@ function bindDlgChangeBtn() {
|
|||
duration: duration,
|
||||
persons: persons,
|
||||
phone: phone,
|
||||
remark: remark
|
||||
remark: remark,
|
||||
tableid: tableid
|
||||
};
|
||||
|
||||
doAjax("POST","php/contenthandler.php?module=reservation&command=changeReservation",data,handleChangedReservation,"Reservierung");
|
||||
|
@ -560,7 +750,7 @@ function bindDlgChangeBtn() {
|
|||
function bindDlgDelBtn() {
|
||||
$("#delbtn").off("click").on("click", function (e) {
|
||||
e.stopImmediatePropagation();
|
||||
e.preventDefault();
|
||||
e.preventDefault();
|
||||
|
||||
var id = $("#changeres-page").data("id");
|
||||
|
||||
|
@ -576,7 +766,7 @@ $(document).on("pageinit", "#res-page", function () {
|
|||
getGeneralConfigItems();
|
||||
handleDateChangeEvents();
|
||||
|
||||
displayDateSchedule(new Date());
|
||||
displaySpecificDateSchedule();
|
||||
|
||||
bindNewReservationBtn();
|
||||
|
||||
|
@ -601,6 +791,78 @@ $(document).on("pagebeforeshow", "#changeres-page", function () {
|
|||
});
|
||||
|
||||
|
||||
function fillRoomList(roomsectionid,roomselectid,tablesectionid,tableselectid,selectedRoomid,selectedTableid) {
|
||||
var roomkeys = Object.keys(tableoverview);
|
||||
if (roomkeys.length > 1) {
|
||||
var txt = '<label for="' + roomselectid + '">' + RES_ROOM[lang] + ':</label>';
|
||||
txt += "<SELECT id='" + roomselectid + "'>";
|
||||
txt += "<option value='-1'>-</option>";
|
||||
|
||||
for (var i=0;i<roomkeys.length ;i++) {
|
||||
var aRoomKey = roomkeys[i];
|
||||
var aRoom = tableoverview[aRoomKey];
|
||||
var selected = "";
|
||||
if (aRoom.roomid == selectedRoomid) {
|
||||
selected = " selected";
|
||||
}
|
||||
txt += "<option value='" + aRoom.roomid + "' " + selected + ">" + toHtml(aRoom.roomname) + "</option>";
|
||||
}
|
||||
txt += "</SELECT>";
|
||||
$("#" + roomsectionid).html(txt);
|
||||
$("#" + roomsectionid).trigger("create");
|
||||
fillTableList(roomselectid,tablesectionid,tableselectid,selectedTableid);
|
||||
bindRoomSelect(roomsectionid,roomselectid,tablesectionid,tableselectid,selectedTableid);
|
||||
} else {
|
||||
fillTableList(roomselectid,tablesectionid,tableselectid,selectedTableid);
|
||||
}
|
||||
}
|
||||
|
||||
function fillTableList(roomsectionid,tablesectionid,tableselectid,selectedTableid) {
|
||||
var roomkeys = Object.keys(tableoverview);
|
||||
var allowNoTableToSelect = false;
|
||||
var roomid = null;
|
||||
|
||||
if (roomkeys.length == 0) {
|
||||
return;
|
||||
} else if (roomkeys.length == 1) {
|
||||
allowNoTableToSelect = true;
|
||||
roomid = roomkeys[0]
|
||||
} else {
|
||||
roomid = $("#" + roomsectionid).val();
|
||||
}
|
||||
|
||||
var txt = "";
|
||||
if (roomid >= 0) {
|
||||
var tables = tableoverview[roomid]["tables"];
|
||||
txt += '<label for="' + tableselectid + '">' + RES_TABLE[lang] + ':</label>';
|
||||
txt += "<SELECT id='" + tableselectid + "'>";
|
||||
if (allowNoTableToSelect) {
|
||||
txt += "<option value='-1'>-</option>";
|
||||
}
|
||||
for (var i=0;i<tables.length;i++) {
|
||||
var aTable = tables[i];
|
||||
var selected = "";
|
||||
if (aTable.id == selectedTableid) {
|
||||
selected = " selected";
|
||||
}
|
||||
txt += "<option value='" + aTable.id + "' " + selected + ">" + toHtml(aTable.tablename) + "</option>";
|
||||
}
|
||||
txt += "</SELECT>";
|
||||
}
|
||||
$("#" + tablesectionid).html(txt);
|
||||
$("#" + tablesectionid).trigger("create");
|
||||
}
|
||||
|
||||
function bindRoomSelect(roomsectionid,roomselectid,tablesectionid,tableselectid,selectedTableid) {
|
||||
$("#" + roomsectionid).off("change").on("change", function (e) {
|
||||
e.stopImmediatePropagation();
|
||||
e.preventDefault();
|
||||
var selectedRoomid = $("#" + roomselectid).val();
|
||||
selectedTableid = null;
|
||||
fillRoomList(roomsectionid,roomselectid,tablesectionid,tableselectid,selectedRoomid,selectedTableid);
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
||||
<div data-role="page" id="res-page" data-theme="c">
|
||||
<div data-role="panel" id="modulepanel" data-position="right" data-display="overlay">
|
||||
|
@ -721,6 +983,12 @@ $(document).on("pagebeforeshow", "#changeres-page", function () {
|
|||
<input type="text" id="remark" class="reservationinputfield whiteinput" value="" data-mini="true" />
|
||||
</div> <!-- fieldcontain name -->
|
||||
|
||||
<div id="tableinfo" data-role="collapsible" data-theme="c" data-content-theme="e" data-collapsed="true">
|
||||
<h3><span id="tablespecheadertxt">Tischang.</span></h3>
|
||||
<div id="tablespecinforoomarea"></div>
|
||||
<div id="tablespecinfotablearea"></div>
|
||||
</div>
|
||||
|
||||
<a href="#" data-role="button" data-theme="f" id="newbtn"><span id="newtxt">Neu</span></a>
|
||||
</form>
|
||||
|
||||
|
@ -730,7 +998,15 @@ $(document).on("pagebeforeshow", "#changeres-page", function () {
|
|||
|
||||
|
||||
<br>
|
||||
<table id="dayschedule"></table>
|
||||
<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> <!-- 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;">
|
||||
|
@ -874,6 +1150,12 @@ $(document).on("pagebeforeshow", "#changeres-page", function () {
|
|||
<input type="text" id="cremark" class="reservationinputfield whiteinput" value="" data-mini="true" />
|
||||
</div> <!-- fieldcontain cremark -->
|
||||
|
||||
<div id="ctableinfo" data-role="collapsible" data-theme="c" data-content-theme="e" data-collapsed="true">
|
||||
<h3><span id="ctablespecheadertxt">Tischang.</span></h3>
|
||||
<div id="ctablespecinforoomarea"></div>
|
||||
<div id="ctablespecinfotablearea"></div>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
<fieldset class="ui-grid-b" id="changecancelarea">
|
||||
<div class="ui-block-a"><button type="submit" data-theme="d" class="cancelButton" data-icon="back" id="cancelbtn"><span id="canceltxt">Abbruch</span></button></div>
|
||||
|
|
|
@ -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.24";
|
||||
var nextpage = "paydesk.html?version=1.5.25";
|
||||
|
||||
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.24";
|
||||
nextpage = "paydesk.html?t=" + tableid + "&version=1.5.25";
|
||||
} else {
|
||||
$("#nextpagebtntxt").html(SUM_TO_ORDER[lang]);
|
||||
nextpage = "waiter.html?version=1.5.24";
|
||||
nextpage = "waiter.html?version=1.5.25";
|
||||
}
|
||||
|
||||
var txt = "<table class='viewtable'>";
|
||||
|
|
|
@ -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.24">
|
||||
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.25">
|
||||
|
||||
<link rel="stylesheet" href="php/contenthandler.php?module=admin&command=getmobilecss" />
|
||||
<link rel="stylesheet" href="php/3rdparty/orderstyle/jquery.mobile.icons.min.css" />
|
||||
|
|
|
@ -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.24">
|
||||
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.25">
|
||||
<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.24"></script>
|
||||
<script src="utilities.js?v=1.5.25"></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>
|
||||
|
|
|
@ -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.24">
|
||||
<link rel="stylesheet" type="text/css" href="css/bestformat.css?v=1.5.25">
|
||||
<link rel="stylesheet" href="php/contenthandler.php?module=admin&command=getmobilecss" />
|
||||
<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
Loading…
Reference in New Issue