diff --git a/Controladora/ControladoraClientes.cs b/Controladora/ControladoraClientes.cs index d450dc0..9a69fda 100644 --- a/Controladora/ControladoraClientes.cs +++ b/Controladora/ControladoraClientes.cs @@ -58,5 +58,11 @@ namespace Controladora .ToList() .AsReadOnly(); } + public ReadOnlyCollection ListarTodos() + { + return repositorioClientes.Listar() + .ToList() + .AsReadOnly(); + } } } diff --git a/Controladora/ControladoraInformes.cs b/Controladora/ControladoraInformes.cs index a251529..9c80051 100644 --- a/Controladora/ControladoraInformes.cs +++ b/Controladora/ControladoraInformes.cs @@ -5,6 +5,7 @@ using Microsoft.EntityFrameworkCore.Metadata.Conventions; using Modelo; using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Text.Json; @@ -18,20 +19,20 @@ namespace Controladora private RepositorioFactura repositorioFactura = new(new Context()); - public List? MostrarFacturasEnRangoDeFechas(DateTime FechaInicio, DateTime FechaFinal) + public ReadOnlyCollection? MostrarFacturasEnRangoDeFechas(DateTime FechaInicio, DateTime FechaFinal) { if (FechaFinal < FechaInicio) return null; - List list = repositorioFactura.ObtenerFacturasEnRangoFechas(FechaInicio, FechaFinal); + ReadOnlyCollection list = repositorioFactura.ObtenerFacturasEnRangoFechas(FechaInicio, FechaFinal); return list; } - public List? MostrarFacturasDeClienteEnRangoDeFechas(Cliente cli, DateTime fecInicio, DateTime fecFin) + public ReadOnlyCollection? MostrarFacturasDeClienteEnRangoDeFechas(Cliente cli, DateTime fecInicio, DateTime fecFin) { if (fecFin < fecInicio) return null; if (cli.Cuit <= 0) return null; - List list = repositorioFactura.ObtenerFacturasDeClienteEnRangoFechas(cli, fecInicio, fecFin); + ReadOnlyCollection list = repositorioFactura.ObtenerFacturasDeClienteEnRangoFechas(cli, fecInicio, fecFin); return list; } diff --git a/Modelo/RepositorioFactura.cs b/Modelo/RepositorioFactura.cs index e9f2e67..fabb3ca 100644 --- a/Modelo/RepositorioFactura.cs +++ b/Modelo/RepositorioFactura.cs @@ -68,22 +68,25 @@ namespace Modelo return factura; } - public List ObtenerFacturasDeClienteEnRangoFechas(Cliente cli, DateTime fecInicio, DateTime fecFin) + public ReadOnlyCollection ObtenerFacturasDeClienteEnRangoFechas(Cliente cli, DateTime fecInicio, DateTime fecFin) { return context.Facturas .AsNoTracking() .Include(x => x.Detalles) + .ThenInclude(x => x.Producto) .Include(x => x.Cliente) .Where(x => x.Fecha > fecInicio && x.Fecha < fecFin && x.Cliente.Cuit == cli.Cuit) - .ToList(); + .ToList().AsReadOnly(); } - public List ObtenerFacturasEnRangoFechas(DateTime fecInicio, DateTime fecFinal) + public ReadOnlyCollection ObtenerFacturasEnRangoFechas(DateTime fecInicio, DateTime fecFinal) { return context.Facturas .AsNoTracking() .Include(x => x.Detalles) + .ThenInclude(x=>x.Producto) + .Include(x => x.Cliente) .Where(x => (x.Fecha > fecInicio && x.Fecha < fecFinal)) - .ToList(); + .ToList().AsReadOnly(); } diff --git a/Vista/Informes/FrmInformeFacturaPorFecha.Designer.cs b/Vista/Informes/FrmInformeFacturaPorFecha.Designer.cs index 53e5f74..087a597 100644 --- a/Vista/Informes/FrmInformeFacturaPorFecha.Designer.cs +++ b/Vista/Informes/FrmInformeFacturaPorFecha.Designer.cs @@ -50,6 +50,7 @@ btnBuscar.TabIndex = 0; btnBuscar.Text = "Hacer Busqueda"; btnBuscar.UseVisualStyleBackColor = true; + btnBuscar.Click += btnBuscar_Click; // // dateInicio // @@ -69,6 +70,8 @@ // dgvFactura.AllowUserToAddRows = false; dgvFactura.AllowUserToDeleteRows = false; + dgvFactura.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dgvFactura.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells; dgvFactura.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; dgvFactura.EditMode = DataGridViewEditMode.EditProgrammatically; dgvFactura.Location = new Point(271, 24); @@ -78,11 +81,13 @@ dgvFactura.SelectionMode = DataGridViewSelectionMode.FullRowSelect; dgvFactura.Size = new Size(475, 469); dgvFactura.TabIndex = 3; + dgvFactura.CellClick += dgvFactura_CellClick; // // dgvDetalles // dgvDetalles.AllowUserToAddRows = false; dgvDetalles.AllowUserToDeleteRows = false; + dgvDetalles.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; dgvDetalles.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; dgvDetalles.EditMode = DataGridViewEditMode.EditProgrammatically; dgvDetalles.Location = new Point(763, 24); diff --git a/Vista/Informes/FrmInformeFacturaPorFecha.cs b/Vista/Informes/FrmInformeFacturaPorFecha.cs index 166cede..edec856 100644 --- a/Vista/Informes/FrmInformeFacturaPorFecha.cs +++ b/Vista/Informes/FrmInformeFacturaPorFecha.cs @@ -1,5 +1,8 @@ -using System; +using Controladora; +using Entidades; +using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.ComponentModel; using System.Data; using System.Drawing; @@ -12,9 +15,69 @@ namespace Vista.Informes { public partial class FrmInformeFacturaPorFecha : Form { + private ReadOnlyCollection? facturas; public FrmInformeFacturaPorFecha() { InitializeComponent(); } + + private void btnBuscar_Click(object sender, EventArgs e) + { + if (dateInicio.Value >= dateFin.Value) + { + MessageBox.Show("La fecha de inicio no puede ser mayor que la fecha final.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + + facturas = ControladoraInformes.Instance.MostrarFacturasEnRangoDeFechas(dateInicio.Value, dateFin.Value); + + + if (facturas == null) + { + MessageBox.Show("No se encontraron facturas en el rango de fechas.", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + RefrescarTablaFacturas(facturas); + + } + private void RefrescarTablaFacturas(ReadOnlyCollection list) + { + dgvDetalles.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) + { + dgvDetalles.DataSource = null; + dgvDetalles.DataSource = list; + foreach (DataGridViewColumn column in dgvDetalles.Columns) + { + column.Visible = column.Name == "Subtotal" || column.Name == "NombreProducto" || column.Name == "Cantidad"; + } + } } -} +} \ No newline at end of file diff --git a/Vista/Informes/FrmInformeFacturasPorCliente.Designer.cs b/Vista/Informes/FrmInformeFacturasPorCliente.Designer.cs index a5942b9..b9a4344 100644 --- a/Vista/Informes/FrmInformeFacturasPorCliente.Designer.cs +++ b/Vista/Informes/FrmInformeFacturasPorCliente.Designer.cs @@ -49,7 +49,7 @@ // btnEnviarEmail.Location = new Point(20, 470); btnEnviarEmail.Name = "btnEnviarEmail"; - btnEnviarEmail.Size = new Size(200, 26); + btnEnviarEmail.Size = new Size(239, 26); btnEnviarEmail.TabIndex = 19; btnEnviarEmail.Text = "Enviar Informe Por Email"; btnEnviarEmail.UseVisualStyleBackColor = true; @@ -108,6 +108,8 @@ // dgvFactura.AllowUserToAddRows = false; dgvFactura.AllowUserToDeleteRows = false; + dgvFactura.AllowUserToResizeColumns = false; + dgvFactura.AllowUserToResizeRows = false; dgvFactura.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; dgvFactura.EditMode = DataGridViewEditMode.EditProgrammatically; dgvFactura.Location = new Point(265, 29); @@ -117,29 +119,31 @@ dgvFactura.SelectionMode = DataGridViewSelectionMode.FullRowSelect; dgvFactura.Size = new Size(475, 469); dgvFactura.TabIndex = 13; + dgvFactura.CellClick += dgvFactura_CellClick; // // dateFin // dateFin.Location = new Point(20, 77); dateFin.Name = "dateFin"; - dateFin.Size = new Size(200, 23); + dateFin.Size = new Size(239, 23); dateFin.TabIndex = 12; // // dateInicio // dateInicio.Location = new Point(20, 29); dateInicio.Name = "dateInicio"; - dateInicio.Size = new Size(200, 23); + dateInicio.Size = new Size(239, 23); dateInicio.TabIndex = 11; // // btnBusqueda // btnBusqueda.Location = new Point(20, 438); btnBusqueda.Name = "btnBusqueda"; - btnBusqueda.Size = new Size(200, 26); + btnBusqueda.Size = new Size(239, 26); btnBusqueda.TabIndex = 10; btnBusqueda.Text = "Hacer Busqueda"; btnBusqueda.UseVisualStyleBackColor = true; + btnBusqueda.Click += btnBusqueda_Click; // // dgvCliente // @@ -152,7 +156,7 @@ dgvCliente.Name = "dgvCliente"; dgvCliente.RowHeadersVisible = false; dgvCliente.SelectionMode = DataGridViewSelectionMode.FullRowSelect; - dgvCliente.Size = new Size(200, 306); + dgvCliente.Size = new Size(239, 306); dgvCliente.TabIndex = 20; // // label5 diff --git a/Vista/Informes/FrmInformeFacturasPorCliente.cs b/Vista/Informes/FrmInformeFacturasPorCliente.cs index fa2bb93..cf136db 100644 --- a/Vista/Informes/FrmInformeFacturasPorCliente.cs +++ b/Vista/Informes/FrmInformeFacturasPorCliente.cs @@ -1,5 +1,9 @@ -using System; +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; @@ -12,9 +16,93 @@ 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"; + } } } } diff --git a/Vista/daslug.db b/Vista/daslug.db deleted file mode 100644 index 55eafed..0000000 Binary files a/Vista/daslug.db and /dev/null differ