using Controladora; using Entidades; using Modelo; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Vista.Informes { public partial class FrmInformeFacturasPorCliente : Form { private ReadOnlyCollection facturas; public FrmInformeFacturasPorCliente() { InitializeComponent(); IniciarTablaClientes(); } private void IniciarTablaClientes() { dgvCliente.DataSource = ControladoraClientes.Instance.ListarTodos(); foreach (DataGridViewColumn column in dgvCliente.Columns) { column.Visible = column.Name == "Cuit" || column.Name == "NombreCompleto"; } } private void btnBusqueda_Click(object sender, EventArgs e) { if (Check()) { Cliente cli = (Cliente)dgvCliente.SelectedRows[0].DataBoundItem; var lista = ControladoraInformes.Instance.MostrarFacturasDeClienteEnRangoDeFechas(cli, dateInicio.Value, dateFin.Value); if (lista == null) { MessageBox.Show("Hubo un error obteniendo la lista de Facturas para el cliente"); return; } RefrescarTablaFacturas(lista); facturas = lista; } } private bool Check() { bool ret = true; string msg = ""; if (dateInicio.Value >= dateFin.Value) msg += "La fecha final no puede ser igual o mayor que la de inicio\n"; if (dgvCliente.SelectedRows.Count <= 0) msg += "Tenes que seleccionar un cliente primero\n"; if (msg != "") { MessageBox.Show(msg); ret = false; } return ret; } private void RefrescarTablaFacturas(ReadOnlyCollection list) { dgvDetalle.DataSource = null; dgvFactura.DataSource = null; dgvFactura.DataSource = list; foreach (DataGridViewColumn column in dgvFactura.Columns) { column.Visible = column.Name == "Id" || column.Name == "Total" || column.Name == "Fecha" || column.Name == "NombreCliente"; } } private void dgvFactura_CellClick(object sender, DataGridViewCellEventArgs e) { if (dgvFactura.SelectedRows.Count <= 0) { MessageBox.Show("Falta seleccionar una linea"); return; } Factura? fac = (Factura)dgvFactura.SelectedRows[0].DataBoundItem; fac = facturas.FirstOrDefault(x => x.Id == fac.Id); if (fac == null) { MessageBox.Show("No se logro encontrar la factura"); return; } RefrescarTablaDetalles(fac.Detalles); } private void RefrescarTablaDetalles(List list) { dgvDetalle.DataSource = null; dgvDetalle.DataSource = list; foreach (DataGridViewColumn column in dgvDetalle.Columns) { column.Visible = column.Name == "Subtotal" || column.Name == "NombreProducto" || column.Name == "Cantidad"; } } } }