public ActionResult _Ingreso(FormCollection form)
        {
            try
            {
                Clientes cliente = new Clientes();
                Guid     IdFactura = Guid.Parse(form["IdFactura"]);
                Guid     IdProveedor = Guid.Parse(form["PAC"]);
                Guid     IdAcesor = Guid.Parse(form["Asesor"]);
                Guid     IdUsuario = Guid.NewGuid();
                Guid     IdMensualidad = Guid.NewGuid();
                Usuarios usuario = db.Usuarios.Where(x => x.Usuario == User.Identity.Name).FirstOrDefault();
                string   Moneda = form["Moneda"], Nombres = form["Nombres"], Email = form["Email"];
                string   Calle        = form["Calle"],
                         NoInterior   = form["NoInterior"],
                         NoExterior   = form["NoExterior"],
                         Colonia      = form["Colonia"],
                         CodigoPostal = form["CodigoPostal"],
                         Telefono     = form["Telefono"],
                         Estado       = form["Estado"],
                         Pais         = form["Pais"],
                         Ciudad       = form["Ciudad"],
                         RFC          = form["RFC"],
                         NumCtaPago   = form["NumCtaPago"],
                         MetodoPago   = form["MetodoPago"],
                         FormaPago    = form["FormaPago"],
                         UsoCFDI      = form["UsoCFDI"];
                if (form["id"] == "" || form["id"] == null)
                {
                    cliente.IdCliente = Guid.NewGuid();
                    DateTime date     = DateTime.Now;
                    int      Index    = date.Year.ToString().Length - 2;
                    int      Cantidad = db.Clientes.Count();
                    while (Cantidad > 9999)
                    {
                        Cantidad = Cantidad - 9999;
                    }
                    //string NumeroDeCuenta = null;//date.Year.ToString().Substring(Index) + date.Month.ToString("D2") + Cantidad.ToString("D4");
                    //db.InsertUsuario(IdUsuario,RFC,SHA1.Encode(RFC),"Cliente","Client",true,10,0,0);

                    /* db.InsertClientes(cliente.IdCliente, IdProveedor,IdUsuario, null, Nombres,
                     *   null, null,null,null,null,
                     *   Calle, NoInterior, NoExterior, Colonia, CodigoPostal,Telefono,
                     *   null, null,Email, null, Estado, Pais, Ciudad,
                     *   null, null,null, null, null,
                     *   null, null, null, RFC,null,NumCtaPago, null,
                     *   null,null, DateTime.Now, User.Identity.Name,true);*/
                }
                else
                {
                    Guid id = Guid.Parse(form["id"]);
                    cliente = db.GetClientes(id, true, 1).FirstOrDefault();

                    /*db.UpdateClientes(cliente.IdCliente, cliente.IdProveedor,cliente.NumeroDeCuenta, cliente.NumeroTelefonoAlarma,
                     *  cliente.PalabraClave, cliente.PalabraClaveSilenciosa, cliente.Nombres, cliente.ApellidoPaterno, cliente.ApellidoMaterno,
                     *  Calle, NoInterior, NoExterior,Colonia, CodigoPostal, Telefono,
                     *  cliente.TelefonoTrabajo, cliente.TelefonoCelular, cliente.Email, cliente.Foto, Estado, Pais, Ciudad,
                     *  cliente.TipoAfilacion, cliente.NumeroPatrocinador, cliente.FechaNacimiento, cliente.LugarNacimiento,cliente.Sexo,
                     *  cliente.EstadoCivil, cliente.Profesion, cliente.CURP, RFC, NumCtaPago, cliente.ClaveBancaria, cliente.Banco,
                     *  cliente.NumeroCLABE,cliente.Beneficiario,cliente.FechaCreacion, cliente.UsuarioCreacion, true,cliente.IdUsuario);*/
                }
                float TipoCambio = 0;
                if (form["TipoCambio"] != "")
                {
                    TipoCambio = float.Parse(form["TipoCambio"]);
                }
                string Adeudo = form["Adeudo"];
                if (Adeudo == "0")
                {
                    IdFactura = InsertarAdeudo(form, TipoCambio, IdAcesor, IdProveedor, cliente, IdFactura);
                }
                else
                {
                    Guid  IdAdeudo           = Guid.Parse(Adeudo);
                    Guid  IdMonitoreoIngreso = Guid.Parse(form["IdCargo"]);
                    float Cargo = float.Parse(form["Cargos"]);
                    Cargo = Moneda.Contains("MXN") ? Cargo : Cargo * TipoCambio;
                    double Ingresos = (double)db.GetMonitoreoIngreso(0, null).Where(x => x.IdAdeudo == IdAdeudo).Sum(x => x.Cargos + (x.CargosUSD * x.TipoCambio));
                    AdeudosInstalaciones AdeudosInstalacion = db.GetAdeudosInstalaciones(IdAdeudo, null, 1).FirstOrDefault();
                    double Total  = AdeudosInstalacion.Total - (Ingresos + Cargo);
                    bool   Pagado = Total <= 0;
                    bool   Envio  = form["Envio"] == "on" ? true : false;
                    db.UpdateAdeudosInstalaciones(IdAdeudo, AdeudosInstalacion.IdProveedor, AdeudosInstalacion.IdCliente, null, AdeudosInstalacion.FechaContrato,
                                                  AdeudosInstalacion.PagoComision, AdeudosInstalacion.FechaPago, AdeudosInstalacion.IdAcessor, AdeudosInstalacion.IdMensualidad, AdeudosInstalacion.Cantidad, AdeudosInstalacion.Concepto,
                                                  AdeudosInstalacion.Descripcion, AdeudosInstalacion.Unidad, AdeudosInstalacion.Total, AdeudosInstalacion.ClaveProdServ, AdeudosInstalacion.FechaInstalacion, AdeudosInstalacion.IdInstalador,
                                                  AdeudosInstalacion.Comentarios, AdeudosInstalacion.Anticipo, Pagado, AdeudosInstalacion.Instalacion, AdeudosInstalacion.RequiereFacturacion,
                                                  AdeudosInstalacion.RequiereFacturacion, Envio, AdeudosInstalacion.RevisoRobot, AdeudosInstalacion.Activo);

                    if (form["Moneda"].Contains("MXN"))
                    {
                        db.InsertMonitoreoIngresos(IdMonitoreoIngreso, IdAdeudo, null, Cargo, 0, 0, 0, MetodoPago, FormaPago, UsoCFDI, usuario.Id, TipoCambio, form["Moneda"].Trim(), form["Comentario"], DateTime.Now, true);
                    }
                    else
                    {
                        db.InsertMonitoreoIngresos(IdMonitoreoIngreso, IdAdeudo, null, 0, 0, Cargo, 0, MetodoPago, FormaPago, UsoCFDI, usuario.Id, TipoCambio, form["Moneda"], form["Comentario"], DateTime.Now, true);
                    }
                }
                return(Json(new { error = "none", UUID = IdFactura }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                return(Json(new { error = ex.InnerException, Message = ex.Message }, JsonRequestBehavior.AllowGet));
            }
        }