por ahora todo menos orden de compra y remito

This commit is contained in:
2024-08-11 18:25:17 -03:00
parent ab890dbf98
commit 75c9f8ed9b
72 changed files with 985 additions and 379 deletions

View File

@@ -4,6 +4,7 @@ using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.DirectoryServices.ActiveDirectory;
using System.Drawing;
using System.Linq;
using System.Text;
@@ -26,6 +27,12 @@ namespace Vista
{
dgvProducto.DataSource = null;
dgvProducto.DataSource = ControladoraProductos.Instance.Listar();
var presupuestolist = ControladoraPresupuestos.Instance.Listar();
numId.Value = (presupuestolist.Count > 0) ?
presupuestolist.Max(x => x.Id + 1) :
0;
numId.Enabled = false;
}
private void btnCerrar_Click(object sender, EventArgs e)
@@ -35,50 +42,223 @@ namespace Vista
private void btnGuardar_Click(object sender, EventArgs e)
{
// Crear una nueva instancia de Presupuesto
var presupuesto = new Presupuesto();
// Obtener el ID del NumericUpDown
int idPresupuesto = (int)numId.Value; // Asegúrate de que numId es el nombre correcto del NumericUpDown
presupuesto.Id = idPresupuesto;
// Obtener la fecha actual
presupuesto.Fecha = DateTime.Now;
// Obtener el proveedor seleccionado del DataGridView
if (dgvProveedor.SelectedRows.Count == 0)
{
MessageBox.Show("Por favor, seleccione un proveedor.");
return;
}
var proveedorSeleccionado = (Proveedor)dgvProveedor.SelectedRows[0].DataBoundItem;
presupuesto.Proveedor = proveedorSeleccionado;
// Obtener el estado habilitado y aceptado desde los controles si es necesario
presupuesto.Habilitado = true; // Ajusta según el estado actual
presupuesto.Aceptado = false; // Ajusta según el estado actual
// Aquí deberías tener la lógica para asegurarte de que los detalles están añadidos al presupuesto
// Si ya tienes los detalles en un DataGridView, puedes hacerlo así:
foreach (var detalle in GetDetallesFromDataGridView())
{
presupuesto.AñadirDetalle(detalle);
}
// Usar la controladora para guardar el presupuesto y sus detalles
try
{
// Guardar el presupuesto usando la controladora
string resultado = ControladoraPresupuestos.Instance.Añadir(presupuesto);
MessageBox.Show(resultado);
}
catch (Exception ex)
{
MessageBox.Show($"Error al guardar el presupuesto: {ex.Message}");
}
this.Close();
}
private List<DetallePresupuesto> GetDetallesFromDataGridView()
{
var detalles = new List<DetallePresupuesto>();
foreach (DataGridViewRow row in dgvPedido.Rows)
{
if (row.DataBoundItem is DetallePresupuesto detalle)
{
detalles.Add(detalle);
}
}
return detalles;
}
private void btnAddProducto_Click(object sender, EventArgs e)
{
if (VerificacionesDetalles()) return;
if (dgvProducto.SelectedRows.Count > 0 && dgvProveedor.SelectedRows.Count > 0)
{
var selectedRow = dgvProducto.SelectedRows[0] as DataGridViewRow;
Producto producto = (Producto)selectedRow.DataBoundItem;
DetallePresupuesto detalle = new DetallePresupuesto
{
Id = id++,
Producto = producto,
Cantidad = Convert.ToInt32(numCantidad.Value),
};
presupuesto.AñadirDetalle(detalle);
dgvPedido.DataSource = null;
dgvPedido.DataSource = presupuesto.MostrarDetalles();
try
{
// Verifica si el valor de numCantidad está dentro del rango válido para int
int cantidad = Convert.ToInt32(numCantidad.Value);
if (cantidad < int.MinValue || cantidad > int.MaxValue)
{
MessageBox.Show("La cantidad está fuera del rango permitido.");
return;
}
// Verifica si el producto ya está en los detalles del presupuesto
bool productoExistente = presupuesto.MostrarDetalles().Any(d => d.Producto.Id == producto.Id);
if (productoExistente)
{
MessageBox.Show("El producto ya está agregado al presupuesto.");
return;
}
// Crear el detalle del presupuesto
DetallePresupuesto detalle = new DetallePresupuesto
{
Id = (int)numId.Value,
Producto = producto,
Cantidad = cantidad,
MontoCUPropuesto = Convert.ToDouble(numPreciopropuesto.Value),
IdPresupuesto = (int)numId.Value
};
// Añadir el detalle al presupuesto
presupuesto.AñadirDetalle(detalle);
// Actualizar el DataGridView
dgvPedido.DataSource = null;
dgvPedido.DataSource = presupuesto.MostrarDetalles();
// Configura las columnas a mostrar y sus encabezados
dgvPedido.Columns["IDPresupuesto"].Visible = true;
dgvPedido.Columns["Cantidad"].Visible = true;
dgvPedido.Columns["NombreDelProducto"].Visible = true;
dgvPedido.Columns["IDPresupuesto"].HeaderText = "ID Presupuesto";
dgvPedido.Columns["Cantidad"].HeaderText = "Cantidad";
dgvPedido.Columns["NombreDelProducto"].HeaderText = "Producto";
// Oculta todas las demás columnas
foreach (DataGridViewColumn column in dgvPedido.Columns)
{
if (column.Name != "IDPresupuesto" && column.Name != "Cantidad" && column.Name != "NombreDelProducto")
{
column.Visible = false;
}
}
}
catch (OverflowException ex)
{
MessageBox.Show($"Error de desbordamiento: {ex.Message}");
}
catch (Exception ex)
{
MessageBox.Show($"Error al agregar producto: {ex.Message}");
}
}
else
{
MessageBox.Show("Por favor, selecciona una fila para eliminar Proveedor del producto.");
MessageBox.Show("Por favor, selecciona una fila para agregar el producto.");
}
}
private bool VerificacionesDetalles()
{
bool ret = false;
return ret;
string ret = "";
if (numCantidad.Value <= 0) ret += "Cantidad de productos invalida";
if (numPreciopropuesto.Value <= 0) ret += "Precio C/U Invalido";
if (ret == "")
{
return false;
}
MessageBox.Show("ret");
return true;
}
private bool VerificacionesPresupuesto()
{
bool ret = false;
return ret;
string ret = "";
if (numId.Value < 0) ret += "No es un codigo id Valido";
if (ret == "")
{
return false;
}
MessageBox.Show(ret); return true;
}
private void btnrmProducto_Click(object sender, EventArgs e)
{
if (dgvPedido.SelectedRows.Count == 0)
{
MessageBox.Show("Por favor, seleccione un producto para eliminar.");
return;
}
// Confirmar la eliminación
var confirmResult = MessageBox.Show("¿Estás seguro de que quieres eliminar este producto del presupuesto?",
"Confirmación de Eliminación",
MessageBoxButtons.YesNo);
if (confirmResult == DialogResult.Yes)
{
try
{
// Obtener el detalle seleccionado
var detalleSeleccionado = (DetallePresupuesto)dgvPedido.SelectedRows[0].DataBoundItem;
// Eliminar el detalle del presupuesto
presupuesto.EliminarDetalle(detalleSeleccionado);
// Actualizar el DataGridView
dgvPedido.DataSource = null;
dgvPedido.DataSource = presupuesto.MostrarDetalles();
// Configura las columnas a mostrar y sus encabezados
dgvPedido.Columns["IDPresupuesto"].Visible = true;
dgvPedido.Columns["Cantidad"].Visible = true;
dgvPedido.Columns["NombreDelProducto"].Visible = true;
dgvPedido.Columns["IDPresupuesto"].HeaderText = "ID Presupuesto";
dgvPedido.Columns["Cantidad"].HeaderText = "Cantidad";
dgvPedido.Columns["NombreDelProducto"].HeaderText = "Producto";
// Oculta todas las demás columnas
foreach (DataGridViewColumn column in dgvPedido.Columns)
{
if (column.Name != "IDPresupuesto" && column.Name != "Cantidad" && column.Name != "NombreDelProducto")
{
column.Visible = false;
}
}
}
catch (Exception ex)
{
MessageBox.Show($"Error al eliminar el producto: {ex.Message}");
}
}
}
private void dgvProducto_CellClick(object sender, DataGridViewCellEventArgs e)
@@ -94,5 +274,10 @@ namespace Vista
dgvProveedor.DataSource = ControladoraProductos.Instance.ListarProveedores(producto);
}
}
private void dgvPedido_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
}
}
}