public List<Variacion> DiferenciaAntesNoExistenEnElNuevo(ListaHojasExcel excelAnterior) { var listaVariaciones = new List<Variacion>(); foreach (var hoja in excelAnterior.Hojas) { foreach (var oportunidad in hoja.Value.ToList()) { var oportunidadNueva = Oportunidad.CrearOportunidad(Oportunidad.HojaPerdidas); oportunidadNueva.Codigo = oportunidad.Codigo; oportunidadNueva.Cuenta = oportunidad.Cuenta; //oportunidadNueva.Nombre = oportunidad.Nombre; oportunidadNueva.FechaDeIngreso = oportunidad.FechaDeIngreso; var variacion = new Variacion(oportunidadNueva, oportunidad); listaVariaciones.Add(variacion); hoja.Value.Remove(oportunidad); } } return listaVariaciones; }
public void EliminarIguales(ListaHojasExcel excelAnterior) { foreach (var hoja in Hojas) { var nterior = excelAnterior.Hojas[hoja.Key]; var iguales = hoja.Value.Where(x => nterior.Any(y => x.Iguales(y))).ToList(); hoja.Value.RemoveAll(x => iguales.Any(x.Iguales)); nterior.RemoveAll(x => iguales.Any(x.Iguales)); } }
public List<Variacion> DiferenciaEntreIguales(ListaHojasExcel excelAnterior) { var listaVariaciones = new List<Variacion>(); foreach (var hoja in Hojas) { foreach (var hojaAnterior in excelAnterior.Hojas) { foreach (var oportunidad in hoja.Value.ToList()) { var oportunidadAnterior = hojaAnterior.Value.FirstOrDefault(x => x.Codigo == oportunidad.Codigo && x.FechaDeIngreso == oportunidad.FechaDeIngreso); if (oportunidadAnterior != null) { var variacion = new Variacion(oportunidad, oportunidadAnterior); listaVariaciones.Add(variacion); hojaAnterior.Value.Remove(oportunidadAnterior); hoja.Value.Remove(oportunidad); } } } } return listaVariaciones; }
public void EliminarAgrupados(ListaHojasExcel excelAnterior) { foreach (var hoja in Hojas) { var codigosActuales = from oportunidad in hoja.Value let grupo = new { Codigo = oportunidad.Codigo, Fase = oportunidad.Fase, Probabilidad = oportunidad.Probabilidad, FechaDeIngreso = oportunidad.FechaDeIngreso } group oportunidad by grupo into t select new { Codigo = t.Key.Codigo, Fase = t.Key.Fase, Probabilidad = t.Key.Probabilidad, FechaDeIngreso = t.Key.FechaDeIngreso, Total = t.Sum(oportunidad => oportunidad.Ponderado) }; var codigosAnteriores = from oportunidad in excelAnterior.Hojas[hoja.Key] let grupo = new { Codigo = oportunidad.Codigo, Fase = oportunidad.Fase, Probabilidad = oportunidad.Probabilidad, FechaDeIngreso = oportunidad.FechaDeIngreso } group oportunidad by grupo into t select new { Codigo = t.Key.Codigo, Fase = t.Key.Fase, Probabilidad = t.Key.Probabilidad, FechaDeIngreso = t.Key.FechaDeIngreso, Total = t.Sum(oportunidad => oportunidad.Ponderado) }; var gruposIguales = codigosActuales.Where(x => codigosAnteriores.Any(o => x.Codigo == o.Codigo && x.Fase == o.Fase && x.Probabilidad == o.Probabilidad && x.FechaDeIngreso == o.FechaDeIngreso && x.Total == o.Total)).ToList(); hoja.Value.RemoveAll(x => gruposIguales.Any(o => x.Codigo == o.Codigo && x.Fase == o.Fase && x.Probabilidad == o.Probabilidad && x.FechaDeIngreso == o.FechaDeIngreso)); excelAnterior.Hojas[hoja.Key].RemoveAll(x => gruposIguales.Any(o => x.Codigo == o.Codigo && x.Fase == o.Fase && x.Probabilidad == o.Probabilidad && x.FechaDeIngreso == o.FechaDeIngreso)); } }
public static void CrearVariacion(string pathExcelAnterior, string pathExcelActual, ProgressBar progressBar) { //Actual var excelActual = new ListaHojasExcel(pathExcelActual); progressBar.Value++; //Anterior var excelAnterior = new ListaHojasExcel(pathExcelAnterior); progressBar.Value ++; var hojaVariaciones = excelActual.Excel.Workbook.Worksheets[Oportunidad.HojaVariacion]; var filaVariacion = 5; //var variacionHeader = new Variacion(); //hojaVariaciones.Cells[filaVariacion, variacionHeader.ColumnaCuenta].Value = "Cuenta"; //hojaVariaciones.Cells[filaVariacion, variacionHeader.ColumnaCodigo].Value = "Codigo"; //hojaVariaciones.Cells[filaVariacion, variacionHeader.ColumnaOportunidad].Value = "Nombre Oportunidad"; //hojaVariaciones.Cells[filaVariacion, variacionHeader.ColumnaResponsable].Value = "Responsable"; //hojaVariaciones.Cells[filaVariacion, variacionHeader.ColumnaFase].Value = "Fase"; //hojaVariaciones.Cells[filaVariacion, variacionHeader.ColumnaFaseAnterior].Value = "FaseAnterior"; //hojaVariaciones.Cells[filaVariacion, variacionHeader.ColumnaImporteUSD].Value = "ImporteUSD"; //hojaVariaciones.Cells[filaVariacion, variacionHeader.ColumnaImporteUSDAnterior].Value = "ImporteUSDAnterior"; //hojaVariaciones.Cells[filaVariacion, variacionHeader.ColumnaMonto].Value = "Monto"; //hojaVariaciones.Cells[filaVariacion, variacionHeader.ColumnaMontoAnterior].Value = "MontoAnterior"; //hojaVariaciones.Cells[filaVariacion, variacionHeader.ColumnaPonderado].Value = "Ponderado"; //hojaVariaciones.Cells[filaVariacion, variacionHeader.ColumnaPonderadoAnterior].Value = "PonderadoAnterior"; //hojaVariaciones.Cells[filaVariacion, variacionHeader.ColumnaProbabilidad].Value = "Probabilidad"; //hojaVariaciones.Cells[filaVariacion, variacionHeader.ColumnaProbabilidadAnterior].Value = "ProbabilidadAnterior"; ////Separacion //hojaVariaciones.Cells[filaVariacion, variacionHeader.ColumnaValidacionTc].Value = "TC"; //hojaVariaciones.Cells[filaVariacion, variacionHeader.ColumnaValidacionYTD].Value = "YTD"; //hojaVariaciones.Cells[filaVariacion, variacionHeader.ColumnaValidacionYtg100].Value = "YTG100"; //hojaVariaciones.Cells[filaVariacion, variacionHeader.ColumnaValidacionYtgPonderado].Value = "YTGPonderado"; //hojaVariaciones.Cells[filaVariacion, variacionHeader.ColumnaValidacionDiferencia].Value = "Diferencia"; filaVariacion++; excelActual.EliminarIguales(excelAnterior); progressBar.Value++; //excelActual.EliminarAgrupados(excelAnterior); //progressBar.Step++; var listaVariacionesIguales = excelActual.DiferenciaEntreIguales(excelAnterior); progressBar.Value++; var listaVariacionesAnteriores = excelActual.DiferenciaAntesNoExistenEnElNuevo(excelAnterior); progressBar.Value++; var listaVariacionesNuevas = excelActual.DiferenciaAntesNoExistianEnElAnterior(); progressBar.Value++; var listaVariacionesTotales = listaVariacionesIguales.Union(listaVariacionesNuevas).Union(listaVariacionesAnteriores); var variaciones = listaVariacionesTotales.ToList(); progressBar.Value++; foreach (var variacion in variaciones) { variacion.PegarDatos(hojaVariaciones, filaVariacion); filaVariacion++; } progressBar.Value++; excelActual.Excel.Save(); excelActual.Excel.Dispose(); }