public JsonResult BorrarTCCierre(string strId)
        {
            int Id = 0;

            strId = strId.TrimEnd(',');
            object respuesta;

            try {
                string[] Ids = strId.Split(',');

                for (int i = 0; i < Ids.Length; i++)
                {
                    if (Ids[i].Length != 0)
                    {
                        Id = int.Parse(Ids[i]);

                        TC_Cierre oTC_Cierre = db.TC_Cierre.Where(x => x.Id == Id).SingleOrDefault();
                        oTC_Cierre.Activo = 0;
                        Log log = new Log();
                        log.insertaNuevoOEliminado(oTC_Cierre, "Eliminado", "TC_Cierre.html", Request.UserHostAddress);

                        db.SaveChanges();
                    }
                }
                respuesta = new { success = true, results = "ok" };
            } catch {
                respuesta = new { success = false, results = "no" };
            }
            return(Json(respuesta, JsonRequestBehavior.AllowGet));
        }
        public JsonResult BuscarTCCierre(int Id)
        {
            object respuesta = null;

            try {
                TC_Cierre oTC_Cierre = db.TC_Cierre.Where(x => x.Id == Id && x.Activo == 1).SingleOrDefault();


                respuesta = new { success = true, results = oTC_Cierre };
            } catch (Exception ex) {
                respuesta = new { success = false, results = ex.Message };
            }
            return(Json(respuesta, JsonRequestBehavior.AllowGet));
        }
        public JsonResult AgregarTCCierre(DateTime Mes_Consumo, int Moneda_Origen, decimal TC_MXN, decimal TC_USD, decimal?TC_CORPORATIVO, string Sentido, int lineaNegocio)
        {
            object respuesta = null;

            try {
                TC_Cierre tccierre = null;
                switch (lineaNegocio)
                {
                case 1:
                    tccierre = db.TC_Cierre.Where(x => x.Mes_Consumo.Month == Mes_Consumo.Month && x.Mes_Consumo.Year == Mes_Consumo.Year && x.Id_Moneda == Moneda_Origen && x.Sentido == Sentido && x.Activo == 1 && x.Id_LineaNegocio == lineaNegocio).SingleOrDefault();
                    break;

                case 2:
                    tccierre = db.TC_Cierre.Where(x => x.Mes_Consumo.Month == Mes_Consumo.Month && x.Mes_Consumo.Year == Mes_Consumo.Year && x.Id_Moneda == Moneda_Origen && x.Activo == 1 && x.Id_LineaNegocio == lineaNegocio).SingleOrDefault();
                    break;
                }
                var nuevo = new TC_Cierre();
                if (tccierre == null)
                {
                    nuevo.Mes_Consumo     = Mes_Consumo;
                    nuevo.Id_Moneda       = Moneda_Origen;
                    nuevo.TC_MXN          = TC_MXN;
                    nuevo.TC_USD          = TC_USD;
                    nuevo.TC_CORPORATIVO  = TC_CORPORATIVO;
                    nuevo.Activo          = 1;
                    nuevo.Id_LineaNegocio = lineaNegocio;
                    nuevo.Sentido         = Sentido;
                    db.TC_Cierre.Add(nuevo);
                    Log log = new Log();
                    log.insertaNuevoOEliminado(nuevo, "Nuevo", "TC_Cierre.html", Request.UserHostAddress);

                    db.SaveChanges();
                    respuesta = new { success = true, results = "ok" };
                }
                else
                {
                    respuesta = new { success = false, results = "El TC ya existe" };
                }
            } catch (Exception ex) {
                var error = ex.Message;
                respuesta = new { success = false, results = "Ocurrió un error durante la operación." };
            }
            return(Json(respuesta, JsonRequestBehavior.AllowGet));
        }
        public JsonResult ModificarTCCierre(DateTime Mes_Consumo, string Moneda_Origen, decimal TC_MXN, decimal TC_USD, decimal?TC_CORPORATIVO, int Id, string Sentido, int lineaNegocio)
        {
            object respuesta = null;

            try {
                Moneda    oMoneda = db.Moneda.Where(x => x.Moneda1 == Moneda_Origen && x.Activo == 1 && x.Id_LineaNegocio == lineaNegocio).SingleOrDefault();
                TC_Cierre exist   = null;
                switch (lineaNegocio)
                {
                case 1:
                    exist = db.TC_Cierre.Where(x => x.Mes_Consumo.Month == Mes_Consumo.Month && x.Mes_Consumo.Year == Mes_Consumo.Year && x.Id_Moneda == oMoneda.Id && x.Sentido == Sentido && x.Activo == 1 && x.Id_LineaNegocio == lineaNegocio).SingleOrDefault();
                    break;

                case 2:
                    exist = db.TC_Cierre.Where(x => x.Mes_Consumo.Month == Mes_Consumo.Month && x.Mes_Consumo.Year == Mes_Consumo.Year && x.Id_Moneda == oMoneda.Id && x.Activo == 1 && x.Id_LineaNegocio == lineaNegocio).SingleOrDefault();
                    break;
                }
                if (exist == null || exist.Id == Id)
                {
                    TC_Cierre oTC_Cierre = db.TC_Cierre.Where(a => a.Id == Id).SingleOrDefault();
                    oTC_Cierre.Mes_Consumo    = Mes_Consumo;
                    oTC_Cierre.Id_Moneda      = oMoneda.Id;
                    oTC_Cierre.TC_MXN         = TC_MXN;
                    oTC_Cierre.TC_USD         = TC_USD;
                    oTC_Cierre.TC_CORPORATIVO = TC_CORPORATIVO;
                    oTC_Cierre.Sentido        = Sentido;
                    Log log = new Log();
                    log.insertaBitacoraModificacion(oTC_Cierre, "Id", oTC_Cierre.Id, "TC_Cierre.html", Request.UserHostAddress);

                    db.SaveChanges();
                    respuesta = new { success = true, results = "ok" };
                }
                else
                {
                    respuesta = new { success = false, results = "No se permite múltiples TC para esta linea de negocio." };
                }
            } catch (Exception ex) {
                respuesta = new { success = false, results = ex.Message };
            }
            return(Json(respuesta, JsonRequestBehavior.AllowGet));
        }
        //agregar
        public JsonResult agregarCostoFC(int Id_Acreedor, int Id_Operador, int Id_Moneda, decimal Importe, DateTime Fecha_Inicio, DateTime Fecha_fin, int Id_Cuenta, int Id_Sociedad, int Linea_Negocio)
        {
            object          respuesta = null;
            bool            valid     = true;
            var             mensaje   = "";
            TC_Cierre       tC_Cierre = db.TC_Cierre.Where(x => x.Id_Moneda == Id_Moneda && x.Mes_Consumo.Year == Fecha_Inicio.Year && x.Mes_Consumo.Month == Fecha_Inicio.Month && x.Sentido == "COSTO" && x.Id_LineaNegocio == Linea_Negocio && x.Activo == 1).SingleOrDefault();
            Operador        operador  = db.Operador.Where(x => x.Id == Id_Operador && x.Id_LineaNegocio == Linea_Negocio && x.Activo == 1).SingleOrDefault();
            Acreedor        acreedor  = db.Acreedor.Where(x => x.Id == Id_Acreedor && x.Id_LineaNegocio == Linea_Negocio && x.Activo == 1).SingleOrDefault();
            Moneda          moneda    = db.Moneda.Where(x => x.Id == Id_Moneda && x.Id_LineaNegocio == Linea_Negocio && x.Activo == 1).SingleOrDefault();
            CuentaResultado cuentaR   = db.CuentaResultado.Where(x => x.Id == Id_Cuenta && x.Id_LineaNegocio == Linea_Negocio && x.Activo == 1).SingleOrDefault();
            Sociedad        sociedad  = db.Sociedad.Where(x => x.Id == Id_Sociedad && x.Id_LineaNegocio == Linea_Negocio && x.Activo == 1).SingleOrDefault();

            if (DateTime.Compare(Fecha_Inicio, Fecha_fin) >= 0)
            {
                valid   = false;
                mensaje = "Fecha Inicio Debe Ser MENOR que  Fin";
            }

            if (Convert.ToInt64(cuentaR.Cuenta) <= 0) //numeros negativos
            {
                valid = false;
                if (mensaje != "")
                {
                    mensaje = mensaje + " y " + "Importe No Pueder Ser Menor a Cero";
                }
                else
                {
                    mensaje = "Cuenta debe ser mayor a cero";
                }
            }

            if (valid)
            {
                try
                {
                    var nuevo = new CostoFR();
                    nuevo.TipoOperador    = operador.Tipo_Operador;
                    nuevo.Operador        = operador.Id_Operador;
                    nuevo.AcreedorSap     = acreedor.Acreedor1;
                    nuevo.NombreProveedor = acreedor.NombreAcreedor;
                    nuevo.Moneda          = moneda.Moneda1;
                    nuevo.Importe         = Importe;
                    nuevo.Fecha_Inicio    = Fecha_Inicio.ToShortDateString();
                    nuevo.Fecha_Fin       = Fecha_fin.ToShortDateString();
                    nuevo.CuentaR         = cuentaR.Cuenta;
                    nuevo.SociedadGL      = int.Parse(sociedad.Id_Sociedad);
                    if (tC_Cierre == null)
                    {
                        nuevo.TC = 0;
                    }
                    else
                    {
                        nuevo.TC = tC_Cierre.TC_MXN;
                    }
                    nuevo.Activo          = 1;
                    nuevo.Id_LineaNegocio = Linea_Negocio;

                    db.CostoFR.Add(nuevo);
                    Log log = new Log();
                    log.insertaNuevoOEliminado(nuevo, "Nuevo", "CostoFR.html", Request.UserHostAddress);

                    db.SaveChanges();
                    respuesta = new { success = true, result = "ok" };
                }
                catch (Exception ex)
                {
                    var error = ex.Message;
                    respuesta = new { success = false, result = "Hubo un error mientras se procesaba la petición" };
                }
            }
            else
            {
                respuesta = new { success = false, result = mensaje };
            }

            return(Json(respuesta, JsonRequestBehavior.AllowGet));
        }