private void MakeRendicion(int idSolOrg)
    {
        TransactionScope _transaction = new TransactionScope();
        Solicitud  sol = Solicitud.GetById(idSolOrg);
        DateTime fechanula = DateTime.Parse("01/01/1900");
        Solicitud  reporte ;
        try {
            reporte = Solicitud.FindOne(Expression.Eq("IdSolicitudInicial", idSolOrg));

            if (reporte == null)
            {

                reporte = new Solicitud();
                reporte.IdSolicitudInicial = sol.Id_Solicitud;
                reporte.IdCliente = sol.IdCliente;
                reporte.IdTipoSolicitud =  sol.IdTipoSolicitud;
                reporte.IdUsuarioCreador = BiFactory.User.IdUsuario;
                reporte.Reporte = "SI";
                reporte.Status = eEstados.Pendiente.ToString();
                reporte.NroOrdenCte = sol.NroOrdenCte;
                reporte.Contacto = sol.Contacto;
                reporte.ContactoMail = sol.ContactoMail;
                reporte.ContactoTel = sol.ContactoTel;
                reporte.Descripcion = sol.Descripcion;

                reporte.FechaCreacion = DateTime.Now;
                reporte.FechaAprobacionCalidad = fechanula;
                reporte.FechaAprobacionTecnica = fechanula;
                reporte.FechaReprogramacion = fechanula;
                reporte.FechaSuspencion = fechanula;
                reporte.ProximaFechaInicio = fechanula;
                reporte.ProximaFechaFin = fechanula;
                reporte.Save();

                TipoSolicitud tipo = sol.Tipo;

                if (tipo.IdTiposolicitud == 1) ///Mantenimiento Preventivo
                {
                    SolicitudPreventivo Sol_Prev = SolicitudPreventivo.FindOne(Expression.Eq("IdSolicitud", idSolOrg));
                    Sol_Prev.Id = 0;
                    Sol_Prev.IdSolicitud = reporte.Id_Solicitud;
                    Sol_Prev.SaveCopyAndFlush();

                    //copio las tareas
                    SolicitudTareas[] tt = SolicitudTareas.FindAll(Expression.Eq("IdSolicitud", idSolOrg));
                    foreach (SolicitudTareas t in tt)
                    {
                        t.Id = 0; //para que guarde una copia
                        t.IdSolicitud = reporte.Id_Solicitud;
                        t.SaveCopyAndFlush();
                    }

                }

                if (tipo.IdTiposolicitud == 2) ///Mantenimiento Correctivo
                {
                    SolicitudCorrectivo Sol_Corr_original= SolicitudCorrectivo.FindOne(Expression.Eq("IdSolicitud", idSolOrg));
                    Sol_Corr_original.Id = 0;
                    Sol_Corr_original.IdSolicitud = reporte.Id_Solicitud;
                    Sol_Corr_original.FechaResolucion = DateTime.Parse("1900-01-01");
                    Sol_Corr_original.SaveCopyAndFlush();

                }

                if (tipo.IdTiposolicitud == 6) ///Obras e Instalaciones
                {

                        SolicitudObra Sol_Obra = SolicitudObra.FindOne(Expression.Eq("IdSolicitud",idSolOrg));
                        Sol_Obra.Id = 0;
                        Sol_Obra.IdSolicitud = reporte.Id_Solicitud;
                        Sol_Obra.SaveCopy();

                }

                //copio las PErsonas
                SolicitudRecursosEmpleados[] ee = SolicitudRecursosEmpleados.FindAll(Expression.Eq("IdSolicitud", idSolOrg));
                foreach (SolicitudRecursosEmpleados e in ee)
                {
                    e.Id = 0;
                    e.IdSolicitud = reporte.Id_Solicitud;
                    e.SaveCopy();
                }

                //copio los vehiculos
                SolicitudRecursosVehiculos[] vv = SolicitudRecursosVehiculos.FindAll(Expression.Eq("IdSolicitud", idSolOrg));
                foreach (SolicitudRecursosVehiculos v in vv)
                {
                    v.Id = 0;
                    v.IdSolicitud = reporte.Id_Solicitud;
                    v.Horas = 0;
                    v.Km = 0;
                    v.SaveCopy();

                }
            }
            reporte.Save();
            //BiFactory.Sol = reporte;
        }
        catch (Exception)
        {
            _transaction.VoteRollBack();
            throw;
        }
        finally
        {
            _transaction.Dispose();

            switch (sol.IdTipoSolicitud)
            {
                case 1:
                    Response.Redirect("MantPreventivoRendicion.aspx");
                    break;
                case 2:
                    Response.Redirect("MantCorrectivoRendicion.aspx");
                    break;
                case 6:
                    Response.Redirect("Reporte_Obras.aspx");
                    break;
            }
        }
    }