using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using Microsoft.Reporting.WebForms; using Extensiones; public partial class CRM_CatEtapasProceso : ClsPaginas { #region "PROPIEDADES" private int EsEditar { get { return ViewState["EsEditar"].ToString().ToEntero(); } set { ViewState["EsEditar"] = value; } } private DataTable TmpDT { get { return (DataTable)ViewState["TmpDT"]; } set { ViewState["TmpDT"] = value; } } private DataTable DTProcesos { get { return (DataTable)ViewState["DTProcesos"]; } set { ViewState["DTProcesos"] = value; } } private int CveEtapaProceso { get { return ViewState["CveEtapaProceso"].ToString().ToEntero(); } set { ViewState["CveEtapaProceso"] = value; } } private int CveTipoProcesoSeleccionado { get { return ViewState["CveTipoProcesoSeleccionado"].ToString().ToEntero(); } set { ViewState["CveTipoProcesoSeleccionado"] = value; } } private int CveTipoEtapaSeleccionada { get { return ViewState["CveTipoEtapaSeleccionada"].ToString().ToEntero(); } set { ViewState["CveTipoEtapaSeleccionada"] = value; } } private DataTable DTEtapas { get { return (DataTable)ViewState["DTEtapas"]; } set { ViewState["DTEtapas"] = value; } } #endregion protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { CveTipoProcesoSeleccionado = -1; CveTipoEtapaSeleccionada = -1; cargaEtapas(); CargaTiposProceso(); CargaDatos(-1); } } #region "CARGA DATOS" protected void CargaDatos(int CveTipoProceso) { ClsCRM ObjCRM = new ClsCRM(); if (ObjCRM.GetEtapaProceso(UsuarioActual.CveEmpresa, CveTipoProceso, -1, DdlFiltroEstatus.SelectedValue.ToEntero())) { TmpDT = ObjCRM.DtResultados; GVDatos.DataSource = TmpDT; } ObjCRM.Dispose(); GVDatos.DataBind(); UPDatos.Update(); } protected void limpiarCamposModal() { if (EsEditar == 1) { //LtlModalTitulo.Text = "Actualizar Etapa del Proceso"; BtnGuardar.Text = "Actualizar"; DivEstatus.Visible = true; DdlTipoProceso.SelectedValueExist("-1"); DdlTipoProceso.Enabled = false; } else { //LtlModalTitulo.Text = "Agregar Etapa al Proceso"; BtnGuardar.Text = "Guardar"; DivEstatus.Visible = false; DdlTipoProceso.SelectedValueExist("-1"); DdlTipoEtapa.SelectedValueExist("1"); DdlTipoProceso.Enabled = true; } TxtEtapaProceso.Text = ""; TxtDescripcion.Text = ""; ChkEstatus.Checked = true; UPModal.Update(); } protected void CargaTiposProceso() { ClsCRM ObjCRM = new ClsCRM(); if (ObjCRM.GetTipoProceso(UsuarioActual.CveEmpresa, 1)) { DdlTipoProceso.DataSource = ObjCRM.DtResultados; DTProcesos = ObjCRM.DtResultados; DdlFiltroProceso.DataSource = ObjCRM.DtResultados; DdlFiltroProceso.Items.Insert(0, new ListItem("Todos ", "-1")); } ObjCRM.Dispose(); DdlTipoProceso.SelectedValueExist(-1); DdlTipoProceso.DataBind(); DdlTipoProceso.Items.Insert(0, new ListItem("Seleccione", "-1")); DdlFiltroProceso.DataBind(); UPFiltros.Update(); } protected void cargaEtapas() { DataTable Etapas = new DataTable(); Etapas.Columns.Add("CveTipoEtapa",typeof(int)); Etapas.Columns.Add("TipoEtapa", typeof(string)); Etapas.Rows.Add(1,"Inicial"); Etapas.Rows.Add(2, "Proceso"); Etapas.Rows.Add(3, "Terminado"); Etapas.Rows.Add(4, "Cancelado"); DTEtapas = Etapas; DdlTipoEtapa.DataSource = Etapas; DdlTipoEtapa.DataBind(); } #endregion #region "ACCIONES" protected void LnkAgregar_Click(object sender, EventArgs e) { EsEditar = 0; limpiarCamposModal(); DivOrden.Visible = false; bloquearEtapasAnteriores(-1); DdlTipoProceso.SelectedValueExist(CveTipoProcesoSeleccionado); //cargaEtapas(); DdlTipoEtapa.SelectedValueExist(CveTipoEtapaSeleccionada); UPModal.Update(); this.RegistraScript("$('#DivModal').modal();"); } protected void LnkEditar_Click(object sender, EventArgs e) { EsEditar = 1; DivOrden.Visible = true; limpiarCamposModal(); GridViewRow GvRow = (GridViewRow)(((LinkButton)sender).NamingContainer); bloquearEtapasAnteriores(GvRow.DataKey("CveTipoEtapa").ToEntero()); CveEtapaProceso = GvRow.DataKey("CveEtapaProceso").ToEntero(); DdlTipoProceso.SelectedValueExist(GvRow.DataKey("CveTipoProceso")); int CveTipoEtapaSeleccionado = GvRow.DataKey("CveTipoEtapa").ToEntero(); DataTable EtapasDisponiblesEditar = DTEtapas.FiltraParametros(String.Format("CveTipoEtapa = {0} OR TipoEtapa = 'Proceso'", CveTipoEtapaSeleccionado)); DdlTipoEtapa.DataSource = EtapasDisponiblesEditar; DdlTipoEtapa.DataBind(); DdlTipoEtapa.SelectedValueExist(GvRow.DataKey("CveTipoEtapa")); TxtEtapaProceso.Text = GvRow.DataKey("EtapaProceso").ToString(); TxtDescripcion.Text = GvRow.DataKey("Descripcion").ToString(); ChkEstatus.Checked = GvRow.DataKey("CveEstatus").ToString() == "True" ? true : false; CargaDdlOrden(GvRow.DataKey("CveTipoProceso").ToEntero()); DdlOrden.SelectedValueExist(GvRow.DataKey("Orden").ToEntero()); UPModal.Update(); this.RegistraScript("$('#DivModal').modal();"); } private void bloquearEtapasAnteriores(int CveTipoEtapa) { DataTable EtapasAux = DTEtapas.Copy(); int indice = 0; for(int i = 1;i < CveTipoEtapa; i++) { DataRow TipoEtapaRow = EtapasAux.Rows[indice]; int CveTipoEtapaAux = TipoEtapaRow["CveTipoEtapa"].ToEntero(); if(CveTipoEtapaAux == 2) { indice++; }else { EtapasAux.Rows.Remove(TipoEtapaRow); } } EtapasAux.AcceptChanges(); DdlTipoEtapa.DataSource = EtapasAux; DdlTipoEtapa.DataBind(); } private bool validarInicialTerminadoCancelado(int CveTipoEtapa) { if (CveTipoEtapa == 2) { return true; }else { DataTable aux = TmpDT.FiltraParametros(String.Format("CveTipoEtapa = {0}",CveTipoEtapa)); return !(aux.Rows.Count >= 2); } } protected void BtnGuardar_Click(object sender, EventArgs e) { ClsCRM ObjCRM = new ClsCRM(); String EtapaProceso = TxtEtapaProceso.Text; String Descripcion = TxtDescripcion.Text; int CveTipoProceso = DdlTipoProceso.SelectedValue.ToEntero(); int CveTipoEtapa = DdlTipoEtapa.SelectedValue.ToEntero(); int Orden = TmpDT.FiltraParametros(String.Format("CveTipoProceso = {0} AND CveEstatus = 1", CveTipoProceso)).Rows.Count + 1; Boolean Estatus = ChkEstatus.Checked; int CveUsuarioIng = UsuarioActual.CveUsuario; if (EsEditar == 0) { if (ObjCRM.AddEtapaProceso(EtapaProceso, Descripcion, CveTipoEtapa, Orden, CveTipoProceso, UsuarioActual.CveEmpresa, CveUsuarioIng)) { Alert(String.Format("La Etapa fue creada correctamente para el proceso {0}.", DdlTipoProceso.SelectedItem), ModExtensiones.TipoMensaje.MsgInformacion); } } else { Orden = Estatus ? DdlOrden.SelectedValue.ToEntero() : -1; if (ObjCRM.UpdateEtapaProceso(EtapaProceso, Descripcion, Estatus, CveTipoEtapa, Orden, CveEtapaProceso)) { Alert("La Etapa fue actualizada correctamente.", ModExtensiones.TipoMensaje.MsgInformacion); } } //if (validarInicialTerminadoCancelado(CveTipoEtapa)) //{ //}else //{ // Alert(String.Format("No se pueden tener 2 etapas de tipo {0}",DdlTipoEtapa.SelectedItem),ModExtensiones.TipoMensaje.MsgAdvertencia); //} // PRECARGAMOS LA SIGUIENTE ETAPA A AGREGAR CON LOS MISMA DATOS DE LA ETAPA QUE SE INSERTO //CveTipoProcesoSeleccionado = CveTipoProceso; CveTipoEtapaSeleccionada = CveTipoEtapa; ObjCRM.Dispose(); limpiarCamposModal(); this.RegistraScript("$('#DivModal').modal('hide');"); CargaDatos(-1); DdlFiltroProceso.SelectedValueExist("-1"); } protected void GVDatos_RowDeleting(object sender, GridViewDeleteEventArgs e) { CveEtapaProceso = GVDatos.Rows[e.RowIndex].DataKey("CveEtapaProceso").ToEntero(); String Proceso = GVDatos.Rows[e.RowIndex].DataKey("TipoProceso").ToString(); ClsCRM ObjCRM = new ClsCRM(); if (ObjCRM.RemoveEtapaProceso(CveEtapaProceso)) { Alert(String.Format("La Etapa ha sido eliminada del Proceso de {0}.", Proceso), ModExtensiones.TipoMensaje.MsgInformacion); } ObjCRM.Dispose(); CargaDatos(-1); } protected void GVDatos_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { if (Convert.ToBoolean(e.Row.DataKey("CveEstatus"))) { e.Row.FCLabel("lblEstatus").CssClass = "label label-sm label-success"; } else { e.Row.FCLabel("lblEstatus").CssClass = "label label-sm label-danger"; } foreach (DataRow proceso in DTProcesos.Rows) { int index = DTProcesos.Rows.IndexOf(proceso); if (proceso["CveTipoProceso"].ToEntero() == e.Row.DataKey("CveTipoProceso").ToEntero()) { if ((index % 7) == 0) e.Row.Cells[0].CssClass = "bg-green-haze bg-font-green-haze"; if ((index % 7) == 1) e.Row.Cells[0].CssClass = "bg-red-pink bg-font-red-pink"; if ((index % 7) == 2) e.Row.Cells[0].CssClass = "bg-blue bg-font-blue"; if ((index % 7) == 3) e.Row.Cells[0].CssClass = "bg-purple-soft bg-font-purple-soft"; if ((index % 7) == 4) e.Row.Cells[0].CssClass = "bg-yellow bg-font-yellow"; if ((index % 7) == 5) e.Row.Cells[0].CssClass = "bg-yellow-casablanca bg-font-yellow-casablanca"; if ((index % 7) == 6) e.Row.Cells[0].CssClass = "bg-grey-steel bg-font-grey-steel"; } } } } protected void CargaDdlOrden(int CveTipoProceso) { DdlOrden.Items.Clear(); int i = 0; foreach (DataRow row in TmpDT.FiltraParametros(String.Format("CveTipoProceso = {0} AND CveEstatus = 1", CveTipoProceso)).Rows) { DdlOrden.Items.Insert(i++, new ListItem(i.ToString(), i.ToString())); } } #endregion #region "FILTRO" protected void BtnConsultar_Click(object sender, EventArgs e) { CveTipoProcesoSeleccionado = DdlFiltroProceso.SelectedValue.ToEntero(); CargaDatos(DdlFiltroProceso.SelectedValue.ToEntero()); } #endregion protected void LnkImprimir_Click(object sender,EventArgs e) { Imprimir("PDF"); } protected void LnkImprimirExcel_Click(object sender, EventArgs e) { Imprimir("EXCEL"); } private void Imprimir(string formato) { System.IO.FileInfo Image = new System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta)); string logouri = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.png", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa); List param = new List(); param.Add(new ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa)); if (Image.Exists) { param.Add(new ReportParameter("LogoPath", logouri)); } else { param.Add(new ReportParameter("LogoPath", "")); } param.Add(new ReportParameter("UsuarioImprimio", UsuarioActual.Nombre)); param.Add(new ReportParameter("FechaImpresion", DateTime.Today.ToString())); ImprimirPDF("Empresas/Grales/Formatos/RepCatEtapasProceso.rdlc", TmpDT, param, "Report Cat Etapas Proceso", formato); } protected void DdlTipoProceso_Change(Object sender,EventArgs e) { int CveTipoProcesoSeleccionado = DdlTipoProceso.SelectedValue.ToEntero(); DataTable EtapasIterable = DTEtapas.Copy(); DataTable EtapasDefiniticas = DTEtapas.Copy(); DataTable EtapasAux = DTEtapas.Copy(); foreach (DataRow EtapaRow in EtapasIterable.Rows) { int CveTipoEtapa = EtapaRow["CveTipoEtapa"].ToEntero(); if (CveTipoEtapa != 2) { int CantidadEtapas = TmpDT.FiltraParametros(String.Format("CveTipoProceso = {0} AND CveTipoEtapa = {1}", CveTipoProcesoSeleccionado, CveTipoEtapa)).Rows.Count; if (CantidadEtapas > 0) { EtapasAux = EtapasDefiniticas.FiltraParametros(String.Format("CveTipoEtapa <> {0}", CveTipoEtapa)); EtapasDefiniticas = EtapasAux.Copy(); } } } EtapasAux.AcceptChanges(); DdlTipoEtapa.DataSource = EtapasAux; DdlTipoEtapa.DataBind(); UPModal.Update(); } }