This commit is contained in:
fedpo
2024-09-08 02:39:13 +01:00
parent c15ae743ab
commit 393caac989
65 changed files with 1138 additions and 282 deletions

View File

@@ -20,13 +20,13 @@ namespace Vista
public FrmProducto(Producto? producto = null)
{
InitializeComponent();
CargarCategorias();
CargarNumid();
CargarTabla();
cargarcombo();
if (producto != null)
{
nuevoproducto = producto;
nuevoproducto = ControladoraProductos.Instance.MostrarPorId(producto);
mod = true;
InicializarFormulario();
}
@@ -43,7 +43,19 @@ namespace Vista
numPrecio.Value = (decimal)nuevoproducto.Precio;
checkHabilitado.Checked = nuevoproducto.Habilitado;
dgvProveedorAñadido.DataSource = nuevoproducto.proveedores.AsReadOnly();
checkpercedero.Checked = nuevoproducto.EsPerecedero;
checkpercedero.Enabled = false;
if (nuevoproducto.EsPerecedero)
{
var Prodperc = (ProductoPercedero)nuevoproducto;
numConsumoPreferente.Value = Prodperc.MesesHastaConsumoPreferente;
numvencimiento.Value = Prodperc.MesesHastaVencimiento;
}
else
{
}
}
private void CargarTabla()
@@ -52,16 +64,22 @@ namespace Vista
dgvProveedor.DataSource = ControladoraProductos.Instance.ListarProveedores();
if (mod)
{
foreach (Proveedor prov in ControladoraProductos.Instance.ListarProveedores(nuevoproducto))
{
nuevoproducto.AñadirProveedor(prov);
}
dgvProveedorAñadido.DataSource = ControladoraProductos.Instance.ListarProveedores(nuevoproducto);
}
dgvCategoria.DataSource = null;
dgvCategoria.DataSource = ControladoraCategorias.Instance.Listar();
if (mod)
{
dgvCategoriaAñadida.DataSource = ControladoraProductos.Instance.ListarCategorias(nuevoproducto);
}
}
private void CargarCategorias()
private void CargarNumid()
{
var listprod = ControladoraProductos.Instance.Listar();
numId.Value = (listprod.Count > 0) ?
listprod.Max(x => x.Id + 1) :
@@ -91,17 +109,17 @@ namespace Vista
}
// Validar Categoría Seleccionada (wip)
//devolucion += "Debe seleccionar una categoría.\n";
//devolucion += "Debe seleccionar una categoría.\n";
// Validar Tipo de Producto
if (!checkBox1.Checked && cmbEnvase.SelectedItem == null)
if (!checkpercedero.Checked && cmbEnvase.SelectedItem == null)
{
devolucion += "Debe seleccionar un tipo de envase para el producto no perecedero.\n";
}
if (checkBox1.Checked) // Producto Perecedero
if (checkpercedero.Checked) // Producto Perecedero
{
if (numericUpDown1.Value <= 0 || numericUpDown2.Value <= 0)
if (numConsumoPreferente.Value <= 0 || numvencimiento.Value <= 0)
{
devolucion += "Los meses hasta consumo preferente y vencimiento deben ser mayores a cero.\n";
}
@@ -123,23 +141,31 @@ namespace Vista
if (ValidarDatos())
{
if (checkBox1.Checked) // Producto Perecedero
if (checkpercedero.Checked) // Producto Perecedero
{
var productoPerecedero = new ProductoPercedero
{
Id = (int)numId.Value,
Nombre = txtNombre.Text,
Precio = (double)numPrecio.Value,
Habilitado = checkHabilitado.Checked,
MesesHastaConsumoPreferente = (int)numericUpDown1.Value,
MesesHastaVencimiento = (int)numericUpDown2.Value,
MesesHastaConsumoPreferente = (int)numConsumoPreferente.Value,
MesesHastaVencimiento = (int)numvencimiento.Value,
EsPerecedero = checkpercedero.Checked
};
foreach (var proveedor in nuevoproducto.proveedores.AsReadOnly())
if (mod) productoPerecedero.Id = (int)numId.Value;
foreach (var proveedor in nuevoproducto.proveedores)
{
productoPerecedero.AñadirProveedor(proveedor);
}
foreach (var cat in nuevoproducto.categorias)
{
productoPerecedero.AñadirCategoria(cat);
}
string mensaje = mod
? ControladoraProductoPercedero.Instance.Modificar(productoPerecedero)
: ControladoraProductoPercedero.Instance.Añadir(productoPerecedero);
@@ -150,17 +176,23 @@ namespace Vista
{
var productoNoPerecedero = new ProductoNoPercedero
{
Id = (int)numId.Value,
Nombre = txtNombre.Text,
Precio = (double)numPrecio.Value,
Habilitado = checkHabilitado.Checked,
TipoDeEnvase = (EnvaseTipo)cmbEnvase.SelectedItem,
};
foreach (var proveedor in nuevoproducto.proveedores.AsReadOnly())
if (mod) productoNoPerecedero.Id = (int)numId.Value;
foreach (var proveedor in nuevoproducto.proveedores)
{
productoNoPerecedero.AñadirProveedor(proveedor);
}
foreach (var cat in nuevoproducto.categorias)
{
productoNoPerecedero.AñadirCategoria(cat);
}
string mensaje = mod
? ControladoraProductoNoPercedero.Instance.Modificar(productoNoPerecedero)
: ControladoraProductoNoPercedero.Instance.Añadir(productoNoPerecedero);
@@ -177,11 +209,6 @@ namespace Vista
this.Close();
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void btnaddProveedor_Click(object sender, EventArgs e)
{
if (dgvProveedor.SelectedRows.Count > 0)
@@ -205,7 +232,7 @@ namespace Vista
MessageBox.Show("Por favor, selecciona una fila para añadir Proveedor al producto.");
}
}
private void btnrmProveedor_Click(object sender, EventArgs e)
{
@@ -232,23 +259,62 @@ namespace Vista
}
}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
private void btnaddCategoria_Click(object sender, EventArgs e)
{
bool esPerecedero = checkBox1.Checked;
if (dgvCategoria.SelectedRows.Count > 0)
{
foreach (DataGridViewRow selectedRow in dgvCategoria.SelectedRows)
{
var cat = (Categoria)selectedRow.DataBoundItem;
var checkcolicion = nuevoproducto.categorias.Contains(cat);
if (checkcolicion)
{
MessageBox.Show("La Categoria ya fue cargada");
return;
}
nuevoproducto.AñadirCategoria(cat);
dgvCategoriaAñadida.DataSource = null;
dgvCategoriaAñadida.DataSource = nuevoproducto.categorias.AsReadOnly();
}
}
else
{
MessageBox.Show("Por favor, selecciona una fila para añadir Categoria al producto.");
}
}
numericUpDown1.Enabled = esPerecedero;
numericUpDown2.Enabled = esPerecedero;
private void checkpercedero_CheckedChanged(object sender, EventArgs e)
{
bool esPerecedero = checkpercedero.Checked;
numConsumoPreferente.Enabled = esPerecedero;
numvencimiento.Enabled = esPerecedero;
cmbEnvase.Enabled = !esPerecedero;
}
private void numericUpDown2_ValueChanged(object sender, EventArgs e)
private void btnrmCategoria_Click(object sender, EventArgs e)
{
}
private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
try
{
if (dgvCategoriaAñadida.SelectedRows.Count > 0)
{
foreach (DataGridViewRow selectedRow in dgvCategoriaAñadida.SelectedRows)
{
var cat = (Categoria)selectedRow.DataBoundItem;
nuevoproducto.EliminarCategoria(cat);
dgvCategoriaAñadida.DataSource = null;
dgvCategoriaAñadida.DataSource = nuevoproducto.categorias.AsReadOnly();
}
}
else
{
MessageBox.Show("Por favor, selecciona una fila para eliminar Categoria del producto.");
}
}
catch (Exception ex)
{
MessageBox.Show($"Error al eliminar proveedor: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}