Update script.js
Browse files
script.js
CHANGED
|
@@ -55,9 +55,8 @@ function render() {
|
|
| 55 |
mesaDiv.style.cursor = 'pointer';
|
| 56 |
mesaDiv.onclick = () => gestionarMesa(index);
|
| 57 |
|
| 58 |
-
// Añadir listener para el botón de eliminar
|
| 59 |
mesaDiv.querySelector('.delete-mesa').onclick = (event) => {
|
| 60 |
-
event.stopPropagation();
|
| 61 |
if (confirm(`¿Estás seguro de que quieres eliminar la Mesa ${mesa.numero}?`)) {
|
| 62 |
mesas.splice(index, 1);
|
| 63 |
render();
|
|
@@ -70,7 +69,6 @@ function render() {
|
|
| 70 |
app.appendChild(mesasContainer);
|
| 71 |
}
|
| 72 |
|
| 73 |
-
|
| 74 |
function gestionarMesa(index) {
|
| 75 |
const mesa = mesas[index];
|
| 76 |
app.innerHTML = '';
|
|
@@ -116,7 +114,6 @@ function gestionarMesa(index) {
|
|
| 116 |
`;
|
| 117 |
opcionesContainer.appendChild(opcionDiv);
|
| 118 |
|
| 119 |
-
// Añadimos los listeners dentro del bucle, para cada grupo de botones
|
| 120 |
const cantidadControls = opcionDiv.querySelector('.cantidad-controls');
|
| 121 |
const cantidadSpan = cantidadControls.querySelector('.cantidad');
|
| 122 |
cantidadControls.querySelector('.decrease').onclick = () => {
|
|
@@ -184,39 +181,45 @@ function gestionarMesa(index) {
|
|
| 184 |
app.appendChild(finalizarButton);
|
| 185 |
}
|
| 186 |
|
| 187 |
-
// Generación del
|
| 188 |
function generarTicket(index, total) {
|
| 189 |
const mesa = mesas[index];
|
| 190 |
-
let qrContent = `Mesa ${mesa.numero}\n`;
|
| 191 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 192 |
mesa.pedidos.forEach(pedido => {
|
| 193 |
-
|
|
|
|
| 194 |
});
|
|
|
|
| 195 |
|
| 196 |
-
|
| 197 |
-
|
| 198 |
-
|
|
|
|
|
|
|
| 199 |
|
| 200 |
-
|
|
|
|
| 201 |
|
|
|
|
| 202 |
const qrContainer = document.createElement('div');
|
| 203 |
qrContainer.className = 'text-center';
|
| 204 |
app.appendChild(qrContainer);
|
| 205 |
|
|
|
|
| 206 |
const qrUrl = `https://api.qrserver.com/v1/create-qr-code/?data=${encodeURIComponent(qrContent)}&size=256x256`;
|
| 207 |
|
| 208 |
-
// Crear enlace de descarga
|
| 209 |
-
const downloadLink = document.createElement('a');
|
| 210 |
-
downloadLink.href = qrUrl;
|
| 211 |
-
downloadLink.download = `qr-mesa-${mesa.numero}.png`;
|
| 212 |
-
downloadLink.textContent = 'Descargar QR';
|
| 213 |
-
qrContainer.appendChild(downloadLink);
|
| 214 |
-
|
| 215 |
const qrImage = document.createElement('img');
|
| 216 |
qrImage.src = qrUrl;
|
| 217 |
qrImage.alt = 'QR Code';
|
| 218 |
qrContainer.appendChild(qrImage);
|
| 219 |
|
|
|
|
| 220 |
const volverButton = document.createElement('button');
|
| 221 |
volverButton.textContent = '← Volver';
|
| 222 |
volverButton.className = 'btn btn-outline-danger btn-block';
|
|
@@ -226,5 +229,3 @@ function generarTicket(index, total) {
|
|
| 226 |
|
| 227 |
// Inicializar la aplicación
|
| 228 |
render();
|
| 229 |
-
|
| 230 |
-
|
|
|
|
| 55 |
mesaDiv.style.cursor = 'pointer';
|
| 56 |
mesaDiv.onclick = () => gestionarMesa(index);
|
| 57 |
|
|
|
|
| 58 |
mesaDiv.querySelector('.delete-mesa').onclick = (event) => {
|
| 59 |
+
event.stopPropagation();
|
| 60 |
if (confirm(`¿Estás seguro de que quieres eliminar la Mesa ${mesa.numero}?`)) {
|
| 61 |
mesas.splice(index, 1);
|
| 62 |
render();
|
|
|
|
| 69 |
app.appendChild(mesasContainer);
|
| 70 |
}
|
| 71 |
|
|
|
|
| 72 |
function gestionarMesa(index) {
|
| 73 |
const mesa = mesas[index];
|
| 74 |
app.innerHTML = '';
|
|
|
|
| 114 |
`;
|
| 115 |
opcionesContainer.appendChild(opcionDiv);
|
| 116 |
|
|
|
|
| 117 |
const cantidadControls = opcionDiv.querySelector('.cantidad-controls');
|
| 118 |
const cantidadSpan = cantidadControls.querySelector('.cantidad');
|
| 119 |
cantidadControls.querySelector('.decrease').onclick = () => {
|
|
|
|
| 181 |
app.appendChild(finalizarButton);
|
| 182 |
}
|
| 183 |
|
| 184 |
+
// Generación del PDF con jsPDF
|
| 185 |
function generarTicket(index, total) {
|
| 186 |
const mesa = mesas[index];
|
|
|
|
| 187 |
|
| 188 |
+
// Crear un nuevo documento PDF
|
| 189 |
+
const doc = new jsPDF();
|
| 190 |
+
|
| 191 |
+
// Agregar contenido al PDF
|
| 192 |
+
doc.text(`Mesa ${mesa.numero}`, 10, 10);
|
| 193 |
+
let yOffset = 20;
|
| 194 |
mesa.pedidos.forEach(pedido => {
|
| 195 |
+
doc.text(`${pedido.item} (${pedido.opcion || ''}) x${pedido.cantidad} - €${(pedido.precio * pedido.cantidad).toFixed(2)}`, 10, yOffset);
|
| 196 |
+
yOffset += 10;
|
| 197 |
});
|
| 198 |
+
doc.text(`Total: €${total.toFixed(2)}`, 10, yOffset);
|
| 199 |
|
| 200 |
+
// Mostrar el total debajo del QR
|
| 201 |
+
const totalText = document.createElement('p');
|
| 202 |
+
totalText.textContent = `Total: €${total.toFixed(2)}`;
|
| 203 |
+
totalText.className = 'text-center';
|
| 204 |
+
app.appendChild(totalText);
|
| 205 |
|
| 206 |
+
// Generar el PDF y descargarlo
|
| 207 |
+
doc.save(`ticket-mesa-${mesa.numero}.pdf`);
|
| 208 |
|
| 209 |
+
// Mostrar el QR
|
| 210 |
const qrContainer = document.createElement('div');
|
| 211 |
qrContainer.className = 'text-center';
|
| 212 |
app.appendChild(qrContainer);
|
| 213 |
|
| 214 |
+
const qrContent = `Mesa ${mesa.numero}\n${mesa.pedidos.map(p => `${p.item} (${p.opcion || ''}) x${p.cantidad} - €${(p.precio * p.cantidad).toFixed(2)}`).join('\n')}\nTotal: €${total.toFixed(2)}`;
|
| 215 |
const qrUrl = `https://api.qrserver.com/v1/create-qr-code/?data=${encodeURIComponent(qrContent)}&size=256x256`;
|
| 216 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 217 |
const qrImage = document.createElement('img');
|
| 218 |
qrImage.src = qrUrl;
|
| 219 |
qrImage.alt = 'QR Code';
|
| 220 |
qrContainer.appendChild(qrImage);
|
| 221 |
|
| 222 |
+
// Botón "Volver"
|
| 223 |
const volverButton = document.createElement('button');
|
| 224 |
volverButton.textContent = '← Volver';
|
| 225 |
volverButton.className = 'btn btn-outline-danger btn-block';
|
|
|
|
| 229 |
|
| 230 |
// Inicializar la aplicación
|
| 231 |
render();
|
|
|
|
|
|