Java tutorial
/* * 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 Almacen; import Hibernate.Util.HibernateUtil; import Hibernate.entidades.Almacen; import Hibernate.entidades.Movimiento; import Hibernate.entidades.Partida; import Hibernate.entidades.PartidaExterna; import Hibernate.entidades.Pedido; import Hibernate.entidades.Usuario; import Integral.FormatoEditor; import java.awt.Color; import java.awt.event.KeyEvent; import java.util.ArrayList; import java.util.List; import javax.swing.JOptionPane; import javax.swing.KeyStroke; import javax.swing.ListSelectionModel; import javax.swing.table.DefaultTableModel; import javax.swing.table.JTableHeader; import javax.swing.table.TableColumn; import javax.swing.table.TableColumnModel; import org.hibernate.Query; import org.hibernate.Session; import Integral.FormatoTabla; import Integral.Herramientas; import Integral.Render1; import javax.swing.SwingConstants; import javax.swing.table.DefaultTableCellRenderer; import org.hibernate.criterion.Restrictions; /** * * @author ESPECIALIZADO TOLUCA */ public class consultaPartidaPedido extends javax.swing.JDialog { public static final List RET_CANCEL = null; Pedido pedido; Herramientas h; String sessionPrograma; Usuario usr; consultaPartidaPedido.MyModel model; FormatoTabla formato; private String orden = ""; String[] columnas = new String[] { "Id", "N", "#", "N Parte", "Descripcin", "Medida", "Pedido", "Costo c/u" };// , "OK"};//para antes de entrada /** * Creates new form consultaPartidaPedido */ public consultaPartidaPedido(java.awt.Frame parent, boolean modal, Pedido ped, Usuario usuario) { super(parent, modal); initComponents(); getRootPane().setDefaultButton(ok); pedido = ped; usr = usuario; Class[] types = new Class[] { java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.Double.class, java.lang.Double.class //java.lang.Boolean.class//para antes de entrada }; model = new MyModel(0, columnas, types); t_datos.setModel(model); t_datos.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); formato = new FormatoTabla(); } public void formatoTabla(String tipo, String valor, String movimiento) { Color c1 = new java.awt.Color(2, 135, 242); for(int x=0; x<t_datos.getColumnModel().getColumnCount(); x++) { t_datos.getColumnModel().getColumn(x).setHeaderRenderer(new Render1(c1)); } tabla_tamaos(tipo, valor, movimiento); t_datos.setShowVerticalLines(true); t_datos.setShowHorizontalLines(true); t_datos.setDefaultRenderer(Double.class, formato); t_datos.setDefaultRenderer(Integer.class, formato); t_datos.setDefaultRenderer(String.class, formato); t_datos.setDefaultRenderer(Boolean.class, formato); } private void doClose(List o) { returnStatus = o; setVisible(false); dispose(); } public List getReturnStatus() { return returnStatus; } /** * 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() { jPanel1 = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); t_pedido = new javax.swing.JTextField(); jScrollPane4 = new javax.swing.JScrollPane(); t_datos = new javax.swing.JTable(); ok = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("Bsqueda Partida Pedido"); jPanel1.setBackground(new java.awt.Color(250, 250, 250)); jPanel1.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0), 1, true)); jLabel1.setText("N Pedido: "); t_pedido.setEnabled(false); t_datos.setModel(new javax.swing.table.DefaultTableModel(new Object[][] { }, new String[] { "N", "#", "N Parte", "Descripcin", "Pedido", "Medida", "X Surtir", "Cantidad", "Costo c/u", "Total" })); t_datos.setAutoscrolls(false); t_datos.setCellSelectionEnabled(false); t_datos.setRowSelectionAllowed(true); t_datos.getTableHeader().setReorderingAllowed(false); t_datos.addKeyListener(new java.awt.event.KeyAdapter() { public void keyTyped(java.awt.event.KeyEvent evt) { t_datosKeyTyped(evt); } }); jScrollPane4.setViewportView(t_datos); t_datos.getColumnModel().getSelectionModel() .setSelectionMode(javax.swing.ListSelectionModel.SINGLE_INTERVAL_SELECTION); ok.setBackground(new java.awt.Color(2, 135, 242)); ok.setMnemonic('s'); ok.setText("Seleccionar"); ok.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { okActionPerformed(evt); } }); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup(jPanel1Layout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 899, Short.MAX_VALUE) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup().addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(t_pedido, javax.swing.GroupLayout.PREFERRED_SIZE, 88, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, Short.MAX_VALUE)) .addGroup(jPanel1Layout.createSequentialGroup().addGap(0, 0, Short.MAX_VALUE) .addComponent(ok))) .addContainerGap())); jPanel1Layout.setVerticalGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup().addContainerGap() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel1).addComponent(t_pedido, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jScrollPane4, javax.swing.GroupLayout.PREFERRED_SIZE, 296, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(ok) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(jPanel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)); layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent( jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)); pack(); }// </editor-fold>//GEN-END:initComponents private void okActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okActionPerformed // TODO add your handling code here: if (t_datos.getSelectedRows().length >= 0) { List datos = new ArrayList(); int renglones[] = t_datos.getSelectedRows(); for (int x = 0; x < renglones.length; x++) { List aux = new ArrayList(); for (int c = 0; c < t_datos.getColumnCount(); c++) { aux.add(t_datos.getValueAt(renglones[x], c)); } datos.add(aux); } doClose(datos); } else JOptionPane.showMessageDialog(null, "No hay una Partida seleccionada!"); }//GEN-LAST:event_okActionPerformed private void t_datosKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_t_datosKeyTyped // TODO add your handling code here: int code = evt.getKeyCode(); if (code == KeyEvent.VK_ENTER) { t_datos.getInputMap(t_datos.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT) .put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0, false), "selectColumnCell"); this.ok.requestFocus(); } }//GEN-LAST:event_t_datosKeyTyped /** * @param args the command line arguments */ // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JLabel jLabel1; private javax.swing.JPanel jPanel1; private javax.swing.JScrollPane jScrollPane4; private javax.swing.JButton ok; private javax.swing.JTable t_datos; public javax.swing.JTextField t_pedido; // End of variables declaration//GEN-END:variables private List returnStatus = RET_CANCEL; public void busca(String tipo, String valor, String movimiento) { Session session = HibernateUtil.getSessionFactory().openSession(); try { session.beginTransaction().begin(); if (tipo.compareTo("Pedido") == 0) { Pedido pedido = (Pedido) session.get(Pedido.class, Integer.parseInt(t_pedido.getText())); if (valor.compareTo("Interno") == 0) { session.beginTransaction().begin(); if (movimiento.compareTo("Entrada") == 0) { String[] columnas = new String[] { "Id", "N", "#", "N Parte", "Descripcin", "Medida", "Pedidos", "X Surtir", "Entrada", "Costo c/u", "Total" }; //,"OK"}; //para antes de entrada Class[] types = new Class[] { java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.Double.class, java.lang.Double.class, java.lang.Double.class, java.lang.Double.class, java.lang.Double.class //, java.lang.Boolean.class //para antes de entrada }; Query query = session.createQuery("SELECT DISTINCT par FROM Partida par " + "LEFT JOIN FETCH par.movimientos movPart " + "LEFT JOIN movPart.almacen alm " + "where par.pedido.idPedido=" + Integer.parseInt(t_pedido.getText())); //where alm.operacion=1 and //+ "and par.pedido!="+null); List partidas = query.list(); model = new MyModel(partidas.size(), columnas, types); t_datos.setModel(model); for (int a = 0; a < partidas.size(); a++) { Partida par = (Partida) partidas.get(a); Movimiento[] mov = (Movimiento[]) par.getMovimientos().toArray(new Movimiento[0]); double entradas = 0, devoluciones = 0; for (int b = 0; b < mov.length; b++) { Almacen alm = mov[b].getAlmacen(); if (alm.getTipoMovimiento() == 1 && alm.getOperacion() == 1) entradas += mov[b].getCantidad(); if (alm.getTipoMovimiento() == 2 && alm.getOperacion() == 1) devoluciones += mov[b].getCantidad(); } double total_almacen = entradas - devoluciones; double total = par.getCantPcp() - total_almacen; model.setValueAt(par.getIdPartida(), a, 0); model.setValueAt(par.getIdEvaluacion(), a, 1); model.setValueAt(par.getSubPartida(), a, 2); if (par.getEjemplar() != null) model.setValueAt(par.getEjemplar().getIdParte(), a, 3); else model.setValueAt("", a, 3); model.setValueAt(par.getCatalogo().getNombre(), a, 4); model.setValueAt(par.getMed(), a, 5); model.setValueAt(par.getCantPcp(), a, 6); model.setValueAt(total, a, 7); model.setValueAt(0.0d, a, 8); if (par.getPcp() != null) model.setValueAt(par.getPcp(), a, 9); else model.setValueAt(par.getPcp(), a, 9); model.setValueAt(0.0d, a, 10); //model.setValueAt(par.getOp(), a, 11); //para antes de entrada } } if (movimiento.compareTo("Salida") == 0) { String[] columnas = new String[] { "Id", "N", "#", "N Parte", "Descripcin", "Medida", "Pedidos", "En almacen", "Devolucin", "Costo c/u", "Total" }; Class[] types = new Class[] { java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.Double.class, java.lang.Double.class, java.lang.Double.class, java.lang.Double.class, java.lang.Double.class }; Query query = session.createQuery("SELECT DISTINCT par FROM Partida par " + "LEFT JOIN FETCH par.movimientos movPart " + "LEFT JOIN movPart.almacen alm " + "where alm.operacion=1 and par.pedido.idPedido=" + Integer.parseInt(t_pedido.getText())); //+ "and par.pedido!="+null); List partidas = query.list(); model = new MyModel(partidas.size(), columnas, types); t_datos.setModel(model); for (int a = 0; a < partidas.size(); a++) { Partida par = (Partida) partidas.get(a); Movimiento[] mov = (Movimiento[]) session.createCriteria(Movimiento.class) .add(Restrictions.eq("partida.idPartida", par.getIdPartida())).list() .toArray(new Movimiento[0]); double entradas = 0.0d, devoluciones = 0.0d, entregadas = 0.0d, devueltas = 0.0d; for (int b = 0; b < mov.length; b++) { Almacen alm = mov[b].getAlmacen(); if (alm.getTipoMovimiento() == 1 && alm.getOperacion() == 1) entradas += mov[b].getCantidad(); if (alm.getTipoMovimiento() == 2 && alm.getOperacion() == 1) devoluciones += mov[b].getCantidad(); if (alm.getTipoMovimiento() == 1 && alm.getOperacion() == 5) devueltas += mov[b].getCantidad(); if (alm.getTipoMovimiento() == 2 && alm.getOperacion() == 5) entregadas += mov[b].getCantidad(); } double total_Pedido = entradas - devoluciones; double total_operario = entregadas - devueltas; double total = total_Pedido - total_operario; model.setValueAt(par.getIdPartida(), a, 0); model.setValueAt(par.getIdEvaluacion(), a, 1); model.setValueAt(par.getSubPartida(), a, 2); if (par.getEjemplar() != null) model.setValueAt(par.getEjemplar().getIdParte(), a, 3); else model.setValueAt("", a, 3); model.setValueAt(par.getCatalogo().getNombre(), a, 4); model.setValueAt(par.getMed(), a, 5); model.setValueAt(par.getCantPcp(), a, 6); model.setValueAt(total, a, 7); model.setValueAt(0.0d, a, 8); if (par.getPcp() != null) model.setValueAt(par.getPcp(), a, 9); else model.setValueAt(par.getPcp(), a, 9); model.setValueAt(0.0d, a, 10); } } session.beginTransaction().commit(); } if (valor.compareTo("Externo") == 0) { try { session.beginTransaction().begin(); if (movimiento.compareTo("Entrada") == 0) { String[] columnas = new String[] { "Id", "N Parte", "Descripcin", "Medida", "Pedidos", "X Surtir", "Entrada", "Costo c/u", "Total" }; Class[] types = new Class[] { java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.Double.class, java.lang.Double.class, java.lang.Double.class, java.lang.Double.class, java.lang.Double.class }; Query query = session.createQuery("SELECT DISTINCT part FROM PartidaExterna part " + "where part.pedido.idPedido=" + Integer.parseInt(t_pedido.getText())); //+ "and part.pedido!="+null); List partidas = query.list(); model = new MyModel(partidas.size(), columnas, types); t_datos.setModel(model); for (int a = 0; a < partidas.size(); a++) { PartidaExterna par = (PartidaExterna) partidas.get(a); Movimiento[] mov = (Movimiento[]) par.getMovimientos().toArray(new Movimiento[0]); double entradas = 0.0d, devoluciones = 0.0d; for (int b = 0; b < mov.length; b++) { Almacen alm = mov[b].getAlmacen(); if (alm.getTipoMovimiento() == 1 && alm.getOperacion() == 2) entradas += mov[b].getCantidad(); if (alm.getTipoMovimiento() == 2 && alm.getOperacion() == 2) devoluciones += mov[b].getCantidad(); } double total_almacen = entradas - devoluciones; double total = par.getCantidad() - total_almacen; model.setValueAt(par.getIdPartidaExterna(), a, 0); if (par.getNoParte() != null) model.setValueAt(par.getNoParte(), a, 1); else model.setValueAt("", a, 1); model.setValueAt(par.getDescripcion(), a, 2); model.setValueAt(par.getUnidad(), a, 3); model.setValueAt(par.getCantidad(), a, 4); model.setValueAt(total, a, 5); model.setValueAt(0.0d, a, 6); model.setValueAt(par.getCosto(), a, 7); model.setValueAt(0.0d, a, 8); } } if (movimiento.compareTo("Salida") == 0) { String[] columnas = new String[] { "Id", "N Parte", "Descripcin", "Medida", "Pedidos", "En almacen", "Devolucin", "Costo c/u", "Total" }; Class[] types = new Class[] { java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.Double.class, java.lang.Double.class, java.lang.Double.class, java.lang.Double.class, java.lang.Double.class }; Query query = session.createQuery("SELECT DISTINCT part FROM PartidaExterna part " + "LEFT JOIN FETCH part.movimientos movPart " + "LEFT JOIN movPart.almacen alm " + "where alm.operacion=2 and part.pedido.idPedido=" + Integer.parseInt(t_pedido.getText())); //+ "and part.pedido!="+null); List partidas = query.list(); model = new MyModel(partidas.size(), columnas, types); t_datos.setModel(model); for (int a = 0; a < partidas.size(); a++) { PartidaExterna par = (PartidaExterna) partidas.get(a); Movimiento[] mov = (Movimiento[]) session .createCriteria(Movimiento.class).add(Restrictions .eq("partidaExterna.idPartidaExterna", par.getIdPartidaExterna())) .list().toArray(new Movimiento[0]); double entradas = 0, devoluciones = 0, entregadas = 0, devueltas = 0; ; for (int b = 0; b < mov.length; b++) { Almacen alm = mov[b].getAlmacen(); if (alm.getTipoMovimiento() == 1 && alm.getOperacion() == 2) entradas += mov[b].getCantidad(); if (alm.getTipoMovimiento() == 2 && alm.getOperacion() == 2) devoluciones += mov[b].getCantidad(); if (alm.getTipoMovimiento() == 1 && alm.getOperacion() == 6) devueltas += mov[b].getCantidad(); if (alm.getTipoMovimiento() == 2 && alm.getOperacion() == 6) entregadas += mov[b].getCantidad(); } double total_Pedido = entradas - devoluciones; double total_operario = entregadas - devueltas; double total = total_Pedido - total_operario; model.setValueAt(par.getIdPartidaExterna(), a, 0); if (par.getNoParte() != null) model.setValueAt(par.getNoParte(), a, 1); else model.setValueAt("", a, 1); model.setValueAt(par.getDescripcion(), a, 2); model.setValueAt(par.getUnidad(), a, 3); model.setValueAt(par.getCantidad(), a, 4); model.setValueAt(total, a, 5); model.setValueAt(0.0d, a, 6); if (par.getCosto() != null) model.setValueAt(par.getCosto(), a, 7); else model.setValueAt(0.0d, a, 7); model.setValueAt(0.0d, a, 8); } } session.beginTransaction().commit(); } catch (Exception e) { e.printStackTrace(); session.beginTransaction().rollback(); } finally { if (session.isOpen() == true) session.close(); } } if (valor.compareTo("Adicional") == 0) { try { session.beginTransaction().begin(); if (movimiento.compareTo("Entrada") == 0) { String[] columnas = new String[] { "Id", "N", "#", "N Parte", "Descripcin", "Medida", "Pedidos", "X Surtir", "Entrada", "Costo c/u", "Total" };//, "Ok"};//para antes de entrada Class[] types = new Class[] { java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.Double.class, java.lang.Double.class, java.lang.Double.class, java.lang.Double.class, java.lang.Double.class //, java.lang.Boolean.class //para antes de entrada }; Query query = session.createQuery("SELECT DISTINCT part FROM PartidaExterna part " + "where part.pedido.idPedido=" + Integer.parseInt(t_pedido.getText())); List partidas = query.list(); model = new MyModel(partidas.size(), columnas, types); t_datos.setModel(model); for (int a = 0; a < partidas.size(); a++) { PartidaExterna par = (PartidaExterna) partidas.get(a); Movimiento[] mov = (Movimiento[]) par.getMovimientos().toArray(new Movimiento[0]); double entradas = 0, devoluciones = 0; for (int b = 0; b < mov.length; b++) { Almacen alm = mov[b].getAlmacen(); if (alm.getTipoMovimiento() == 1 && alm.getOperacion() == 3) entradas += mov[b].getCantidad(); if (alm.getTipoMovimiento() == 2 && alm.getOperacion() == 3) devoluciones += mov[b].getCantidad(); } double total_almacen = entradas - devoluciones; double total = par.getCantidad() - total_almacen; model.setValueAt(par.getIdPartidaExterna(), a, 0); //model.setValueAt(par.getPedido().getPartida().getIdEvaluacion(), a, 1); //model.setValueAt(par.getPedido().getPartida().getSubPartida(), a, 2); model.setValueAt(0, a, 1); model.setValueAt(0, a, 2); if (par.getNoParte() != null) model.setValueAt(par.getNoParte(), a, 3); else model.setValueAt("", a, 3); //model.setValueAt(par.getPedido().getPartida().getCatalogo().getNombre()+"/"+par.getDescripcion(), a, 4); model.setValueAt(par.getDescripcion(), a, 4); model.setValueAt(par.getUnidad(), a, 5); model.setValueAt(par.getCantidad(), a, 6); model.setValueAt(total, a, 7); model.setValueAt(0.0d, a, 8); model.setValueAt(par.getCosto(), a, 9); model.setValueAt(0.0d, a, 10); //model.setValueAt(par.getOp(), a, 11); //para antes de entrada } } if (movimiento.compareTo("Salida") == 0) { String[] columnas = new String[] { "Id", "N", "#", "N Parte", "Descripcin", "Medida", "Pedidos", "En almacen", "Devolucin", "Costo c/u", "Total" }; Class[] types = new Class[] { java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.Double.class, java.lang.Double.class, java.lang.Double.class, java.lang.Double.class, java.lang.Double.class }; Query query = session.createQuery("SELECT DISTINCT part FROM PartidaExterna part " + "LEFT JOIN FETCH part.movimientos movPart " + "LEFT JOIN movPart.almacen alm " + "where alm.operacion=3 and part.pedido.idPedido=" + Integer.parseInt(t_pedido.getText()) + "and part.pedido!=" + null); List partidas = query.list(); model = new MyModel(partidas.size(), columnas, types); t_datos.setModel(model); for (int a = 0; a < partidas.size(); a++) { PartidaExterna par = (PartidaExterna) partidas.get(a); Movimiento[] mov = (Movimiento[]) session .createCriteria(Movimiento.class).add(Restrictions .eq("partidaExterna.idPartidaExterna", par.getIdPartidaExterna())) .list().toArray(new Movimiento[0]); double entradas = 0, devoluciones = 0, entregadas = 0, devueltas = 0; ; for (int b = 0; b < mov.length; b++) { Almacen alm = mov[b].getAlmacen(); if (alm.getTipoMovimiento() == 1 && alm.getOperacion() == 3) entradas += mov[b].getCantidad(); if (alm.getTipoMovimiento() == 2 && alm.getOperacion() == 3) devoluciones += mov[b].getCantidad(); if (alm.getTipoMovimiento() == 1 && alm.getOperacion() == 5) devueltas += mov[b].getCantidad(); if (alm.getTipoMovimiento() == 2 && alm.getOperacion() == 5) entregadas += mov[b].getCantidad(); } double total_Pedido = entradas - devoluciones; double total_operario = entregadas - devueltas; double total = total_Pedido - total_operario; model.setValueAt(par.getIdPartidaExterna(), a, 0); //model.setValueAt(par.getPedido().getPartida().getIdEvaluacion(), a, 1); //model.setValueAt(par.getPedido().getPartida().getSubPartida(), a, 2); model.setValueAt("", a, 1); model.setValueAt("", a, 2); if (par.getNoParte() != null) model.setValueAt(par.getNoParte(), a, 3); else model.setValueAt("", a, 3); //model.setValueAt(par.getPedido().getPartida().getCatalogo().getNombre()+"/"+par.getDescripcion(), a, 4); model.setValueAt(par.getDescripcion(), a, 4); model.setValueAt(par.getUnidad(), a, 5); model.setValueAt(par.getCantidad(), a, 6); model.setValueAt(total, a, 7); model.setValueAt(0.0d, a, 8); model.setValueAt(par.getCosto(), a, 9); model.setValueAt(0.0d, a, 10); } } session.beginTransaction().commit(); } catch (Exception e) { e.printStackTrace(); session.beginTransaction().rollback(); } finally { if (session.isOpen() == true) session.close(); } } } if (tipo.compareTo("Venta") == 0) { Pedido pedido = (Pedido) session.get(Pedido.class, Integer.parseInt(t_pedido.getText())); session.beginTransaction().begin(); if (movimiento.compareTo("Entrada") == 0) { Class[] types = new Class[] { java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.Double.class, java.lang.Double.class }; String[] columnas = new String[] { "Id", "N Parte", "Descripcin", "Medida", "Entregados", "Devueltos" }; Query query = session.createQuery("SELECT DISTINCT part FROM PartidaExterna part " + "LEFT JOIN FETCH part.movimientos movPart " + "LEFT JOIN movPart.almacen alm " + "where alm.operacion=2 and part.pedido.idPedido=" + Integer.parseInt(t_pedido.getText()) + "and part.pedido!=" + null); List partidas = query.list(); model = new MyModel(partidas.size(), columnas, types); t_datos.setModel(model); for (int a = 0; a < partidas.size(); a++) { PartidaExterna par = (PartidaExterna) partidas.get(a); Movimiento[] mov = (Movimiento[]) session.createCriteria(Movimiento.class) .add(Restrictions.eq("partidaExterna.idPartidaExterna", par.getIdPartidaExterna())) .list().toArray(new Movimiento[0]); double entregados = 0.0d, devoluciones = 0.0d; for (int b = 0; b < mov.length; b++) { Almacen alm = mov[b].getAlmacen(); if (alm.getTipoMovimiento() == 1 && alm.getOperacion() == 6) devoluciones += mov[b].getCantidad(); if (alm.getTipoMovimiento() == 2 && alm.getOperacion() == 6) entregados += mov[b].getCantidad(); } double total = entregados - devoluciones; model.setValueAt(par.getIdPartidaExterna(), a, 0); if (par.getNoParte() != null) model.setValueAt(par.getNoParte(), a, 1); else model.setValueAt("", a, 1); model.setValueAt(par.getDescripcion(), a, 2); model.setValueAt(par.getUnidad(), a, 3); model.setValueAt(total, a, 4); model.setValueAt(0.0d, a, 5); } } if (movimiento.compareTo("Salida") == 0) { Class[] types = new Class[] { java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.Double.class, java.lang.Double.class, java.lang.Double.class, java.lang.Double.class }; String[] columnas = new String[] { "Id", "N Parte", "Descripcin", "Medida", "Pedidos", "Entregadas", "Existencias", "Salida" }; Query query = session.createQuery("SELECT DISTINCT part FROM PartidaExterna part " + "LEFT JOIN FETCH part.movimientos movPart " + "LEFT JOIN movPart.almacen alm " + "where alm.operacion=2 and part.pedido.idPedido=" + Integer.parseInt(t_pedido.getText()) + "and part.pedido!=" + null); List partidas = query.list(); model = new MyModel(partidas.size(), columnas, types); t_datos.setModel(model); for (int a = 0; a < partidas.size(); a++) { PartidaExterna par = (PartidaExterna) partidas.get(a); Movimiento[] mov = (Movimiento[]) session.createCriteria(Movimiento.class) .add(Restrictions.eq("partidaExterna.idPartidaExterna", par.getIdPartidaExterna())) .list().toArray(new Movimiento[0]); double entradas = 00.d, devoluciones = 0.0d, entregadas = 0.0d, devueltas = 0.0d; for (int b = 0; b < mov.length; b++) { Almacen alm = mov[b].getAlmacen(); if (alm.getTipoMovimiento() == 1 && alm.getOperacion() == 2) entradas += mov[b].getCantidad(); if (alm.getTipoMovimiento() == 2 && alm.getOperacion() == 2) devoluciones += mov[b].getCantidad(); if (alm.getTipoMovimiento() == 1 && alm.getOperacion() == 6) devueltas += mov[b].getCantidad(); if (alm.getTipoMovimiento() == 2 && alm.getOperacion() == 6) entregadas += mov[b].getCantidad(); } double total_Existencias = entradas - devoluciones; double total_cliente = entregadas - devueltas; double total = total_Existencias - total_cliente; model.setValueAt(par.getIdPartidaExterna(), a, 0); if (par.getNoParte() != null) model.setValueAt(par.getNoParte(), a, 1); else model.setValueAt("", a, 1); model.setValueAt(par.getDescripcion(), a, 2); model.setValueAt(par.getUnidad(), a, 3); model.setValueAt(par.getCantidad(), a, 4); model.setValueAt(total_cliente, a, 5); model.setValueAt(total, a, 6); model.setValueAt(0.0d, a, 7); } } session.beginTransaction().commit(); } } catch (Exception e) { e.printStackTrace(); } if (session != null) if (session.isOpen()) session.close(); formatoTabla(tipo, valor, movimiento); } private void tabla_tamaos(String tipo, String valor, String movimiento) { TableColumnModel col_model = t_datos.getColumnModel(); DefaultTableCellRenderer tcr = new DefaultTableCellRenderer(); tcr.setHorizontalAlignment(SwingConstants.RIGHT); FormatoEditor fe=new FormatoEditor(); t_datos.setDefaultEditor(Double.class, fe); for (int i=0; i<t_datos.getColumnCount(); i++) { TableColumn column = col_model.getColumn(i); switch(i) { case 0: column.setPreferredWidth(10); break; case 1: if( (tipo.compareTo("Pedido")==0 && valor.compareTo("Externo")==0) || (tipo.compareTo("Venta")==0) ) column.setPreferredWidth(100); else column.setPreferredWidth(10); break; case 2: if( (tipo.compareTo("Pedido")==0 && valor.compareTo("Externo")==0) || (tipo.compareTo("Venta")==0) ) column.setPreferredWidth(350); else column.setPreferredWidth(10); break; case 3: if( (tipo.compareTo("Pedido")==0 && valor.compareTo("Externo")==0) || (tipo.toString().compareTo("Venta")==0) ) column.setPreferredWidth(20); else column.setPreferredWidth(100); break; case 4: if( (tipo.compareTo("Pedido")==0 && valor.compareTo("Externo")==0) || (tipo.compareTo("Venta")==0) ) column.setPreferredWidth(50); else column.setPreferredWidth(350); break; case 5: column.setPreferredWidth(50); break; case 6: column.setPreferredWidth(50); break; case 7: column.setPreferredWidth(50); break; case 8: column.setPreferredWidth(50); break; default: column.setPreferredWidth(50); break; } } JTableHeader header = t_datos.getTableHeader(); header.setBackground(new java.awt.Color(90,66,126)); header.setForeground(Color.white); } public class MyModel extends DefaultTableModel { Class[] types; int ren = 0; int col = 0; private List celdaEditable; public MyModel(int renglones, String columnas[], Class[] tipos) { types = tipos; ren = renglones; col = columnas.length; celdaEditable = new ArrayList(); for (int x = 0; x < renglones; x++) { List aux = new ArrayList(); for (int y = 0; y < types.length; y++) aux.add(false); celdaEditable.add(aux); } setDataVector(new Object[renglones][columnas.length], columnas); } @Override public boolean isCellEditable(int rowIndex, int columnIndex) { List aux = (List) celdaEditable.get(rowIndex); return (boolean) aux.get(columnIndex); } } }