Files
SIG/CRM/CatEtapasProceso.aspx.cs
MLopez 021e50c4b7 Limpieza masiva ClsPaginas
-RegistraScript se unifica en una sola clase static/shared y se simplica el código
-Alert se vuelve estático
-Random() no se manda a crear cada vez que se registra un script (esto tenía un costo alto)
-Se corrigieron unos errores en los nombres de funciones
-Las clases que ya heredan de Clspaginas, se les quita el this a RegistraScript y a Alert puesto que era innecesario (y además al haberlos vuelto métodos estáticos, NO pueden llamarse de un this)
2023-01-31 21:56:32 -07:00

460 lines
14 KiB
C#

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;
ChkEsCotizacion.Checked = false;
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();
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;
ChkEsCotizacion.Checked = GvRow.DataKey("EsCotizacion").ToString() == "True" ? true : false;
CargaDdlOrden(GvRow.DataKey("CveTipoProceso").ToEntero());
DdlOrden.SelectedValueExist(GvRow.DataKey("Orden").ToEntero());
UPModal.Update();
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, EsCotizacion:ChkEsCotizacion.Checked))
{
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, EsCotizacion: ChkEsCotizacion.Checked))
{
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();
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($"{UsuarioActual.Empresa.Ruta}/Logo.png");
string logouri = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.png", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa);
List<ReportParameter> param = new List<ReportParameter>();
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();
}
}