<repo_name>nicoomarquez/La-maravilla<file_sep>/Vista/JListEjemplo.java
package Vista;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.util.Vector;

import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.ListSelectionModel;
import javax.swing.border.EmptyBorder;

import Controlador.SARA;
import Negocio.Arreglo;

import javax.swing.JButton;
import javax.swing.JScrollBar;
import javax.swing.ScrollPaneConstants;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class JListEjemplo extends JFrame {

	private JPanel contentPane;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					JListEjemplo frame = new JListEjemplo();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	private Vector<Arreglo>arreglos=SARA.getInstancia().getArreglos();
	
	private Vector<Arreglo>arreglosSeleccionados=new Vector<Arreglo>();
	
	private DefaultListModel<String> modelList,modelList_1;
	
	
	public JListEjemplo() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(430,300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		Vector<Arreglo> arreglos=SARA.getInstancia().getArreglos();
		JList<String> list = new JList<String>();
		 modelList = new DefaultListModel<String>();
		//agrego los arreglos a la lista
		for(int i = 0; i < arreglos.size(); i++) {
			modelList.addElement(arreglos.elementAt(i).getNombre());
		}
		list.setModel(modelList);
		list.setBounds(10, 26, 129, 195);
		contentPane.add(list);
		
		JList<String> list_1 = new JList<String>();
		list_1.setBounds(263, 26, 129, 195);
		modelList_1=new DefaultListModel<String>();
		list_1.setModel(modelList_1);
		contentPane.add(list_1);
		
		JButton btnAgregar = new JButton("Agregar");
		btnAgregar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				int pos=list.getSelectedIndex();
				if( pos != -1){ //Si se selecciono algo
					Arreglo r=arreglos.get(pos);
					if(!arreglosSeleccionados.contains(r)){
						arreglosSeleccionados.addElement(r);
						modelList_1.addElement(list.getSelectedValue());
					}
				}
			}
		});
		btnAgregar.setBounds(164, 82, 89, 23);
		contentPane.add(btnAgregar);
		
		JButton btnQuitar = new JButton("Quitar");
		btnQuitar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				int pos=list_1.getSelectedIndex();
				if(pos != -1){
					arreglosSeleccionados.remove(pos);
					modelList_1.remove(pos);
				}
			}
		});
		btnQuitar.setBounds(164, 145, 89, 23);
		contentPane.add(btnQuitar);
		
		JScrollPane scrollPane = new JScrollPane(list);
		scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
		scrollPane.setBounds(10, 21, 129, 200);
		contentPane.add(scrollPane);
		
		JScrollPane scrollPane_1 = new JScrollPane(list_1);
		scrollPane_1.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
		scrollPane_1.setBounds(263, 26, 129, 195);
		contentPane.add(scrollPane_1);
		
		JButton btnTerminar = new JButton("Terminar");
		btnTerminar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				InsertarCalzadoBoleta.setArreglos(arreglosSeleccionados);
				dispose();
			}
		});
		btnTerminar.setBounds(161, 227, 89, 23);
		contentPane.add(btnTerminar);
		
		
	}
}
<file_sep>/Negocio/Calzado.java
package Negocio;

import java.util.Vector;

import Persistencia.AdmPersistenciaCalzado;
import View.Calzado_View;

public class Calzado {
	private String codigoCalzado;
	private Vector<Arreglo> arreglos;
	private float costoCalzado;
	private Empleado empleado;
	private char estado;
	
	private int codigoZapatilla,codigoBota, codigoZH, codigoZM;
	private static int autoZapatilla,autoBota,autoZH,autoZM;
	
	public Calzado(){
		arreglos = new Vector<Arreglo>();
		empleado = new Empleado();		
	}
	
	public Calzado(String codigoCalzado, float costoCalzado, Empleado empleado, Vector<Arreglo> arreglos) {
		super();
		this.codigoCalzado = codigoCalzado;
		this.costoCalzado = costoCalzado;
		this.empleado = empleado;
		this.arreglos = arreglos;
		this.estado = 'P';//estado pendiente
		/*Se inserta en la BD*/
		AdmPersistenciaCalzado.getInstancia().insert(this);
	}

	public String getCodigoCalzado() {
		return codigoCalzado;
	}

	public void setCodigoCalzado(String codigoCalzado) {
		this.codigoCalzado = codigoCalzado;
	}

	public Vector<Arreglo> getArreglos() {
		return arreglos;
	}

	public void setArreglos(Vector<Arreglo> arreglos) {
		this.arreglos = arreglos;
	}

	public float getCostoCalzado() {
		return costoCalzado;
	}

	public void setCostoCalzado(float costoCalzado) {
		this.costoCalzado = costoCalzado;
	}

	public Empleado getEmpleado() {
		return empleado;
	}

	public void setEmpleado(Empleado empleado) {
		this.empleado = empleado;
	}
	
	public char getEstado(){
		return estado;
	}
	
	public void setEstado(char e){
		this.estado=e;
	}

	public void update(){
		AdmPersistenciaCalzado.getInstancia().update(this);
	}
	
	public void delete(){
		AdmPersistenciaCalzado.getInstancia().delete(this);
	}

	public Calzado_View toView() {
		// TODO Auto-generated method stub
		return new Calzado_View(codigoCalzado,"",String.valueOf(costoCalzado),estado,empleado.getIdEmpleado(),arreglos);
	}
	
	public static void iniciarAutoNumerico(int nro, String cat){
		switch(cat){
			case "B": autoBota=nro;
				break;
			case "Z": autoZapatilla=nro;
				break;
			case "ZH" : autoZH=nro;
				break;
			case "ZM": autoZM=nro;
				break;
			default: System.out.println("Categoria incorrecta");
		}
	}
	
	/**Dado la categoria te devuelve el supuesto id que va a tener, no modifica el autonumerico*/
	public String getCodigoSinIncrementar(String cat){
		String res="";
		switch(cat){
			case "B": 
				if(autoBota==0) res=cat+(autoBota+1);
				else res=cat+autoBota;
				
				break;
			case "Z": if(autoZapatilla==0)res=cat+(autoZapatilla+1);
					  else res=cat+autoZapatilla;
				break;
			case "ZH" : 
					  if(autoZH==0) res=cat+(autoZH+1);
					  else res=cat+autoZH;
				break;
			case "ZM": 
					  if(autoZM==0) res=cat+(autoZH+1);
					  else res=cat+autoZM;
				break;
			default: System.out.println("Categoria incorrecta");
		}
		return res;
	}
	
	public String getCodigo(String cat){
		String res="";
		switch(cat){
			case "B": res=cat+(++autoBota);
				break;
			case "Z": res=cat+(++autoZapatilla);
				break;
			case "ZH" : res=cat+(++autoZH);
				break;
			case "ZM": res=cat+(++autoZM);
				break;
			default: System.out.println("Categoria incorrecta");
		}
		return res;
	}
}
<file_sep>/Negocio/Arreglo.java
package Negocio;

import Persistencia.AdmPersistenciaArreglo;

public class Arreglo {
	private int idArreglo;
	private static int autonumerico;
	private String nombre;
	private String descripcion;
	private float costoArreglo;
	private boolean estado;
	
	public Arreglo(){

	}

	public Arreglo(String nombre, String descripcion, float costoArreglo) {
		super();
		idArreglo = getProxNumArreglo();
		this.nombre = nombre;
		this.descripcion = descripcion;
		this.costoArreglo = costoArreglo;
		this.estado=true;
		
		/*Persistencia Arreglo insert*/
		AdmPersistenciaArreglo.getInstancia().insert(this);
	}

	private static int getProxNumArreglo() {
		return ++autonumerico;
	}

	public static void iniciarAutoNumerico(int valorInicial){
		autonumerico=valorInicial;
	}
	
	public int getIdArreglo(){
		return idArreglo;
	}
	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getDescripcion() {
		return descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	public float getCostoArreglo() {
		return costoArreglo;
	}

	public void setCostoArreglo(float costoArreglo) {
		this.costoArreglo = costoArreglo;
	}

	public void setEstado(boolean estado) {
		// TODO Auto-generated method stub
		this.estado=estado;
	}
	
	public boolean getEstado(){
		return this.estado;
	}
	
	public void setIdArreglo(int idArr) {
		// TODO Auto-generated method stub
		idArreglo=idArr;
	}
	
	public void update(){
		AdmPersistenciaArreglo.getInstancia().update(this);
	}
	
	public void delete(){
		AdmPersistenciaArreglo.getInstancia().delete(this);
	}

	
}
<file_sep>/datos.sql

/*************************************
*	Insercion de registros en tablas *
**************************************/

insert into SARA.dbo.Arreglo (nombre,descripcion,costoArreglo) values 
('<NAME>','',100.0),
('1/2 Suela','',50),
('1/2 Goma','',50),
('Cambio de Taco','',200),
('Tapitas Suela','',100),
('Taco de goma','',80),
('Plantilla','',200),
('Limpieza','',100),
('Tapitas plastico','',50),
('Soportes','',100),
('Cambrillones','',200),
('Cierres','',90),
('Pegado Completo','',200),
('Puntera','',200),
('Horna','',200),
('Teņidas','',90),
('Parches','',100),
('Taloneras','',100);


insert into Sara.dbo.Empleado values
('Nico','Marquez','1','1','domicilio 1','localidad 1','47552265',1),
('Nico','Ragusa','2','2','domicilio 2','localidad 2','47998825',1),
('Santi','Mamani','3','3','domicilio 3','localidad 1','47976521',1),
('Conra','Navarro','4','4','domicilio 4','localidad 2','47551145',1);


insert into Sara.dbo.Cliente values
('Ester','Maldonado','doņaester@','111','calle 1','Localidad 1','1540',1),
('<NAME>','Thompson','jThompson@','222','calle 5','Localidad 10','1607',1),
('Gabriel','Nieva','g.nieva@','333','calle 5','Localidad 10','1607',1),
('Gabriel','Montes','g.<EMAIL>es@','444','calle 1','Localidad 1','1540',1);

insert into Sara.dbo.Calzado  (codigoCalzado, costoCalzado,idEmpleado,estado) values 
('ZM001',200,1,'P'), 
('ZH002',300,2,'P');

insert into Sara.dbo.ArregloCalzado values 
(1,'ZM001'),
(2,'ZM001'),
(3,'ZM001'), 
(4,'ZH002'),
(2,'ZH002'),
(9,'ZH002');

insert into Sara.dbo.Boleta (idCliente, total,seņa, fecha) values ('1',500,200,'12-8-2018');

insert into Sara.dbo.BoletaCalzado VALUES
 (1,'ZM001'),
 (1,'ZH002');
/*******************************************************************
*	Drops tables ordenado de mayor dependencia a menor dependencia *
********************************************************************/

drop table sara.dbo.ArregloCalzado
drop table sara.dbo.BoletaCalzado
drop table sara.dbo.Arreglo
drop table sara.dbo.Calzado
drop table sara.dbo.Empleado
drop table sara.dbo.Boleta
drop table sara.dbo.Cliente


/***************************
*	Seleccion de registros *
****************************/

select * from sara.dbo.ArregloCalzado
select * from sara.dbo.BoletaCalzado
select * from sara.dbo.Arreglo
select * from sara.dbo.Calzado
select * from sara.dbo.Empleado
select * from sara.dbo.Boleta
select * from sara.dbo.Cliente<file_sep>/Vista/IniciarSesion.java
package Vista;

import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;

import Controlador.SARA;
import javax.swing.JPasswordField;
import java.awt.SystemColor;

public class IniciarSesion extends JFrame {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private static IniciarSesion instancia;
	private JPanel contentPane;
	private JTextField textFieldUsuario;
	private JPasswordField passwordField;
	
	public static IniciarSesion getInstancia(){
		if(instancia==null)
			instancia=new IniciarSesion();
		return instancia;
	}

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					IniciarSesion frame = new IniciarSesion();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public IniciarSesion() {
		//setExtendedState(java.awt.Frame.MAXIMIZED_BOTH);
		setForeground(new Color(0, 0, 51));
		setTitle("Iniciar Sesion");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 468, 295);
		contentPane = new JPanel();
		contentPane.setForeground(new Color(255, 255, 255));
		contentPane.setBackground(SystemColor.menu);
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		textFieldUsuario = new JTextField();
		textFieldUsuario.setBackground(new Color(255, 255, 255));
		textFieldUsuario.setBounds(140, 85, 254, 20);
		textFieldUsuario.setColumns(10);
		contentPane.add(textFieldUsuario);
		
		JLabel lblContrasenia = new JLabel("Contrase\u00F1a:");
		lblContrasenia.setFont(lblContrasenia.getFont().deriveFont(lblContrasenia.getFont().getStyle() | Font.BOLD, 12f));
		lblContrasenia.setForeground(new Color(0, 0, 51));
		lblContrasenia.setBounds(47, 135, 90, 14);
		contentPane.add(lblContrasenia);
		
		JLabel lblUsuario = new JLabel("Usuario:");
		lblUsuario.setFont(lblUsuario.getFont().deriveFont(lblUsuario.getFont().getStyle() | Font.BOLD, 12f));
		lblUsuario.setForeground(new Color(0, 0, 51));
		lblUsuario.setBounds(47, 90, 75, 14);
		contentPane.add(lblUsuario);
		
		JLabel lblTitulo = new JLabel("S.A.R.A. - La Maravilla");
		lblTitulo.setForeground(new Color(0, 0, 51));
		lblTitulo.setBounds(116, 29, 263, 32);
		lblTitulo.setFont(new Font("Tahoma", Font.BOLD, 20));
		contentPane.add(lblTitulo);
		
		JButton btnSalir = new JButton("Salir");
		btnSalir.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				dispose();
			}
		});
		btnSalir.setBackground(new Color(255, 255, 255));
		btnSalir.setForeground(new Color(0, 0, 51));
		btnSalir.setBounds(140, 183, 124, 32);
		contentPane.add(btnSalir);
		
		JButton btnIniciarSesion = new JButton("Iniciar Sesion");
		btnIniciarSesion.addActionListener(new ActionListener() {
			@SuppressWarnings("deprecation")
			public void actionPerformed(ActionEvent e) {
				SARA s = 
				SARA.getInstancia(textFieldUsuario.getText(), passwordField.getText());
				if(s == null)
					JOptionPane.showMessageDialog(null, "Usuario y/o contraseņa incorrecto/a");
				else {
					dispose();
					Menu.getInstancia().setLocationRelativeTo(null);
					Menu.getInstancia().setVisible(true);
				}
			}
		});
		btnIniciarSesion.setForeground(new Color(0, 0, 51));
		btnIniciarSesion.setBackground(new Color(255, 255, 255));
		btnIniciarSesion.setBounds(270, 183, 124, 32);
		contentPane.add(btnIniciarSesion);
		
		passwordField = new JPasswordField();
		passwordField.setBounds(140, 130, 254, 20);
		contentPane.add(passwordField);
	}

	public void limpiar() {
		// TODO Auto-generated method stub
		textFieldUsuario.setText("");
		passwordField.setText("");
	}
}
<file_sep>/Vista/InsertarCalzadoBoleta.java
package Vista;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.util.Vector;
import java.awt.event.ActionEvent;
import javax.swing.JComboBox;
import javax.swing.DefaultComboBoxModel;
import javax.swing.DefaultListModel;

import java.awt.Font;
import javax.swing.JRadioButton;
import javax.swing.JCheckBox;
import javax.swing.JTextArea;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JSeparator;
import javax.swing.AbstractListModel;
import javax.swing.border.CompoundBorder;
import javax.swing.border.LineBorder;

import Controlador.SARA;
import Negocio.Arreglo;
import Negocio.Boleta;
import Negocio.Calzado;
import Negocio.Cliente;
import Negocio.Empleado;
import Persistencia.AdmPersistenciaBoleta;
import Persistencia.AdmPersistenciaCalzado;
import Persistencia.AdmPersistenciaCliente;
import Persistencia.AdmPersistenciaEmpleado;
import View.Calzado_View;

import java.awt.Color;
import javax.swing.JScrollPane;
import javax.swing.ScrollPaneConstants;
import javax.swing.JSpinner;
import javax.swing.JFormattedTextField;
import javax.swing.ButtonGroup;
import javax.swing.JTable;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.table.DefaultTableModel;

public class InsertarCalzadoBoleta extends JFrame {

	private JPanel contentPane;
	private JTextField dni;
	private JTextField codigoCalzado;
	private static JTextField importe;
	private static InsertarCalzadoBoleta instancia;
	private ButtonGroup botones = new ButtonGroup();
	private static Vector<Arreglo> arreglos;
	private static JList<String> list;
	Vector<Empleado> e;
	private String categoria;
	private static DefaultListModel<String> model;
	
	// Se crea el vector en donde se guardarán los calzados agregados
	private Vector<Calzado_View> calzados = new Vector<Calzado_View>();
	private JTextField nombreCliente;
	
	public static InsertarCalzadoBoleta getInstancia() {
		if(instancia == null)
			instancia = new InsertarCalzadoBoleta();
		return instancia;
	}

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					InsertarCalzadoBoleta frame = new InsertarCalzadoBoleta();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public InsertarCalzadoBoleta() {
		setTitle("Ingreso de Calzado");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 498, 561);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JPanel panel = new JPanel();
		panel.setBounds(20, 135, 462, 333);
		contentPane.add(panel);
		panel.setLayout(null);
		panel.setVisible(false);
		
		JLabel lblZapateraLaMaravilla = new JLabel("Zapater\u00EDa La Maravilla ");
		lblZapateraLaMaravilla.setFont(new Font("Trebuchet MS", Font.PLAIN, 19));
		lblZapateraLaMaravilla.setBounds(162, 11, 215, 33);
		contentPane.add(lblZapateraLaMaravilla);
		
		JLabel lblComposturaDeCalzados = new JLabel("Compostura de Calzados");
		lblComposturaDeCalzados.setFont(new Font("Tahoma", Font.PLAIN, 18));
		lblComposturaDeCalzados.setBounds(153, 38, 213, 28);
		contentPane.add(lblComposturaDeCalzados);
		
		JLabel lblLavalle = new JLabel("Lavalle 587 - Quilmes");
		lblLavalle.setFont(new Font("Tahoma", Font.ITALIC, 18));
		lblLavalle.setBounds(173, 68, 177, 28);
		contentPane.add(lblLavalle);
		
		JLabel lblCliente = new JLabel("CLIENTE:");
		lblCliente.setBounds(10, 110, 55, 14);
		contentPane.add(lblCliente);
		
		dni = new JTextField();
		dni.setBounds(74, 107, 161, 20);
		contentPane.add(dni);
		dni.setColumns(10);
		
		JButton btnNuevoCliente = new JButton("Nuevo Cliente");
		btnNuevoCliente.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				CrearCliente.getInstancia().setLocationRelativeTo(null);
				CrearCliente.getInstancia().setVisible(true);
			}
		});
		btnNuevoCliente.setBounds(329, 107, 122, 23);
		contentPane.add(btnNuevoCliente);
		
		JLabel lblArreglos = new JLabel("Arreglo/s:");
		lblArreglos.setBounds(5, 88, 55, 14);
		panel.add(lblArreglos);
		
		//Le pido al controlador que me de los arreglos
		arreglos=SARA.getInstancia().getArreglos();
		
		JSeparator separator_1 = new JSeparator();
		separator_1.setBounds(5, 186, 436, 1);
		panel.add(separator_1);
		
		JLabel lblEmpleado = new JLabel("Empleado:");
		lblEmpleado.setBounds(5, 208, 68, 14);
		panel.add(lblEmpleado);
		
		JComboBox<String> empleados = new JComboBox<String>();
		empleados.setBounds(105, 205, 124, 20);
		panel.add(empleados);
		
		// Agrego los empleados al comboBox
		e = SARA.getInstancia().getEmpleados();
		for(int i = 0; i < e.size(); i++) {
			empleados.addItem(e.elementAt(i).getIdEmpleado() + " - " + e.elementAt(i).getNombre()+" "+e.elementAt(i).getApellido());
		}
		
		JLabel lblCategora = new JLabel("Categor\u00EDa:");
		lblCategora.setBounds(5, 255, 68, 14);
		panel.add(lblCategora);
		
		JLabel lblCdigo = new JLabel("C\u00D3DIGO:");
		lblCdigo.setBounds(300, 295, 68, 14);
		panel.add(lblCdigo);
		
		codigoCalzado = new JTextField();
		codigoCalzado.setEditable(false);
		codigoCalzado.setBounds(360, 292, 92, 20);
		panel.add(codigoCalzado);
		codigoCalzado.setColumns(10);
		
		
		JLabel lblImporte = new JLabel("IMPORTE:");
		lblImporte.setBounds(5, 295, 68, 14);
		panel.add(lblImporte);
		
		importe = new JTextField();
		importe.setText("00.0");
		//importe.setText(sumarArreglos());
		importe.setBounds(87, 292, 86, 20);
		panel.add(importe);
		importe.setColumns(10);
		
		JLabel label_2 = new JLabel("$");
		label_2.setBounds(77, 295, 20, 14);
		panel.add(label_2);
		
		JButton btnBuscar = new JButton("Buscar");
		btnBuscar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				//Primero verificamos que el dni ingresado solo tenga numeros
				if(!dni.getText().matches("[0-9]+")) {
					JOptionPane.showMessageDialog(null, "El DNI debe contener solo números");
				}
				//Luego verificamos si el dni ya se encuentra registrado
				else if(!SARA.getInstancia().dniRepetido(dni.getText())) {
					JOptionPane.showMessageDialog(null, "El DNI ingresado no se encuentra registrado");
				}
				//Obtengo el cliente con el dni ingresado
				else {
						panel.setVisible(true);
						
						// Inserto nombre del cliente
						Cliente cliente = AdmPersistenciaCliente.getInstancia().buscarCliente(dni.getText());
						nombreCliente.setText(cliente.getNombre() + " " +cliente.getApellido());
				}
				
			}
		});
		btnBuscar.setBounds(237, 107, 89, 23);
		contentPane.add(btnBuscar);
		
		JSeparator separator_2 = new JSeparator();
		separator_2.setBounds(9, 280, 443, 2);
		panel.add(separator_2);
		
		JSeparator separator = new JSeparator();
		separator.setBounds(14, 7, 415, 1);
		panel.add(separator);
		
		
		
		JRadioButton rdbtnBota = new JRadioButton("Bota");
		//Acción que se realiza cuando se selecciona el botón
		rdbtnBota.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				
				// Retomo en el último autonumérico
				int codCalzado = AdmPersistenciaCalzado.getInstancia().getidMaximo("B");
				
				// getidMaximo me devuelve la parte numérica (por ej. 000, 001)
				int codCalzadoNuevo = codCalzado + 1;
				
				// Agrego la letra de la categoría
				codigoCalzado.setText("B" + Integer.toString(codCalzadoNuevo));
			}
		});
		botones.add(rdbtnBota);
		rdbtnBota.setBounds(80, 251, 74, 23);
		panel.add(rdbtnBota);
		
		JRadioButton rdbtnZapatilla = new JRadioButton("Zapatilla");
		//Acción que se realiza cuando se selecciona el botón
		rdbtnZapatilla.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
		
				// Retomo en el último autonumérico
				int codCalzado = AdmPersistenciaCalzado.getInstancia().getidMaximo("Z");
				
				// getidMaximo me devuelve la parte numérica (por ej. 000, 001)
				int codCalzadoNuevo = codCalzado + 1;
				
				// Agrego la letra de la categoría
				codigoCalzado.setText("Z" + Integer.toString(codCalzadoNuevo));
			}
		});
		botones.add(rdbtnZapatilla);
		rdbtnZapatilla.setBounds(156, 251, 74, 23);
		panel.add(rdbtnZapatilla);
		
		JRadioButton rdbtnZapatoHombre = new JRadioButton("Zapato Hombre");
		rdbtnZapatoHombre.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				// Retomo en el último autonumérico
				int codCalzado = AdmPersistenciaCalzado.getInstancia().getidMaximo("ZH");
				
				// getidMaximo me devuelve la parte numérica (por ej. 000, 001)
				int codCalzadoNuevo = codCalzado + 1;
				
				// Agrego la letra de la categoría
				codigoCalzado.setText("ZH" + Integer.toString(codCalzadoNuevo));
			}
		});
		botones.add(rdbtnZapatoHombre);
		rdbtnZapatoHombre.setBounds(238, 251, 115, 23);
		panel.add(rdbtnZapatoHombre);
		
		JRadioButton rdbtnZapatoMujer = new JRadioButton("Zapato Mujer");
		rdbtnZapatoMujer.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				// Retomo en el último autonumérico
				int codCalzado = AdmPersistenciaCalzado.getInstancia().getidMaximo("ZM");
				
				// getidMaximo me devuelve la parte numérica (por ej. 000, 001)
				int codCalzadoNuevo = codCalzado + 1;
				
				// Agrego la letra de la categoría
				codigoCalzado.setText("ZM" + Integer.toString(codCalzadoNuevo));
			}
		});
		botones.add(rdbtnZapatoMujer);
		rdbtnZapatoMujer.setBounds(353, 251, 109, 23);
		panel.add(rdbtnZapatoMujer);
		
		 list = new JList<String>();
		list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		list.setBounds(38, 62, 382, 38);
		list.setEnabled(false);
		panel.add(list);
		
		JButton btnSeleccionarArreglos = new JButton("Seleccionar arreglos");
		btnSeleccionarArreglos.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				JListEjemplo j=new JListEjemplo();
				j.setVisible(true);
				j.setLocationRelativeTo(null);
			}
		});
		btnSeleccionarArreglos.setBounds(68, 84, 221, 23);
		panel.add(btnSeleccionarArreglos);
		
		JScrollPane scrollPane = new JScrollPane(list);
		scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
		scrollPane.setBounds(39, 123, 383, 40);
		panel.add(scrollPane);
		
		JLabel lblBoletaPara = new JLabel("Boleta para:");
		lblBoletaPara.setBounds(5, 22, 92, 14);
		panel.add(lblBoletaPara);
		
		nombreCliente = new JTextField();
		nombreCliente.setEditable(false);
		nombreCliente.setBounds(105, 19, 216, 20);
		panel.add(nombreCliente);
		nombreCliente.setColumns(10);
		
		JButton btnAtrs = new JButton("Atr\u00E1s");
		btnAtrs.setBounds(30, 479, 89, 23);
		contentPane.add(btnAtrs);
		
		JButton btnAgregarOtroCalzado = new JButton("Agregar otro calzado");
		btnAgregarOtroCalzado.setBounds(152, 479, 169, 23);
		contentPane.add(btnAgregarOtroCalzado);
		
		JButton btnGuardar = new JButton("Guardar");
		btnGuardar.setBounds(362, 479, 89, 23);
		contentPane.add(btnGuardar);
		btnGuardar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e1) {
				
				// Obtengo el ID del empleado seleccionado
				Empleado emp = e.get(empleados.getSelectedIndex());
				
				// Creo un calzadoView porque todavía no se inserta en la bd
				Calzado_View calzado = new Calzado_View(codigoCalzado.getText(), "",importe.getText(), 'P', emp.getIdEmpleado(), arreglos);
				
				// Agrego el calzado actual
				calzados.add(calzado);
				
				ResumenBoleta rb = new ResumenBoleta(calzados, dni.getText());
				dispose();
				rb.setVisible(true);
			}

			
		});
		btnAgregarOtroCalzado.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				
				/*if(!rdbtnZapatilla.isSelected() || !rdbtnZapatoMujer.isSelected() || !rdbtnZapatoHombre.isSelected() || !rdbtnBota.isSelected()) {
					JOptionPane.showMessageDialog(null, "Seleccione una categoria para continuar");
				}*/
				// Obtengo el ID del empleado seleccionado
				
				// Lo busco en la base de datos
				Empleado emp = e.get(empleados.getSelectedIndex());
				
				// Creo un calzadoView porque todavía no se inserta en la bd
				Calzado_View calzado = new Calzado_View(codigoCalzado.getText(), "",importe.getText(), 'P', emp.getIdEmpleado(), arreglos);
				
				// Agrego el calzado actual al vector de Calzados_View
				calzados.add(calzado);
				
				// Se limpia la pantalla para agregar otro calzado
				limpiarPantalla();
			}

			
		});
		btnAtrs.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				dispose();
				Menu.getInstancia().setLocationRelativeTo(null);
				Menu.getInstancia().setVisible(true);
			}
		});
		
	}
	
	private static float sumarArreglos(){
		float total=0;
		
		for(Arreglo r:arreglos)
			total+=r.getCostoArreglo();
		
		return total;
	}

	public static void setArreglos(Vector<Arreglo> arreglosSeleccionados) {
		// TODO Auto-generated method stub
		arreglos=arreglosSeleccionados;
		float total=sumarArreglos();
		
		importe.setText(String.valueOf(total));
		
		
		model = new DefaultListModel<String>();
		Arreglo r;
		String resumen = arreglos.elementAt(0).getNombre();
		for(int i= 1;i< arreglos.size();i++) {
			r=arreglos.elementAt(i);
			
			resumen=resumen+", "+r.getNombre();
		}
		model.addElement(resumen);
		list.setModel(model);
	}
	
	private void limpiarPantalla() {
		importe.setText("");
		codigoCalzado.setText("");
		
	}
}
<file_sep>/Negocio/Usuario.java
package Negocio;

public abstract class Usuario{
	protected String nombre, apellido, domicilio, dni, localidad;
	protected boolean estado;
	
	public Usuario(){
		nombre="";
		apellido="";
		domicilio="";		
		dni="";
		localidad="";
		
	}
	

	public Usuario(String nombre, String apellido, String domicilio, String dni, String localidad) {
		super();
		this.nombre = nombre;
		this.apellido = apellido;
		this.domicilio = domicilio;
		this.dni = dni;
		this.localidad = localidad;		
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getApellido() {
		return apellido;
	}

	public void setApellido(String apellido) {
		this.apellido = apellido;
	}

	public String getDomicilio() {
		return domicilio;
	}

	public void setDomicilio(String domicilio) {
		this.domicilio = domicilio;
	}

	public String getDni() {
		return dni;
	}

	public void setDni(String dni) {
		this.dni = dni;
	}

	public String getLocalidad() {
		return localidad;
	}

	public void setLocalidad(String localidad) {
		this.localidad = localidad;
	}
	
	public boolean isEstado() {
		return estado;
	}

	public void setEstado(boolean estado) {
		this.estado = estado;
	}

	
	public abstract void delete();
	
	public abstract void update();
	
	
}
<file_sep>/tablas.sql

use SARA

CREATE TABLE Cliente(
idCliente int identity (1,1),
nombre varchar(40),
apellido varchar(40),
email varchar(70),
dni varchar(10) not null,
domicilio varchar(70),
localidad varchar(50),
codigoPostal varchar(7),
estado bit DEFAULT 1,
PRIMARY KEY(idCliente),
CONSTRAINT dni_unico UNIQUE (dni)
)

CREATE TABLE Boleta(
idBoleta int identity (1,1),
idCliente int not null,
total real not null,
seņa real,
fecha date,
estadoRetiro char DEFAULT 'P',--P=Pendiente L=Listo E=Entregado 
estado bit DEFAULT 1, --Para el borrado logico
PRIMARY KEY(idBoleta),
CONSTRAINT fk_clienteB FOREIGN KEY(idCliente) REFERENCES Cliente(idCliente)
)

CREATE TABLE Arreglo(
idArreglo int IDENTITY(1,1),
nombre varchar(40) not null,
descripcion varchar(70),
costoArreglo real not null,
estado bit DEFAULT 1,
PRIMARY KEY(idArreglo),
CONSTRAINT nombre_unico UNIQUE (nombre)
)

CREATE TABLE Empleado(
idEmpleado int identity(1,1),
nombre varchar(40),
apellido varchar(40),
dni varchar(10) not null,
cuil varchar(15) not null,
domicilio varchar(70),
localidad varchar(50),
telefono varchar(15),
estado bit DEFAULT 1,
PRIMARY KEY(idEmpleado),
CONSTRAINT dni_cuil_unico UNIQUE (dni,cuil)
)

CREATE TABLE Calzado(
codigoCalzado varchar(15) not null,
costoCalzado real,
idEmpleado int not null,
--categoria varchar(5), --B, Z, ZH, ZM 
estado char DEFAULT 'P', -- P(pendiente), L(listo), E(entregado)
PRIMARY KEY(codigoCalzado),
CONSTRAINT fk_empleadoC FOREIGN KEY(idEmpleado) REFERENCES Empleado(idEmpleado)
)

CREATE TABLE BoletaCalzado(
idBoleta int not null,
codigoCalzado varchar(15) not null,
PRIMARY KEY(idBoleta, codigoCalzado),
CONSTRAINT fk_boletaBC FOREIGN KEY(idBoleta) REFERENCES Boleta(idBoleta),
CONSTRAINT fk_calzadoBC FOREIGN KEY(codigoCalzado) REFERENCES Calzado(codigoCalzado)
)

CREATE TABLE ArregloCalzado(
idArreglo int not null,
codigoCalzado varchar(15) not null,
PRIMARY KEY(idArreglo, codigoCalzado),
CONSTRAINT fk_arregloAC FOREIGN KEY(idArreglo) REFERENCES Arreglo(idArreglo),
CONSTRAINT fk_calzadoAC FOREIGN KEY(codigoCalzado) REFERENCES Calzado(codigoCalzado)
)
<file_sep>/Persistencia/AdmPersistenciaCalzado.java
package Persistencia;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Vector;

import Negocio.Arreglo;
import Negocio.Calzado;
import Negocio.Empleado;
import View.Calzado_View;

public class AdmPersistenciaCalzado implements AdministradorPersistencia<Calzado> {
	private static AdmPersistenciaCalzado instancia;
	private String db;
	
	public static AdmPersistenciaCalzado getInstancia() {
		// TODO Auto-generated method stub
		if(instancia==null)
			instancia=new AdmPersistenciaCalzado();
		return instancia;
	}
	
	private AdmPersistenciaCalzado(){
		 db=PoolConnection.getPoolConnection().getNameDB();
	}
	
	@Override
	public void insert(Calzado o) {//Funciona
		// TODO Auto-generated method stub
		Connection c=PoolConnection.getPoolConnection().getConnection();
		String sql="Insert into "+db+".Calzado (codigoCalzado, costoCalzado,idEmpleado,estado) values (?,?,?,?)";
		try{
			String codigo=o.getCodigoCalzado();
			float costo=o.getCostoCalzado();
			int idEmpleado=o.getEmpleado().getIdEmpleado();
			String estado=String.valueOf(o.getEstado());
			
			PreparedStatement ps=c.prepareStatement(sql);
			ps.setString(1, codigo);
			ps.setFloat(2, costo);
			ps.setInt(3,idEmpleado);
			ps.setString(4,estado);
			
			ps.execute();
			PoolConnection.getPoolConnection().realeaseConnection(c);
			
			//Insertar en la tabla ArregloCalzado (codigoCalzado, idArreglo)
			AdmPersistenciaArreglo.getInstancia().insert(codigo,o.getArreglos()); 
			
		}catch(Exception e){
			e.printStackTrace();
		}
	}

	@Override
	public void delete(Calzado o) {
		// TODO Auto-generated method stub
		/*Connection c=PoolConnection.getPoolConnection().getConnection();
		String sql="update "+db+".Calzado set estado=0 where codigoCalzado="+o.getCodigoCalzado();*/
		System.out.println("Delete calzado a implementar");
	}

	@Override
	public void update(Calzado o) {//Funciona
		// TODO Auto-generated method stub
		Connection c=PoolConnection.getPoolConnection().getConnection();
		String sql="update "+db+".Calzado set estado=? where codigoCalzado=?";
		
		try{
			PreparedStatement s=c.prepareStatement(sql);
			s.setString(1, String.valueOf(o.getEstado()));
			s.setString(2, o.getCodigoCalzado());
			s.execute();
			PoolConnection.getPoolConnection().realeaseConnection(c);
		}catch(Exception e){
			e.printStackTrace();
		}
	}

	@Override
	/**Busco un calzado desde un codigoCalzado*/
	public Calzado select(String id) {//Funciona
		// TODO Auto-generated method stub
		Calzado calzado=null;
		ResultSet rs;
		Connection c=PoolConnection.getPoolConnection().getConnection();
		String sql="select * from "+db+".Calzado where codigoCalzado= ?";
		try{
			PreparedStatement st=c.prepareStatement(sql);
			st.setString(1,id);
			rs=st.executeQuery();
			PoolConnection.getPoolConnection().realeaseConnection(c);
			while(rs.next()){
				float costo=rs.getFloat(2);
				String idEmpleado=rs.getString(3);
				char estado=rs.getString(4).charAt(0);
				
				/*
				 ****************************************
				 *  Recupero los arreglos y el empleado *
				 ****************************************/
				Vector<Arreglo>arreglos=AdmPersistenciaArreglo.getInstancia().selectAll(id);
				Empleado e=AdmPersistenciaEmpleado.getInstancia().select(idEmpleado);
				
				 calzado=new Calzado();
				 calzado.setArreglos(arreglos);
				 calzado.setCostoCalzado(costo);
				 calzado.setEmpleado(e);
				 calzado.setEstado(estado);
				 calzado.setCodigoCalzado(id);	
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		return calzado;
	}

	@Override
	public  Vector<Calzado> selectAll() {
		// TODO Auto-generated method stub
		System.out.println("SelectAll calzado a implementar");
		return null;
	}

	/** Busca todos los calzados asociados en una boleta*/
	public Vector<Calzado> selectAll(String idBoleta) {//Funciona
		// TODO Auto-generated method stub
		Vector<Calzado> calzados=new Vector<Calzado>();
		ResultSet rs;
		Connection c=PoolConnection.getPoolConnection().getConnection();
		String sql="select * from "+db+".BoletaCalzado where idBoleta="+idBoleta;
		try{
			Statement s=c.createStatement();
			rs=s.executeQuery(sql);
			PoolConnection.getPoolConnection().realeaseConnection(c);
			while(rs.next()){
				String codigo=rs.getString(2);
				calzados.add(select(codigo));
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		return calzados;
	}

	public int getidMaximo(String categoria){	
		
		int id=0;
		Connection c=PoolConnection.getPoolConnection().getConnection();
		ResultSet rs;
		PreparedStatement s;
		String sql="Select codigoCalzado from "+db+".Calzado where codigoCalzado like ? order by 1 desc";
		
		try{
			s=c.prepareStatement(sql);
			s.setString(1, "%" + categoria + "%");
			rs=s.executeQuery();
			PoolConnection.getPoolConnection().realeaseConnection(c);
			if(!categoria.equals("Z")){//Si es Z me busca tambien los ZH y ZM
				if(rs.next()){
					String codigo=rs.getString(1);
					
					id=Integer.parseInt(codigo.substring(categoria.length()));
				}
			}
			else{
				while(rs.next()){
					String codigo=rs.getString(1);
					if(!codigo.contains("M")&&!codigo.contains("H")){
					
						id=Integer.parseInt(codigo.substring(categoria.length()));
						break;
					}
				}
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		
		return id;
}

	public Vector<Calzado_View> selectAllToView(int idBoleta) {//Funciona
		// TODO Auto-generated method stub
		Vector<Calzado_View> cv=new Vector<Calzado_View>();
		
		Vector<Calzado>calzados=this.selectAll(String.valueOf(idBoleta));
		for(Calzado c:calzados)
			cv.add(c.toView());
		return cv;
	}

	@Override
	public int getIdMaximo() {
		// TODO Auto-generated method stub
		return 0;
	}

}
<file_sep>/View/Calzado_View.java
package View;

import java.util.Vector;

import Negocio.Arreglo;

public class Calzado_View {
	private String codigo,tipoCalzado,costo;
	private char estado;
	private int idEmpleado;
	private Vector<Arreglo>arreglos;
	
	public Calzado_View(String codigo, String tipoCalzado, String costo, char estado, int idEmpleado,
			Vector<Arreglo> arreglos) {
		super();
		this.codigo = codigo;
		this.tipoCalzado = tipoCalzado;
		this.costo = costo;
		this.estado = estado;
		this.idEmpleado = idEmpleado;
		this.arreglos = arreglos;
	}

	public String getCodigo() {
		return codigo;
	}

	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}

	public String getTipoCalzado() {
		return tipoCalzado;
	}

	public void setTipoCalzado(String tipoCalzado) {
		this.tipoCalzado = tipoCalzado;
	}

	public String getCosto() {
		return costo;
	}

	public void setCosto(String costo) {
		this.costo = costo;
	}

	public char isEstado() {
		return estado;
	}

	public void setEstado(char estado) {
		this.estado = estado;
	}

	public int getIdEmpleado() {
		return idEmpleado;
	}

	public void setIdEmpleado(int idEmpleado) {
		this.idEmpleado = idEmpleado;
	}

	public Vector<Arreglo> getArreglos() {
		return arreglos;
	}

	public void setArreglos(Vector<Arreglo> arreglos) {
		this.arreglos = arreglos;
	}
	
	
	
}
<file_sep>/Vista/Menu.java
package Vista;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.GridBagLayout;
import javax.swing.JButton;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.Font;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;

public class Menu extends JFrame {

	private JPanel contentPane;
	private static Menu instancia;
	
	public static Menu getInstancia(){
		if(instancia==null)
			instancia=new Menu();
		return instancia;
	}

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Menu frame = new Menu();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public Menu() {
		setTitle("Men\u00FA");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JButton btnNewButton = new JButton("BOLETAS");
		btnNewButton.setFont(new Font("Kalinga", Font.BOLD, 12));
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				dispose();
				Boletas.getInstancia().setLocationRelativeTo(null);
				Boletas.getInstancia().setVisible(true);
			}
		});
		btnNewButton.setBounds(72, 57, 130, 23);
		contentPane.add(btnNewButton);
		
		JButton btnNewButton_1 = new JButton("CLIENTES");
		btnNewButton_1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				dispose();
				MenuCliente.getInstancia().setLocationRelativeTo(null);
				MenuCliente.getInstancia().setVisible(true);
			}
		});
		btnNewButton_1.setFont(new Font("Kalinga", Font.BOLD, 12));
		btnNewButton_1.setBounds(225, 57, 130, 23);
		contentPane.add(btnNewButton_1);
		
		JButton btnArreglos = new JButton("ARREGLOS");
		btnArreglos.setEnabled(false);
		btnArreglos.setFont(new Font("Kalinga", Font.BOLD, 12));
		btnArreglos.setBounds(72, 109, 130, 23);
		contentPane.add(btnArreglos);
		
		JButton btnEmpleados = new JButton("EMPLEADOS");
		btnEmpleados.setEnabled(false);
		btnEmpleados.setFont(new Font("Kalinga", Font.BOLD, 12));
		btnEmpleados.setBounds(225, 109, 130, 23);
		contentPane.add(btnEmpleados);
		
		JButton btnMail = new JButton("MAIL");
		btnMail.setEnabled(false);
		btnMail.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			}
		});
		btnMail.setFont(new Font("Kalinga", Font.BOLD, 12));
		btnMail.setBounds(72, 163, 130, 23);
		contentPane.add(btnMail);
		
		JButton btnNuevaBoleta = new JButton("NUEVA BOLETA");
		btnNuevaBoleta.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				dispose();
				InsertarCalzadoBoleta.getInstancia().setLocationRelativeTo(null);
				InsertarCalzadoBoleta.getInstancia().setVisible(true);
			}
		});
		btnNuevaBoleta.setFont(new Font("Kalinga", Font.BOLD, 12));
		btnNuevaBoleta.setBounds(225, 163, 130, 23);
		contentPane.add(btnNuevaBoleta);
		
		JMenuBar menuBar = new JMenuBar();
		menuBar.setBounds(0, 0, 424, 23);
		contentPane.add(menuBar);
		
		JMenu mnCuenta = new JMenu("Cuenta");
		menuBar.add(mnCuenta);
		
		JMenuItem mntmCerrarSesion = new JMenuItem("Cerrar sesion");
		mntmCerrarSesion.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				dispose();
				IniciarSesion.getInstancia().setLocationRelativeTo(null);
				IniciarSesion.getInstancia().setVisible(true);
				IniciarSesion.getInstancia().limpiar();
			}
		});
		mnCuenta.add(mntmCerrarSesion);
		
		JMenuItem mntmNewMenuItem = new JMenuItem("Salir");
		mntmNewMenuItem.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				System.exit(0);
			}
		});
		menuBar.add(mntmNewMenuItem);
	}
}
<file_sep>/Vista/MenuCliente.java
package Vista;

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.Panel;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

import Controlador.SARA;
import Negocio.Cliente;

import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class MenuCliente extends JFrame {

	private JPanel contentPane;
	private JTextField dni;
	private JTextField nombre;
	private JTextField apellido;
	private JTextField mail;
	private JTextField domicilio;
	private JTextField localidad;
	private JTextField codigoPostal;
	private static MenuCliente instancia;
	
	public static MenuCliente getInstancia() {
		if(instancia == null)
			instancia = new MenuCliente();
		return instancia;
	}

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					MenuCliente frame = new MenuCliente();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public MenuCliente() {
		setTitle("Clientes");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 310);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		
		JPanel panel = new JPanel();
		panel.setBounds(5, 34, 424, 200);
		panel.setVisible(false);
		
		JLabel lblDni = new JLabel("DNI:");
		lblDni.setBounds(5, 9, 40, 14);
		
		dni = new JTextField();
		dni.setBounds(49, 8, 155, 20);
		dni.setColumns(10);
		
		JButton btnAtrs_1 = new JButton("Atr\u00E1s");
		btnAtrs_1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				dispose();
				Menu.getInstancia().setLocationRelativeTo(null);
				Menu.getInstancia().setVisible(true);
			}
		});
		btnAtrs_1.setBounds(64, 237, 89, 23);
		contentPane.add(btnAtrs_1);
		
		JButton btnEliminar = new JButton("Eliminar");
		btnEliminar.setEnabled(false);
		btnEliminar.setBounds(163, 237, 89, 23);
		contentPane.add(btnEliminar);
		
		JButton btnModificar = new JButton("Modificar");
		btnModificar.setEnabled(false);
		btnModificar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			}
		});
		btnModificar.setBounds(262, 237, 89, 23);
		contentPane.add(btnModificar);
		
		JButton btnBuscar = new JButton("Buscar");
		btnBuscar.setBounds(214, 5, 88, 23);
		btnBuscar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if(dni.getText().isEmpty())
					JOptionPane.showMessageDialog(null, "Ingrese un DNI para continuar");
				else {
					Cliente cliente =  SARA.getInstancia().buscarCliente(dni.getText());
					if( cliente != null) {
						panel.setVisible(true);
						nombre.setText(cliente.getNombre());
						apellido.setText(cliente.getApellido());
						mail.setText(cliente.getMail());
						domicilio.setText(cliente.getDomicilio());
						localidad.setText(cliente.getLocalidad());
						codigoPostal.setText(cliente.getCodigoPostal());
						btnEliminar.setEnabled(true);
						btnModificar.setEnabled(true);
					}
					else
						JOptionPane.showMessageDialog(null, "No existe cliente con el DNI ingresado");
				}
			}
		});
		
		JButton btnNuevoCliente = new JButton("Nuevo Cliente");
		btnNuevoCliente.setBounds(312, 5, 117, 23);
		btnNuevoCliente.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				CrearCliente.getInstancia().setLocationRelativeTo(null);
				CrearCliente.getInstancia().setVisible(true);
			}
		});
		contentPane.setLayout(null);
		
		JLabel lblNombre = new JLabel("Nombre:");
		lblNombre.setBounds(10, 14, 55, 14);
		
		nombre = new JTextField();
		nombre.setEditable(false);
		nombre.setBounds(112, 11, 302, 20);
		nombre.setColumns(10);
		
		JLabel lblApellido = new JLabel("Apellido:");
		lblApellido.setBounds(10, 46, 55, 14);
		
		apellido = new JTextField();
		apellido.setEditable(false);
		apellido.setBounds(112, 43, 302, 20);
		apellido.setColumns(10);
		
		JLabel lblMail = new JLabel("Mail:");
		lblMail.setBounds(10, 77, 55, 14);
		
		mail = new JTextField();
		mail.setEditable(false);
		mail.setBounds(112, 74, 302, 20);
		mail.setColumns(10);
		
		JLabel lblDomicilio = new JLabel("Domicilio:");
		lblDomicilio.setBounds(10, 108, 55, 14);
		
		domicilio = new JTextField();
		domicilio.setEditable(false);
		domicilio.setBounds(112, 105, 302, 20);
		domicilio.setColumns(10);
		
		JLabel lblLocalidad = new JLabel("Localidad:");
		lblLocalidad.setBounds(10, 139, 63, 14);
		
		localidad = new JTextField();
		localidad.setEditable(false);
		localidad.setBounds(112, 136, 302, 20);
		localidad.setColumns(10);
		
		JLabel lblCdigoPostal = new JLabel("C\u00F3digo Postal:");
		lblCdigoPostal.setBounds(10, 170, 92, 14);
		
		codigoPostal = new JTextField();
		codigoPostal.setEditable(false);
		codigoPostal.setBounds(112, 167, 302, 20);
		codigoPostal.setColumns(10);
		
		JButton btnAtrs = new JButton("Atr\u00E1s");
		btnAtrs.setBounds(52, 205, 76, 23);
		btnAtrs.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				dispose();
			}
		});
		contentPane.add(panel);
		panel.setLayout(null);
		
		JButton btnEliminarCliente = new JButton("Eliminar");
		btnEliminarCliente.setEnabled(false);
		btnEliminarCliente.setBounds(138, 205, 119, 23);
		btnEliminarCliente.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			}
		});
		
		JButton btnModificarCliente = new JButton("Modificar");
		btnModificarCliente.setEnabled(false);
		btnModificarCliente.setBounds(267, 205, 119, 23);
		btnModificarCliente.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			}
		});
		panel.add(lblLocalidad);
		panel.add(lblDomicilio);
		panel.add(lblMail);
		panel.add(lblApellido);
		panel.add(lblNombre);
		panel.add(nombre);
		panel.add(apellido);
		panel.add(mail);
		panel.add(domicilio);
		panel.add(localidad);
		panel.add(lblCdigoPostal);
		panel.add(codigoPostal);
		contentPane.add(lblDni);
		contentPane.add(dni);
		contentPane.add(btnBuscar);
		contentPane.add(btnNuevoCliente);
	}
}
<file_sep>/Vista/CrearCliente.java
package Vista;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

import Controlador.SARA;

import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class CrearCliente extends JFrame {

	private JPanel contentPane;
	private static CrearCliente instancia;
	private JTextField nombre;
	private JTextField apellido;
	private JTextField dni;
	private JTextField mail;
	private JTextField domicilio;
	private JTextField localidad;
	private JTextField codigoPostal;
	
	public static CrearCliente getInstancia() {
		if(instancia == null)
			instancia = new CrearCliente();
		return instancia;
	}

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					CrearCliente frame = new CrearCliente();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public CrearCliente() {
		setTitle("Crear Cliente");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JLabel lblNombre = new JLabel("(*)Nombre:");
		lblNombre.setBounds(10, 11, 63, 14);
		contentPane.add(lblNombre);
		
		nombre = new JTextField();
		nombre.setBounds(84, 8, 285, 20);
		contentPane.add(nombre);
		nombre.setColumns(10);
		
		JLabel lblApellido = new JLabel("(*)Apellido:");
		lblApellido.setBounds(10, 42, 63, 14);
		contentPane.add(lblApellido);
		
		apellido = new JTextField();
		apellido.setBounds(84, 39, 285, 20);
		contentPane.add(apellido);
		apellido.setColumns(10);
		
		JLabel lblDni = new JLabel("(*)DNI:");
		lblDni.setBounds(10, 73, 46, 14);
		contentPane.add(lblDni);
		
		dni = new JTextField();
		dni.setBounds(84, 70, 115, 20);
		contentPane.add(dni);
		dni.setColumns(10);
		
		JLabel lblMail = new JLabel("(*)Mail:");
		lblMail.setBounds(10, 107, 46, 14);
		contentPane.add(lblMail);
		
		mail = new JTextField();
		mail.setBounds(84, 104, 285, 20);
		contentPane.add(mail);
		mail.setColumns(10);
		
		JLabel lblDomicilio = new JLabel("Domicilio:");
		lblDomicilio.setBounds(10, 140, 63, 14);
		contentPane.add(lblDomicilio);
		
		domicilio = new JTextField();
		domicilio.setBounds(84, 137, 285, 20);
		contentPane.add(domicilio);
		domicilio.setColumns(10);
		
		JLabel lblLocalidad = new JLabel("Localidad:");
		lblLocalidad.setBounds(10, 175, 63, 14);
		contentPane.add(lblLocalidad);
		
		localidad = new JTextField();
		localidad.setBounds(84, 172, 142, 20);
		contentPane.add(localidad);
		localidad.setColumns(10);
		
		JLabel lblCdigoPostal = new JLabel("C\u00F3digo Postal:");
		lblCdigoPostal.setBounds(236, 175, 87, 14);
		contentPane.add(lblCdigoPostal);
		
		codigoPostal = new JTextField();
		codigoPostal.setBounds(333, 172, 86, 20);
		contentPane.add(codigoPostal);
		codigoPostal.setColumns(10);
		
		JLabel lblSinGuionesNi = new JLabel("(sin guiones ni puntos)");
		lblSinGuionesNi.setBounds(215, 73, 154, 14);
		contentPane.add(lblSinGuionesNi);
		
		JButton btnAtrs = new JButton("Atr\u00E1s");
		btnAtrs.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				dispose();
				MenuCliente.getInstancia().setLocationRelativeTo(null);
				MenuCliente.getInstancia().setVisible(true);
			}
		});
		btnAtrs.setBounds(110, 227, 89, 23);
		contentPane.add(btnAtrs);
		
		JButton btnAceptar = new JButton("Aceptar");
		btnAceptar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if(nombre.getText().isEmpty() || apellido.getText().isEmpty() || dni.getText().isEmpty() || mail.getText().isEmpty()){
					JOptionPane.showMessageDialog(null, "Ingrese los campos obligatorios");
				}
				//Verificacion de DNI
				else if(SARA.getInstancia().dniRepetido(dni.getText())) {
					JOptionPane.showMessageDialog(null, "El DNI ingresado ya se encuentra registrado");
				}
				else if(SARA.getInstancia().mailRepetido(mail.getText())) {
					JOptionPane.showMessageDialog(null, "El mail ingresado ya se encuentra ingresado");
				}
				else {
					SARA.getInstancia().crearCliente(nombre.getText(), apellido.getText(), dni.getText(), mail.getText(),
							domicilio.getText(), localidad.getText(), codigoPostal.getText());
					JOptionPane.showMessageDialog(null, "Cliente creado con éxito");
					limpiarPantalla();
					dispose();
				}
			}

			private void limpiarPantalla() {
				nombre.setText(null);
				apellido.setText(null);
				dni.setText(null);
				mail.setText(null);
				domicilio.setText(null);
				localidad.setText(null);
				codigoPostal.setText(null);
			}
		});
		btnAceptar.setBounds(234, 227, 89, 23);
		contentPane.add(btnAceptar);
		
		JLabel lblNewLabel = new JLabel("(*)Obligatorio");
		lblNewLabel.setBounds(10, 211, 89, 14);
		contentPane.add(lblNewLabel);
	}

}
<file_sep>/Persistencia/AdmPersistenciaEmpleado.java
package Persistencia;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Vector;

import Negocio.Empleado;


public class AdmPersistenciaEmpleado implements AdministradorPersistencia<Empleado> {
	private static AdmPersistenciaEmpleado instancia;
	private String db;
	
	private AdmPersistenciaEmpleado(){
		db=PoolConnection.getPoolConnection().getNameDB();
	}
	
	public static AdmPersistenciaEmpleado getInstancia(){
		if(instancia==null)
			instancia=new AdmPersistenciaEmpleado();
		return instancia;
	}
	
	@Override
	public void insert(Empleado o) {//Funciona
		// TODO Auto-generated method stub	
		String sql="insert into "+db+".Empleado values (?,?,?,?,?,?,?,?)";
		Connection c=PoolConnection.getPoolConnection().getConnection();

		try{
			PreparedStatement ps=c.prepareStatement(sql);
			
			//////////////////////////////////////////////////////					
			ps.setString(1,o.getNombre());
			ps.setString(2,o.getApellido());
			ps.setString(3, o.getDni());
			ps.setString(4,o.getCuil());
			ps.setString(5,o.getDomicilio());
			ps.setString(6,o.getLocalidad());
			ps.setString(7,o.getTelefono());
			ps.setBoolean(8, o.isEstado());
			//////////////////////////////////////////////////////		
			
			ps.execute();
			PoolConnection.getPoolConnection().realeaseConnection(c);
		}catch(Exception e){
			e.printStackTrace();
		}
	}

	@Override
	public void delete(Empleado o) {//Funciona
		// TODO Auto-generated method stub
		String sql="update "+db+".Empleado set estado=0 where dni="+o.getDni();
		Connection c=PoolConnection.getPoolConnection().getConnection();

		try{
			Statement s=c.createStatement();
			s.execute(sql);
			PoolConnection.getPoolConnection().realeaseConnection(c);
		
		}catch(Exception e){
			e.printStackTrace();
		}
	}

	@Override
	public void update(Empleado o) {//Funciona
		// TODO Auto-generated method stub		
		String sql="update "+db+".Empleado set nombre=?, apellido=?, domicilio=?, localidad=?, telefono=? where dni=?";
		Connection c=PoolConnection.getPoolConnection().getConnection();

		try{
			PreparedStatement ps=c.prepareStatement(sql);
			
			//////////////////////////////////////////////////////			
			ps.setString(1,o.getNombre());
			ps.setString(2,o.getApellido());
			ps.setString(3,o.getDomicilio());
			ps.setString(4,o.getLocalidad());
			ps.setString(5,o.getTelefono());	
			ps.setString(6, o.getDni());
			//////////////////////////////////////////////////////		
			
			ps.execute();
			PoolConnection.getPoolConnection().realeaseConnection(c);
		
		}catch(Exception e){
			e.printStackTrace();
		}
	}

	@Override
	public Empleado select(String id) {//Funciona
		// TODO Auto-generated method stub
		Empleado u=null;
		
		String sql="Select * from "+db+".Empleado where idEmpleado="+id;
		Connection c=PoolConnection.getPoolConnection().getConnection();
		ResultSet rs;
	
		try{			
			Statement s=c.createStatement();
			rs=s.executeQuery(sql);
			PoolConnection.getPoolConnection().realeaseConnection(c);
			
			while( rs.next() ){
				u=new Empleado();
				u.setId(Integer.parseInt(id));
				u.setNombre(rs.getString(2));
				u.setApellido(rs.getString(3));
				u.setDni(rs.getString(4));
				u.setCuil(rs.getString(5));
				u.setDomicilio(rs.getString(6));
				u.setLocalidad(rs.getString(7));
				u.setTelefono(rs.getString(8));
				u.setEstado(rs.getBoolean(9));
			}
			
		}catch(Exception e){
			e.printStackTrace();
		}

				
		return u;
	}
	
	@Override
	public  Vector<Empleado> selectAll() {//Funciona
		// TODO Auto-generated method stub
		 Vector<Empleado> lResultado=new  Vector<Empleado>();
		String sql="Select * from "+db+".Empleado where estado=1";
		Connection c=PoolConnection.getPoolConnection().getConnection();
		ResultSet rs;
				
		try{
			Statement s=c.createStatement();
			rs=s.executeQuery(sql);
			PoolConnection.getPoolConnection().realeaseConnection(c);
			while(rs.next()){
				Empleado u=new Empleado();
				u.setId(rs.getInt(1));
				u.setNombre(rs.getString(2));
				u.setApellido(rs.getString(3));
				u.setDni(rs.getString(4));
				u.setCuil(rs.getString(5));
				u.setDomicilio(rs.getString(6));
				u.setLocalidad(rs.getString(7));
				u.setTelefono(rs.getString(8));
				u.setEstado(rs.getBoolean(9));
				
				lResultado.add(u);
			}
			
		}catch(Exception e){
			e.printStackTrace();
		}
	
		return lResultado;
	}
 
	@Override
	public int getIdMaximo() {//Funciona
		// TODO Auto-generated method stub
		int id=0;
		ResultSet rs;
		Connection c=PoolConnection.getPoolConnection().getConnection();
		Statement s;
		String sql="Select Max(idEmpleado) from "+db+".Empleado";
		try{
			s=c.createStatement();
			rs=s.executeQuery(sql);
			PoolConnection.getPoolConnection().realeaseConnection(c);
			if(rs.next())
				id=rs.getInt(1);
		}catch(Exception e){
			e.printStackTrace();
		}
		return id;
	}

}
<file_sep>/Vista/ResumenBoleta.java
package Vista;

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.util.Vector;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

import Negocio.Boleta;
import Negocio.Calzado;
import Negocio.Cliente;
import Negocio.Empleado;
import Persistencia.AdmPersistenciaBoleta;
import Persistencia.AdmPersistenciaCliente;
import Persistencia.AdmPersistenciaEmpleado;
import View.Calzado_View;

import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JRadioButton;
import javax.swing.JCheckBox;
import javax.swing.JSeparator;
import javax.swing.JTable;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JList;
import javax.swing.JOptionPane;

import java.awt.event.ActionListener;
import java.sql.Date;
import java.time.LocalDate;
import java.awt.event.ActionEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.ButtonGroup;
import javax.swing.JScrollPane;

public class ResumenBoleta extends JFrame {

	private JPanel contentPane;
	private JTextField dniCliente;
	private JTextField nroBoleta;
	private JTextField importe;
	private JTextField montoTotal;
	private JTextField seña;
	private static ResumenBoleta instancia;
	private final ButtonGroup buttonGroup = new ButtonGroup();
	private JPanel contentPane2;
	
	public static ResumenBoleta getInstancia() {
		Vector<Calzado_View> calzados = new Vector<Calzado_View>();
		String dni = null;
		if(instancia == null)
			instancia = new ResumenBoleta(calzados, dni);
		return instancia;
	}

	/**
	 * Launch the application.
	 */
//	public static void main(String[] args) {
//		EventQueue.invokeLater(new Runnable() {
//			public void run() {
//				try {
//					Vector<Calzado> calzados = null;
//					String dni = null;
//					ResumenBoleta frame = new ResumenBoleta(calzados, dni);
//					frame.setVisible(true);
//				} catch (Exception e) {
//					e.printStackTrace();
//				}
//			}
//		});
//	}

	/**
	 * Create the frame.
	 * @param calzados 
	 * @param dni 
	 */
	public ResumenBoleta(Vector<Calzado_View> calzados, String dni) {
		
		
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 450);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		contentPane2 = new JPanel();
		contentPane2.setBounds(10, 73, 389, 91);
		contentPane2.setVisible(false);
		contentPane.add(contentPane2);
		
		JLabel lblCliente = new JLabel("CLIENTE:");
		lblCliente.setBounds(10, 11, 67, 14);
		contentPane.add(lblCliente);
		
		dniCliente = new JTextField();
		dniCliente.setEditable(false);
		dniCliente.setBounds(87, 8, 160, 20);
		contentPane.add(dniCliente);
		dniCliente.setColumns(10);
		
		// Seteo el dni traído de la venta anterior
		dniCliente.setText(dni);
		
		JLabel lblNroBoleta = new JLabel("Nro. Boleta");
		lblNroBoleta.setBounds(257, 11, 67, 14);
		contentPane.add(lblNroBoleta);
		
		nroBoleta = new JTextField();
		nroBoleta.setEditable(false);
		nroBoleta.setBounds(334, 8, 86, 20);
		contentPane.add(nroBoleta);
		nroBoleta.setColumns(10);
		
		JLabel lblEnvoADomicilio = new JLabel("Env\u00EDo a domicilio:");
		lblEnvoADomicilio.setBounds(10, 48, 122, 14);
		contentPane.add(lblEnvoADomicilio);
		
		JRadioButton rdbtnS = new JRadioButton("S\u00ED");
		rdbtnS.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				contentPane2.setVisible(true);
			}
		});
		buttonGroup.add(rdbtnS);
		rdbtnS.setBounds(138, 44, 109, 23);
		contentPane.add(rdbtnS);
		
		JRadioButton rdbtnNo = new JRadioButton("No");
		rdbtnNo.setSelected(true);
		rdbtnNo.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				contentPane2.setVisible(false);
			}
		});
		buttonGroup.add(rdbtnNo);
		rdbtnNo.setBounds(256, 44, 109, 23);
		contentPane.add(rdbtnNo);
		
		JLabel lblDisponibilidad = new JLabel("Disponibilidad:");
		lblDisponibilidad.setBounds(10, 84, 92, 14);
		contentPane2.add(lblDisponibilidad);
		
		JCheckBox chckbxLunes = new JCheckBox("Lunes");
		chckbxLunes.setBounds(108, 80, 78, 23);
		contentPane2.add(chckbxLunes);
		
		JCheckBox chckbxMartes = new JCheckBox("Martes");
		chckbxMartes.setBounds(199, 80, 78, 23);
		contentPane2.add(chckbxMartes);
		
		JCheckBox chckbxMircoles = new JCheckBox("Mi\u00E9rcoles");
		chckbxMircoles.setBounds(298, 80, 97, 23);
		contentPane2.add(chckbxMircoles);
		
		JCheckBox chckbxJueves = new JCheckBox("Jueves");
		chckbxJueves.setBounds(138, 106, 78, 23);
		contentPane2.add(chckbxJueves);
		
		JCheckBox chckbxViernes = new JCheckBox("Viernes");
		chckbxViernes.setBounds(237, 106, 78, 23);
		contentPane2.add(chckbxViernes);
		
		JLabel lblHorario = new JLabel("Horario:");
		lblHorario.setBounds(10, 142, 46, 14);
		contentPane2.add(lblHorario);
		
		JCheckBox checkBox = new JCheckBox("10:00 - 13:00");
		checkBox.setBounds(89, 138, 97, 23);
		contentPane2.add(checkBox);
		
		JCheckBox checkBox_1 = new JCheckBox("16:00 - 19:00");
		checkBox_1.setBounds(227, 138, 97, 23);
		contentPane2.add(checkBox_1);
		
		JSeparator separator = new JSeparator();
		separator.setBounds(10, 177, 410, 2);
		contentPane.add(separator);
		
		JLabel lblImporte = new JLabel("Importe:");
		lblImporte.setBounds(10, 326, 67, 14);
		contentPane.add(lblImporte);
		
		JLabel lblAPagar = new JLabel("A pagar:");
		lblAPagar.setBounds(10, 351, 67, 14);
		contentPane.add(lblAPagar);
		
		importe = new JTextField();
		importe.setEditable(false);
		importe.setBounds(115, 323, 58, 20);
		contentPane.add(importe);
		importe.setColumns(10);
		
		montoTotal = new JTextField();
		montoTotal.setEditable(false);
		montoTotal.setBounds(115, 348, 58, 20);
		contentPane.add(montoTotal);
		montoTotal.setColumns(10);
		
		JLabel label = new JLabel("$");
		label.setBounds(83, 326, 20, 14);
		contentPane.add(label);
		
		JLabel label_1 = new JLabel("$");
		label_1.setBounds(83, 351, 20, 14);
		contentPane.add(label_1);
		
		JLabel lblSea = new JLabel("Se\u00F1a:");
		lblSea.setBounds(215, 326, 46, 14);
		contentPane.add(lblSea);
		
		JLabel label_2 = new JLabel("$");
		label_2.setBounds(267, 326, 10, 14);
		contentPane.add(label_2);
		
		seña = new JTextField();
		seña.addKeyListener(new KeyAdapter() {
			@Override
			// Calcular el monto total según la seña que se ingresa
			public void keyReleased(KeyEvent arg0) {
				float res = Float.parseFloat(importe.getText()) - Float.parseFloat(seña.getText());
				montoTotal.setText(Float.toString(res));
			}
		});
		seña.setBounds(284, 323, 58, 20);
		contentPane.add(seña);
		seña.setColumns(10);
		
		JSeparator separator_1 = new JSeparator();
		separator_1.setBounds(10, 313, 410, 2);
		contentPane.add(separator_1);
		
		JLabel lblCalzados = new JLabel("Calzados:");
		lblCalzados.setBounds(10, 191, 67, 14);
		contentPane.add(lblCalzados);
		
		JButton btnAtrs = new JButton("Atr\u00E1s");
		btnAtrs.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				dispose();
				InsertarCalzadoBoleta.getInstancia().setLocationRelativeTo(null);
				InsertarCalzadoBoleta.getInstancia().setVisible(true);
			}
		});
		btnAtrs.setBounds(108, 379, 89, 23);
		contentPane.add(btnAtrs);
		
		// Retomo en el último autonumérico
		int idBoleta = AdmPersistenciaBoleta.getInstancia().getIdMaximo()+1;
		// Se muestra cual sería el nroBoleta pero todavía no se creó
		nroBoleta.setText(Integer.toString(idBoleta + 1));
		
		JButton btnAceptar = new JButton("Aceptar");
		btnAceptar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				if(seña.getText().isEmpty() || importe.getText().isEmpty()) {
					JOptionPane.showMessageDialog(null, "Ingrese seña y/o monto para continuar");
				}
				else {
				
					// Para crear un boleta, necesito el cliente, lo consigo con el dni
					Cliente cliente = AdmPersistenciaCliente.getInstancia().buscarCliente(dni);
				
					// Fecha de hoy
					Date fecha = Date.valueOf(LocalDate.now());
				
					// Se crea la boleta, NECESITO PASARLE UN VECTOR DE CALZADOS
					// PERO TENGO UN VECTOR DE CALZADOS_VIEW 
					// Creo el vector que le voy a pasar al constructor de Boleta
					Vector<Calzado> calzadosConfirmados = new Vector<Calzado>();
				
					// Recorro el vector de Calzados_View
					for(int i = 0; i < calzados.size(); i++) {
						// Como Calzados_View tiene el idEmpleado como int, lo utilizo
						// para traer el objeto Empleado (lo necesito para el constructor de Calzado)
						int idEmpleado = calzados.elementAt(i).getIdEmpleado();
						Empleado empleado = AdmPersistenciaEmpleado.getInstancia().select(Integer.toString(idEmpleado));
					
						// Instancio el calzado con los datos de Calzado_View y los agrego al vector
						Calzado c = new Calzado(
								calzados.elementAt(i).getCodigo(),
								Float.parseFloat(calzados.elementAt(i).getCosto()),
								empleado,
								calzados.elementAt(i).getArreglos()
								);
						calzadosConfirmados.add(c);
					}				
				
					// Creo la boleta
					Boleta boleta = new Boleta(cliente, Float.parseFloat(montoTotal.getText()), Float.parseFloat(seña.getText()), fecha, calzadosConfirmados);
				
					if(boleta != null) { 
						JOptionPane.showMessageDialog(null, "Boleta generada con éxito");
						dispose(); 
						Menu.getInstancia().setVisible(true);
						Menu.getInstancia().setLocationRelativeTo(null);
					}
				}
			}
		});
		btnAceptar.setBounds(226, 379, 89, 23);
		contentPane.add(btnAceptar);
		
		
		
		DefaultListModel<String> model = new DefaultListModel<>();
		JList<String> list = new JList<>( model );
		list.setBounds(74, 191, 346, 111);
		contentPane.add(list);
		
		float total = 0;
		String datos="";
		for ( int i = 0; i < calzados.size(); i++ ){
			datos="Código: " + calzados.elementAt(i).getCodigo()+"- Arreglos: " ;
			for(int j = 0; j < calzados.elementAt(i).getArreglos().size(); j++)
				datos+= calzados.elementAt(i).getArreglos().elementAt(j).getNombre();
		  total += Float.parseFloat(calzados.elementAt(i).getCosto());
		  model.addElement(datos);
		}
		importe.setText(Float.toString(total));
		
		JScrollPane scrollPane = new JScrollPane(list);
		scrollPane.setBounds(74, 190, 350, 111);
		contentPane.add(scrollPane);
		
		
		
		
	}
}
