public IEnumerable<MovimientoProductoModel> ReporteSustanciasControladas(string ANIO = null, string MES = null, int ID_COMBUSTIBLE = 0) { List<MovimientoProductoModel> result = new List<MovimientoProductoModel>(); string date = string.Format("01/{0}/{1}", MES, ANIO); DateTime dt = Convert.ToDateTime(date); var _serKcm = new KardexCombustibleServices(); var _serPos = new PosTurnosServices(); var _serAju = new AjustePosServices(); _serKcm.SP_ActualizarKardexMN(dt, 0); var kardex = _serKcm.ObtenerKardexMNCombustible(MES, ANIO); var posMes = _serPos.ObtenerPosTurnosPorFecha(ANIO, MES); var ajusteposMes = _serAju.ObtenerAjustePosPorFecha(ANIO, MES); var grupo = kardex.GroupBy(x => x.FECHA); var combustible = kardex.Where(x => x.SG_COMBUSTIBLES.ID_COMBUSTIBLE == ID_COMBUSTIBLE); foreach (var item in grupo) { MovimientoProductoModel venDia = new MovimientoProductoModel { FECHA = item.Key, //SALDO_INICIAL_DIE = diesel.where(y=>y.FECHA == item.Key).fi }; var com = combustible.Where(x => x.FECHA == item.Key).FirstOrDefault(); var pos = posMes.Where(x => x.FECHA == item.Key && x.SG_POS.ID_COMBUSTIBLE == ID_COMBUSTIBLE).OrderBy(y => y.ID_POS); var total = pos.Sum(x => x.TOTAL); var postotales = pos.GroupBy(x => x.ID_POS).Select(y => new {TOTAL = y.Sum(z=>z.TOTAL) , ID_POS = y.Key }); venDia.PRODUCTO = com.SG_COMBUSTIBLES.DESCRIPCION; venDia.MES = ObtenerMesEspanol(com.FECHA.Month); venDia.SALDO_ANTERIOR = com.SALDO_INICIAL; venDia.COMPRA = (decimal)com.COMPRAS; venDia.VENTA = (decimal)com.VENTAS; decimal saldoventa = venDia.VENTA; venDia.SALDO_ACTUAL = (decimal)com.ACUMULADOS; venDia.PROVEEDOR = "YPFB"; venDia.TELEFONO = "4703510"; int cont = 0; foreach (var puntos in postotales) { if (cont == 0) { venDia.MANGUERA1 = puntos.TOTAL == 0 ? 0 :(puntos.TOTAL / total) * venDia.VENTA; venDia.MANGUERA1 = Math.Round(venDia.MANGUERA1, 0); saldoventa = saldoventa - venDia.MANGUERA1; } else if (cont == 1) { venDia.MANGUERA2 = puntos.TOTAL == 0 ? 0 : (puntos.TOTAL / total) * venDia.VENTA; venDia.MANGUERA2 = Math.Round(venDia.MANGUERA2, 0); saldoventa = saldoventa - venDia.MANGUERA2; } else if (cont == 2) { venDia.MANGUERA3 = puntos.TOTAL == 0 ? 0 : (puntos.TOTAL / total) * venDia.VENTA; venDia.MANGUERA3 = Math.Round(venDia.MANGUERA3, 0); saldoventa = saldoventa - venDia.MANGUERA3; } else if (cont == 3) { //venDia.MANGUERA4 = puntos.TOTAL == 0 ? 0 : (puntos.TOTAL / total) * venDia.VENTA; //venDia.MANGUERA4 = Math.Round(venDia.MANGUERA4, 0); venDia.MANGUERA4 = saldoventa; saldoventa = 0; } else { cont++; } cont++; } result.Add(venDia); } result = result.OrderBy(x => x.FECHA).ToList(); return result; }
public IEnumerable<UtilidadBrutaReal> ReporteUtilidadBrutaReal(string ANIO = null, string MES = null) { //obtener precvios var _serCom = new CombustiblesServices(); var Gas = _serCom.ObtenerCombustible(x => x.ID_COMBUSTIBLE == 1); var Die = _serCom.ObtenerCombustible(x => x.ID_COMBUSTIBLE == 2); //// var _serKcm = new KardexCombustibleServices(); List<UtilidadBrutaReal> result = new List<UtilidadBrutaReal>(); string date = string.Format("01/{0}/{1}", MES, ANIO); DateTime dt = Convert.ToDateTime(date); _serKcm.SP_ActualizarKardexMN(dt, 0); var kardex = _serKcm.ObtenerKardexCombustible(MES, ANIO); var grupo = kardex.GroupBy(x => x.FECHA); var diesel = kardex.Where(x => x.SG_COMBUSTIBLES.NOMBRE == "DIESEL").OrderBy(x => x.FECHA); var gasolina = kardex.Where(x => x.SG_COMBUSTIBLES.NOMBRE == "GASOLINA").OrderBy(x => x.FECHA); UtilidadBrutaReal result1 = new UtilidadBrutaReal(); result1.ING_INV_INI_FIS_DIE = diesel.FirstOrDefault().SALDO_INICIAL; result1.ING_VEN_TOT_FIS_DIE = diesel.GroupBy(x => x.SG_COMBUSTIBLES.ID_COMBUSTIBLE).Select(x => x.Sum(y => y.VENTAS)).FirstOrDefault().Value; result1.ING_VEN_TOT_VAL_DIE = (decimal)(result1.ING_VEN_TOT_FIS_DIE * Die.PRECIO_VENTA); result1.ING_INV_INI_VAL_DIE = (decimal)(result1.ING_INV_INI_FIS_DIE * Die.PRECIO_VENTA); result1.ING_INV_INI_FIS_GAS = gasolina.FirstOrDefault().SALDO_INICIAL; result1.ING_VEN_TOT_FIS_GAS = gasolina.GroupBy(x => x.SG_COMBUSTIBLES.ID_COMBUSTIBLE).Select(x => x.Sum(y => y.VENTAS)).FirstOrDefault().Value; result1.ING_VEN_TOT_VAL_GAS = (decimal)(result1.ING_VEN_TOT_FIS_GAS * Gas.PRECIO_VENTA); result1.ING_INV_INI_VAL_GAS = (decimal)(result1.ING_INV_INI_FIS_GAS * Gas.PRECIO_VENTA); result1.EGR_INV_INI_FIS_DIE = (decimal)diesel.LastOrDefault().ACUMULADOS; result1.EGR_VEN_TOT_FIS_DIE = diesel.GroupBy(x => x.SG_COMBUSTIBLES.ID_COMBUSTIBLE).Select(x => x.Sum(y => y.COMPRAS)).FirstOrDefault().Value; result1.EGR_INV_INI_FIS_GAS = (decimal)gasolina.LastOrDefault().ACUMULADOS; result1.EGR_VEN_TOT_FIS_GAS = gasolina.GroupBy(x => x.SG_COMBUSTIBLES.ID_COMBUSTIBLE).Select(x => x.Sum(y => y.COMPRAS)).FirstOrDefault().Value; result1.EGR_VEN_TOT_VAL_DIE = (decimal)(result1.EGR_VEN_TOT_FIS_DIE * Die.PRECIO_COMPRA); result1.EGR_INV_INI_VAL_DIE = (decimal)(result1.EGR_INV_INI_FIS_DIE * Die.PRECIO_COMPRA); result1.EGR_VEN_TOT_VAL_GAS = (decimal)(result1.EGR_VEN_TOT_FIS_GAS * Gas.PRECIO_COMPRA); result1.EGR_INV_INI_VAL_GAS = (decimal)(result1.EGR_INV_INI_FIS_GAS * Gas.PRECIO_COMPRA); result.Add(result1); return result; }