コード例 #1
0
    protected string Grabar(string sCopias, string slTareas)
    {
        string   sIdTarea, sResul = "", sDesTarea = "";
        int      nIdTarea, iUsuario, nIdTareaNew;
        short    nOrden = 0, nCopias = 0;
        byte     nEstado = 1;
        DateTime?dValIni = null;
        DateTime?dValFin = null;
        DateTime?dPLIni  = null;
        DateTime?dPLFin  = null;
        DateTime?dPRFin  = null;

        #region abrir conexión y transacción
        try
        {
            oConn = Conexion.Abrir();
            tr    = Conexion.AbrirTransaccion(oConn);
        }
        catch (Exception ex)
        {
            if (oConn.State == ConnectionState.Open)
            {
                Conexion.Cerrar(oConn);
            }
            sResul = "Error@#@" + Errores.mostrarError("Error al abrir la conexión", ex);
            return(sResul);
        }
        #endregion
        try
        {
            iUsuario = int.Parse(Session["NUM_EMPLEADO_ENTRADA"].ToString());
            nCopias  = short.Parse(sCopias);
            string[] aTarea = Regex.Split(slTareas, "##");
            for (int i = 0; i < aTarea.Length; i++)
            {
                sIdTarea = aTarea[i];
                if ((sIdTarea != "") && (sIdTarea != "0"))
                {
                    nIdTarea = int.Parse(sIdTarea);
                    TAREAPSP oTarea = TAREAPSP.Obtener(tr, nIdTarea);
                    nOrden = TAREAPSP.flCalcularOrden2(null, oTarea.t331_idpt);
                    //Por defecto la nueva tarea estará activa salvo que la original esté pendiente
                    if (oTarea.t332_estado == 2)
                    {
                        nEstado = 2;
                    }
                    else
                    {
                        nEstado = 1;
                    }
                    if (oTarea.t332_fiv.ToString() != "")
                    {
                        dValIni = oTarea.t332_fiv;
                    }
                    if (oTarea.t332_ffv.ToString() != "")
                    {
                        dValFin = oTarea.t332_ffv;
                    }
                    if (oTarea.t332_fipl.ToString() != "")
                    {
                        dPLIni = oTarea.t332_fipl;
                    }
                    if (oTarea.t332_ffpl.ToString() != "")
                    {
                        dPLFin = oTarea.t332_ffpl;
                    }
                    if (oTarea.t332_ffpr.ToString() != "")
                    {
                        dPRFin = oTarea.t332_ffpr;
                    }
                    for (short j = 1; j <= nCopias; j++)
                    {
                        sDesTarea = "Copia " + j.ToString() + " de " + oTarea.t332_destarea;
                        if (sDesTarea.Length > 100)
                        {
                            sDesTarea = sDesTarea.Substring(1, 100);
                        }
                        nIdTareaNew = TAREAPSP.Insert(tr
                                                      , sDesTarea                                         //Des. tarea;
                                                      , oTarea.t332_destarealong                          //Des. larga de tarea;
                                                      , oTarea.t331_idpt                                  //Id PT
                                                      , oTarea.t335_idactividad                           //IdActividad
                                                      , iUsuario                                          //promotor
                                                      , iUsuario                                          //último modificador
                                                      , DateTime.Now                                      //F.Alta
                                                      , DateTime.Now                                      //F.Ultima modificacion
                                                      , dValIni                                           //F.Inicio Vigencia
                                                      , dValFin                                           //F.Fin vigencia
                                                      , nEstado                                           //estado
                                                      , dPLIni                                            //F.Inicio Planificada
                                                      , dPLFin                                            //F.Fin Planificada
                                                      , oTarea.t332_etpl                                  //Esfuerzo total estimado
                                                      , dPRFin                                            //F.Fin Prevista
                                                      , oTarea.t332_etpr                                  //Esfuerzo total previsto
                                                      , null                                              //PST
                                                      , oTarea.t332_cle                                   //Control límite de esfuerzos
                                                      , oTarea.t332_tipocle                               //tipo de control de límite de esfuerzo
                                                      , nOrden                                            //orden
                                                      , oTarea.t332_facturable                            //facturable
                                                      , decimal.Parse(oTarea.t332_presupuesto.ToString()) //presupuesto
                                                      , null,                                             //24
                                                      "",                                                 //OTL
                                                      "",                                                 //INCIDENCIA
                                                      "",                                                 //OBSERVACIONES
                                                      oTarea.t332_notificable,                            //notificabled
                                                      "",                                                 //NOTAS1
                                                      "",                                                 //NOTAS2
                                                      "",                                                 //NOTAS3
                                                      "",                                                 //NOTAS4
                                                      oTarea.t332_avance,                                 //avance real
                                                      oTarea.t332_avanceauto,                             //avance automatico (true/false)
                                                      oTarea.t332_impiap,                                 //imputable en IAP (true/false)
                                                      false,                                              //notas IAP
                                                      oTarea.t332_heredanodo,                             //recursos heredados del nodo
                                                      oTarea.t332_heredaproyeco,                          //recursos heredados del PE
                                                      "",                                                 //mesaje generico para todos los profesionales
                                                      oTarea.t332_notif_prof                              //Notificar a profesionales asociados
                                                      , oTarea.t332_acceso_bitacora_iap
                                                      , null                                              //pendiente ultimo null modo facturación
                                                      , oTarea.t332_horascomplementarias);
                        POOL_GF_TAREA.DuplicarPoolGF(tr, nIdTarea, nIdTareaNew);
                        //Asigno lo atributos estadístico que tuviera la tarea original
                        AETAREAPSP.DuplicarAEs(tr, nIdTarea, nIdTareaNew);
                    } //For copias
                }     //IF
            }         //FOR
            Conexion.CommitTransaccion(tr);

            sResul = "OK@#@";
        }
        catch (Exception ex)
        {
            Conexion.CerrarTransaccion(tr);
            sResul = "Error@#@" + Errores.mostrarError("Error al grabar los datos de la tarea", ex);
        }
        finally
        {
            Conexion.Cerrar(oConn);
        }
        return(sResul);
    }