Añadida Funcionalidad Informes
This commit is contained in:
@@ -1,5 +1,8 @@
|
|||||||
using Entidades;
|
using Entidades;
|
||||||
|
using Entidades.DTO;
|
||||||
using Informes;
|
using Informes;
|
||||||
|
using Microsoft.EntityFrameworkCore.Metadata.Conventions;
|
||||||
|
using Modelo;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@@ -13,6 +16,30 @@ namespace Controladora
|
|||||||
{
|
{
|
||||||
const string configpath = "settings.json";
|
const string configpath = "settings.json";
|
||||||
|
|
||||||
|
private RepositorioFactura repositorioFactura = new(new Context());
|
||||||
|
|
||||||
|
public List<Factura>? MostrarFacturasEnRangoDeFechas(DateTime FechaInicio, DateTime FechaFinal)
|
||||||
|
{
|
||||||
|
if (FechaFinal < FechaInicio) return null;
|
||||||
|
|
||||||
|
List<Factura> list = repositorioFactura.ObtenerFacturasEnRangoFechas(FechaInicio, FechaFinal);
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Factura>? MostrarFacturasDeClienteEnRangoDeFechas(Cliente cli, DateTime fecInicio, DateTime fecFin)
|
||||||
|
{
|
||||||
|
if (fecFin < fecInicio) return null;
|
||||||
|
if (cli.Cuit <= 0) return null;
|
||||||
|
|
||||||
|
List<Factura> list = repositorioFactura.ObtenerFacturasDeClienteEnRangoFechas(cli, fecInicio, fecFin);
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<DtoProductoInforme>? MostrarProductosMasVendidos()
|
||||||
|
{
|
||||||
|
return repositorioFactura.ObtenerInformeProductoMasUsados();
|
||||||
|
}
|
||||||
|
|
||||||
public void GuardarConfig(ConfigEmail config)
|
public void GuardarConfig(ConfigEmail config)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
|||||||
10
Entidades/DTO/DtoProductoInforme.cs
Normal file
10
Entidades/DTO/DtoProductoInforme.cs
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Entidades.DTO
|
||||||
|
{
|
||||||
|
public record DtoProductoInforme(int Id, string Nombre, int CantidadVendida, int StockRemanente);
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
using System.Collections.ObjectModel;
|
using System.Collections.ObjectModel;
|
||||||
using Entidades;
|
using Entidades;
|
||||||
|
using Entidades.DTO;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
namespace Modelo
|
namespace Modelo
|
||||||
@@ -15,8 +16,8 @@ namespace Modelo
|
|||||||
{
|
{
|
||||||
return context.Facturas
|
return context.Facturas
|
||||||
.AsNoTracking()
|
.AsNoTracking()
|
||||||
.Include(x=>x.Detalles)
|
.Include(x => x.Detalles)
|
||||||
.Include(x=>x.Cliente)
|
.Include(x => x.Cliente)
|
||||||
.ToList();
|
.ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -38,7 +39,7 @@ namespace Modelo
|
|||||||
{
|
{
|
||||||
detalle.Producto = (detalle.Producto.EsPerecedero) ?
|
detalle.Producto = (detalle.Producto.EsPerecedero) ?
|
||||||
context.ProductoPercederos.FirstOrDefault(x => x.Id == detalle.Producto.Id) :
|
context.ProductoPercederos.FirstOrDefault(x => x.Id == detalle.Producto.Id) :
|
||||||
context.ProductoNoPercederos.FirstOrDefault(x => x.Id == detalle.Producto.Id) ;
|
context.ProductoNoPercederos.FirstOrDefault(x => x.Id == detalle.Producto.Id);
|
||||||
}
|
}
|
||||||
|
|
||||||
t.Detalles = list;
|
t.Detalles = list;
|
||||||
@@ -61,10 +62,45 @@ namespace Modelo
|
|||||||
public Factura ObtenerPorId(Factura fac)
|
public Factura ObtenerPorId(Factura fac)
|
||||||
{
|
{
|
||||||
var factura = context.Facturas
|
var factura = context.Facturas
|
||||||
.Include(x=>x.Detalles)
|
.Include(x => x.Detalles)
|
||||||
.ThenInclude(x=>x.Producto)
|
.ThenInclude(x => x.Producto)
|
||||||
.FirstOrDefault(x => x.Id == fac.Id);
|
.FirstOrDefault(x => x.Id == fac.Id);
|
||||||
return factura;
|
return factura;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<Factura> ObtenerFacturasDeClienteEnRangoFechas(Cliente cli, DateTime fecInicio, DateTime fecFin)
|
||||||
|
{
|
||||||
|
return context.Facturas
|
||||||
|
.AsNoTracking()
|
||||||
|
.Include(x => x.Detalles)
|
||||||
|
.Include(x => x.Cliente)
|
||||||
|
.Where(x => x.Fecha > fecInicio && x.Fecha < fecFin && x.Cliente.Cuit == cli.Cuit)
|
||||||
|
.ToList();
|
||||||
|
}
|
||||||
|
public List<Factura> ObtenerFacturasEnRangoFechas(DateTime fecInicio, DateTime fecFinal)
|
||||||
|
{
|
||||||
|
return context.Facturas
|
||||||
|
.AsNoTracking()
|
||||||
|
.Include(x => x.Detalles)
|
||||||
|
.Where(x => (x.Fecha > fecInicio && x.Fecha < fecFinal))
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<DtoProductoInforme> ObtenerInformeProductoMasUsados()
|
||||||
|
{
|
||||||
|
List<DtoProductoInforme> list
|
||||||
|
= context.DetalleFacturas
|
||||||
|
.GroupBy(df => df.Producto)
|
||||||
|
.Select(g => new DtoProductoInforme
|
||||||
|
(
|
||||||
|
g.Key.Id,
|
||||||
|
g.Key.Nombre,
|
||||||
|
g.Sum(df => df.Cantidad),
|
||||||
|
context.Lotes.Include(x => x.Producto).Where(x=>x.Id == g.Key.Id).Sum(x => x.Cantidad)
|
||||||
|
))
|
||||||
|
.ToList();
|
||||||
|
return list;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
49
Vista/PantallaPrincipal.Designer.cs
generated
49
Vista/PantallaPrincipal.Designer.cs
generated
@@ -37,15 +37,19 @@
|
|||||||
remitosToolStripMenuItem = new ToolStripMenuItem();
|
remitosToolStripMenuItem = new ToolStripMenuItem();
|
||||||
ordenDeCompraToolStripMenuItem = new ToolStripMenuItem();
|
ordenDeCompraToolStripMenuItem = new ToolStripMenuItem();
|
||||||
pedidosPresupuestoToolStripMenuItem = new ToolStripMenuItem();
|
pedidosPresupuestoToolStripMenuItem = new ToolStripMenuItem();
|
||||||
|
categoriasToolStripMenuItem = new ToolStripMenuItem();
|
||||||
configToolStripMenuItem = new ToolStripMenuItem();
|
configToolStripMenuItem = new ToolStripMenuItem();
|
||||||
informesToolStripMenuItem = new ToolStripMenuItem();
|
informesToolStripMenuItem = new ToolStripMenuItem();
|
||||||
categoriasToolStripMenuItem = new ToolStripMenuItem();
|
informesToolStrip = new ToolStripMenuItem();
|
||||||
|
facturasPorFechaToolStripMenuItem = new ToolStripMenuItem();
|
||||||
|
facturasPorClienteToolStripMenuItem = new ToolStripMenuItem();
|
||||||
|
productoMasVendidoToolStripMenuItem = new ToolStripMenuItem();
|
||||||
menuStrip1.SuspendLayout();
|
menuStrip1.SuspendLayout();
|
||||||
SuspendLayout();
|
SuspendLayout();
|
||||||
//
|
//
|
||||||
// menuStrip1
|
// menuStrip1
|
||||||
//
|
//
|
||||||
menuStrip1.Items.AddRange(new ToolStripItem[] { gestionarToolStripMenuItem, configToolStripMenuItem });
|
menuStrip1.Items.AddRange(new ToolStripItem[] { gestionarToolStripMenuItem, informesToolStrip, configToolStripMenuItem });
|
||||||
menuStrip1.Location = new Point(0, 0);
|
menuStrip1.Location = new Point(0, 0);
|
||||||
menuStrip1.Name = "menuStrip1";
|
menuStrip1.Name = "menuStrip1";
|
||||||
menuStrip1.Size = new Size(800, 24);
|
menuStrip1.Size = new Size(800, 24);
|
||||||
@@ -109,6 +113,13 @@
|
|||||||
pedidosPresupuestoToolStripMenuItem.Text = "Presupuesto";
|
pedidosPresupuestoToolStripMenuItem.Text = "Presupuesto";
|
||||||
pedidosPresupuestoToolStripMenuItem.Click += pedidosPresupuestoToolStripMenuItem_Click;
|
pedidosPresupuestoToolStripMenuItem.Click += pedidosPresupuestoToolStripMenuItem_Click;
|
||||||
//
|
//
|
||||||
|
// categoriasToolStripMenuItem
|
||||||
|
//
|
||||||
|
categoriasToolStripMenuItem.Name = "categoriasToolStripMenuItem";
|
||||||
|
categoriasToolStripMenuItem.Size = new Size(180, 22);
|
||||||
|
categoriasToolStripMenuItem.Text = "Categorias";
|
||||||
|
categoriasToolStripMenuItem.Click += categoriasToolStripMenuItem_Click;
|
||||||
|
//
|
||||||
// configToolStripMenuItem
|
// configToolStripMenuItem
|
||||||
//
|
//
|
||||||
configToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { informesToolStripMenuItem });
|
configToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { informesToolStripMenuItem });
|
||||||
@@ -119,16 +130,34 @@
|
|||||||
// informesToolStripMenuItem
|
// informesToolStripMenuItem
|
||||||
//
|
//
|
||||||
informesToolStripMenuItem.Name = "informesToolStripMenuItem";
|
informesToolStripMenuItem.Name = "informesToolStripMenuItem";
|
||||||
informesToolStripMenuItem.Size = new Size(121, 22);
|
informesToolStripMenuItem.Size = new Size(180, 22);
|
||||||
informesToolStripMenuItem.Text = "Informes";
|
informesToolStripMenuItem.Text = "Informes";
|
||||||
informesToolStripMenuItem.Click += informesToolStripMenuItem_Click;
|
informesToolStripMenuItem.Click += informesToolStripMenuItem_Click;
|
||||||
//
|
//
|
||||||
// categoriasToolStripMenuItem
|
// informesToolStrip
|
||||||
//
|
//
|
||||||
categoriasToolStripMenuItem.Name = "categoriasToolStripMenuItem";
|
informesToolStrip.DropDownItems.AddRange(new ToolStripItem[] { facturasPorFechaToolStripMenuItem, facturasPorClienteToolStripMenuItem, productoMasVendidoToolStripMenuItem });
|
||||||
categoriasToolStripMenuItem.Size = new Size(180, 22);
|
informesToolStrip.Name = "informesToolStrip";
|
||||||
categoriasToolStripMenuItem.Text = "Categorias";
|
informesToolStrip.Size = new Size(66, 20);
|
||||||
categoriasToolStripMenuItem.Click += categoriasToolStripMenuItem_Click;
|
informesToolStrip.Text = "Informes";
|
||||||
|
//
|
||||||
|
// facturasPorFechaToolStripMenuItem
|
||||||
|
//
|
||||||
|
facturasPorFechaToolStripMenuItem.Name = "facturasPorFechaToolStripMenuItem";
|
||||||
|
facturasPorFechaToolStripMenuItem.Size = new Size(194, 22);
|
||||||
|
facturasPorFechaToolStripMenuItem.Text = "Facturas Por Fecha";
|
||||||
|
//
|
||||||
|
// facturasPorClienteToolStripMenuItem
|
||||||
|
//
|
||||||
|
facturasPorClienteToolStripMenuItem.Name = "facturasPorClienteToolStripMenuItem";
|
||||||
|
facturasPorClienteToolStripMenuItem.Size = new Size(194, 22);
|
||||||
|
facturasPorClienteToolStripMenuItem.Text = "Facturas Por Cliente";
|
||||||
|
//
|
||||||
|
// productoMasVendidoToolStripMenuItem
|
||||||
|
//
|
||||||
|
productoMasVendidoToolStripMenuItem.Name = "productoMasVendidoToolStripMenuItem";
|
||||||
|
productoMasVendidoToolStripMenuItem.Size = new Size(194, 22);
|
||||||
|
productoMasVendidoToolStripMenuItem.Text = "Producto Mas Vendido";
|
||||||
//
|
//
|
||||||
// PantallaPrincipal
|
// PantallaPrincipal
|
||||||
//
|
//
|
||||||
@@ -161,5 +190,9 @@
|
|||||||
private ToolStripMenuItem configToolStripMenuItem;
|
private ToolStripMenuItem configToolStripMenuItem;
|
||||||
private ToolStripMenuItem informesToolStripMenuItem;
|
private ToolStripMenuItem informesToolStripMenuItem;
|
||||||
private ToolStripMenuItem categoriasToolStripMenuItem;
|
private ToolStripMenuItem categoriasToolStripMenuItem;
|
||||||
|
private ToolStripMenuItem informesToolStrip;
|
||||||
|
private ToolStripMenuItem facturasPorFechaToolStripMenuItem;
|
||||||
|
private ToolStripMenuItem facturasPorClienteToolStripMenuItem;
|
||||||
|
private ToolStripMenuItem productoMasVendidoToolStripMenuItem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user