@Override
  public void actionPerformed(ActionEvent e) {
    if (e.getSource() == prodGui.getModificar()) { // Modificar producto
      prodGui.getGuardar().setEnabled(true);
      modificarPulsado = true;
      nuevoPulsado = false;
      prodGui.habilitarCampos(true);
      prodGui.getIdArticulo().setEditable(false);
      prodGui.getProveedores().removeAllItems();
      abrirBase();
      int r = tabla.getSelectedRow();
      if (r > -1) {
        Producto p = Producto.first("numero_producto = ?", tabla.getValueAt(r, 0));

        LazyList<Proveedor> l = Proveedor.findAll();
        Iterator<Proveedor> it = l.iterator();
        while (it.hasNext()) {
          Proveedor prov = it.next();
          String nom = prov.getString("nombre");
          String cuil = prov.getString("cuil");
          String prove = nom + ";" + cuil;
          prodGui.getProveedores().addItem(prove);
        }
        if (p != null) {
          prodGui.CargarCampos(p);
          Proveedor prov = Proveedor.findById(p.getInteger("proveedor_id"));
          if (prov != null) {
            String nom = prov.getString("nombre");
            String cuil = prov.getString("cuil");
            String pr = nom + ";" + cuil;
            prodGui.getProveedores().setSelectedItem(pr);
          }
        }
      }
      if (Base.hasConnection()) Base.close();

      // Agregar al combo todos los proveedores!
    }
    if (e.getSource() == prodGui.getNuevo()) { // Producto nuevo
      prodGui.getGuardar().setEnabled(true);
      nuevoPulsado = true;
      modificarPulsado = false;
      prodGui.getModificar().setEnabled(false);
      prodGui.getBorrar().setEnabled(false);
      prodGui.limpiarCampos();
      prodGui.habilitarCampos(true);
      prodGui.getProveedores().removeAllItems();
      abrirBase();
      LazyList<Proveedor> l = Proveedor.findAll();
      Iterator<Proveedor> it = l.iterator();
      while (it.hasNext()) {
        Proveedor prov = it.next();
        String nom = prov.getString("nombre");
        String cuil = prov.getString("cuil");
        String prove = nom + ";" + cuil;
        prodGui.getProveedores().addItem(prove);
      }
      if (Base.hasConnection()) Base.close();
      // Agregar al combo todos los proveedores
    }
    if (e.getSource() == prodGui.getGuardar() && modificarPulsado) {
      String id = prodGui.getIdArticulo().getText();
      abrirBase();
      Producto p = Producto.first("numero_producto = ?", id);
      cargarDatosProd(p, false);
      if (Base.hasConnection()) Base.close();
      String prov = (String) prodGui.getProveedores().getSelectedItem();
      String[] proveedor = prov.split(";");
      p.setCuilProveedor(proveedor[1]);
      // p.set("priveedor_id");
      abrirBase();
      Proveedor proveed = Proveedor.first("cuil = ?", proveedor[1]);
      p.set("proveedor_id", proveed.get("id"));
      if (abmProd.modificar(p)) {
        JOptionPane.showMessageDialog(apgui, "Producto modificado exitosamente.");
        pl = pb.filtroProducto("", "", "");
        actualizarLista();
        modificarPulsado = false;
        prodGui.habilitarCampos(false);
        prodGui.getModificar().setEnabled(false);
        prodGui.getGuardar().setEnabled(false);
      } else {
        JOptionPane.showMessageDialog(prodGui, "El número de producto ya existe");
      }
    }
    if (e.getSource() == prodGui.getGuardar() && nuevoPulsado) {
      Producto p = new Producto();
      cargarDatosProd(p, false);
      String prov = (String) prodGui.getProveedores().getSelectedItem();
      String[] proveedor = prov.split(";");
      p.setCuilProveedor(proveedor[1]);
      if (p.getString("nombre").equals("") || p.getString("marca").equals("")) {
        JOptionPane.showMessageDialog(prodGui, "Un producto debe tener nombre y marca");
      }
      abrirBase();
      if (abmProd.alta(p)) {
        JOptionPane.showMessageDialog(prodGui, "Producto registrado exitosamente");
        p = abmProd.getProducto(p);
        agregarFila(p);
        nuevoPulsado = false;
        prodGui.habilitarCampos(false);
        prodGui.getGuardar().setEnabled(false);
      } else {
        JOptionPane.showMessageDialog(prodGui, "Producto existente");
      }
      vc.actualizarListaProd();
      if (Base.hasConnection()) Base.close();
    }

    if (e.getSource() == prodGui.getBorrar()) {
      confirmarBorrar =
          JOptionPane.showConfirmDialog(
              prodGui, "¿borrar producto?", "Confirmar Borrado", JOptionPane.YES_NO_OPTION);
      if (JOptionPane.OK_OPTION == confirmarBorrar) {
        abrirBase();
        Producto p = Producto.first("numero_producto = ?", prodGui.getIdArticulo().getText());
        if (abmProd.baja(p)) {
          JOptionPane.showMessageDialog(prodGui, "Producto borrado exitosamente");
          pl = pb.filtroProducto("", "", "");
          actualizarLista();
          prodGui.limpiarCampos();
          prodGui.getBorrar().setEnabled(false);
          prodGui.getModificar().setEnabled(false);
          prodGui.getGuardar().setEnabled(false);
        } else {
          JOptionPane.showMessageDialog(prodGui, "No se ha borrado el producto");
        }
      }
    }
    if (e.getSource() == prodGui.getAnterior()) {
      prodGui.getProveedores().removeAllItems();
      int r = tabla.getSelectedRow();
      if (r > 0) {
        tabla.changeSelection(tabla.getSelectedRow() - 1, 0, false, false);
        r--;
        abrirBase();
        Producto c = Producto.first("numero_producto =?", tabla.getValueAt(r, 0));
        Proveedor p = Proveedor.first("id = ?", c.getString("proveedor_id"));
        if (Base.hasConnection()) Base.close();

        prodGui.CargarCampos(c);
        String nom = p.getString("nombre");
        String cuil = p.getString("cuil");
        String pr = nom + ";" + cuil;
        prodGui.getProveedores().addItem(pr);
        prodGui.repaint();
      }
    }

    if (e.getSource()
        == prodGui.getSiguiente()) { // permite avanzar al siguiente cliente de la lista
      prodGui.getProveedores().removeAllItems();
      int r = tabla.getSelectedRow();
      if (tablaProductos.getRowCount() - 1 > r) {
        tabla.changeSelection(r + 1, 0, false, false);
        r++;
        abrirBase();
        Producto c = Producto.first("numero_producto =?", tabla.getValueAt(r, 0));
        Proveedor p = Proveedor.first("id = ?", c.getString("proveedor_id"));
        if (Base.hasConnection()) Base.close();
        prodGui.CargarCampos(c);
        String nom = p.getString("nombre");
        String cuil = p.getString("cuil");
        String pr = nom + ";" + cuil;
        prodGui.getProveedores().addItem(pr);
      }
    }

    if (e.getSource() == prodGui.getModificarPrecios()) {
      DefaultTableModel t = mpp.getTablaArticulos();
      t.setRowCount(0);
      abrirBase();
      LazyList<Producto> prod = Producto.findAll();
      Iterator<Producto> it = prod.iterator();
      while (it.hasNext()) {
        Producto a = it.next();
        Object row[] = new Object[7];
        row[0] = a.getString("numero_producto");
        row[1] = a.getString("nombre");
        row[2] = a.getString("marca");
        row[3] = a.getString("tipo");
        row[4] = a.getString("precio_compra");
        row[5] = BigDecimal.valueOf(Double.valueOf(a.getString("precio_venta")));
        row[6] = BigDecimal.valueOf(Double.valueOf(a.getString("precio_venta")));
        t.addRow(row);
      }
      if (Base.hasConnection()) Base.close();
      mpp.setLocationRelativeTo(prodGui);
      mpp.setVisible(true);
      if (mpp.getReturnStatus() == 1) {
        Iterator<Pair> list = mpp.getProductosModificados().iterator();
        while (list.hasNext()) {
          Pair par = list.next();
          abrirBase();
          Producto p = Producto.findFirst("numero_producto =?", (String) par.first());
          p.set("precio_venta", par.second());
          if (p.saveIt()) {
            JOptionPane.showMessageDialog(
                prodGui,
                "Precios modificados exitosamente",
                "Precios modificados",
                JOptionPane.INFORMATION_MESSAGE);
          }
          if (Base.hasConnection()) Base.close();
        }
      }
    }
    vc.actualizarListaProd();
    cc.actualizarListaProd();
    vrc.actualizarListaFacturas();
    crc.actualizarListaCompras();
    /*if(e.getSource() == mpp.getAceptar()){
    int srow = prodGui.getTabla().getSelectedRow();
    Object id = prodGui.getTablaArticulos().getValueAt(srow, 0);
    Base.open("com.mysql.jdbc.Driver", "jdbc:mysql://localhost/sexshop", "root", "root");
    Producto p = Producto.first("id = ?", id);
    p.set("precio_venta", mpp.getPesos().getText());
    p.saveIt();
    if (Base.hasConnection())
    Base.close();
    mpp.dispose();
    JOptionPane.showMessageDialog(apgui, "Precio modificado exitosamente.");

    }
    if(e.getSource() == mpp.getCancelar()){
    mpp.dispose();
    }
    */
  }