Gestión de Pedidos en Java y MySQL con ClasePedido
Gestión de Pedidos en Java con MySQL y Swing
La clase ClasePedido permite gestionar pedidos, interactuar con bases de datos relacionales MySQL a través de JDBC y vincular los datos con componentes gráficos de Java Swing mediante DefaultTableModel.
Código Fuente de ClasePedido
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.table.*;
public class ClasePedido {
private static Connection cn = null;
private Statement st = null;
private ResultSet rs = null;
beanClientes cliente = new beanClientes();
DefaultTableModel datos = new DefaultTableModel();
beanProductos productos = new beanProductos();
public void conectar(String base, String usuario, String clave) {
try {
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
base = "jdbc:mysql://localhost:3306/" + base;
cn = DriverManager.getConnection(base, usuario, clave);
cliente.EnlasaBeanClientes(cn);
productos.EnlasaBeanProductos(cn);
} catch (SQLException ex) {
Logger.getLogger(ClasePedido.class.getName()).log(Level.SEVERE, null, ex);
}
}
public DefaultTableModel iniciarDetalles() {
datos = new DefaultTableModel();
datos.addColumn("CODIGO");
datos.addColumn("PRODUCTO");
datos.addColumn("TAMAÑO");
datos.addColumn("PRECIO");
datos.addColumn("CANTIDAD");
datos.addColumn("IMPORTE");
return datos;
}
public String agregaDetalles(String cod, String nom, String tam, String pre, String cant, String tot) {
String imp;
imp = String.valueOf(Double.parseDouble(pre) * Double.parseDouble(cant));
tot = String.valueOf(Double.parseDouble(imp) + Double.parseDouble(tot));
String fila[] = {cod, nom, tam, pre, cant, imp};
datos.addRow(fila);
return tot;
}
public String generarNroPedido() {
String nro = "";
int n = 0;
try {
st = cn.createStatement();
rs = st.executeQuery("select max(nropedido) from pedidos");
if (rs.next()) {
n = rs.getInt(1) + 1;
nro = "00000" + n;
nro = nro.substring(nro.length() - 6, nro.length());
}
} catch (SQLException ex) {
Logger.getLogger(ClasePedido.class.getName()).log(Level.SEVERE, null, ex);
}
return nro;
}
public String fechaPedido() {
Calendar calendario = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
String dia;
dia = sdf.format(calendario.getTime());
return dia;
}
public int grabarPedido(String nro, String codcli, String fecha, String tot) {
int n = 0, filas;
String codpro, tam, prec, cant, impo, cadena;
try {
st = cn.createStatement();
n = st.executeUpdate("insert into pedidos values('" + nro + "','" + codcli + "','" + fecha + "','" + tot + "','Pendiente')");
if (n > 0) {
filas = datos.getRowCount();
for (int k = 0; k < filas; k++) {
codpro = datos.getValueAt(k, 0).toString();
tam = datos.getValueAt(k, 2).toString();
prec = datos.getValueAt(k, 3).toString();
cant = datos.getValueAt(k, 4).toString();
impo = datos.getValueAt(k, 5).toString();
cadena = "insert into detalles values('" + nro + "','" + codpro + "','" + tam + "','" + cant + "','" + impo + "')";
n = st.executeUpdate(cadena);
}
}
} catch (SQLException ex) {
Logger.getLogger(ClasePedido.class.getName()).log(Level.SEVERE, null, ex);
}
return n;
}
}Componentes y Funcionalidades Principales
- conectar: Inicializa el controlador JDBC y establece la conexión con el servidor MySQL local.
- iniciarDetalles: Estructura las columnas base para el modelo de datos tabular (DefaultTableModel).
- agregaDetalles: Calcula subtotales, actualiza el acumulador global y agrega filas a la tabla.
- generarNroPedido: Consulta el último número de pedido y genera un correlativo formateado a 6 dígitos con ceros a la izquierda.
- fechaPedido: Obtiene la fecha actual del sistema con formato
dd/MM/yyyy. - grabarPedido: Inserta la cabecera en la tabla
pedidose itera los ítems agregados para registrar los registros correspondientes en la tabladetalles.