@@ -5,6 +5,7 @@
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
@@ -32,10 +33,13 @@
import Negocio.Servicios.Servicio_Materia_Prima;
import Negocio.Servicios.Servicio_Proveedores;
import Negocio.Servicios.Servicio_Solicitud_compra;
import javax.swing.ImageIcon;
import java.awt.Font;
import javax.swing.SwingConstants;


@SuppressWarnings("serial")
public class AM_Solicitud_Compra extends JDialog {
public class ADM_Solicitud_Compra extends JDialog {

private final JPanel contentPanel = new JPanel();
private JComboBox<String> comboProveedor;
@@ -58,23 +62,27 @@ public class AM_Solicitud_Compra extends JDialog {
private JButton btnAgregar;
private JButton okButton;
private JButton cancelButton;
private NumberFormat formatoImporte = NumberFormat.getCurrencyInstance();

public AM_Solicitud_Compra(Principal_Negocio_Interfaz principal_neg_int) {
public ADM_Solicitud_Compra(Principal_Negocio_Interfaz principal_neg_int) {
setTitle("Solicitud de compra");
setResizable(false);

sv_proveedor = principal_neg_int.getSvProveedores();
sv_materiaPrima = principal_neg_int.getSvMateriaPrima();
sv_SolicitudCompra = principal_neg_int.getSvSolicitudCompra();
Principal_neg_int = principal_neg_int;
setBounds(100, 100, 963, 466);
setBounds(100, 100, 690, 466);
getContentPane().setLayout(new BorderLayout());
contentPanel.setBackground(Color.WHITE);
contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
getContentPane().add(contentPanel, BorderLayout.CENTER);
contentPanel.setLayout(null);

JPanel panel = new JPanel();
panel.setBackground(Color.WHITE);
panel.setBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null));
panel.setBounds(10, 11, 927, 37);
panel.setBounds(10, 11, 661, 37);
contentPanel.add(panel);
panel.setLayout(null);

@@ -84,15 +92,15 @@ public void actionPerformed(ActionEvent arg0) {
Seleccion_Proveedor();
}
});
comboProveedor.setBounds(617, 6, 304, 25);
comboProveedor.setBounds(191, 6, 304, 25);
panel.add(comboProveedor);

JLabel lblProveedor = new JLabel("Proveedor:");
lblProveedor.setBounds(541, 6, 64, 25);
lblProveedor.setBounds(115, 6, 64, 25);
panel.add(lblProveedor);

JLabel lblCategoria = new JLabel("Categoria:");
lblCategoria.setBounds(10, 61, 64, 22);
lblCategoria.setBounds(10, 62, 81, 28);
contentPanel.add(lblCategoria);

comboCategorias = new JComboBox<String>();
@@ -101,31 +109,30 @@ public void actionPerformed(ActionEvent e) {
Seleccion_Categoria();
}
});
comboCategorias.setBounds(117, 60, 304, 25);
comboCategorias.setBounds(92, 62, 304, 28);
contentPanel.add(comboCategorias);

JLabel lblProducto = new JLabel("Materia Primas:");
lblProducto.setBounds(10, 93, 92, 28);
lblProducto.setBounds(10, 96, 81, 28);
contentPanel.add(lblProducto);

comboMateriaPrima = new JComboBox<String>();
comboMateriaPrima.setBounds(117, 94, 304, 25);
comboMateriaPrima.setBounds(92, 96, 304, 28);
contentPanel.add(comboMateriaPrima);

spinnerCantidad = new JSpinner();
spinnerCantidad.setModel(new SpinnerNumberModel(1, 1, 100, 1));
spinnerCantidad.setBackground(new Color(240, 255, 255));
spinnerCantidad.setBounds(497, 77, 57, 25);
spinnerCantidad.setBounds(469, 96, 57, 28);
contentPanel.add(spinnerCantidad);


JLabel lblCantidad = new JLabel("Cantidad:");
lblCantidad.setBounds(432, 78, 67, 25);
lblCantidad.setBounds(404, 96, 67, 28);
contentPanel.add(lblCantidad);

JScrollPane scrollPane = new JScrollPane();
scrollPane.setEnabled(false);
scrollPane.setBounds(10, 130, 931, 218);
scrollPane.setBounds(10, 130, 661, 218);
contentPanel.add(scrollPane);

tablaMateriasPrimas = new JTable();
@@ -135,102 +142,141 @@ public void actionPerformed(ActionEvent e) {
new String[] {
"N\u00B0", "Categoria" , "Materia Prima", "Cantidad"
}
));
) {
@SuppressWarnings("rawtypes")
Class[] columnTypes = new Class[] {
Integer.class, String.class, String.class, Integer.class
};
@SuppressWarnings({ "unchecked", "rawtypes" })
public Class getColumnClass(int columnIndex) {
return columnTypes[columnIndex];
}
@Override
public boolean isCellEditable(int row, int col){
return false;
}
});

// tablaMateriasPrimas.getColumnModel().getColumn(0).setResizable(false);
// tablaMateriasPrimas.getColumnModel().getColumn(0).setPreferredWidth(0);
tablaMateriasPrimas.getColumnModel().getColumn(0).setMinWidth(60);
tablaMateriasPrimas.getColumnModel().getColumn(0).setMaxWidth(60);
tablaMateriasPrimas.getColumnModel().getColumn(3).setMinWidth(60);
tablaMateriasPrimas.getColumnModel().getColumn(3).setMaxWidth(60);
// tablaMateriasPrimas.getColumnModel().getColumn(1).setResizable(false);
// tablaMateriasPrimas.getColumnModel().getColumn(2).setResizable(false);
// tablaMateriasPrimas.getColumnModel().getColumn(3).setResizable(false);
// tablaMateriasPrimas.getColumnModel().getColumn(4).setResizable(false);
tablaMateriasPrimas.setRowHeight(18);



scrollPane.setViewportView(tablaMateriasPrimas);

btnAgregar = new JButton("Agregar");
btnAgregar.setIcon(new ImageIcon(ADM_Solicitud_Compra.class.getResource("/Recursos/IMG/add-1-icon24.png")));
btnAgregar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
Integer posicionMateriaPrimaActual = ListaMateriaPrima.get(comboMateriaPrima.getSelectedItem().toString());
if(posicionMateriaPrimaActual == null){
String[] arreglo = { String.valueOf(tablaMateriasPrimas.getRowCount()+1), comboCategorias.getSelectedItem().toString(),
comboMateriaPrima.getSelectedItem().toString(), String.valueOf(spinnerCantidad.getValue())};
DefaultTableModel modelo = (DefaultTableModel) tablaMateriasPrimas.getModel();
modelo.addRow(arreglo);
tablaMateriasPrimas.setModel(modelo);
ListaMateriaPrima.put(comboMateriaPrima.getSelectedItem().toString(), tablaMateriasPrimas.getRowCount()-1);
spinnerCantidad.setValue(1);
}else{
int cantidadSpinner = (int) spinnerCantidad.getValue();
int cantidadTabla = Integer.parseInt((String) tablaMateriasPrimas.getValueAt(posicionMateriaPrimaActual, 3));
int cantidadNueva = cantidadTabla + cantidadSpinner;
tablaMateriasPrimas.setValueAt( String.valueOf(cantidadNueva), posicionMateriaPrimaActual, 3);
spinnerCantidad.setValue(1);
}
Agregar_Materia_prima();
}});
btnAgregar.setBounds(579, 73, 92, 32);
btnAgregar.setBounds(536, 96, 135, 32);
contentPanel.add(btnAgregar);

lblTotal = new JLabel("TOTAL $");
lblTotal = new JLabel("TOTAL");
lblTotal.setHorizontalAlignment(SwingConstants.CENTER);
lblTotal.setFont(new Font("SansSerif", Font.BOLD, 16));
lblTotal.setVisible(false);
lblTotal.setBounds(782, 359, 59, 25);
lblTotal.setBounds(502, 359, 73, 25);
contentPanel.add(lblTotal);

textTotal = new JTextField();
textTotal.setEditable(false);
textTotal.setVisible(false);
textTotal.setBounds(851, 359, 86, 28);
textTotal.setBounds(585, 359, 86, 28);
contentPanel.add(textTotal);
textTotal.setColumns(10);

btnQuitar = new JButton("Quitar");
btnQuitar.setIcon(new ImageIcon(ADM_Solicitud_Compra.class.getResource("/Recursos/IMG/subtract-1-icon24.png")));
btnQuitar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
int filaSeleccionada = tablaMateriasPrimas.getSelectedRow();
if(!(filaSeleccionada == -1)){

ListaMateriaPrima.remove(tablaMateriasPrimas.getValueAt(filaSeleccionada, 2));

DefaultTableModel modelo = (DefaultTableModel) tablaMateriasPrimas.getModel();
modelo.removeRow(filaSeleccionada);
tablaMateriasPrimas.setModel(modelo);

for (int i = 0; i < tablaMateriasPrimas.getRowCount(); i++) {
tablaMateriasPrimas.setValueAt(i+1, i, 0);
}
}
Quitar_Materia_prima();
}
});
btnQuitar.setBounds(675, 73, 97, 32);
btnQuitar.setBounds(10, 351, 135, 32);
contentPanel.add(btnQuitar);
{
JPanel buttonPane = new JPanel();
buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
getContentPane().add(buttonPane, BorderLayout.SOUTH);
{
okButton = new JButton("Agregar");
okButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
if(tablaMateriasPrimas.getRowCount()>0){
sv_SolicitudCompra.agregarSolicitudCompra(obtenerSolicitud());
dispose();
Interfaz_Solicitud_Compra frame = new Interfaz_Solicitud_Compra(Principal_neg_int);
frame.setModal(true);
frame.setVisible(true);
}
}
});
okButton.setActionCommand("OK");
buttonPane.add(okButton);
getRootPane().setDefaultButton(okButton);

JPanel buttonPane = new JPanel();
buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
buttonPane.setBackground(new Color(60, 179, 113));
getContentPane().add(buttonPane, BorderLayout.SOUTH);

okButton = new JButton("Guardar");
okButton.setIcon(new ImageIcon(ADM_Solicitud_Compra.class.getResource("/Recursos/IMG/Save-icon24.png")));
okButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
Guardar_solicitud_compra();
}
{
cancelButton = new JButton("Cancel");
cancelButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
dispose();
Interfaz_Solicitud_Compra frame = new Interfaz_Solicitud_Compra(Principal_neg_int);
frame.setModal(true);
frame.setVisible(true);
}
});
cancelButton.setActionCommand("Cancel");
buttonPane.add(cancelButton);
});
okButton.setActionCommand("OK");
buttonPane.add(okButton);
getRootPane().setDefaultButton(okButton);

cancelButton = new JButton("Salir");
cancelButton.setIcon(new ImageIcon(ADM_Solicitud_Compra.class.getResource("/Recursos/IMG/User-Interface-Login-icon24.png")));
cancelButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
dispose();
}
}
});
cancelButton.setActionCommand("Cancel");
buttonPane.add(cancelButton);

inicializar();
}

private void Guardar_solicitud_compra() {
if(tablaMateriasPrimas.getRowCount()>0){
sv_SolicitudCompra.AGREGAR_SOLICITUD_COMPRA(obtenerSolicitud());
dispose();
}
}

private void Quitar_Materia_prima() {
int filaSeleccionada = tablaMateriasPrimas.getSelectedRow();
if(!(filaSeleccionada == -1)){

ListaMateriaPrima.remove(tablaMateriasPrimas.getValueAt(filaSeleccionada, 2));

DefaultTableModel modelo = (DefaultTableModel) tablaMateriasPrimas.getModel();
modelo.removeRow(filaSeleccionada);
tablaMateriasPrimas.setModel(modelo);

for (int i = 0; i < tablaMateriasPrimas.getRowCount(); i++) {
tablaMateriasPrimas.setValueAt(i+1, i, 0);
}
}
}

private void Agregar_Materia_prima() {
Integer posicionMateriaPrimaActual = ListaMateriaPrima.get(comboMateriaPrima.getSelectedItem().toString());
if(posicionMateriaPrimaActual == null){
String[] arreglo = { String.valueOf(tablaMateriasPrimas.getRowCount()+1), comboCategorias.getSelectedItem().toString(),
comboMateriaPrima.getSelectedItem().toString(), String.valueOf(spinnerCantidad.getValue())};
DefaultTableModel modelo = (DefaultTableModel) tablaMateriasPrimas.getModel();
modelo.addRow(arreglo);
tablaMateriasPrimas.setModel(modelo);
ListaMateriaPrima.put(comboMateriaPrima.getSelectedItem().toString(), tablaMateriasPrimas.getRowCount()-1);
spinnerCantidad.setValue(1);
}else{
int cantidadSpinner = (int) spinnerCantidad.getValue();
int cantidadTabla = Integer.parseInt((String) tablaMateriasPrimas.getValueAt(posicionMateriaPrimaActual, 3));
int cantidadNueva = cantidadTabla + cantidadSpinner;
tablaMateriasPrimas.setValueAt( String.valueOf(cantidadNueva), posicionMateriaPrimaActual, 3);
spinnerCantidad.setValue(1);
}
}

//>>>>>>>>>>>>>>>>>>>>>>>>>>> Metodos >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

private void inicializar(){
@@ -316,8 +362,14 @@ public void setSolicictud(Solicitud_compra sc) {
modelo.addRow(arreglo);
tablaMateriasPrimas.setModel(modelo);
}
// lblTotal.setVisible(true);
// textTotal.setVisible(true);
Double PRECIO = 0.0;
if (sc.getPrecio()!=null && sc.getPrecio()>0) {
PRECIO = sc.getPrecio().doubleValue();
}
lblTotal.setVisible(true);
textTotal.setVisible(true);

textTotal.setText(formatoImporte.format(PRECIO));
okButton.setVisible(false);
cancelButton.setText("Salir");
spinnerCantidad.setEnabled(false);
@@ -1,47 +1,59 @@
package Interfaz.JDialogs;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.Date;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.border.EtchedBorder;
import javax.swing.table.DefaultTableModel;

import Negocio.Modelo.Solicitud_compra;
import Negocio.Servicios.Principal_Negocio_Interfaz;
import Negocio.Servicios.Servicio_Solicitud_compra;
import Reportes.ReporteSolicitud;

@SuppressWarnings("serial")
public class Interfaz_Solicitud_Compra extends JDialog {

private static final long serialVersionUID = 7623860179392834538L;

private final JPanel contentPanel = new JPanel();
private JTable table;
private JTable tabla_solicitudes_actuales;
private Servicio_Solicitud_compra sv_solicitudCompra;
private Principal_Negocio_Interfaz Principal_neg_int;

public Interfaz_Solicitud_Compra(final Principal_Negocio_Interfaz principal_neg_int) {
private Principal_Negocio_Interfaz principal_neg_int;
private NumberFormat formatoImporte = NumberFormat.getCurrencyInstance();

public Interfaz_Solicitud_Compra(final Principal_Negocio_Interfaz prin_neg_int) {
setTitle("Solicitudes de compra generadas");
setResizable(false);
Principal_neg_int = principal_neg_int;
principal_neg_int = prin_neg_int;


setBounds(100, 100, 969, 455);
getContentPane().setLayout(new BorderLayout());
contentPanel.setBackground(Color.WHITE);
contentPanel.setBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null));
getContentPane().add(contentPanel, BorderLayout.CENTER);
contentPanel.setLayout(null);

JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(10, 11, 933, 322);
scrollPane.setBounds(10, 59, 933, 274);
contentPanel.add(scrollPane);

table = new JTable();
table.setModel(new DefaultTableModel(
tabla_solicitudes_actuales = new JTable();
tabla_solicitudes_actuales.setModel(new DefaultTableModel(
new Object[][] {
},
new String[] {
@@ -50,7 +62,7 @@ public Interfaz_Solicitud_Compra(final Principal_Negocio_Interfaz principal_neg_
) {
@SuppressWarnings("rawtypes")
Class[] columnTypes = new Class[] {
String.class, String.class, String.class, String.class, String.class
Integer.class, Date.class, String.class, String.class, String.class
};
@SuppressWarnings({ "unchecked", "rawtypes" })
public Class getColumnClass(int columnIndex) {
@@ -61,142 +73,197 @@ public boolean isCellEditable(int row, int col){
return false;
}
});
table.getColumnModel().getColumn(0).setResizable(false);
table.getColumnModel().getColumn(0).setPreferredWidth(30);
table.getColumnModel().getColumn(0).setMinWidth(30);
table.getColumnModel().getColumn(0).setMaxWidth(30);
table.getColumnModel().getColumn(1).setResizable(false);
table.getColumnModel().getColumn(2).setResizable(false);
table.getColumnModel().getColumn(3).setResizable(false);
table.getColumnModel().getColumn(4).setResizable(false);
scrollPane.setViewportView(table);
tabla_solicitudes_actuales.getColumnModel().getColumn(0).setResizable(false);
tabla_solicitudes_actuales.getColumnModel().getColumn(0).setPreferredWidth(0);
tabla_solicitudes_actuales.getColumnModel().getColumn(0).setMinWidth(0);
tabla_solicitudes_actuales.getColumnModel().getColumn(0).setMaxWidth(0);
tabla_solicitudes_actuales.getColumnModel().getColumn(1).setResizable(false);
tabla_solicitudes_actuales.getColumnModel().getColumn(2).setResizable(false);
tabla_solicitudes_actuales.getColumnModel().getColumn(3).setResizable(false);
tabla_solicitudes_actuales.getColumnModel().getColumn(4).setResizable(false);
tabla_solicitudes_actuales.setRowHeight(18);
scrollPane.setViewportView(tabla_solicitudes_actuales);

JButton btnAgregar = new JButton("Agregar");
btnAgregar.setIcon(new ImageIcon(Interfaz_Solicitud_Compra.class.getResource("/Recursos/IMG/add-1-icon24.png")));
btnAgregar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
dispose();
AM_Solicitud_Compra frame = new AM_Solicitud_Compra(Principal_neg_int);
frame.setModal(true);
frame.setVisible(true);
Agregar_nueva_solicitud();
}
});
btnAgregar.setBounds(20, 339, 90, 28);
btnAgregar.setBounds(10, 339, 100, 28);
contentPanel.add(btnAgregar);

JButton btnBorrar = new JButton("Borrar");
btnBorrar.setIcon(new ImageIcon(Interfaz_Solicitud_Compra.class.getResource("/Recursos/IMG/subtract-1-icon24.png")));
btnBorrar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(table.getRowCount()>0){
Integer id = Integer.parseInt((String) table.getValueAt(table.getSelectedRow(), 0));
sv_solicitudCompra.eliminarSolicitudCompra(sv_solicitudCompra.obtenerSolicitud(id));
llenarTabla();
}
Eliminar_solicitud();
}
});
btnBorrar.setBounds(120, 339, 90, 28);
btnBorrar.setBounds(115, 339, 100, 28);
contentPanel.add(btnBorrar);

JButton btnEditar = new JButton("Consultar");
btnEditar.setIcon(new ImageIcon(Interfaz_Solicitud_Compra.class.getResource("/Recursos/IMG/search-icon24.png")));
btnEditar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
if(table.getRowCount()>0){
Solicitud_compra sc = sv_solicitudCompra.obtenerSolicitud(Integer.valueOf((String)table.getValueAt(table.getSelectedRow(), 0)));
dispose();
AM_Solicitud_Compra frame = new AM_Solicitud_Compra(principal_neg_int);
frame.setSolicictud(sc);
frame.setModal(true);
frame.setVisible(true);
}
Mostrar_solicitud();
}
});
btnEditar.setBounds(220, 339, 90, 28);
btnEditar.setBounds(220, 339, 110, 28);
contentPanel.add(btnEditar);

JButton btnGenerarSolicitud = new JButton("Generar Solicitud");
btnGenerarSolicitud.setIcon(new ImageIcon(Interfaz_Solicitud_Compra.class.getResource("/Recursos/IMG/Product-sale-report-icon24.png")));
btnGenerarSolicitud.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Generar_Solicitud();
dispose();
}
});
btnGenerarSolicitud.setBounds(424, 341, 218, 25);
btnGenerarSolicitud.setBounds(440, 339, 160, 28);
contentPanel.add(btnGenerarSolicitud);

JButton btnNewButton = new JButton("Pagar");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {

String Estado_Solicitud= (String) table.getValueAt(table.getSelectedRow(), 4);
System.out.println(Estado_Solicitud);
if(table.getSelectedRow() > -1 ){
if(Estado_Solicitud.equals("Pendiente"))
{
dispose();
auxiliar frame = new auxiliar(principal_neg_int, Integer.parseInt((String) table.getValueAt(table.getSelectedRow(), 0)));
frame.setVisible(true);
frame.setAlwaysOnTop(true);
}
}
Marcar_como_pagada();
}
});

btnNewButton.setBounds(322, 339, 90, 28);
btnNewButton.setBounds(340, 339, 90, 28);
contentPanel.add(btnNewButton);
{
JPanel buttonPane = new JPanel();
buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
getContentPane().add(buttonPane, BorderLayout.SOUTH);
{
JButton cancelButton = new JButton("Cerrar");
cancelButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
dispose();
}
});
cancelButton.setActionCommand("Cancel");
buttonPane.add(cancelButton);

JButton btnEnviarSolicitud = new JButton("Enviar Solicitud");
btnEnviarSolicitud.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
Enviar_solicitud_a_proveedor();
}
}
});
btnEnviarSolicitud.setIcon(new ImageIcon(Interfaz_Solicitud_Compra.class.getResource("/Recursos/IMG/Mail-icon24.png")));
btnEnviarSolicitud.setBounds(798, 339, 145, 28);
contentPanel.add(btnEnviarSolicitud);

JLabel lblSolicitudesGeneradas = new JLabel("Solicitudes de compra generadas");
lblSolicitudesGeneradas.setFont(new Font("SansSerif", Font.PLAIN, 25));
lblSolicitudesGeneradas.setHorizontalAlignment(SwingConstants.CENTER);
lblSolicitudesGeneradas.setBounds(10, 11, 933, 37);
contentPanel.add(lblSolicitudesGeneradas);

JPanel buttonPane = new JPanel();
buttonPane.setBackground(new Color(60, 179, 113));
buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
getContentPane().add(buttonPane, BorderLayout.SOUTH);

JButton cancelButton = new JButton("Salir");
cancelButton.setIcon(new ImageIcon(Interfaz_Solicitud_Compra.class.getResource("/Recursos/IMG/User-Interface-Login-icon24.png")));
cancelButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
dispose();
}
});
cancelButton.setActionCommand("Cancelar");
buttonPane.add(cancelButton);

inicializar();
}


// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
private void inicializar() {

sv_solicitudCompra = Principal_neg_int.getSvSolicitudCompra();
sv_solicitudCompra = principal_neg_int.getSvSolicitudCompra();
llenarTabla();

}

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> METODOS >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
private void Enviar_solicitud_a_proveedor() {
if(tabla_solicitudes_actuales.getSelectedRow() > -1 ){
Integer ID_SOLICITUD = ((Integer)tabla_solicitudes_actuales.getValueAt(tabla_solicitudes_actuales.getSelectedRow(), 0));
boolean EXITO_AL_ENVIAR = sv_solicitudCompra.Enviar_solicitud_a_proveedor(ID_SOLICITUD);
if(EXITO_AL_ENVIAR){
llenarTabla();
// Solicitud_compra SC = sv_solicitudCompra.OBTENER_SOLICITUD(ID_SOLICITUD);
// JOptionPane.showMessageDialog(this, "Correo enviado correctamente al proveedor\n"
// + SC.getProveedor().getNombre()+", mail:"+ SC.getProveedor().getMail() , "Solicitud enviada", JOptionPane.INFORMATION_MESSAGE);
}
// else
// JOptionPane.showMessageDialog(this, "El envio de la solicitud de compra al proveedor fallo!", "Solicitud NO enviada", JOptionPane.ERROR_MESSAGE);
}

}

// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
private void Marcar_como_pagada() {
// CORREGIR -TODO
String Estado_Solicitud= (String) tabla_solicitudes_actuales.getValueAt(tabla_solicitudes_actuales.getSelectedRow(), 4);
System.out.println(Estado_Solicitud);
if(tabla_solicitudes_actuales.getSelectedRow() > -1 ){
if(Estado_Solicitud.equals("Pendiente")){
dispose();
auxiliar frame = new auxiliar(principal_neg_int, (Integer) tabla_solicitudes_actuales.getValueAt(tabla_solicitudes_actuales.getSelectedRow(), 0));
frame.setVisible(true);
frame.setAlwaysOnTop(true);
}
}
}


// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
private void Mostrar_solicitud() {
if(tabla_solicitudes_actuales.getRowCount()>0){
Solicitud_compra sc = sv_solicitudCompra.OBTENER_SOLICITUD((Integer)tabla_solicitudes_actuales.getValueAt(tabla_solicitudes_actuales.getSelectedRow(), 0));
ADM_Solicitud_Compra frame = new ADM_Solicitud_Compra(principal_neg_int);
frame.setSolicictud(sc);
frame.setModal(true);
frame.setVisible(true);
}
}

// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
private void Eliminar_solicitud() {
int RESPUESTA = JOptionPane.showConfirmDialog(null,"¿Esta seguro que desea eliminar?","Eliminar solicitud",JOptionPane.OK_CANCEL_OPTION);
if(RESPUESTA == JOptionPane.OK_OPTION){
if(tabla_solicitudes_actuales.getRowCount()>0){
Integer id = (Integer) tabla_solicitudes_actuales.getValueAt(tabla_solicitudes_actuales.getSelectedRow(), 0);
sv_solicitudCompra.ELIMINAD_SOLICITUD_COMPRA(sv_solicitudCompra.OBTENER_SOLICITUD(id));
llenarTabla();
}
}
}

// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
private void Agregar_nueva_solicitud() {
ADM_Solicitud_Compra frame = new ADM_Solicitud_Compra(principal_neg_int);
frame.setModal(true);
frame.setVisible(true);
}

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> METODOS >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
private void llenarTabla() {

DefaultTableModel modelo = (DefaultTableModel) table.getModel();
DefaultTableModel modelo = (DefaultTableModel) tabla_solicitudes_actuales.getModel();
modelo.setRowCount(0);
ArrayList<Solicitud_compra> lista = sv_solicitudCompra.getLISTA_SOLICITUDES();
for (int i = 0; i < lista.size(); i++) {
String precio = " ";
Double precio = 0.0;
if(lista.get(i).getPrecio()!=null && lista.get(i).getPrecio()!=0){
precio = String.valueOf(lista.get(i).getPrecio());
precio = lista.get(i).getPrecio().doubleValue();
}
String[] fila = {String.valueOf(lista.get(i).getId()),
lista.get(i).getFecha().toString(),
Object[] fila = {lista.get(i).getId(),
lista.get(i).getFecha().getTime(),
lista.get(i).getProveedor().getNombre(),
precio,
formatoImporte.format(precio),
lista.get(i).getEstado()};
modelo.addRow(fila);
}
table.setModel(modelo);
tabla_solicitudes_actuales.setModel(modelo);
}


//----------------------------------------------------------------------------------------------------------------
private void Generar_Solicitud() {
if(table.getSelectedRow()!=-1){
ReporteSolicitud RS = new ReporteSolicitud();
Integer NUMERO_SOLICITUD = Integer.parseInt((String) table.getValueAt(table.getSelectedRow(), 0));
RS.Generar_Solicitud(NUMERO_SOLICITUD);
}
// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
private void Generar_Solicitud() {
if(tabla_solicitudes_actuales.getSelectedRow()!=-1){
Integer NUMERO_SOLICITUD = (Integer) tabla_solicitudes_actuales.getValueAt(tabla_solicitudes_actuales.getSelectedRow(), 0);
sv_solicitudCompra.Ver_Reporte_solicitud_compra(NUMERO_SOLICITUD);

}
}
}

}//--> FIN
@@ -10,6 +10,7 @@ public class Proveedor {
private String telefono = "";
private ArrayList<Integer> categoria;
private String mail = "";
private boolean Vigente = true;// Si un proveedor se "elimino" de la lista de proveedores. se lo pone como false, porque no se pueden ELIMINAR proveedores, causaria problemas

public Proveedor(){}

@@ -71,6 +72,14 @@ public String getMail(){
public void setMail(String mail) {
this.mail = mail;
}

public boolean isVigente() {
return Vigente;
}

public void setVigente(boolean vigente) {
Vigente = vigente;
}



@@ -24,7 +24,7 @@ public class Principal_Negocio_Interfaz {
private Servicio_Materia_Prima SvMateria_Prima = new Servicio_Materia_Prima();
private Servicio_Solicitud_compra SvSolicitudCompra = new Servicio_Solicitud_compra();
private Servicio_entrega svEntrega = new Servicio_entrega();
private Email_Manager email_manager = new Email_Manager(this);
// private Email_Manager email_manager = new Email_Manager(this);

/**############################################################################**/
/**############################################################################**/
@@ -88,9 +88,9 @@ public Servicio_entrega getSvEntrega() {
}

// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
public Email_Manager getEmail_manager() {
return email_manager;
}
// public Email_Manager getEmail_manager() {
// return email_manager;
// }

// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

@@ -1,5 +1,6 @@
package Negocio.Servicios;

import java.io.File;
import java.util.ArrayList;

import Negocio.Modelo.Materia_Prima;
@@ -8,45 +9,60 @@
import Persistencia.Conector.ConectorMySQL;
import Persistencia.DAO.Solicitud_compraDAO;
import Persistencia.DAOjdbcImpl.Solicitud_compraDAOjdbc;
import Reportes.ReporteSolicitud;
import mail_sender.Email_Manager;

public class Servicio_Solicitud_compra {
private Solicitud_compraDAO scDAO = new Solicitud_compraDAOjdbc();


// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
/** ARREGLAR ESTO QUE ESTA PIDIENDO UAN LISTA PARA OBTENER SOLO UNA SOLICITUD -TODO ***/
public Solicitud_compra OBTENER_SOLICITUD(int ID_SOLICITUD){
Solicitud_compra sc = scDAO.getSOLICITUD_COMPRA(ID_SOLICITUD);
sc.setLista_materia_prima(scDAO.getLISTA_Materia_Prima(sc));
return sc;
}

// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
public void agregarSolicitudCompra(Solicitud_compra sc){
public void AGREGAR_SOLICITUD_COMPRA(Solicitud_compra sc){
scDAO.AGREGAR_SOLICITUD(sc);
scDAO.AGREGAR_MATERIA_PRIMA_SOLICITUD(sc);
}

// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
public boolean ELIMINAR_MATERIAS_PRIMAS_DE_SOLICITUD(Solicitud_compra sd){
return scDAO.ELIMINAR_MATERIAS_PRIMAS_DE_SOLICITUD(sd);
public void ELIMINAD_SOLICITUD_COMPRA(Solicitud_compra sc){
scDAO.ELIMINAR_MATERIAS_PRIMAS_DE_SOLICITUD(sc);
scDAO.ELIMINAD_SOLICITUD(sc);
}

// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
public boolean AGREGAR_SOLICITUD(Solicitud_compra solicitud){
return scDAO.AGREGAR_SOLICITUD(solicitud);
public boolean MODIFICAR_SOLICITUD_COMPRA(Solicitud_compra sc){
if(sc!=null && sc.getId()!=0){
scDAO.ELIMINAR_MATERIAS_PRIMAS_DE_SOLICITUD(sc);
return scDAO.AGREGAR_MATERIA_PRIMA_SOLICITUD(sc);
}
return false;
}

// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
public ArrayList<Solicitud_compra> getLISTA_SOLICITUDES(){
return scDAO.getLISTA_SOLICITUDES();
public boolean MODIFICAR_ESTADO(Integer ID_SOLICITUD, Integer ID_ESTADO){
return scDAO.MODIFICAR_ESTADO(ID_SOLICITUD, ID_ESTADO);
}

// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
public boolean MODIFICAR_ESTADO(Solicitud_compra sd, Integer numero){
return scDAO.MODIFICAR_ESTADO(sd, numero);
public boolean ELIMINAR_MATERIAS_PRIMAS_DE_SOLICITUD(Solicitud_compra sd){
return scDAO.ELIMINAR_MATERIAS_PRIMAS_DE_SOLICITUD(sd);
}

// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
public void MODIFICAR_Solicitud(Solicitud_compra sc){
scDAO.ELIMINAR_MATERIAS_PRIMAS_DE_SOLICITUD(sc);
scDAO.AGREGAR_MATERIA_PRIMA_SOLICITUD(sc);
public boolean AGREGAR_SOLICITUD(Solicitud_compra solicitud){
return scDAO.AGREGAR_SOLICITUD(solicitud);
}

// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
public Proveedor getProveedor(Integer ID_Proveedor){
return scDAO.getProveedor(ID_Proveedor);
public ArrayList<Solicitud_compra> getLISTA_SOLICITUDES(){
return scDAO.getLISTA_SOLICITUDES();
}

// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@@ -55,31 +71,71 @@ public ArrayList<Materia_Prima> getLISTA_Materia_Prima(Solicitud_compra sd){
}

// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
public int obtenerEstado(String estado) {
return scDAO.obtenerEstado(estado);
public boolean Enviar_solicitud_a_proveedor(Integer iD_SOLICITUD) {
boolean Exito = false;
Email_Manager EM = new Email_Manager();
Solicitud_compra Solicitud = OBTENER_SOLICITUD(iD_SOLICITUD);

// Genera archivo adjunto
ReporteSolicitud RS = new ReporteSolicitud();
RS.Generar_Solicitud(iD_SOLICITUD);
RS.EXPORT_TO_PDF("", "SOLICITUD_ENVIAR"+iD_SOLICITUD);
// RS.EXPORT_TO_PDF(System.getProperty("user.home") + "\\Desktop", "SOLICITUD_ENVIAR"+iD_SOLICITUD);

File PDF_SOLICITUD = new File("\\SOLICITUD_ENVIAR"+iD_SOLICITUD+".pdf");

// File PDF_SOLICITUD = new File(System.getProperty("user.home") + "\\Desktop\\SOLICITUD_ENVIAR"+iD_SOLICITUD+".pdf");
Solicitud.setSolicitudPDF(PDF_SOLICITUD);

if(Solicitud!=null){
Exito = EM.ENVIAR_SOLICITUD_DE_COMPRA(Solicitud);
if(Exito)
scDAO.Registrar_envio_solicitud(iD_SOLICITUD);
}

// PDF_SOLICITUD.delete();
return Exito;








}

// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
/** ARREGLAR ESTO QUE ESTA PIDIENDO UAN LISTA PARA OBTENER SOLO UNA SOLICITUD -TODO ***/
public Solicitud_compra obtenerSolicitud(int id){
int index = scDAO.getLISTA_SOLICITUDES().indexOf(new Solicitud_compra(id));
Solicitud_compra sc = scDAO.getLISTA_SOLICITUDES().get(index);
sc.setLista_materia_prima(scDAO.getLISTA_Materia_Prima(sc));
//sc.setProveedor(scDAO.getProveedor());
return sc;

public void Ver_Reporte_solicitud_compra(Integer NUMERO_SOLICITUD) {
ReporteSolicitud RS = new ReporteSolicitud();
RS.Generar_Solicitud(NUMERO_SOLICITUD);
RS.MOSTRAR_REPORTE();
}

// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
public void eliminarSolicitudCompra(Solicitud_compra sc){
scDAO.ELIMINAR_MATERIAS_PRIMAS_DE_SOLICITUD(sc);
scDAO.eliminarSolicitud(sc);

// public void solicitud_compra_PDF(Integer NUMERO_SOLICITUD) {
// ReporteSolicitud RS = new ReporteSolicitud();
// RS.Generar_Solicitud(NUMERO_SOLICITUD);
// RS.EXPORT_TO_PDF(RUTA, NOMBRE_ARCHIVO);
// }




// REVISAR SI REALMENTE ES NECESARIO
public Proveedor getProveedor(Integer ID_Proveedor){
return scDAO.getProveedor(ID_Proveedor);
}


// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
public boolean Registrar_Envio_Solicitud(Integer id) {
return scDAO.Registrar_envio_solicitud(id);
// REVISAR SI REALMENTE ES NECESARIO
public int obtenerEstado(String estado) {
return scDAO.obtener_ID_Estado_Solicitud(estado);
}


//TODO
/**
* ESTE METODO ESTA MAL ES SOLO PARA QUE ANDE DURANTE LA ENTREGA, NO USAR!!!!!
@@ -92,7 +148,10 @@ public void modificacionMAAAAAAAL(int id, int precio) {

}








}//---> FIN CLASE
@@ -14,20 +14,22 @@ public interface Solicitud_compraDAO {

public ArrayList<Materia_Prima> getLISTA_Materia_Prima(Solicitud_compra sd);

public boolean MODIFICAR_ESTADO(Solicitud_compra sd, Integer numero);
public boolean MODIFICAR_ESTADO(Integer ID_SOLICITUD, Integer ID_ESTADO_SOLICITUD);

public boolean MODIFICAR_Solicitud(Solicitud_compra sd);

public Proveedor getProveedor(Integer ID_Proveedor);

public int obtenerEstado(String estado);
public int obtener_ID_Estado_Solicitud(String estado);

public boolean ELIMINAR_MATERIAS_PRIMAS_DE_SOLICITUD(Solicitud_compra sd);

public boolean AGREGAR_MATERIA_PRIMA_SOLICITUD(Solicitud_compra sd);

public void eliminarSolicitud(Solicitud_compra sc);
public void ELIMINAD_SOLICITUD(Solicitud_compra sc);

public boolean Registrar_envio_solicitud(Integer id);

}
public Solicitud_compra getSOLICITUD_COMPRA(Integer iD_SC);

}
@@ -6,7 +6,9 @@
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

import javax.swing.JOptionPane;

import Negocio.Modelo.Materia_Prima;
import Negocio.Modelo.Proveedor;
import Negocio.Modelo.Solicitud_compra;
@@ -18,11 +20,56 @@ public class Solicitud_compraDAOjdbc implements Solicitud_compraDAO{
private ConectorMySQL conex = new ConectorMySQL();
private SimpleDateFormat formato_yyyyMMdd = new SimpleDateFormat("yyyy-MM-dd");

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@Override
public Solicitud_compra getSOLICITUD_COMPRA(Integer iD_SC) {
Solicitud_compra SOLICITUD_OBTENIDA = null;
try {
conex.connectToMySQL();// Conectar base
Statement st = conex.conexion.createStatement();

String Query = "SELECT * FROM Solicitud_compra SD, Solicitud_estado SE, Proveedor PV "
+ "WHERE "
+ "SD.SD_proveedor = PV.PV_id AND "
+ "SD.SD_estado = SE.SEST_id AND "
+ "SD.SD_id ="+ iD_SC ;

st.executeQuery(Query);

ResultSet Fila = st.getResultSet();
while (Fila.next()) {
Proveedor PV = new Proveedor();
PV.setNombre(Fila.getString("PV_nombre"));
PV.setId(Fila.getInt("PV_id"));
PV.setDireccion(Fila.getString("PV_direccion"));
PV.setTelefono(Fila.getString("PV_telefono"));
PV.setMail(Fila.getString("PV_mail"));
PV.setVigente(Fila.getBoolean("PV_vigente"));

SOLICITUD_OBTENIDA = new Solicitud_compra();
SOLICITUD_OBTENIDA.setId(Fila.getInt("SD_id"));
SOLICITUD_OBTENIDA.setEstado(Fila.getString("SEST_nombre"));
SOLICITUD_OBTENIDA.setFecha(Fila.getDate("SD_fecha"));
SOLICITUD_OBTENIDA.setPrecio(Fila.getInt("SD_precio"));
SOLICITUD_OBTENIDA.setProveedor(PV);
}
conex.cerrarConexion();
} catch (SQLException e) {
JOptionPane.showMessageDialog(null,"Error al cargar la tabla \n ERROR : " + e.getMessage());
}
return SOLICITUD_OBTENIDA;
}

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
public boolean AGREGAR_SOLICITUD(Solicitud_compra solicitud){
String PROVEEDOR = "NULL";
if(solicitud.getProveedor()!=null && solicitud.getProveedor().getId()!=0)
PROVEEDOR = solicitud.getProveedor().getId().toString();

// ESTADO 1: ('Pendiente');
// ESTADO 2: ('Enviada');
// ESTADO 3: ('Pagada');
// ESTADO 4: ('Cancelada');
String SentenciaSQL_Solicitud = "INSERT INTO Solicitud_compra ( SD_fecha, SD_estado, SD_proveedor) VALUES ("+
"'"+ formato_yyyyMMdd.format(new Date()) +"',"+
""+ 1 +","+
@@ -32,8 +79,53 @@ public boolean AGREGAR_SOLICITUD(Solicitud_compra solicitud){

return Exito_al_Ingresar_Solicitud;
}

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
public void ELIMINAD_SOLICITUD(Solicitud_compra sc){
String SentenciaSQL = "delete from solicitud_compra where solicitud_compra.SD_id = " +sc.getId() ;
conex.Insertar(SentenciaSQL);
}

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
public boolean MODIFICAR_Solicitud(Solicitud_compra sd) {
int estado = obtener_ID_Estado_Solicitud(sd.getEstado());
int Proveedor = sd.getProveedor().getId();

String SentenciaSQL = "UPDATE Solicitud_compra SET SD_fecha = '" + formato_yyyyMMdd.format(sd.getFecha()) + "', "
+ "SD_estado = " + estado + ", " + "SD_proveedor =" + Proveedor + ", " + "SD_precio =" + sd.getPrecio() + " WHERE Solicitud_compra.SD_id=" + sd.getId() + ";";
return conex.Insertar(SentenciaSQL);
}

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
public boolean MODIFICAR_ESTADO(Integer ID_SOLICITUD, Integer ID_ESTADO_SOLICITUD) {
// ESTADO 1: ('Pendiente');
// ESTADO 2: ('Enviada');
// ESTADO 3: ('Pagada');
// ESTADO 4: ('Cancelada');
String SentenciaSQL = "UPDATE Solicitud_compra SET SD_estado = "+ ID_ESTADO_SOLICITUD+ " WHERE SD_id= " + ID_SOLICITUD ;
return conex.Insertar(SentenciaSQL);
}

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
public int obtener_ID_Estado_Solicitud(String estado){
int resultado = 1;
conex.connectToMySQL();
Statement st;
try {
st = conex.conexion.createStatement();
String SentenciaSQL = "select SEST_id from Solicitud_estado where SEST_nombre='"+ estado +"'";
ResultSet Fila = st.executeQuery(SentenciaSQL);

while (Fila.next()){
resultado = Fila.getInt(1);
}
} catch (SQLException e) {
e.printStackTrace();
}
return resultado;
}

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
public ArrayList<Solicitud_compra> getLISTA_SOLICITUDES() {

ArrayList<Solicitud_compra> Arreglo = new ArrayList<Solicitud_compra>();
@@ -50,7 +142,7 @@ public ArrayList<Solicitud_compra> getLISTA_SOLICITUDES() {
ResultSet Fila = st.getResultSet();
while (Fila.next()) {
Solicitud_compra sd = new Solicitud_compra();
sd.setId(Integer.parseInt(Fila.getString("SD_id")));
sd.setId(Fila.getInt("SD_id"));
sd.setEstado(Fila.getString("SEST_nombre"));
sd.setFecha(Fila.getDate("SD_fecha"));
sd.setProveedor(new Proveedor (Fila.getString("PV_nombre")));
@@ -64,11 +156,11 @@ public ArrayList<Solicitud_compra> getLISTA_SOLICITUDES() {
}
return Arreglo;
}
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
public ArrayList<Materia_Prima> getLISTA_Materia_Prima(Solicitud_compra sd) {

ArrayList<Materia_Prima> Arreglo = new ArrayList<Materia_Prima>();
ArrayList<Materia_Prima> Lista_MateriasPrimas = new ArrayList<Materia_Prima>();
try {
conex.connectToMySQL();// Conectar base
Statement st = conex.conexion.createStatement();
@@ -88,33 +180,17 @@ public ArrayList<Materia_Prima> getLISTA_Materia_Prima(Solicitud_compra sd) {
mp.setCantidad(Fila.getInt("CM_cantidad_mp"));
mp.setFecha_vencimiento(Fila.getDate("MP_fecha_vencimiento"));

Arreglo.add(mp);
Lista_MateriasPrimas.add(mp);
}
conex.cerrarConexion();
} catch (SQLException e) {
JOptionPane.showMessageDialog(null,"Error al cargar la tabla \n ERROR : " + e.getMessage());
}
return Arreglo;
return Lista_MateriasPrimas;
}
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

public boolean MODIFICAR_ESTADO(Solicitud_compra sd, Integer numero) {
String SentenciaSQL = "UPDATE Solicitud_compra SET SD_estado = "+ numero+ " where SD_id= " + sd.getId() ;
return conex.Insertar(SentenciaSQL);
}
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

public boolean MODIFICAR_Solicitud(Solicitud_compra sd) {

int estado = obtenerEstado(sd.getEstado());
int Proveedor = sd.getProveedor().getId();

String SentenciaSQL = "UPDATE Solicitud_compra SET SD_fecha = '" + formato_yyyyMMdd.format(sd.getFecha()) + "', "
+ "SD_estado = " + estado + ", " + "SD_proveedor =" + Proveedor + ", " + "SD_precio =" + sd.getPrecio() + " WHERE Solicitud_compra.SD_id=" + sd.getId() + ";";
return conex.Insertar(SentenciaSQL);
}
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

public Proveedor getProveedor(Integer ID_Proveedor) {
Proveedor Proveedor= new Proveedor();
try {
@@ -129,41 +205,16 @@ public Proveedor getProveedor(Integer ID_Proveedor) {
Proveedor.setDireccion(Fila.getString("PV_direccion"));
Proveedor.setNombre(Fila.getString("PV_nombre"));
Proveedor.setTelefono(Fila.getString("PV_telefono"));
Proveedor.setMail(Fila.getString("PV_Mail"));

Proveedor.setMail(Fila.getString("PV_mail"));
Proveedor.setVigente(Fila.getBoolean("PV_vigente"));

conex.cerrarConexion();
} catch (SQLException e) {
JOptionPane.showMessageDialog(null,"Error al cargar la tabla \n ERROR : " + e.getMessage());
}
return Proveedor;
}
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

public int obtenerEstado(String estado){
int resultado = 1;
conex.connectToMySQL();
Statement st;
try {
st = conex.conexion.createStatement();
String SentenciaSQL = "select SEST_id from Solicitud_estado where SEST_nombre='"+ estado +"'";
ResultSet Fila = st.executeQuery(SentenciaSQL);

while (Fila.next()){
resultado = Fila.getInt(1);
}
} catch (SQLException e) {
e.printStackTrace();
}
return resultado;
}
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

public void eliminarSolicitud(Solicitud_compra sc){
String SentenciaSQL = "delete from solicitud_compra where solicitud_compra.SD_id = " +sc.getId() ;
conex.Insertar(SentenciaSQL);
}

public boolean ELIMINAR_MATERIAS_PRIMAS_DE_SOLICITUD(Solicitud_compra sd) {
String SentenciaSQL = "delete from Compra_MateriaPrima where Compra_MateriaPrima.CM_compra = " +sd.getId() ;
return conex.Insertar(SentenciaSQL);
@@ -212,10 +263,13 @@ public Integer obtenerUltimaSolicitud(){
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

@Override
public boolean Registrar_envio_solicitud(Integer id) {
// TODO Auto-generated method stub
System.out.println("Solicitud_compraDAOjdbc.Registrar_envio_solicitud\n NO ESTOY IMPLEMENTADO! :( tengo que guardar que la solicitud fue enviada!");
return false;
public boolean Registrar_envio_solicitud(Integer ID_SOLICITUD) {
// ESTADO 2: ('Enviada');
System.out.println("Solicitud_compraDAOjdbc.Registrar_envio_solicitud\n GUARDE QUE LA SOLICITUD FUE ENVIADA!");
return MODIFICAR_ESTADO(ID_SOLICITUD, 2);
}

}

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>


}//--> FIN
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@@ -3,53 +3,42 @@
import java.util.ArrayList;

import Negocio.Modelo.Solicitud_compra;
import Negocio.Servicios.Principal_Negocio_Interfaz;

public class Email_Manager {

private String Correo = "wildsoft1234";
private String Password = "server.wildosft@gmail.com";
private String SERVIDOR = "smtp.gmail.com";
private String PUERTO = "587";
private String Correo = "server.wildsoft@gmail.com";
private String Password = "wildsoft1234";

private String ASUNTO_MENSAJE = "";
private String MENSAJE_HTML = "";

private String RUTA_ADJUNTO = "";
private Solicitud_compra solicitud_compra;
private boolean EXITO = false;
private ArrayList<String> Destinatarios;
private Principal_Negocio_Interfaz PNI;

public Email_Manager(Principal_Negocio_Interfaz pni){
PNI = pni;
}
private ArrayList<String> Destinatarios = new ArrayList<String>();

public void ENVIAR_SOLICITUD_DE_COMPRA(String destinatarios, Solicitud_compra Solicitud) {

Destinatarios.add(destinatarios);

public boolean ENVIAR_SOLICITUD_DE_COMPRA(Solicitud_compra Solicitud) {
solicitud_compra = Solicitud;
// Destinatarios = destinatarios;

// armar correo con informacion adicional
Mensaje_HTML(Solicitud);
// Destinatarios = destinatarios;


Destinatarios.add(Solicitud.getProveedor().getMail());

// enviar datos del viaje al cliente
Thread t = new Thread(){
public void run(){
EnvioMail e = new EnvioMail(Correo, Password, solicitud_compra.getSolicitudPDF().getAbsolutePath(), solicitud_compra.getSolicitudPDF().getName(), Destinatarios, ASUNTO_MENSAJE, MENSAJE_HTML);
EXITO = e.sendMailHTML(true,SERVIDOR,PUERTO);
if(EXITO){
// paso 6: guardar que se envio
PNI.getSvSolicitudCompra().Registrar_Envio_Solicitud(solicitud_compra.getId());
}
}
};
t.start();
// Armar correo con informacion adicional
Mensaje_HTML(solicitud_compra);
RUTA_ADJUNTO = solicitud_compra.getSolicitudPDF().getAbsolutePath();
System.out.println("ENVIAR_SOLICITUD_DE_COMPRA:\nADJUNTO RUTA: "+RUTA_ADJUNTO);
// Enviar datos del viaje al cliente (lo envia en otro hilo para que el programa no se cuelgue)
// Thread t = new Thread(){
// public void run(){
EnvioMail e = new EnvioMail(Correo, Password, RUTA_ADJUNTO, solicitud_compra.getSolicitudPDF().getName(), Destinatarios, ASUNTO_MENSAJE, MENSAJE_HTML);
EXITO = e.sendMailHTML(true);
// }
// };
// t.start();
return EXITO;
}



private void Mensaje_HTML(Solicitud_compra solicitud_compra){
ASUNTO_MENSAJE = "Solicitud de Compra Nº"+solicitud_compra.getId()+" - Pizzeria WILDSOFT";

@@ -1,12 +1,14 @@
package mail_sender;

import java.io.File;
import java.util.ArrayList;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
@@ -26,6 +28,11 @@ public class EnvioMail {
private ArrayList<String> Destinatarios, arrayAdjuntos;
private String asunto;
private String mensaje;
// SERVIDOR ejemplo: para cuentas de google "smtp.gmail.com", otro ejemplo para otro servidor "wo06.wiroos.com" (Depende de lo que dice despues del arroba --> @DEESTODEPENDE.com)
// PUERTO ejemplo "587". Depende del servidor que se elija
private String SERVIDOR = "smtp.gmail.com";
private String PUERTO = "587";

private InformeDeEnvio Informe = new InformeDeEnvio();

public EnvioMail(String usuarioCorreo, String password, String rutaArchivo, String nombreArchivo, ArrayList<String> destinatarios, String asunto,String mensaje) {
@@ -76,9 +83,9 @@ public boolean sendMail(boolean MostrarInforme){
try{
Informe.SetPreparando();
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.host", SERVIDOR);
props.setProperty("mail.smtp.starttls.enable", "true");
props.setProperty("mail.smtp.port", "587");
props.setProperty("mail.smtp.port", PUERTO);
props.setProperty("mail.smtp.user", usuarioCorreo);
props.setProperty("mail.smtp.auth", "true");

@@ -94,7 +101,6 @@ public boolean sendMail(boolean MostrarInforme){

MimeMultipart multiParte = new MimeMultipart();
multiParte.addBodyPart(texto);

if (!rutaArchivo.equals("")){
multiParte.addBodyPart(adjunto);
}
@@ -109,15 +115,17 @@ public boolean sendMail(boolean MostrarInforme){
new InternetAddress(Destinatarios.get(i)));
message.setSubject(asunto);
}
message.setContent(multiParte);

message.setContent(multiParte);

Transport t = session.getTransport("smtp");
Informe.SetConectando();
t.connect(usuarioCorreo, password);
Informe.SetEnviando();
t.sendMessage(message, message.getAllRecipients());
t.close();
Informe.SetEnviado(true);
System.out.println("ENVIADO.");
return true;
}
catch (Exception e){
@@ -126,68 +134,85 @@ public boolean sendMail(boolean MostrarInforme){
return false;
}
}

/**
* @param MostrarInforme Abre una ventana con el informe del email
* @param SERVIDOR ejemplo: para cuentas de google "smtp.gmail.com", otro ejemplo para otro servidor "wo06.wiroos.com" (Depende de lo que dice despues del arroba --> @DEESTODEPENDE.com)
* @param PUERTO ejemplo "587". Depende del servidor que se elija
*/
public boolean sendMailHTML(boolean MostrarInforme,String SERVIDOR, String PUERTO){
public boolean sendMailHTML(boolean MostrarInforme){
boolean envioExitoso = true;
if(MostrarInforme){
Informe.setVisible(true);
}
try{
Informe.setTitulo("Destino: "+Destinatarios.get(0));
Informe.setTitulo("Destino: "+Destinatarios.get(0));
Properties props = new Properties();
props.put("mail.smtp.host", SERVIDOR);//"wo06.wiroos.com" o "smtp.gmail.com"
props.setProperty("mail.smtp.starttls.enable", "true");
// props.setProperty("mail.smtp.port", "587");
props.setProperty("mail.smtp.port", PUERTO);//"587");
props.setProperty("mail.smtp.user", usuarioCorreo);
props.setProperty("mail.smtp.auth", "true");

Session session = Session.getDefaultInstance(props, null);
BodyPart texto = new MimeBodyPart();
texto.setText(mensaje);


MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(usuarioCorreo));

// Destinatarios varios
for (int i = 0; i < Destinatarios.size(); i++) {
message.addRecipient(
Message.RecipientType.TO,
new InternetAddress(Destinatarios.get(i)));
}
message.setSubject(asunto);


MimeBodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setContent(mensaje,"text/html");

Multipart multiParte = new MimeMultipart();
multiParte.addBodyPart(messageBodyPart);

BodyPart adjunto = new MimeBodyPart();
if (!rutaArchivo.equals("")){
adjunto.setDataHandler(new DataHandler(new FileDataSource(rutaArchivo)));
adjunto.setFileName(nombreArchivo);
}

MimeMultipart multiParte = new MimeMultipart();
multiParte.addBodyPart(texto);
if (!rutaArchivo.equals("")){
multiParte.addBodyPart(adjunto);
}

MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(usuarioCorreo));

// Destinatarios varios
for (int i = 0; i < Destinatarios.size(); i++) {
message.addRecipient(
Message.RecipientType.TO,
new InternetAddress(Destinatarios.get(i)));
message.setSubject(asunto);
}
message.setContent(mensaje,"text/html");
Informe.SetConectando();
message.setContent(multiParte);


Transport t = session.getTransport("smtp");
Informe.SetConectando();
t.connect(usuarioCorreo, password);
Informe.SetEnviando();
Informe.SetEnviando();
t.sendMessage(message, message.getAllRecipients());
t.close();
Informe.SetEnviado(true);
return true;
System.out.println("ENVIADO.");

}
catch (Exception e){
e.printStackTrace();
Informe.SetEnviado(false);
return false;
}
Informe.SetEnviado(false);
envioExitoso = false;
}
finally{
//Se eliminan del servidor los archivos adjuntos
if( rutaArchivo!=null && !rutaArchivo.isEmpty() ){
try{
File arch = new File(rutaArchivo);
arch.delete();
}
catch (Exception e) {}
}
}
return envioExitoso;
}


/** TEST ESTO ES SOLO PARA PROBAR! **/
public static void main(String[] args){