/*=========================================================================================================================== * Instituto Costarricense de Acueductos y Alcantarillados. - 2015 * Formularios para Proyectos de Inversión * Nombre de la Pantalla: frwDistribucionPartidas.aspx * * Explicación de los contenidos del archivo *=========================================================================================================================== * HISTORIAL * * PERSONA DIA – MES - AÑO DESCRIPCIÓN * Esteban Gutierrez Rapso 05 – 12 - 2016 Se inicia con el diseño de la pagina * ………………………………………………………… * ………………………………………………………… *=========================================================================================================================== * Derechos Reservados (C) 2016 AyA. * ESTE CÓDIGO ES PROVEÍDO “TAL CUAL ES” SIN GARANTÍA ALGUNA * DE NINGÚN TIPO, SEA IMPLICITA O EXPLICITA. * NO SE PERMITE SU REPRODUCCIÓN PARCIAL O TOTAL, NI SU COMERCIALIZACIÓN *=========================================================================================================================== */ using System; using System.Collections; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using AyABL; using AyADAL; using AyABL.RCS; using AyABL.PPP; using AyABL.AGP; using AyABL.ADM; public partial class webforms_PPP_wfrDistribucionPartidas : General { #region Inicializar Formulario (R0) override protected void OnInit(EventArgs e) //M0 { try { base.OnInit(e); InicializarFormulario(); } catch (Exception ex) { MensajeError("Error en R0M0", ex); } } private void InicializarFormulario() //M1 { try { Response.Cache.SetCacheability(HttpCacheability.NoCache); Javascript.CheckAllGridViewItems(Page); construirgrvPartidas(); construirgrvDetalle(); } catch (Exception ex) { MensajeError("Error en R0M1", ex); } } #endregion #region Variables (R1) GridView grvPartidasTemp, grvDetalleTemp; ProyectoBL objProyectoBL; DistribucionPartidaBL objDistribucionPartidaBL; PartidaPresupuestariaBL objPartidaPresupuestariaBL; #endregion #region Eventos Formulario (R2) protected void Page_Load(object sender, EventArgs e) //M0 { try { if ((!IsPostBack) && (Session.Count > 0)) { llenarDDLProyecto(); llenarDDLPartida(); llenarDDLAnio(); ComandosxMenu(); if (Session["PKPROYECTO"] != null) { ddlProyecto.SelectedValue = Session["PKPROYECTO"].ToString(); ddlProyecto_SelectedIndexChanged(null, null); } mostrarDetalle(1); } } catch (Exception ex) { MensajeError("Error en R2M0", ex); } } #endregion #region Eventos Controles Web (R3) /// /// Activa el evento del boton Nuevo /// /// /// protected void btnNuevo_Click(object sender, EventArgs e) //M0 { try { } catch (Exception ex) { MensajeError("Error en R3M0", ex); } } /// /// Activa el evento del boton guardar.1 /// /// /// protected void btnGuardar_Click(object sender, EventArgs e) //M1 { try { if (GuardarDatos()) { MensajeInformativo("El registro fue almacenado exitosamente"); llenarGRVDetalle(); llenarGRVPartida(); mostrarDetalle(1); } else { MensajeError("El registro no fue almacenado, verifique", null); } } catch (Exception ex) { MensajeError("Error en R3M1", ex); } } protected void ddlProyecto_SelectedIndexChanged(object sender, EventArgs e) //M3 { try { Session["PKPROYECTO"] = ddlProyecto.SelectedValue; llenarGRVPartida(); llenarGRVDetalle(); } catch (Exception ex) { MensajeError("Error en R3M3", ex); } } protected void grvDetalle_RowCommand(object sender, GridViewCommandEventArgs e) //M4 { try { if (e.CommandName == "editar") { int i = Convert.ToInt32(e.CommandArgument); GridViewRow selectedRow = grvDetalle.Rows[i]; ViewState["PkPartida"] = Convert.ToInt32(selectedRow.Cells[2].Text); mostrarDetalle(); } } catch (Exception ex) { MensajeError("Error en R3M4", ex); } } protected void btnDetalle_Click(object sender, EventArgs e) //M5 { try { mostrarDetalle(2); llenarGRVDetalle(); } catch (Exception ex) { MensajeError("Error en R3M5", ex); } } protected void btnEliminar_Click(object sender, EventArgs e) //M6 { try { // recorro el grid foreach (GridViewRow row in grvDetalle.Rows) { HtmlInputCheckBox chkTemp = (HtmlInputCheckBox)row.Controls[0].Controls[1]; if (chkTemp != null) { // si el registro esta marcado if (chkTemp.Checked) { int intPkIndice = Convert.ToInt32(row.Cells[2].Text); eliminarPartida(intPkIndice); } } } llenarGRVDetalle(); llenarGRVPartida(); } catch (Exception ex) { MensajeError("Error en R3M11", ex); } } protected void btnModificar_Click(object sender, EventArgs e) //M7 { try { if (ModificarDatos()) { mostrarDetalle(1); MensajeInformativo("El registro fue modificado exitosamente"); } else { MensajeError("El registro no fue modificado, verifique", null); } } catch (Exception ex) { MensajeError("Error en R3M7", ex); } } protected void btnVolver_Click(object sender, EventArgs e) //M8 { mostrarDetalle(1); } #endregion #region Metodos Personalizados (R4) private void ComandosxMenu() //M0 { try { DataSet dsComandos = getComandos(); if (dsComandos != null) { foreach (DataRow drTemp in dsComandos.Tables[0].Rows) { switch (drTemp["NOMBRECOMANDO"].ToString().ToUpper()) { case "NUEVO": break; case "ELIMINAR": btnEliminar.Visible = true; break; case "MODIFICA": //Inicio de variable tipo VIEWSTATE ViewState["PUEDEMODIFICAR"] = true; btnGuardar.Visible = true; break; } } } } catch (Exception ex) { MensajeError("Error en R4M0", ex); } } private void construirgrvPartidas() //M1 { try { grvPartidasTemp = (GridView)divDatosInferiores.FindControl("grvPartidas"); } catch (Exception ex) { MensajeError("Error en R4M1", ex); } } public static void detalleGRVDatos(DataSet p_dsDatos, GridView p_grvGridView) //M2 { try { p_grvGridView.ShowHeader = true; p_grvGridView.DataSource = p_dsDatos; p_grvGridView.DataBind(); } catch (Exception ex) { } } private void construirgrvDetalle() //M3 { try { grvDetalleTemp = (GridView)divDatosInferiores.FindControl("grvDetalle"); GridViewBoundField bdfPkDistribucionPartida = new GridViewBoundField("PKDISTRIBUCIONPARTIDA", "PK", false, false, false); GridViewBoundField bdfPkPartida = new GridViewBoundField("PKPARTIDAPRESUPUESTARIA", "PK", false, false, false); GridViewBoundField bdfIndice = new GridViewBoundField("INDICEPARTIDAPRESUPUESTARIA", "INDICE", true, false, true); GridViewBoundField bdfNombrePartida = new GridViewBoundField("NOMBREPARTIDAPRESUPUESTARIA", "PARTIDA", true, false, true); GridViewBoundField bdfAnio = new GridViewBoundField("ANIODISTRIBUCIONPARTIDA", "AÑO", true, false, true); GridViewBoundField bdfMonto = new GridViewBoundField("MONTODISTRIBUCIONPARTIDA", "MONTO", true, false, true); GridViewBoundField bdfFkProyecto = new GridViewBoundField("FKPROYECTO", "PROYECTO", true, false, false); grvDetalleTemp.Columns.Add(bdfPkDistribucionPartida); grvDetalleTemp.Columns.Add(bdfPkPartida); grvDetalleTemp.Columns.Add(bdfIndice); grvDetalleTemp.Columns.Add(bdfNombrePartida); grvDetalleTemp.Columns.Add(bdfAnio); grvDetalleTemp.Columns.Add(bdfMonto); grvDetalleTemp.Columns.Add(bdfFkProyecto); grvDetalleTemp.Columns[0].ItemStyle.Width = 25; grvDetalleTemp.Columns[1].ItemStyle.Width = 25; grvDetalleTemp.Columns[4].ItemStyle.HorizontalAlign = HorizontalAlign.Center; grvDetalleTemp.Columns[6].ItemStyle.HorizontalAlign = HorizontalAlign.Center; grvDetalleTemp.Columns[7].ItemStyle.HorizontalAlign = HorizontalAlign.Right; bdfMonto.DataFormatString = "{0:N2}"; } catch (Exception ex) { MensajeError("Error en R4M3", ex); } } private void mostrarDetalle(int p_intFila) //M4 { try { divTabulado.Visible = false; divDetalle.Visible = false; switch (p_intFila) { case 1: divTabulado.Visible = true; btnModificar.Visible = false; btnGuardar.Visible = true; break; case 2: divDetalle.Visible = true; btnModificar.Visible = true; btnGuardar.Visible = false; break; } } catch (Exception ex) { MensajeError("Error en R4M4", ex); } } private void limpiarCampos() //M5 { llenarDDLPartida(); llenarDDLAnio(); txtMonto.Text = string.Empty; } #endregion #region Metodos Controles a Datos (R5) /// /// guarda y modifica registros en la tabla. /// /// private bool GuardarDatos() //M0 { bool blnEjecutado = false; try { string strModo = string.Empty; objDistribucionPartidaBL = new DistribucionPartidaBL(); objDistribucionPartidaBL.objDistribucionPartidaEL.Anio = Int32.Parse(ddlAnio.SelectedItem.Text); objDistribucionPartidaBL.objDistribucionPartidaEL.Monto = Decimal.Parse(txtMonto.Text); objDistribucionPartidaBL.objDistribucionPartidaEL.PartidaPresupuestaria = Int32.Parse(ddlPartida.SelectedValue); objDistribucionPartidaBL.objDistribucionPartidaEL.Proyecto = Int32.Parse(ddlProyecto.SelectedValue); if (objDistribucionPartidaBL.insertarDistribucionPartida()) { blnEjecutado = true; GuardarEventoBitacora( Session["LOGIN"].ToString(), AccionBitacora.INSERT.ToString(), MensajesBitacora.IngresarRegistro + ": " + " Año: " + ddlAnio.SelectedItem.Text + " Monto: " + Decimal.Parse(txtMonto.Text).ToString("###,###,###.#0") + " Partida: " + ddlPartida.SelectedItem.Text, "frwDistribucionPartida.aspx"); llenarGRVPartida(); } } catch (Exception ex) { throw ex; blnEjecutado = false; General.ReportarError(ex, Session["LOGIN"].ToString()); } return blnEjecutado; } private bool ModificarDatos() //M1 { bool blnEjecutado = false; try { objDistribucionPartidaBL = new DistribucionPartidaBL(); objDistribucionPartidaBL.objDistribucionPartidaEL.Anio = Int32.Parse(ddlAnio.SelectedItem.Text); objDistribucionPartidaBL.objDistribucionPartidaEL.Monto = Decimal.Parse(txtMonto.Text); objDistribucionPartidaBL.objDistribucionPartidaEL.PartidaPresupuestaria = Int32.Parse(ddlPartida.SelectedValue); objDistribucionPartidaBL.objDistribucionPartidaEL.Proyecto = Int32.Parse(ddlProyecto.SelectedValue); if (bool.Parse(ViewState["PUEDEMODIFICAR"].ToString()) == true) { objDistribucionPartidaBL.objDistribucionPartidaEL.PK = Int32.Parse(ViewState["PkPartida"].ToString()); if (objDistribucionPartidaBL.actualizarDistribucionPartida()) { blnEjecutado = true; GuardarEventoBitacora(Session["LOGIN"].ToString(), AccionBitacora.UPDATE.ToString(), MensajesBitacora.ModificarRegistro + ": " + " Año: " + ddlAnio.SelectedItem.Text + " Monto: " + Decimal.Parse(txtMonto.Text).ToString("###,###,###.#0") + " Partida: " + ddlPartida.SelectedItem.Text, "frwDistribucionPartidas.aspx"); } llenarGRVPartida(); } else MensajeAdvertencia("Su rol no le permite actualizar el registro"); } catch (Exception ex) { throw ex; blnEjecutado = false; General.ReportarError(ex, Session["LOGIN"].ToString()); } return blnEjecutado; } private void eliminarPartida(int p_intPKPartida) //M2 { try { objDistribucionPartidaBL = new DistribucionPartidaBL(); objDistribucionPartidaBL.objDistribucionPartidaEL.PK = p_intPKPartida; objDistribucionPartidaBL.objDistribucionPartidaEL.ASTATE = false; objDistribucionPartidaBL.actualizaEstadoDistribucionPartida(); foreach (GridViewRow row in grvDetalle.Rows) { HtmlInputCheckBox chkTemp = (HtmlInputCheckBox)row.Controls[0].Controls[1]; if (chkTemp != null) { // si el registro esta marcado if (chkTemp.Checked) { GuardarEventoBitacora(Session["LOGIN"].ToString(), AccionBitacora.DELETE.ToString(), MensajesBitacora.EliminarRegistro + ": PK: " + row.Cells[2].Text + " Indice: " + row.Cells[4].Text + " Partida: " + row.Cells[5].Text + " Año: " + row.Cells[6].Text + " Monto: " + row.Cells[7].Text, "frwDistribucionPartidas.aspx"); } } } } catch (Exception ex) { MensajeError("Error en R5M2", ex); General.ReportarError(ex, Session["LOGIN"].ToString()); } } #endregion #region Metodos Datos a Controles (R6) private void llenarGRVPartida() //M0 { string strTipoFinanciamiento = string.Empty; string strTipoRecurso = string.Empty; try { objDistribucionPartidaBL = new DistribucionPartidaBL(); objDistribucionPartidaBL.objDistribucionPartidaEL.Proyecto = Int32.Parse(ddlProyecto.SelectedValue); DataSet dsPartidas = objDistribucionPartidaBL.getDistribucionPartida(); if (dsPartidas.Tables.Count == 0) dsPartidas.Tables.Add(); detalleGRVDatos(dsPartidas, grvPartidas); for (int i = 0; i <= grvPartidas.Rows.Count - 1; ++i) { for (int j = 2; j <= grvPartidas.Rows[i].Cells.Count - 1; ++j) { if (grvPartidas.Rows[i].Cells[j].Text != "0.00") grvPartidas.Rows[i].Cells[j].Text = Decimal.Parse(grvPartidas.Rows[i].Cells[j].Text).ToString("###,###,###,###.#0"); grvPartidas.Rows[i].Cells[j].HorizontalAlign = HorizontalAlign.Right; } } } catch (Exception ex) { MensajeError("Error en R6M0", ex); General.ReportarError(ex, Session["LOGIN"].ToString()); } } private void llenarDDLProyecto() //M1 { try { //Instancia el objeto objProyectoBL = new ProyectoBL(); objProyectoBL.objProyectoEL.PK = 0; objProyectoBL.objProyectoEL.ASTATE = true; objProyectoBL.objProyectoEL.CodigoAcceso = Session["CODIGOACCESO"].ToString(); //Carga la información en un dataset DataSet dsProyecto = objProyectoBL.getProyectos(); ddlListaProyectos(dsProyecto, ddlProyecto); ddlProyecto.Attributes["style"] = "width: 90%; max-width: 90%"; } catch (Exception ex) { MensajeError("Error en R6M1", ex); } } /// /// LLena del dropdownlist con las prioridades del proyecto /// private void llenarDDLPartida() //M2 { try { //Limpia el control ddlPartida.Items.Clear(); //Instancia el objeto objPartidaPresupuestariaBL = new PartidaPresupuestariaBL(); objPartidaPresupuestariaBL.objPartidaPresupuestariaEL.PK = 0; objPartidaPresupuestariaBL.objPartidaPresupuestariaEL.ASTATE = true; //Carga la información en un dataset DataSet dsPartida = objPartidaPresupuestariaBL.getPartidaPresupuestaria(); if (dsPartida.Tables[0].Rows.Count != 0) { ddlPartida.DataSource = dsPartida; ddlPartida.DataTextField = dsPartida.Tables[0].Columns["NOMBREPARTIDAPRESUPUESTARIA"].ColumnName; ddlPartida.DataValueField = dsPartida.Tables[0].Columns["PKPARTIDAPRESUPUESTARIA"].ColumnName; ddlPartida.DataBind(); ddlPartida.Items.Insert(0, new ListItem("Seleccione una Partida Presupuestatia", "-1")); } } catch (Exception ex) { MensajeError("Error en R6M2", ex); } } /// /// Llena el dropdownlist con las dependencias del proyecto /// private void llenarDDLAnio() //M3 { try { //Limpia el control ddlAnio.Items.Clear(); ListItem lstAnios = new ListItem("Seleccione un Año"); ddlAnio.Items.Add(lstAnios); for (int i = DateTime.Now.Year - 7; i <= DateTime.Now.Year + 7; i++) { lstAnios = new ListItem(i.ToString()); ddlAnio.Items.Add(lstAnios); } } catch (Exception ex) { MensajeError("Error en R6M3", ex); } } private void mostrarDetalle() //M4 { try { objDistribucionPartidaBL = new DistribucionPartidaBL(); objDistribucionPartidaBL.objDistribucionPartidaEL.PK = Int32.Parse(ViewState["PkPartida"].ToString()); DataSet dsPartida = objDistribucionPartidaBL.getDetalle(); if (dsPartida.Tables[0].Rows.Count > 0) { ddlPartida.SelectedValue = dsPartida.Tables[0].Rows[0]["PKPARTIDAPRESUPUESTARIA"].ToString(); ddlAnio.SelectedItem.Text = dsPartida.Tables[0].Rows[0]["ANIODISTRIBUCIONPARTIDA"].ToString(); txtMonto.Text = dsPartida.Tables[0].Rows[0]["MONTODISTRIBUCIONPARTIDA"].ToString(); } } catch (Exception ex) { MensajeError("Error en R6M4", ex); General.ReportarError(ex, Session["LOGIN"].ToString()); } } private void llenarGRVDetalle() //M5 { try { objDistribucionPartidaBL = new DistribucionPartidaBL(); objDistribucionPartidaBL.objDistribucionPartidaEL.PK = 0; objDistribucionPartidaBL.objDistribucionPartidaEL.Proyecto = Int32.Parse(ddlProyecto.SelectedValue); DataSet dsDetalle = objDistribucionPartidaBL.getDetalle(); detalleGRVDatos(dsDetalle, grvDetalle); } catch (Exception ex) { MensajeError("Error en R6M5", ex); General.ReportarError(ex, Session["LOGIN"].ToString()); } } #endregion }