estadisticas terminadas con detalle del mejor vendedor
This commit is contained in:
+99
-91
@@ -10,13 +10,15 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using System.Xml.Serialization.Configuration;
|
||||
|
||||
namespace compabetov2
|
||||
{
|
||||
public partial class Estadiscticas : Form
|
||||
{
|
||||
private List<VentaModel> ventasDia;
|
||||
private List<VentaModel> ventasMes;
|
||||
Dictionary<string, List<Dictionary<string, dynamic>>> resumen;
|
||||
decimal costosCompraProductos;
|
||||
decimal ganaciaBrutaProductos;
|
||||
|
||||
public Estadiscticas()
|
||||
{
|
||||
@@ -35,120 +37,102 @@ namespace compabetov2
|
||||
string fechaBuscaStr = dtpBuscar.Text;
|
||||
|
||||
DateTime.TryParseExact(fechaBuscaStr, "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime fechaBuscar);
|
||||
ventasDia = service.conseguirVentasDia(fechaBuscar);
|
||||
ventasMes = service.conseguirVentasMes(fechaBuscar);
|
||||
resumen = service.estadisticas(fechaBuscar);
|
||||
|
||||
List<DetalleVentaModel> productosMes = estadisticasMes();
|
||||
List<DetalleVentaModel> productosDia = estadisticasDia();
|
||||
decimal totalmes = totalMes();
|
||||
decimal totaldia = totalDia();
|
||||
|
||||
decimal totaldianeto = totalDiaNeto();
|
||||
decimal importeMes = calcularImporte(resumen["mes"]);
|
||||
decimal importeDia = calcularImporte(resumen["dia"]);
|
||||
|
||||
Dictionary<string, List<Envio>> envios = service.conseguirEnvioMes(fechaBuscar);
|
||||
|
||||
int enviosMes = cantidadEnvios(envios["mes"]);
|
||||
int enviosDia = cantidadEnvios(envios["dia"]);
|
||||
|
||||
|
||||
decimal utilidadMes = calcularUtilidad(resumen["mes"], importeMes, enviosMes);
|
||||
|
||||
Dictionary<string,dynamic> estadisticas = new Dictionary<string, dynamic>
|
||||
{
|
||||
{ "mes", new Dictionary<string, dynamic>{
|
||||
{ "productos", productosMes },
|
||||
{ "productoMasVendido", prodctoMasVendido(productosMes) },
|
||||
{ "mejorVendedor", mejorVenderdorMes() },
|
||||
{ "totalMes", totalmes },
|
||||
{ "EnvioCantidad", totalMesSinEnvio(envios) },
|
||||
{ "mejorVendedor", "yo"/*mejorVenderdorMes()*/ },
|
||||
{ "EnvioCantidad", enviosMes },
|
||||
{ "totalImportes", importeMes },
|
||||
}
|
||||
},
|
||||
{ "dia", new Dictionary<string, dynamic>{
|
||||
{ "productos", productosDia },
|
||||
{ "productoMasVendido", prodctoMasVendido(productosDia) },
|
||||
{ "mejorVendedor", mejorVenderdorDia() },
|
||||
{ "totalDia", totalDia()},
|
||||
{ "totalNetoDia", totaldianeto },
|
||||
{ "EnvioCantidad", totalDiaSinEnvio(envios) },
|
||||
{ "mejorVendedor", "yo"/*mejorVenderdorMes()*/ },
|
||||
{ "EnvioCantidad", enviosDia },
|
||||
{ "totalImportes", importeDia },
|
||||
}
|
||||
}
|
||||
};
|
||||
mostrarDatos(estadisticas);
|
||||
}
|
||||
|
||||
private int totalMesSinEnvio(Dictionary<string, List<Envio>> envios)
|
||||
{
|
||||
|
||||
return envios["mes"].Count;
|
||||
private int cantidadEnvios(List<Envio> envios)
|
||||
{
|
||||
return envios.Count;
|
||||
}
|
||||
|
||||
private int totalDiaSinEnvio(Dictionary<string, List<Envio>> envios)
|
||||
private decimal calcularUtilidad(List<Dictionary<string, dynamic>> resumen, decimal totalImportes, int cantidadEnvios)
|
||||
{
|
||||
return envios["dia"].Count;
|
||||
}
|
||||
decimal utilidad = 0;
|
||||
|
||||
private decimal totalMes()
|
||||
{
|
||||
decimal total = 0;
|
||||
foreach(VentaModel venta in ventasMes)
|
||||
costosCompraProductos = 0;
|
||||
ganaciaBrutaProductos = 0;
|
||||
|
||||
|
||||
foreach (Dictionary<string, dynamic> venta_y_detalles in resumen)
|
||||
{
|
||||
total += venta.total;
|
||||
}
|
||||
|
||||
return total;
|
||||
}
|
||||
|
||||
private decimal totalDia()
|
||||
{
|
||||
decimal total = 0;
|
||||
|
||||
foreach (VentaModel venta in ventasDia)
|
||||
{
|
||||
total += venta.total;
|
||||
}
|
||||
|
||||
return total;
|
||||
}
|
||||
|
||||
private decimal totalDiaNeto()
|
||||
{
|
||||
decimal total = 0;
|
||||
foreach (VentaModel venta in ventasDia)
|
||||
{
|
||||
List<DetalleVentaModel> detalles = service.conseguirDetallesVenta(venta);
|
||||
decimal totalDetalle = 0;
|
||||
foreach(DetalleVentaModel detalle in detalles)
|
||||
foreach(DetalleVentaModel detalle in venta_y_detalles["detalles"])
|
||||
{
|
||||
totalDetalle += detalle.cantidad * (detalle.producto.precio - detalle.producto.precioCompra);
|
||||
ganaciaBrutaProductos += detalle.cantidad * detalle.producto.precio;
|
||||
costosCompraProductos += detalle.cantidad * detalle.producto.precioCompra;
|
||||
}
|
||||
total += totalDetalle;
|
||||
}
|
||||
return total;
|
||||
|
||||
utilidad = ganaciaBrutaProductos - costosCompraProductos;
|
||||
ganaciaBrutaProductos += totalImportes + (cantidadEnvios * 10);
|
||||
utilidad += totalImportes + (cantidadEnvios * 10);
|
||||
return utilidad;
|
||||
}
|
||||
|
||||
private List<DetalleVentaModel> estadisticasMes()
|
||||
{
|
||||
List<Dictionary<string, dynamic>> mes = resumen["mes"];
|
||||
List<DetalleVentaModel> detallesMes = new List<DetalleVentaModel>();
|
||||
//recorre las ventas del mes
|
||||
foreach (VentaModel venta in ventasMes)
|
||||
foreach (Dictionary<string, dynamic> venta_y_detalles in mes)
|
||||
{
|
||||
//consigue los detalles de la venta
|
||||
List<DetalleVentaModel> detallesVenta = service.conseguirDetallesVenta(venta);
|
||||
|
||||
//recorre los detalles de la venta
|
||||
foreach (DetalleVentaModel detalle in detallesVenta)
|
||||
foreach (DetalleVentaModel detallesVenta in venta_y_detalles["detalles"])
|
||||
{
|
||||
int totalElementos = detallesMes.Count;
|
||||
int contador = 0;
|
||||
for (int i = 0; i <= totalElementos; i++)
|
||||
{
|
||||
//si no encuentra el producto lo agrega
|
||||
contador++;
|
||||
//si no existe el producto lo agrega
|
||||
if (i == totalElementos)
|
||||
{
|
||||
DetalleVentaModel detalleAgregar = new DetalleVentaModel(detalle.cantidad, detalle.producto, detalle.idVenta);
|
||||
DetalleVentaModel detalleAgregar = new DetalleVentaModel(detallesVenta.cantidad, detallesVenta.producto, detallesVenta.idVenta);
|
||||
detallesMes.Add(detalleAgregar);
|
||||
break;
|
||||
}
|
||||
|
||||
DetalleVentaModel producto = detallesMes[i];
|
||||
//si encuentra el produco solo aumneta la cantidad
|
||||
if (producto.producto.nombre.Equals(detalle.producto.nombre))
|
||||
//si existe el producto solo aumenta la cantidad
|
||||
if (producto.producto.nombre.Equals(detallesVenta.producto.nombre))
|
||||
{
|
||||
producto.cantidad += detalle.cantidad;
|
||||
producto.cantidad += detallesVenta.cantidad;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -158,36 +142,34 @@ namespace compabetov2
|
||||
|
||||
private List<DetalleVentaModel> estadisticasDia()
|
||||
{
|
||||
//solo copie y pegue le metodo estadisticas dia y cambie el key en resumen de mes a dia
|
||||
List<Dictionary<string, dynamic>> dia = resumen["dia"];
|
||||
List<DetalleVentaModel> detallesDia = new List<DetalleVentaModel>();
|
||||
//recorre las ventas del mes
|
||||
foreach (VentaModel venta in ventasDia)
|
||||
{
|
||||
//consigue los detalles de la venta
|
||||
List<DetalleVentaModel> detallesVenta = service.conseguirDetallesVenta(venta);
|
||||
foreach (Dictionary<string, dynamic> venta_y_detalles in dia) {
|
||||
|
||||
//recorre los detalles de la venta
|
||||
foreach (DetalleVentaModel detalle in detallesVenta)
|
||||
foreach (DetalleVentaModel detallesVenta in venta_y_detalles["detalles"])
|
||||
{
|
||||
int totalElementos = detallesDia.Count;
|
||||
int contador = 0;
|
||||
for (int i = 0; i <= totalElementos; i++)
|
||||
{
|
||||
contador++;
|
||||
//si no encuentra el producto lo agrega
|
||||
//si no existe el producto lo agrega
|
||||
if (i == totalElementos)
|
||||
{
|
||||
DetalleVentaModel detalleAgregar = new DetalleVentaModel(detalle.cantidad, detalle.producto, detalle.idVenta);
|
||||
DetalleVentaModel detalleAgregar = new DetalleVentaModel(detallesVenta.cantidad, detallesVenta.producto, detallesVenta.idVenta);
|
||||
detallesDia.Add(detalleAgregar);
|
||||
break;
|
||||
}
|
||||
|
||||
DetalleVentaModel producto = detallesDia[i];
|
||||
//si encuentra el produco solo aumneta la cantidad
|
||||
if (producto.producto.nombre.Equals(detalle.producto.nombre))
|
||||
//si existe el producto solo aumenta la cantidad
|
||||
if (producto.producto.nombre.Equals(detallesVenta.producto.nombre))
|
||||
{
|
||||
producto.cantidad += detalle.cantidad;
|
||||
producto.cantidad += detallesVenta.cantidad;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -235,11 +217,13 @@ namespace compabetov2
|
||||
// Agregar la nueva fila al DataGridView
|
||||
dgvMes.Rows.Add(nuevaFila);
|
||||
}
|
||||
decimal totalSinEnvioMes = estadisticas["mes"]["totalMes"] - (estadisticas["mes"]["EnvioCantidad"] *10);
|
||||
lbTotalMes.Text = $"Total de mes: ${estadisticas["mes"]["totalMes"]}";
|
||||
|
||||
lbUtilidadMes.Text = $"Utilidad del mes: ${calcularUtilidad(resumen["mes"], estadisticas["mes"]["totalImportes"], estadisticas["mes"]["EnvioCantidad"])}";
|
||||
lbProductoMes.Text = $"Producto mas vendido: {estadisticas["mes"]["productoMasVendido"]}";
|
||||
lbVendedorMes.Text = $"Mejor vendedor: {estadisticas["mes"]["mejorVendedor"]}";
|
||||
lbMesSEnvio.Text = $"Total del mes sin envios: ${totalSinEnvioMes}";
|
||||
lbGananciasBrutasMes.Text = $"Ganancias Brutas mes: ${ganaciaBrutaProductos}";
|
||||
lbTotalImporteMes.Text = $"Total importe del Mes: ${estadisticas["mes"]["totalImportes"]}";
|
||||
lbEnvioMes.Text = $"Total de envios del mes: ${estadisticas["mes"]["EnvioCantidad"] * 10}";
|
||||
|
||||
//dia
|
||||
List<DetalleVentaModel> detallesDia = estadisticas["dia"]["productos"];
|
||||
@@ -278,12 +262,12 @@ namespace compabetov2
|
||||
dgvDia.Rows.Add(nuevaFila);
|
||||
}
|
||||
|
||||
decimal totalSinEnvioDia = estadisticas["dia"]["totalDia"] - (estadisticas["dia"]["EnvioCantidad"] * 10);
|
||||
lbTotalDia.Text = $"Total de dia: ${estadisticas["dia"]["totalDia"]}";
|
||||
lbUtilidadDia.Text = $"Utilidad del dia: ${calcularUtilidad(resumen["dia"], estadisticas["dia"]["totalImportes"], estadisticas["dia"]["EnvioCantidad"])}";
|
||||
lbProductDia.Text = $"Producto mas vendido: {estadisticas["dia"]["productoMasVendido"]}";
|
||||
lbVendedorDia.Text = $"Mejor vendedor: {estadisticas["dia"]["mejorVendedor"]}";
|
||||
lbDiaSEnvio.Text = $"Total del dia sin envios: ${totalSinEnvioDia}";
|
||||
lbTotalDiaNeto.Text = $"Total neto del dia: ${estadisticas["dia"]["totalNetoDia"]}";
|
||||
lbGananciasBrutasDia.Text = $"Ganancias Brutas dia: ${ganaciaBrutaProductos}";
|
||||
lbTotalImporteDia.Text = $"Total importe del dia: ${estadisticas["dia"]["totalImportes"]}";
|
||||
lbEnviosDia.Text = $"Total de envios del dia: ${estadisticas["dia"]["EnvioCantidad"] * 10}";
|
||||
}
|
||||
|
||||
|
||||
@@ -293,10 +277,11 @@ namespace compabetov2
|
||||
string mejorVendedor = "";
|
||||
int contadorNumeroVentas = 0;
|
||||
|
||||
Dictionary<string,int> empleados = new Dictionary<string,int>();
|
||||
foreach(VentaModel venta in ventasMes)
|
||||
List<Dictionary<string, dynamic>> mes = resumen["mes"];
|
||||
Dictionary<string, int> empleados = new Dictionary<string, int>();
|
||||
foreach (Dictionary<string, dynamic> venta_y_detalle in mes)
|
||||
{
|
||||
|
||||
VentaModel venta = venta_y_detalle["venta"];
|
||||
if (empleados.ContainsKey(venta.responzable))
|
||||
{
|
||||
empleados[venta.responzable] += 1;
|
||||
@@ -342,10 +327,11 @@ namespace compabetov2
|
||||
string mejorVendedor = "";
|
||||
int contadorNumeroVentas = 0;
|
||||
|
||||
List<Dictionary<string, dynamic>> dia = resumen["dia"];
|
||||
Dictionary<string, int> empleados = new Dictionary<string, int>();
|
||||
foreach (VentaModel venta in ventasDia)
|
||||
foreach (Dictionary<string, dynamic> venta_y_detalle in dia)
|
||||
{
|
||||
|
||||
VentaModel venta = venta_y_detalle["venta"];
|
||||
if (empleados.ContainsKey(venta.responzable))
|
||||
{
|
||||
empleados[venta.responzable] += 1;
|
||||
@@ -368,6 +354,23 @@ namespace compabetov2
|
||||
return mejorVendedor;
|
||||
}
|
||||
|
||||
private decimal calcularImporte(List<Dictionary<string, dynamic>> resumen)
|
||||
{
|
||||
decimal totalImporte = 0;
|
||||
|
||||
foreach(Dictionary<string, dynamic> informacion in resumen)
|
||||
{
|
||||
List<DetalleImporte> importes = informacion["importes"];
|
||||
|
||||
foreach(DetalleImporte importe in importes)
|
||||
{
|
||||
totalImporte += importe.cantidad * importe.precioImporte;
|
||||
}
|
||||
}
|
||||
|
||||
return totalImporte;
|
||||
}
|
||||
|
||||
private void label5_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
@@ -410,16 +413,21 @@ namespace compabetov2
|
||||
|
||||
private void btnVentasDia_Click(object sender, EventArgs e)
|
||||
{
|
||||
RegistroVentas ventana = new RegistroVentas(ventasDia,this);
|
||||
RegistroVentas ventana = new RegistroVentas(resumen["dia"],this);
|
||||
ventana.Owner = this;
|
||||
ventana.Show();
|
||||
}
|
||||
|
||||
private void btnVentasMes_Click(object sender, EventArgs e)
|
||||
{
|
||||
RegistroVentas ventana = new RegistroVentas(ventasMes, this);
|
||||
RegistroVentas ventana = new RegistroVentas(resumen["mes"], this);
|
||||
ventana.Owner = this;
|
||||
ventana.Show();
|
||||
}
|
||||
|
||||
private void lbTotalDia_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user