public ActionResult UploadFile(HttpPostedFileBase file)
        {
            if (file.ContentLength > 0)
            {
                var fileName = Path.GetFileName(file.FileName);
                var path     = Path.Combine(Server.MapPath("~/Files/Factura"), fileName);
                file.SaveAs(path);

                List <DO_Factura> facturaActual = DataManager.GetFactura();

                SLDocument        sl           = new SLDocument(path);
                List <DO_Factura> listaFactura = new List <DO_Factura>();

                int iRow = 2;
                while (!string.IsNullOrEmpty(sl.GetCellValueAsString(iRow, 1)))
                {
                    DO_Factura factura = new DO_Factura();
                    factura.Quincena        = sl.GetCellValueAsDateTime(iRow, 2);
                    factura.Folio           = sl.GetCellValueAsString(iRow, 3);
                    factura.ImporteBase     = sl.GetCellValueAsDouble(iRow, 4);
                    factura.ImportePosteo   = sl.GetCellValueAsDouble(iRow, 5);
                    factura.PisaE           = sl.GetCellValueAsString(iRow, 6);
                    factura.Procede2        = sl.GetCellValueAsString(iRow, 7);
                    factura.Pago2           = sl.GetCellValueAsString(iRow, 8);
                    factura.Fecha           = sl.GetCellValueAsString(iRow, 9);
                    factura.OSPago          = sl.GetCellValueAsString(iRow, 10);
                    factura.Estatus         = sl.GetCellValueAsString(iRow, 11);
                    factura.LineaContratada = sl.GetCellValueAsString(iRow, 12);
                    factura.Paquete         = sl.GetCellValueAsString(iRow, 13);

                    listaFactura.Add(factura);
                    iRow++;
                }

                int lotes = 3000;
                int row   = 1;
                try
                {
                    using (var Conexion = new EntitiesFilder())
                    {
                        foreach (var item in listaFactura)
                        {
                            TBL_NET_HISTORICO_FACTURA historico = new TBL_NET_HISTORICO_FACTURA();
                            historico.QUINCENA         = item.Quincena;
                            historico.FOLIO_SIAC       = item.Folio;
                            historico.IMPORTE_BASE     = item.ImporteBase;
                            historico.IMPORTE_POSTEO   = item.ImportePosteo;
                            historico.PISA_E           = item.PisaE;
                            historico.PROCEDE2         = item.Procede2;
                            historico.PAGO2            = item.Pago2;
                            historico.FECHA            = item.Fecha;
                            historico.OS_PAGO          = item.OSPago;
                            historico.ESTATUS          = item.Estatus;
                            historico.LINEA_CONTRATADA = item.LineaContratada;
                            historico.PAQUETE          = item.Paquete;

                            Conexion.TBL_NET_HISTORICO_FACTURA.Add(historico);

                            if (row % lotes == 0)
                            {
                                Conexion.SaveChanges();
                            }

                            row++;
                        }

                        Conexion.SaveChanges();
                    }

                    List <DO_Factura> listaActualizar = new List <DO_Factura>();
                    List <DO_Factura> listaInsertar   = new List <DO_Factura>();

                    foreach (var item in listaFactura)
                    {
                        if (facturaActual.Where(x => x.Folio == item.Folio).ToList().Count > 0)
                        {
                            listaActualizar.Add(item);
                        }
                        else
                        {
                            listaInsertar.Add(item);
                        }
                    }

                    row = 1;
                    using (var Conexion = new EntitiesFilder())
                    {
                        foreach (var item in listaInsertar)
                        {
                            TBL_NET_FACTURA factura = new TBL_NET_FACTURA();
                            factura.QUINCENA         = item.Quincena;
                            factura.FOLIO_SIAC       = item.Folio;
                            factura.IMPORTE_BASE     = item.ImporteBase;
                            factura.IMPORTE_POSTEO   = item.ImportePosteo;
                            factura.PISA_E           = item.PisaE;
                            factura.PROCEDE2         = item.Procede2;
                            factura.PAGO2            = item.Pago2;
                            factura.FECHA            = item.Fecha;
                            factura.OS_PAGO          = item.OSPago;
                            factura.ESTATUS          = item.Estatus;
                            factura.LINEA_CONTRATADA = item.LineaContratada;
                            factura.PAQUETE          = item.Paquete;

                            Conexion.TBL_NET_FACTURA.Add(factura);

                            if (row % lotes == 0)
                            {
                                Conexion.SaveChanges();
                            }

                            row++;
                        }

                        Conexion.SaveChanges();
                    }

                    row = 1;
                    using (var Conexion = new EntitiesFilder())
                    {
                        foreach (var item in listaActualizar)
                        {
                            TBL_NET_FACTURA factura = Conexion.TBL_NET_FACTURA.Where(x => x.FOLIO_SIAC == item.Folio).FirstOrDefault();

                            factura.QUINCENA         = item.Quincena;
                            factura.IMPORTE_BASE     = item.ImporteBase;
                            factura.IMPORTE_POSTEO   = item.ImportePosteo;
                            factura.PISA_E           = item.PisaE;
                            factura.PROCEDE2         = item.Procede2;
                            factura.PAGO2            = item.Pago2;
                            factura.FECHA            = item.Fecha;
                            factura.OS_PAGO          = item.OSPago;
                            factura.ESTATUS          = item.Estatus;
                            factura.LINEA_CONTRATADA = item.LineaContratada;
                            factura.PAQUETE          = item.Paquete;

                            Conexion.Entry(factura).State = EntityState.Modified;

                            if (row % lotes == 0)
                            {
                                Conexion.SaveChanges();
                            }

                            row++;
                        }

                        Conexion.SaveChanges();
                    }
                }
                catch (Exception er)
                {
                    string a = er.Message;
                }
            }

            return(RedirectToAction("CargarFactura"));
        }
        public ActionResult UploadPIPES()
        {
            string resultado = "";

            if (Request.Files.Count > 0)
            {
                var file = Request.Files[0];
                if (file != null && file.ContentLength > 0)
                {
                    var filename = Path.GetFileName(file.FileName);

                    var path = Path.Combine(Server.MapPath("~/Files/PIPES/"), filename);

                    file.SaveAs(path);

                    SLDocument sL = new SLDocument(path);

                    List <ModeloFolios> list = new List <ModeloFolios>();
                    list = DataManager.GetAllFolios();

                    List <ModeloFolios> ListaActualizar = new List <ModeloFolios>();
                    List <ModeloFolios> ListaInsertar   = new List <ModeloFolios>();

                    try
                    {
                        int row = 2;
                        while (!string.IsNullOrEmpty(sL.GetCellValueAsString(row, 2)))
                        {
                            ModeloFolios modeloFolio = new ModeloFolios();

                            string codigoNominaOperador = sL.GetCellValueAsString(row, 3);

                            modeloFolio.FECHA_CAPTURA                   = sL.GetCellValueAsDateTime(row, 1);
                            modeloFolio.ESTRATEGIA                      = sL.GetCellValueAsString(row, 2);
                            modeloFolio.PROMOTOR                        = sL.GetCellValueAsString(row, 3);
                            modeloFolio.FOLIO_SIAC                      = sL.GetCellValueAsString(row, 4);
                            modeloFolio.ESTATUS_SIAC                    = sL.GetCellValueAsString(row, 5);
                            modeloFolio.TIPO_LINEA                      = sL.GetCellValueAsString(row, 6);
                            modeloFolio.LINEA_CONTRATADA                = sL.GetCellValueAsString(row, 7);
                            modeloFolio.AREA                            = sL.GetCellValueAsString(row, 8);
                            modeloFolio.DIVICION                        = sL.GetCellValueAsString(row, 9);
                            modeloFolio.TIENDA                          = sL.GetCellValueAsString(row, 10);
                            modeloFolio.PAQUETE                         = sL.GetCellValueAsString(row, 11);
                            modeloFolio.OBSERVACIONES                   = sL.GetCellValueAsString(row, 12);
                            modeloFolio.RESPUESTA_TELMEX                = sL.GetCellValueAsString(row, 13);
                            modeloFolio.MOTIVO_RECHAZO                  = sL.GetCellValueAsString(row, 14);
                            modeloFolio.TELEFONO_ASIGNADO               = sL.GetCellValueAsString(row, 15);
                            modeloFolio.TELEFONO_PORTADO                = sL.GetCellValueAsString(row, 16);
                            modeloFolio.OS_ALTA_LINEA_MULTIORDEN        = sL.GetCellValueAsString(row, 17);
                            modeloFolio.FECHA_OS_ALTA_LINEA_MULTIORDEN  = sL.GetCellValueAsString(row, 18);
                            modeloFolio.ORDEN_SERVICIO_TV               = sL.GetCellValueAsString(row, 19);
                            modeloFolio.FECHA_OS_TV                     = sL.GetCellValueAsString(row, 20);
                            modeloFolio.CAMPANA                         = sL.GetCellValueAsString(row, 21);
                            modeloFolio.ESTATUS_ATENCION_MULTIORDEN     = sL.GetCellValueAsString(row, 22);
                            modeloFolio.ESTATUS_PISA_MULTIORDEN         = sL.GetCellValueAsString(row, 23);
                            modeloFolio.PISA_OS_FECHA_POSTEO_MULTIORDEN = sL.GetCellValueAsString(row, 24);
                            modeloFolio.ESTATUS_PISA_TV                 = sL.GetCellValueAsString(row, 25);
                            modeloFolio.PISA_OS_FECHA_POSTEO_TV         = sL.GetCellValueAsString(row, 26);
                            modeloFolio.FECHA_CAMBIO_ESTATUS_SIAC       = sL.GetCellValueAsString(row, 27);
                            modeloFolio.CLAVE_EMPRESA                   = sL.GetCellValueAsString(row, 28);
                            modeloFolio.NOMBRE_EMPRESA                  = sL.GetCellValueAsString(row, 29);
                            modeloFolio.SERVICIO_FACTURACION_TERCEROS   = sL.GetCellValueAsString(row, 30);
                            modeloFolio.ETAPA_PISA_MULTIORDEN           = sL.GetCellValueAsString(row, 31);
                            modeloFolio.ETAPA_PISA_TV                   = sL.GetCellValueAsString(row, 32);
                            modeloFolio.ETIQUETA_TRAFICO_VOZ            = sL.GetCellValueAsString(row, 33);
                            modeloFolio.TRAFICO_VOZ_ENTRANTE            = sL.GetCellValueAsString(row, 34);
                            modeloFolio.TRAFICO_VOZ_SALIENTE            = sL.GetCellValueAsString(row, 35);
                            modeloFolio.FECHA_TRAFICO_VOZ               = sL.GetCellValueAsString(row, 36);
                            modeloFolio.TRAFICO_DATOS                   = sL.GetCellValueAsString(row, 37);
                            modeloFolio.FECHA_TRAFICO_DATOS             = sL.GetCellValueAsString(row, 38);
                            modeloFolio.FECHA_FACTURCION                = sL.GetCellValueAsString(row, 39);
                            modeloFolio.DESCRIPCION_VALIDA_ADEUDO       = sL.GetCellValueAsString(row, 40);
                            modeloFolio.CORREO_ELECTRONICO              = sL.GetCellValueAsString(row, 41);
                            modeloFolio.FECHA_NACIMIENTO                = sL.GetCellValueAsString(row, 42);
                            modeloFolio.ID        = sL.GetCellValueAsString(row, 43);
                            modeloFolio.TERMINAL  = sL.GetCellValueAsString(row, 44);
                            modeloFolio.DISTRITO  = sL.GetCellValueAsString(row, 45);
                            modeloFolio.TECELULAR = sL.GetCellValueAsString(row, 46);

                            //No estan en base de datos.
                            //Faltan los que no están en base de datos.

                            if (list.Where(x => x.FOLIO_SIAC == modeloFolio.FOLIO_SIAC).ToList().Count == 0)
                            {
                                ListaInsertar.Add(modeloFolio);
                            }
                            else
                            {
                                ListaActualizar.Add(modeloFolio);
                            }

                            row++;
                        }

                        //Insertamos los registros.
                        int lotes = 3000;
                        row = 1;

                        using (var db = new EntitiesFilder())
                        {
                            foreach (ModeloFolios folio in ListaInsertar)
                            {
                                TBL_FOLIOS tBL_FOLIOS = new TBL_FOLIOS();

                                tBL_FOLIOS.FECHA_CAPTURA                   = folio.FECHA_CAPTURA;
                                tBL_FOLIOS.ESTRATEGIA                      = folio.ESTRATEGIA;
                                tBL_FOLIOS.PROMOTOR                        = folio.PROMOTOR;
                                tBL_FOLIOS.FOLIO_SIAC                      = folio.FOLIO_SIAC;
                                tBL_FOLIOS.ESTATUS_SIAC                    = folio.ESTATUS_SIAC;
                                tBL_FOLIOS.TIPO_LINEA                      = folio.TIPO_LINEA;
                                tBL_FOLIOS.LINEA_CONTRATADA                = folio.LINEA_CONTRATADA;
                                tBL_FOLIOS.AREA                            = folio.AREA;
                                tBL_FOLIOS.DIVICION                        = folio.DIVICION;
                                tBL_FOLIOS.TIENDA                          = folio.TIENDA;
                                tBL_FOLIOS.PAQUETE                         = folio.PAQUETE;
                                tBL_FOLIOS.OBSERVACIONES                   = folio.OBSERVACIONES;
                                tBL_FOLIOS.RESPUESTA_TELMEX                = folio.RESPUESTA_TELMEX;
                                tBL_FOLIOS.MOTIVO_RECHAZO                  = folio.MOTIVO_RECHAZO;
                                tBL_FOLIOS.TELEFONO_ASIGNADO               = folio.TELEFONO_ASIGNADO;
                                tBL_FOLIOS.TELEFONO_PORTADO                = folio.TELEFONO_PORTADO;
                                tBL_FOLIOS.OS_ALTA_LINEA_MULTIORDEN        = folio.OS_ALTA_LINEA_MULTIORDEN;
                                tBL_FOLIOS.FECHA_OS_ALTA_LINEA_MULTIORDEN  = folio.FECHA_OS_ALTA_LINEA_MULTIORDEN;
                                tBL_FOLIOS.ORDEN_SERVICIO_TV               = folio.ORDEN_SERVICIO_TV;
                                tBL_FOLIOS.FECHA_OS_TV                     = folio.FECHA_OS_TV;
                                tBL_FOLIOS.CAMPANA                         = folio.CAMPANA;
                                tBL_FOLIOS.ESTATUS_ATENCION_MULTIORDEN     = folio.ESTATUS_ATENCION_MULTIORDEN;
                                tBL_FOLIOS.ESTATUS_PISA_MULTIORDEN         = folio.ESTATUS_PISA_MULTIORDEN;
                                tBL_FOLIOS.PISA_OS_FECHA_POSTEO_MULTIORDEN = folio.PISA_OS_FECHA_POSTEO_MULTIORDEN;
                                tBL_FOLIOS.ESTATUS_PISA_TV                 = folio.ESTATUS_PISA_TV;
                                tBL_FOLIOS.PISA_OS_FECHA_POSTEO_TV         = folio.PISA_OS_FECHA_POSTEO_TV;
                                tBL_FOLIOS.FECHA_CAMBIO_ESTATUS_SIAC       = folio.FECHA_CAMBIO_ESTATUS_SIAC;
                                tBL_FOLIOS.CLAVE_EMPRESA                   = folio.CLAVE_EMPRESA;
                                tBL_FOLIOS.NOMBRE_EMPRESA                  = folio.NOMBRE_EMPRESA;
                                tBL_FOLIOS.SERVICIO_FACTURACION_TERCEROS   = folio.SERVICIO_FACTURACION_TERCEROS;
                                tBL_FOLIOS.ETAPA_PISA_MULTIORDEN           = folio.ETAPA_PISA_MULTIORDEN;
                                tBL_FOLIOS.ETAPA_PISA_TV                   = folio.ETAPA_PISA_TV;
                                tBL_FOLIOS.ETIQUETA_TRAFICO_VOZ            = folio.ETIQUETA_TRAFICO_VOZ;
                                tBL_FOLIOS.TRAFICO_VOZ_ENTRANTE            = folio.TRAFICO_VOZ_ENTRANTE;
                                tBL_FOLIOS.TRAFICO_VOZ_SALIENTE            = folio.TRAFICO_VOZ_SALIENTE;
                                tBL_FOLIOS.FECHA_TRAFICO_VOZ               = folio.FECHA_TRAFICO_VOZ;
                                tBL_FOLIOS.TRAFICO_DATOS                   = folio.TRAFICO_DATOS;
                                tBL_FOLIOS.FECHA_TRAFICO_DATOS             = folio.FECHA_TRAFICO_DATOS;
                                tBL_FOLIOS.FECHA_FACTURCION                = folio.FECHA_FACTURCION;
                                tBL_FOLIOS.DESCRIPCION_VALIDA_ADEUDO       = folio.DESCRIPCION_VALIDA_ADEUDO;
                                tBL_FOLIOS.CORREO_ELECTRONICO              = folio.CORREO_ELECTRONICO;
                                tBL_FOLIOS.FECHA_NACIMIENTO                = folio.FECHA_NACIMIENTO;
                                tBL_FOLIOS.ID        = folio.ID;
                                tBL_FOLIOS.TERMINAL  = folio.TERMINAL;
                                tBL_FOLIOS.DISTRITO  = folio.DISTRITO;
                                tBL_FOLIOS.TECELULAR = folio.TECELULAR;

                                db.TBL_FOLIOS.Add(tBL_FOLIOS);

                                if (row % lotes == 0)
                                {
                                    db.SaveChanges();
                                }

                                row++;
                            }

                            db.SaveChanges();
                        }

                        row = 1;
                        using (var db = new EntitiesFilder())
                        {
                            foreach (var folio in ListaActualizar)
                            {
                                TBL_FOLIOS tBL_FOLIOS = db.TBL_FOLIOS.Where(x => x.FOLIO_SIAC == folio.FOLIO_SIAC).FirstOrDefault();

                                tBL_FOLIOS.FECHA_CAPTURA                   = folio.FECHA_CAPTURA;
                                tBL_FOLIOS.ESTRATEGIA                      = folio.ESTRATEGIA;
                                tBL_FOLIOS.PROMOTOR                        = folio.PROMOTOR;
                                tBL_FOLIOS.ESTATUS_SIAC                    = folio.ESTATUS_SIAC;
                                tBL_FOLIOS.TIPO_LINEA                      = folio.TIPO_LINEA;
                                tBL_FOLIOS.LINEA_CONTRATADA                = folio.LINEA_CONTRATADA;
                                tBL_FOLIOS.AREA                            = folio.AREA;
                                tBL_FOLIOS.DIVICION                        = folio.DIVICION;
                                tBL_FOLIOS.TIENDA                          = folio.TIENDA;
                                tBL_FOLIOS.PAQUETE                         = folio.PAQUETE;
                                tBL_FOLIOS.OBSERVACIONES                   = folio.OBSERVACIONES;
                                tBL_FOLIOS.RESPUESTA_TELMEX                = folio.RESPUESTA_TELMEX;
                                tBL_FOLIOS.MOTIVO_RECHAZO                  = folio.MOTIVO_RECHAZO;
                                tBL_FOLIOS.TELEFONO_ASIGNADO               = folio.TELEFONO_ASIGNADO;
                                tBL_FOLIOS.TELEFONO_PORTADO                = folio.TELEFONO_PORTADO;
                                tBL_FOLIOS.OS_ALTA_LINEA_MULTIORDEN        = folio.OS_ALTA_LINEA_MULTIORDEN;
                                tBL_FOLIOS.FECHA_OS_ALTA_LINEA_MULTIORDEN  = folio.FECHA_OS_ALTA_LINEA_MULTIORDEN;
                                tBL_FOLIOS.ORDEN_SERVICIO_TV               = folio.ORDEN_SERVICIO_TV;
                                tBL_FOLIOS.FECHA_OS_TV                     = folio.FECHA_OS_TV;
                                tBL_FOLIOS.CAMPANA                         = folio.CAMPANA;
                                tBL_FOLIOS.ESTATUS_ATENCION_MULTIORDEN     = folio.ESTATUS_ATENCION_MULTIORDEN;
                                tBL_FOLIOS.ESTATUS_PISA_MULTIORDEN         = folio.ESTATUS_PISA_MULTIORDEN;
                                tBL_FOLIOS.PISA_OS_FECHA_POSTEO_MULTIORDEN = folio.PISA_OS_FECHA_POSTEO_MULTIORDEN;
                                tBL_FOLIOS.ESTATUS_PISA_TV                 = folio.ESTATUS_PISA_TV;
                                tBL_FOLIOS.PISA_OS_FECHA_POSTEO_TV         = folio.PISA_OS_FECHA_POSTEO_TV;
                                tBL_FOLIOS.FECHA_CAMBIO_ESTATUS_SIAC       = folio.FECHA_CAMBIO_ESTATUS_SIAC;
                                tBL_FOLIOS.CLAVE_EMPRESA                   = folio.CLAVE_EMPRESA;
                                tBL_FOLIOS.NOMBRE_EMPRESA                  = folio.NOMBRE_EMPRESA;
                                tBL_FOLIOS.SERVICIO_FACTURACION_TERCEROS   = folio.SERVICIO_FACTURACION_TERCEROS;
                                tBL_FOLIOS.ETAPA_PISA_MULTIORDEN           = folio.ETAPA_PISA_MULTIORDEN;
                                tBL_FOLIOS.ETAPA_PISA_TV                   = folio.ETAPA_PISA_TV;
                                tBL_FOLIOS.ETIQUETA_TRAFICO_VOZ            = folio.ETIQUETA_TRAFICO_VOZ;
                                tBL_FOLIOS.TRAFICO_VOZ_ENTRANTE            = folio.TRAFICO_VOZ_ENTRANTE;
                                tBL_FOLIOS.TRAFICO_VOZ_SALIENTE            = folio.TRAFICO_VOZ_SALIENTE;
                                tBL_FOLIOS.FECHA_TRAFICO_VOZ               = folio.FECHA_TRAFICO_VOZ;
                                tBL_FOLIOS.TRAFICO_DATOS                   = folio.TRAFICO_DATOS;
                                tBL_FOLIOS.FECHA_TRAFICO_DATOS             = folio.FECHA_TRAFICO_DATOS;
                                tBL_FOLIOS.FECHA_FACTURCION                = folio.FECHA_FACTURCION;
                                tBL_FOLIOS.DESCRIPCION_VALIDA_ADEUDO       = folio.DESCRIPCION_VALIDA_ADEUDO;
                                tBL_FOLIOS.CORREO_ELECTRONICO              = folio.CORREO_ELECTRONICO;
                                tBL_FOLIOS.FECHA_NACIMIENTO                = folio.FECHA_NACIMIENTO;
                                tBL_FOLIOS.ID        = folio.ID;
                                tBL_FOLIOS.TERMINAL  = folio.TERMINAL;
                                tBL_FOLIOS.DISTRITO  = folio.DISTRITO;
                                tBL_FOLIOS.TECELULAR = folio.TECELULAR;

                                //Se cambia el estado de registro a modificado.
                                db.Entry(tBL_FOLIOS).State = EntityState.Modified;

                                if (row % lotes == 0)
                                {
                                    db.SaveChanges();
                                }

                                row++;
                            }

                            db.SaveChanges();
                        }
                        resultado = "Existoso!";
                    }
                    catch (Exception er)
                    {
                        resultado = "Error al subir el archivo." + er.Message;
                    }
                }
                else
                {
                    resultado = "El archivo esta vacío";
                }
            }
            else
            {
                resultado = "No se selecciono archivos";
            }

            DataManager.InsertLog(((ModeloUsuarios)Session["USER_LOGGED"]).NOMBRE_COMPLETO, "Se actualiza PIPES, resultado:" + resultado);
            return(View("CargarPIPES"));
        }
        public ActionResult UploadFile(HttpPostedFileBase file)
        {
            if (file.ContentLength > 0)
            {
                var fileName = Path.GetFileName(file.FileName);
                var path     = Path.Combine(Server.MapPath("~/Files/Bono/"), fileName);
                file.SaveAs(path);

                List <DO_Bono> lBonoActual = DataManager.GetBono();
                SLDocument     sl          = new SLDocument(path);

                List <DO_Bono> listaBono = new List <DO_Bono>();

                int iRow = 2;
                while (!string.IsNullOrEmpty(sl.GetCellValueAsString(iRow, 1)))
                {
                    DO_Bono bono = new DO_Bono();

                    bono.Quincena           = sl.GetCellValueAsDateTime(iRow, 1);
                    bono.Rubro              = sl.GetCellValueAsString(iRow, 2);
                    bono.Folio              = sl.GetCellValueAsString(iRow, 3);
                    bono.ImporteEfectividad = sl.GetCellValueAsDouble(iRow, 4);
                    bono.ImporteComercio    = sl.GetCellValueAsDouble(iRow, 5);
                    bono.ImporteCalidad     = sl.GetCellValueAsDouble(iRow, 6);

                    listaBono.Add(bono);

                    iRow++;
                }

                int lotes = 3000;
                int row   = 1;
                try
                {
                    using (var Conexion = new EntitiesFilder())
                    {
                        foreach (var item in listaBono)
                        {
                            TBL_NET_BONO_HISTORICO historico = new TBL_NET_BONO_HISTORICO();

                            historico.QUINCENA            = item.Quincena;
                            historico.RUBRO               = item.Rubro;
                            historico.FOLIO               = item.Folio;
                            historico.IMPORTE_EFECTIVIDAD = item.ImporteEfectividad;
                            historico.IMPORTE_COMERCIO    = item.ImporteComercio;
                            historico.IMPORTE_CALIDAD     = item.ImporteCalidad;

                            Conexion.TBL_NET_BONO_HISTORICO.Add(historico);

                            if (row % lotes == 0)
                            {
                                Conexion.SaveChanges();
                            }

                            row++;
                        }

                        Conexion.SaveChanges();
                    }

                    List <DO_Bono> listaActualizar = new List <DO_Bono>();
                    List <DO_Bono> listaInsertar   = new List <DO_Bono>();

                    foreach (var item in listaBono)
                    {
                        if (lBonoActual.Where(x => x.Folio == item.Folio).ToList().Count > 0)
                        {
                            listaActualizar.Add(item);
                        }
                        else
                        {
                            listaInsertar.Add(item);
                        }
                    }



                    row = 1;
                    using (var Conexion = new EntitiesFilder())
                    {
                        foreach (var item in listaInsertar)
                        {
                            TBL_NET_BONO bono = new TBL_NET_BONO();
                            bono.QUINCENA            = item.Quincena;
                            bono.RUBRO               = item.Rubro;
                            bono.FOLIO               = item.Folio;
                            bono.IMPORTE_CALIDAD     = item.ImporteCalidad;
                            bono.IMPORTE_COMERCIO    = item.ImporteComercio;
                            bono.IMPORTE_EFECTIVIDAD = item.ImporteEfectividad;

                            Conexion.TBL_NET_BONO.Add(bono);

                            if (row % lotes == 0)
                            {
                                Conexion.SaveChanges();
                            }

                            row++;
                        }
                        Conexion.SaveChanges();
                    }

                    row = 1;
                    using (var Conexion = new EntitiesFilder())
                    {
                        foreach (var item in listaActualizar)
                        {
                            TBL_NET_BONO bono = Conexion.TBL_NET_BONO.Where(x => x.FOLIO == item.Folio).FirstOrDefault();

                            bono.QUINCENA = item.Quincena;
                            bono.RUBRO    = item.Rubro;
                            if (bono.IMPORTE_CALIDAD == 0)
                            {
                                bono.IMPORTE_CALIDAD = item.ImporteCalidad;
                            }

                            if (bono.IMPORTE_COMERCIO == 0)
                            {
                                bono.IMPORTE_COMERCIO = item.ImporteComercio;
                            }

                            if (bono.IMPORTE_EFECTIVIDAD == 0)
                            {
                                bono.IMPORTE_EFECTIVIDAD = item.ImporteEfectividad;
                            }

                            Conexion.Entry(bono).State = System.Data.Entity.EntityState.Modified;

                            if (row % lotes == 0)
                            {
                                Conexion.SaveChanges();
                            }

                            row++;
                        }
                        Conexion.SaveChanges();
                    }
                }
                catch (Exception)
                {
                    throw;
                }
            }

            return(RedirectToAction("CargarBono"));
        }