Modulo Web Restaurant Realizado.

This commit is contained in:
2023-03-20 09:18:51 -05:00
parent b86006cea6
commit 379e1befd4
14 changed files with 592 additions and 90 deletions

View File

@@ -11,5 +11,7 @@ express-fileupload
npm install -s //-s para guardar npm install -s //-s para guardar
npm install -s mysql express-myconnection express,morgan telegraf nodemon ejs express-fileupload npm install -s mysql express-myconnection express morgan telegraf nodemon ejs express-fileupload axios
use https://fontawesome.com/search buscar iconos

View File

@@ -1,11 +1,10 @@
const config = { const config = {
db:{ db:{
//host: '192.168.20.150', host: '192.168.20.150',
host: '127.0.0.1',
port: 3306, port: 3306,
user: 'admin', user: 'admin',
pswd: 'Dx.1706%', pswd: 'Dx.1706%',
db_a: 'TELCOTRONICS', db_a: 'zuba',
//db_a: 'facturacion', //db_a: 'facturacion',
debg: false, debg: false,
sock: '/' sock: '/'

View File

@@ -17,8 +17,8 @@ controlador.user = (req, res) => {
res.json(err); res.json(err);
next(err); next(err);
} else { } else {
var Origen = { usuarios: rows }; var usr = { usuarios: rows };
res.json(Origen); res.json(usr);
} }
}); });
}); });

View File

@@ -15,6 +15,7 @@ controlador.verClientesJsonApp = (req, res) => {
res.json(client); res.json(client);
//res.render('clientesV',{ data:rows }); //res.render('clientesV',{ data:rows });
}); });
//conn.end();
}); });
}; };

View File

@@ -27,7 +27,7 @@ controlador.app_login = (req, res) => {
controlador.auth = (req, res) => { controlador.auth = (req, res) => {
console.log(req.body); console.log(req.body);
var pwd = stringTo_md5(req.body.password); var pwd = stringTo_md5(req.body.password);
req.getConnection((err, conn) => { req.getConnection((error, conn,next) => {
conn.query(`SELECT * FROM usuarios WHERE n_sesion = ? and clave=?`, [req.body.usuario, pwd], (err, rows) => { conn.query(`SELECT * FROM usuarios WHERE n_sesion = ? and clave=?`, [req.body.usuario, pwd], (err, rows) => {
if (err) { if (err) {
//res.json(err); //res.json(err);
@@ -46,6 +46,7 @@ controlador.auth = (req, res) => {
} }
} }
}); });
//conn.end();
}); });
//res.render(''); //res.render('');

View File

@@ -4,8 +4,8 @@ const fs = require('fs');
controlador.verItemsJson = (req, res) => { controlador.verItemsJson = (req, res) => {
req.getConnection((err, conn) => { req.getConnection((err, conn) => {
conn.query('SELECT * FROM productos order by codigo_prdcto DESC LIMIT 100', (err, rows) => {//se obtiene error o consulta filas(rows) conn.query('SELECT * FROM productos order by codigo_prdcto DESC LIMIT 100', (err, rows) => {//se obtiene error o consulta filas(rows)
//conn.query('SELECT * FROM clientes LIMIT 62668,15', (err, rows) => {//se obtiene error o consulta filas(rows) //conn.query('SELECT * FROM clientes LIMIT 62668,15', (err, rows) => {//se obtiene error o consulta filas(rows)
if(err){ if (err) {
res.json(err); res.json(err);
//next(err); //next(err);
} }
@@ -19,14 +19,14 @@ controlador.verItemsJson = (req, res) => {
controlador.verItemsJsonApp = (req, res) => { controlador.verItemsJsonApp = (req, res) => {
req.getConnection((err, conn) => { req.getConnection((err, conn) => {
conn.query('SELECT codigo_prdcto, detalle_prdcto, describe_prdcto FROM productos order by codigo_prdcto DESC', (err, rows) => {//se obtiene error o consulta filas(rows) conn.query('SELECT codigo_prdcto, detalle_prdcto, describe_prdcto FROM productos order by codigo_prdcto DESC', (err, rows) => {//se obtiene error o consulta filas(rows)
//conn.query('SELECT * FROM clientes LIMIT 62668,15', (err, rows) => {//se obtiene error o consulta filas(rows) //conn.query('SELECT * FROM clientes LIMIT 62668,15', (err, rows) => {//se obtiene error o consulta filas(rows)
if(err){ if (err) {
res.json(err); res.json(err);
//next(err); //next(err);
} }
//console.log(rows); //console.log(rows);
//var test = {"Items":[{"idt_prdcto":"1","codigo_prdcto":"CODIGOTEST","detalle_prdcto":"ITEM GENERADO","describe_prdcto":"DESCRIPCION DE ITEMS"}]}; //var test = {"Items":[{"idt_prdcto":"1","codigo_prdcto":"CODIGOTEST","detalle_prdcto":"ITEM GENERADO","describe_prdcto":"DESCRIPCION DE ITEMS"}]};
var itemsD = {Items:rows}; var itemsD = { Items: rows };
res.json(itemsD); res.json(itemsD);
//res.render('clientesV',{ data:rows }); //res.render('clientesV',{ data:rows });
}); });
@@ -36,14 +36,14 @@ controlador.verItemsJsonApp = (req, res) => {
controlador.verItemPanel = (req, res) => { controlador.verItemPanel = (req, res) => {
req.getConnection((err, conn) => { req.getConnection((err, conn) => {
conn.query('SELECT codigo_prdcto, detalle_prdcto, describe_prdcto FROM productos order by codigo_prdcto DESC', (err, rows) => {//se obtiene error o consulta filas(rows) conn.query('SELECT codigo_prdcto, detalle_prdcto, describe_prdcto FROM productos order by codigo_prdcto DESC', (err, rows) => {//se obtiene error o consulta filas(rows)
//conn.query('SELECT * FROM clientes LIMIT 62668,15', (err, rows) => {//se obtiene error o consulta filas(rows) //conn.query('SELECT * FROM clientes LIMIT 62668,15', (err, rows) => {//se obtiene error o consulta filas(rows)
if(err){ if (err) {
res.json(err); res.json(err);
//next(err); //next(err);
} }
//console.log(rows); //console.log(rows);
//var test = {"Items":[{"idt_prdcto":"1","codigo_prdcto":"CODIGOTEST","detalle_prdcto":"ITEM GENERADO","describe_prdcto":"DESCRIPCION DE ITEMS"}]}; //var test = {"Items":[{"idt_prdcto":"1","codigo_prdcto":"CODIGOTEST","detalle_prdcto":"ITEM GENERADO","describe_prdcto":"DESCRIPCION DE ITEMS"}]};
var itemsD = {Items:rows}; var itemsD = { Items: rows };
res.json(itemsD); res.json(itemsD);
//res.render('clientesV',{ data:rows }); //res.render('clientesV',{ data:rows });
}); });
@@ -53,14 +53,14 @@ controlador.verItemPanel = (req, res) => {
controlador.verInventarioJsonApp = (req, res) => { controlador.verInventarioJsonApp = (req, res) => {
req.getConnection((err, conn) => { req.getConnection((err, conn) => {
conn.query('SELECT codigo_prdcto, detalle_prdcto, describe_prdcto, idcostos_valores FROM ver_productosPrecios', (err, rows) => {//se obtiene error o consulta filas(rows) conn.query('SELECT codigo_prdcto, detalle_prdcto, describe_prdcto, idcostos_valores FROM ver_productosPrecios', (err, rows) => {//se obtiene error o consulta filas(rows)
//conn.query('SELECT * FROM clientes LIMIT 62668,15', (err, rows) => {//se obtiene error o consulta filas(rows) //conn.query('SELECT * FROM clientes LIMIT 62668,15', (err, rows) => {//se obtiene error o consulta filas(rows)
if(err){ if (err) {
res.json(err); res.json(err);
//next(err); //next(err);
} }
//console.log(rows); //console.log(rows);
//var test = {"Items":[{"idt_prdcto":"1","codigo_prdcto":"CODIGOTEST","detalle_prdcto":"ITEM GENERADO","describe_prdcto":"DESCRIPCION DE ITEMS"}]}; //var test = {"Items":[{"idt_prdcto":"1","codigo_prdcto":"CODIGOTEST","detalle_prdcto":"ITEM GENERADO","describe_prdcto":"DESCRIPCION DE ITEMS"}]};
var itemsD = {Items:rows}; var itemsD = { Items: rows };
res.json(itemsD); res.json(itemsD);
//res.render('clientesV',{ data:rows }); //res.render('clientesV',{ data:rows });
}); });
@@ -68,30 +68,30 @@ controlador.verInventarioJsonApp = (req, res) => {
}; };
//********* CONSULTA ITEMS modo like ********// //********* CONSULTA ITEMS modo like ********//
controlador.autocompletado_itemsJson = (req,res) => { controlador.autocompletado_itemsJson = (req, res) => {
console.log(req.params); console.log(req.params);
const datBuscar = req.params.dat_busq; const datBuscar = req.params.dat_busq;
req.getConnection((err, conn) => { req.getConnection((err, conn) => {
//console.log(datBuscar); //console.log(datBuscar);
conn.query("SELECT detalle_prdcto,describe_prdcto FROM productos WHERE detalle_prdcto like '%"+datBuscar+"%'",(err,rows)=>{ conn.query("SELECT detalle_prdcto,describe_prdcto FROM productos WHERE detalle_prdcto like '%" + datBuscar + "%'", (err, rows) => {
res.json(rows); res.json(rows);
}); });
}); });
}; };
//********* CONSULTA ITEMS ********// //********* CONSULTA ITEMS ********//
controlador.verItemJson = (req,res) => { controlador.verItemJson = (req, res) => {
console.log(req.params); console.log(req.params);
const codItem = req.params.codigo_item; const codItem = req.params.codigo_item;
req.getConnection((err, conn) => { req.getConnection((err, conn) => {
conn.query('SELECT * FROM productos WHERE codigo_prdcto = ?',[codItem],(err,rows)=>{ conn.query('SELECT * FROM productos WHERE codigo_prdcto = ?', [codItem], (err, rows) => {
res.json(rows); res.json(rows);
//res.render('clientesV',{ data:rows }); //res.render('clientesV',{ data:rows });
}); });
}); });
}; };
controlador.verItemJsonPost = (req,res) => { controlador.verItemJsonPost = (req, res) => {
const {codigo_prdcto} = req.params; const { codigo_prdcto } = req.params;
const codigo_prdctoB = req.body; const codigo_prdctoB = req.body;
console.log(codigo_prdcto); console.log(codigo_prdcto);
res.send('working...'); res.send('working...');
@@ -109,7 +109,7 @@ controlador.guardaItem = (req, res) => {
console.log(data.item); console.log(data.item);
let json = JSON.parse(data.item); let json = JSON.parse(data.item);
console.log(json.Items); console.log(json.Items);
req.getConnection((err,conn)=>{ req.getConnection((err, conn) => {
/*conn.query('INSERT INTO productos set ?',[data],(err,rows)=>{ /*conn.query('INSERT INTO productos set ?',[data],(err,rows)=>{
if(err){ if(err){
res.json(err); res.json(err);
@@ -120,7 +120,7 @@ controlador.guardaItem = (req, res) => {
//res.send('working...'); //res.send('working...');
res.redirect('/');//redireciona a la ruta inical de la app res.redirect('/');//redireciona a la ruta inical de la app
});*/ });*/
//set ? => data //set ? => data
}); });
res.json("'resp':'ok'"); res.json("'resp':'ok'");
//res.send('working...'); //res.send('working...');
@@ -133,29 +133,29 @@ controlador.guardarItems = (req, res) => {
let json = JSON.parse(data.json_item); let json = JSON.parse(data.json_item);
//let json = parse.Items; //let json = parse.Items;
//console.log(json.length); //console.log(json.length);
for(var i=0;i<json.length;i++){ for (var i = 0; i < json.length; i++) {
var item = json[i]; var item = json[i];
//console.log(item); //console.log(item);
req.getConnection((err,conn)=>{ req.getConnection((err, conn) => {
conn.query('INSERT INTO productos_cloud set ?',[item],(err,rows)=>{ conn.query('INSERT INTO productos_cloud set ?', [item], (err, rows) => {
console.log(item); console.log(item);
});//set ? => data });//set ? => data
}); });
} }
res.json("'resp':'ok'"); res.json("'resp':'ok'");
}; };
controlador.json = (req, res) => { controlador.json = (req, res) => {
res.render('api_json',{ res.render('api_json', {
}) })
} }
//********* CONSULTA ITEMS APP-SIGMA********// //********* CONSULTA ITEMS APP-SIGMA********//
controlador.app_consultaItemsPrecios = (req,res) => { controlador.app_consultaItemsPrecios = (req, res) => {
const data = req.query; const data = req.query;
const item = "%"+req.query.consulta+"%"; const item = "%" + req.query.consulta + "%";
const grupo = req.query.gp_precio; const grupo = req.query.gp_precio;
//let data = req.stringify; //let data = req.stringify;
console.log(req.body); console.log(req.body);
@@ -173,29 +173,29 @@ controlador.app_consultaItemsPrecios = (req,res) => {
img as imagen img as imagen
FROM ver_inventario_precios_app FROM ver_inventario_precios_app
where grupo_precio = ? and (nombre like ? or descripcion like ?)` where grupo_precio = ? and (nombre like ? or descripcion like ?)`
,[grupo,item,item],(err,rows)=>{ , [grupo, item, item], (err, rows) => {
//res.json(rows); //res.json(rows);
//if(err) return res.status(500).send("Error en Consulta de Items"); //if(err) return res.status(500).send("Error en Consulta de Items");
rows.map( rows.map(
dat => { dat => {
//console.log(blob_a_b64(dat.imagen)); //console.log(blob_a_b64(dat.imagen));
dat.imagen = blob_a_b64(dat.imagen); dat.imagen = blob_a_b64(dat.imagen);
//fs.writeFileSync(path.join(__dirname,"../img/db_img"+image.codigo_prdcto+".png"),image.imagen); //fs.writeFileSync(path.join(__dirname,"../img/db_img"+image.codigo_prdcto+".png"),image.imagen);
} }
) )
res.json(rows); res.json(rows);
console.log(err); console.log(err);
//res.render('clientesV',{ data:rows }); //res.render('clientesV',{ data:rows });
}); });
}); });
}; };
function blob_a_b64(blob) { function blob_a_b64(blob) {
var b64; var b64;
if(blob!=null){ if (blob != null) {
b64 = blob.toString('base64'); b64 = blob.toString('base64');
}else{ } else {
b64=""; b64 = "";
} }
return b64; return b64;
} }
@@ -204,18 +204,41 @@ function blob_a_b64(blob) {
controlador.cierresCaja = (req, res) => { controlador.cierresCaja = (req, res) => {
req.getConnection((err, conn) => { req.getConnection((err, conn) => {
conn.query('SELECT * FROM cont_cierreCaja', (err, rows) => {//se obtiene error o consulta filas(rows) conn.query('SELECT * FROM cont_cierreCaja', (err, rows) => {//se obtiene error o consulta filas(rows)
//conn.query('SELECT * FROM clientes LIMIT 62668,15', (err, rows) => {//se obtiene error o consulta filas(rows) //conn.query('SELECT * FROM clientes LIMIT 62668,15', (err, rows) => {//se obtiene error o consulta filas(rows)
if(err){ if (err) {
res.json(err); res.json(err);
//next(err); //next(err);
} }
//console.log(rows); //console.log(rows);
//var test = {"Items":[{"idt_prdcto":"1","codigo_prdcto":"CODIGOTEST","detalle_prdcto":"ITEM GENERADO","describe_prdcto":"DESCRIPCION DE ITEMS"}]}; //var test = {"Items":[{"idt_prdcto":"1","codigo_prdcto":"CODIGOTEST","detalle_prdcto":"ITEM GENERADO","describe_prdcto":"DESCRIPCION DE ITEMS"}]};
var itemsD = {CierreCaja:rows}; var itemsD = { CierreCaja: rows };
res.json(itemsD); res.json(itemsD);
//res.render('clientesV',{ data:rows }); //res.render('clientesV',{ data:rows });
}); });
}); });
}; };
//********* CONSULTA CATEGORIA DE ITEMS ****************//
controlador.cat_json = (req, res) => {
req.getConnection((err, conn) => {
try {
conn.query('SELECT * FROM product_categorias', (err, rows) => {//se obtiene error o consulta filas(rows)
//conn.query('SELECT * FROM clientes LIMIT 62668,15', (err, rows) => {//se obtiene error o consulta filas(rows)
if (err) {
res.json(err);
next(err);
}
//console.log(rows);
//var test = {"Items":[{"idt_prdcto":"1","codigo_prdcto":"CODIGOTEST","detalle_prdcto":"ITEM GENERADO","describe_prdcto":"DESCRIPCION DE ITEMS"}]};
var itemsD = { Categorias: rows };
res.json(itemsD);
//res.render('clientesV',{ data:rows });
});
} catch (err) {
res.json(err);
next(err);
}
//conn.end();
});
}
module.exports = controlador; module.exports = controlador;

View File

@@ -0,0 +1,60 @@
.buble_add{
width: 50px;
height: 50px;
background: #0791ec;
bottom: 10px;
border-radius: 50%;
padding-top: 7px;
padding-left: 17px;
z-index: 100;
position: fixed;
right: 30px;
bottom: 20px;
}
.bt_float{
background: #0791ec;
font-size: 24px;
text-align: center;
border-radius: 50%;
}
.tooltip {
padding: 18px 32px;
background: rgba(255, 255, 255, 0.8);
width: 220px;
border-radius: 5px;
text-align: center;
filter: drop-shadow(0 3px 5px #ccc);
line-height: 1.5;
display: none;
bottom: 80px;
right: 30px;
z-index: 100;
position: fixed;
color: #000000;
font-weight: bold;
}
.tooltip:after {
content: "";
position: absolute;
bottom: -9px;
left: 85%;
margin-left: -9px;
width: 18px;
height: 18px;
background: rgba(255, 255, 255, 0.6);
transform: rotate(45deg);
}
.tooltip-trigger:hover + .tooltip {
display: block;
}
#observacion{
margin-top: 5px;
}

View File

@@ -0,0 +1,190 @@
.dash_container {
position: relative;
width: 100%;
display: grid;
grid-gap: 2px;
grid-template-columns: 2fr 2fr;
}
.dash_panelCategoria {
position: relative;
width: 100%;
padding: 5px;
display: grid;
background: #2b3c47;
/*grid-gap: 10px;
grid-template-columns: 1fr 12fr;*/
}
.dash_panelDetalle {
position: relative;
width: 100%;
padding: 5px;
display: grid;
background: #2b3c47;
/*grid-gap: 10px;
grid-template-columns: 1fr 12fr;*/
}
.dash_grupoCardBox {
position: relative;
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-gap: 6px;
}
.dash_info_grupoCardBox {
width: 100%;
margin: 10px;
}
.dash_info_grupoCardBox a {
display: none;
}
.dash_grupoCardBox .card_cat {
position: relative;
background: #1f497d;
padding: 5px;
display: flex;
justify-content: space-between;
cursor: pointer;
}
.cardBoxDash .card_cat .card_nombre {
color: #999;
}
.cardBoxDash .card_cat .iconBox {
font-size: 16px;
color: rgb(154, 223, 255);
}
.dash_titulo {
padding-top: 5px;
}
.dash_titulo a {
display: none;
}
.dash_titulo input {
width: 100%;
color: #000;
}
/*.dash_titulo input::placeholder { /* Chrome, Firefox, Opera, Safari 10.1+
color: #000;
opacity: 1;
}*/
/*********** DASH PANEL FOOTER ***********/
.dash_panelDetalleTotales {
width: 100%;
height: 80px;
background: #2b3c47;
padding: 7px;
z-index: 100;
position: fixed;
bottom: 2px;
display: grid;
grid-gap: 2px;
grid-template-columns: 15% 10% 10%;
padding: 10px;
}
.footer_btn {
margin-bottom: 10px;
padding-top: 18px;
cursor: pointer;
}
.footer_btn:hover {
background: rgba(10, 120, 240, .5);
}
.footer_total {
text-align: right;
}
.footer_valores {
text-align: right;
}
/*
.dash_panelCategoria .dash_info_grupoCardBox a:hover + #ver_cat{
display: none;
}
.dash_panelCategoria .dash_info_grupoCardBox a:hover + #ver_detalle{
display: block;
}
.dash_panelDetalle .dash_titulo a:hover + #ver_detalle{
display: none;
}
.dash_panelDetalle .dash_titulo a:hover + #ver_cat{
display: block;
}
*/
@media(max-width:992px) {
.dash_panelDetalle .dash_titulo a {
display: block;
display: inline-block;
position: absolute;
right: 1px;
}
.dash_panelCategoria .dash_info_grupoCardBox a {
display: block;
display: inline-block;
position: absolute;
right: 1px;
}
.dash_info_grupoCardBox {
display: inline-block;
}
.dash_panelDetalle {
position: absolute;
right: 1px;
display: none;
}
.dash_container {
position: relative;
width: 100%;
display: grid;
grid-gap: 2px;
grid-template-columns: auto;
}
.dash_panelDetalleTotales {
display: grid;
grid-gap: 2px;
grid-template-columns: 15% 70% 10%;
}
}
@media(max-width:768px) {
.dash_grupoCardBox {
position: relative;
display: grid;
grid-template-columns: repeat(2, 1fr);
grid-gap: 6px;
}
.dash_grupoCardBox .card_cat {
position: relative;
background: #1f497d;
padding: 3px;
display: flex;
justify-content: space-between;
cursor: pointer;
font-size: 11px;
}
.dash_panelDetalleTotales {
display: grid;
grid-gap: 2px;
grid-template-columns: 23% 40% 15%;
}
}

View File

@@ -172,4 +172,4 @@ _:-ms-input-placeholder, :root .demo-graph {
display: flex; display: flex;
box-sizing: border-box; box-sizing: border-box;
align-items: center; align-items: center;
} }

View File

@@ -212,6 +212,14 @@ body {
font-size: 2.5em; font-size: 2.5em;
color: rgb(154, 223, 255); color: rgb(154, 223, 255);
} }
.cardBox .card_cat{
position: relative;
background: #1f497d;
padding: 5px;
display: flex;
justify-content: space-between;
cursor: pointer;
}
/********* TABLAS *********/ /********* TABLAS *********/

View File

@@ -3,28 +3,45 @@ async function ver_usuarios(){
console.log(user); console.log(user);
} }
async function mostrar_form(form_aRender){ async function mostrar_form(nombre_form_aRender){
console.log(form_aRender); console.log(nombre_form_aRender);
switch(form_aRender){ switch(nombre_form_aRender){
case 'clientes': case 'clientes':
let cli = await get_html("/verClientesJsonApp"); let cli = await get_json("/verClientesJsonApp");
await console.log(cli); var tabla = await generaTab_clientes(cli.Clientes);
await render(tabla);
break; break;
case 'pedidos': case 'pedidos':
let pedidos = await get_json("/consultaPedidos?origen=%"); let pedidos = await get_json("/consultaPedidos?origen=%");
var thead = "<td>ID</td><td>Nombre</td><td>Fecha</td><td>Origen</td><td>Valor</td><td>Estado</td>"; var thead = "<td>ID</td><td>Nombre</td><td>Fecha</td><td>Origen</td><td>Valor</td><td>Estado</td>";
let tabla = await generaTab_html(pedidos.ConsultaPedidos,thead); var tabla = await generaTab_pedidos(pedidos.ConsultaPedidos,thead);
await render(tabla); await render(tabla);
//await console.log(pedidos.ConsultaPedidos); //await console.log(pedidos.ConsultaPedidos);
break; break;
case 'usuarios': case 'usuarios':
let user = await get_json("/users"); let user = await get_json("/users");
console.log(user); var tabla = await generaTab_usuarios(user.usuarios);
await render(tabla);
break; break;
case 'dashboard': case 'dashboard':
let dash = await get_html("/dash_board"); let dash = await get_html("/dash_board");
console.log(dash); console.log(dash);
break; break;
case 'mesas':
let origen = await get_json("/origen_pedidos");
var card = await generaCard_mesas(origen.origen_pedidos);
await render(card);
break;
case 'menu':
let menu = await get_json("/dash_board");
var card = await generaCard_platosMenu(menu.usuarios);
await render(card);
break;
case 'dashboard_mesero':
let item_cat = await get_json("/categorias_json");
var card = await dashboard_mesero(item_cat.Categorias);
await render(card);
break;
} }
} }
@@ -66,31 +83,7 @@ async function render(dat_html) {
contenedor.innerHTML = dat_html; contenedor.innerHTML = dat_html;
} }
async function generaTab_html(json,heder_tab){
var tab = `
<div class="panel_table">
<div class="panel_header">
<h2>Pedidos Recientes</h2>
<input type="date" id="select_fecha" name="filtro_fecha">
</div>
<table><thead><tr>${heder_tab}</tr></thead><tbody>`;
for (let key in json) {
let valor = json[key].PedUsoPrdct_valor;
let fecha = json[key].PedUsoPrdct_reg;
let fila = `<tr>
<td>${json[key].PedUsoPrdct_id}</td>
<td>${json[key].client_nombre}</td>
<td>${fecha.substr(0, 10)}</td>
<td>${json[key].PedUsoPrdct_origen}</td>
<td> ${valor.toFixed(2)}</td>
<td><span class="estado ${json[key].PedUsoPrdct_estado}">${json[key].PedUsoPrdct_estado}</span></td>
</tr>`;
tab = tab+fila;
}
tab = tab+"</tbody></table></div>";
//console.log(json);
return tab;
}
async function generaCardUser(json,heder_tab){ async function generaCardUser(json,heder_tab){
var tab = ` var tab = `
<div class="panel_table"> <div class="panel_table">

View File

@@ -0,0 +1,220 @@
let num_mesa,mesa_nom;
async function generaTab_pedidos(json, heder_tab) {
var tab = `
<div class="panel_table">
<div class="panel_header">
<h2>Pedidos Recientes</h2>
<input type="date" id="select_fecha" name="filtro_fecha">
</div>
<table><thead><tr>${heder_tab}</tr></thead><tbody>`;
for (let key in json) {
let valor = json[key].PedUsoPrdct_valor;
let fecha = json[key].PedUsoPrdct_reg;
let fila = `<tr>
<td>${json[key].PedUsoPrdct_id}</td>
<td>${json[key].client_nombre}</td>
<td>${fecha.substr(0, 10)}</td>
<td>${json[key].PedUsoPrdct_origen}</td>
<td> ${valor.toFixed(2)}</td>
<td><span class="estado ${json[key].PedUsoPrdct_estado}">${json[key].PedUsoPrdct_estado}</span></td>
</tr>`;
tab = tab + fila;
}
tab = tab + "</tbody></table></div>" + bt_add("add_pedido", "Nuevo Pedido");
//console.log(json);
return tab;
}
async function generaTab_clientes(json) {
var thead = "<td>ID Cliente</td><td>Nombre</td><td>email</td><td>Telefono</td><td>Direccion</td>";
var tab = `
<div class="panel_table">
<div class="panel_header">
<h2>Clientes</h2>
<input type="date" id="select_fecha" name="filtro_fecha">
</div>
<table><thead><tr>${thead}</tr></thead><tbody>`;
for (let key in json) {
let fila = `<tr>
<td>${json[key].client_rucCed}</td>
<td>${json[key].client_nombre}</td>
<td>${json[key].client_email}</td>
<td>${json[key].client_celular}</td>
<td>${json[key].client_direccion}</td>
</tr>`;
tab = tab + fila;
}
tab = tab + "</tbody></table></div>";
//console.log(json);
return tab;
}
async function generaTab_usuarios(json) {
var std = "ACTIVO";
var thead = "<td>COD</td><td>Usuario</td><td>Nombre</td><td>ROL</td><td>Estado</td>";
var tab = `
<div class="panel_table">
<div class="panel_header">
<h2>Usuarios</h2>
<input type="date" id="select_fecha" name="filtro_fecha">
</div>
<table><thead><tr>${thead}</tr></thead><tbody>`;
for (let key in json) {
let fila = `<tr>
<td>${json[key].cod_usr}</td>
<td>${json[key].n_sesion}</td>
<td>${json[key].nombre}</td>
<td>${json[key].rol}</td>
<td><span class="estado ${std}">${std}</span></td>
</tr>`;
tab = tab + fila;
}
tab = tab + "</tbody></table></div>";
//console.log(json);
return tab;
}
async function generaCard_mesas(json) {
var td,std;
var thead = "<td>ID</td><td>MESAS</td><td>OBSERVACION</td><td>Estado</td>";
var tab = `
<div class="panel_table">
<div class="panel_header">
<h2>Usuarios</h2>
</div>
<table><thead><tr>${thead}</tr></thead><tbody>`;
for (let key in json) {
console.log(json[key].Estado);
if (json[key].Estado == 1) {
std = "LIBRE";
td = '<td><span class="estado ACTIVO">LIBRE</span></td>';
} else if (json[key].Estado == 0) {
std = "OCUPADA";
td = '<td><span class="estado ERROR">OCUPADA</span></td>';
}
let fila = `<tr onclick="comprovar_mesa('${json[key].id}','${json[key].Nombre}','${std}')">
<td>${json[key].id}</td>
<td>${json[key].Nombre}</td>
<td>${json[key].Observacion}</td>
${td}
</tr>`;
tab = tab + fila;
}
tab = tab + "</tbody></table></div>" + bt_add("generar_menu", "Nueva Mesa/Orige");
//console.log(json);
return tab;
}
function comprovar_mesa(id,nombre,std){
num_mesa = id;
mesa_nom = nombre;
if(std=='LIBRE'){
mostrar_form('dashboard_mesero');
}else if(std=='OCUPADA'){
alert("Mesa Ocupada");
}
}
async function generaCard_platosMenu(json) {
var std = "ACTIVO";
var thead = "<td>COD</td><td>Usuario</td><td>Nombre</td><td>ROL</td><td>Estado</td>";
var tab = `
<div class="panel_table">
<div class="panel_header">
<h2>Usuarios</h2>
<input type="date" id="select_fecha" name="filtro_fecha">
</div>
<table><thead><tr>${thead}</tr></thead><tbody>`;
for (let key in json) {
let fila = `<tr>
<td>${json[key].cod_usr}</td>
<td>${json[key].n_sesion}</td>
<td>${json[key].nombre}</td>
<td>${json[key].rol}</td>
<td><span class="estado ${std}">${std}</span></td>
</tr>`;
tab = tab + fila;
}
tab = tab + "</tbody></table></div>";
//console.log(json);
return tab;
}
async function dashboard_mesero(json_cat) {
var thead = "<td>Cantidad</td><td>Articulo</td><td>Precio + IVA</td>";
var card_cat = `<div class="dash_panelCategoria" id="ver_cat">
<div class="dash_info_grupoCardBox">
Categoria Items <a href="#" onclick="verDetalle(true)"><i class="fa fa-eye" aria-hidden="true"> Ver Detalle</i></a>
</div>
<div class="dash_grupoCardBox">`;
console.log("menu creado");
for (let key in json_cat) {
let fila = `<div class="card_cat">
<div class="">
<div>${json_cat[key].nom_categoria}</div>
</div>
<div class="iconBox">
<i class="fa fa-cutlery" aria-hidden="true"></i>
</div>
</div>`;
card_cat = card_cat + fila;
}
var panel_pedido = `
<div class="dash_panelDetalle" id="ver_detalle">
<div class="dash_titulo">
<span>Mesa: ${mesa_nom}</span><span> Pedidos N#</span>
<a href="#" onclick="verDetalle(false)"><i class="fa fa-eye" aria-hidden="true">Agregar Items</i></a>
<input type="text" placeholder="Observaciones" id="observacion">
</div>
<div class="">
<label for="patio">Patio</label>
<input type="radio" id="patio" name="fav_language" value="patio" checked>
<label for="Llevar"> Llevar</label>
<input type="radio" id="Llevar" name="fav_language" value="Llevar">
</div>
<div class="card_table">
<table><thead><tr>${thead}</tr></thead><tbody></tbody></table>
</div>
<div class="dash_panelDetalleTotales">
<div class="footer_btn btn">Guardar</div>
<div class="footer_total">
<div><span>SubTotal:</span></div>
<div><span>I.V.A:</span></div>
<div><span>TOTAL:</span></div>
</div>
<div class="footer_valores">
<div>0.00</div>
<div>0.00</div>
<div>0.00</div>
</div>
</div>
</div>`;
return `<div class="dash_container">${card_cat}</div></div>${panel_pedido}</div>`;
}
//funcion para crear boton tipo burbuja flotante
function bt_add(accion, msg) {
var toltip = `<div class="tooltip">Crear un ${msg}</div>`;
var btn = `<div class="buble_add tooltip-trigger"><a class="bt_float" href="#" onclick="ir_a('${accion}')"><span class="icon"><i class="fa fa-plus" aria-hidden="true"></i></span></a></div>`;
return btn + toltip;
}
function ir_a(ruta) {
switch (ruta) {
case "generar_menu": genera_menu();
break;
case "generar_menu":
break;
}
console.log(ruta);
}
function verDetalle(std){
console.log(std);
if(std){
document.getElementById('ver_cat').style.display='none';
document.getElementById('ver_detalle').style.display='block';
console.log(std);
}else{
document.getElementById('ver_cat').style.display='block';
document.getElementById('ver_detalle').style.display='none';
}
}

View File

@@ -22,6 +22,8 @@ rutas.post('/addItems/', controladorItems.guardarItems);//ver productos en modo
rutas.get('/cierresCaja/', controladorItems.cierresCaja);//ver productos en modo json/get rutas.get('/cierresCaja/', controladorItems.cierresCaja);//ver productos en modo json/get
rutas.post('/json', controladorItems.json);//ver menu en modo json rutas.post('/json', controladorItems.json);//ver menu en modo json
//APP_SIGMA consultas categorias
rutas.get('/categorias_json', controladorItems.cat_json);//ver categorias items en modo json
//APP_SIGMA consultas //APP_SIGMA consultas
rutas.get('/consultaItemsPrecios/', controladorItems.app_consultaItemsPrecios);//ver productos en modo json/post rutas.get('/consultaItemsPrecios/', controladorItems.app_consultaItemsPrecios);//ver productos en modo json/post

View File

@@ -11,6 +11,8 @@
integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous"> integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
<link rel="stylesheet" href="../css/restaurant.css"> <link rel="stylesheet" href="../css/restaurant.css">
<link rel="stylesheet" href="../css/restaurant_form.css"> <link rel="stylesheet" href="../css/restaurant_form.css">
<link rel="stylesheet" href="../css/botones.css">
<link rel="stylesheet" href="../css/dash_mesero.css">
<link rel="icon" sizes="64x64" href="../img/favicon_restaurant/favicon.ico"> <link rel="icon" sizes="64x64" href="../img/favicon_restaurant/favicon.ico">
</head> </head>
@@ -56,14 +58,14 @@
</a> </a>
</li> </li>
<li> <li>
<a href="#" onclick="mostrar_form('usuarios')"> <a href="#" onclick="mostrar_form('mesas')">
<span class="icon"><i class="fa fa-cutlery" aria-hidden="true"></i></span> <span class="icon"><i class="fa fa-cutlery" aria-hidden="true"></i></span>
<span class="title">Mesas</span> <span class="title">Mesas</span>
</a> </a>
</li> </li>
<li> <li>
<a href="#" onclick="mostrar_form('usuarios')"> <a href="#" onclick="mostrar_form('menu')">
<span class="icon"><i class="fa fa-coffee" aria-hidden="true"></i></span> <span class="icon"><i class="fa fa-coffee" aria-hidden="true"></i></span>
<span class="title">Menu</span> <span class="title">Menu</span>
</a> </a>
@@ -127,6 +129,7 @@
</Script> </Script>
<script src="../js/app_restaurant.js"></script> <script src="../js/app_restaurant.js"></script>
<script src="../js/app_restaurant_tabGen.js"></script>
</body> </body>
</html> </html>