Almacen.consultaPartidaPedido.java Source code

Java tutorial

Introduction

Here is the source code for Almacen.consultaPartidaPedido.java

Source

/*
 * 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);
        }
    }
}