Beispiel #1
0
    private void CargarDatosItem()
    {
        SUBNODO oSubNodo = SUBNODO.Obtener(null, nIDItem);

        txtID.Text             = oSubNodo.t304_idsubnodo.ToString();
        txtDenominacion.Text   = oSubNodo.t304_denominacion;
        hdnIDResponsable.Text  = oSubNodo.t314_idusuario_responsable.ToString();
        txtDesResponsable.Text = oSubNodo.DesResponsable;
        if ((bool)oSubNodo.t304_estado)
        {
            chkActivo.Checked = true;
        }
        else
        {
            chkActivo.Checked = false;
        }
        txtOrden.Text    = oSubNodo.t304_orden.ToString();
        hdnManiobra.Text = oSubNodo.t304_maniobra.ToString();
        if (hdnManiobra.Text != "0")
        {
            //txtDenominacion.ReadOnly = true;
            //txtDenominacion.Attributes.Add("onKeyUp", "");
            //chkActivo.Attributes.Add("disabled", "true");
            //imgManiobra.Style.Add("visibility", "visible");
            imgManiobra.ToolTip = Estructura.getDefLarga(Estructura.sTipoElem.SUBNODO) + " de maniobra creada por el sistema. No permite la modificación de la denominación ni del estado.";
        }
        hdnIDEmpresa.Text  = oSubNodo.t313_idempresa.ToString();
        txtDesEmpresa.Text = oSubNodo.t313_denominacion;
//        txtDesResponsable.Text = oSubNodo.t313_denominacion;
    }
Beispiel #2
0
    private string Eliminar(int nNivel, int nIDItem)
    {
        try
        {
            switch (nNivel)
            {
            case 1: SUPERNODO4.Delete(null, nIDItem); break;

            case 2: SUPERNODO3.Delete(null, nIDItem); break;

            case 3: SUPERNODO2.Delete(null, nIDItem); break;

            case 4: SUPERNODO1.Delete(null, nIDItem); break;

            case 5: NODO.Delete(null, nIDItem); break;

            case 6: SUBNODO.Delete(null, nIDItem); break;
            }

            return("OK@#@");
        }
        catch (Exception ex)
        {
            //return "Error@#@" + Errores.mostrarError("Error al obtener la estructura organizativa", ex);
            if (Errores.EsErrorIntegridad(ex))
            {
                return("Error@#@Operación rechazada.\n\n" + Errores.mostrarError("Error al obtener la estructura organizativa", ex));                               //ex.Message;
            }
            else
            {
                return("Error@#@" + Errores.mostrarError("Error al obtener la estructura organizativa", ex));
            }
        }
    }
Beispiel #3
0
    protected void ObtenerSubnodos(string sIDNodo, string sGestorSubNodo, int nOpcion)
    {
        StringBuilder sb = new StringBuilder();
        SqlDataReader dr = null;

        try
        {
            switch (nOpcion)
            {
            case 1:
                dr = SUBNODO.CatalogoFigura(null, int.Parse(sIDNodo), (nResponsablePSN == null) ? (int)Session["UsuarioActual"] : (int)nResponsablePSN, int.Parse(sGestorSubNodo));
                break;

            case 2:
                if (SUPER.Capa_Negocio.Utilidades.EsAdminProduccion())
                {
                    dr = SUBNODO.CatalogoPorNodo(null, int.Parse(sIDNodo), 0);     //Mostrar todos todos los subnodos
                }
                else
                {
                    dr = SUBNODO.ObtenerSegunVisionProyectos(null, int.Parse(sIDNodo), (int)Session["UsuarioActual"]);
                }
                break;

            case 3:
                dr = SUBNODO.CatalogoPorNodo(null, int.Parse(sIDNodo), 0);     //Mostrar todos todos los subnodos
                break;

            case 4:
                dr = SUBNODO.CatalogoPorNodo(null, int.Parse(sIDNodo), 1);     //No mostrar los subnodos de maniobra
                break;

            case 5:
                dr = SUBNODO.CatalogoPorNodo(null, int.Parse(sIDNodo), 2);     // No mostrar los subnodos de maniobra tipo 1 'Proyectos a reasignar'
                break;
            }

            sb.Append("<table id='tblDatos' class='texto MA' style='WIDTH: 350px;'>");
            sb.Append("<colgroup><col style='width:347px;' /></colgroup>");
            sb.Append("<tbody>");
            while (dr.Read())
            {
                sb.Append("<tr id='" + dr["t304_idsubnodo"].ToString() + "' ondblclick='aceptarClick(this.rowIndex)' style='height:16px;'>");
                sb.Append("<td style='padding-left:3px;'>" + dr["t304_denominacion"].ToString() + "</td>");
                sb.Append("</tr>");
            }
            dr.Close();
            dr.Dispose();
            sb.Append("</tbody>");
            sb.Append("</table>");

            strTablaHTML = sb.ToString();
        }
        catch (Exception ex)
        {
            sErrores = Errores.mostrarError("Error al obtener la relación de nodos.", ex);
        }
    }
    private string cargarSubnodos()
    {
        try
        {
            StringBuilder sb       = new StringBuilder();
            SqlDataReader dr       = SUBNODO.CatalogoParaReasignacion((int)Session["UsuarioActual"]);
            string        sTootTip = "";

            sb.Append("<table id='tblSubnodos' class='texto MANO' style='width:800px;'>");
            sb.Append("<colgroup><col style='width:400px;' /><col style='width:400px;' /></colgroup>");
            sb.Append("<tbody>");
            while (dr.Read())
            {
                sTootTip = "";
                if (Utilidades.EstructuraActiva("SN4"))
                {
                    sTootTip += "<label style='width:60px'>" + Estructura.getDefCorta(Estructura.sTipoElem.SUPERNODO4) + ":</label> " + dr["DES_SN4"].ToString() + "<br>";
                }
                if (Utilidades.EstructuraActiva("SN3"))
                {
                    sTootTip += "<label style='width:60px'>" + Estructura.getDefCorta(Estructura.sTipoElem.SUPERNODO3) + ":</label> " + dr["DES_SN3"].ToString() + "<br>";
                }
                if (Utilidades.EstructuraActiva("SN2"))
                {
                    sTootTip += "<label style='width:60px'>" + Estructura.getDefCorta(Estructura.sTipoElem.SUPERNODO2) + ":</label> " + dr["DES_SN2"].ToString() + "<br>";
                }
                if (Utilidades.EstructuraActiva("SN1"))
                {
                    sTootTip += "<label style='width:60px'>" + Estructura.getDefCorta(Estructura.sTipoElem.SUPERNODO1) + ":</label> " + dr["DES_SN1"].ToString();
                }

                sb.Append("<tr id='" + dr["t304_idsubnodo"].ToString() + "' nodo='" + dr["t303_idnodo"].ToString() + "' onclick='mm(event);'  ");
                sb.Append("style='height:20px;noWrap:true;' title=\"cssbody=[dvbdy] cssheader=[dvhdr] header=[<img src='../../../../images/info.gif' style='vertical-align:middle'>  Estructura] body=[" + sTootTip + "] hideselects=[off]\">");
                sb.Append("<td style='padding-left:3px;'>" + dr["t303_denominacion"].ToString() + "</td>");
                sb.Append("<td style='border-right: solid 1px #569BBD; padding-left:3px;'>" + dr["t304_denominacion"].ToString() + "</td>");

                //sb.Append("<tr style='height:20px;' >");
                //sb.Append("<td>" + dr["t303_denominacion"].ToString() + "</td>");
                //sb.Append("<td>" + dr["t304_denominacion"].ToString() + "</td>");
                sb.Append("</tr>");
            }
            dr.Close();
            dr.Dispose();
            sb.Append("</tbody>");
            sb.Append("</table>");

            return("OK@#@" + sb.ToString());
        }
        catch (Exception ex)
        {
            return("Error@#@" + Errores.mostrarError("Error al cargar los subnodos", ex));
        }
    }
Beispiel #5
0
    private string Eliminar(int nIDItem)
    {
        try
        {
            SUBNODO.Delete(null, nIDItem);

            return("OK@#@");
        }
        catch (Exception ex)
        {
            return("Error@#@" + Errores.mostrarError("Error al eliminar el subnodo", ex));
        }
    }
    private string cargarSubnodos(string sID)
    {
        try
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            SqlDataReader             dr = SUBNODO.CatalogoPorNodo(null, short.Parse(sID), 0); //Mostrar todos todos los subnodos

            while (dr.Read())
            {
                sb.Append(dr["t304_idsubnodo"].ToString() + "##" + dr["t304_denominacion"].ToString() + "///");
            }
            dr.Close();
            dr.Dispose();

            return("OK@#@" + sb.ToString());;
        }
        catch (Exception ex)
        {
            return("N@#@" + Errores.mostrarError("Error al obtener los subnodos", ex));
        }
    }
Beispiel #7
0
    private string Procesar(string strDatos)
    {
        string sResul = "";

        int idPSN = 0, responsable_origen = 0, responsable_destino = 0, subnodo_origen = 0, subnodo_destino = 0;

        try
        {
            REASIGNACIONPSN.DeleteAll(null, (int)Session["UsuarioActual"]);

            string[] aDatos = Regex.Split(strDatos, "///");
            foreach (string oProyecto in aDatos)
            {
                try
                {
                    if (oProyecto == "")
                    {
                        continue;
                    }
                    string[] aProyecto = Regex.Split(oProyecto, "##");
                    ///aProyecto[0] = idPSN
                    ///aProyecto[1] = responsable_origen
                    ///aProyecto[2] = responsable_destino
                    ///aProyecto[3] = subnodo_origen
                    ///aProyecto[4] = subnodo_destino
                    ///aProyecto[5] = procesado

                    idPSN = int.Parse(aProyecto[0]);
                    responsable_origen  = int.Parse(aProyecto[1]);
                    responsable_destino = int.Parse(aProyecto[2]);
                    subnodo_origen      = int.Parse(aProyecto[3]);
                    subnodo_destino     = int.Parse(aProyecto[4]);

                    REASIGNACIONPSN.Insertar(null, idPSN, (int)Session["UsuarioActual"], responsable_destino, subnodo_destino, false, "");

                    if (aProyecto[5] == "1" || (aProyecto[1] == aProyecto[2] && aProyecto[3] == aProyecto[4]))
                    {
                        REASIGNACIONPSN.Modificar(null, idPSN, (int)Session["UsuarioActual"], responsable_destino, subnodo_destino, true, "");
                        continue;
                    }

                    #region abrir conexión y transacción
                    try
                    {
                        oConn = Conexion.Abrir();
                        tr    = Conexion.AbrirTransaccionSerializable(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

                    PROYECTOSUBNODO oPSN     = PROYECTOSUBNODO.Obtener(tr, int.Parse(aProyecto[0]));
                    SUBNODO         oSubnodo = SUBNODO.Obtener(tr, int.Parse(aProyecto[4]));

                    if (oPSN.t303_idnodo != oSubnodo.t303_idnodo)
                    {
                        throw (new NullReferenceException("El " + Estructura.getDefLarga(Estructura.sTipoElem.NODO) + " del proyecto y el " + Estructura.getDefLarga(Estructura.sTipoElem.NODO) + " del " + Estructura.getDefLarga(Estructura.sTipoElem.SUBNODO) + " destino no coinciden, por lo que no se puede realizar la reasignación."));
                    }

                    PROYECTOSUBNODO.UpdateReasignacion(tr, idPSN, responsable_destino, subnodo_destino);

                    //update proceso OK
                    REASIGNACIONPSN.Modificar(null, idPSN, (int)Session["UsuarioActual"], responsable_destino, subnodo_destino, true, "");

                    Conexion.CommitTransaccion(tr);
                }
                catch (Exception ex)
                {
                    Conexion.CerrarTransaccion(tr);
                    //update proceso KO
                    REASIGNACIONPSN.Modificar(null, idPSN, (int)Session["UsuarioActual"], responsable_destino, subnodo_destino, false, ex.Message);
                    sResul = "Error@#@" + Errores.mostrarError("Error al procesar la reasignación.", ex);
                }
                finally
                {
                    Conexion.Cerrar(oConn);
                }
            }// fin foreach
            sResul = "OK";
        }
        catch (Exception ex)
        {
            sResul = "Error@#@" + Errores.mostrarError("Error al procesar la reasignación.", ex);
        }
        return(sResul);
    }
    private string getPreferencia(string sIdPrefUsuario)
    {
        StringBuilder sb = new StringBuilder();
        int           idPrefUsuario = 0, nConceptoEje = 0;
        int           nOpcion = 1;

        try
        {
            SqlDataReader dr = PREFERENCIAUSUARIO.Obtener(null, (sIdPrefUsuario == "") ? null : (int?)int.Parse(sIdPrefUsuario),
                                                          (int)Session["IDFICEPI_PC_ACTUAL"], 13);
            if (dr.Read())
            {
                bHayPreferencia = true;

                sb.Append(dr["t462_idPrefUsuario"].ToString() + "@#@"); //1
                sb.Append(dr["Estado"].ToString() + "@#@");             //2
                sb.Append(dr["categoria"].ToString() + "@#@");          //3
                sb.Append(dr["cualidad"].ToString() + "@#@");           //4
                sb.Append(dr["CerrarAuto"].ToString() + "@#@");         //5
                sb.Append(dr["ActuAuto"].ToString() + "@#@");           //6
                sb.Append(dr["OperadorLogico"].ToString() + "@#@");     //7
                sb.Append(dr["OpcionPeriodo"].ToString() + "@#@");      //8
                idPrefUsuario    = int.Parse(dr["t462_idPrefUsuario"].ToString());
                nUtilidadPeriodo = int.Parse(dr["OpcionPeriodo"].ToString());
            }
            dr.Close();
            //dr.Dispose();

            #region Fechas
            switch (nUtilidadPeriodo)
            {
            case 1:
                sb.Append((DateTime.Now.Year * 100 + 1).ToString() + "@#@");                    //9
                sb.Append(Fechas.AnnomesAFechaDescLarga(DateTime.Now.Year * 100 + 1) + "@#@");  //10
                sb.Append((DateTime.Now.Year * 100 + 12).ToString() + "@#@");                   //11
                sb.Append(Fechas.AnnomesAFechaDescLarga(DateTime.Now.Year * 100 + 12) + "@#@"); //12
                break;

            case 2:
                sb.Append((DateTime.Now.Year * 100 + DateTime.Now.Month).ToString() + "@#@");                   //9
                sb.Append(Fechas.AnnomesAFechaDescLarga(DateTime.Now.Year * 100 + DateTime.Now.Month) + "@#@"); //10
                sb.Append((DateTime.Now.Year * 100 + DateTime.Now.Month).ToString() + "@#@");                   //11
                sb.Append(Fechas.AnnomesAFechaDescLarga(DateTime.Now.Year * 100 + DateTime.Now.Month) + "@#@"); //12
                break;

            case 3:
                sb.Append((DateTime.Now.Year * 100 + 1).ToString() + "@#@");                                    //9
                sb.Append(Fechas.AnnomesAFechaDescLarga(DateTime.Now.Year * 100 + 1) + "@#@");                  //10
                sb.Append((DateTime.Now.Year * 100 + DateTime.Now.Month).ToString() + "@#@");                   //11
                sb.Append(Fechas.AnnomesAFechaDescLarga(DateTime.Now.Year * 100 + DateTime.Now.Month) + "@#@"); //12
                break;

            case 4:
                sb.Append("199001" + "@#@");                                                                    //9
                sb.Append(Fechas.AnnomesAFechaDescLarga(199001) + "@#@");                                       //10
                sb.Append((DateTime.Now.Year * 100 + DateTime.Now.Month).ToString() + "@#@");                   //11
                sb.Append(Fechas.AnnomesAFechaDescLarga(DateTime.Now.Year * 100 + DateTime.Now.Month) + "@#@"); //12
                break;

            case 5:
                sb.Append("199001" + "@#@");                              //9
                sb.Append(Fechas.AnnomesAFechaDescLarga(199001) + "@#@"); //10
                sb.Append("207812" + "@#@");                              //11
                sb.Append(Fechas.AnnomesAFechaDescLarga(207812) + "@#@"); //12
                break;

            default:
                sb.Append((DateTime.Now.Year * 100 + 1).ToString() + "@#@");                         //9
                sb.Append(mes[0] + " " + DateTime.Now.Year.ToString() + "@#@");                      //10
                sb.Append((DateTime.Now.Year * 100 + DateTime.Now.Month).ToString() + "@#@");        //11
                sb.Append(mes[DateTime.Now.Month - 1] + " " + DateTime.Now.Year.ToString() + "@#@"); //12
                break;
            }
            #endregion

            #region HTML, IDs
            int      nNivelMinimo = 0;
            bool     bAmbito      = false;
            string[] aID          = null;
            dr = PREFUSUMULTIVALOR.Obtener(null, idPrefUsuario);
            while (dr.Read())
            {
                switch (int.Parse(dr["t441_concepto"].ToString()))
                {
                case 1:
                    if (!bAmbito)
                    {
                        bAmbito      = true;
                        nNivelMinimo = 6;
                    }
                    aID = Regex.Split(dr["t441_valor"].ToString(), "-");
                    if (int.Parse(aID[0]) < nNivelMinimo)
                    {
                        nNivelMinimo = int.Parse(aID[0]);
                    }

                    if (strIDsAmbito != "")
                    {
                        strIDsAmbito += ",";
                    }
                    strIDsAmbito += aID[1];

                    aSubnodos      = PREFUSUMULTIVALOR.SelectSubnodosAmbito(null, aSubnodos, int.Parse(aID[0]), int.Parse(aID[1]));
                    strHTMLAmbito += "<tr id='" + aID[1] + "' tipo='" + aID[0] + "' style='height:16px;' idAux='";
                    strHTMLAmbito += SUBNODO.fgGetCadenaID(aID[0], aID[1]);
                    strHTMLAmbito += "'><td>";

                    switch (int.Parse(aID[0]))
                    {
                    case 1: strHTMLAmbito += "<img src='../../../../images/imgSN4.gif' style='margin-left:2px;margin-right:4px;vertical-align:middle;border: 0px;'>"; break;

                    case 2: strHTMLAmbito += "<img src='../../../../images/imgSN3.gif' style='margin-left:2px;margin-right:4px;vertical-align:middle;border: 0px;'>"; break;

                    case 3: strHTMLAmbito += "<img src='../../../../images/imgSN2.gif' style='margin-left:2px;margin-right:4px;vertical-align:middle;border: 0px;'>"; break;

                    case 4: strHTMLAmbito += "<img src='../../../../images/imgSN1.gif' style='margin-left:2px;margin-right:4px;vertical-align:middle;border: 0px;'>"; break;

                    case 5: strHTMLAmbito += "<img src='../../../../images/imgNodo.gif' style='margin-left:2px;margin-right:4px;vertical-align:middle;border: 0px;'>"; break;

                    case 6: strHTMLAmbito += "<img src='../../../../images/imgSubNodo.gif' style='margin-left:2px;margin-right:4px;vertical-align:middle;border: 0px;'>"; break;
                    }

                    strHTMLAmbito += "<nobr class='NBR W230'>" + dr["t441_denominacion"].ToString() + "</nobr></td></tr>";
                    break;

                case 2:
                    if (strIDsResponsable != "")
                    {
                        strIDsResponsable += ",";
                    }
                    strIDsResponsable  += dr["t441_valor"].ToString();
                    strHTMLResponsable += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><nobr class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</nobr></td></tr>";
                    break;

                case 3:
                    if (strIDsNaturaleza != "")
                    {
                        strIDsNaturaleza += ",";
                    }
                    strIDsNaturaleza  += dr["t441_valor"].ToString();
                    strHTMLNaturaleza += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><nobr class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</nobr></td></tr>";
                    break;

                case 4:
                    if (strIDsModeloCon != "")
                    {
                        strIDsModeloCon += ",";
                    }
                    strIDsModeloCon  += dr["t441_valor"].ToString();
                    strHTMLModeloCon += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><nobr class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</nobr></td></tr>";
                    break;

                case 5:
                    if (strIDsHorizontal != "")
                    {
                        strIDsHorizontal += ",";
                    }
                    strIDsHorizontal  += dr["t441_valor"].ToString();
                    strHTMLHorizontal += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><nobr class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</nobr></td></tr>";
                    break;

                case 6: if (strIDsSector != "")
                    {
                        strIDsSector += ",";
                    }
                    strIDsSector  += dr["t441_valor"].ToString();
                    strHTMLSector += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><nobr class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</nobr></td></tr>";
                    break;

                case 7: if (strIDsSegmento != "")
                    {
                        strIDsSegmento += ",";
                    }
                    strIDsSegmento  += dr["t441_valor"].ToString();
                    strHTMLSegmento += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><nobr class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</nobr></td></tr>";
                    break;

                case 8:
                    if (strIDsCliente != "")
                    {
                        strIDsCliente += ",";
                    }
                    strIDsCliente  += dr["t441_valor"].ToString();
                    strHTMLCliente += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><nobr class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</nobr></td></tr>";
                    break;

                case 9:
                    if (strIDsContrato != "")
                    {
                        strIDsContrato += ",";
                    }
                    strIDsContrato  += dr["t441_valor"].ToString();
                    strHTMLContrato += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><nobr class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</nobr></td></tr>";
                    break;

                case 10:
                    if (strIDsQn != "")
                    {
                        strIDsQn += ",";
                    }
                    strIDsQn  += dr["t441_valor"].ToString();
                    strHTMLQn += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><nobr class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</nobr></td></tr>";
                    break;

                case 11:
                    if (strIDsQ1 != "")
                    {
                        strIDsQ1 += ",";
                    }
                    strIDsQ1  += dr["t441_valor"].ToString();
                    strHTMLQ1 += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><nobr class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</nobr></td></tr>";
                    break;

                case 12:
                    if (strIDsQ2 != "")
                    {
                        strIDsQ2 += ",";
                    }
                    strIDsQ2  += dr["t441_valor"].ToString();
                    strHTMLQ2 += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><nobr class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</nobr></td></tr>";
                    break;

                case 13:
                    if (strIDsQ3 != "")
                    {
                        strIDsQ3 += ",";
                    }
                    strIDsQ3  += dr["t441_valor"].ToString();
                    strHTMLQ3 += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><nobr class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</nobr></td></tr>";
                    break;

                case 14:
                    if (strIDsQ4 != "")
                    {
                        strIDsQ4 += ",";
                    }
                    strIDsQ4  += dr["t441_valor"].ToString();
                    strHTMLQ4 += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><nobr class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</nobr></td></tr>";
                    break;

                //case 15://Columnas a sacar
                //    if (strMagnitudes != "") strMagnitudes += "///";
                //    strMagnitudes += dr["t441_valor"].ToString() +"##"+ dr["t441_denominacion"].ToString();
                //    break;
                case 16:
                    aID = Regex.Split(dr["t441_valor"].ToString(), "-");
                    if (strIDsProyecto != "")
                    {
                        strIDsProyecto += ",";
                    }
                    strIDsProyecto += aID[0];

                    strHTMLProyecto += "<tr id='" + aID[0] + "' style='height:16px;' ";
                    strHTMLProyecto += "categoria='" + aID[1] + "' ";
                    strHTMLProyecto += "cualidad='" + aID[2] + "' ";
                    strHTMLProyecto += "estado='" + aID[3] + "'><td>";

                    if (aID[1] == "P")
                    {
                        strHTMLProyecto += "<img src='../../../../images/imgProducto.gif' style='margin-left:2px;margin-right:2px;vertical-align:middle;border: 0px;'>";
                    }
                    else
                    {
                        strHTMLProyecto += "<img src='../../../../images/imgServicio.gif' style='margin-left:2px;margin-right:2px;vertical-align:middle;border: 0px;'>";
                    }

                    switch (aID[2])
                    {
                    case "C": strHTMLProyecto += "<img src='../../../../images/imgIconoContratante.gif' style='margin-left:2px;margin-right:2px;vertical-align:middle;border: 0px;'>"; break;

                    case "J": strHTMLProyecto += "<img src='../../../../images/imgIconoRepJor.gif' style='margin-left:2px;margin-right:2px;vertical-align:middle;border: 0px;'>"; break;

                    case "P": strHTMLProyecto += "<img src='../../../../images/imgIconoRepPrecio.gif' style='margin-left:2px;margin-right:2px;vertical-align:middle;border: 0px;'>"; break;
                    }

                    switch (aID[3])
                    {
                    case "A": strHTMLProyecto += "<img src='../../../../images/imgIconoProyAbierto.gif' title='Proyecto abierto' style='margin-left:2px;margin-right:2px;vertical-align:middle;border: 0px;'>"; break;

                    case "C": strHTMLProyecto += "<img src='../../../../images/imgIconoProyCerrado.gif' title='Proyecto cerrado' style='margin-left:2px;margin-right:2px;vertical-align:middle;border: 0px;'>"; break;

                    case "H": strHTMLProyecto += "<img src='../../../../images/imgIconoProyHistorico.gif' title='Proyecto histórico' style='margin-left:2px;margin-right:2px;vertical-align:middle;border: 0px;'>"; break;

                    case "P": strHTMLProyecto += "<img src='../../../../images/imgIconoProyPresup.gif' title='Proyecto presupuestado' style='margin-left:2px;margin-right:2px;vertical-align:middle;border: 0px;'>"; break;
                    }

                    strHTMLProyecto += "<nobr class='NBR W190' style='margin-left:10px;' onmouseover='TTip(event)'>" + dr["t441_denominacion"].ToString() + "</nobr></td></tr>";
                    break;

                case 17:
                    if (strIDsOrgComercial != "")
                    {
                        strIDsOrgComercial += ",";
                    }
                    strIDsOrgComercial  += dr["t441_valor"].ToString();
                    strHTMLOrgComercial += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><nobr class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</nobr></td></tr>";
                    break;
                }
            }
            dr.Close();
            dr.Dispose();
            #endregion

            if (nConceptoEje >= 7)
            {
                nOpcion = nConceptoEje;
            }
            else
            {
                if (nNivelMinimo != 0)
                {
                    nOpcion = nNivelMinimo;
                }
                else
                {
                    nOpcion = nEstructuraMinima;
                }
            }

            for (int i = 0; i < aSubnodos.Count; i++)
            {
                if (i > 0)
                {
                    sSubnodos += ",";
                }
                sSubnodos += aSubnodos[i];
            }

            sb.Append(nOpcion + "@#@");             //13
            sb.Append(sSubnodos + "@#@");           //14
            sb.Append(strHTMLAmbito + "@#@");       //15
            sb.Append(strIDsAmbito + "@#@");        //16
            sb.Append(strHTMLResponsable + "@#@");  //17
            sb.Append(strIDsResponsable + "@#@");   //18
            sb.Append(strHTMLNaturaleza + "@#@");   //19
            sb.Append(strIDsNaturaleza + "@#@");    //20
            sb.Append(strHTMLModeloCon + "@#@");    //21
            sb.Append(strIDsModeloCon + "@#@");     //22
            sb.Append(strHTMLHorizontal + "@#@");   //23
            sb.Append(strIDsHorizontal + "@#@");    //24
            sb.Append(strHTMLSector + "@#@");       //25
            sb.Append(strIDsSector + "@#@");        //26
            sb.Append(strHTMLSegmento + "@#@");     //27
            sb.Append(strIDsSegmento + "@#@");      //28
            sb.Append(strHTMLCliente + "@#@");      //29
            sb.Append(strIDsCliente + "@#@");       //30
            sb.Append(strHTMLContrato + "@#@");     //31
            sb.Append(strIDsContrato + "@#@");      //32
            sb.Append(strHTMLQn + "@#@");           //33
            sb.Append(strIDsQn + "@#@");            //34
            sb.Append(strHTMLQ1 + "@#@");           //35
            sb.Append(strIDsQ1 + "@#@");            //36
            sb.Append(strHTMLQ2 + "@#@");           //37
            sb.Append(strIDsQ2 + "@#@");            //38
            sb.Append(strHTMLQ3 + "@#@");           //39
            sb.Append(strIDsQ3 + "@#@");            //40
            sb.Append(strHTMLQ4 + "@#@");           //41
            sb.Append(strIDsQ4 + "@#@");            //42
            sb.Append(strMagnitudes + "@#@");       //43
            sb.Append(strHTMLProyecto + "@#@");     //44
            sb.Append(strIDsProyecto + "@#@");      //45
            sb.Append(strHTMLOrgComercial + "@#@"); //46
            sb.Append(strIDsOrgComercial + "@#@");  //47

            return("OK@#@" + sb.ToString());
        }
        catch (Exception ex)
        {
            return("Error@#@" + Errores.mostrarError("Error al obtener la preferencia.", ex, false));
        }
    }
Beispiel #9
0
    private string Grabar(string strDatosBasicos, string strFiguras, string strFigurasV)
    {
        string sResul = "";
        int    nID    = -1;

        string[] aDatosBasicos = null;

        #region abrir conexión y transacción
        try
        {
            oConn = Conexion.Abrir();
            tr    = Conexion.AbrirTransaccionSerializable(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
        {
            #region Datos Generales
            if (strDatosBasicos != "")//No se ha modificado nada de la pestaña general
            {
                aDatosBasicos = Regex.Split(strDatosBasicos, "##");
                ///aDatosBasicos[0] = ID
                ///aDatosBasicos[1] = Denominacion
                ///aDatosBasicos[2] = IDResponsable
                ///aDatosBasicos[3] = Activo
                ///aDatosBasicos[4] = Orden
                ///aDatosBasicos[5] = IDPadre
                ///aDatosBasicos[6] = t313_idempresa
                ///
                if (aDatosBasicos[0] == "") //insert
                {
                    nID = SUBNODO.Insert(tr,
                                         Utilidades.unescape(aDatosBasicos[1]),
                                         int.Parse(aDatosBasicos[5]),
                                         int.Parse(aDatosBasicos[4]),
                                         (aDatosBasicos[3] == "1") ? true : false,
                                         0,
                                         int.Parse(aDatosBasicos[2]),
                                         (aDatosBasicos[6] == "")? null : (int?)int.Parse(aDatosBasicos[6])
                                         );
                }
                else //update
                {
                    nID = int.Parse(aDatosBasicos[0].Replace(".", ""));
                    SUBNODO.Update(tr,
                                   nID,
                                   Utilidades.unescape(aDatosBasicos[1]),
                                   int.Parse(aDatosBasicos[5]),
                                   int.Parse(aDatosBasicos[4]),
                                   (aDatosBasicos[3] == "1") ? true : false,
                                   int.Parse(aDatosBasicos[2]),
                                   (aDatosBasicos[6] == "") ? null : (int?)int.Parse(aDatosBasicos[6])
                                   );
                }
            }

            #endregion

            #region Datos Figuras
            if (strFiguras != "")//No se ha modificado nada de la pestaña de Figuras
            {
                string[] aUsuarios = Regex.Split(strFiguras, "///");
                foreach (string oUsuario in aUsuarios)
                {
                    if (oUsuario == "")
                    {
                        continue;
                    }
                    string[] aFig = Regex.Split(oUsuario, "##");
                    ///aFig[0] = bd
                    ///aFig[1] = idUsuario
                    ///aFig[2] = Figuras
                    //FIGURASUBNODO.DeleteUsuario(tr, nID, int.Parse(aFig[1]));
                    //if (aFig[0] != "D")
                    //{
                    //    string[] aFiguras = Regex.Split(aFig[2], ",");
                    //    foreach (string oFigura in aFiguras)
                    //    {
                    //        if (oFigura == "") continue;
                    //        FIGURASUBNODO.Insert(tr, nID, int.Parse(aFig[1]), oFigura);
                    //    }
                    //}
                    if (aFig[0] == "D")
                    {
                        FIGURASUBNODO.DeleteUsuario(tr, nID, int.Parse(aFig[1]));
                    }
                    else
                    {
                        string[] aFiguras = Regex.Split(aFig[2], ",");
                        foreach (string oFigura in aFiguras)
                        {
                            if (oFigura == "")
                            {
                                continue;
                            }
                            string[] aFig2 = Regex.Split(oFigura, "@");
                            ///aFig2[0] = bd
                            ///aFig2[1] = Figura
                            if (aFig2[0] == "D")
                            {
                                FIGURASUBNODO.Delete(tr, nID, int.Parse(aFig[1]), aFig2[1]);
                            }
                            else
                            {
                                FIGURASUBNODO.Insert(tr, nID, int.Parse(aFig[1]), aFig2[1]);
                            }
                        }
                    }
                }
            }

            #endregion

            #region Datos Figuras Virtuales
            if (strFigurasV != "")//No se ha modificado nada de la pestaña de Figuras virtuales
            {
                string[] aUsuariosV = Regex.Split(strFigurasV, "///");
                foreach (string oUsuarioV in aUsuariosV)
                {
                    if (oUsuarioV == "")
                    {
                        continue;
                    }
                    string[] aFigV = Regex.Split(oUsuarioV, "##");

                    ///aFig[0] = bd
                    ///aFig[1] = idUsuario
                    ///aFig[2] = Figuras

                    if (aFigV[0] == "D")
                    {
                        FIGURAPSN_SUBNODO.DeleteUsuario(tr, nID, int.Parse(aFigV[1]));
                    }
                    else
                    {
                        string[] aFigurasV = Regex.Split(aFigV[2], ",");
                        foreach (string oFiguraV in aFigurasV)
                        {
                            if (oFiguraV == "")
                            {
                                continue;
                            }
                            string[] aFig2V = Regex.Split(oFiguraV, "@");
                            ///aFig2[0] = bd
                            ///aFig2[1] = Figura
                            if (aFig2V[0] == "D")
                            {
                                FIGURAPSN_SUBNODO.Delete(tr, nID, int.Parse(aFigV[1]), aFig2V[1]);
                            }
                            else
                            {
                                FIGURAPSN_SUBNODO.Insert(tr, nID, int.Parse(aFigV[1]), aFig2V[1]);
                            }
                        }
                    }
                }
            }

            #endregion
            Conexion.CommitTransaccion(tr);
            sResul = "OK@#@" + nID.ToString("#,###");
        }
        catch (Exception ex)
        {
            Conexion.CerrarTransaccion(tr);
            sResul = "Error@#@" + Errores.mostrarError("Error al grabar los datos del elemento de estructura", ex);
        }
        finally
        {
            Conexion.Cerrar(oConn);
        }
        return(sResul);
    }
Beispiel #10
0
    private string obtenerEstructura(string sNivel)
    {
        string sResul = "";

        try
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            SqlDataReader             dr = null;

            if (sNivel == "SUBNODO")
            {
                dr = SUBNODO.ObtenerSubNodosUsuarioSegunVisionProyectosTEC(null, (int)Session["UsuarioActual"], false, true);
            }
            else if (sNivel == "NODO")
            {
                dr = NODO.ObtenerNodosUsuarioSegunVisionProyectosTEC(null, (int)Session["UsuarioActual"], false, true);
            }
            else if (sNivel == "SNN1")
            {
                dr = SUPERNODO1.ObtenerSuperNodo1UsuarioSegunVisionProyectosTEC(null, (int)Session["UsuarioActual"], false, true);
            }
            else if (sNivel == "SNN2")
            {
                dr = SUPERNODO2.ObtenerSuperNodo2UsuarioSegunVisionProyectosTEC(null, (int)Session["UsuarioActual"], false, true);
            }
            else if (sNivel == "SNN3")
            {
                dr = SUPERNODO3.ObtenerSuperNodo3UsuarioSegunVisionProyectosTEC(null, (int)Session["UsuarioActual"], false, true);
            }
            else if (sNivel == "SNN4")
            {
                dr = SUPERNODO4.ObtenerSuperNodo4UsuarioSegunVisionProyectosTEC(null, (int)Session["UsuarioActual"], false, true);
            }

            sb.Append("<table id='tblDatos' class='texto MA' style='WIDTH: 350px;'>" + (char)10);
            sb.Append("<colgroup><col style='width:350px;' /></colgroup>" + (char)10);
            sb.Append("<tbody>");
            string sTootTip = "";
            while (dr.Read())
            {
                sb.Append("<tr id='" + dr["IDENTIFICADOR"].ToString() + "'");
                sb.Append("onclick='mm(event)' ondblclick='insertarItem(this)' onmousedown='DD(event)' ");
                sTootTip = "";
                switch (sNivel)
                {
                case "SNN4":
                    if (Utilidades.EstructuraActiva("SN4"))
                    {
                        sTootTip = "<label style='width:60px'>" + Estructura.getDefCorta(Estructura.sTipoElem.SUPERNODO4) + ":</label> " + dr["DES_SN4"].ToString();
                    }
                    break;

                case "SNN3":
                    if (Utilidades.EstructuraActiva("SN4"))
                    {
                        sTootTip = "<label style='width:60px'>" + Estructura.getDefCorta(Estructura.sTipoElem.SUPERNODO4) + ":</label> " + dr["DES_SN4"].ToString() + "<br>";
                    }
                    if (Utilidades.EstructuraActiva("SN3"))
                    {
                        sTootTip += "<label style='width:60px'>" + Estructura.getDefCorta(Estructura.sTipoElem.SUPERNODO3) + ":</label> " + dr["DES_SN3"].ToString();
                    }
                    break;

                case "SNN2":
                    if (Utilidades.EstructuraActiva("SN4"))
                    {
                        sTootTip = "<label style='width:60px'>" + Estructura.getDefCorta(Estructura.sTipoElem.SUPERNODO4) + ":</label> " + dr["DES_SN4"].ToString() + "<br>";
                    }
                    if (Utilidades.EstructuraActiva("SN3"))
                    {
                        sTootTip += "<label style='width:60px'>" + Estructura.getDefCorta(Estructura.sTipoElem.SUPERNODO3) + ":</label> " + dr["DES_SN3"].ToString() + "<br>";
                    }
                    if (Utilidades.EstructuraActiva("SN2"))
                    {
                        sTootTip += "<label style='width:60px'>" + Estructura.getDefCorta(Estructura.sTipoElem.SUPERNODO2) + ":</label> " + dr["DES_SN2"].ToString();
                    }
                    break;

                case "SNN1":
                    if (Utilidades.EstructuraActiva("SN4"))
                    {
                        sTootTip = "<label style='width:60px'>" + Estructura.getDefCorta(Estructura.sTipoElem.SUPERNODO4) + ":</label> " + dr["DES_SN4"].ToString() + "<br>";
                    }
                    if (Utilidades.EstructuraActiva("SN3"))
                    {
                        sTootTip += "<label style='width:60px'>" + Estructura.getDefCorta(Estructura.sTipoElem.SUPERNODO3) + ":</label> " + dr["DES_SN3"].ToString() + "<br>";
                    }
                    if (Utilidades.EstructuraActiva("SN2"))
                    {
                        sTootTip += "<label style='width:60px'>" + Estructura.getDefCorta(Estructura.sTipoElem.SUPERNODO2) + ":</label> " + dr["DES_SN2"].ToString() + "<br>";
                    }
                    if (Utilidades.EstructuraActiva("SN1"))
                    {
                        sTootTip += "<label style='width:60px'>" + Estructura.getDefCorta(Estructura.sTipoElem.SUPERNODO1) + ":</label> " + dr["DES_SN1"].ToString();
                    }
                    break;

                case "NODO":
                    if (Utilidades.EstructuraActiva("SN4"))
                    {
                        sTootTip = "<label style='width:60px'>" + Estructura.getDefCorta(Estructura.sTipoElem.SUPERNODO4) + ":</label> " + dr["DES_SN4"].ToString() + "<br>";
                    }
                    if (Utilidades.EstructuraActiva("SN3"))
                    {
                        sTootTip += "<label style='width:60px'>" + Estructura.getDefCorta(Estructura.sTipoElem.SUPERNODO3) + ":</label> " + dr["DES_SN3"].ToString() + "<br>";
                    }
                    if (Utilidades.EstructuraActiva("SN2"))
                    {
                        sTootTip += "<label style='width:60px'>" + Estructura.getDefCorta(Estructura.sTipoElem.SUPERNODO2) + ":</label> " + dr["DES_SN2"].ToString() + "<br>";
                    }
                    if (Utilidades.EstructuraActiva("SN1"))
                    {
                        sTootTip += "<label style='width:60px'>" + Estructura.getDefCorta(Estructura.sTipoElem.SUPERNODO1) + ":</label> " + dr["DES_SN1"].ToString() + "<br>";
                    }
                    sTootTip += "<label style='width:60px'>" + Estructura.getDefCorta(Estructura.sTipoElem.NODO) + ":</label> " + dr["DES_NODO"].ToString();
                    break;

                case "SUBNODO":
                    if (Utilidades.EstructuraActiva("SN4"))
                    {
                        sTootTip = "<label style='width:60px'>" + Estructura.getDefCorta(Estructura.sTipoElem.SUPERNODO4) + ":</label> " + dr["DES_SN4"].ToString() + "<br>";
                    }
                    if (Utilidades.EstructuraActiva("SN3"))
                    {
                        sTootTip += "<label style='width:60px'>" + Estructura.getDefCorta(Estructura.sTipoElem.SUPERNODO3) + ":</label> " + dr["DES_SN3"].ToString() + "<br>";
                    }
                    if (Utilidades.EstructuraActiva("SN2"))
                    {
                        sTootTip += "<label style='width:60px'>" + Estructura.getDefCorta(Estructura.sTipoElem.SUPERNODO2) + ":</label> " + dr["DES_SN2"].ToString() + "<br>";
                    }
                    if (Utilidades.EstructuraActiva("SN1"))
                    {
                        sTootTip += "<label style='width:60px'>" + Estructura.getDefCorta(Estructura.sTipoElem.SUPERNODO1) + ":</label> " + dr["DES_SN1"].ToString() + "<br>";
                    }
                    sTootTip += "<label style='width:60px'>" + Estructura.getDefCorta(Estructura.sTipoElem.NODO) + ":</label> " + dr["DES_NODO"].ToString() + "<br>";
                    sTootTip += "<label style='width:60px'>" + Estructura.getDefCorta(Estructura.sTipoElem.SUBNODO) + ":</label> " + dr["DES_SUBNODO"].ToString();
                    break;
                }

                sb.Append("style='height:16px;noWrap:true;' title=\"cssbody=[dvbdy] cssheader=[dvhdr] header=[<img src='../../../../../images/info.gif' style='vertical-align:middle'>  Estructura] body=[" + sTootTip + "] hideselects=[off]\">");
                sb.Append("<td style='padding-left:5px;' >" + dr["DENOMINACION"].ToString() + "</td>");
                sb.Append("</tr>" + (char)10);
            }
            dr.Close();
            dr.Dispose();
            sb.Append("</tbody>");
            sb.Append("</table>");

            sResul = "OK@#@" + sb.ToString();
        }
        catch (System.Exception objError)
        {
            sResul = "Error@#@" + Errores.mostrarError("Error al leer el catálogo nivel: " + sNivel, objError);
        }
        return(sResul);
    }
Beispiel #11
0
    private string Procesar(string sForzar, string sAnno, string strDatos)
    {
        string    sResul = "";
        int       nSubnodo = 0, nPE = 0, nPSN = 0;//, nDesde = 0, nHasta = 0, nAux = 0
        Hashtable htSubnodos = new Hashtable();
        Hashtable htNodos    = new Hashtable();
        NODO      oNodoAux   = null;

        int[] nDatosNodo;
        int?  idFicepiValidador = null;

        try
        {
            #region abrir conexión y transacción
            try
            {
                oConn = Conexion.Abrir();
                tr    = Conexion.AbrirTransaccionSerializable(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

            string[] aProyectos = Regex.Split(strDatos, "///");
            foreach (string oProyecto in aProyectos)
            {
                if (oProyecto == "")
                {
                    continue;
                }
                string[] aValores = Regex.Split(oProyecto, "##");
                /// aValores[0] = idNodo
                /// aValores[1] = idNaturaleza
                /// aValores[2] = FIV
                /// aValores[3] = FFV
                /// aValores[4] = idPlantilla
                /// aValores[5] = Denominación Naturaleza
                /// aValores[6] = Esreplicable
                ///
                /// aValores[7] = Hereda Nodo
                /// aValores[8] = Id Usuario responsable
                /// aValores[9] = Imputable GASVI
                /// aValores[10] = Id Ficepi Validador GASVI

                if (sForzar == "N" && PROYECTOSUBNODO.ExistePIG(tr, int.Parse(aValores[0]), int.Parse(aValores[1]), short.Parse(sAnno)))
                {
                    continue;
                }
                #region Datos de nodo y subnodo
                nDatosNodo = (int[])htSubnodos[int.Parse(aValores[0])];
                if (nDatosNodo == null)
                {
                    int nCountSubnodosManiobra2  = 0;
                    int idSubnodoManiobra2       = 0;
                    int nCountSubnodosNoManiobra = 0;
                    int idSubnodoNoManiobra      = 0;

                    DataSet dsSubNodos = SUBNODO.CatalogoActivos(tr, int.Parse(aValores[0]), true);
                    foreach (DataRow oSN in dsSubNodos.Tables[0].Rows)
                    {
                        if ((byte)oSN["t304_maniobra"] == 2)
                        {
                            nCountSubnodosManiobra2++;
                            idSubnodoManiobra2 = (int)oSN["t304_idsubnodo"];
                        }
                        else if ((byte)oSN["t304_maniobra"] == 0)
                        {
                            nCountSubnodosNoManiobra++;
                            idSubnodoNoManiobra = (int)oSN["t304_idsubnodo"];
                        }
                    }
                    dsSubNodos.Dispose();

                    //nSubnodo = SUBNODO.ObtenerSubnodoManiobra2(tr, int.Parse(aValores[0]));
                    NODO oNodo = NODO.Select(tr, int.Parse(aValores[0]));

                    if (nCountSubnodosNoManiobra == 1)
                    {
                        nSubnodo = idSubnodoNoManiobra;
                    }
                    else if (nCountSubnodosManiobra2 >= 1)
                    {
                        nSubnodo = idSubnodoManiobra2;
                    }
                    else
                    {
                        nSubnodo = SUBNODO.Insert(tr, "Improductivos genéricos", int.Parse(aValores[0]), 0, true, 2, oNodo.t314_idusuario_responsable, null);
                    }
                    htSubnodos.Add(int.Parse(aValores[0]), new int[3] {
                        int.Parse(aValores[0]),
                        nSubnodo,
                        oNodo.t314_idusuario_responsable
                    });
                    nDatosNodo = (int[])htSubnodos[int.Parse(aValores[0])];
                }


                oNodoAux = (NODO)htNodos[int.Parse(aValores[0])];
                if (oNodoAux == null)
                {
                    oNodoAux = NODO.Select(tr, int.Parse(aValores[0]));
                    htNodos.Add(int.Parse(aValores[0]), oNodoAux);
                }
                #endregion
                string sDenominacion = sAnno + " " + Utilidades.unescape(aValores[5]) + " (" + oNodoAux.t303_denabreviada + ")";
                int    nIdClientePIG = CLIENTE.ObtenerClientePIG(tr, int.Parse(aValores[0]));

                nPE = PROYECTO.Insert(tr, "A", sDenominacion.Substring(0, (sDenominacion.Length > 70) ? 70 : sDenominacion.Length), "",
                                      nIdClientePIG, null, null, int.Parse(aValores[1]), 4, DateTime.Parse(aValores[2]),
                                      DateTime.Parse(aValores[3]), "S", "J", "J", short.Parse(sAnno), false, false,
                                      (aValores[6] == "1")? true:false, null, false, null, null, Constantes.gIdNLO_Defecto);

                //nPSN = PROYECTOSUBNODO.Insert(tr, nPE, nDatosNodo[1], false, "C", true, nDatosNodo[2],
                //                            sAnno + " " + Utilidades.unescape(aValores[5]),
                //                            "X", "X", false, true, false, false, false, "", "", "", null, null, null, null,
                //                            null, null, false, 0);
                //Mikel 30/12/2011. Pongo como seudónimo del subnodo la misma denominación que para el proyecto
                if (aValores[10] != "" && aValores[10] != "null")
                {
                    idFicepiValidador = int.Parse(aValores[10]);
                }
                else
                {
                    idFicepiValidador = null;
                }
                //Mikel 02/02/2016 Los PIG deben llevar el admite recurso PST a cero
                nPSN = PROYECTOSUBNODO.Insert(tr, nPE, nDatosNodo[1], false, "C", (aValores[7] == "1") ? true : false,
                                              int.Parse(aValores[8]),                        //nDatosNodo[2],//Id Usuario Responsable
                                              sDenominacion.Substring(0, (sDenominacion.Length > 70) ? 70 : sDenominacion.Length),
                                              "X", "X", (aValores[9] == "1") ? true : false, //Imputable GASVI
                                              false,                                         //Admite recurso PST
                                              false, false, false, "", "", "", null, null, null, null, null,
                                              idFicepiValidador,                             //Id Ficepi Validador GASVI
                                              false, 0);

                //A falta de tener en cuenta si la naturaleza tiene plantilla.
                TAREAPSP.UpdateVigenciaByPSN(tr, nPSN, DateTime.Parse(aValores[2]), DateTime.Parse(aValores[3]));

                #region Grabación de plantilla
                if (aValores[4] != "0")
                {
                    //Hay que grabar la plantilla de PE.
                    int       iPos, iMargen, iPT = -1, iFase = -1, iActiv = -1, iTarea = -1, iHito = -1, iAux = -1, iOrden = 0, idItemHitoPl;
                    double    fDuracion;
                    decimal   fPresupuesto;
                    string    sTipo, sDesc, sFiniPL, sFfinPL, sFiniV, sFfinV, sAux, sAvisos, sIdTareaPL, sCad;
                    bool      bFacturable, bObligaEst, bAvanceAutomatico, bEstadoTarea;
                    ArrayList alTareas = new ArrayList();

                    PROYECTOSUBNODO.BorrarPTByPSN(tr, nPSN);

                    #region 1º Se insertan las filas de la estructura
                    SqlDataReader dr = PlantTarea.Catalogo(int.Parse(aValores[4]));
                    while (dr.Read())
                    {
                        sTipo = dr["Tipo"].ToString();
                        if (sTipo == "H")
                        {
                            sTipo = "HT";
                        }
                        sDesc   = Utilidades.escape(dr["Nombre"].ToString());
                        iMargen = int.Parse(dr["margen"].ToString());

                        //Si la linea es de hito compruebo si el hito es de tarea o no para actualizar la variable iTarea
                        if (sTipo == "HT" || sTipo == "HM" || sTipo == "HF")
                        {
                            switch (iMargen)
                            {
                            case 80:    //es un hito de tarea por lo que mantengo el código de tarea
                                break;

                            case 60:    //es un hito de fase y actividad o de tarea con actividad sin fase
                                if (iFase != -1)
                                {
                                    iTarea = -1;
                                }
                                break;

                            case 40:    //es un hito de fase o de tarea sin actividad ni fase o de actividad sin fase
                                if (iFase != -1)
                                {
                                    iTarea = -1;
                                    iActiv = -1;
                                }
                                else
                                {
                                    if (iActiv != -1)
                                    {
                                        iTarea = -1;
                                    }
                                }
                                break;

                            case 20:   //es un hito proyecto técnico
                            case 0:    //es un hito de proyecto económico
                                iTarea = -1;
                                iActiv = -1;
                                iFase  = -1;
                                break;
                            }
                        }

                        fDuracion    = 0;
                        sFiniPL      = ""; //¿alguno es obligatorio?
                        sFfinPL      = "";
                        sFiniV       = Fechas.primerDiaMes(DateTime.Today).ToShortDateString();
                        sFfinV       = "";
                        fPresupuesto = 0;
                        sIdTareaPL   = dr["t339_iditems"].ToString();

                        bFacturable = (bool)dr["t339_facturable"];

                        //if (sEstado != "D")
                        iOrden++;
                        //iOrden = int.Parse(aElem[8]);
                        //Si no ha cambiado la linea pero el orden actual es distinto del original hay que updatear la linea para actualizar el orden
                        switch (sTipo)
                        {
                        case "P":
                            iPT    = -1;
                            iFase  = -1;
                            iActiv = -1;
                            break;

                        case "F":
                            iFase  = -1;
                            iActiv = -1;
                            break;

                        case "A":
                            iActiv = -1;
                            if (iMargen != 40)
                            {
                                iFase = -1;
                            }
                            break;

                        case "T":
                            iTarea = -1;
                            if (iMargen == 40)
                            {
                                iFase = -1;
                            }
                            else
                            {
                                if (iMargen != 60)
                                {
                                    iFase  = -1;
                                    iActiv = -1;
                                }
                            }
                            break;

                        case "HT":
                        case "HF":
                        case "HM":
                            iHito = -1;    //int.Parse(aElem[7]);
                            break;
                        }

                        bObligaEst        = (bool)dr["obliga"];
                        bAvanceAutomatico = (bool)dr["avance"];
                        sAux = EstrProy.Insertar(tr, int.Parse(aValores[0]), nPE, nPSN, sTipo, sDesc, iPT, iFase, iActiv, iMargen, iOrden,
                                                 sFiniPL, sFfinPL, fDuracion, sFiniV, sFfinV, fPresupuesto,
                                                 bFacturable, bObligaEst, bAvanceAutomatico, "1", "", 0);

                        iPos    = sAux.IndexOf("##");
                        iAux    = int.Parse(sAux.Substring(0, iPos));
                        sAvisos = sAux.Substring(iPos + 2);

                        switch (sTipo)
                        {
                        case "P": iPT = iAux; break;

                        case "F": iFase = iAux; break;

                        case "A": iActiv = iAux; break;

                        case "T":
                            iTarea = iAux;
                            if (sIdTareaPL != "" && sIdTareaPL != "-1")
                            {
                                string[] aDatosAux = new string[] { sIdTareaPL, iAux.ToString() };
                                alTareas.Add(aDatosAux);
                                //Grabo los atributos estadísticos provenientes de la plantilla. iAux=código de tarea
                                TAREAPSP.InsertarAE(tr, int.Parse(sIdTareaPL), iAux);
                            }

                            //Hay que guardar las tareas que quedan pendientes, ya que luego hay que actualizar el estado en pantalla
                            bEstadoTarea = TAREAPSP.bFaltanValoresAE(tr, short.Parse(aValores[0]), iAux);
                            if (bEstadoTarea)
                            {
                                //actualizo el estado de la tarea
                                TAREAPSP.Modificar(tr, iTarea, sDesc, iPT, iActiv, iOrden, sFiniPL, sFfinPL, fDuracion, sFiniV,
                                                   sFfinV, (int)Session["UsuarioActual"], fPresupuesto, 2, bFacturable);
                                //sAvisos = "Se han insertado tareas que quedan en estado Pendiente ya que el C.R. tiene atributos estadísticos\nobligatorios para los que la tarea no tiene valores asignados";
                                //if (sTareasPendientes == "") sTareasPendientes = iAux.ToString();
                                //else sTareasPendientes += "//"+ iAux.ToString();
                            }
                            break;

                        case "HT":
                            iHito = iAux;
                            break;
                        }
                        if (sTipo.Substring(0, 1) == "H")
                        {
                            AsociarTareasHitos(tr, nPSN, iPT, iFase, iActiv, iTarea, iHito, iMargen);
                        }
                    }
                    dr.Close();
                    dr.Dispose();
                    #endregion

                    #region 2º Se insertan las filas de los hitos de cumplimiento discontinuo
                    dr = PlantTarea.CatalogoHitos(int.Parse(aValores[4]));
                    while (dr.Read())
                    {
                        sTipo        = "HM";
                        sDesc        = dr["t369_deshito"].ToString();
                        idItemHitoPl = (int)dr["t369_idhito"];
                        iOrden       = int.Parse(dr["t369_orden"].ToString());

                        sAux    = EstrProy.Insertar(tr, int.Parse(aValores[0]), nPE, nPSN, sTipo, sDesc, 0, 0, 0, 0, iOrden, "", "", 0, "", "", 0, false, false, false, "1", "", 0);
                        iPos    = sAux.IndexOf("##");
                        iAux    = int.Parse(sAux.Substring(0, iPos));
                        sAvisos = sAux.Substring(iPos + 2);
                        //Si es hito de cumplimiento discontinuo y se ha cargado desde plantilla hay que grabar sus tareas
                        if (sTipo == "HM")
                        {
                            if (idItemHitoPl > 0)
                            {
                                //Recojo las tareas de plantilla del código de hito en plantilla
                                sCad = HITOE_PLANT.fgListaTareasPlantilla(tr, idItemHitoPl);
                                string[] aElems2 = Regex.Split(sCad, @"##");
                                for (int j = 0; j < aElems2.Length; j++)
                                {
                                    sIdTareaPL = aElems2[j];
                                    if (sIdTareaPL != "" && sIdTareaPL != "-1")
                                    {
                                        //Identifico el código de tarea real asociado al codigo de tarea de plantilla
                                        for (int n = 0; n < alTareas.Count; n++)
                                        {
                                            if (((string[])alTareas[n])[0] == sIdTareaPL)
                                            {//Inserto la tarea del hito
                                                sCad   = ((string[])alTareas[n])[1];
                                                iTarea = int.Parse(sCad);
                                                EstrProy.InsertarTareaHito(tr, iAux, iTarea);
                                                break;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }//while
                    dr.Close();
                    dr.Dispose();
                    #endregion
                }
                #endregion
            }

            Conexion.CommitTransaccion(tr);

            sResul = "OK";
        }
        catch (Exception ex)
        {
            Conexion.CerrarTransaccion(tr);
            sResul = "Error@#@" + Errores.mostrarError("Error al crear los proyectos improductivos genéricos.", ex, false);
        }
        finally
        {
            Conexion.Cerrar(oConn);
        }
        return(sResul);
    }
    private string getPreferencia(string sIdPrefUsuario)
    {
        StringBuilder sb            = new StringBuilder();
        int           idPrefUsuario = 0;

        //int nOpcion = 1;
        //string sEstado = "";
        try
        {
            SqlDataReader dr = PREFERENCIAUSUARIO.Obtener(null, (sIdPrefUsuario == "") ? null : (int?)int.Parse(sIdPrefUsuario),
                                                          (int)Session["IDFICEPI_PC_ACTUAL"], 20);
            if (dr.Read())
            {
                bHayPreferencia = true;

                sb.Append(dr["t462_idPrefUsuario"].ToString() + "@#@"); //1
                sb.Append(dr["CerrarAuto"].ToString() + "@#@");         //5
                sb.Append(dr["ActuAuto"].ToString() + "@#@");           //6
                //sb.Append(dr["OperadorLogico"].ToString() + "@#@"); //7
                //sb.Append(dr["OpcionPeriodo"].ToString() + "@#@"); //8

                //sEstado = dr["estado"].ToString();
                //sObraCurso = (dr["ObraCurso"].ToString() == "") ? "1" : dr["ObraCurso"].ToString();
                //sFactuAnti = (dr["FactAnti"].ToString() == "") ? "1" : dr["FactAnti"].ToString();

                idPrefUsuario = int.Parse(dr["t462_idPrefUsuario"].ToString());
                //nConceptoEje = (dr["ConceptoEje"].ToString() == "") ? 0 : int.Parse(dr["ConceptoEje"].ToString());
                //nUtilidadPeriodo = int.Parse(dr["OpcionPeriodo"].ToString());
            }
            dr.Close();
            //dr.Dispose();

            #region HTML, IDs
            int      nNivelMinimo = 0;
            bool     bAmbito      = false;
            string[] aID          = null;
            dr = PREFUSUMULTIVALOR.Obtener(null, idPrefUsuario);
            while (dr.Read())
            {
                switch (int.Parse(dr["t441_concepto"].ToString()))
                {
                case 1:
                    if (!bAmbito)
                    {
                        bAmbito      = true;
                        nNivelMinimo = 6;
                    }
                    aID = Regex.Split(dr["t441_valor"].ToString(), "-");
                    if (int.Parse(aID[0]) < nNivelMinimo)
                    {
                        nNivelMinimo = int.Parse(aID[0]);
                    }

                    if (strIDsAmbito != "")
                    {
                        strIDsAmbito += ",";
                    }
                    strIDsAmbito += aID[1];

                    aSubnodos      = PREFUSUMULTIVALOR.SelectSubnodosAmbito(null, aSubnodos, int.Parse(aID[0]), int.Parse(aID[1]));
                    strHTMLAmbito += "<tr id='" + aID[1] + "' tipo='" + aID[0] + "' style='height:18px;' idAux='";
                    strHTMLAmbito += SUBNODO.fgGetCadenaID(aID[0], aID[1]);
                    strHTMLAmbito += "'><td>";

                    switch (int.Parse(aID[0]))
                    {
                    case 1: strHTMLAmbito += "<img src='../../../../images/imgSN4.gif' style='margin-left:2px;margin-right:4px;vertical-align:middle;border: 0px;'>"; break;

                    case 2: strHTMLAmbito += "<img src='../../../../images/imgSN3.gif' style='margin-left:2px;margin-right:4px;vertical-align:middle;border: 0px;'>"; break;

                    case 3: strHTMLAmbito += "<img src='../../../../images/imgSN2.gif' style='margin-left:2px;margin-right:4px;vertical-align:middle;border: 0px;'>"; break;

                    case 4: strHTMLAmbito += "<img src='../../../../images/imgSN1.gif' style='margin-left:2px;margin-right:4px;vertical-align:middle;border: 0px;'>"; break;

                    case 5: strHTMLAmbito += "<img src='../../../../images/imgNodo.gif' style='margin-left:2px;margin-right:4px;vertical-align:middle;border: 0px;'>"; break;

                    case 6: strHTMLAmbito += "<img src='../../../../images/imgSubNodo.gif' style='margin-left:2px;margin-right:4px;vertical-align:middle;border: 0px;'>"; break;
                    }

                    strHTMLAmbito += "<nobr class='NBR W230'>" + dr["t441_denominacion"].ToString() + "</nobr></td></tr>";
                    break;

                case 2:
                    if (strIDsResponsable != "")
                    {
                        strIDsResponsable += ",";
                    }
                    strIDsResponsable  += dr["t441_valor"].ToString();
                    strHTMLResponsable += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><nobr class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</nobr></td></tr>";
                    break;

                case 3:
                    if (strIDsNaturaleza != "")
                    {
                        strIDsNaturaleza += ",";
                    }
                    strIDsNaturaleza  += dr["t441_valor"].ToString();
                    strHTMLNaturaleza += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><nobr class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</nobr></td></tr>";
                    break;

                case 4:
                    if (strIDsModeloCon != "")
                    {
                        strIDsModeloCon += ",";
                    }
                    strIDsModeloCon  += dr["t441_valor"].ToString();
                    strHTMLModeloCon += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><nobr class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</nobr></td></tr>";
                    break;

                case 8:
                    if (strIDsCliente != "")
                    {
                        strIDsCliente += ",";
                    }
                    strIDsCliente  += dr["t441_valor"].ToString();
                    strHTMLCliente += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><nobr class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</nobr></td></tr>";
                    break;

                case 9:
                    if (strIDsContrato != "")
                    {
                        strIDsContrato += ",";
                    }
                    strIDsContrato  += dr["t441_valor"].ToString();
                    strHTMLContrato += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><nobr class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</nobr></td></tr>";
                    break;
                }
            }
            dr.Close();
            dr.Dispose();
            #endregion

            //if (nConceptoEje >= 7)
            //{
            //    nOpcion = nConceptoEje;
            //}
            //else
            //{
            //    if (nNivelMinimo != 0) nOpcion = nNivelMinimo;
            //    else nOpcion = nEstructuraMinima;
            //}

            for (int i = 0; i < aSubnodos.Count; i++)
            {
                if (i > 0)
                {
                    sSubnodos += ",";
                }
                sSubnodos += aSubnodos[i];
            }

            //sb.Append(nOpcion + "@#@"); //13
            sb.Append(sSubnodos + "@#@");          //14
            sb.Append(strHTMLAmbito + "@#@");      //15
            sb.Append(strIDsAmbito + "@#@");       //16
            sb.Append(strHTMLResponsable + "@#@"); //17
            sb.Append(strIDsResponsable + "@#@");  //18
            sb.Append(strHTMLNaturaleza + "@#@");  //19
            sb.Append(strIDsNaturaleza + "@#@");   //20
            sb.Append(strHTMLModeloCon + "@#@");   //21
            sb.Append(strIDsModeloCon + "@#@");    //22
            //sb.Append(strHTMLHorizontal + "@#@"); //23
            //sb.Append(strIDsHorizontal + "@#@"); //24
            //sb.Append(strHTMLSector + "@#@"); //25
            //sb.Append(strIDsSector + "@#@"); //26
            //sb.Append(strHTMLSegmento + "@#@"); //27
            //sb.Append(strIDsSegmento + "@#@"); //28
            sb.Append(strHTMLCliente + "@#@");  //29
            sb.Append(strIDsCliente + "@#@");   //30
            sb.Append(strHTMLContrato + "@#@"); //31
            sb.Append(strIDsContrato + "@#@");  //32
            //sb.Append(strHTMLQn + "@#@"); //33
            //sb.Append(strIDsQn + "@#@"); //34
            //sb.Append(strHTMLQ1 + "@#@"); //35
            //sb.Append(strIDsQ1 + "@#@"); //36
            //sb.Append(strHTMLQ2 + "@#@"); //37
            //sb.Append(strIDsQ2 + "@#@"); //38
            //sb.Append(strHTMLQ3 + "@#@"); //39
            //sb.Append(strIDsQ3 + "@#@"); //40
            //sb.Append(strHTMLQ4 + "@#@"); //41
            //sb.Append(strIDsQ4 + "@#@"); //42
            //sb.Append(strHTMLProyecto + "@#@"); //43
            //sb.Append(strIDsProyecto + "@#@"); //44
            //sb.Append(sEstado + "@#@"); //45
            //sb.Append(sObraCurso + "@#@"); //46
            //sb.Append(sFactuAnti + "@#@"); //47


            return("OK@#@" + sb.ToString());
        }
        catch (Exception ex)
        {
            return("Error@#@" + Errores.mostrarError("Error al obtener la preferencia.", ex, false));
        }
    }
    private string getPreferencia(string sIdPrefUsuario)
    {
        StringBuilder sb = new StringBuilder();
        ArrayList     aSubnodos = new ArrayList();
        string        strHTMLAmbito = "", strHTMLResponsable = "", strHTMLNaturaleza = "", strHTMLModeloCon = "", strHTMLHorizontal = "", strHTMLSector = "", strHTMLSegmento = "", strHTMLCliente = "", strHTMLContrato = "", strHTMLQn = "", strHTMLQ1 = "", strHTMLQ2 = "", strHTMLQ3 = "", strHTMLQ4 = "", strHTMLProyecto = "";
        int           idPrefUsuario = 0;

        try
        {
            SqlDataReader dr = PREFERENCIAUSUARIO.Obtener(null, (sIdPrefUsuario == "") ? null : (int?)int.Parse(sIdPrefUsuario),
                                                          (int)Session["IDFICEPI_PC_ACTUAL"], nPantallaPreferencia);
            if (dr.Read())
            {
                sb.Append(dr["t462_idPrefUsuario"].ToString() + "@#@"); //2
                sb.Append(dr["categoria"].ToString() + "@#@");          //3
                sb.Append(dr["estado"].ToString() + "@#@");             //4
                sb.Append(dr["cualidad"].ToString() + "@#@");           //5
                sb.Append(dr["CerrarAuto"].ToString() + "@#@");         //6
                sb.Append(dr["ActuAuto"].ToString() + "@#@");           //7
                sb.Append(dr["OperadorLogico"].ToString() + "@#@");     //8
                idPrefUsuario = int.Parse(dr["t462_idPrefUsuario"].ToString());
            }
            dr.Close();
            //dr.Dispose();

            #region HTML, IDs
            //int nNivelMinimo = 0;
            //bool bAmbito = false;
            string[] aID = null;
            dr = PREFUSUMULTIVALOR.Obtener(null, idPrefUsuario);
            while (dr.Read())
            {
                switch (int.Parse(dr["t441_concepto"].ToString()))
                {
                case 1:
                    //if (!bAmbito)
                    //{
                    //    bAmbito = true;
                    //    nNivelMinimo = 6;
                    //}
                    aID = Regex.Split(dr["t441_valor"].ToString(), "-");
                    //if (int.Parse(aID[0]) < nNivelMinimo) nNivelMinimo = int.Parse(aID[0]);

                    aSubnodos      = PREFUSUMULTIVALOR.SelectSubnodosAmbito(null, aSubnodos, int.Parse(aID[0]), int.Parse(aID[1]));
                    strHTMLAmbito += "<tr id='" + aID[1] + "' tipo='" + aID[0] + "' style='height:16px;' idAux='";
                    strHTMLAmbito += SUBNODO.fgGetCadenaID(aID[0], aID[1]);
                    strHTMLAmbito += "'><td>";

                    switch (int.Parse(aID[0]))
                    {
                    case 1: strHTMLAmbito += "<img src='../../../../images/imgSN4.gif' style='margin-left:2px;margin-right:4px;vertical-align:middle;border: 0px;'>"; break;

                    case 2: strHTMLAmbito += "<img src='../../../../images/imgSN3.gif' style='margin-left:2px;margin-right:4px;vertical-align:middle;border: 0px;'>"; break;

                    case 3: strHTMLAmbito += "<img src='../../../../images/imgSN2.gif' style='margin-left:2px;margin-right:4px;vertical-align:middle;border: 0px;'>"; break;

                    case 4: strHTMLAmbito += "<img src='../../../../images/imgSN1.gif' style='margin-left:2px;margin-right:4px;vertical-align:middle;border: 0px;'>"; break;

                    case 5: strHTMLAmbito += "<img src='../../../../images/imgNodo.gif' style='margin-left:2px;margin-right:4px;vertical-align:middle;border: 0px;'>"; break;

                    case 6: strHTMLAmbito += "<img src='../../../../images/imgSubNodo.gif' style='margin-left:2px;margin-right:4px;vertical-align:middle;border: 0px;'>"; break;
                    }

                    strHTMLAmbito += "<nobr class='NBR W230'>" + dr["t441_denominacion"].ToString() + "</nobr></td></tr>";
                    break;

                case 2:
                    strHTMLResponsable += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><nobr class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</nobr></td></tr>";
                    break;

                case 3:
                    strHTMLNaturaleza += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><nobr class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</nobr></td></tr>";
                    break;

                case 4:
                    strHTMLModeloCon += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><nobr class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</nobr></td></tr>";
                    break;

                case 5:
                    strHTMLHorizontal += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><nobr class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</nobr></td></tr>";
                    break;

                case 6:
                    strHTMLSector += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><nobr class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</nobr></td></tr>";
                    break;

                case 7:
                    strHTMLSegmento += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><nobr class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</nobr></td></tr>";
                    break;

                case 8:
                    strHTMLCliente += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><nobr class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</nobr></td></tr>";
                    break;

                case 9:
                    strHTMLContrato += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><nobr class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</nobr></td></tr>";
                    break;

                case 10:
                    strHTMLQn += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><nobr class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</nobr></td></tr>";
                    break;

                case 11:
                    strHTMLQ1 += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><nobr class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</nobr></td></tr>";
                    break;

                case 12:
                    strHTMLQ2 += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><nobr class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</nobr></td></tr>";
                    break;

                case 13:
                    strHTMLQ3 += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><nobr class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</nobr></td></tr>";
                    break;

                case 14:
                    strHTMLQ4 += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><nobr class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</nobr></td></tr>";
                    break;

                case 16:
                    aID = Regex.Split(dr["t441_valor"].ToString(), "-");

                    strHTMLProyecto += "<tr id='" + aID[0] + "' style='height:16px;' ";
                    strHTMLProyecto += "categoria='" + aID[1] + "' ";
                    strHTMLProyecto += "cualidad='" + aID[2] + "' ";
                    strHTMLProyecto += "estado='" + aID[3] + "'><td>";

                    if (aID[1] == "P")
                    {
                        strHTMLProyecto += "<img src='../../../../images/imgProducto.gif' style='margin-left:2px;margin-right:2px;vertical-align:middle;border: 0px;'>";
                    }
                    else
                    {
                        strHTMLProyecto += "<img src='../../../../images/imgServicio.gif' style='margin-left:2px;margin-right:2px;vertical-align:middle;border: 0px;'>";
                    }

                    switch (aID[2])
                    {
                    case "C": strHTMLProyecto += "<img src='../../../../images/imgIconoContratante.gif' style='margin-left:2px;margin-right:2px;vertical-align:middle;border: 0px;'>"; break;

                    case "J": strHTMLProyecto += "<img src='../../../../images/imgIconoRepJor.gif' style='margin-left:2px;margin-right:2px;vertical-align:middle;border: 0px;'>"; break;

                    case "P": strHTMLProyecto += "<img src='../../../../images/imgIconoRepPrecio.gif' style='margin-left:2px;margin-right:2px;vertical-align:middle;border: 0px;'>"; break;
                    }

                    switch (aID[3])
                    {
                    case "A": strHTMLProyecto += "<img src='../../../../images/imgIconoProyAbierto.gif' title='Proyecto abierto' style='margin-left:2px;margin-right:2px;vertical-align:middle;border: 0px;'>"; break;

                    case "C": strHTMLProyecto += "<img src='../../../../images/imgIconoProyCerrado.gif' title='Proyecto cerrado' style='margin-left:2px;margin-right:2px;vertical-align:middle;border: 0px;'>"; break;

                    case "H": strHTMLProyecto += "<img src='../../../../images/imgIconoProyHistorico.gif' title='Proyecto histórico' style='margin-left:2px;margin-right:2px;vertical-align:middle;border: 0px;'>"; break;

                    case "P": strHTMLProyecto += "<img src='../../../../images/imgIconoProyPresup.gif' title='Proyecto presupuestado' style='margin-left:2px;margin-right:2px;vertical-align:middle;border: 0px;'>"; break;
                    }

                    strHTMLProyecto += "<nobr class='NBR W190' style='margin-left:10px;' onmouseover='TTip(event)'>" + dr["t441_denominacion"].ToString() + "</nobr></td></tr>";
                    break;
                }
            }
            dr.Close();
            dr.Dispose();
            #endregion

            for (int i = 0; i < aSubnodos.Count; i++)
            {
                if (i > 0)
                {
                    sSubnodos += ",";
                }
                sSubnodos += aSubnodos[i];
            }

            sb.Append(sSubnodos + "@#@");          //9
            sb.Append(strHTMLAmbito + "@#@");      //10
            sb.Append(strHTMLResponsable + "@#@"); //11
            sb.Append(strHTMLNaturaleza + "@#@");  //12
            sb.Append(strHTMLModeloCon + "@#@");   //13
            sb.Append(strHTMLHorizontal + "@#@");  //14
            sb.Append(strHTMLSector + "@#@");      //15
            sb.Append(strHTMLSegmento + "@#@");    //16
            sb.Append(strHTMLCliente + "@#@");     //17
            sb.Append(strHTMLContrato + "@#@");    //18
            sb.Append(strHTMLQn + "@#@");          //19
            sb.Append(strHTMLQ1 + "@#@");          //20
            sb.Append(strHTMLQ2 + "@#@");          //21
            sb.Append(strHTMLQ3 + "@#@");          //22
            sb.Append(strHTMLQ4 + "@#@");          //23
            sb.Append(strHTMLProyecto + "@#@");    //24

            return("OK@#@" + sb.ToString());
        }
        catch (Exception ex)
        {
            return("Error@#@" + Errores.mostrarError("Error al obtener la preferencia.", ex, false));
        }
    }
Beispiel #14
0
        public List <Models.ProyectoEconomico> generarContratos(List <IB.SUPER.APP.Models.OportunidadNegocio> Oportunidades)
        {
            int  iNumProys = 0, idPE = -1, idPSN = -1;
            bool bConTransaccion = false;
            Guid methodOwnerID   = new Guid("2558CB99-C43F-4930-A56C-D6F5CDE51980");
            //IB.SUPER.APP.BLL.ProyectoEconomico ProyBLL = new IB.SUPER.APP.BLL.ProyectoEconomico();
            List <Models.ProyectoEconomico> lstGenerados = new List <Models.ProyectoEconomico>();

            OpenDbConn();
            if (cDblib.Transaction.ownerID.Equals(new Guid()))
            {
                bConTransaccion = true;
            }
            if (bConTransaccion)
            {
                cDblib.beginTransaction(methodOwnerID);
            }

            BLL.Contrato oContrato            = new Contrato(cDblib);
            BLL.FIGURAPROYECTOSUBNODO oFigura = new FIGURAPROYECTOSUBNODO(cDblib);
            IB.SUPER.IAP30.BLL.Nodo   oNodo   = new IAP30.BLL.Nodo();

            try
            {
                foreach (IB.SUPER.APP.Models.OportunidadNegocio oport in Oportunidades)
                {
                    DAL.OportunidadNegocio oON = new DAL.OportunidadNegocio(cDblib);
                    #region Contrato y Extensión
                    //Si la extension==0 -> grabarcontrato
                    if (oport.t377_idextension == 0)
                    {
                        oON.GenerarContrato(oport);
                    }
                    else
                    {
                        //Compruebo que existe contrato. Si no existe, hay que darlo de alta
                        //oContrato = new Contrato(cDblib);
                        if (!oContrato.Existe(oport.t306_icontrato))
                        {
                            oON.GenerarContrato(oport.t306_icontrato, oport.t314_idusuario_responsable);
                        }
                    }
                    //La extensión se graba siempre
                    oON.GenerarExtension(oport);
                    //Si no existe proyecto asociado al contrato-> Generarlo (según parametrización puede crear 1 o 2 proyectos)
                    iNumProys = oON.GetNumProyectos(oport.t306_icontrato);


                    //PARA PRUEBAS
                    //if (bConTransaccion) cDblib.commitTransaction(methodOwnerID);

                    #endregion

                    #region Proyecto Económico
                    if (iNumProys == 0)
                    {
                        //PARA PRUEBAS
                        //if (cDblib.Transaction.ownerID.Equals(new Guid())) cDblib.beginTransaction(methodOwnerID);

                        //Obtengo el subnodo al que asociar el proyecto
                        int t304_idsubnodo = SUBNODO.GetSubNodoDefecto(oport.t303_idnodo);

                        //Obtengo datos del nodo para la creación del proyecto
                        //oNodo = new IAP30.BLL.Nodo();
                        IB.SUPER.IAP30.Models.Nodo mNodo = oNodo.Select(oport.t303_idnodo);

                        #region Cargo los datos para la generación del proyecto
                        Models.ProyectoEconomico mPE = new IB.SUPER.APP.Models.ProyectoEconomico();
                        mPE.automatico = true;
                        if (oport.t377_importeser >= oport.t377_importepro)
                        {
                            mPE.categoria = "S";
                        }
                        else
                        {
                            mPE.categoria = "P";
                        }
                        mPE.cod_cliente    = oport.t302_idcliente_contrato;
                        mPE.cod_contrato   = oport.t306_icontrato;
                        mPE.cod_naturaleza = 1;
                        mPE.fecha_sap      = DateTime.Now;

                        mPE.fini_prevista = Fechas.getSigDiaUltMesCerrado(mNodo.t303_ultcierreECO);
                        mPE.ffin_prevista = GetFechaFin(mPE.fini_prevista, oport.duracion);
                        mPE.modalidad     = GetModalidad(oport.tipocontrato.ToUpper());

                        if (mNodo.t303_modelocostes == "X")
                        {
                            mPE.modelo_coste = "J";
                        }
                        else
                        {
                            mPE.modelo_coste = mNodo.t303_modelocostes;
                        }
                        if (mNodo.t303_modelotarifas == "X")
                        {
                            mPE.modelo_tarifa = "J";
                        }
                        else
                        {
                            mPE.modelo_tarifa = mNodo.t303_modelotarifas;
                        }
                        mPE.nom_proyecto = oport.t377_denominacion;
                        #endregion
                        #region genero proyecto
                        if (mNodo.t303_desglose)
                        {
                            #region  Crea 2 proyectos
                            if (oport.t377_importepro != 0)
                            {
                                if (oport.t377_importeser != 0)
                                {
                                    mPE.nom_proyecto = "P/" + oport.t377_denominacion;
                                }
                                #region Crea un proyecto de categoria PRODUCTO
                                //idPE = ProyBLL.Insert(mPE);
                                //DAL.ProyectoEconomico cPE = new DAL.ProyectoEconomico(cDblib);
                                //idPE = cPE.GenerarProyecto(mPE);
                                idPE = oON.GenerarProyecto(mPE);

                                //Creo el proyecto subnodo
                                mPE.cod_proyecto            = idPE;
                                mPE.cod_subnodo             = t304_idsubnodo;
                                mPE.cualidad                = "P";
                                mPE.cod_usuario_responsable = mNodo.t314_idusuario_responsable;
                                mPE.seudonimo               = mPE.nom_proyecto;

                                //idPSN = cPE.GenerarProyectoSubnodo(mPE);
                                idPSN = oON.GenerarProyectoSubnodo(mPE);

                                //Asigno la figura de RTPE
                                Models.FIGURAPROYECTOSUBNODO mFigura = new Models.FIGURAPROYECTOSUBNODO();
                                mFigura.t305_idproyectosubnodo = idPSN;
                                mFigura.t310_figura            = "M";
                                mFigura.t314_idusuario         = oport.t314_idusuario_gestorprod;

                                //oFigura = new FIGURAPROYECTOSUBNODO(cDblib);
                                oFigura.Insert(mFigura);
                                #region Cargo la lista de vuelta para mostrar al usuario los proyectos generados
                                Models.ProyectoEconomico oProyectoEconomico = new Models.ProyectoEconomico();
                                oProyectoEconomico.cod_proyecto           = idPE;
                                oProyectoEconomico.nom_proyecto           = mPE.nom_proyecto;
                                oProyectoEconomico.cod_contrato           = oport.t306_icontrato;
                                oProyectoEconomico.cod_extension          = oport.t377_idextension;
                                oProyectoEconomico.t305_idproyectosubnodo = idPSN;
                                oProyectoEconomico.t301_estado            = "A";
                                oProyectoEconomico.t302_denominacion      = oport.cliente;
                                oProyectoEconomico.t301_categoria         = mPE.categoria;
                                oProyectoEconomico.t305_cualidad          = "C";
                                oProyectoEconomico.proy_responsable       = oport.responsable;

                                lstGenerados.Add(oProyectoEconomico);
                                #endregion
                                #endregion
                            }
                            if (oport.t377_importeser != 0)
                            {
                                if (oport.t377_importepro != 0)
                                {
                                    mPE.nom_proyecto = "S/" + oport.t377_denominacion;
                                }
                                #region Crea un proyecto de categoria SERVICIO
                                //DAL.ProyectoEconomico cPE = new DAL.ProyectoEconomico(cDblib);
                                //idPE = cPE.GenerarProyecto(mPE);
                                idPE = oON.GenerarProyecto(mPE);

                                //Creo el proyecto subnodo
                                mPE.cod_proyecto            = idPE;
                                mPE.cod_subnodo             = t304_idsubnodo;
                                mPE.cualidad                = "C";
                                mPE.cod_usuario_responsable = mNodo.t314_idusuario_responsable;
                                mPE.seudonimo               = mPE.nom_proyecto;

                                //idPSN = cPE.GenerarProyectoSubnodo(mPE);
                                idPSN = oON.GenerarProyectoSubnodo(mPE);

                                //Asigno la figura de RTPE
                                Models.FIGURAPROYECTOSUBNODO mFigura = new Models.FIGURAPROYECTOSUBNODO();
                                mFigura.t305_idproyectosubnodo = idPSN;
                                mFigura.t310_figura            = "M";
                                mFigura.t314_idusuario         = oport.t314_idusuario_gestorprod;

                                oFigura = new FIGURAPROYECTOSUBNODO(cDblib);
                                oFigura.Insert(mFigura);

                                #region Cargo la lista de vuelta para mostrar al usuario los proyectos generados
                                Models.ProyectoEconomico oProyectoEconomico = new Models.ProyectoEconomico();
                                oProyectoEconomico.cod_proyecto           = idPE;
                                oProyectoEconomico.nom_proyecto           = mPE.nom_proyecto;
                                oProyectoEconomico.cod_contrato           = oport.t306_icontrato;
                                oProyectoEconomico.cod_extension          = oport.t377_idextension;
                                oProyectoEconomico.t305_idproyectosubnodo = idPSN;
                                oProyectoEconomico.t301_estado            = "A";
                                oProyectoEconomico.t302_denominacion      = oport.cliente;
                                oProyectoEconomico.t301_categoria         = mPE.categoria;
                                oProyectoEconomico.t305_cualidad          = "C";
                                oProyectoEconomico.proy_responsable       = oport.responsable;
                                #endregion
                                #endregion
                            }

                            #endregion
                        }
                        else
                        {
                            #region Crea un proyecto
                            //DAL.ProyectoEconomico cPE = new DAL.ProyectoEconomico(cDblib);
                            //idPE = cPE.GenerarProyecto(mPE);
                            idPE = oON.GenerarProyecto(mPE);
                            //Creo el proyecto subnodo
                            mPE.cod_proyecto            = idPE;
                            mPE.cod_subnodo             = t304_idsubnodo;
                            mPE.cualidad                = "C";
                            mPE.cod_usuario_responsable = mNodo.t314_idusuario_responsable;
                            mPE.seudonimo               = mPE.nom_proyecto;

                            //idPSN = cPE.GenerarProyectoSubnodo(mPE);
                            idPSN = oON.GenerarProyectoSubnodo(mPE);

                            //Asigno la figura de RTPE
                            Models.FIGURAPROYECTOSUBNODO mFigura = new Models.FIGURAPROYECTOSUBNODO();
                            mFigura.t305_idproyectosubnodo = idPSN;
                            mFigura.t310_figura            = "M";
                            mFigura.t314_idusuario         = oport.t314_idusuario_gestorprod;

                            oFigura = new FIGURAPROYECTOSUBNODO(cDblib);
                            oFigura.Insert(mFigura);

                            #region Cargo la lista de vuelta para mostrar al usuario los proyectos generados
                            Models.ProyectoEconomico oProyectoEconomico = new Models.ProyectoEconomico();
                            oProyectoEconomico.cod_proyecto             = idPE;
                            oProyectoEconomico.nom_proyecto             = mPE.nom_proyecto;
                            oProyectoEconomico.cod_contrato             = oport.t306_icontrato;
                            oProyectoEconomico.cod_extension            = oport.t377_idextension;
                            oProyectoEconomico.t305_idproyectosubnodo   = idPSN;
                            oProyectoEconomico.t301_estado              = "A";
                            oProyectoEconomico.t302_denominacion        = oport.cliente;
                            oProyectoEconomico.t301_categoria           = mPE.categoria;
                            oProyectoEconomico.t305_cualidad            = "C";
                            oProyectoEconomico.proy_responsable         = oport.responsable;
                            oProyectoEconomico.codred_gestor_produccion = oport.codred_gestor_produccion;

                            lstGenerados.Add(oProyectoEconomico);
                            #endregion
                            #endregion
                        }
                        #endregion
                        //PARA PRUEBAS
                        //cDblib.commitTransaction(methodOwnerID);
                    }
                    #endregion
                }
                //PARA PRUEBAS
                if (bConTransaccion)
                {
                    cDblib.commitTransaction(methodOwnerID);
                }

                #region Correo
                //Con la lista de proyectos generados agrupo para cada gestor de producción concernido la lista de sus nuevos proyectos
                StringBuilder      sb          = new StringBuilder();
                List <Models.Mail> lstGestores = new List <Models.Mail>();
                try
                {
                    foreach (Models.ProyectoEconomico oPE in lstGenerados)
                    {
                        sb.Length = 0;
                        Models.Mail oProf = BuscarCodRed(lstGestores, oPE.codred_gestor_produccion);
                        if (oProf == null)
                        {
                            oProf        = new Models.Mail();
                            oProf.codred = oPE.codred_gestor_produccion;
                            sb.Append(ponerCabecera());
                            sb.Append(@"<tr style='height:16px'><td style='width:80px;padding-left:3px;'>" + oPE.cod_proyecto.ToString("#,###") + "</td>");
                            sb.Append(@"<td style='width:460px;text-overflow:ellipsis;overflow:hidden;'>" + oPE.nom_proyecto + "</td>");
                            sb.Append(@"<td style='width:80px;'>" + oPE.cod_contrato.ToString("#,###") + "</td>");
                            sb.Append(@"<td style='width:80px;'>" + oPE.cod_extension.ToString("#,###") + "</td></tr>");

                            oProf.mensaje = sb.ToString();

                            lstGestores.Add(oProf);
                        }
                        else
                        {
                            sb.Append(@"<tr style='height:16px'><td style='width:80px;padding-left:3px;'>" + oPE.cod_proyecto.ToString("#,###") + "</td>");
                            sb.Append(@"<td style='width:460px;text-overflow:ellipsis;overflow:hidden;'>" + oPE.nom_proyecto + "</td>");
                            sb.Append(@"<td style='width:80px;'>" + oPE.cod_contrato.ToString("#,###") + "</td>");
                            sb.Append(@"<td style='width:80px;'>" + oPE.cod_extension.ToString("#,###") + "</td></tr>");

                            oProf.mensaje += sb.ToString();
                        }
                    }
                    //Con la lista de proyectos agrupada envío a cada gestor de producción concernido la lista de sus nuevos proyectos
                    string    sAsunto     = "SUPER: Proyectos generados";
                    ArrayList aListCorreo = new ArrayList();
                    string    sMensaje    = "";
                    foreach (Models.Mail oGestor in lstGestores)
                    {
                        sMensaje = oGestor.mensaje + ponerPie();
                        string[] aMail = { sAsunto, sMensaje, oGestor.codred };
                        aListCorreo.Add(aMail);
                    }
                    Correo.EnviarCorreos(aListCorreo);
                }
                catch (Exception e1) {
                    SUPDAL.Log.Insertar("App_Code/Negocio/APP/OportunidadNegocio.generarContratos. Error al enviar correos. " + e1.Message);
                }
                #endregion
                return(lstGenerados);
            }
            catch (Exception ex)
            {
                //rollback
                if (cDblib.Transaction.ownerID.Equals(new Guid()))
                {
                    cDblib.rollbackTransaction(methodOwnerID);
                }
                throw new Exception(ex.Message);
            }
            finally
            {
                //nota.Dispose();
                //ProyBLL.Dispose();
                oContrato.Dispose();
                oNodo.Dispose();
                oFigura.Dispose();
            }
        }
    private string getPreferencia(string sIdPrefUsuario)
    {
        StringBuilder sb            = new StringBuilder();
        int           idPrefUsuario = 0;
        string        sEstado       = "";

        try
        {
            SqlDataReader dr = PREFERENCIAUSUARIO.Obtener(null, (sIdPrefUsuario == "") ? null : (int?)int.Parse(sIdPrefUsuario),
                                                          (int)Session["IDFICEPI_PC_ACTUAL"], 27);
            if (dr.Read())
            {
                bHayPreferencia = true;

                sb.Append(dr["t462_idPrefUsuario"].ToString() + "@#@"); //1
                sb.Append(dr["categoria"].ToString() + "@#@");          //2
                sb.Append(dr["cualidad"].ToString() + "@#@");           //3
                sb.Append(dr["CerrarAuto"].ToString() + "@#@");         //4
                sb.Append(dr["ActuAuto"].ToString() + "@#@");           //5
                sb.Append(dr["OperadorLogico"].ToString() + "@#@");     //6
                sb.Append(dr["estado"].ToString() + "@#@");             //7
                sEstado       = dr["estado"].ToString();
                idPrefUsuario = int.Parse(dr["t462_idPrefUsuario"].ToString());
            }
            dr.Close();
            //dr.Dispose();

            sb.Append("0@#@");//8
            //sb.Append("0@#@");//9
            //sb.Append("0@#@");//10
            //sb.Append("0@#@");//11
            //sb.Append("0@#@");//12
            DateTime dHoy = DateTime.Now, dtAux;
            int      nDias = dHoy.Day;
            dtAux = dHoy.AddDays(-nDias + 1);
            txtFechaInicio.Text = dtAux.ToShortDateString();
            dtAux            = dtAux.AddMonths(1).AddDays(-1);
            txtFechaFin.Text = dtAux.ToShortDateString();

            hdnDesde.Text = (DateTime.Now.Year * 100 + 1).ToString();
            hdnHasta.Text = (DateTime.Now.Year * 100 + DateTime.Now.Month).ToString();

            sb.Append(hdnDesde.Text + "@#@");       //9
            sb.Append(txtFechaInicio.Text + "@#@"); //10
            sb.Append(hdnHasta.Text + "@#@");       //11
            sb.Append(txtFechaFin.Text + "@#@");    //12


            #region HTML, IDs
            int      nNivelMinimo = 0;
            bool     bAmbito      = false;
            string[] aID          = null;
            dr = PREFUSUMULTIVALOR.Obtener(null, idPrefUsuario);
            while (dr.Read())
            {
                switch (int.Parse(dr["t441_concepto"].ToString()))
                {
                case 1:
                    if (!bAmbito)
                    {
                        bAmbito      = true;
                        nNivelMinimo = 6;
                    }
                    aID = Regex.Split(dr["t441_valor"].ToString(), "-");
                    if (int.Parse(aID[0]) < nNivelMinimo)
                    {
                        nNivelMinimo = int.Parse(aID[0]);
                    }

                    if (strIDsAmbito != "")
                    {
                        strIDsAmbito += ",";
                    }
                    strIDsAmbito += aID[1];

                    aSubnodos      = PREFUSUMULTIVALOR.SelectSubnodosAmbito(null, aSubnodos, int.Parse(aID[0]), int.Parse(aID[1]));
                    strHTMLAmbito += "<tr id='" + aID[1] + "' tipo='" + aID[0] + "' style='height:16px;' idAux='";
                    strHTMLAmbito += SUBNODO.fgGetCadenaID(aID[0], aID[1]);
                    strHTMLAmbito += "'><td>";

                    switch (int.Parse(aID[0]))
                    {
                    case 1: strHTMLAmbito += "<img src='../../../../../images/imgSN4.gif' style='margin-left:2px;margin-right:2px;vertical-align:middle;border: 0px;'>"; break;

                    case 2: strHTMLAmbito += "<img src='../../../../../images/imgSN3.gif' style='margin-left:2px;margin-right:2px;vertical-align:middle;border: 0px;'>"; break;

                    case 3: strHTMLAmbito += "<img src='../../../../../images/imgSN2.gif' style='margin-left:2px;margin-right:2px;vertical-align:middle;border: 0px;'>"; break;

                    case 4: strHTMLAmbito += "<img src='../../../../../images/imgSN1.gif' style='margin-left:2px;margin-right:2px;vertical-align:middle;border: 0px;'>"; break;

                    case 5: strHTMLAmbito += "<img src='../../../../../images/imgNodo.gif' style='margin-left:2px;margin-right:2px;vertical-align:middle;border: 0px;'>"; break;

                    case 6: strHTMLAmbito += "<img src='../../../../../images/imgSubNodo.gif' style='margin-left:2px;margin-right:2px;vertical-align:middle;border: 0px;'>"; break;
                    }

                    strHTMLAmbito += "<nobr class='NBR W230'>" + dr["t441_denominacion"].ToString() + "</nobr></td></tr>";
                    break;

                case 2:
                    if (strIDsResponsable != "")
                    {
                        strIDsResponsable += ",";
                    }
                    strIDsResponsable  += dr["t441_valor"].ToString();
                    strHTMLResponsable += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><span class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</span></td></tr>";
                    break;

                case 3:
                    if (strIDsNaturaleza != "")
                    {
                        strIDsNaturaleza += ",";
                    }
                    strIDsNaturaleza  += dr["t441_valor"].ToString();
                    strHTMLNaturaleza += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><span class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</span></td></tr>";
                    break;

                case 4:
                    if (strIDsModeloCon != "")
                    {
                        strIDsModeloCon += ",";
                    }
                    strIDsModeloCon  += dr["t441_valor"].ToString();
                    strHTMLModeloCon += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><span class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</span></td></tr>";
                    break;

                case 5:
                    if (strIDsHorizontal != "")
                    {
                        strIDsHorizontal += ",";
                    }
                    strIDsHorizontal  += dr["t441_valor"].ToString();
                    strHTMLHorizontal += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><span class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</span></td></tr>";
                    break;

                case 6: if (strIDsSector != "")
                    {
                        strIDsSector += ",";
                    }
                    strIDsSector  += dr["t441_valor"].ToString();
                    strHTMLSector += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><span class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</span></td></tr>";
                    break;

                case 7: if (strIDsSegmento != "")
                    {
                        strIDsSegmento += ",";
                    }
                    strIDsSegmento  += dr["t441_valor"].ToString();
                    strHTMLSegmento += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><span class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</span></td></tr>";
                    break;

                case 8:
                    if (strIDsCliente != "")
                    {
                        strIDsCliente += ",";
                    }
                    strIDsCliente  += dr["t441_valor"].ToString();
                    strHTMLCliente += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><span class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</span></td></tr>";
                    break;

                case 9:
                    if (strIDsContrato != "")
                    {
                        strIDsContrato += ",";
                    }
                    strIDsContrato  += dr["t441_valor"].ToString();
                    strHTMLContrato += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><span class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</span></td></tr>";
                    break;

                case 10:
                    if (strIDsQn != "")
                    {
                        strIDsQn += ",";
                    }
                    strIDsQn  += dr["t441_valor"].ToString();
                    strHTMLQn += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><span class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</span></td></tr>";
                    break;

                case 11:
                    if (strIDsQ1 != "")
                    {
                        strIDsQ1 += ",";
                    }
                    strIDsQ1  += dr["t441_valor"].ToString();
                    strHTMLQ1 += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><span class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</span></td></tr>";
                    break;

                case 12:
                    if (strIDsQ2 != "")
                    {
                        strIDsQ2 += ",";
                    }
                    strIDsQ2  += dr["t441_valor"].ToString();
                    strHTMLQ2 += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><span class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</span></td></tr>";
                    break;

                case 13:
                    if (strIDsQ3 != "")
                    {
                        strIDsQ3 += ",";
                    }
                    strIDsQ3  += dr["t441_valor"].ToString();
                    strHTMLQ3 += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><span class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</span></td></tr>";
                    break;

                case 14:
                    if (strIDsQ4 != "")
                    {
                        strIDsQ4 += ",";
                    }
                    strIDsQ4  += dr["t441_valor"].ToString();
                    strHTMLQ4 += "<tr id='" + dr["t441_valor"].ToString() + "' style='height:16px;'><td><span class='NBR W260'>" + dr["t441_denominacion"].ToString() + "</span></td></tr>";
                    break;

                //case 15: //strMagnitudes  break;
                case 16:
                    aID = Regex.Split(dr["t441_valor"].ToString(), "-");
                    if (strIDsProyecto != "")
                    {
                        strIDsProyecto += ",";
                    }
                    strIDsProyecto += aID[0];

                    strHTMLProyecto += "<tr id='" + aID[0] + "' style='height:16px;' ";
                    strHTMLProyecto += "categoria='" + aID[1] + "' ";
                    strHTMLProyecto += "cualidad='" + aID[2] + "' ";
                    strHTMLProyecto += "estado='" + aID[3] + "'><td>";

                    if (aID[1] == "P")
                    {
                        strHTMLProyecto += "<img src='../../../../../images/imgProducto.gif' style='margin-left:2px;margin-right:2px;vertical-align:middle;border: 0px;'>";
                    }
                    else
                    {
                        strHTMLProyecto += "<img src='../../../../../images/imgServicio.gif' style='margin-left:2px;margin-right:2px;vertical-align:middle;border: 0px;'>";
                    }

                    switch (aID[2])
                    {
                    case "C": strHTMLProyecto += "<img src='../../../../../images/imgIconoContratante.gif' style='margin-left:2px;margin-right:2px;vertical-align:middle;border: 0px;'>"; break;

                    case "J": strHTMLProyecto += "<img src='../../../../../images/imgIconoRepJor.gif' style='margin-left:2px;margin-right:2px;vertical-align:middle;border: 0px;'>"; break;

                    case "P": strHTMLProyecto += "<img src='../../../../../images/imgIconoRepPrecio.gif' style='margin-left:2px;margin-right:2px;vertical-align:middle;border: 0px;'>"; break;
                    }

                    switch (aID[3])
                    {
                    case "A": strHTMLProyecto += "<img src='../../../../../images/imgIconoProyAbierto.gif' title='Proyecto abierto' style='margin-left:2px;margin-right:2px;vertical-align:middle;border: 0px;'>"; break;

                    case "C": strHTMLProyecto += "<img src='../../../../../images/imgIconoProyCerrado.gif' title='Proyecto cerrado' style='margin-left:2px;margin-right:2px;vertical-align:middle;border: 0px;'>"; break;

                    case "H": strHTMLProyecto += "<img src='../../../../../images/imgIconoProyHistorico.gif' title='Proyecto histórico' style='margin-left:2px;margin-right:2px;vertical-align:middle;border: 0px;'>"; break;

                    case "P": strHTMLProyecto += "<img src='../../../../../images/imgIconoProyPresup.gif' title='Proyecto presupuestado' style='margin-left:2px;margin-right:2px;vertical-align:middle;border: 0px;'>"; break;
                    }

                    strHTMLProyecto += "<span class='NBR W185' style='margin-left:10px;' onmouseover='TTip(event)'>" + dr["t441_denominacion"].ToString() + "</span></td></tr>";
                    break;
                }
            }
            dr.Close();
            dr.Dispose();
            #endregion

            for (int i = 0; i < aSubnodos.Count; i++)
            {
                if (i > 0)
                {
                    sSubnodos += ",";
                }
                sSubnodos += aSubnodos[i];
            }

            sb.Append(sSubnodos + "@#@");          //12
            sb.Append(strHTMLAmbito + "@#@");      //13
            sb.Append(strIDsAmbito + "@#@");       //14
            sb.Append(strHTMLResponsable + "@#@"); //15
            sb.Append(strIDsResponsable + "@#@");  //16
            sb.Append(strHTMLNaturaleza + "@#@");  //17
            sb.Append(strIDsNaturaleza + "@#@");   //18
            sb.Append(strHTMLModeloCon + "@#@");   //19
            sb.Append(strIDsModeloCon + "@#@");    //20
            sb.Append(strHTMLHorizontal + "@#@");  //21
            sb.Append(strIDsHorizontal + "@#@");   //22
            sb.Append(strHTMLSector + "@#@");      //23
            sb.Append(strIDsSector + "@#@");       //24
            sb.Append(strHTMLSegmento + "@#@");    //25
            sb.Append(strIDsSegmento + "@#@");     //26
            sb.Append(strHTMLCliente + "@#@");     //27
            sb.Append(strIDsCliente + "@#@");      //28
            sb.Append(strHTMLContrato + "@#@");    //29
            sb.Append(strIDsContrato + "@#@");     //30
            sb.Append(strHTMLQn + "@#@");          //31
            sb.Append(strIDsQn + "@#@");           //32
            sb.Append(strHTMLQ1 + "@#@");          //33
            sb.Append(strIDsQ1 + "@#@");           //34
            sb.Append(strHTMLQ2 + "@#@");          //35
            sb.Append(strIDsQ2 + "@#@");           //36
            sb.Append(strHTMLQ3 + "@#@");          //37
            sb.Append(strIDsQ3 + "@#@");           //38
            sb.Append(strHTMLQ4 + "@#@");          //39
            sb.Append(strIDsQ4 + "@#@");           //40
            sb.Append(strHTMLProyecto + "@#@");    //41
            sb.Append(strIDsProyecto + "@#@");     //42
            return("OK@#@" + sb.ToString());
        }
        catch (Exception ex)
        {
            return("Error@#@" + Errores.mostrarError("Error al obtener la preferencia.", ex, false));
        }
    }