예제 #1
0
    private string getProyectosCierre(bool bADM, string nPSN, string sAnomes, string sResponsables, string sSubnodos,
                                      string sPSN, string sOrigen, string sComparacionLogica, string bListaProy)
    {
        try
        {
            StringBuilder sb = new StringBuilder();
            Hashtable     htAjustes = new Hashtable();
            SqlDataReader dr = null;
            bool          bMesesOK = true, bProcesable = true;
            DateTime?     oDT1 = null, oDT2 = null, oDT3 = null, oDT4 = null;
            int           nTiempoBD       = 0;
            int           nTiempoHTML     = 0;
            int           nTiempoDialogos = 0;

            sb.Append("<TABLE class='texto' id='tblDatos' style='width: 974px;'>");
            sb.Append("<colgroup>");
            sb.Append("<col style='width:20px;' />");
            sb.Append("<col style='width:60px;' />");
            sb.Append("<col style='width:140px;' />");
            sb.Append("<col style='width:35px;' />");
            sb.Append("<col style='width:55px;' />");
            sb.Append("<col style='width:54px;' />");
            sb.Append("<col style='width:60px;' />");
            sb.Append("<col style='width:60px;' />");
            sb.Append("<col style='width:20px;' />");
            sb.Append("<col style='width:20px;' />");
            sb.Append("<col style='width:20px;' />");
            sb.Append("<col style='width:20px;' />");
            sb.Append("<col style='width:20px;' />");
            sb.Append("<col style='width:20px;' />");
            sb.Append("<col style='width:20px;' />");
            sb.Append("<col style='width:55px;' />");
            sb.Append("<col style='width:80px;' />");
            sb.Append("<col style='width:80px;' />");
            sb.Append("<col style='width:80px;' />");
            sb.Append("<col style='width:25px;' />");
            sb.Append("</colgroup>");
            sb.Append("<tbody>");

            bool bCarrusel = false;
            if (sOrigen == "carrusel")
            {
                bCarrusel = (SUPER.Capa_Negocio.Utilidades.EsAdminProduccion()) ? true : false;
            }

            oDT1 = DateTime.Now;
            if (bListaProy == "S")
            {
                dr = PROYECTOSUBNODO.ObtenerProyectosACerrar(nPSN);
            }
            else
            {
                if (!bADM)
                {
                    if (sOrigen == "menucierresat" || sOrigen == "menucierresatsaa")
                    {
                        dr = PROYECTOSUBNODO.ObtenerProyectosACerrarUSA((int)Session["UsuarioActual"], (sOrigen == "menucierresatsaa") ? true : false);
                    }
                    else
                    {
                        dr = PROYECTOSUBNODO.ObtenerProyectosACerrar((int)Session["UsuarioActual"], (nPSN == "") ? null : (int?)int.Parse(nPSN), bCarrusel);
                    }
                }
                else
                {
                    dr = PROYECTOSUBNODO.ObtenerProyectosACerrarADM(int.Parse(sAnomes), sResponsables, sSubnodos, sPSN, (sComparacionLogica == "1") ? true : false);
                }
            }
            oDT2 = DateTime.Now;
            string s_idsegmesproy = "";
            while (dr.Read())
            {
                bMesesOK    = true;
                bProcesable = true;

                aProyectos.Add(dr["t301_idproyecto"].ToString());
                sb.Append("<tr id='" + dr["t301_idproyecto"].ToString() + "' ");
                sb.Append("idPSN='" + dr["t305_idproyectosubnodo"].ToString() + "' ");
                sb.Append("cualidad='" + dr["t305_cualidad"].ToString() + "' ");
                sb.Append("anomes='" + dr["t325_anomes"].ToString() + "' ");
                //sb.Append("ajuste='" + dr["ajuste"].ToString() + "' ");
                //sb.Append("importe_ajuste='" + dr["Importe_Ajuste"].ToString() + "' ");
                sb.Append("nSegMes='" + dr["t325_idsegmesproy"].ToString() + "' ");

                //if ( (byte)dr["monedas_proyectos_contrato"] > 1
                //    || (dr["t306_idcontrato"] != DBNull.Value && dr["t422_idmoneda_proyecto"].ToString() != dr["t422_idmoneda_contrato"].ToString()))
                //{//Por ahora no permitimoes cerrar este caso ni a los administradores.
                //    sb.Append("a_procesar='0' ");
                //    bProcesable = false;
                //}
                //else
                if (bADM)
                {
                    sb.Append("a_procesar='1' ");
                    s_idsegmesproy += dr["t325_idsegmesproy"].ToString() + ",";
                }
                else if (dr["faltan_CEC_obligatorios"].ToString() == "1" ||
                         dr["faltan_CED_obligatorios"].ToString() == "1" ||
                         dr["faltan_Cualificadores_obligatorios"].ToString() == "1" ||
                         (Fechas.AddAnnomes(int.Parse(dr["T303_ultcierreeco"].ToString()), 1) != int.Parse(dr["t325_anomes"].ToString()) && sOrigen != "carrusel")
                         //|| ( (byte)dr["monedas_proyectos_contrato"] > 1 )
                         //|| (dr["t306_idcontrato"] != DBNull.Value && dr["t422_idmoneda_proyecto"].ToString() != dr["t422_idmoneda_contrato"].ToString())
                         )
                {
                    sb.Append("a_procesar='0' ");
                    bProcesable = false;
                }
                else
                {
                    sb.Append("a_procesar='1' ");
                    s_idsegmesproy += dr["t325_idsegmesproy"].ToString() + ",";
                }

                sb.Append("style='height:20px' procesado=''>");

                if (dr["ajuste"].ToString() == "1")
                {
                    this.hdnExcepcion.Text = "1";
                }

                if (dr["t305_cualidad"].ToString() == "C")
                {
                    sb.Append("<td style=\"border-right:none\"><img src='../../../images/imgIconoContratante.gif' width='16px' height='16px' /></td>");
                }
                else
                {
                    sb.Append("<td style=\"border-right:none\"><img src='../../../images/imgIconoRepPrecio.gif' width='16px' height='16px' /></td>");
                }

                sb.Append("<td style=\"border-right:none; padding-right:5px;text-align:right;\">" + int.Parse(dr["t301_idproyecto"].ToString()).ToString("#,###") + "</td>");
                sb.Append("<td style='padding-left:3px;'><nobr class='NBR W135' style='noWrap:true;' title=\"cssbody=[dvbdy] cssheader=[dvhdr] header=[<img src='../../../images/info.gif' style='vertical-align:middle' />  Información] body=[<label style='width:75px'>Proyecto:</label>" + dr["t301_denominacion"].ToString().Replace((char)34, (char)39) + "<br><label style='width:75px'>Categoría:</label>" + ((dr["t301_categoria"].ToString() == "P") ? "Producto" : "Servicio") + "<br><label style='width:75px'>Responsable:</label>" + dr["responsable"].ToString().Replace((char)34, (char)39) + "<br><label style='width:75px'>" + Estructura.getDefCorta(Estructura.sTipoElem.NODO) + ":</label>" + dr["t303_denominacion"].ToString().Replace((char)34, (char)39) + "<br><label style='width:75px'>Cliente:</label>" + dr["t302_denominacion"].ToString().Replace((char)34, (char)39) + "<br><label style='width:75px'>Moneda:</label>" + dr["t422_denominacion_proyecto"].ToString() + "] hideselects=[off]\">" + dr["t301_denominacion"].ToString().Replace((char)34, (char)39) + "</nobr></td>");

                sb.Append("<td style='padding-left:2px;'>" + dr["t422_idmoneda_proyecto"].ToString() + "</td>");
                sb.Append("<td style='padding-left:1px;'>" + Fechas.AnnomesAFechaDescCorta(int.Parse(dr["T303_ultcierreeco"].ToString())) + "</td>");

                if (Fechas.AddAnnomes(int.Parse(dr["T303_ultcierreeco"].ToString()), 1) != int.Parse(dr["t325_anomes"].ToString()))
                {
                    sb.Append("<td style='color:red;padding-left:1px;'>");
                    bMesesOK = false;
                }
                else
                {
                    sb.Append("<td style='padding-left:1px;'>");
                }
                sb.Append(Fechas.AnnomesAFechaDescCorta(int.Parse(dr["t325_anomes"].ToString())) + "</td>");

                sb.Append("<td style='text-align:right;padding-right:2px;'>" + decimal.Parse(dr["consumoIAP"].ToString()).ToString("N") + "</td>");
                sb.Append("<td style='text-align:right;padding-right:2px;'>" + decimal.Parse(dr["consumoPGE"].ToString()).ToString("N") + "</td>");

                if (bMesesOK)
                {
                    sb.Append("<td style=\"border-right:none;text-align:center;padding-right:2px;\"></td>");
                }
                else
                {
                    if (sOrigen == "carrusel")
                    {
                        sb.Append("<td style=\"border-right:none;text-align:center;padding-right:2px;\"><img src='../../../Images/imgCalAma.gif' /></td>");
                    }
                    else
                    {
                        sb.Append("<td style=\"border-right:none;text-align:center;padding-right:2px;\"><img src='../../../Images/imgCalRojo.gif' /></td>");
                    }
                    this.hdnExcepcion.Text = "1";
                }

                if (dr["faltan_CEC_obligatorios"].ToString() == "1" || dr["faltan_CED_obligatorios"].ToString() == "1")
                {
                    sb.Append("<td style=\"border-right:none;text-align:center;\"><img src='../../../Images/imgIconoObl16.gif' /></td>");
                    this.hdnExcepcion.Text = "1";
                }
                else
                {
                    sb.Append("<td style=\"border-right:none;text-align:center;\"></td>");
                }

                if (dr["faltan_Cualificadores_obligatorios"].ToString() == "1")
                {
                    sb.Append("<td style=\"border-right:none;text-align:center;\"><img src='../../../Images/imgIconoObl16Azul.gif' /></td>");
                    this.hdnExcepcion.Text = "1";
                }
                else
                {
                    sb.Append("<td style=\"border-right:none;text-align:center;\"></td>");
                }

                if (decimal.Parse(dr["consumonivel"].ToString()) > 0)
                {
                    sb.Append("<td style=\"border-right:none;text-align:center;\"><img src='../../../Images/imgConsNivel.gif' /></td>");
                    this.hdnExcepcion.Text = "1";
                }
                else
                {
                    sb.Append("<td style=\"border-right:none;text-align:center;\"></td>");
                }

                if ((byte)dr["monedas_proyectos_contrato"] > 1 ||
                    (dr["t306_idcontrato"] != DBNull.Value && dr["t422_idmoneda_proyecto"].ToString() != dr["t422_idmoneda_contrato"].ToString())
                    )
                {
                    string sTitle = "";
                    if ((byte)dr["monedas_proyectos_contrato"] > 1)
                    {
                        sTitle += "Los proyectos asociados al contrato tienen monedas diferentes.<br>";
                    }
                    if (dr["t306_idcontrato"] != DBNull.Value && dr["t422_idmoneda_proyecto"].ToString() != dr["t422_idmoneda_contrato"].ToString())
                    {
                        sTitle += "Moneda del contrato: " + dr["t422_denominacion_contrato"].ToString() + "\nMoneda del proyecto: " + dr["t422_denominacion_proyecto"].ToString() + "\n";
                    }

                    if (dr["ajuste"].ToString() == "1")
                    {
                        if ((string)htAjustes[dr["t301_categoria"].ToString() + dr["t306_idcontrato"].ToString()] == null)
                        {
                            htAjustes.Add(dr["t301_categoria"].ToString() + dr["t306_idcontrato"].ToString(),
                                          dr["t301_idproyecto"].ToString()
                                          );
                        }
                        sTitle += "Importe de ajuste: " + decimal.Parse(dr["Importe_Ajuste"].ToString()).ToString("N") + " " + dr["t422_denominacionimportes_proyecto"].ToString();
                        this.hdnExcepcion.Text = "1";
                    }
                    sb.Append("<td style=\"border-right:none;text-align:center;\"><img src='../../../Images/imgExclamacion.png' title='" + sTitle + "' /></td>");
                }
                else if (dr["ajuste"].ToString() == "1" && bProcesable)   //si hay ajuste y no hay excepción que impida cerrar
                {
                    if ((string)htAjustes[dr["t301_categoria"].ToString() + dr["t306_idcontrato"].ToString()] == null)
                    {
                        htAjustes.Add(dr["t301_categoria"].ToString() + dr["t306_idcontrato"].ToString(),
                                      dr["t301_idproyecto"].ToString()
                                      );
                        sb.Append("<td style=\"border-right:none;text-align:center;\"><img src='../../../Images/imgAjuste2.gif' title='Importe de ajuste: " + decimal.Parse(dr["Importe_Ajuste"].ToString()).ToString("N") + "' /></td>");
                        this.hdnExcepcion.Text = "1";
                    }
                    else
                    {
                        sb.Append("<td style=\"border-right:none;text-align:center;\"></td>");
                    }
                }
                else
                {
                    sb.Append("<td style=\"border-right:none;text-align:center;\"></td>");
                }

                if (decimal.Parse(dr["t325_consperiod"].ToString()) != 0)
                {
                    sb.Append("<td style=\"border-right:none;text-align:center;\"><img src='../../../Images/imgConsumoPeriod.gif' title='Consumos periodificados: " + decimal.Parse(dr["t325_consperiod"].ToString()).ToString("N") + "' /></td>");
                    this.hdnExcepcion.Text = "1";
                }
                else
                {
                    sb.Append("<td style=\"border-right:none;text-align:center;\"></td>");
                }
                if (decimal.Parse(dr["t325_prodperiod"].ToString()) != 0)
                {
                    sb.Append("<td style='text-align:center;'><img src='../../../Images/imgProduccionPeriod.gif' title='Producción periodificada: " + decimal.Parse(dr["t325_prodperiod"].ToString()).ToString("N") + "' /></td>");
                    this.hdnExcepcion.Text = "1";
                }
                else
                {
                    sb.Append("<td></td>");
                }

                if (dr["t306_idcontrato"].ToString() == "" || dr["t305_cualidad"].ToString() != "C")
                {
                    sb.Append("<td style='text-align:right;'></td>");
                }
                else
                {
                    sb.Append("<td style='text-align:right;'>" + int.Parse(dr["t306_idcontrato"].ToString()).ToString("#,###") + "</td>");
                }

                if (dr["t305_cualidad"].ToString() != "C")
                {
                    sb.Append("<td style='text-align:right;'></td>");
                }
                else
                {
                    sb.Append("<td style='text-align:right;'>" + decimal.Parse(dr["TotalContrato"].ToString()).ToString("N") + "</td>");
                }

                sb.Append("<td style='text-align:right;'>" + decimal.Parse(dr["TotalProducido"].ToString()).ToString("N") + "</td>");

                if (dr["t305_cualidad"].ToString() != "C")
                {
                    sb.Append("<td style='text-align:right;'></td>");
                }
                else
                {
                    sb.Append("<td style='text-align:right;'>" + decimal.Parse(dr["TPPAC"].ToString()).ToString("N") + "</td>");
                }

                if (bProcesable)
                {
                    sb.Append("<td style=\"border-right:none\"><img src='../../../Images/imgMesAbierto.gif' /></td>");
                }
                else
                {
                    sb.Append("<td style=\"border-right:none;padding-left:3px;text-align:center;\"><img src='../../../Images/imgMesNoProceso.gif' /></td>");
                }
                sb.Append("</tr>");
            }
            dr.Close();
            dr.Dispose();
            sb.Append("</tbody>");
            sb.Append("</table>");

            oDT3        = DateTime.Now;
            nTiempoBD   = Fechas.DateDiff("mm", (DateTime)oDT1, (DateTime)oDT2);
            nTiempoHTML = Fechas.DateDiff("mm", (DateTime)oDT2, (DateTime)oDT3);
            //Obtengo las alertas producidas por los proyectos a cerrar.
            //s_idsegmesproy
            int nAlertas = 0;
            if (s_idsegmesproy != "")
            {
                DataSet ds = SUPER.Capa_Datos.SEGMESPROYECTOSUBNODO.ObtenerDialogosDeAlertasDS(null, s_idsegmesproy, true);
                Session["DS_ALERTASCIERRE"] = ds;
                nAlertas = ds.Tables[0].Rows.Count;
            }
            oDT4            = DateTime.Now;
            nTiempoDialogos = Fechas.DateDiff("mm", (DateTime)oDT3, (DateTime)oDT4);

            return("OK@#@" + sb.ToString() + "@#@" + this.hdnExcepcion.Text + "@#@" + nAlertas.ToString() + "@#@"
                   + nTiempoBD.ToString() + "@#@"
                   + nTiempoHTML.ToString() + "@#@"
                   + nTiempoDialogos.ToString());
        }
        catch (Exception ex)
        {
            return("Error@#@" + Errores.mostrarError("Error al obtener los proyectos.", ex));
        }
    }