public IEnumerable<EstadoResultadoCompletoModel> ReporteEstadoResultadoCompleto(string ANIO = null, string MES = null) { var puntosVentaService = new PosTurnosServices(); List<EstadoResultadoCompletoModel> result = new List<EstadoResultadoCompletoModel>(); var ventas = puntosVentaService.ObtenerPosTurnosPorFecha(ANIO, MES); var totales = ventas.GroupBy(x => x.FECHA).Select(y => new { FECHA = y.Key, TOTALVENTA = y.Sum(x => x.TOTAL_VENTA), TOTALCOSTO = y.Sum(x => x.TOTAL_COSTO) }); //var cons = consumo.ObtenerConsumosPorCriterio(x => x.FECHA).Select(y => new { FECHA = y.Key, TOTALVENTA = y.Sum(x => x.TOTAL_VENTA), TOTALCOSTO = y.Sum(x => x.TOTAL_COSTO) }); decimal? totalventa = 0; decimal? totalcosto = 0; DateTime? fecha = null; foreach (var item in totales) { totalventa = totalventa + item.TOTALVENTA; totalcosto = totalcosto + item.TOTALCOSTO; fecha = item.FECHA; } result.Add(new EstadoResultadoCompletoModel() { MES = ObtenerMesEspanol(Convert.ToInt32(MES)),FECHA = fecha, NRO = 1 ,OPERACION = "INGRESOS", SUBOPERACION = "INGRESOS OPERATIVOS", DETALLE = "VENTAS", IMPORTE = totalventa }); result.Add(new EstadoResultadoCompletoModel() { NRO = 2, OPERACION = "INGRESOS", SUBOPERACION = "INGRESOS OPERATIVOS", DETALLE = "COSTOS DE VENTAS", IMPORTE = -totalcosto }); var serIngreso = new IngresosServices(); var ingresos = serIngreso.ObtenerIngresosPorFecha(ANIO, MES); var totalesIngreso = ingresos.Where(x=>x.ID_AMORTIZACION == null).Sum(x => x.IMPORTE); result.Add(new EstadoResultadoCompletoModel() { NRO = 3,OPERACION = "INGRESOS", SUBOPERACION = "INGRESOS NO OPERATIVOS", DETALLE = "OTROS INGRESOS", IMPORTE = totalesIngreso }); //ajustes var serAjus = new AjustePosServices(); var ajustes = serAjus.ObtenerAjustePorMesAnio(ANIO, MES); var totalesAjustes = ajustes.GroupBy(x => new { x.SG_TANQUES.SG_COMBUSTIBLES.NOMBRE , x.SG_TANQUES.SG_COMBUSTIBLES.PRECIO_VENTA }).Select(y => new { TOTALAJUSTE = y.Sum(x => x.CANTIDAD) * y.Key.PRECIO_VENTA, COMBUSTIBLE = y.Key.NOMBRE }); //consumo var serConsumo = new ClientesConsumoServices(); var consumos = serConsumo.ObtenerConsumoPorMesyAnio(ANIO, MES); var totalesConsumos = consumos.GroupBy(x => new { x.SG_CLIENTES_CONSUMO.NOMBRE, x.SG_COMBUSTIBLES.DESCRIPCION }).Select(y => new { TOTALCONSUMO = y.Sum(x => x.IMPORTE_BS), COMBUSTIBLE = y.Key.DESCRIPCION, CLIENTE = y.Key.NOMBRE }); decimal? calibraciongasolina = 0; decimal? calibracionDiesel = 0; foreach (var itemcalibracion in totalesConsumos) { if (itemcalibracion.CLIENTE == "CALIBRACION IBMETRO") { if (itemcalibracion.COMBUSTIBLE == "GASOLINA ESPECIAL") { calibraciongasolina = itemcalibracion.TOTALCONSUMO; } else { calibracionDiesel = itemcalibracion.TOTALCONSUMO; } } } int cnt = 6; int cnt1 = 4; foreach (var item in totalesAjustes) { EstadoResultadoCompletoModel aju = new EstadoResultadoCompletoModel() { NRO =cnt, OPERACION = "INGRESOS", SUBOPERACION = "EXCEDENTE/PERDIDA", DETALLE = string.Format("EXCEDENTE/PERDIDA - {0}",item.COMBUSTIBLE), IMPORTE = item.COMBUSTIBLE == "GASOLINA" ? item.TOTALAJUSTE - calibraciongasolina : item.TOTALAJUSTE - calibracionDiesel }; cnt++; result.Add(aju); } //result.Add(new EstadoResultadoCompletoModel() { NRO = 4 ,OPERACION = "INGRESOS", SUBOPERACION = "EXCEDENTE/PERDIDA", DETALLE = "EXCEDENTE/PERDIDA - DIESEL", IMPORTE = 755 }); //result.Add(new EstadoResultadoCompletoModel() { NRO = 5 ,OPERACION = "INGRESOS", SUBOPERACION = "EXCEDENTE/PERDIDA", DETALLE = "EXCEDENTE/PERDIDA - GASOLINA", IMPORTE = 523 }); var egresos = serIngreso.ObtenerEgresosPaginado(null, ANIO, MES); foreach (var item in egresos.OrderBy(x => x.FECHA)) { EstadoResultadoCompletoModel egre = new EstadoResultadoCompletoModel() { NRO =cnt, OPERACION = "EGRESOS", SUBOPERACION = "GASTOS", DETALLE = item.CONCEPTO, //MES = item.FECHA.ToString("MMMM").ToUpper(); IMPORTE = -item.IMPORTE, //UTILIDA_BRUTA_NETA = (decimal)(totalventa - totalcosto) }; cnt++; //egre.MES = ObtenerMesEspanol(item.FECHA.Month); //item.FECHA.ToString("MMMM").ToUpper(); result.Add(egre); } //consumos foreach (var itemCons in totalesConsumos) { if (itemCons.CLIENTE == "CALIBRACION IBMETRO") { EstadoResultadoCompletoModel aux = new EstadoResultadoCompletoModel() { NRO = cnt1, OPERACION = "INGRESOS", SUBOPERACION = "INGRESOS OPERATIVOS", DETALLE = string.Format("{0} {1}", itemCons.CLIENTE, itemCons.COMBUSTIBLE), IMPORTE = -itemCons.TOTALCONSUMO //UTILIDA_BRUTA_NETA = (decimal)(totalventa - totalcosto) }; //var ajusteconsumo = result.Where(x => x.SUBOPERACION == "EXCEDENTE/PERDIDA" && x.DETALLE.Contains(itemCons.COMBUSTIBLE)).FirstOrDefault(); //if (ajusteconsumo != null) //{ // ajusteconsumo.IMPORTE = ajusteconsumo.IMPORTE - itemCons.TOTALCONSUMO; //} cnt1++; result.Add(aux); } else { EstadoResultadoCompletoModel cons = new EstadoResultadoCompletoModel() { NRO = cnt, OPERACION = "EGRESOS", SUBOPERACION = "CONSUMO PROPIO", DETALLE = string.Format("{0} {1}", itemCons.CLIENTE, itemCons.COMBUSTIBLE), IMPORTE = -itemCons.TOTALCONSUMO //UTILIDA_BRUTA_NETA = (decimal)(totalventa - totalcosto) }; cnt++; result.Add(cons); } //egre.MES = ObtenerMesEspanol(item.FECHA.Month); //item.FECHA.ToString("MMMM").ToUpper(); } return result; }
public IEnumerable<EstadoResultadoModel> ReporteEstadoResultado(string ANIO = null, string MES = null) { List<EstadoResultadoModel> result = new List<EstadoResultadoModel>(); var servicio = new IngresosServices(); var consumo = new ClientesConsumoServices(); var puntosVentaService = new PosTurnosServices(); var egresos = servicio.ObtenerEgresosPaginado(null, ANIO, MES); var ventas = puntosVentaService.ObtenerPosTurnosPorFecha(ANIO, MES); var totales = ventas.GroupBy(x => x.FECHA).Select(y => new { FECHA = y.Key, TOTALVENTA = y.Sum(x => x.TOTAL_VENTA), TOTALCOSTO = y.Sum(x => x.TOTAL_COSTO) }); //var cons = consumo.ObtenerConsumosPorCriterio(x => x.FECHA).Select(y => new { FECHA = y.Key, TOTALVENTA = y.Sum(x => x.TOTAL_VENTA), TOTALCOSTO = y.Sum(x => x.TOTAL_COSTO) }); decimal? totalventa = 0; decimal? totalcosto = 0; foreach (var item in totales) { totalventa = totalventa + item.TOTALVENTA; totalcosto = totalcosto + item.TOTALCOSTO; } foreach (var item in egresos.OrderBy(x => x.FECHA)) { EstadoResultadoModel egre = new EstadoResultadoModel() { FECHA = item.FECHA, DETALLE = item.CONCEPTO, //MES = item.FECHA.ToString("MMMM").ToUpper(); TOTAL = item.IMPORTE, UTILIDA_BRUTA_NETA = (decimal)(totalventa - totalcosto) }; egre.MES = ObtenerMesEspanol(item.FECHA.Month); //item.FECHA.ToString("MMMM").ToUpper(); result.Add(egre); } return result; }