示例#1
0
        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;
        }
示例#2
0
 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));
     }
 }
示例#3
0
        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;
        }
示例#4
0
        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));

            }
        }
示例#5
0
        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();
        }