Merge branch 'master' of http://192.168.10.111:8383/SIG
This commit is contained in:
@@ -569,7 +569,7 @@ Partial Class Bancos_PagoElectronico
|
|||||||
Header.Append(TipoArchivo.PadRight(2, Space)) 'TIPO ARCHIVO (2)
|
Header.Append(TipoArchivo.PadRight(2, Space)) 'TIPO ARCHIVO (2)
|
||||||
Header.Append("HA") 'TIPO REGISTRO (2)
|
Header.Append("HA") 'TIPO REGISTRO (2)
|
||||||
Header.Append("JDF") 'SISTEMA-CENTRAL (3)
|
Header.Append("JDF") 'SISTEMA-CENTRAL (3)
|
||||||
Header.Append(NumeroConvenio.PadLeft(7, Space)) 'NUMERO DE CONTRATO (7) ' ocupa 5 dígitos pero en el layout se usa 7
|
Header.Append(NumeroConvenio.PadLeft(7, Cero)) 'NUMERO DE CONTRATO (7) ' ocupa 5 dígitos pero en el layout se usa 7
|
||||||
Header.Append(NowADS.ToString("yyyyMMdd")) 'FECHA-SOLICITUD (8)
|
Header.Append(NowADS.ToString("yyyyMMdd")) 'FECHA-SOLICITUD (8)
|
||||||
Header.Append("001") 'SECUENCIA (3)
|
Header.Append("001") 'SECUENCIA (3)
|
||||||
Header.Append("M") 'MANTENIMIENTO-O-CONSULTA (1)
|
Header.Append("M") 'MANTENIMIENTO-O-CONSULTA (1)
|
||||||
@@ -594,7 +594,7 @@ Partial Class Bancos_PagoElectronico
|
|||||||
Dim CuentaDestino As String = ""
|
Dim CuentaDestino As String = ""
|
||||||
Dim cuentaDigitos As String = dr("CLABEDestino").ToString.Trim
|
Dim cuentaDigitos As String = dr("CLABEDestino").ToString.Trim
|
||||||
Dim Clabe As String = dr("CLABE").ToString.Trim
|
Dim Clabe As String = dr("CLABE").ToString.Trim
|
||||||
Dim limite As String = (900000000 * 100D).ToEntero.ToString("F0")
|
Dim limite As String = (9000000000 * 100D).ToString("F0")
|
||||||
Dim banco As String = dr("CveBanco").ToString.PadLeft(3, Cero)
|
Dim banco As String = dr("CveBanco").ToString.PadLeft(3, Cero)
|
||||||
|
|
||||||
If cuentaDigitos.Length = 11 AndAlso banco = "044" Then
|
If cuentaDigitos.Length = 11 AndAlso banco = "044" Then
|
||||||
@@ -672,10 +672,10 @@ Partial Class Bancos_PagoElectronico
|
|||||||
|
|
||||||
trailer.Append(TipoArchivo.PadRight(2, Space)) 'TIPO DE ARCHIVO (2)
|
trailer.Append(TipoArchivo.PadRight(2, Space)) 'TIPO DE ARCHIVO (2)
|
||||||
trailer.Append("TA") 'TIPO DE REGISTRO (2)
|
trailer.Append("TA") 'TIPO DE REGISTRO (2)
|
||||||
trailer.Append(Altas.ToString.PadLeft(8, Space)) 'CANTIDAD DE MOVIMIENTOS ALTAS (8)
|
trailer.Append(Altas.ToString.PadLeft(8, Cero)) 'CANTIDAD DE MOVIMIENTOS ALTAS (8)
|
||||||
trailer.Append(Cambios.ToString.PadLeft(8, Space)) 'CANTIDAD DE MOVIMIENTOS CAMBIOS (8)
|
trailer.Append(Cambios.ToString.PadLeft(8, Cero)) 'CANTIDAD DE MOVIMIENTOS CAMBIOS (8)
|
||||||
trailer.Append(Bajas.ToString.PadLeft(8, Space)) 'CANTIDAD DE MOVIMIENTOS BAJAS (8)
|
trailer.Append(Bajas.ToString.PadLeft(8, Cero)) 'CANTIDAD DE MOVIMIENTOS BAJAS (8)
|
||||||
trailer.Append(Consultas.ToString.PadLeft(8, Space)) 'CANTIDAD DE CONSULTAS (8)
|
trailer.Append(Consultas.ToString.PadLeft(8, Cero)) 'CANTIDAD DE CONSULTAS (8)
|
||||||
'MOVIMIENTOS ACEPTADOS
|
'MOVIMIENTOS ACEPTADOS
|
||||||
trailer.Append("0".PadLeft(8, Cero)) 'CANTIDAD DE MOVIMIENTOS ALTAS (8) *** Respusta de ScotiaBank ***
|
trailer.Append("0".PadLeft(8, Cero)) 'CANTIDAD DE MOVIMIENTOS ALTAS (8) *** Respusta de ScotiaBank ***
|
||||||
trailer.Append("0".PadLeft(8, Cero)) 'CANTIDAD DE MOVIMIENTOS CAMBIOS (8) *** Respusta de ScotiaBank ***
|
trailer.Append("0".PadLeft(8, Cero)) 'CANTIDAD DE MOVIMIENTOS CAMBIOS (8) *** Respusta de ScotiaBank ***
|
||||||
@@ -957,7 +957,7 @@ Partial Class Bancos_PagoElectronico
|
|||||||
da.Append("".PadLeft(34, CERO)) ' 105-138 Uso Futuro
|
da.Append("".PadLeft(34, CERO)) ' 105-138 Uso Futuro
|
||||||
da.Append("".PadLeft(30, SPACE)) ' 139-168 Clave de Rastreo llenar con espacios en blanco
|
da.Append("".PadLeft(30, SPACE)) ' 139-168 Clave de Rastreo llenar con espacios en blanco
|
||||||
da.Append("".PadLeft(20, SPACE)) ' 169-188 Referencia de Abono Banxico
|
da.Append("".PadLeft(20, SPACE)) ' 169-188 Referencia de Abono Banxico
|
||||||
dm.Append("01") ' 189-190 Tipo de Operación anexo G
|
dm.Append(" ") ' 189-190 Tipo de Operación anexo G
|
||||||
da.Append("".PadLeft(232, SPACE)) ' 191-370 FILLER
|
da.Append("".PadLeft(232, SPACE)) ' 191-370 FILLER
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -17690,9 +17690,9 @@ Partial Class Compras_Compras
|
|||||||
Dim NumNoDed As Integer = TmpDT.COUNT("CvePS", "NoDeducible = True ")
|
Dim NumNoDed As Integer = TmpDT.COUNT("CvePS", "NoDeducible = True ")
|
||||||
If NumNoDed > 0 Then GvPS.Columns(13).Visible = True 'visualiza columnas de nodeducibles
|
If NumNoDed > 0 Then GvPS.Columns(13).Visible = True 'visualiza columnas de nodeducibles
|
||||||
|
|
||||||
'If DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV") And CveFactura <= 0 Then
|
If DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV") And CveFactura <= 0 And CveCompra <= 0 Then
|
||||||
' InicializaAplicaNCFact()
|
InicializaAplicaNCFact()
|
||||||
'End If
|
End If
|
||||||
|
|
||||||
End Sub
|
End Sub
|
||||||
Private Sub OriginalesVisible(Accion As Boolean)
|
Private Sub OriginalesVisible(Accion As Boolean)
|
||||||
|
|||||||
@@ -262,12 +262,18 @@
|
|||||||
|
|
||||||
<asp:UpdatePanel ID="UpCuentaDeposito" UpdateMode="Conditional" runat="server">
|
<asp:UpdatePanel ID="UpCuentaDeposito" UpdateMode="Conditional" runat="server">
|
||||||
<ContentTemplate>
|
<ContentTemplate>
|
||||||
<div class="row" id="trCuentaDeposito" runat="server" visible="False">
|
<div class="row" id="trCuentaDeposito" runat="server" visible="false">
|
||||||
<label class="col-md-2 control-label">Cuenta Depósito: </label>
|
<label class="col-md-2 control-label">Cuenta Depósito: </label>
|
||||||
<div class="col-md-10">
|
<div class="col-md-10">
|
||||||
<asp:DropDownList ID="DdlCuentaDeposito" runat="server" DataTextField="CuentaDeposito" DataValueField="CveCuentaDeposito" CssClass="form-control input-sm select2me" Width="400px" AppendDataBoundItems="True"></asp:DropDownList>
|
<asp:DropDownList ID="DdlCuentaDeposito" runat="server" DataTextField="CuentaDeposito" DataValueField="CveCuentaDeposito" CssClass="form-control input-sm select2me" Width="400px" AppendDataBoundItems="True"></asp:DropDownList>
|
||||||
<asp:RequiredFieldValidator ID="RFVCuentaDeposito" runat="server" ControlToValidate="DdlCuentaDeposito" Display="None" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>''Cuenta de Depósito''</b> es necesario, por favor seleccione uno." InitialValue="-1" ValidationGroup="GrpGuardar"></asp:RequiredFieldValidator>
|
|
||||||
<ajax:ValidatorCalloutExtender ID="VCECuentaDeposito" runat="server" HighlightCssClass="vco" TargetControlID="RFVCuentaDeposito" Width="300px"></ajax:ValidatorCalloutExtender>
|
<div runat="server" id="DVValidacionesCuentaDeposito" visible="false">
|
||||||
|
<asp:RequiredFieldValidator ID="RFVCuentaDeposito" runat="server" ControlToValidate="DdlCuentaDeposito" Display="None" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>''Cuenta de Depósito''</b> es necesario, por favor seleccione uno." InitialValue="-1" ValidationGroup="GrpGuardar"></asp:RequiredFieldValidator>
|
||||||
|
<ajax:ValidatorCalloutExtender ID="VCECuentaDeposito" runat="server" HighlightCssClass="vco" TargetControlID="RFVCuentaDeposito" Width="300px"></ajax:ValidatorCalloutExtender>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<%--<asp:ImageButton ID="ImgUpdateCuentaDeposito" ImageUrl="/Imagenes/accept.png" OnClick="ImgUpdateCuentaDeposito_Click" ValidationGroup="GrpGuardar" runat="server" />--%>
|
<%--<asp:ImageButton ID="ImgUpdateCuentaDeposito" ImageUrl="/Imagenes/accept.png" OnClick="ImgUpdateCuentaDeposito_Click" ValidationGroup="GrpGuardar" runat="server" />--%>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -349,43 +349,52 @@ Partial Class Compras_ReembolsosComprobaciones
|
|||||||
DdlCuentaDeposito.SelectedValue = Nothing
|
DdlCuentaDeposito.SelectedValue = Nothing
|
||||||
DdlCuentaDeposito.Items.Clear()
|
DdlCuentaDeposito.Items.Clear()
|
||||||
|
|
||||||
trCuentaDeposito.Visible = False
|
DVValidacionesCuentaDeposito.Visible = False
|
||||||
DdlCuentaDeposito.Enabled = False
|
'trCuentaDeposito.Visible = False
|
||||||
|
'DdlCuentaDeposito.Enabled = False
|
||||||
|
|
||||||
|
|
||||||
Dim CvePersonal As Integer = DdlPersonal.SelectedValue.ToEntero
|
Dim CvePersonal As Integer = DdlPersonal.SelectedValue.ToEntero
|
||||||
|
|
||||||
If CvePersonal > 0 Then
|
If CvePersonal > 0 And DdlTipoPago.SelectedValue.ToEntero = 1 Then
|
||||||
|
|
||||||
If DdlTipoTransaccion.SelectedValue.Contiene("9", "17") Then
|
'If DdlTipoTransaccion.SelectedValue.Contiene("9", "17") Then
|
||||||
|
|
||||||
trCuentaDeposito.Visible = True
|
trCuentaDeposito.Visible = True
|
||||||
DdlCuentaDeposito.Enabled = True
|
DdlCuentaDeposito.Enabled = True
|
||||||
|
|
||||||
Dim Dep As New ClsGenerales
|
Dim Dep As New ClsGenerales
|
||||||
If Dep.GetCuentasDepositos(CvePersonal:=CvePersonal, CveEmpresa:=UsuarioActual.CveEmpresa) Then
|
If Dep.GetCuentasDepositos(CvePersonal:=CvePersonal, CveEmpresa:=UsuarioActual.CveEmpresa) Then
|
||||||
|
|
||||||
If DdlTipoTransaccion.SelectedValue = "9" Then
|
If DdlTipoTransaccion.SelectedValue = "9" Then
|
||||||
DdlCuentaDeposito.DataSource = Dep.DtResultados.FiltraParametros(" EstatusPagoElectronico = 'True'")
|
DdlCuentaDeposito.DataSource = Dep.DtResultados.FiltraParametros(" EstatusPagoElectronico = 'True'")
|
||||||
Else
|
ElseIf DdlTipoTransaccion.SelectedValue = "17" Then
|
||||||
DdlCuentaDeposito.DataSource = Dep.DtResultados.FiltraParametros(" EstatusPagoElectronicoGrupos = 'True'")
|
DdlCuentaDeposito.DataSource = Dep.DtResultados.FiltraParametros(" EstatusPagoElectronicoGrupos = 'True'")
|
||||||
End If
|
Else
|
||||||
|
DdlCuentaDeposito.DataSource = Dep.DtResultados
|
||||||
|
|
||||||
If Dep.DtResultados.Rows.Count > 0 Then
|
|
||||||
|
|
||||||
trCuentaDeposito.Visible = True
|
|
||||||
DdlCuentaDeposito.Items.Insert(0, New ListItem("Seleccione una cuenta", "-1"))
|
|
||||||
|
|
||||||
End If
|
|
||||||
End If
|
End If
|
||||||
|
|
||||||
Dep.Dispose()
|
'If Dep.DtResultados.Rows.Count > 0 Then
|
||||||
DdlCuentaDeposito.DataBind()
|
trCuentaDeposito.Visible = True
|
||||||
|
DdlCuentaDeposito.Items.Insert(0, New ListItem("Seleccione una cuenta", "-1"))
|
||||||
|
'End If
|
||||||
|
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
Dep.Dispose()
|
||||||
|
DdlCuentaDeposito.DataBind()
|
||||||
|
|
||||||
|
|
||||||
|
'End If
|
||||||
|
Else
|
||||||
|
trCuentaDeposito.Visible = False
|
||||||
|
End If
|
||||||
|
|
||||||
|
|
||||||
|
If DdlTipoTransaccion.SelectedValue.ToEntero.Contiene(9, 17) Then
|
||||||
|
DVValidacionesCuentaDeposito.Visible = True
|
||||||
|
Else
|
||||||
|
|
||||||
End If
|
End If
|
||||||
|
|
||||||
UpCuentaDeposito.Update()
|
UpCuentaDeposito.Update()
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.table td, .table th {
|
.table td, .table th {
|
||||||
|
|
||||||
padding: 2px;
|
padding: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -371,7 +372,9 @@
|
|||||||
max-height: 170px;
|
max-height: 170px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#containerC_gvResumenSucursales tr.stickyRow th{
|
||||||
|
white-space:nowrap !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Estilos para el header */
|
/* Estilos para el header */
|
||||||
@@ -405,6 +408,20 @@
|
|||||||
background-color: #f8f9fa !important;
|
background-color: #f8f9fa !important;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.header-flex {
|
||||||
|
display: flex !important;
|
||||||
|
flex-direction: row !important;
|
||||||
|
align-items: center !important;
|
||||||
|
gap: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
element.style {
|
||||||
|
display: flex
|
||||||
|
;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
.gvMaxHeight{
|
.gvMaxHeight{
|
||||||
max-height: 160px;
|
max-height: 160px;
|
||||||
@@ -499,12 +516,12 @@
|
|||||||
|
|
||||||
<asp:TemplateField>
|
<asp:TemplateField>
|
||||||
<HeaderTemplate>
|
<HeaderTemplate>
|
||||||
<div style="display: flex; flex-direction: column; align-items: center;">
|
<div style="display: flex; flex-direction:row !important; flex-wrap: nowrap !important; white-space: nowrap;">
|
||||||
<span>Venta Anual</span>
|
<span>Venta Anual</span>
|
||||||
<div>
|
<input type="checkbox" id="chkVentaAnual" class="header-checkbox" data-field="VentaAnual" style="margin-left: auto;" />
|
||||||
<asp:CheckBox ID="chkVentaAnual" runat="server" CssClass="header-checkbox" data-field="VentaAnual" />
|
<%--<asp:CheckBox ID="chkVentaAnual" runat="server" CssClass="header-checkbox" data-field="VentaAnual" Style="margin-left: auto;" />--%>
|
||||||
<label for="chkVentaAnual">Graficar</label>
|
<label for="chkVentaAnual" style="margin-bottom: 0; margin-left: 4px;">Graficar</label>
|
||||||
</div>
|
<span class="adssigrid-order" style="margin-left: 4px;"></span>
|
||||||
</div>
|
</div>
|
||||||
</HeaderTemplate>
|
</HeaderTemplate>
|
||||||
<ItemTemplate>
|
<ItemTemplate>
|
||||||
@@ -514,7 +531,7 @@
|
|||||||
|
|
||||||
<asp:TemplateField>
|
<asp:TemplateField>
|
||||||
<HeaderTemplate>
|
<HeaderTemplate>
|
||||||
<div style="display: flex; flex-direction: column; align-items: center;">
|
<div style="display: flex; align-items: center;">
|
||||||
<span>Utilidad Anual</span>
|
<span>Utilidad Anual</span>
|
||||||
<div>
|
<div>
|
||||||
<asp:CheckBox ID="chkUtilidadAnual" runat="server" CssClass="header-checkbox" data-field="UtilidadAnual" />
|
<asp:CheckBox ID="chkUtilidadAnual" runat="server" CssClass="header-checkbox" data-field="UtilidadAnual" />
|
||||||
@@ -529,7 +546,7 @@
|
|||||||
|
|
||||||
<asp:TemplateField>
|
<asp:TemplateField>
|
||||||
<HeaderTemplate>
|
<HeaderTemplate>
|
||||||
<div style="display: flex; flex-direction: column; align-items: center;">
|
<div style="display: flex; align-items: center;">
|
||||||
<span>Venta Mensual</span>
|
<span>Venta Mensual</span>
|
||||||
<div>
|
<div>
|
||||||
<asp:CheckBox ID="chkVentaMensual" runat="server" CssClass="header-checkbox" data-field="VentaMensual" />
|
<asp:CheckBox ID="chkVentaMensual" runat="server" CssClass="header-checkbox" data-field="VentaMensual" />
|
||||||
@@ -544,7 +561,7 @@
|
|||||||
|
|
||||||
<asp:TemplateField>
|
<asp:TemplateField>
|
||||||
<HeaderTemplate>
|
<HeaderTemplate>
|
||||||
<div style="display: flex; flex-direction: column; align-items: center;">
|
<div style="display: flex; align-items: center;">
|
||||||
<span>Utilidad Mensual</span>
|
<span>Utilidad Mensual</span>
|
||||||
<div>
|
<div>
|
||||||
<asp:CheckBox ID="chkUtilidadMensual" runat="server" CssClass="header-checkbox" data-field="UtilidadMensual" />
|
<asp:CheckBox ID="chkUtilidadMensual" runat="server" CssClass="header-checkbox" data-field="UtilidadMensual" />
|
||||||
@@ -2390,7 +2407,7 @@
|
|||||||
<span class="caption-subject font-dark bold">Pagos por Proveedor</span>
|
<span class="caption-subject font-dark bold">Pagos por Proveedor</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="portlet-body table-responsive">
|
<div class="portlet-body">
|
||||||
<asp:GridView ID="gvPagosPorProveedor" runat="server"
|
<asp:GridView ID="gvPagosPorProveedor" runat="server"
|
||||||
CssClass="adssigrid-scroll adssigrid-order table table-hover table-light custom-grid"
|
CssClass="adssigrid-scroll adssigrid-order table table-hover table-light custom-grid"
|
||||||
AutoGenerateColumns="false"
|
AutoGenerateColumns="false"
|
||||||
@@ -2483,22 +2500,26 @@
|
|||||||
</asp:Panel>
|
</asp:Panel>
|
||||||
</ContentTemplate>
|
</ContentTemplate>
|
||||||
</asp:UpdatePanel>
|
</asp:UpdatePanel>
|
||||||
<div id="DivModalGrafica" class="modal fade" role="dialog">
|
<div class="modal fade" id="DivModalGrafica" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
|
||||||
<div class="modal-dialog modal-lg">
|
<div class="modal-dialog">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<button type="button" class="close" data-dismiss="modal">×</button>
|
<button type="button" class="close" data-dismiss="modal">×</button>
|
||||||
<h4 class="modal-title" id="modalTitulo">Comparativo de Sucursales</h4>
|
<h4 class="modal-title" id="modalTitulo">Comparativo de Sucursales</h4>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<div id="chartContainer" style="width: 100%; height: 500px;"></div>
|
<asp:DropDownList ID="ddlTipoGrafica" runat="server">
|
||||||
</div>
|
<asp:ListItem Value="line">Líneas</asp:ListItem>
|
||||||
<div class="modal-footer">
|
<asp:ListItem Value="pie">Pastel</asp:ListItem>
|
||||||
<button type="button" class="btn btn-default" data-dismiss="modal">Cerrar</button>
|
</asp:DropDownList>
|
||||||
</div>
|
<div id="chartContainer" style="width: 100%; height: 400px;"></div>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-default" data-dismiss="modal">Cerrar</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</asp:Content>
|
</asp:Content>
|
||||||
<asp:Content ID="Content8" ContentPlaceHolderID="JS" runat="Server">
|
<asp:Content ID="Content8" ContentPlaceHolderID="JS" runat="Server">
|
||||||
<script src="/Metronic/assets/global/plugins/jquery.pulsate.min.js"></script>
|
<script src="/Metronic/assets/global/plugins/jquery.pulsate.min.js"></script>
|
||||||
@@ -2511,13 +2532,57 @@
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$(document).ready(function () {
|
||||||
|
console.log('Document ready - Configurando evento del dropdown');
|
||||||
|
|
||||||
|
// Función para asignar el evento al dropdown
|
||||||
|
function asignarEventoDropdown() {
|
||||||
|
// Buscar el dropdown usando un selector que funcione con WebForms
|
||||||
|
var $ddl = $('[id$="ddlTipoGrafica"]');
|
||||||
|
|
||||||
|
if ($ddl.length === 0) {
|
||||||
|
console.error('ERROR: No se encontró el dropdown con id que termine en ddlTipoGrafica');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('Dropdown encontrado, configurando evento...');
|
||||||
|
console.log('ID real del dropdown:', $ddl.attr('id'));
|
||||||
|
|
||||||
|
// Remover eventos anteriores y agregar el nuevo
|
||||||
|
$ddl.off('change').on('change', function () {
|
||||||
|
console.log('=== CAMBIO EN DROPDOWN ===');
|
||||||
|
console.log('Nuevo valor seleccionado:', $(this).val());
|
||||||
|
|
||||||
|
// Verificar qué función usar según el contexto
|
||||||
|
if ($('table[id$="gvResumenSucursales"]').length > 0) {
|
||||||
|
console.log('Usando generarGraficaSucursales()');
|
||||||
|
generarGraficaSucursales();
|
||||||
|
} else {
|
||||||
|
console.log('Usando generarGrafica() con gridId:', window.lastUsedGridId);
|
||||||
|
if (window.lastUsedGridId) {
|
||||||
|
generarGrafica(window.lastUsedGridId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Asignar evento al cargar la página
|
||||||
|
asignarEventoDropdown();
|
||||||
|
|
||||||
|
// Re-asignar evento después de postbacks de AJAX (si usas UpdatePanel)
|
||||||
|
if (typeof Sys !== "undefined" && Sys.WebForms) {
|
||||||
|
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(asignarEventoDropdown);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
function generarGraficaSucursales() {
|
function generarGraficaSucursales() {
|
||||||
|
|
||||||
// 1) Obtener la tabla completa
|
// 1) Obtener la tabla completa
|
||||||
var $grid = $('table[id$="gvResumenSucursales"]');
|
var $grid = $('table[id$="gvResumenSucursales"]');
|
||||||
|
|
||||||
// 2) Buscar TODOS los checkbox marcados
|
// 2) Buscar TODOS los checkbox marcados
|
||||||
var $checks = $grid.find('input.header-checkbox:checked');
|
var $checks = $grid.find('input.header-checkbox:checked');
|
||||||
|
|
||||||
if ($checks.length === 0) {
|
if ($checks.length === 0) {
|
||||||
alert('Por favor, seleccione al menos una columna para graficar.');
|
alert('Por favor, seleccione al menos una columna para graficar.');
|
||||||
return false;
|
return false;
|
||||||
@@ -2535,20 +2600,16 @@
|
|||||||
var $headerRows = $grid.find('tr').filter(function () {
|
var $headerRows = $grid.find('tr').filter(function () {
|
||||||
return $(this).find('th').length > 1;
|
return $(this).find('th').length > 1;
|
||||||
});
|
});
|
||||||
var $subThs = $headerRows.eq(1).find('th'); // esos 4 <th>
|
var $subThs = $headerRows.eq(1).find('th');
|
||||||
|
|
||||||
// 6) Construir las series
|
// 6) Construir las series
|
||||||
var series = $checks.map(function () {
|
var series = $checks.map(function () {
|
||||||
var $chk = $(this);
|
var $chk = $(this);
|
||||||
var $th = $chk.closest('th');
|
var $th = $chk.closest('th');
|
||||||
// idxSub = posición dentro de los 4 subheaders (0..3)
|
|
||||||
var idxSub = $subThs.index($th);
|
var idxSub = $subThs.index($th);
|
||||||
// +1 porque la columna 0 es "Sucursal"
|
|
||||||
var colIndex = idxSub + 1;
|
var colIndex = idxSub + 1;
|
||||||
// Leer data-field (VentaAnual, UtilidadAnual, etc.) y formatear nombre
|
|
||||||
var field = $chk.data('field');
|
var field = $chk.data('field');
|
||||||
var name = field.replace(/([a-z])([A-Z])/g, '$1 $2');
|
var name = field.replace(/([a-z])([A-Z])/g, '$1 $2');
|
||||||
// Mapear los valores de cada fila para esta columna
|
|
||||||
var data = $dataRows.map(function () {
|
var data = $dataRows.map(function () {
|
||||||
var txt = $(this).find('td').eq(colIndex).text().replace(/,/g, '');
|
var txt = $(this).find('td').eq(colIndex).text().replace(/,/g, '');
|
||||||
return parseFloat(txt) || 0;
|
return parseFloat(txt) || 0;
|
||||||
@@ -2556,38 +2617,90 @@
|
|||||||
return { name: name, data: data };
|
return { name: name, data: data };
|
||||||
}).get();
|
}).get();
|
||||||
|
|
||||||
// 7) Dibujar Highcharts
|
// 7) Obtener el tipo de gráfica seleccionado
|
||||||
Highcharts.chart('chartContainer', {
|
var $ddl = $('[id$="ddlTipoGrafica"]');
|
||||||
chart: { type: 'line' },
|
var tipoGrafica = $ddl.length > 0 ? $ddl.val() : 'line';
|
||||||
|
|
||||||
|
// 8) Configuración base de Highcharts
|
||||||
|
var config = {
|
||||||
title: { text: 'Comparativo por Sucursal' },
|
title: { text: 'Comparativo por Sucursal' },
|
||||||
xAxis: {
|
series: series
|
||||||
|
};
|
||||||
|
|
||||||
|
// 9) Configuración específica para cada tipo de gráfica
|
||||||
|
if (tipoGrafica === 'line') {
|
||||||
|
config.chart = { type: 'line' };
|
||||||
|
config.xAxis = {
|
||||||
categories: categorias,
|
categories: categorias,
|
||||||
title: { text: 'Sucursal' }
|
title: { text: 'Sucursal' }
|
||||||
},
|
};
|
||||||
yAxis: {
|
config.yAxis = {
|
||||||
title: { text: 'Monto' },
|
title: { text: 'Monto' },
|
||||||
labels: {
|
labels: {
|
||||||
formatter: function () {
|
formatter: function () {
|
||||||
return '$' + Highcharts.numberFormat(this.value, 0);
|
return '$' + Highcharts.numberFormat(this.value, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
};
|
||||||
tooltip: {
|
config.tooltip = {
|
||||||
headerFormat: '<b>{series.name}</b><br />',
|
headerFormat: '<b>{series.name}</b><br />',
|
||||||
pointFormat: 'Sucursal: <b>{point.category}</b><br />Valor: <b>${point.y:,.2f}</b>'
|
pointFormat: 'Sucursal: <b>{point.category}</b><br />Valor: <b>${point.y:,.2f}</b>'
|
||||||
},
|
};
|
||||||
plotOptions: {
|
config.plotOptions = { series: { marker: { enabled: true } } };
|
||||||
series: { marker: { enabled: true } }
|
} else if (tipoGrafica === 'pie') {
|
||||||
},
|
config.chart = { type: 'pie' };
|
||||||
series: series
|
config.plotOptions = {
|
||||||
});
|
pie: {
|
||||||
|
allowPointSelect: true,
|
||||||
|
cursor: 'pointer',
|
||||||
|
dataLabels: {
|
||||||
|
enabled: true,
|
||||||
|
format: '<b>{point.name}</b>: {point.percentage:.1f}%'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
config.tooltip = {
|
||||||
|
pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
|
||||||
|
};
|
||||||
|
|
||||||
// 8) Mostrar el modal
|
// Para gráfica de pastel, convertir las series a un formato diferente
|
||||||
$('#DivModalGrafica').modal('show');
|
if (series.length > 0) {
|
||||||
|
var firstSeries = series[0];
|
||||||
|
|
||||||
|
var pieData = categorias.map(function (categoria, index) {
|
||||||
|
return {
|
||||||
|
name: categoria,
|
||||||
|
y: firstSeries.data[index]
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
config.series = [{
|
||||||
|
name: firstSeries.name,
|
||||||
|
colorByPoint: true,
|
||||||
|
data: pieData
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 10) Dibujar Highcharts
|
||||||
|
try {
|
||||||
|
Highcharts.chart('chartContainer', config);
|
||||||
|
console.log('Gráfica creada exitosamente');
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error al crear la gráfica:', error);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 11) Mostrar el modal solo si no está visible
|
||||||
|
if (!$('#DivModalGrafica').hasClass('in') && !$('#DivModalGrafica').is(':visible')) {
|
||||||
|
$('#DivModalGrafica').modal('show');
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function generarGrafica(gridId) {
|
function generarGrafica(gridId) {
|
||||||
|
// Guardar el último grid usado para el evento del dropdown
|
||||||
|
window.lastUsedGridId = gridId;
|
||||||
|
|
||||||
var $grid = $('#' + gridId);
|
var $grid = $('#' + gridId);
|
||||||
|
|
||||||
// Encuentra las filas de encabezado (donde están los checkboxes)
|
// Encuentra las filas de encabezado (donde están los checkboxes)
|
||||||
@@ -2597,6 +2710,7 @@
|
|||||||
|
|
||||||
// Buscar checkboxes marcados
|
// Buscar checkboxes marcados
|
||||||
var $checks = $grid.find('input.header-checkbox:checked');
|
var $checks = $grid.find('input.header-checkbox:checked');
|
||||||
|
|
||||||
if ($checks.length === 0) {
|
if ($checks.length === 0) {
|
||||||
alert('Por favor, seleccione al menos una columna para graficar.');
|
alert('Por favor, seleccione al menos una columna para graficar.');
|
||||||
return false;
|
return false;
|
||||||
@@ -2632,7 +2746,6 @@
|
|||||||
var txt = $(this).find('td').eq(colIndex).text().replace(/,/g, '');
|
var txt = $(this).find('td').eq(colIndex).text().replace(/,/g, '');
|
||||||
return parseFloat(txt) || 0;
|
return parseFloat(txt) || 0;
|
||||||
}).get();
|
}).get();
|
||||||
|
|
||||||
series.push({ name: name, data: data });
|
series.push({ name: name, data: data });
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -2641,37 +2754,90 @@
|
|||||||
var modalTitulo = document.getElementById('modalTitulo');
|
var modalTitulo = document.getElementById('modalTitulo');
|
||||||
if (modalTitulo) modalTitulo.innerText = 'Comparativo: ' + titulo;
|
if (modalTitulo) modalTitulo.innerText = 'Comparativo: ' + titulo;
|
||||||
|
|
||||||
// Dibujar gráfica
|
// Obtener el tipo de gráfica seleccionado
|
||||||
Highcharts.chart('chartContainer', {
|
var $ddl = $('[id$="ddlTipoGrafica"]');
|
||||||
chart: { type: 'line' },
|
var tipoGrafica = $ddl.length > 0 ? $ddl.val() : 'line';
|
||||||
title: { text: titulo }, // Usar el título dinámico
|
|
||||||
xAxis: {
|
// Configuración base de Highcharts
|
||||||
|
var config = {
|
||||||
|
title: { text: titulo },
|
||||||
|
series: series
|
||||||
|
};
|
||||||
|
|
||||||
|
// Configuración específica para cada tipo de gráfica
|
||||||
|
if (tipoGrafica === 'line') {
|
||||||
|
config.chart = { type: 'line' };
|
||||||
|
config.xAxis = {
|
||||||
categories: categorias,
|
categories: categorias,
|
||||||
title: { text: 'Categoría' } // Título genérico para el eje X
|
title: { text: 'Categoría' }
|
||||||
},
|
};
|
||||||
yAxis: {
|
config.yAxis = {
|
||||||
title: { text: 'Monto (MXN)' },
|
title: { text: 'Monto (MXN)' },
|
||||||
labels: {
|
labels: {
|
||||||
formatter: function () {
|
formatter: function () {
|
||||||
return '$' + Highcharts.numberFormat(this.value, 0);
|
return '$' + Highcharts.numberFormat(this.value, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
};
|
||||||
tooltip: {
|
config.tooltip = {
|
||||||
headerFormat: '<b>{series.name}</b><br />',
|
headerFormat: '<b>{series.name}</b><br />',
|
||||||
pointFormat: 'Categoría: <b>{point.category}</b><br />Valor: <b>${point.y:,.2f}</b>'
|
pointFormat: 'Categoría: <b>{point.category}</b><br />Valor: <b>${point.y:,.2f}</b>'
|
||||||
},
|
};
|
||||||
plotOptions: {
|
config.plotOptions = { series: { marker: { enabled: true } } };
|
||||||
series: { marker: { enabled: true } }
|
} else if (tipoGrafica === 'pie') {
|
||||||
},
|
config.chart = { type: 'pie' };
|
||||||
series: series
|
config.plotOptions = {
|
||||||
});
|
pie: {
|
||||||
|
allowPointSelect: true,
|
||||||
|
cursor: 'pointer',
|
||||||
|
dataLabels: {
|
||||||
|
enabled: true,
|
||||||
|
format: '<b>{point.name}</b>: {point.percentage:.1f}%'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
config.tooltip = {
|
||||||
|
pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
|
||||||
|
};
|
||||||
|
|
||||||
|
// Para gráfica de pastel, usar solo la primera serie seleccionada
|
||||||
|
if (series.length > 0) {
|
||||||
|
var firstSeries = series[0];
|
||||||
|
console.log('Primera serie para pastel:', firstSeries);
|
||||||
|
|
||||||
|
var pieData = categorias.map(function (categoria, index) {
|
||||||
|
return {
|
||||||
|
name: categoria,
|
||||||
|
y: firstSeries.data[index]
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log('Datos del pastel:', pieData);
|
||||||
|
|
||||||
|
config.series = [{
|
||||||
|
name: firstSeries.name,
|
||||||
|
colorByPoint: true,
|
||||||
|
data: pieData
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Dibujar gráfica
|
||||||
|
try {
|
||||||
|
Highcharts.chart('chartContainer', config);
|
||||||
|
console.log('Gráfica creada exitosamente');
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error al crear la gráfica:', error);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Mostrar el modal solo si no está visible
|
||||||
|
if (!$('#DivModalGrafica').hasClass('in') && !$('#DivModalGrafica').is(':visible')) {
|
||||||
|
$('#DivModalGrafica').modal('show');
|
||||||
|
}
|
||||||
|
|
||||||
$('#DivModalGrafica').modal('show');
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -381,7 +381,7 @@ Partial Class General_Dashboard
|
|||||||
|
|
||||||
Dim cellSucursal As New TableHeaderCell()
|
Dim cellSucursal As New TableHeaderCell()
|
||||||
cellSucursal.RowSpan = 2
|
cellSucursal.RowSpan = 2
|
||||||
cellSucursal.VerticalAlign = VerticalAlign.Middle
|
'cellSucursal.VerticalAlign = VerticalAlign.Middle
|
||||||
cellSucursal.Controls.Add(New LiteralControl("<span>Sucursal</span> "))
|
cellSucursal.Controls.Add(New LiteralControl("<span>Sucursal</span> "))
|
||||||
Dim hypGrafica As New HyperLink()
|
Dim hypGrafica As New HyperLink()
|
||||||
hypGrafica.NavigateUrl = "javascript:void(0);"
|
hypGrafica.NavigateUrl = "javascript:void(0);"
|
||||||
@@ -393,13 +393,13 @@ Partial Class General_Dashboard
|
|||||||
|
|
||||||
Dim cellAnio As New TableHeaderCell()
|
Dim cellAnio As New TableHeaderCell()
|
||||||
cellAnio.ColumnSpan = 2
|
cellAnio.ColumnSpan = 2
|
||||||
cellAnio.HorizontalAlign = HorizontalAlign.Center
|
'cellAnio.HorizontalAlign = HorizontalAlign.Center
|
||||||
cellAnio.Text = "Año"
|
cellAnio.Text = "Año"
|
||||||
headerRow1.Cells.Add(cellAnio)
|
headerRow1.Cells.Add(cellAnio)
|
||||||
|
|
||||||
Dim cellMes As New TableHeaderCell()
|
Dim cellMes As New TableHeaderCell()
|
||||||
cellMes.ColumnSpan = 2
|
cellMes.ColumnSpan = 2
|
||||||
cellMes.HorizontalAlign = HorizontalAlign.Center
|
'cellMes.HorizontalAlign = HorizontalAlign.Center
|
||||||
cellMes.Text = "Mes"
|
cellMes.Text = "Mes"
|
||||||
headerRow1.Cells.Add(cellMes)
|
headerRow1.Cells.Add(cellMes)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user