por ahora todo menos orden de compra y remito
This commit is contained in:
@@ -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)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user