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)); } }