/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package GUI;
import Administracion.Mesero;
import Pedidos.Comanda;
import Pedidos.Platillo;
import Pedidos.SugerenciaDelChef;
import SistemaDeKioscos.ServicioDeAccesoABaseDeDatos;
import SistemaDeKioscos.ServicioDeImpresion;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.util.ArrayList;
import java.util.Formatter;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import java.util.Vector;
import javax.swing.JOptionPane;
/**
*
* @author Administrador
*/
public class ventanaDeCarta extends javax.swing.JFrame {
Mesero mesero = new Mesero();
Comanda orden = new Comanda();
int numeroDeMesa;
private VentanaMesero menuMesas;
ServicioDeAccesoABaseDeDatos baseDeDatos;
Platillo platilloSeleccionado;
private int idDeComanda = -1;
Vector<Integer> idRecomendacionesDelChef = new Vector();
int recomendacionesDeChefPorApuntar = 0;
/**
* Creates new form ventanaDeCarta
*/
public ventanaDeCarta() {
baseDeDatos = new ServicioDeAccesoABaseDeDatos();
initComponents();
cargarRecomendacionDelChef();
}
public ventanaDeCarta(int numeroDeMesa) {
this.numeroDeMesa = numeroDeMesa;
baseDeDatos = new ServicioDeAccesoABaseDeDatos();
initComponents();
cargarRecomendacionDelChef();
}
/**
* Constructor que permite reusar un servicio de base de datos ya en uso
*
* @param numeroDeMesa El número de mesa elegida
* @param MenuMesas la ventana que le precede
*/
public ventanaDeCarta(int numeroDeMesa, VentanaMesero MenuMesas) {
this.numeroDeMesa = numeroDeMesa;
this.menuMesas = MenuMesas;
baseDeDatos = menuMesas.baseDeDatos; //obtenemos el servicio de bd que se está usado
initComponents();
cargarRecomendacionDelChef();
//TODO borrar esta por una versión que permita cargar la comanda anterior abierta
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jPanel2 = new javax.swing.JPanel();
btnSinPagar = new javax.swing.JButton();
btnImprimirCocina = new javax.swing.JButton();
verOrden = new javax.swing.JButton();
btnpagar = new javax.swing.JButton();
jSplitPane1 = new javax.swing.JSplitPane();
listaCategorias = new javax.swing.JTabbedPane();
tabSopas = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
pnlSopas = new javax.swing.JPanel();
tabPastas = new javax.swing.JPanel();
jScrollPane9 = new javax.swing.JScrollPane();
pnlPastas = new javax.swing.JPanel();
tabEnsaladas = new javax.swing.JPanel();
jScrollPane2 = new javax.swing.JScrollPane();
pnlEnsaladas = new javax.swing.JPanel();
tabAves = new javax.swing.JPanel();
jScrollPane3 = new javax.swing.JScrollPane();
pnlAves = new javax.swing.JPanel();
tabCarnes = new javax.swing.JPanel();
jScrollPane8 = new javax.swing.JScrollPane();
pnlCarnes = new javax.swing.JPanel();
tabCortes = new javax.swing.JPanel();
jScrollPane10 = new javax.swing.JScrollPane();
pnlCortes = new javax.swing.JPanel();
tabBebidas = new javax.swing.JPanel();
jScrollPane6 = new javax.swing.JScrollPane();
pnlBebidas = new javax.swing.JPanel();
tabPostres = new javax.swing.JPanel();
jScrollPane5 = new javax.swing.JScrollPane();
pnlPostres = new javax.swing.JPanel();
tabCafé = new javax.swing.JPanel();
jScrollPane4 = new javax.swing.JScrollPane();
pnlCafé = new javax.swing.JPanel();
tabMariscos = new javax.swing.JPanel();
jScrollPane7 = new javax.swing.JScrollPane();
pnlMariscos = new javax.swing.JPanel();
pnlRecomendacionChef = new javax.swing.JPanel();
pnlEncabezadoRecomendaciones = new javax.swing.JPanel();
lblTitulo = new javax.swing.JLabel();
btnAgregarRecomendacion = new javax.swing.JButton();
btnQuitarRecomendacion = new javax.swing.JButton();
pnlPlatillosRecomendacion = new javax.swing.JPanel();
pnlNumeroDeRecomendaciones = new javax.swing.JPanel();
lblApuntadas = new javax.swing.JLabel();
lblNumeroApuntadas = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("Registro de Pedido");
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosed(java.awt.event.WindowEvent evt) {
formWindowClosed(evt);
}
});
btnSinPagar.setText("Dejar Orden Sin Pagar");
btnSinPagar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnSinPagarActionPerformed(evt);
}
});
jPanel2.add(btnSinPagar);
btnImprimirCocina.setText("Imprimir en Cocina");
btnImprimirCocina.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnImprimirCocinaActionPerformed(evt);
}
});
jPanel2.add(btnImprimirCocina);
verOrden.setText("VerOrden");
verOrden.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
verOrdenActionPerformed(evt);
}
});
jPanel2.add(verOrden);
btnpagar.setText("Mandar Orden a Pagar");
btnpagar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnpagarActionPerformed(evt);
}
});
jPanel2.add(btnpagar);
getContentPane().add(jPanel2, java.awt.BorderLayout.PAGE_START);
jSplitPane1.setDividerLocation(300);
jSplitPane1.setAutoscrolls(true);
jSplitPane1.setMaximumSize(new java.awt.Dimension(2147483, 2147483));
jSplitPane1.setPreferredSize(new java.awt.Dimension(641, 200));
listaCategorias.setTabPlacement(javax.swing.JTabbedPane.RIGHT);
listaCategorias.setAutoscrolls(true);
listaCategorias.setMinimumSize(new java.awt.Dimension(240, 28));
listaCategorias.setName(""); // NOI18N
tabSopas.addComponentListener(new java.awt.event.ComponentAdapter() {
public void componentShown(java.awt.event.ComponentEvent evt) {
tabSopasComponentShown(evt);
}
});
tabSopas.setLayout(new java.awt.BorderLayout());
pnlSopas.setLayout(new javax.swing.BoxLayout(pnlSopas, javax.swing.BoxLayout.Y_AXIS));
jScrollPane1.setViewportView(pnlSopas);
tabSopas.add(jScrollPane1, java.awt.BorderLayout.CENTER);
listaCategorias.addTab("Sopas", tabSopas);
tabPastas.addComponentListener(new java.awt.event.ComponentAdapter() {
public void componentShown(java.awt.event.ComponentEvent evt) {
tabPastasComponentShown(evt);
}
});
tabPastas.setLayout(new java.awt.BorderLayout());
pnlPastas.setLayout(new javax.swing.BoxLayout(pnlPastas, javax.swing.BoxLayout.Y_AXIS));
jScrollPane9.setViewportView(pnlPastas);
tabPastas.add(jScrollPane9, java.awt.BorderLayout.CENTER);
listaCategorias.addTab("Pastas", tabPastas);
tabEnsaladas.addComponentListener(new java.awt.event.ComponentAdapter() {
public void componentShown(java.awt.event.ComponentEvent evt) {
tabEnsaladasComponentShown(evt);
}
});
tabEnsaladas.setLayout(new java.awt.BorderLayout());
pnlEnsaladas.setLayout(new javax.swing.BoxLayout(pnlEnsaladas, javax.swing.BoxLayout.Y_AXIS));
jScrollPane2.setViewportView(pnlEnsaladas);
tabEnsaladas.add(jScrollPane2, java.awt.BorderLayout.CENTER);
listaCategorias.addTab("Ensaladas", tabEnsaladas);
tabAves.addComponentListener(new java.awt.event.ComponentAdapter() {
public void componentShown(java.awt.event.ComponentEvent evt) {
tabAvesComponentShown(evt);
}
});
tabAves.setLayout(new java.awt.BorderLayout());
pnlAves.setLayout(new javax.swing.BoxLayout(pnlAves, javax.swing.BoxLayout.Y_AXIS));
jScrollPane3.setViewportView(pnlAves);
tabAves.add(jScrollPane3, java.awt.BorderLayout.CENTER);
listaCategorias.addTab("Aves", tabAves);
tabCarnes.addComponentListener(new java.awt.event.ComponentAdapter() {
public void componentShown(java.awt.event.ComponentEvent evt) {
tabCarnesComponentShown(evt);
}
});
tabCarnes.setLayout(new java.awt.BorderLayout());
pnlCarnes.setLayout(new javax.swing.BoxLayout(pnlCarnes, javax.swing.BoxLayout.Y_AXIS));
jScrollPane8.setViewportView(pnlCarnes);
tabCarnes.add(jScrollPane8, java.awt.BorderLayout.CENTER);
listaCategorias.addTab("Carnes", tabCarnes);
tabCortes.setPreferredSize(new java.awt.Dimension(235, 424));
tabCortes.addComponentListener(new java.awt.event.ComponentAdapter() {
public void componentShown(java.awt.event.ComponentEvent evt) {
tabCortesComponentShown(evt);
}
});
tabCortes.setLayout(new java.awt.BorderLayout());
pnlCortes.setLayout(new javax.swing.BoxLayout(pnlCortes, javax.swing.BoxLayout.Y_AXIS));
jScrollPane10.setViewportView(pnlCortes);
tabCortes.add(jScrollPane10, java.awt.BorderLayout.CENTER);
listaCategorias.addTab("Cortes", tabCortes);
tabBebidas.addComponentListener(new java.awt.event.ComponentAdapter() {
public void componentShown(java.awt.event.ComponentEvent evt) {
tabBebidasComponentShown(evt);
}
});
tabBebidas.setLayout(new java.awt.BorderLayout());
pnlBebidas.setLayout(new javax.swing.BoxLayout(pnlBebidas, javax.swing.BoxLayout.Y_AXIS));
jScrollPane6.setViewportView(pnlBebidas);
tabBebidas.add(jScrollPane6, java.awt.BorderLayout.CENTER);
listaCategorias.addTab("Bebidas", tabBebidas);
tabPostres.addComponentListener(new java.awt.event.ComponentAdapter() {
public void componentShown(java.awt.event.ComponentEvent evt) {
tabPostresComponentShown(evt);
}
});
tabPostres.setLayout(new java.awt.BorderLayout());
pnlPostres.setLayout(new javax.swing.BoxLayout(pnlPostres, javax.swing.BoxLayout.Y_AXIS));
jScrollPane5.setViewportView(pnlPostres);
tabPostres.add(jScrollPane5, java.awt.BorderLayout.CENTER);
listaCategorias.addTab("Postres", tabPostres);
tabCafé.addComponentListener(new java.awt.event.ComponentAdapter() {
public void componentShown(java.awt.event.ComponentEvent evt) {
tabCaféComponentShown(evt);
}
});
tabCafé.setLayout(new java.awt.BorderLayout());
pnlCafé.setLayout(new javax.swing.BoxLayout(pnlCafé, javax.swing.BoxLayout.Y_AXIS));
jScrollPane4.setViewportView(pnlCafé);
tabCafé.add(jScrollPane4, java.awt.BorderLayout.CENTER);
listaCategorias.addTab("Café", tabCafé);
tabMariscos.addComponentListener(new java.awt.event.ComponentAdapter() {
public void componentShown(java.awt.event.ComponentEvent evt) {
tabMariscosComponentShown(evt);
}
});
tabMariscos.setLayout(new java.awt.BorderLayout());
pnlMariscos.setLayout(new javax.swing.BoxLayout(pnlMariscos, javax.swing.BoxLayout.Y_AXIS));
jScrollPane7.setViewportView(pnlMariscos);
tabMariscos.add(jScrollPane7, java.awt.BorderLayout.CENTER);
listaCategorias.addTab("Mariscos", tabMariscos);
jSplitPane1.setLeftComponent(listaCategorias);
pnlRecomendacionChef.setBorder(javax.swing.BorderFactory.createEtchedBorder());
pnlRecomendacionChef.setPreferredSize(new java.awt.Dimension(235, 424));
pnlRecomendacionChef.addComponentListener(new java.awt.event.ComponentAdapter() {
public void componentShown(java.awt.event.ComponentEvent evt) {
pnlRecomendacionChefComponentShown(evt);
}
});
pnlRecomendacionChef.setLayout(new java.awt.BorderLayout());
lblTitulo.setFont(new java.awt.Font("Tahoma", 3, 12)); // NOI18N
lblTitulo.setText("Recomendación del chef");
btnAgregarRecomendacion.setText("+");
btnAgregarRecomendacion.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnAgregarRecomendacionActionPerformed(evt);
}
});
btnQuitarRecomendacion.setText("-");
btnQuitarRecomendacion.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnQuitarRecomendacionActionPerformed(evt);
}
});
javax.swing.GroupLayout pnlEncabezadoRecomendacionesLayout = new javax.swing.GroupLayout(pnlEncabezadoRecomendaciones);
pnlEncabezadoRecomendaciones.setLayout(pnlEncabezadoRecomendacionesLayout);
pnlEncabezadoRecomendacionesLayout.setHorizontalGroup(
pnlEncabezadoRecomendacionesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlEncabezadoRecomendacionesLayout.createSequentialGroup()
.addGroup(pnlEncabezadoRecomendacionesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlEncabezadoRecomendacionesLayout.createSequentialGroup()
.addComponent(btnQuitarRecomendacion, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(163, 163, 163))
.addGroup(pnlEncabezadoRecomendacionesLayout.createSequentialGroup()
.addComponent(btnAgregarRecomendacion)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(lblTitulo, javax.swing.GroupLayout.PREFERRED_SIZE, 159, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGap(0, 0, Short.MAX_VALUE))
);
pnlEncabezadoRecomendacionesLayout.setVerticalGroup(
pnlEncabezadoRecomendacionesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlEncabezadoRecomendacionesLayout.createSequentialGroup()
.addContainerGap()
.addGroup(pnlEncabezadoRecomendacionesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblTitulo)
.addComponent(btnAgregarRecomendacion))
.addGap(1, 1, 1)
.addComponent(btnQuitarRecomendacion)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
pnlRecomendacionChef.add(pnlEncabezadoRecomendaciones, java.awt.BorderLayout.PAGE_START);
pnlRecomendacionChef.add(pnlPlatillosRecomendacion, java.awt.BorderLayout.CENTER);
lblApuntadas.setText("Apuntadas:");
lblNumeroApuntadas.setText("0");
javax.swing.GroupLayout pnlNumeroDeRecomendacionesLayout = new javax.swing.GroupLayout(pnlNumeroDeRecomendaciones);
pnlNumeroDeRecomendaciones.setLayout(pnlNumeroDeRecomendacionesLayout);
pnlNumeroDeRecomendacionesLayout.setHorizontalGroup(
pnlNumeroDeRecomendacionesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlNumeroDeRecomendacionesLayout.createSequentialGroup()
.addContainerGap()
.addComponent(lblApuntadas)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 358, Short.MAX_VALUE)
.addComponent(lblNumeroApuntadas, javax.swing.GroupLayout.PREFERRED_SIZE, 18, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
pnlNumeroDeRecomendacionesLayout.setVerticalGroup(
pnlNumeroDeRecomendacionesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlNumeroDeRecomendacionesLayout.createSequentialGroup()
.addContainerGap()
.addGroup(pnlNumeroDeRecomendacionesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblApuntadas)
.addComponent(lblNumeroApuntadas))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
pnlRecomendacionChef.add(pnlNumeroDeRecomendaciones, java.awt.BorderLayout.PAGE_END);
jSplitPane1.setRightComponent(pnlRecomendacionChef);
getContentPane().add(jSplitPane1, java.awt.BorderLayout.CENTER);
pack();
}// </editor-fold>//GEN-END:initComponents
private void btnImprimirCocinaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnImprimirCocinaActionPerformed
this.dispose();
menuMesas.registrarMovimiento();
int opcion = JOptionPane.showConfirmDialog(this, "¿Desea imprimir en cocina?");
if (opcion == JOptionPane.YES_OPTION) {
String textoComanda = "";
ArrayList<Platillo> platilosDeOrden = orden.getPlatillos();
for (int i = 0; i < platilosDeOrden.size(); i++) {
Platillo p = platilosDeOrden.get(i);
textoComanda += p.getNombrePlatillo() + "\n";//TODO tal vez necesite adaptarse para casos en que el nombre de platillo tenga más de 30 caracteres
}
textoComanda += orden.getOvservaciones();
if (textoComanda != "") {
DialogoImpresionComanda impresionComanda = new DialogoImpresionComanda(this, false);
impresionComanda.ponerTexto(textoComanda);
impresionComanda.setVisible(true);
PrinterJob job = PrinterJob.getPrinterJob();
// PageFormat pageFormat = new PageFormat();
// Paper papel = new Paper();
// papel.setSize(0.0525, 0.1);
// pageFormat.setPaper(papel);
// job.setPrintable(impresionComanda, pageFormat);
// DocFlavor flavor = DocFlavor.BYTE_ARRAY.AUTOSENSE;
// DocAttributeSet attr_set
// = new HashDocAttributeSet();
// attr_set.add(MediaSize.ISO.A8);
// Doc doc = new SimpleDoc(bytes, flavor, attr_set);
job.setPrintable(impresionComanda);
boolean doPrint = job.printDialog();
if (doPrint) {
try {
// job.setJobName("Ciao bella");
job.print();
} catch (PrinterException e) {
// The job did not successfully
// complete
}
}
impresionComanda.setVisible(false);
System.out.println("Ya debería estar imprimiéndose");
ServicioDeImpresion.imprimirCocina(textoComanda);//TODO tal vez necesite adaptarse para casos en que el nombre de platillo tenga más de 30 caracteres
//TODO agregar recomendaciones del chef en nueva comanda con platillos
//en vez de idRecomendacionesDelChef.add(baseDeDatos.agregarNuevaRecomendacionDelChefAComanda(idDeComanda, mesero, numeroDeMesa));
//idDeComanda = baseDeDatos.nuevaComandaConPlatillos(orden, mesero, numeroDeMesa);
int[] ids = baseDeDatos.nuevaComandaConPlatillos(orden, mesero, numeroDeMesa, recomendacionesDeChefPorApuntar);
idDeComanda = ids[0];
idRecomendacionesDelChef.add(ids[1]);
recomendacionesDeChefPorApuntar = 0;
lblNumeroApuntadas.setText(idRecomendacionesDelChef.size() + recomendacionesDeChefPorApuntar + "");
System.out.println("");
//al momento de imprimir guardar en BD
//TODO guardar platillos en la base de datos
for (int i = 0; i < platilosDeOrden.size(); i++) {
Platillo p = platilosDeOrden.get(i);
baseDeDatos.agregarPlatilloAComanda(p, orden, idDeComanda);
}
}
//TODO preguntar si imprime solo los alimentos que no había mandado o todos de nuevo
}
}//GEN-LAST:event_btnImprimirCocinaActionPerformed
private void verOrdenActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_verOrdenActionPerformed
ventanaVerComanda verComanda = new ventanaVerComanda();
verComanda.setOrden(orden);
verComanda.setVisible(true);
}//GEN-LAST:event_verOrdenActionPerformed
private void btnpagarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnpagarActionPerformed
int opcion = JOptionPane.showConfirmDialog(this, "Al imprimir se cerrará la cuenta, si desea agregar platillos posteriormente haga una cuenta nueva");//avisar que al imprimir se cerrará la cuenta
if (opcion == JOptionPane.YES_OPTION) {//si han elegido que sí
//TODO que al momento de cobrar también le agregue el precio de las recomendaciones del día
imprimirEnCaja();//mandar a imprimir a caja
//des-reservar mesa
baseDeDatos.desReservarMesa(mesero, numeroDeMesa);
//marcar comanda como cerrada
baseDeDatos.cerrarComanda(idDeComanda);
//TODO volver al menú inicio
}
}//GEN-LAST:event_btnpagarActionPerformed
private void pnlRecomendacionChefComponentShown(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_pnlRecomendacionChefComponentShown
}//GEN-LAST:event_pnlRecomendacionChefComponentShown
private void btnAgregarRecomendacionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAgregarRecomendacionActionPerformed
agregarRecomendacionAComanda();
}//GEN-LAST:event_btnAgregarRecomendacionActionPerformed
private void btnQuitarRecomendacionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnQuitarRecomendacionActionPerformed
quitarRecomendacionAComanda();
}//GEN-LAST:event_btnQuitarRecomendacionActionPerformed
private void tabCaféComponentShown(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_tabCaféComponentShown
String catego = "cafes";
Hashtable<String, Double[]> datosplatillos = obtenerPlatillos(catego);
}//GEN-LAST:event_tabCaféComponentShown
private void tabPostresComponentShown(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_tabPostresComponentShown
String catego = "postres";
Hashtable<String, Double[]> datosplatillos = obtenerPlatillos(catego);
}//GEN-LAST:event_tabPostresComponentShown
private void tabBebidasComponentShown(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_tabBebidasComponentShown
String catego = "bebidas";
Hashtable<String, Double[]> datosplatillos = obtenerPlatillos(catego);
}//GEN-LAST:event_tabBebidasComponentShown
private void tabMariscosComponentShown(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_tabMariscosComponentShown
String catego = "mariscos";
Hashtable<String, Double[]> datosplatillos = obtenerPlatillos(catego);
}//GEN-LAST:event_tabMariscosComponentShown
private void tabCortesComponentShown(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_tabCortesComponentShown
String catego = "cortes";
Hashtable<String, Double[]> datosplatillos = obtenerPlatillos(catego);
}//GEN-LAST:event_tabCortesComponentShown
private void tabCarnesComponentShown(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_tabCarnesComponentShown
String catego = "carnes";
Hashtable<String, Double[]> datosplatillos = obtenerPlatillos(catego);
}//GEN-LAST:event_tabCarnesComponentShown
private void tabAvesComponentShown(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_tabAvesComponentShown
String catego = "aves";
Hashtable<String, Double[]> datosplatillos = obtenerPlatillos(catego);
}//GEN-LAST:event_tabAvesComponentShown
private void tabEnsaladasComponentShown(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_tabEnsaladasComponentShown
String catego = "ensaladas";
Hashtable<String, Double[]> datosplatillos = obtenerPlatillos(catego);
}//GEN-LAST:event_tabEnsaladasComponentShown
private void tabPastasComponentShown(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_tabPastasComponentShown
String catego = "pastas";
Hashtable<String, Double[]> datosplatillos = obtenerPlatillos(catego);
}//GEN-LAST:event_tabPastasComponentShown
private void btnSinPagarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSinPagarActionPerformed
if (JOptionPane.showConfirmDialog(this, "¿Realmente desea dejar la cuenta sin pagar?") == JOptionPane.YES_OPTION) {
String observaciones = JOptionPane.showInputDialog("Escriba por que se dejará sin pagar");
orden.setOvservaciones(observaciones);
}
//TODO dejar sin pagar en la BD
}//GEN-LAST:event_btnSinPagarActionPerformed
private void formWindowClosed(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosed
menuMesas.setVisible(true);
}//GEN-LAST:event_formWindowClosed
private void tabSopasComponentShown(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_tabSopasComponentShown
String catego = "sopas";
Hashtable<String, Double[]> datosplatillos = obtenerPlatillos(catego);
}//GEN-LAST:event_tabSopasComponentShown
public Mesero getMesero() {
return mesero;
}
public void setMesero(Mesero mesero) {
this.mesero = mesero;
}
public int getNumeroDeMesa() {
return numeroDeMesa;
}
public void setNumeroDeMesa(int numeroDeMesa) {
this.numeroDeMesa = numeroDeMesa;
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (Exception ex) {
java.util.logging.Logger.getLogger(ventanaDeCarta.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new ventanaDeCarta().setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton btnAgregarRecomendacion;
private javax.swing.JButton btnImprimirCocina;
private javax.swing.JButton btnQuitarRecomendacion;
private javax.swing.JButton btnSinPagar;
private javax.swing.JButton btnpagar;
private javax.swing.JPanel jPanel2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane10;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JScrollPane jScrollPane3;
private javax.swing.JScrollPane jScrollPane4;
private javax.swing.JScrollPane jScrollPane5;
private javax.swing.JScrollPane jScrollPane6;
private javax.swing.JScrollPane jScrollPane7;
private javax.swing.JScrollPane jScrollPane8;
private javax.swing.JScrollPane jScrollPane9;
private javax.swing.JSplitPane jSplitPane1;
private javax.swing.JLabel lblApuntadas;
private javax.swing.JLabel lblNumeroApuntadas;
private javax.swing.JLabel lblTitulo;
private javax.swing.JTabbedPane listaCategorias;
private javax.swing.JPanel pnlAves;
private javax.swing.JPanel pnlBebidas;
private javax.swing.JPanel pnlCafé;
private javax.swing.JPanel pnlCarnes;
private javax.swing.JPanel pnlCortes;
private javax.swing.JPanel pnlEncabezadoRecomendaciones;
private javax.swing.JPanel pnlEnsaladas;
private javax.swing.JPanel pnlMariscos;
private javax.swing.JPanel pnlNumeroDeRecomendaciones;
private javax.swing.JPanel pnlPastas;
private javax.swing.JPanel pnlPlatillosRecomendacion;
private javax.swing.JPanel pnlPostres;
private javax.swing.JPanel pnlRecomendacionChef;
private javax.swing.JPanel pnlSopas;
private javax.swing.JPanel tabAves;
private javax.swing.JPanel tabBebidas;
private javax.swing.JPanel tabCafé;
private javax.swing.JPanel tabCarnes;
private javax.swing.JPanel tabCortes;
private javax.swing.JPanel tabEnsaladas;
private javax.swing.JPanel tabMariscos;
private javax.swing.JPanel tabPastas;
private javax.swing.JPanel tabPostres;
private javax.swing.JPanel tabSopas;
private javax.swing.JButton verOrden;
// End of variables declaration//GEN-END:variables
/**
* Permite obtener los platillos por categoría
*/
private Hashtable<String, Double[]> obtenerPlatillos(String catego) {
System.out.println("mostrando " + catego);
Hashtable<String, Double[]> datosplatillos = new Hashtable<String, Double[]>();
catego = catego.toLowerCase();
//TODO para practicidad las imágenes de los patillos si las hay guardarlas con el mismo nombre del platillo y con extensión jpeg
baseDeDatos.obtenerPlatillosPorCategoría(catego, datosplatillos);
//TODO renderizar imágenes de los platillos en el panel
if (catego == "sopas") {
pnlSopas.removeAll();
} else if (catego == "pastas") {
//TODO poner bebidas por secciones
pnlPastas.removeAll();
} else if (catego == "ensaladas") {
pnlEnsaladas.removeAll();
} else if (catego == "aves") {
pnlAves.removeAll();
} else if (catego == "carnes") {
pnlCarnes.removeAll();
} else if (catego == "cortes") {
pnlCortes.removeAll();
//} else if (catego == "guarniciones para carne") {
// pnlGuarniciones.removeAll();
//} else if (catego == "salsas y especias") {
// pnlSalsas.removeAll();
} else {
System.err.println("oops");
}
//JDK 7
// switch (catego) {
// case "sopas":
// pnlSopas.removeAll();
// break;
// //TODO poner bebidas por secciones
// // case ""
// case "pastas":
// pnlPastas.removeAll();
// break;
// case "ensaladas":
// pnlEnsaladas.removeAll();
// break;
// case "aves":
// pnlAves.removeAll();
// break;
// case "carnes":
// pnlCarnes.removeAll();
// break;
// case "cortes":
// pnlCortes.removeAll();
// break;
// case "guarniciones para carne":
// pnlGuarniciones.removeAll();
// break;
// case "salsas y especias":
// pnlSalsas.removeAll();
// break;
// default:
// System.err.println("oops");
// break;
// }
for (Map.Entry<String, Double[]> platillito : datosplatillos.entrySet()) {
String nombrecito = platillito.getKey();
System.out.println(nombrecito);
Double[] precios = platillito.getValue();
Formatter formatoNumero = new Formatter();
//System.out.println("$" + precios);
System.out.println(precios.length);
//parte común
PnlPlatillo panelPlatillo = new PnlPlatillo();
panelPlatillo.setNombrePlatillo(nombrecito);
//System.out.println((""));
System.out.println(String.format("Precio:$\t%.2f", precios[1]));
panelPlatillo.setPrecio(precios[1]);
System.out.println("IVA" + precios[2]);
panelPlatillo.setIva(precios[2]);
panelPlatillo.setCategoria(catego);
// jScrollPane1.add(panelPlatillo);
panelPlatillo.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
PnlPlatillo panel = (PnlPlatillo) e.getComponent();
platilloSeleccionado = new Platillo();
platilloSeleccionado.setNombrePlatillo(panel.getNombrePlatillo());
platilloSeleccionado.setPrecio(panel.getPrecio());
platilloSeleccionado.setIva(panel.getIva());
platilloSeleccionado.setCategoria(panel.getCategoria());
System.out.println("SEleccionado:" + platilloSeleccionado.getNombrePlatillo());
int opcion = JOptionPane.showConfirmDialog(null, "¿Desea Agregar " + platilloSeleccionado.getNombrePlatillo() + "?");
switch (opcion) {
case JOptionPane.YES_OPTION:
System.out.println("Usted ha elegido sí");
String canti = JOptionPane.showInputDialog("¿Cuantos " + panel.getNombrePlatillo() + " desea agregar?");
if (canti != "") {
int cantidadDePlatillos = Integer.parseInt(canti);
platilloSeleccionado.setCantidad(cantidadDePlatillos);
}//en cualquier error dejamos solamente uno
//Agregar platillos a orden
orden.addPlatillo(platilloSeleccionado);
orden.mostrarPlatillosEnPantalla();
//TODO procesamiento para agregar aderezos a alguna categorias de comida
if (platilloSeleccionado.getCategoria() == "carnes" || platilloSeleccionado.getCategoria() == "cortes") {
//TODO menu de aderezos y salsas para carnes
DialogoAderezos aderezos = new DialogoAderezos(baseDeDatos, platilloSeleccionado.getCategoria());//muestra odos los aderezos de la categoría
orden.addPlatillo(aderezos.platilloSeleccionado);//Agregamos los aderezos y guarniciones a la orden
}
break;
default:
System.out.println("Usted ha elegido no");
break;
};
//TODO para el caso de carnes y cortes preguntar por guarnición y/o salsa
//TODO para el caso de ensaladas preguntar por aderezos
}
});
if (catego == "sopas") {
pnlSopas.add(panelPlatillo);
//TODO verificar que cargue todas las secciones
} else if (catego == "pastas") {
pnlPastas.add(panelPlatillo);
} else if (catego == "ensaladas") {
pnlEnsaladas.add(panelPlatillo);
} else if (catego == "aves") {
pnlAves.add(panelPlatillo);
} else if (catego == "carnes") {
pnlCarnes.add(panelPlatillo);
} else if (catego == "cortes") {
pnlCortes.add(panelPlatillo);
//jScrollPane1.setViewportView(pnlCortes);
//jScrollPane1.add(panelPlatillo);
// } else if (catego == "guarniciones para carne") {
// pnlGuarniciones.add(panelPlatillo);
// } else if (catego == "salsas y especias") {
// pnlSalsas.add(panelPlatillo);
} else {
System.err.println("oops");
}
}
return datosplatillos;
}
private void imprimirEnCaja() {
//TODO hacer que dialogo imprimir sea una clase aparte
//TODO hacer que dialogo imprimir implemente Printable
String textoComanda = "";
ArrayList<Platillo> platilosDeOrden = orden.getPlatillos();
double subtotal = 0;
double iva = 0;
for (int i = 0; i < platilosDeOrden.size(); i++) {
Platillo p = platilosDeOrden.get(i);
textoComanda += String.format("%s - $.2f - $.2f\n", p.getNombrePlatillo(), p.getPrecio(), p.getIva());//TODO tal vez necesite adaptarse para casos en que el nombre de platillo tenga más de 30 caracteres
subtotal += p.getPrecio();
iva += p.getIva();
}
//TODO que al momento de cobrar también le agregue el precio de las recomendaciones del día
textoComanda += String.format("Subtotal:$\t%.2f\n", subtotal);
textoComanda += String.format("IVA:$\t%.2f\n", iva);
textoComanda += String.format("TOTAL:$\t%.2f\n", (iva + subtotal));// agregarle el IVA
if (textoComanda != "") {
ServicioDeImpresion.imprimirCaja(textoComanda);
}
}
/**
* Permite obtener los platillos por un id de recomendación del día
*/
private Hashtable<String, Double[]> obtenerPlatillosDeRecomendacionDelChef(int idRecomendacion) {
System.out.println("id de recomendación del chef del día: " + idRecomendacion);
Hashtable<String, Double[]> datosplatillos = new Hashtable<String, Double[]>();
baseDeDatos.obtenerPlatillosDeRecomendacionDeChef(idRecomendacion, datosplatillos);
//centinela para imprimir
Iterator it = datosplatillos.entrySet().iterator();
System.out.println("mostrando platillos obtenidos de BD:");
// while (it.hasNext()) {
// Map.Entry pairs = (Map.Entry) it.next();
// System.out.println(pairs.getKey() + " = " + pairs.getValue());
// it.remove(); // avoids a ConcurrentModificationException
// }
return datosplatillos;
}
private void agregarRecomendacionAComanda() {
recomendacionesDeChefPorApuntar += 1;
SugerenciaDelChef sugerencia = new SugerenciaDelChef(baseDeDatos.obtenerPrecioDeRecomendacionDelChefDelDia());//TODO obtener el precio de la sugerencia del chef
//TODO
orden.addPlatillo(sugerencia);
lblNumeroApuntadas.setText(idRecomendacionesDelChef.size() - 1 + recomendacionesDeChefPorApuntar + "");
}
private void quitarRecomendacionAComanda() {
int id = idRecomendacionesDelChef.get(idRecomendacionesDelChef.size() - 1);
if (baseDeDatos.QuitarRecomendacionDeComanda(id)) {
idRecomendacionesDelChef.remove(id);
}
lblNumeroApuntadas.setText(idRecomendacionesDelChef.size() + recomendacionesDeChefPorApuntar + "");
}
public Comanda getOrden() {
return orden;
}
public void setOrden(Comanda orden) {
this.orden = orden;
}
public ServicioDeAccesoABaseDeDatos getBaseDeDatos() {
return baseDeDatos;
}
public void setBaseDeDatos(ServicioDeAccesoABaseDeDatos baseDeDatos) {
this.baseDeDatos = baseDeDatos;
}
public Platillo getPlatilloSeleccionado() {
return platilloSeleccionado;
}
public void setPlatilloSeleccionado(Platillo platilloSeleccionado) {
this.platilloSeleccionado = platilloSeleccionado;
}
private void cargarRecomendacionDelChef() {
// carga desde BD la recomendación del chef del día
System.out.println("Obteniendo recomendación de hoy...");
int idRecomendacion = baseDeDatos.obtenerIdRecomendacionDeChef();
idRecomendacionesDelChef.add(idRecomendacion);
//TODO cargar platillos de la recomendación del día
Hashtable<String, Double[]> datosplatillos = obtenerPlatillosDeRecomendacionDelChef(idRecomendacion);
// Iterator it = datosplatillos.entrySet().iterator();
// while (it.hasNext()) {
// Map.Entry pairs = (Map.Entry) it.next();
// System.out.println(pairs.getKey() + " = " + pairs.getValue());
// it.remove(); // avoids a ConcurrentModificationException
// }
for (Map.Entry<String, Double[]> platillito : datosplatillos.entrySet()) {
String nombrecito = platillito.getKey();
System.out.println(nombrecito);
Double[] precios = platillito.getValue();
Formatter formatoNumero = new Formatter();
//System.out.println("$" + precios);
System.out.println(precios.length);
//parte común
PnlPlatillo panelPlatillo = new PnlPlatillo();
panelPlatillo.setNombrePlatillo(nombrecito);
//System.out.println((""));
System.out.println(String.format("Precio:$\t%.2f", precios[1]));
panelPlatillo.setPrecio(precios[1]);
System.out.println("IVA" + precios[2]);
panelPlatillo.setIva(precios[2]);
//panelPlatillo.setCategoria(catego);//TODO obtener categoría de los platillos para la recomendación del chef
// jScrollPane1.add(panelPlatillo);
panelPlatillo.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
PnlPlatillo panel = (PnlPlatillo) e.getComponent();
platilloSeleccionado = new Platillo();
platilloSeleccionado.setNombrePlatillo(panel.getNombrePlatillo());
platilloSeleccionado.setPrecio(panel.getPrecio());
platilloSeleccionado.setIva(panel.getIva());
platilloSeleccionado.setCategoria(panel.getCategoria());
System.out.println("SEleccionado:" + platilloSeleccionado.getNombrePlatillo());
int opcion = JOptionPane.showConfirmDialog(null, "¿Desea Agregar un " + platilloSeleccionado.getNombrePlatillo() + "?");
switch (opcion) {
case JOptionPane.YES_OPTION:
System.out.println("Usted ha elegido sí");
//Agregar platillos a orden
orden.addPlatillo(platilloSeleccionado);
orden.mostrarPlatillosEnPantalla();
break;
default:
System.out.println("Usted ha elegido no");
break;
};
//TODO para el caso de carnes y cortes preguntar por guarnición y/o salsa
//TODO para el caso de ensaladas preguntar por aderezos
}
});
pnlPlatillosRecomendacion.add(panelPlatillo);
}
//TODO cargar el numero de recomendaciones del día ya incluidos en la comanda
System.out.println("==============================");
}
}