pagos no bloquean apenas que esten vinculados al tramite y se muestran botones cmo menu se veo feo el menu se esta mejorando

This commit is contained in:
Jorge Luis caudillo esparza
2026-09-28 17:41:25 -07:00
parent 2f52c96067
commit 78a6666e5a
6 changed files with 580 additions and 117 deletions

View File

@@ -6,6 +6,12 @@ namespace SIG.Web.AppCode.Contracts.Clientes
{
public interface IRepositorioPortalCliente
{
DbResult<List<PagoPendienteTramiteCliente>> ListarPagosPendientesTramites(
int cveCliente,
int cveFraccionamiento,
int cveUsuarioEjecuta,
string nombreDominio);
DbResult<List<PagoConvenioClienteFila>> ListarPagos(
int cveCliente,
int? cveFraccionamiento,

View File

@@ -48,6 +48,13 @@ namespace SIG.Web.AppCode.Models.Clientes
public string Agrupacion { get; set; }
}
[Serializable]
public sealed class PagoPendienteTramiteCliente
{
public int CveSolicitud { get; set; }
public int CveConvenioRecibo { get; set; }
}
[Serializable]
public sealed class PagoConvenioClienteFila
{

View File

@@ -16,6 +16,8 @@ namespace SIG.Web.AppCode.Repositories.Clientes
{
private const string ProcedimientoPagosListar =
"dbo.PA_Clientes_ConvenioPagoList";
private const string ProcedimientoPagosPendientesTramitesListar =
"dbo.PA_Clientes_ConvenioPagoPendienteTramiteList";
private const string ProcedimientoRecibosListar =
"dbo.PA_Clientes_ConvenioReciboPendienteList";
private const string ProcedimientoPagoAgregar =
@@ -28,6 +30,31 @@ namespace SIG.Web.AppCode.Repositories.Clientes
{
}
public DbResult<List<PagoPendienteTramiteCliente>> ListarPagosPendientesTramites(
int cveCliente,
int cveFraccionamiento,
int cveUsuarioEjecuta,
string nombreDominio)
{
return QueryList<PagoPendienteTramiteCliente>(
ProcedimientoPagosPendientesTramitesListar,
cveUsuarioEjecuta,
nombreDominio,
comando =>
{
StoredProcedureCommand.AddInput(
comando,
"@CveCliente",
cveCliente,
DbType.Int32);
StoredProcedureCommand.AddInput(
comando,
"@CveFraccionamiento",
cveFraccionamiento,
DbType.Int32);
});
}
public DbResult<List<PagoConvenioClienteFila>> ListarPagos(
int cveCliente,
int? cveFraccionamiento,

View File

@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
@@ -361,12 +361,10 @@ namespace SIG.Web.AppCode.Services.Clientes
documentos.Exception);
}
DbResult<List<PagoConvenioClienteFila>> pagos =
_repositorio.ListarPagos(
DbResult<List<PagoPendienteTramiteCliente>> pagos =
_repositorio.ListarPagosPendientesTramites(
usuario.CveCliente,
cveFraccionamiento,
cveFraccionamientoEtapa,
null,
cveUsuarioEjecuta,
nombreDominio);
@@ -380,8 +378,8 @@ namespace SIG.Web.AppCode.Services.Clientes
List<TramiteDocumentoSolicitudModel> documentosActuales =
documentos.Data ?? new List<TramiteDocumentoSolicitudModel>();
List<PagoConvenioClienteFila> pagosActuales =
pagos.Data ?? new List<PagoConvenioClienteFila>();
List<PagoPendienteTramiteCliente> pagosActuales =
pagos.Data ?? new List<PagoPendienteTramiteCliente>();
List<TramiteClienteListado> resultado =
(solicitudes.Data ?? new List<TramiteSolicitudModel>())
@@ -402,16 +400,7 @@ namespace SIG.Web.AppCode.Services.Clientes
(!documento.TieneArchivo || documento.FechaExpirada));
int pagosPendientes = pagosActuales.Count(pago =>
(
pago.CveSolicitud == solicitud.CveSolicitud ||
(
!pago.CveSolicitud.HasValue &&
pago.CveFraccionamientoEtapa ==
solicitud.CveFraccionamientoEtapa
)
) &&
pago.EsReciboPendiente &&
pago.SaldoPendiente > 0m);
pago.CveSolicitud == solicitud.CveSolicitud);
return new TramiteClienteListado
{

View File

@@ -4,13 +4,23 @@
<asp:UpdatePanel ID="Listado" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
<ContentTemplate>
<div class="sig-documentos-etapa">
<asp:LinkButton ID="SolicitarDocumento" runat="server" Text="Solicitar documento"
CssClass="btn blue" CausesValidation="false" OnClick="AbrirSolicitud" />
<asp:LinkButton
ID="SolicitarDocumento"
runat="server"
Text="Solicitar documento"
CssClass="btn blue"
CausesValidation="false"
OnClick="AbrirSolicitud" />
<asp:Literal ID="MensajeVacio" runat="server" Mode="Encode" />
<asp:Literal
ID="MensajeVacio"
runat="server"
Mode="Encode" />
<div class="table-responsive">
<asp:GridView ID="Documentos" runat="server"
<asp:GridView
ID="Documentos"
runat="server"
AutoGenerateColumns="false"
GridLines="None"
CssClass="table table-hover Widthall sig-grid-agrupado"
@@ -18,21 +28,48 @@
OnRowDataBound="EnlazarFilaDocumento"
OnRowCommand="ComandoDocumento"
EmptyDataText="No hay documentos para mostrar.">
<Columns>
<asp:TemplateField HeaderStyle-CssClass="sig-grid-columna-grupo"
<asp:TemplateField
HeaderStyle-CssClass="sig-grid-columna-grupo"
ItemStyle-CssClass="sig-grid-columna-grupo">
<ItemTemplate>
<button type="button" class="sig-grid-alternar-grupo" aria-expanded="true">
<span class="sig-grid-grupo-titulo"><%#: Eval("TituloGrupo") %></span>
<i class="fa fa-chevron-up sig-grid-icono-agrupacion" aria-hidden="true"></i>
<button
type="button"
class="sig-grid-alternar-grupo"
aria-expanded="true">
<span class="sig-grid-grupo-titulo">
<%#: Eval("TituloGrupo") %>
</span>
<i
class="fa fa-chevron-up sig-grid-icono-agrupacion"
aria-hidden="true">
</i>
</button>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="TipoDocumento" HeaderText="Documento"
<asp:BoundField
DataField="TipoDocumento"
HeaderText="Documento"
ItemStyle-CssClass="sig-grid-columna-dato-principal" />
<asp:BoundField DataField="Responsable" HeaderText="Responsable" />
<asp:CheckBoxField DataField="EsRequerido" HeaderText="Requerido" />
<asp:BoundField DataField="EstadoDocumento" HeaderText="Estado" />
<asp:BoundField
DataField="Responsable"
HeaderText="Responsable" />
<asp:CheckBoxField
DataField="EsRequerido"
HeaderText="Requerido" />
<asp:BoundField
DataField="EstadoDocumento"
HeaderText="Estado" />
<asp:TemplateField HeaderText="Aprobado">
<ItemTemplate>
@@ -42,149 +79,546 @@
<asp:TemplateField HeaderText="Vencimiento">
<ItemTemplate>
<span class='<%# FechaExpirada(Container.DataItem) ? "sig-documentos-fecha-vencida" : "" %>'>
<span class='<%# FechaExpirada(Container.DataItem)
? "sig-documentos-fecha-vencida"
: "" %>'>
<%#: TextoFechaVencimiento(Container.DataItem) %>
</span>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Nota" HeaderText="Nota / motivo" />
<asp:BoundField
DataField="Nota"
HeaderText="Nota / motivo" />
<asp:TemplateField HeaderText="Acciones"
<asp:TemplateField
HeaderText="Acciones"
HeaderStyle-CssClass="sig-columna-acciones"
ItemStyle-CssClass="sig-columna-acciones">
<ItemTemplate>
<asp:HyperLink runat="server" Text="Descargar" CssClass="btn btn-sm default"
Visible='<%# MostrarAccion(Container.DataItem, "Descargar") %>'
NavigateUrl='<%# UrlDocumento(ClaveDocumento(Container.DataItem)) %>' />
<asp:LinkButton runat="server" Text="Administrar GIS" CssClass="btn btn-sm default"
CommandName="AdministrarGis" CausesValidation="false"
Visible='<%# MostrarAccion(Container.DataItem, "AdministrarGis") %>' />
<asp:PlaceHolder
runat="server"
Visible='<%#
MostrarAccion(Container.DataItem, "Descargar") ||
MostrarAccion(Container.DataItem, "AdministrarGis") ||
MostrarAccion(Container.DataItem, "Cargar") ||
MostrarAccion(Container.DataItem, "Aprobar") ||
MostrarAccion(Container.DataItem, "CancelarDocumento") ||
MostrarAccion(Container.DataItem, "QuitarRequerido") ||
MostrarAccion(Container.DataItem, "ActivarRequerido") ||
MostrarAccion(Container.DataItem, "EditarVencimiento") ||
MostrarAccion(Container.DataItem, "Eliminar")
%>'>
<asp:LinkButton runat="server" CommandName="Cargar"
CssClass="btn btn-sm blue sig-accion-icono" CausesValidation="false"
ToolTip="Cargar / renovar" aria-label="Cargar / renovar"
Visible='<%# MostrarAccion(Container.DataItem, "Cargar") %>'>
<i class="fa fa-upload" aria-hidden="true"></i>
</asp:LinkButton>
<div class="dropdown">
<asp:LinkButton runat="server" Text="Aprobar" CommandName="Aprobar"
CssClass="btn btn-sm green" CausesValidation="false"
Visible='<%# MostrarAccion(Container.DataItem, "Aprobar") %>' />
<button
type="button"
class="btn btn-circle btn-sm default dropdown-toggle sig-accion-icono"
data-toggle="dropdown"
title="Acciones"
aria-label="Acciones"
aria-haspopup="true"
aria-expanded="false">
<asp:LinkButton runat="server" Text="Cancelar documento" CommandName="CancelarDocumento"
CssClass="btn btn-sm red" CausesValidation="false"
Visible='<%# MostrarAccion(Container.DataItem, "CancelarDocumento") %>' />
<i
class="fa fa-ellipsis-v"
aria-hidden="true">
</i>
<asp:LinkButton runat="server" CommandName="QuitarRequerido"
CssClass="btn btn-circle btn-sm red sig-accion-icono" CausesValidation="false"
ToolTip="Quitar requerido" aria-label="Quitar requerido"
Visible='<%# MostrarAccion(Container.DataItem, "QuitarRequerido") %>'>
<i class="fa fa-times" aria-hidden="true"></i>
</asp:LinkButton>
</button>
<asp:LinkButton runat="server" CommandName="ActivarRequerido"
CssClass="btn btn-circle btn-sm green sig-accion-icono" CausesValidation="false"
ToolTip="Marcar como requerido" aria-label="Marcar como requerido"
Visible='<%# MostrarAccion(Container.DataItem, "ActivarRequerido") %>'>
<i class="fa fa-check" aria-hidden="true"></i>
</asp:LinkButton>
<ul class="dropdown-menu dropdown-menu-right">
<asp:LinkButton runat="server" CommandName="EditarVencimiento"
CssClass="btn btn-circle btn-sm default sig-accion-icono" CausesValidation="false"
ToolTip="Editar fecha de vencimiento" aria-label="Editar fecha de vencimiento"
Visible='<%# MostrarAccion(Container.DataItem, "EditarVencimiento") %>'>
<i class="fa fa-calendar" aria-hidden="true"></i>
</asp:LinkButton>
<asp:PlaceHolder
runat="server"
Visible='<%# MostrarAccion(Container.DataItem, "Descargar") %>'>
<li>
<asp:HyperLink
runat="server"
ToolTip="Descargar"
aria-label="Descargar"
NavigateUrl='<%# UrlDocumento(
ClaveDocumento(Container.DataItem)) %>'>
<i
class="fa fa-download"
aria-hidden="true">
</i>
Descargar
</asp:HyperLink>
</li>
</asp:PlaceHolder>
<asp:PlaceHolder
runat="server"
Visible='<%# MostrarAccion(Container.DataItem, "AdministrarGis") %>'>
<li>
<asp:LinkButton
runat="server"
CommandName="AdministrarGis"
CausesValidation="false"
ToolTip="Administrar GIS"
aria-label="Administrar GIS">
<i
class="fa fa-map-marker"
aria-hidden="true">
</i>
Administrar GIS
</asp:LinkButton>
</li>
</asp:PlaceHolder>
<asp:PlaceHolder
runat="server"
Visible='<%# MostrarAccion(Container.DataItem, "Cargar") %>'>
<li>
<asp:LinkButton
runat="server"
CommandName="Cargar"
CausesValidation="false"
ToolTip="Cargar / renovar"
aria-label="Cargar / renovar">
<i
class="fa fa-upload"
aria-hidden="true">
</i>
Cargar / renovar
</asp:LinkButton>
</li>
</asp:PlaceHolder>
<asp:PlaceHolder
runat="server"
Visible='<%# MostrarAccion(Container.DataItem, "Aprobar") %>'>
<li>
<asp:LinkButton
runat="server"
CommandName="Aprobar"
CausesValidation="false"
ToolTip="Aprobar"
aria-label="Aprobar">
<i
class="fa fa-check"
aria-hidden="true">
</i>
Aprobar
</asp:LinkButton>
</li>
</asp:PlaceHolder>
<asp:PlaceHolder
runat="server"
Visible='<%# MostrarAccion(Container.DataItem, "CancelarDocumento") %>'>
<li>
<asp:LinkButton
runat="server"
CommandName="CancelarDocumento"
CausesValidation="false"
ToolTip="Cancelar documento"
aria-label="Cancelar documento">
<i
class="fa fa-ban"
aria-hidden="true">
</i>
Cancelar documento
</asp:LinkButton>
</li>
</asp:PlaceHolder>
<asp:PlaceHolder
runat="server"
Visible='<%# MostrarAccion(Container.DataItem, "QuitarRequerido") %>'>
<li>
<asp:LinkButton
runat="server"
CommandName="QuitarRequerido"
CausesValidation="false"
ToolTip="Quitar requerido"
aria-label="Quitar requerido">
<i
class="fa fa-times"
aria-hidden="true">
</i>
Quitar requerido
</asp:LinkButton>
</li>
</asp:PlaceHolder>
<asp:PlaceHolder
runat="server"
Visible='<%# MostrarAccion(Container.DataItem, "ActivarRequerido") %>'>
<li>
<asp:LinkButton
runat="server"
CommandName="ActivarRequerido"
CausesValidation="false"
ToolTip="Marcar como requerido"
aria-label="Marcar como requerido">
<i
class="fa fa-check"
aria-hidden="true">
</i>
Marcar como requerido
</asp:LinkButton>
</li>
</asp:PlaceHolder>
<asp:PlaceHolder
runat="server"
Visible='<%# MostrarAccion(Container.DataItem, "EditarVencimiento") %>'>
<li>
<asp:LinkButton
runat="server"
CommandName="EditarVencimiento"
CausesValidation="false"
ToolTip="Editar fecha de vencimiento"
aria-label="Editar fecha de vencimiento">
<i
class="fa fa-calendar"
aria-hidden="true">
</i>
Editar vencimiento
</asp:LinkButton>
</li>
</asp:PlaceHolder>
<asp:PlaceHolder
runat="server"
Visible='<%# MostrarAccion(Container.DataItem, "Eliminar") %>'>
<li>
<asp:LinkButton
runat="server"
CommandName="Eliminar"
CausesValidation="false"
ToolTip="Eliminar"
aria-label="Eliminar"
OnClientClick="return confirm('¿Eliminar la versión vigente? Los trámites que la requieren quedarán pendientes.');">
<i
class="fa fa-trash"
aria-hidden="true">
</i>
Eliminar
</asp:LinkButton>
</li>
</asp:PlaceHolder>
</ul>
</div>
</asp:PlaceHolder>
<asp:LinkButton runat="server" Text="Eliminar" CommandName="Eliminar"
CssClass="btn btn-sm default" CausesValidation="false"
OnClientClick="return confirm('¿Eliminar la versión vigente? Los trámites que la requieren quedarán pendientes.');"
Visible='<%# MostrarAccion(Container.DataItem, "Eliminar") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
<div id="ModalDocumento" runat="server" class="modal fade" tabindex="-1" role="dialog">
<div
id="ModalDocumento"
runat="server"
class="modal fade"
tabindex="-1"
role="dialog">
<div class="modal-dialog">
<asp:UpdatePanel ID="Formulario" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
<asp:UpdatePanel
ID="Formulario"
runat="server"
UpdateMode="Conditional"
ChildrenAsTriggers="true">
<ContentTemplate>
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Cerrar"></button>
<h4><asp:Literal ID="TituloFormulario" runat="server" Mode="Encode" /></h4>
<button
type="button"
class="close"
data-dismiss="modal"
aria-label="Cerrar">
</button>
<h4>
<asp:Literal
ID="TituloFormulario"
runat="server"
Mode="Encode" />
</h4>
</div>
<div class="modal-body">
<asp:Panel ID="CamposSolicitud" runat="server">
<asp:Panel
ID="CamposSolicitud"
runat="server">
<div class="form-group">
<asp:Label runat="server" AssociatedControlID="EtapaSolicitud" Text="Etapa" />
<asp:DropDownList ID="EtapaSolicitud" runat="server" CssClass="form-control select2me"
AutoPostBack="true" OnSelectedIndexChanged="CambiarEtapaSolicitud" />
<asp:Label
runat="server"
AssociatedControlID="EtapaSolicitud"
Text="Etapa" />
<asp:DropDownList
ID="EtapaSolicitud"
runat="server"
CssClass="form-control select2me"
AutoPostBack="true"
OnSelectedIndexChanged="CambiarEtapaSolicitud" />
</div>
<div class="form-group">
<asp:Label runat="server" AssociatedControlID="TramiteSolicitud" Text="Trámite asociado (opcional)" />
<asp:DropDownList ID="TramiteSolicitud" runat="server" CssClass="form-control select2me"
AutoPostBack="true" OnSelectedIndexChanged="CambiarTramiteSolicitud" />
<asp:Label
runat="server"
AssociatedControlID="TramiteSolicitud"
Text="Trámite asociado (opcional)" />
<asp:DropDownList
ID="TramiteSolicitud"
runat="server"
CssClass="form-control select2me"
AutoPostBack="true"
OnSelectedIndexChanged="CambiarTramiteSolicitud" />
</div>
<div class="form-group">
<asp:Label runat="server" AssociatedControlID="TipoDocumentoSolicitud" Text="Tipo de documento" />
<asp:DropDownList ID="TipoDocumentoSolicitud" runat="server" CssClass="form-control select2me" />
<asp:Label
runat="server"
AssociatedControlID="TipoDocumentoSolicitud"
Text="Tipo de documento" />
<asp:DropDownList
ID="TipoDocumentoSolicitud"
runat="server"
CssClass="form-control select2me" />
</div>
<asp:CheckBox ID="TieneVigenciaSolicitud" runat="server" Text="Tiene vigencia" />
<asp:CheckBox
ID="TieneVigenciaSolicitud"
runat="server"
Text="Tiene vigencia" />
</asp:Panel>
<asp:Panel ID="CamposArchivo" runat="server">
<p><asp:Literal ID="ReglasArchivo" runat="server" Mode="Encode" /></p>
<asp:Panel
ID="CamposArchivo"
runat="server">
<p>
<asp:Literal
ID="ReglasArchivo"
runat="server"
Mode="Encode" />
</p>
<div class="form-group">
<label>Archivo</label>
<input id="Archivo" runat="server" type="hidden"
<input
id="Archivo"
runat="server"
type="hidden"
class="ADSdropzoneLocal" />
</div>
<div class="form-group">
<asp:Label runat="server" AssociatedControlID="FechaDocumento" Text="Fecha del documento" />
<asp:TextBox ID="FechaDocumento" runat="server" TextMode="Date" CssClass="form-control" />
</div>
<div class="form-group">
<asp:Label runat="server" AssociatedControlID="FechaVencimiento" Text="Fecha de vencimiento" />
<asp:TextBox ID="FechaVencimiento" runat="server" TextMode="Date" CssClass="form-control" />
</div>
</asp:Panel>
<asp:Panel ID="CamposVencimiento" runat="server">
</div>
<div class="form-group">
<asp:Label runat="server" AssociatedControlID="FechaVencimientoEdicion"
<asp:Label
runat="server"
AssociatedControlID="FechaDocumento"
Text="Fecha del documento" />
<asp:TextBox
ID="FechaDocumento"
runat="server"
TextMode="Date"
CssClass="form-control" />
</div>
<div class="form-group">
<asp:Label
runat="server"
AssociatedControlID="FechaVencimiento"
Text="Fecha de vencimiento" />
<asp:TextBox ID="FechaVencimientoEdicion" runat="server"
TextMode="Date" CssClass="form-control" />
<p class="help-block">Puede dejarla vacía. Si el documento requiere vigencia, deberá capturarla antes de aprobarlo.</p>
<asp:TextBox
ID="FechaVencimiento"
runat="server"
TextMode="Date"
CssClass="form-control" />
</div>
</asp:Panel>
<asp:Panel ID="CamposNota" runat="server">
<asp:Label runat="server" AssociatedControlID="Nota" Text="Nota / motivo" />
<asp:TextBox ID="Nota" runat="server" TextMode="MultiLine" Rows="3" CssClass="form-control" />
<asp:Panel
ID="CamposVencimiento"
runat="server">
<div class="form-group">
<asp:Label
runat="server"
AssociatedControlID="FechaVencimientoEdicion"
Text="Fecha de vencimiento" />
<asp:TextBox
ID="FechaVencimientoEdicion"
runat="server"
TextMode="Date"
CssClass="form-control" />
<p class="help-block">
Puede dejarla vacía. Si el documento requiere vigencia,
deberá capturarla antes de aprobarlo.
</p>
</div>
</asp:Panel>
<asp:Panel
ID="CamposNota"
runat="server">
<asp:Label
runat="server"
AssociatedControlID="Nota"
Text="Nota / motivo" />
<asp:TextBox
ID="Nota"
runat="server"
TextMode="MultiLine"
Rows="3"
CssClass="form-control" />
</asp:Panel>
</div>
<div class="modal-footer">
<button type="button" class="btn default" data-dismiss="modal">Cerrar</button>
<asp:Button ID="GuardarArchivo" runat="server" Text="Guardar archivo" CssClass="btn blue"
CausesValidation="false" OnClick="GuardarCarga" />
<asp:Button ID="GuardarSolicitud" runat="server" Text="Solicitar" CssClass="btn blue"
CausesValidation="false" OnClick="GuardarRequerimiento" />
<asp:Button ID="GuardarVencimiento" runat="server" Text="Guardar vencimiento" CssClass="btn blue"
CausesValidation="false" OnClick="GuardarFechaVencimiento" />
<asp:Button ID="GuardarCancelacion" runat="server" Text="Cancelar documento" CssClass="btn red"
CausesValidation="false" OnClick="CancelarDocumento" />
<button
type="button"
class="btn default"
data-dismiss="modal">
Cerrar
</button>
<asp:Button
ID="GuardarArchivo"
runat="server"
Text="Guardar archivo"
CssClass="btn blue"
CausesValidation="false"
OnClick="GuardarCarga" />
<asp:Button
ID="GuardarSolicitud"
runat="server"
Text="Solicitar"
CssClass="btn blue"
CausesValidation="false"
OnClick="GuardarRequerimiento" />
<asp:Button
ID="GuardarVencimiento"
runat="server"
Text="Guardar vencimiento"
CssClass="btn blue"
CausesValidation="false"
OnClick="GuardarFechaVencimiento" />
<asp:Button
ID="GuardarCancelacion"
runat="server"
Text="Cancelar documento"
CssClass="btn red"
CausesValidation="false"
OnClick="CancelarDocumento" />
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</div>
</div>