-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)
460 lines
14 KiB
C#
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();
|
|
}
|
|
} |