Package totalpos

Source Code of totalpos.ManageItem

/*
* ManageItem.java
*
* Created on 25-jul-2011, 8:37:58
*/

package totalpos;

import java.awt.Window;
import java.awt.event.KeyEvent;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

/**
*
* @author shidalgo
*/
public class ManageItem extends JInternalFrame implements Doer {

    private List<Item> items;
    private List<Item> toPrint = new ArrayList<Item>();
    private List<Integer> quantToPrint = new ArrayList<Integer>();
    public boolean isOk = false;
    public Working workingFrame;

    /** Creates new form ManageItem */
    public ManageItem() {
        initComponents();
        System.out.println("[" + Shared.now() + "] " + this.getClass().getName() + " " + Shared.lineNumber() " Constructor invocado");
        updateAll();
    }

    private void updateItems(){
        try {
            System.out.println("[" + Shared.now() + "] " + this.getClass().getName() + " " + Shared.lineNumber() " Actualizar articulos");
            items = ConnectionDrivers.listItems(barCodeField.getText(),
                    codigoField.getText() , descriptionField.getText() , modeloField.getText() );
        } catch (SQLException ex) {
            MessageBox msb = new MessageBox(MessageBox.SGN_IMPORTANT, "Problemas con la base de datos.",ex);
            msb.show(this);
            this.dispose();
            Shared.reload();
        } catch (Exception ex) {
            MessageBox msb = new MessageBox(MessageBox.SGN_IMPORTANT, "Problemas al listar los artículos.",ex);
            msb.show(this);
            this.dispose();
            Shared.reload();
        }
       
    }

    private void updateTable(){
        System.out.println("[" + Shared.now() + "] " + this.getClass().getName() + " " + Shared.lineNumber() " Actualizar tabla");
        DefaultTableModel model = (DefaultTableModel) itemTable.getModel();

        model.setRowCount(0);

        for (Item item : items) {
            String s[] = {item.getCode(),item.getDescription(),item.getModel(),Shared.df.format(Math.round(item.getLastPrice().plusIva().withDiscount(item.getDescuento()).getQuant())),item.getDescuento()+"",item.getCurrentStock()+""};
            //System.out.println("Precio = " + Math.round(item.getLastPrice().plusIva().withDiscount(item.getDescuento()).getQuant())+"");
            model.addRow(s);
        }
       
    }

   

    /** 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() {

        jLabel1 = new javax.swing.JLabel();
        filterPanel = new javax.swing.JPanel();
        codigoField = new javax.swing.JTextField();
        codigoLabel = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        modeloField = new javax.swing.JTextField();
        descriptionField = new javax.swing.JTextField();
        jLabel4 = new javax.swing.JLabel();
        barCodeField = new javax.swing.JTextField();
        imagePanel = new javax.swing.JPanel();
        imageLabel = new javax.swing.JLabel();
        jPanel2 = new javax.swing.JPanel();
        printLabels = new javax.swing.JButton();
        jScrollPane2 = new javax.swing.JScrollPane();
        stickerTable = new javax.swing.JTable();
        deleteAll = new javax.swing.JButton();
        deleteItem = new javax.swing.JButton();
        jPanel3 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        itemTable = new javax.swing.JTable();
        addSticker = new javax.swing.JButton();
        addQuant1 = new javax.swing.JButton();
        clearFields = new javax.swing.JButton();

        setClosable(true);
        setIconifiable(true);
        setMaximizable(true);
        setResizable(true);
        setTitle("Artículos");
        setMinimumSize(new java.awt.Dimension(739, 580));
        addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseReleased(java.awt.event.MouseEvent evt) {
                formMouseReleased(evt);
            }
        });
        addComponentListener(new java.awt.event.ComponentAdapter() {
            public void componentResized(java.awt.event.ComponentEvent evt) {
                formComponentResized(evt);
            }
        });
        addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
            public void mouseMoved(java.awt.event.MouseEvent evt) {
                formMouseMoved(evt);
            }
        });

        jLabel1.setFont(new java.awt.Font("Courier New", 1, 18));
        jLabel1.setText("Artículos");
        jLabel1.setName("jLabel1"); // NOI18N

        filterPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Filtros", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Courier New", 0, 11))); // NOI18N
        filterPanel.setName("filterPanel"); // NOI18N

        codigoField.setName("codigoField"); // NOI18N
        codigoField.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                codigoFieldKeyPressed(evt);
            }
        });

        codigoLabel.setFont(new java.awt.Font("Courier New", 0, 12));
        codigoLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/totalpos/resources/Etiquetas 2x.jpg"))); // NOI18N
        codigoLabel.setText("Código");
        codigoLabel.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        codigoLabel.setName("codigoLabel"); // NOI18N

        jLabel2.setFont(new java.awt.Font("Courier New", 0, 12));
        jLabel2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/totalpos/resources/Etiquetas 2x.jpg"))); // NOI18N
        jLabel2.setText("Modelo");
        jLabel2.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jLabel2.setName("jLabel2"); // NOI18N

        jLabel3.setFont(new java.awt.Font("Courier New", 0, 12));
        jLabel3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/totalpos/resources/Etiquetas 2x.jpg"))); // NOI18N
        jLabel3.setText("Descripción");
        jLabel3.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jLabel3.setName("jLabel3"); // NOI18N

        modeloField.setName("modeloField"); // NOI18N
        modeloField.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                modeloFieldKeyPressed(evt);
            }
        });

        descriptionField.setName("descriptionField"); // NOI18N
        descriptionField.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                descriptionFieldKeyPressed(evt);
            }
        });

        jLabel4.setFont(new java.awt.Font("Courier New", 0, 12));
        jLabel4.setIcon(new javax.swing.ImageIcon(getClass().getResource("/totalpos/resources/Etiquetas 2x.jpg"))); // NOI18N
        jLabel4.setText("Código de Barra");
        jLabel4.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jLabel4.setName("jLabel4"); // NOI18N

        barCodeField.setName("barCodeField"); // NOI18N
        barCodeField.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                barCodeFieldKeyPressed(evt);
            }
        });

        javax.swing.GroupLayout filterPanelLayout = new javax.swing.GroupLayout(filterPanel);
        filterPanel.setLayout(filterPanelLayout);
        filterPanelLayout.setHorizontalGroup(
            filterPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(filterPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(filterPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(codigoLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(filterPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(codigoField, javax.swing.GroupLayout.DEFAULT_SIZE, 515, Short.MAX_VALUE)
                    .addComponent(modeloField, javax.swing.GroupLayout.DEFAULT_SIZE, 515, Short.MAX_VALUE)
                    .addComponent(descriptionField, javax.swing.GroupLayout.DEFAULT_SIZE, 515, Short.MAX_VALUE)
                    .addComponent(barCodeField, javax.swing.GroupLayout.DEFAULT_SIZE, 515, Short.MAX_VALUE))
                .addContainerGap())
        );
        filterPanelLayout.setVerticalGroup(
            filterPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(filterPanelLayout.createSequentialGroup()
                .addGroup(filterPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(filterPanelLayout.createSequentialGroup()
                        .addComponent(codigoLabel)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jLabel2)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jLabel3)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jLabel4))
                    .addGroup(filterPanelLayout.createSequentialGroup()
                        .addComponent(codigoField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(modeloField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(descriptionField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(barCodeField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        imagePanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Foto"));
        imagePanel.setName("imagePanel"); // NOI18N

        imageLabel.setName("imageLabel"); // NOI18N
        imageLabel.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
            public void mouseMoved(java.awt.event.MouseEvent evt) {
                imageLabelMouseMoved(evt);
            }
        });

        javax.swing.GroupLayout imagePanelLayout = new javax.swing.GroupLayout(imagePanel);
        imagePanel.setLayout(imagePanelLayout);
        imagePanelLayout.setHorizontalGroup(
            imagePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(imageLabel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 339, Short.MAX_VALUE)
        );
        imagePanelLayout.setVerticalGroup(
            imagePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(imageLabel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 244, Short.MAX_VALUE)
        );

        jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Etiquetas"));
        jPanel2.setName("jPanel2"); // NOI18N

        printLabels.setText("Imprimir");
        printLabels.setName("printLabels"); // NOI18N
        printLabels.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                printLabelsActionPerformed(evt);
            }
        });

        jScrollPane2.setName("jScrollPane2"); // NOI18N

        stickerTable.setFont(new java.awt.Font("Courier New", 0, 11));
        stickerTable.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Código", "Modelo", "Precio Actual", "Cantidad Etiquetas"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Integer.class
            };
            boolean[] canEdit = new boolean [] {
                false, false, false, true
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        stickerTable.setToolTipText("Puede cambiar la cantidad editando el campo");
        stickerTable.setName("stickerTable"); // NOI18N
        stickerTable.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        stickerTable.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                stickerTableMouseClicked(evt);
            }
            public void mousePressed(java.awt.event.MouseEvent evt) {
                stickerTableMousePressed(evt);
            }
            public void mouseReleased(java.awt.event.MouseEvent evt) {
                stickerTableMouseReleased(evt);
            }
        });
        stickerTable.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
            public void mouseMoved(java.awt.event.MouseEvent evt) {
                stickerTableMouseMoved(evt);
            }
        });
        stickerTable.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusLost(java.awt.event.FocusEvent evt) {
                stickerTableFocusLost(evt);
            }
        });
        stickerTable.addInputMethodListener(new java.awt.event.InputMethodListener() {
            public void caretPositionChanged(java.awt.event.InputMethodEvent evt) {
            }
            public void inputMethodTextChanged(java.awt.event.InputMethodEvent evt) {
                stickerTableInputMethodTextChanged(evt);
            }
        });
        stickerTable.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
            public void propertyChange(java.beans.PropertyChangeEvent evt) {
                stickerTablePropertyChange(evt);
            }
        });
        stickerTable.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                stickerTableKeyPressed(evt);
            }
        });
        stickerTable.addVetoableChangeListener(new java.beans.VetoableChangeListener() {
            public void vetoableChange(java.beans.PropertyChangeEvent evt)throws java.beans.PropertyVetoException {
                stickerTableVetoableChange(evt);
            }
        });
        jScrollPane2.setViewportView(stickerTable);

        deleteAll.setText("Eliminar Todas");
        deleteAll.setToolTipText("Elimina todas las etiquetas");
        deleteAll.setName("deleteAll"); // NOI18N
        deleteAll.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                deleteAllActionPerformed(evt);
            }
        });

        deleteItem.setText("Borrar");
        deleteItem.setToolTipText("Borra la etiqueta seleccionada");
        deleteItem.setName("deleteItem"); // NOI18N
        deleteItem.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                deleteItemActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jScrollPane2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 319, Short.MAX_VALUE)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addComponent(deleteAll, javax.swing.GroupLayout.PREFERRED_SIZE, 119, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(deleteItem, javax.swing.GroupLayout.DEFAULT_SIZE, 101, Short.MAX_VALUE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(printLabels, javax.swing.GroupLayout.PREFERRED_SIZE, 87, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap())
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
                .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 161, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(printLabels)
                    .addComponent(deleteAll)
                    .addComponent(deleteItem))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Detalles"));
        jPanel3.setName("jPanel3"); // NOI18N

        jScrollPane1.setName("jScrollPane1"); // NOI18N

        itemTable.setFont(new java.awt.Font("Courier New", 0, 11)); // NOI18N
        itemTable.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null, null, null},
                {null, null, null, null, null, null},
                {null, null, null, null, null, null},
                {null, null, null, null, null, null}
            },
            new String [] {
                "Código", "Descripción", "Modelo", "Precio Venta", "Descuento", "Existencia"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, false, false, false, false, false
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        itemTable.setName("itemTable"); // NOI18N
        itemTable.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        itemTable.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                itemTableMouseClicked(evt);
            }
            public void mousePressed(java.awt.event.MouseEvent evt) {
                itemTableMousePressed(evt);
            }
            public void mouseReleased(java.awt.event.MouseEvent evt) {
                itemTableMouseReleased(evt);
            }
        });
        itemTable.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
            public void mouseMoved(java.awt.event.MouseEvent evt) {
                itemTableMouseMoved(evt);
            }
        });
        itemTable.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                itemTableKeyPressed(evt);
            }
            public void keyReleased(java.awt.event.KeyEvent evt) {
                itemTableKeyReleased(evt);
            }
        });
        jScrollPane1.setViewportView(itemTable);
        itemTable.getColumnModel().getColumn(1).setPreferredWidth(300);
        itemTable.getColumnModel().getColumn(2).setPreferredWidth(50);
        itemTable.getColumnModel().getColumn(3).setPreferredWidth(20);
        itemTable.getColumnModel().getColumn(4).setPreferredWidth(20);
        itemTable.getColumnModel().getColumn(5).setPreferredWidth(20);

        addSticker.setText(" F8 / Agregar a las etiquetas");
        addSticker.setFocusable(false);
        addSticker.setName("addSticker"); // NOI18N
        addSticker.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                addStickerActionPerformed(evt);
            }
        });

        addQuant1.setText("F7 / Agregar 1 etiqueta");
        addQuant1.setFocusable(false);
        addQuant1.setName("addQuant1"); // NOI18N
        addQuant1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                addQuant1ActionPerformed(evt);
            }
        });

        clearFields.setText("F12 / Limpiar Campos");
        clearFields.setFocusable(false);
        clearFields.setName("clearFields"); // NOI18N
        clearFields.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                clearFieldsActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
        jPanel3.setLayout(jPanel3Layout);
        jPanel3Layout.setHorizontalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 735, Short.MAX_VALUE)
                    .addGroup(jPanel3Layout.createSequentialGroup()
                        .addComponent(clearFields, javax.swing.GroupLayout.PREFERRED_SIZE, 170, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(addQuant1, javax.swing.GroupLayout.PREFERRED_SIZE, 162, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(addSticker)))
                .addContainerGap())
        );
        jPanel3Layout.setVerticalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 285, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(addSticker)
                    .addComponent(addQuant1)
                    .addComponent(clearFields))
                .addContainerGap())
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel1)
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(filterPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jPanel3, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(imagePanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(filterPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addComponent(imagePanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap())
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void codigoFieldKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_codigoFieldKeyPressed
        Shared.getScreenSaver().actioned();
        if ( evt.getKeyCode() == KeyEvent.VK_ENTER ){
            updateAll();
        }else if ( evt.getKeyCode() == KeyEvent.VK_ESCAPE ){
            this.dispose();
        }else if ( evt.getKeyCode() == KeyEvent.VK_F12 ){
            clearFields();
        }else if ( evt.getKeyCode() == KeyEvent.VK_F8 ){
            addSeveralTickets();
        }else if ( evt.getKeyCode() == KeyEvent.VK_F7 ){
            add1Quant();
        }
    }//GEN-LAST:event_codigoFieldKeyPressed

    private void modeloFieldKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_modeloFieldKeyPressed
        Shared.getScreenSaver().actioned();
        if ( evt.getKeyCode() == KeyEvent.VK_ENTER ){
            updateAll();
        }else if ( evt.getKeyCode() == KeyEvent.VK_ESCAPE ){
            this.dispose();
        } else if ( evt.getKeyCode() == KeyEvent.VK_F12 ){
            clearFields();
        }else if ( evt.getKeyCode() == KeyEvent.VK_F8 ){
            addSeveralTickets();
        }else if ( evt.getKeyCode() == KeyEvent.VK_F7 ){
            add1Quant();
        }
    }//GEN-LAST:event_modeloFieldKeyPressed

    private void descriptionFieldKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_descriptionFieldKeyPressed
        Shared.getScreenSaver().actioned();
        if ( evt.getKeyCode() == KeyEvent.VK_ENTER ){
            updateAll();
        }else if ( evt.getKeyCode() == KeyEvent.VK_ESCAPE ){
            this.dispose();
        } else if ( evt.getKeyCode() == KeyEvent.VK_F12 ){
            clearFields();
        }else if ( evt.getKeyCode() == KeyEvent.VK_F8 ){
            addSeveralTickets();
        }else if ( evt.getKeyCode() == KeyEvent.VK_F7 ){
            add1Quant();
        }
    }//GEN-LAST:event_descriptionFieldKeyPressed

    private void barCodeFieldKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_barCodeFieldKeyPressed
        Shared.getScreenSaver().actioned();
        if ( evt.getKeyCode() == KeyEvent.VK_ENTER ){
            updateAll();
        }else if ( evt.getKeyCode() == KeyEvent.VK_ESCAPE ){
            this.dispose();
        } else if ( evt.getKeyCode() == KeyEvent.VK_F12 ){
            clearFields();
        }else if ( evt.getKeyCode() == KeyEvent.VK_F8 ){
            addSeveralTickets();
        }else if ( evt.getKeyCode() == KeyEvent.VK_F7 ){
            add1Quant();
        }
    }//GEN-LAST:event_barCodeFieldKeyPressed

    private void itemTableKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_itemTableKeyPressed
        Shared.getScreenSaver().actioned();
        if ( evt.getKeyCode() == KeyEvent.VK_F7 ){
            add1Quant();
        }else if ( evt.getKeyCode() == KeyEvent.VK_F12 ){
            clearFields();
        }else if ( evt.getKeyCode() == KeyEvent.VK_F8 ){
            addSeveralTickets();
        }else if ( evt.getKeyCode() == KeyEvent.VK_F7 ){
            addSeveralTickets();
        }
    }//GEN-LAST:event_itemTableKeyPressed

    private void itemTableMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_itemTableMouseClicked
        Shared.getScreenSaver().actioned();
    }//GEN-LAST:event_itemTableMouseClicked

    private void itemTableMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_itemTableMousePressed
        Shared.getScreenSaver().actioned();
    }//GEN-LAST:event_itemTableMousePressed

    private void itemTableMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_itemTableMouseReleased
        loadImage();
    }//GEN-LAST:event_itemTableMouseReleased

    private void printLabelsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_printLabelsActionPerformed
        workingFrame = new Working((JFrame)Shared.getMyMainWindows());

        WaitSplash ws = new WaitSplash(this);

        Shared.centerFrame(workingFrame);
        workingFrame.setVisible(true);

        ws.execute();
    }//GEN-LAST:event_printLabelsActionPerformed

    private void itemTableKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_itemTableKeyReleased
        loadImage();
    }//GEN-LAST:event_itemTableKeyReleased

    private void formMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_formMouseMoved
        Shared.getScreenSaver().actioned();
    }//GEN-LAST:event_formMouseMoved

    private void itemTableMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_itemTableMouseMoved
        Shared.getScreenSaver().actioned();
    }//GEN-LAST:event_itemTableMouseMoved

    private void imageLabelMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_imageLabelMouseMoved
        Shared.getScreenSaver().actioned();
    }//GEN-LAST:event_imageLabelMouseMoved

    private void stickerTableMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_stickerTableMouseClicked
        Shared.getScreenSaver().actioned();
    }//GEN-LAST:event_stickerTableMouseClicked

    private void stickerTableMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_stickerTableMousePressed
        Shared.getScreenSaver().actioned();
    }//GEN-LAST:event_stickerTableMousePressed

    private void stickerTableMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_stickerTableMouseReleased
        Shared.getScreenSaver().actioned();
    }//GEN-LAST:event_stickerTableMouseReleased

    private void stickerTableMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_stickerTableMouseMoved
        Shared.getScreenSaver().actioned();
    }//GEN-LAST:event_stickerTableMouseMoved

    private void stickerTableKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_stickerTableKeyPressed
        Shared.getScreenSaver().actioned();
        DefaultTableModel model = (DefaultTableModel) stickerTable.getModel();
        for (int i = 0; i < quantToPrint.size(); i++) {
            quantToPrint.set(i, Integer.parseInt((String) model.getValueAt(i, 3)));
        }
        if ( evt.getKeyChar() == KeyEvent.VK_BACK_SPACE ){
            int n = stickerTable.getSelectedRow();
            if ( n != -1 ){
                model = (DefaultTableModel) stickerTable.getModel();
                model.removeRow(n);
                toPrint.remove(n);
                quantToPrint.remove(n);
            }
        }
    }//GEN-LAST:event_stickerTableKeyPressed

    private void addStickerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addStickerActionPerformed
        addSeveralTickets();
    }//GEN-LAST:event_addStickerActionPerformed

    private void addSeveralTickets(){
        System.out.println("[" + Shared.now() + "] " + this.getClass().getName() + " " + Shared.lineNumber() " Agregar varias etiquetas");
        if ( itemTable.getSelectedRow() != -1 ){

            Item item = items.get(itemTable.getSelectedRow());
            if ( item.getLastPrice().getQuant() > .0 ){
                if ( item.getCurrentStock() <= 0 ){
                    MessageBox msb = new MessageBox(MessageBox.SGN_IMPORTANT, "No se puede imprimir etiquetas de un producto sin existencia.");
                    msb.show(this);
                }else{
                    String n = JOptionPane.showInputDialog("Cantidad");
                    if ( n != null ){
                        try{
                            int nn = Integer.parseInt(n);

                            if ( nn < 0 || nn > item.getCurrentStock() ){
                                throw new NumberFormatException();
                            }

                            toPrint.add(item);
                            quantToPrint.add(nn);
                            updateToPrint();
                        }catch ( NumberFormatException ex){
                            MessageBox msg = new MessageBox(MessageBox.SGN_DANGER, "Formato del número incorrecto. Debe ser un entero positivo menor o igual a " + item.getCurrentStock() );
                            msg.show(this);
                        }
                    }
                }
            }else{
                MessageBox msb = new MessageBox(MessageBox.SGN_IMPORTANT, "No puede imprimir etiquetas de artículos con costo 0.00");
                msb.show(this);
            }
        }else{
            MessageBox msb = new MessageBox(MessageBox.SGN_IMPORTANT, "Debe seleccionar un artículo.");
            msb.show(this);
        }
        codigoField.requestFocus();
    }

    private void stickerTableInputMethodTextChanged(java.awt.event.InputMethodEvent evt) {//GEN-FIRST:event_stickerTableInputMethodTextChanged

       
    }//GEN-LAST:event_stickerTableInputMethodTextChanged

    private void stickerTableVetoableChange(java.beans.PropertyChangeEvent evt)throws java.beans.PropertyVetoException {//GEN-FIRST:event_stickerTableVetoableChange
       
    }//GEN-LAST:event_stickerTableVetoableChange

    private void stickerTablePropertyChange(java.beans.PropertyChangeEvent evt) {//GEN-FIRST:event_stickerTablePropertyChange
       
    }//GEN-LAST:event_stickerTablePropertyChange

    private void stickerTableFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_stickerTableFocusLost
        DefaultTableModel model = (DefaultTableModel) stickerTable.getModel();
        for (int i = 0; i < quantToPrint.size(); i++) {
            quantToPrint.set(i, Integer.parseInt( model.getValueAt(i, 3) + ""));
        }
    }//GEN-LAST:event_stickerTableFocusLost

    private void deleteAllActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_deleteAllActionPerformed
        DefaultTableModel model = (DefaultTableModel) stickerTable.getModel();

        model.setRowCount(0);
        toPrint.clear();
        quantToPrint.clear();
    }//GEN-LAST:event_deleteAllActionPerformed

    private void formComponentResized(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_formComponentResized
        loadImage();
    }//GEN-LAST:event_formComponentResized

    private void formMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_formMouseReleased
        //loadImage();
    }//GEN-LAST:event_formMouseReleased

    private void deleteItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_deleteItemActionPerformed
        DefaultTableModel model = (DefaultTableModel) stickerTable.getModel();
        int n = stickerTable.getSelectedRow();
        if ( n != -1 ){
            model = (DefaultTableModel) stickerTable.getModel();
            model.removeRow(n);
            toPrint.remove(n);
            quantToPrint.remove(n);
        }
    }//GEN-LAST:event_deleteItemActionPerformed

    private void clearFieldsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_clearFieldsActionPerformed
        clearFields();
    }//GEN-LAST:event_clearFieldsActionPerformed

    private void addQuant1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addQuant1ActionPerformed
        add1Quant();
    }//GEN-LAST:event_addQuant1ActionPerformed

    private void loadImage(){
        if ( itemTable.getSelectedRow() != -1 ){
            Item i = items.get(itemTable.getSelectedRow());
            Shared.loadPhoto(imageLabel,i.getImageAddr(),Math.max(imagePanel.getWidth()-10,1),getHeight()-360);
            imageLabel.setVisible(true);
        }
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton addQuant1;
    private javax.swing.JButton addSticker;
    private javax.swing.JTextField barCodeField;
    private javax.swing.JButton clearFields;
    private javax.swing.JTextField codigoField;
    private javax.swing.JLabel codigoLabel;
    private javax.swing.JButton deleteAll;
    private javax.swing.JButton deleteItem;
    private javax.swing.JTextField descriptionField;
    private javax.swing.JPanel filterPanel;
    private javax.swing.JLabel imageLabel;
    private javax.swing.JPanel imagePanel;
    private javax.swing.JTable itemTable;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JTextField modeloField;
    private javax.swing.JButton printLabels;
    private javax.swing.JTable stickerTable;
    // End of variables declaration//GEN-END:variables

    private void updateAll() {
        System.out.println("[" + Shared.now() + "] " + this.getClass().getName() + " " + Shared.lineNumber() " Actualizar todo");
        updateItems();
        updateTable();
        updateToPrint();
        imageLabel.setVisible(false);

        if ( !items.isEmpty() ){
            itemTable.setRowSelectionInterval(0, 0);
            itemTable.requestFocus();
            loadImage();
        }

        isOk = true;
    }

    private void updateToPrint() {
        DefaultTableModel model = (DefaultTableModel) stickerTable.getModel();

        model.setRowCount(0);

        for ( int i = 0 ; i < toPrint.size() && i < quantToPrint.size() ; i++ ){
            String s[] = {toPrint.get(i).getCode(),toPrint.get(i).getModel(),Shared.df.format(Math.round(toPrint.get(i).getLastPrice().plusIva().withDiscount(toPrint.get(i).getDescuento()).getQuant())),toPrint.get(i).getDescuento()+"", quantToPrint.get(i).toString() };
            model.addRow(s);
        }
    }

    @Override
    public void doIt() {

        System.out.println("[" + Shared.now() + "] " + this.getClass().getName() + " " + Shared.lineNumber() " Operar");
        for ( int i = 0 ; i < stickerTable.getRowCount() ; i++ ){
            int n = Integer.parseInt(stickerTable.getValueAt(i, 3)+"");
            if ( n <= 0 || n > 500 ){
                MessageBox msb = new MessageBox(MessageBox.SGN_IMPORTANT, "La cantidad de etiquetas debe ser positiva y menor a 500");
                msb.show(this);
                return;
            }
        }

        if ( !toPrint.isEmpty() ){

            Item rest = null;
            int nRest = 0;
            while( !toPrint.isEmpty() ){

                Item i = toPrint.get(0);

                if ( nRest > 0){
                    Sticker.print(i,rest);
                    quantToPrint.set(0, quantToPrint.get(0)-1);
                    nRest = 0;
                }

                nRest = quantToPrint.get(0) % 2;
                rest = toPrint.get(0);

                Sticker.print(i,quantToPrint.get(0)-nRest);

                toPrint.remove(0);
                quantToPrint.remove(0);
            }
            if ( nRest > 0 ){
                Sticker.print(rest);
            }
            updateToPrint();
        }else{
            MessageBox msb = new MessageBox(MessageBox.SGN_IMPORTANT, "Debe seleccionar un artículo y agregarlo a las etiquetas.");
            msb.show(this);
        }
    }

    @Override
    public void close() {
        workingFrame.setVisible(false);
    }

    private void add1Quant() {
        System.out.println("[" + Shared.now() + "] " + this.getClass().getName() + " " + Shared.lineNumber() " Agregar 1 etiqueta");
        if ( itemTable.getSelectedRow() != -1 ){

            Item item = items.get(itemTable.getSelectedRow());
            if ( item.getLastPrice().getQuant() > .0 ){
                if ( item.getCurrentStock() <= 0 ){
                    MessageBox msb = new MessageBox(MessageBox.SGN_IMPORTANT, "No se puede imprimir etiquetas de un producto sin existencia.");
                    msb.show(this);
                    return;
                }
                toPrint.add(item);
                quantToPrint.add(1);
                updateToPrint();
            }else{
                MessageBox msb = new MessageBox(MessageBox.SGN_IMPORTANT, "No puede imprimir etiquetas de artículos con costo 0.00");
                msb.show(this);
            }
        }else{
            MessageBox msb = new MessageBox(MessageBox.SGN_IMPORTANT, "Debe seleccionar un artículo.");
            msb.show(this);
        }
        codigoField.requestFocus();
    }

    private void clearFields(){
        System.out.println("[" + Shared.now() + "] " + this.getClass().getName() + " " + Shared.lineNumber() " Limpiar campos");
        barCodeField.setText("");
        descriptionField.setText("");
        modeloField.setText("");
        codigoField.setText("");
        codigoField.requestFocus();
    }

}
TOP

Related Classes of totalpos.ManageItem

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.