Cambios CRM

This commit is contained in:
Oscar Irigoyen
2022-12-08 20:30:38 -07:00
parent f104e7cd22
commit 45bda0b608
9 changed files with 156 additions and 33 deletions

View File

@@ -291,7 +291,7 @@
<asp:Content ID="Content3" ContentPlaceHolderID="E" runat="Server">
<asp:UpdatePanel ID="UpEncabezado" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Label runat="server" ID="LblEncabezadoAcercamiento" Text=" Registro de Acercamiento"></asp:Label>
<asp:Label runat="server" ID="LblEncabezadoAcercamiento" Text=" Registro de Acercamiento/Oportunidad"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
</asp:Content>
@@ -301,7 +301,7 @@
<asp:UpdatePanel ID="UpAcciones" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<li>
<asp:LinkButton ID="LnkCerrarAcercamiento" OnClick="LnkCerrarAcercamiento_Click" Text="" runat="server" Style="cursor: pointer; margin-right: 5px;"><i class="fa fa-times"></i><span runat="server" id="SpanTituloCierre" style="padding-left: 5px;">Cerrar Acercamiento</span></asp:LinkButton>
<asp:LinkButton ID="LnkCerrarAcercamiento" OnClick="LnkCerrarAcercamiento_Click" Text="" runat="server" Style="cursor: pointer; margin-right: 5px;"><i class="fa fa-times"></i><span runat="server" id="SpanTituloCierre" style="padding-left: 5px;">Cerrar Acercamiento/Oportunidad</span></asp:LinkButton>
</li>
</ContentTemplate>
</asp:UpdatePanel>
@@ -364,7 +364,7 @@
<div class="portlet-title">
<div class="caption font-green">
<i class="fa fa-users font-green"></i>
<span class="caption-subject bold uppercase">Datos del Acercamiento</span>
<span class="caption-subject bold uppercase">Datos del Acercamiento/Oportunidad</span>
</div>
<div class="actions">
<div class="btn-group">
@@ -376,7 +376,7 @@
<div class="form-group form-md-line-input input-iconright">
<asp:TextBox ID="TxtNombreAcercamiento" CssClass="form-control " runat="server" MaxLength="150"></asp:TextBox>
<asp:RequiredFieldValidator ID="RFVNombreAcercamiento" runat="server" ControlToValidate="TxtNombreAcercamiento" CssClass="help-block errorimput" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>''Nombre del Acercamiento''</b> es necesario, por favor ingréselo." ValidationGroup="GrpGuardar"></asp:RequiredFieldValidator>
<asp:RequiredFieldValidator ID="RFVNombreAcercamiento" runat="server" ControlToValidate="TxtNombreAcercamiento" CssClass="help-block errorimput" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>''Nombre del Acercamiento/Oportunidad''</b> es necesario, por favor ingréselo." ValidationGroup="GrpGuardar"></asp:RequiredFieldValidator>
<label for="<%= TxtNombreAcercamiento.ClientID.ToString()%>">Proyecto:</label>
<i></i>
</div>
@@ -988,7 +988,7 @@
<asp:UpdatePanel ID="UpGuardar" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Button ID="BtnGuardarAcercamiento" Visible="false" runat="server" OnClick="BtnGuardarAcercamiento_Click" CssClass="btn btn-primary" Text="Guardar" ValidationGroup="GrpGuardar" />
<asp:Button ID="BtnEliminarAcercamiento" Visible="false" runat="server" OnClick="BtnEliminarAcercamiento_Click" CssClass="btn btn-danger" Text="Eliminar" AlternateText="Eliminar" data-toggle="confirmation" data-popout="true" data-original-title="¿Seguro que desea continuar, esta acción eliminara todo registro del acercamiento?" data-btn-ok-label="si" />
<asp:Button ID="BtnEliminarAcercamiento" Visible="false" runat="server" OnClick="BtnEliminarAcercamiento_Click" CssClass="btn btn-danger" Text="Eliminar" AlternateText="Eliminar" data-toggle="confirmation" data-popout="true" data-original-title="¿Seguro que desea continuar, esta acción eliminara todo registro del acercamiento/Oportunidad?" data-btn-ok-label="si" />
</ContentTemplate>
</asp:UpdatePanel>
</td>

View File

@@ -271,6 +271,23 @@ public partial class CRM_Acercamiento : ClsPaginas
}
}
private int VendedorTipo
{
get
{
if (ViewState["VendedorTipo"] == null)
{
ViewState["VendedorTipo"] = -1;
}
return ViewState["VendedorTipo"].ToString().ToEntero();
}
set
{
ViewState["VendedorTipo"] = value;
}
}
//public int RCveEvento { get { return ViewState["RCveEvento"] != null ? ViewState["RCveEvento"].ToString().ToEntero() : 0; } set { ViewState["RCveEvento"] = value; } }
public System.Data.DataTable CheckListNew { get { return ViewState["CheckListNew"] != null ? (System.Data.DataTable)ViewState["CheckListNew"] : null; } set { ViewState["CheckListNew"] = value; } }
public int chklistitemindex { get { return ViewState["chklistitemindex"] != null ? ViewState["chklistitemindex"].ToString().ToEntero() : 0; } set { ViewState["chklistitemindex"] = value; } }
@@ -313,6 +330,14 @@ public partial class CRM_Acercamiento : ClsPaginas
}
CargarPS();
//BtnGuardarAcercamiento.Visible = true;
if (!(Request["OPTAB"] == null))
{
if(Request["OPTAB"].ToString() == "COT")
{
TabsAcercamiento.ActiveTab = TabCotizaciones;
}
}
}
}
@@ -432,6 +457,21 @@ public partial class CRM_Acercamiento : ClsPaginas
CargaImagenes();
if (UsuarioActual.CveVendedor > 0)
{
ClsVtaVendedores ObjVendedores = new ClsVtaVendedores();
if (ObjVendedores.GetVendedores(UsuarioActual.CveEmpresa))
{
if (ObjVendedores.DtResultados.Rows.Count > 0)
{
VendedorTipo = ObjVendedores.DtResultados.FiltroPrimeroValor("VendedorTipo", $"CveVendedor = {UsuarioActual.CveVendedor}").ToEntero();
}
}
ObjVendedores.Dispose();
}
UpEncabezado.Update();
UPAcercamiento.Update();
UPBitacoraEtapas.Update();
@@ -718,7 +758,7 @@ public partial class CRM_Acercamiento : ClsPaginas
HuboError = false;
CveEtapaActual = CveEtapaProcesoActualActualizar;
HdfEtapaSeleccionada.Value = CveEtapaProcesoActualActualizar.ToString();
Alert(String.Format("Se actualizó el acercamiento {0} de tipo {1}.", NombreAcercamiento, TipoProceso), ModExtensiones.TipoMensaje.MsgInformacion);
Alert(String.Format("Se actualizó el acercamiento/oportunidad {0} de tipo {1}.", NombreAcercamiento, TipoProceso), ModExtensiones.TipoMensaje.MsgInformacion);
//}
}
@@ -798,7 +838,7 @@ public partial class CRM_Acercamiento : ClsPaginas
}
else
{
Alert("No se actualizó el acercamiento.", ModExtensiones.TipoMensaje.ToastError);
Alert("No se actualizó el acercamiento/oportunidad.", ModExtensiones.TipoMensaje.ToastError);
}
@@ -841,12 +881,12 @@ public partial class CRM_Acercamiento : ClsPaginas
}
if (!HuboError)
{
Alert("El Acercamiento ha sido eliminado.", ModExtensiones.TipoMensaje.MsgInformacion, String.Format("document.location.href=\"/CRM/EmpresaCRM.aspx?CveEmpresaCRM={0}\"", CveEmpresaCRM));
Alert("El Acercamiento/Oportunidad ha sido eliminado.", ModExtensiones.TipoMensaje.MsgInformacion, String.Format("document.location.href=\"/CRM/EmpresaCRM.aspx?CveEmpresaCRM={0}\"", CveEmpresaCRM));
}
}
else
{
Alert("No se puede eliminar el acercamiento porque el prospecto cuenta con cotizaciones/facturaciones previas.", ModExtensiones.TipoMensaje.MsgError);
Alert("No se puede eliminar el Acercamiento/Oportunidad porque el prospecto cuenta con cotizaciones/facturaciones previas.", ModExtensiones.TipoMensaje.MsgError);
}
objBitacora.Dispose();
@@ -941,9 +981,9 @@ public partial class CRM_Acercamiento : ClsPaginas
{
String MensajeBitacora = "";
if (CveEtapaActual == CveEtapaCierre)
MensajeBitacora = String.Format("Se actualizó el cierre del acercamiento, con motivo {1} y fecha de {0} al {2}.", TituloCierre, DdlRechazoMotivo.SelectedItem.Text, TxtFechaCierreRechazo.Text);
MensajeBitacora = String.Format("Se actualizó el cierre del acercamiento/oportunidad, con motivo {1} y fecha de {0} al {2}.", TituloCierre, DdlRechazoMotivo.SelectedItem.Text, TxtFechaCierreRechazo.Text);
else
MensajeBitacora = String.Format("Se Cerró el acercamiento, con motivo {1} y fecha de {0} al {2}.", TituloCierre, DdlRechazoMotivo.SelectedItem.Text, TxtFechaCierreRechazo.Text);
MensajeBitacora = String.Format("Se Cerró el acercamiento/oportunidad, con motivo {1} y fecha de {0} al {2}.", TituloCierre, DdlRechazoMotivo.SelectedItem.Text, TxtFechaCierreRechazo.Text);
//if (ObjBitacora.AddEventoBitacora(MensajeBitacora, "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveTipoProcesoCRM: CveTipoProceso, CveAcercamientoCRM: CveAcercamiento, CveEtapaProcesoCRM: CveEtapaCierre))
//{
@@ -1262,7 +1302,7 @@ public partial class CRM_Acercamiento : ClsPaginas
}
//SOLO VENDEDOR ASIGNADO PUEDE EDITAR
if (CveVendedorAsignado != UsuarioActual.CveVendedor)
if( (CveVendedorAsignado != UsuarioActual.CveVendedor) & VendedorTipo != 2)
{
BtnGuardarAcercamiento.Visible = false;
BtnEliminarAcercamiento.Visible = false;

View File

@@ -321,7 +321,7 @@
</ContentTemplate>
</ajax:TabPanel>
<%-- SECCION ACERCAMIENTO --%>
<ajax:TabPanel ID="TabAcercamiento" runat="server" HeaderText="Acercamientos">
<ajax:TabPanel ID="TabAcercamiento" runat="server" HeaderText="Acercamientos/Oportunidades">
<ContentTemplate>
<div class="row">
<div class="col-md-12 ">
@@ -329,11 +329,11 @@
<div class="portlet-title">
<div class="caption font-green">
<i class="icon-pin font-green"></i>
<span class="caption-subject bold uppercase">Acercamientos Registrados </span>
<span class="caption-subject bold uppercase">Acercamientos/Oportunidades Registrados </span>
</div>
<div class="actions">
<div class="btn-group">
<asp:LinkButton runat="server" ID="LnkAgregarAcercamiento" Visible="false" OnClick="LnkAgregarAcercamiento_Click" data-toggle="tooltip" title="Agregar un Acercamiento" class="btn btn-circle btn-sm btn-default"><i class="fa fa-plus"></i></asp:LinkButton>
<asp:LinkButton runat="server" ID="LnkAgregarAcercamiento" Visible="false" OnClick="LnkAgregarAcercamiento_Click" data-toggle="tooltip" title="Agregar un Acercamiento/Oportunidad" class="btn btn-circle btn-sm btn-default"><i class="fa fa-plus"></i></asp:LinkButton>
</div>
</div>
</div>
@@ -361,7 +361,7 @@
<ItemStyle HorizontalAlign="Left" />
</asp:TemplateField>
<asp:TemplateField ItemStyle-Width="15%" HeaderText="Acercamiento" ItemStyle-HorizontalAlign="Left">
<asp:TemplateField ItemStyle-Width="15%" HeaderText="Acercamiento/Oportunidad" ItemStyle-HorizontalAlign="Left">
<ItemTemplate>
<asp:HyperLink NavigateUrl="#" Target="_blank" ID="HplNombreAcercamiento" runat="server" Text='<%# Eval("NombreAcercamiento")%>'> </asp:HyperLink>
</ItemTemplate>
@@ -428,7 +428,7 @@
EmptyDataRowStyle-HorizontalAlign="Center" ToolTip="Listado de Cotizaciones" CssClass="table table-striped table-advance table-hover ScrollAD Widthall mysmallbtn" AlternatingRowStyle-BorderStyle="None"
GridLines="None" BorderColor="#D3D3D3" BorderWidth="1" AutoGenerateColumns="false" OnRowDataBound="GvCotizacion_RowDataBound">
<Columns>
<asp:HyperLinkField DataTextField="NombreAcercamientoCRM" Target="_blank" DataNavigateUrlFields="CveAcercamientoCRM" DataNavigateUrlFormatString="/CRM/Acercamiento.aspx?CveAcercamiento={0}" ItemStyle-HorizontalAlign="Left" HeaderText="Acercamiento" />
<asp:HyperLinkField DataTextField="NombreAcercamientoCRM" Target="_blank" DataNavigateUrlFields="CveAcercamientoCRM" DataNavigateUrlFormatString="/CRM/Acercamiento.aspx?CveAcercamiento={0}" ItemStyle-HorizontalAlign="Left" HeaderText="Acercamiento/Oportunidad" />
<asp:BoundField DataField="DescripcionCRM" HeaderText="Descripcion" ItemStyle-HorizontalAlign="Left" />
<asp:HyperLinkField DataTextField="SerieFolio" Target="_blank" DataNavigateUrlFields="CveVenta" DataNavigateUrlFormatString="/Ventas/Ventas.aspx?CveVenta={0}" ItemStyle-HorizontalAlign="Left" HeaderText="Serie Folio" />
@@ -688,7 +688,7 @@
<div class="modal-content">
<div class="modal-header ">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<h4 class="modal-title">Agregar Acercamiento</h4>
<h4 class="modal-title">Agregar Acercamiento/Oportunidad</h4>
</div>
<div class="modal-body">

View File

@@ -102,6 +102,11 @@ public partial class CRM_EmpresaCRM : ClsPaginas
{
get
{
if (ViewState["DTContactos"] == null)
{
ViewState["DTContactos"] = new DataTable();
}
return (DataTable)ViewState["DTContactos"];
}
@@ -137,6 +142,26 @@ public partial class CRM_EmpresaCRM : ClsPaginas
}
}
private int VendedorTipo
{
get
{
if(ViewState["VendedorTipo"] == null)
{
ViewState["VendedorTipo"] = -1;
}
return ViewState["VendedorTipo"].ToString().ToEntero();
}
set
{
ViewState["VendedorTipo"] = value;
}
}
private int CveSubProyecto
{
get
@@ -154,6 +179,7 @@ public partial class CRM_EmpresaCRM : ClsPaginas
{
get
{
return (DataTable)ViewState["TempDTContactos"];
}
@@ -749,7 +775,7 @@ public partial class CRM_EmpresaCRM : ClsPaginas
CveVendedor = objServicio.Result[0].CveVendedorAsignado.ToEntero();
CveSubProyecto = objServicio.Result[0].CveSubProyecto.ToEntero();
CveCliente = objServicio.Result[0].CveCliente.ToEntero();
CveGiroClasificacion = objServicio.Result[0].CveGiroClasificacion > 0 ? objServicio.Result[0].CveGiroClasificacion.ToEntero() : -1;
CveGiroClasificacion = objServicio.Result[0].CveGiroClasificacion > 0 ? objServicio.Result[0].CveGiroClasificacion.ToEntero() : -1;
if (!(CveCliente > 0))
{
@@ -803,6 +829,22 @@ public partial class CRM_EmpresaCRM : ClsPaginas
CargaEventoBitacora();
}
if(UsuarioActual.CveVendedor > 0)
{
ClsVtaVendedores ObjVendedores = new ClsVtaVendedores();
if (ObjVendedores.GetVendedores(UsuarioActual.CveEmpresa))
{
if(ObjVendedores.DtResultados.Rows.Count > 0)
{
VendedorTipo = ObjVendedores.DtResultados.FiltroPrimeroValor("VendedorTipo", $"CveVendedor = {UsuarioActual.CveVendedor}").ToEntero();
}
}
ObjVendedores.Dispose();
}
}
protected void DdlTipoProceso_Change(object sender, EventArgs e)
@@ -1623,7 +1665,7 @@ public partial class CRM_EmpresaCRM : ClsPaginas
{
if (DTContactos.Rows.Count == 0)
{
Alert("Para crear un nuevo acercamiento es necesario agregar al menos un Contacto.", ModExtensiones.TipoMensaje.MsgAdvertencia);
Alert("Para crear un nuevo acercamiento/Oportunidad es necesario agregar al menos un Contacto.", ModExtensiones.TipoMensaje.MsgAdvertencia);
}
else
{
@@ -1707,22 +1749,22 @@ public partial class CRM_EmpresaCRM : ClsPaginas
}
else
{
Alert("No tiene 'Etapa Proceso' con el 'Proceso' seleccionado al agregar el Acercamiento", ModExtensiones.TipoMensaje.MsgAdvertencia);
Alert("No tiene 'Etapa Proceso' con el 'Proceso' seleccionado al agregar el Acercamiento/Oportunidad", ModExtensiones.TipoMensaje.MsgAdvertencia);
}
if (CveAcercamiento > 0)
{
if (ObjBitacora.AddEventoBitacora(String.Format("Se registró el Acercamiento {0} como Proceso de Tipo {1}, con Vendedor {2} y Contacto Principal {3}.", NombreAcercamiento, DdlTipoProceso.SelectedItem, DdlVendedor.SelectedItem, DdlContactoPrincipal.SelectedValue == "-1" ? "aun no asignado" : DdlContactoPrincipal.SelectedItem.Text), "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveEmpresaCRM: CveEmpresaCRM, CveTipoProcesoCRM: CveTipoProceso, CveAcercamientoCRM: CveAcercamiento, CveContactoCRM: CveContactoPrincipal, CveEtapaProcesoCRM: CveEtapaProcesoActual))
if (ObjBitacora.AddEventoBitacora(String.Format("Se registró el Acercamiento/Oportunidad {0} como Proceso de Tipo {1}, con Vendedor {2} y Contacto Principal {3}.", NombreAcercamiento, DdlTipoProceso.SelectedItem, DdlVendedor.SelectedItem, DdlContactoPrincipal.SelectedValue == "-1" ? "aun no asignado" : DdlContactoPrincipal.SelectedItem.Text), "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveEmpresaCRM: CveEmpresaCRM, CveTipoProcesoCRM: CveTipoProceso, CveAcercamientoCRM: CveAcercamiento, CveContactoCRM: CveContactoPrincipal, CveEtapaProcesoCRM: CveEtapaProcesoActual))
{
string asunto = String.Format("Se registró el Acercamiento {0}", NombreAcercamiento);
string mensaje = String.Format("Se registró el Acercamiento {0} como Proceso de Tipo {1}, con Vendedor {2} y Contacto Principal {3}.", NombreAcercamiento, DdlTipoProceso.SelectedItem, DdlVendedor.SelectedItem, DdlContactoPrincipal.SelectedValue == "-1" ? "aun no asignado" : DdlContactoPrincipal.SelectedItem.Text);
string asunto = String.Format("Se registró el Acercamiento/Oportunidad {0}", NombreAcercamiento);
string mensaje = String.Format("Se registró el Acercamiento/Oportunidad {0} como Proceso de Tipo {1}, con Vendedor {2} y Contacto Principal {3}.", NombreAcercamiento, DdlTipoProceso.SelectedItem, DdlVendedor.SelectedItem, DdlContactoPrincipal.SelectedValue == "-1" ? "aun no asignado" : DdlContactoPrincipal.SelectedItem.Text);
mandarCorreo(asunto, mensaje);
HuboError = false;
}
}
else
{
Alert("Ocurrio un error al agregar el Acercamiento", ModExtensiones.TipoMensaje.MsgError);
Alert("Ocurrio un error al agregar el Acercamiento/Oportunidad", ModExtensiones.TipoMensaje.MsgError);
HuboError = false;
}
@@ -1741,7 +1783,7 @@ public partial class CRM_EmpresaCRM : ClsPaginas
//CARGA BITACORA
if (!HuboError)
{
Alert(String.Format("Se registró el acercamiento <b>{0}</b> como proceso de tipo <b>{1}</b>.<br/><br/> Se le redireccionara al Detalle del Acercamiento.", NombreAcercamiento, DdlTipoProceso.SelectedItem), ModExtensiones.TipoMensaje.MsgInformacion, String.Format("document.location.href=\"/CRM/Acercamiento.aspx?CveAcercamiento={0}\"", CveAcercamiento));
Alert(String.Format("Se registró el acercamiento/Oportunidad <b>{0}</b> como proceso de tipo <b>{1}</b>.<br/><br/> Se le redireccionara al Detalle del Acercamiento/Oportunidad.", NombreAcercamiento, DdlTipoProceso.SelectedItem), ModExtensiones.TipoMensaje.MsgInformacion, String.Format("document.location.href=\"/CRM/Acercamiento.aspx?CveAcercamiento={0}\"", CveAcercamiento));
CargaEventoBitacora();
}
limpiarCamposModalAcercamiento();
@@ -1771,7 +1813,7 @@ public partial class CRM_EmpresaCRM : ClsPaginas
LnkAgregarAcercamiento.Visible = false;
}
if ((UsuarioActual.CveVendedor != CveVendedor))
if ((UsuarioActual.CveVendedor != CveVendedor) & VendedorTipo != 2)
{
if (UsuarioActual.CveUsuario != 100)
{

View File

@@ -5,7 +5,7 @@
<asp:Content ID="Content2" ContentPlaceHolderID="Css" runat="Server">
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="E" runat="Server">
Reporte de Acercamientos
Reporte de Acercamientos/Oportunidades
</asp:Content>
<asp:Content ID="Content4" ContentPlaceHolderID="HB" runat="Server">
</asp:Content>
@@ -149,7 +149,7 @@
<ItemStyle HorizontalAlign="Left" />
</asp:TemplateField>
<%--1--%>
<asp:TemplateField HeaderText="Acercamiento" ItemStyle-HorizontalAlign="Left">
<asp:TemplateField HeaderText="Acercamiento/Oportunidad" ItemStyle-HorizontalAlign="Left">
<ItemTemplate>
<asp:HyperLink NavigateUrl="#" Target="_blank" ID="HplNombreAcercamiento" runat="server" Text='<%# Eval("NombreAcercamiento")%>'> </asp:HyperLink>
</ItemTemplate>

View File

@@ -30,7 +30,7 @@
</style>
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="E" runat="Server">
Reporte de Procesos de Acercamientos
Reporte de Procesos de Acercamientos/Oportunidades
</asp:Content>
<asp:Content ID="Content4" ContentPlaceHolderID="HB" runat="Server">
</asp:Content>

View File

@@ -27,7 +27,7 @@
</style>
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="E" runat="Server">
Reporte de Rechazos Acercamientos
Reporte de Rechazos Acercamientos/Opotunidades
</asp:Content>
<asp:Content ID="Content4" ContentPlaceHolderID="HB" runat="Server">
<asp:UpdatePanel ID="UpAcciones" runat="server" UpdateMode="Conditional">