public JsonResult cargarCSV(HttpPostedFileBase archivoCSV, int lineaNegocio)
        {
            FuncionesGeneralesController FNCGrales = new FuncionesGeneralesController();
            List <string>        listaErrores      = new List <string>();
            IEnumerable <string> lineas            = null;
            object respuesta       = null;
            int    totalProcesados = 0;
            int    lineaActual     = 2;
            bool   status          = false;
            string exception       = "Error, se presento un error inesperado";

            //DateTime fecha = new DateTime();
            try
            {
                List <string> csvData = new List <string>();
                using (StreamReader reader = new StreamReader(archivoCSV.InputStream, Encoding.Default))
                {
                    while (!reader.EndOfStream)
                    {
                        csvData.Add(reader.ReadLine());
                    }
                }

                lineas = csvData.Skip(1);

                totalProcesados = lineas.Count();
                using (TransactionScope scope = new TransactionScope())
                {
                    foreach (string linea in lineas)
                    {
                        var lineaSplit = linea.Split(';');
                        if (lineaSplit.Count() == 12)
                        {
                            try
                            {
                                CostoFR CFR = new CostoFR();

                                CFR.TipoOperador    = lineaSplit[0];
                                CFR.Operador        = lineaSplit[1];
                                CFR.AcreedorSap     = lineaSplit[2];
                                CFR.NombreProveedor = lineaSplit[3];
                                CFR.Moneda          = lineaSplit[4];
                                CFR.Importe         = Convert.ToDecimal(string.IsNullOrEmpty(lineaSplit[5]) ? "0" : lineaSplit[5]);
                                // DateTime FechaInicio = FNCGrales.ConvierteFecha(lineaSplit[6], '/', "DMY");
                                CFR.Fecha_Inicio = lineaSplit[6];
                                // DateTime FechaFin = FNCGrales.ConvierteFecha(lineaSplit[7], '/', "DMY");
                                CFR.Fecha_Fin       = lineaSplit[7];
                                CFR.CuentaR         = lineaSplit[8];
                                CFR.SociedadGL      = int.Parse(string.IsNullOrEmpty(lineaSplit[9]) ? "0" : lineaSplit[9]);
                                CFR.TC              = decimal.Parse(string.IsNullOrEmpty(lineaSplit[10]) ? "0" : lineaSplit[10]);
                                CFR.Activo          = 1;
                                CFR.Id_LineaNegocio = lineaNegocio;

                                db.CostoFR.Add(CFR);
                                Log log = new Log();
                                log.insertaNuevoOEliminado(CFR, "Nuevo", "CostoFR.html", Request.UserHostAddress);
                            }
                            catch (FormatException)
                            {
                                listaErrores.Add("línea " + lineaActual + ": Campo con formato erróneo");
                            }
                        }
                        else
                        {
                            listaErrores.Add("Línea " + lineaActual + ": Número de campos insuficiente.");
                        }
                        ++lineaActual;
                    }
                    db.SaveChanges();
                    scope.Complete();
                    exception = "Datos cargados con éxito";
                    status    = true;
                }
            }
            catch (FileNotFoundException)
            {
                exception = "El archivo Selecionado aún no existe en el Repositorio.";
                status    = false;
            }
            catch (UnauthorizedAccessException)
            {
                exception = "No tiene permiso para acceder al archivo actual.";
                status    = false;
            }
            catch (IOException e) when((e.HResult & 0x0000FFFF) == 32)
            {
                exception = "Falta el nombre del archivo, o el archivo o directorio está en uso.";
                status    = false;
            }
            catch (TransactionAbortedException)
            {
                exception = "Transacción abortada. Se presentó un error.";
                status    = false;
            }
            finally
            {
                respuesta = new
                {
                    success = true,
                    results = listaErrores,
                    mensaje = exception,
                    totalProcesados,
                    status
                };
            }
            return(Json(respuesta, JsonRequestBehavior.AllowGet));
        }