This commit is contained in:
2024-10-10 06:16:36 -07:00
15 changed files with 685 additions and 35 deletions

View File

@@ -917,7 +917,14 @@ Public Class Timbrado
.NumParcialidad = VentaNumParcialidad, .NumParcialidad = VentaNumParcialidad,
.ObjetoImpuesto = ObjetoImpuesto} 'If(drr("MetodoPago").ToString = "PUE", 0, drr("NumParcialidad").ToString.ToEntero)} .ObjetoImpuesto = ObjetoImpuesto} 'If(drr("MetodoPago").ToString = "PUE", 0, drr("NumParcialidad").ToString.ToEntero)}
For Each drp As DataRow In dttpagosimpuestos.FiltraParametros(String.Format("FolioFiscal = '{0}'", VentaFolioFiscal.ToLower)).Rows
'dtTempdttpagosimpuestos se esta usando para el caso de que el objeto de impuesto del ps de la venta sea 01 (la consulta por default genera 02)
Dim dtTempdttpagosimpuestos As DataTable = dttpagosimpuestos.FiltraParametros(String.Format("FolioFiscal = '{0}'", VentaFolioFiscal.ToLower))
If dtTempdttpagosimpuestos IsNot Nothing AndAlso doc.ObjetoImpuesto = "02" AndAlso dtTempdttpagosimpuestos.Rows.Count = 0 Then
doc.ObjetoImpuesto = "01"
End If
For Each drp As DataRow In dtTempdttpagosimpuestos.Rows
doc.Impuestos.Add(New CFDIConceptosImpuestos With { doc.Impuestos.Add(New CFDIConceptosImpuestos With {
.TrasladooRetencion = drp("Tipo").ToString, .TrasladooRetencion = drp("Tipo").ToString,
.Base = drp("Base").ToString.ToDecimal.RoundSQL, .Base = drp("Base").ToString.ToDecimal.RoundSQL,

View File

@@ -25,6 +25,7 @@ Imports iText.Html2pdf
Imports iText.Html2pdf.Resolver.Font Imports iText.Html2pdf.Resolver.Font
Imports iText.Layout.Properties Imports iText.Layout.Properties
Imports Newtonsoft.Json Imports Newtonsoft.Json
Imports Stimulsoft.Base.Json.Linq
Namespace Extensiones Namespace Extensiones
#Region "E X T E N S I O N E S" #Region "E X T E N S I O N E S"
@@ -153,6 +154,8 @@ Namespace Extensiones
Public Const MinFecha As Date = #1/1/1900# Public Const MinFecha As Date = #1/1/1900#
Public Const MaxFecha As Date = #1/1/9999# Public Const MaxFecha As Date = #1/1/9999#
Public Const GlobalRowVersion As Integer = 555555 Public Const GlobalRowVersion As Integer = 555555
Public Const WhatsAppToken As String = "EAAQvTBdnkp4BO51Hmf5PD48NaY3ZC830gUS7WVNNoZAampZCK256UQ68OZCVCcPZCZCMmtW4xZA0PtP8HLRz6ZASufOgqk4A0lOpCi4ZBtWR5ZCpiMZCr9e0PpwUx4lZBW0spGZBM1DcOHQE5DnTmeJ1RISBnzI1i8RbRClLk2xbvNTu4elEXoSaofd96bW2mQ66ddLprSAZDZD"
#Region "PropiedadesEncriptación" #Region "PropiedadesEncriptación"
Private _Key() As Byte = {} Private _Key() As Byte = {}
@@ -631,10 +634,9 @@ Namespace Extensiones
Public Function EnviarNotificacionWhatsApp(NumeroTelefono As String, Mensaje As String, Optional NombrePlantilla As String = "") As Boolean Public Function EnviarNotificacionWhatsApp(NumeroTelefono As String, Mensaje As String, Optional NombrePlantilla As String = "") As Boolean
Dim RetornoObj As String = "{}" Dim RetornoObj As String = "{}"
Dim Retorno As Boolean = False Dim Retorno As Boolean = False
Dim Str As String = My.Computer.FileSystem.ReadAllText($"c:\temp\WSToken.txt")
Try Try
Dim TokenAutorizacion As String = $"Bearer {Str}" Dim TokenAutorizacion As String = $"Bearer {WhatsAppToken}"
Using httpClient = New HttpClient() Using httpClient = New HttpClient()
Using request = New HttpRequestMessage(HttpMethod.Post, New Uri("https://graph.facebook.com/v20.0/425866980604901/messages")) Using request = New HttpRequestMessage(HttpMethod.Post, New Uri("https://graph.facebook.com/v20.0/425866980604901/messages"))
@@ -681,6 +683,78 @@ Namespace Extensiones
Return Retorno Return Retorno
End Function End Function
Public Function EnviarNotificacionBienvendiaWhatsApp(NumeroTelefono As String, NombreUsuario As String, Mensaje As String) As Boolean
Dim RetornoObj As String = "{}"
Dim Retorno As Boolean = False
Try
Dim TokenAutorizacion As String = $"Bearer {WhatsAppToken}"
Using httpClient = New HttpClient()
Using request = New HttpRequestMessage(HttpMethod.Post, New Uri("https://graph.facebook.com/v20.0/425866980604901/messages"))
request.Headers.Add("Authorization", TokenAutorizacion)
Dim json = New Newtonsoft.Json.Linq.JObject()
json.Add(New Newtonsoft.Json.Linq.JProperty("messaging_product", "whatsapp"))
json.Add(New Newtonsoft.Json.Linq.JProperty("to", NumeroTelefono))
json.Add(New Newtonsoft.Json.Linq.JProperty("type", "template"))
Dim plantilla As New Newtonsoft.Json.Linq.JObject(
New Newtonsoft.Json.Linq.JProperty("name", "bienvenida"),
New Newtonsoft.Json.Linq.JProperty("language",
New Newtonsoft.Json.Linq.JObject(
New Newtonsoft.Json.Linq.JProperty("code", "es_MX")
)
),
New Newtonsoft.Json.Linq.JProperty("components",
New Newtonsoft.Json.Linq.JArray(
New Newtonsoft.Json.Linq.JObject(
New Newtonsoft.Json.Linq.JProperty("type", "header"),
New Newtonsoft.Json.Linq.JProperty("parameters",
New Newtonsoft.Json.Linq.JArray(
New Newtonsoft.Json.Linq.JObject(
New Newtonsoft.Json.Linq.JProperty("type", "text"),
New Newtonsoft.Json.Linq.JProperty("text", NombreUsuario)
)
)
)
),
New Newtonsoft.Json.Linq.JObject(
New Newtonsoft.Json.Linq.JProperty("type", "body"),
New Newtonsoft.Json.Linq.JProperty("parameters",
New Newtonsoft.Json.Linq.JArray(
New Newtonsoft.Json.Linq.JObject(
New Newtonsoft.Json.Linq.JProperty("type", "text"),
New Newtonsoft.Json.Linq.JProperty("text", Mensaje)
)
)
)
)
)
)
)
json.Add(New Newtonsoft.Json.Linq.JProperty("template", plantilla))
Using content = New StringContent(json.ToString, Encoding.UTF8, "application/json")
request.Content = content
Dim response = httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead).Result
If response.StatusCode = Net.HttpStatusCode.OK Then
RetornoObj = response.Content.ReadAsStringAsync().Result
Retorno = True
End If
End Using
End Using
End Using
Catch ex As Exception
RetornoObj = New Newtonsoft.Json.Linq.JObject(New Newtonsoft.Json.Linq.JProperty("Error", ex.ToString())).ToString()
GuardaLog("Ocurrió un error al enviar la informacion por whatsapp" & ex.Message)
End Try
Return Retorno
End Function
#End Region #End Region

View File

@@ -1513,7 +1513,7 @@ Partial Class Compras_Proveedores
GlobalDTCompProveedores(UsuarioActual.CveEmpresa) = Nothing GlobalDTCompProveedores(UsuarioActual.CveEmpresa) = Nothing
GlobalDTProveedoresCuentas(UsuarioActual.CveEmpresa, -1) = Nothing GlobalDTProveedoresCuentas(UsuarioActual.CveEmpresa, -1) = Nothing
Alert("El Proveedor se guardó correctamente. " & "<br />" & MsgCuentaContable, TipoMensaje.MsgInformacion, If(Request("CveFactura") Is Nothing, "document.location.href=""/Compras/CatProveedores.aspx""", "window.opener.location.href = window.opener.location.href; window.close();")) Alert("El Proveedor se guardó correctamente. " & "<br />" & MsgCuentaContable, TipoMensaje.MsgInformacion, If(Request("CveFactura") Is Nothing, "document.location.href=""/Compras/CatProveedores.aspx""", "if (window.opener && !window.opener.closed) { window.opener.location.href = window.opener.location.href; window.close(); }else{ alert('No se pudo recargar la pestaña origen, recargue manualmente si lo necesita.'); }"))
RecargaGlobalCuentasBancarias() RecargaGlobalCuentasBancarias()
End If End If
End If End If

View File

@@ -435,7 +435,7 @@
</asp:TemplateField> </asp:TemplateField>
<asp:TemplateField HeaderText="Proveedor"> <asp:TemplateField HeaderText="Proveedor">
<ItemTemplate> <ItemTemplate>
<asp:HyperLink ID="HplProveedor" runat="server" CssClass="Texto" Target="_blank" rel="opener" Text='<%# Eval("NombreProveedor") %>'></asp:HyperLink> <asp:HyperLink ID="HplProveedor" runat="server" CssClass="Texto" Target="_blank" Text='<%# Eval("NombreProveedor") %>' rel="opener"></asp:HyperLink>
</ItemTemplate> </ItemTemplate>
<ItemStyle HorizontalAlign="Left" /> <ItemStyle HorizontalAlign="Left" />
</asp:TemplateField> </asp:TemplateField>

View File

@@ -437,6 +437,7 @@
} }
gantt.render(); gantt.render();
} }
var datosGant = []; var datosGant = [];
function loadGant() { function loadGant() {
gantt.config.date_format = "%Y-%m-%d %H:%i"; gantt.config.date_format = "%Y-%m-%d %H:%i";

View File

@@ -129,7 +129,6 @@
</div> </div>
</ContentTemplate> </ContentTemplate>
</asp:UpdatePanel> </asp:UpdatePanel>
</div> </div>
</asp:Content> </asp:Content>
<asp:Content ID="Content8" ContentPlaceHolderID="JS" runat="Server"> <asp:Content ID="Content8" ContentPlaceHolderID="JS" runat="Server">

View File

@@ -192,6 +192,10 @@ Partial Class SessionesActivas
Protected Sub LnkEnviar_Click(sender As Object, e As EventArgs) Protected Sub LnkEnviar_Click(sender As Object, e As EventArgs)
Dim mensaje = TxtMensaje.Text.Trim() + "<br/> <a target='_blank' href='https://www.w3schools.com'>Liga</a>" Dim mensaje = TxtMensaje.Text.Trim() + "<br/> <a target='_blank' href='https://www.w3schools.com'>Liga</a>"
EnviarNotificacionWhatsApp("6621143532", mensaje)
ClsSisNotificaciones.EnviarAlerta("Aviso", mensaje, RCveUsuario, Tipo:=TipoNotificacion.ToastInformacionB) ClsSisNotificaciones.EnviarAlerta("Aviso", mensaje, RCveUsuario, Tipo:=TipoNotificacion.ToastInformacionB)
RegistraScript($"$(""#DivMensaje"").modal('hide');console.log('{Decripta(Context.User.Identity.Name)}')") RegistraScript($"$(""#DivMensaje"").modal('hide');console.log('{Decripta(Context.User.Identity.Name)}')")

View File

@@ -1249,7 +1249,7 @@
</div> </div>
</div> </div>
<div class="col-md-7"> <div class="col-md-7">
<div class="portlet light xspadding bordered" style="display:none!important"> <div class="portlet light xspadding bordered" style="display: none!important">
<div class="portlet-title"> <div class="portlet-title">
<div class="caption font-green"> <div class="caption font-green">
<i class="icon-pin font-green"></i> <i class="icon-pin font-green"></i>
@@ -2622,6 +2622,37 @@
</div> </div>
</div> </div>
</div> </div>
<div class="col-md-4">
<div class="portlet light xspadding bordered " id="DivNotificaciones" runat="server" visible="false">
<div class="portlet-title">
<div class="caption font-green">
<i class="icon-pin font-green"></i>
<span class="caption-subject bold uppercase">Notificaciones</span>
</div>
<div class="actions">
<div class="btn-group">
</div>
</div>
<div class="tools">
<a href="javascript:;" class="collapse" data-original-title="" title=""></a>
<a href="javascript:;" class="fullscreen" data-original-title="" title=""></a>
</div>
</div>
<div class="portlet-body nomarginleftright form-horizontal form-row-sepe formnombottom ">
<table border="0">
<tr>
<td>Celular:</td>
<td>
<asp:TextBox ID="TxtTelefono" TextMode="Phone" CssClass="form-control input-sm" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td colspan="2"> <asp:Button ID="BtnEnviarMensaje" runat="server" Text="Enviar Notificación" class="btn btn-primary" OnClick="BtnEnviarMensaje_Click" /></td>
</tr>
</table>
</div>
</div>
</div>
</div> </div>
</ContentTemplate> </ContentTemplate>
<Triggers> <Triggers>
@@ -3194,7 +3225,6 @@
</asp:UpdatePanel> </asp:UpdatePanel>
</div> </div>
</asp:Content> </asp:Content>
<asp:Content ID="Content7" ContentPlaceHolderID="JS" runat="Server"> <asp:Content ID="Content7" 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>

View File

@@ -2,6 +2,7 @@
Option Strict On Option Strict On
Imports System.Data Imports System.Data
Imports System.Net.Http
Imports Extensiones Imports Extensiones
Imports Microsoft.Reporting.WebForms Imports Microsoft.Reporting.WebForms
@@ -470,6 +471,10 @@ Partial Class Sistemas_UsuarioDetalle
TrCodigoAcceso.Visible = True TrCodigoAcceso.Visible = True
End If End If
If UsuarioActual.CveRol = 1 Then
DivNotificaciones.Visible = True
End If
CargaDatos() CargaDatos()
InicializaClonarUsuario() InicializaClonarUsuario()
InicializaRestricciones() InicializaRestricciones()
@@ -611,6 +616,7 @@ Partial Class Sistemas_UsuarioDetalle
TxtPorcentajeMaximoAutorizacion.Text = ObjUsuario.DtResultados.Rows(0)("PorcentajeMaximoAutorizacion").ToString().ToDecimal().FormatoNumero(2) TxtPorcentajeMaximoAutorizacion.Text = ObjUsuario.DtResultados.Rows(0)("PorcentajeMaximoAutorizacion").ToString().ToDecimal().FormatoNumero(2)
TxtDiasVencidos.Text = ObjUsuario.DtResultados.Rows(0)("DiasMaximoAutorizacion").ToString() TxtDiasVencidos.Text = ObjUsuario.DtResultados.Rows(0)("DiasMaximoAutorizacion").ToString()
TxtTelefono.Text = ObjUsuario.DtResultados.Rows(0)("Celular").ToString()
Else Else
Alert("El Usuario Solicitado no existe, Revise su búsqueda.", TipoMensaje.MsgAdvertencia) Alert("El Usuario Solicitado no existe, Revise su búsqueda.", TipoMensaje.MsgAdvertencia)
BtnGuardar.Enabled = False BtnGuardar.Enabled = False
@@ -858,7 +864,7 @@ Partial Class Sistemas_UsuarioDetalle
'REGISTRA O ACTUALIZA LOS DATOS GENERALES DEL USUARIO 'REGISTRA O ACTUALIZA LOS DATOS GENERALES DEL USUARIO
If CveUsuario = -1 Then If CveUsuario = -1 Then
CveUsuario = ObjUsuarios.AddUsuario(TxtUsuario.Text.Trim, Encripta(ContraseñaPredeterminada), TxtNombre.Text.Trim, DdlRol.SelectedValue.ToEntero, TxtCorreo.Text.Trim, DdlPersonal.SelectedValue.ToEntero, DdlVendedor.SelectedValue.ToEntero, ChkCambiarContraseña.Checked, UsuarioActual.CveUsuario, DdlEmpresa.SelectedValue.ToEntero, DdlSubProyectos.SelectedValue.ToEntero, CveAlmacenAsignado:=DdlAlmacenGeneral.SelectedValue.ToEntero, AsignarSubProyecto:=ChkAsignarSubProyecto.Checked, AsignarOC:=ChkAsignarOC.Checked, DescuentoAutorizado:=TxtDescuentoAutorizado.Text.ToDouble, CodigoAcceso:=CodigoAcceso, LimiteCreditoAutorizado:=TxtLimiteAutorizado.Text.ToDecimal(), PorcentajeMaximoAutorizacion:=TxtPorcentajeMaximoAutorizacion.Text.ToDecimal(), DiasMaximoAutorizacion:=TxtDiasVencidos.Text.ToEntero()) CveUsuario = ObjUsuarios.AddUsuario(TxtUsuario.Text.Trim, Encripta(ContraseñaPredeterminada), TxtNombre.Text.Trim, DdlRol.SelectedValue.ToEntero, TxtCorreo.Text.Trim, DdlPersonal.SelectedValue.ToEntero, DdlVendedor.SelectedValue.ToEntero, ChkCambiarContraseña.Checked, UsuarioActual.CveUsuario, DdlEmpresa.SelectedValue.ToEntero, DdlSubProyectos.SelectedValue.ToEntero, CveAlmacenAsignado:=DdlAlmacenGeneral.SelectedValue.ToEntero, AsignarSubProyecto:=ChkAsignarSubProyecto.Checked, AsignarOC:=ChkAsignarOC.Checked, DescuentoAutorizado:=TxtDescuentoAutorizado.Text.ToDouble, CodigoAcceso:=CodigoAcceso, LimiteCreditoAutorizado:=TxtLimiteAutorizado.Text.ToDecimal(), PorcentajeMaximoAutorizacion:=TxtPorcentajeMaximoAutorizacion.Text.ToDecimal(), DiasMaximoAutorizacion:=TxtDiasVencidos.Text.ToEntero(), Celular:=TxtTelefono.Text.Trim())
EsNuevoUsuario = True EsNuevoUsuario = True
If CveUsuario = -1 Then If CveUsuario = -1 Then
TieneError = True TieneError = True
@@ -870,7 +876,7 @@ Partial Class Sistemas_UsuarioDetalle
End If End If
Next Next
Else Else
If Not ObjUsuarios.UpdateUsuario(TxtUsuario.Text.Trim, TxtNombre.Text.Trim, DdlRol.SelectedValue.ToEntero, TxtCorreo.Text.Trim, DdlPersonal.SelectedValue.ToEntero, DdlVendedor.SelectedValue.ToEntero, ChkCambiarContraseña.Checked, ChkEstatus.Checked, DdlEmpresa.SelectedValue.ToEntero, CveUsuario, DdlAlmacenGeneral.SelectedValue.ToEntero, DdlSubProyectos.SelectedValue.ToEntero, UsuarioActual.CveUsuario, AsignarSubProyecto:=ChkAsignarSubProyecto.Checked, AsignarOC:=ChkAsignarOC.Checked, DescuentoAutorizado:=TxtDescuentoAutorizado.Text.ToDouble, CodigoAcceso:=CodigoAcceso, LimiteCreditoAutorizado:=TxtLimiteAutorizado.Text.ToDecimal(), PorcentajeMaximoAutorizacion:=TxtPorcentajeMaximoAutorizacion.Text.ToDecimal(), DiasMaximoAutorizacion:=TxtDiasVencidos.Text.ToEntero()) Then If Not ObjUsuarios.UpdateUsuario(TxtUsuario.Text.Trim, TxtNombre.Text.Trim, DdlRol.SelectedValue.ToEntero, TxtCorreo.Text.Trim, DdlPersonal.SelectedValue.ToEntero, DdlVendedor.SelectedValue.ToEntero, ChkCambiarContraseña.Checked, ChkEstatus.Checked, DdlEmpresa.SelectedValue.ToEntero, CveUsuario, DdlAlmacenGeneral.SelectedValue.ToEntero, DdlSubProyectos.SelectedValue.ToEntero, UsuarioActual.CveUsuario, AsignarSubProyecto:=ChkAsignarSubProyecto.Checked, AsignarOC:=ChkAsignarOC.Checked, DescuentoAutorizado:=TxtDescuentoAutorizado.Text.ToDouble, CodigoAcceso:=CodigoAcceso, LimiteCreditoAutorizado:=TxtLimiteAutorizado.Text.ToDecimal(), PorcentajeMaximoAutorizacion:=TxtPorcentajeMaximoAutorizacion.Text.ToDecimal(), DiasMaximoAutorizacion:=TxtDiasVencidos.Text.ToEntero(), Celular:=TxtTelefono.Text.Trim()) Then
TieneError = True TieneError = True
End If End If
@@ -5013,4 +5019,82 @@ Partial Class Sistemas_UsuarioDetalle
params.Add(New ReportParameter("LogoPath", If(Imagen.Exists, $"file://{Imagen.FullName}", ""))) params.Add(New ReportParameter("LogoPath", If(Imagen.Exists, $"file://{Imagen.FullName}", "")))
ImprimirPDF("Empresas/Grales/Formatos/BitacoraLogin.rdlc", DtDatos, params, String.Format("BitacoraRegistro-{0}", NowADS().ToDateTime.ToShortDateString)) ImprimirPDF("Empresas/Grales/Formatos/BitacoraLogin.rdlc", DtDatos, params, String.Format("BitacoraRegistro-{0}", NowADS().ToDateTime.ToShortDateString))
End Sub End Sub
Protected Sub BtnEnviarMensaje_Click(sender As Object, e As EventArgs)
EnviarNotificacionBienvendiaWhatsApp($"52{TxtTelefono.Text}", TxtNombre.Text, "\nFavor de responder el mensaje")
Alert("El mensaje se envio correctamente")
End Sub
'Public Function EnviarNotificacionBienvendiaWhatsApp(NumeroTelefono As String, NombreUsuario As String, Mensaje As String) As Boolean
' Dim RetornoObj As String = "{}"
' Dim Retorno As Boolean = False
' Try
' Dim TokenAutorizacion As String = $"Bearer {WhatsAppToken}"
' Using httpClient = New HttpClient()
' Using request = New HttpRequestMessage(HttpMethod.Post, New Uri("https://graph.facebook.com/v20.0/425866980604901/messages"))
' request.Headers.Add("Authorization", TokenAutorizacion)
' Dim json = New Newtonsoft.Json.Linq.JObject()
' json.Add(New Newtonsoft.Json.Linq.JProperty("messaging_product", "whatsapp"))
' json.Add(New Newtonsoft.Json.Linq.JProperty("to", NumeroTelefono))
' json.Add(New Newtonsoft.Json.Linq.JProperty("type", "template"))
' Dim plantilla As New Newtonsoft.Json.Linq.JObject(
' New Newtonsoft.Json.Linq.JProperty("name", "bienvenida"),
' New Newtonsoft.Json.Linq.JProperty("language",
' New Newtonsoft.Json.Linq.JObject(
' New Newtonsoft.Json.Linq.JProperty("code", "es_MX")
' )
' ),
' New Newtonsoft.Json.Linq.JProperty("components",
' New Newtonsoft.Json.Linq.JArray(
' New Newtonsoft.Json.Linq.JObject(
' New Newtonsoft.Json.Linq.JProperty("type", "header"),
' New Newtonsoft.Json.Linq.JProperty("parameters",
' New Newtonsoft.Json.Linq.JArray(
' New Newtonsoft.Json.Linq.JObject(
' New Newtonsoft.Json.Linq.JProperty("type", "text"),
' New Newtonsoft.Json.Linq.JProperty("text", NombreUsuario)
' )
' )
' )
' ),
' New Newtonsoft.Json.Linq.JObject(
' New Newtonsoft.Json.Linq.JProperty("type", "body"),
' New Newtonsoft.Json.Linq.JProperty("parameters",
' New Newtonsoft.Json.Linq.JArray(
' New Newtonsoft.Json.Linq.JObject(
' New Newtonsoft.Json.Linq.JProperty("type", "text"),
' New Newtonsoft.Json.Linq.JProperty("text", Mensaje)
' )
' )
' )
' )
' )
' )
' )
' json.Add(New Newtonsoft.Json.Linq.JProperty("template", plantilla))
' Using content = New StringContent(json.ToString, Encoding.UTF8, "application/json")
' request.Content = content
' Dim response = httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead).Result
' If response.StatusCode = Net.HttpStatusCode.OK Then
' RetornoObj = response.Content.ReadAsStringAsync().Result
' Retorno = True
' End If
' End Using
' End Using
' End Using
' Catch ex As Exception
' RetornoObj = New Newtonsoft.Json.Linq.JObject(New Newtonsoft.Json.Linq.JProperty("Error", ex.ToString())).ToString()
' GuardaLog("Ocurrió un error al enviar la informacion por whatsapp" & ex.Message)
' End Try
' Return Retorno
'End Function
End Class End Class

View File

@@ -23,7 +23,75 @@
width: 100%; width: 100%;
height: 600px; height: 600px;
} }
.fc-month-view .fc-day {
border-left: 4px solid #464646;
border-right: 4px solid #464646
}
.fc-month-view .fc-week {
border-left: 4px solid #464646;
border-right: 4px solid #464646;
border-top: 4px solid #464646;
}
.fc-month-view .fc-row.fc-week.fc-widget-content:last-of-type {
border-bottom: 4px solid #464646!important;
}
</style> </style>
<style>
.btn.newsubpro {
margin-left: 3px;
padding: 2px 4px;
}
</style>
<style>
.gantt-samples-banner_controls_bar.controls_bar {
margin: 0;
//position: absolute;
top: -30px;
width: 100%;
right: 0;
left: 0;
}
.controls_bar {
border-top: 1px solid #bababa;
border-bottom: 1px solid #bababa;
clear: both;
height: 28px;
background: #f1f1f1;
color: #494949;
font-family: Arial, sans-serif;
font-size: 13px;
padding-left: 10px;
line-height: 25px;
}
.gantt-samples-banner_controls_bar.controls_bar, .gantt_scale_line .gantt_scale_cell, .gantt_grid_scale .gantt_grid_head_cell, .gantt_grid_scale .gantt_grid_head_cell a, .gantt_grid_scale .gantt_grid_head_cell a:hover {
background-color: #95a5a6 !important;
color: #FFF !important;
}
.gantt_link_point {
display: none !important; /* Oculta los checkmarks (drag handles) */
}
#gantt_here {
scroll-behavior: smooth; /* Aplica un desplazamiento suave */
overflow-y: auto; /* Asegura que el desplazamiento vertical esté activo */
}
</style>
<link rel="stylesheet" href="/Metronic/assets/global/plugins/dhtmlxgantt/dhtmlxgantt.css" type="text/css">
</asp:Content> </asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="E" runat="Server"> <asp:Content ID="Content2" ContentPlaceHolderID="E" runat="Server">
@@ -287,6 +355,61 @@
<%--Calendario Tab--%> <%--Calendario Tab--%>
<ajax:TabPanel ID="TabGrantt" runat="server" HeaderText="Cronograma"> <ajax:TabPanel ID="TabGrantt" runat="server" HeaderText="Cronograma">
<ContentTemplate> <ContentTemplate>
<asp:UpdatePanel ID="UPGat" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<div>
<div class="gantt-samples-banner_controls_bar controls_bar">
<strong>Formato: &nbsp; </strong>
<label>
<input name="scales" onclick="zoom_tasks(this)" type="radio" value="week">
<span>Horas</span></label>
<label>
<input name="scales" onclick="zoom_tasks(this)" type="radio" value="trplweek" checked="true">
<span>Día</span></label>
<label>
<input name="scales" onclick="zoom_tasks(this)" type="radio" value="year">
<span>Mes</span></label>
<label>
<input name="scales" onclick="zoom_tasks(this)" type="radio" value="yearyear">
<span>año</span></label>
<div id="filter_hours" style="display: none;">
<span>&nbsp; &nbsp; | &nbsp; &nbsp; </span>
<strong>Mostrar: &nbsp; </strong>
<label>
<input name="scales_filter" onclick="set_scale_units(this)" type="radio" value="full_day">
<span>Dia Completo</span>
</label>
<label>
<input name="scales_filter" onclick="set_scale_units(this)" type="radio" value="work_hours">
<span>Horario de Oficina</span>
</label>
</div>
<div id="filter_days" style="">
<span>&nbsp; &nbsp; | &nbsp; &nbsp; </span>
<strong>Mostrar: &nbsp; </strong>
<label>
<input name="scales_filter" onclick="set_scale_units(this)" type="radio" value="full_week">
<span>Semana completa</span>
</label>
<label>
<input name="scales_filter" onclick="set_scale_units(this)" type="radio" value="work_week">
<span>Dias de Trabajo</span>
</label>
</div>
</div>
<div id="gantt_here" style='width: 100%; height: 100vh;'></div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="UPPGantt" runat="server" UpdateMode="Conditional"> <asp:UpdatePanel ID="UPPGantt" runat="server" UpdateMode="Conditional">
<ContentTemplate> <ContentTemplate>
<div class="portlet solid grey-cascade portlet-filter"> <div class="portlet solid grey-cascade portlet-filter">
@@ -560,6 +683,7 @@
<script src="https://cdn.amcharts.com/lib/5/index.js"></script> <script src="https://cdn.amcharts.com/lib/5/index.js"></script>
<script src="https://cdn.amcharts.com/lib/5/xy.js"></script> <script src="https://cdn.amcharts.com/lib/5/xy.js"></script>
<script src="https://cdn.amcharts.com/lib/5/themes/Animated.js"></script> <script src="https://cdn.amcharts.com/lib/5/themes/Animated.js"></script>
<script src="/Metronic/assets/global/plugins/dhtmlxgantt/dhtmlxgantt.js"></script>
<script> <script>
// Create root element // Create root element
// https://www.amcharts.com/docs/v5/getting-started/#Root_element // https://www.amcharts.com/docs/v5/getting-started/#Root_element
@@ -1008,8 +1132,8 @@
slotEventOverlap: false, // No permitir la superposición en vistas de agenda slotEventOverlap: false, // No permitir la superposición en vistas de agenda
eventRender: function (event, element) { eventRender: function (event, element) {
element.css({ element.css({
'margin-bottom': '1px', 'margin-bottom': '2px',
'margin-left': '1px', 'margin-left': '2px',
'white-space': 'normal', // Permitir el ajuste de texto 'white-space': 'normal', // Permitir el ajuste de texto
'height': 'auto', // Ajustar la altura automáticamente 'height': 'auto', // Ajustar la altura automáticamente
'overflow': 'hidden' // Ocultar cualquier desbordamiento 'overflow': 'hidden' // Ocultar cualquier desbordamiento
@@ -1086,6 +1210,230 @@
} }
//Gant
let RCveEvento =<%= RCveEvento %>;
function NuevoEvento(CveEvento) {
$('.txtCveEvento').val(CveEvento);
$('.BtnopenmodalClickGant').click();
}
function zoom_tasks(node) {
switch (node.value) {
case "week":
gantt.config.scale_unit = "day";
gantt.config.date_scale = "%d %M";
gantt.config.scale_height = 60;
gantt.config.min_column_width = 30;
gantt.config.subscales = [
{ unit: "hour", step: 1, date: "%H" }
];
show_scale_options("hour");
break;
case "trplweek":
gantt.config.min_column_width = 70;
gantt.config.scale_unit = "day";
gantt.config.date_scale = "%d %M";
gantt.config.subscales = [];
gantt.config.scale_height = 35;
show_scale_options("day");
break;
case "month":
gantt.config.min_column_width = 70;
gantt.config.scale_unit = "week";
gantt.config.date_scale = "Week #%W";
gantt.config.subscales = [
{ unit: "day", step: 1, date: "%D" }
];
show_scale_options();
gantt.config.scale_height = 60;
break;
case "year":
gantt.config.min_column_width = 70;
gantt.config.scale_unit = "month";
gantt.config.date_scale = "%M";
gantt.config.scale_height = 60;
show_scale_options();
gantt.config.subscales = [
{ unit: "week", step: 1, date: "#%W" }
];
break;
case "yearyear":
gantt.config.min_column_width = 70;
gantt.config.scale_unit = "month";
gantt.config.date_scale = "%y %M";
gantt.config.scale_height = 60;
show_scale_options();
gantt.config.subscales = [
{ unit: "month", step: 1, date: "#%M" }
];
break;
}
set_scale_units();
gantt.render();
}
function show_scale_options(mode) {
var hourConf = document.getElementById("filter_hours"),
dayConf = document.getElementById("filter_days");
if (mode == 'day') {
hourConf.style.display = "none";
dayConf.style.display = "";
dayConf.getElementsByTagName("input")[0].checked = true;
} else if (mode == "hour") {
hourConf.style.display = "";
dayConf.style.display = "none";
hourConf.getElementsByTagName("input")[0].checked = true;
} else {
hourConf.style.display = "none";
dayConf.style.display = "none";
}
}
function set_scale_units(mode) {
if (mode && mode.getAttribute) {
mode = mode.getAttribute("value");
}
switch (mode) {
case "work_hours":
gantt.config.subscales = [
{ unit: "hour", step: 1, date: "%H" }
];
gantt.ignore_time = function (date) {
if (date.getHours() < 9 || date.getHours() > 16) {
return true;
} else {
return false;
}
};
break;
case "full_day":
gantt.config.subscales = [
{ unit: "hour", step: 3, date: "%H" }
];
gantt.ignore_time = null;
break;
case "work_week":
gantt.ignore_time = function (date) {
if (date.getDay() == 0 || date.getDay() == 6) {
return true;
} else {
return false;
}
};
break;
default:
gantt.ignore_time = null;
break;
}
gantt.render();
}
var datosGant = [];
function loadGant() {
gantt.config.date_format = "%Y-%m-%d %H:%i";
gantt.config.order_branch = true;
gantt.i18n.setLocale("es");
gantt.init("gantt_here");
gantt.config.drag_move = false; // Desactiva mover tareas
gantt.config.drag_resize = false; // Desactiva redimensionar tareas
gantt.config.drag_progress = false; // Desactiva mover la barra de progreso
//gantt.config.smart_scales = false;// Desactiva el salto automático entre escalas de tiempo
//gantt.config.scroll_size = 1;
// gantt.config.scroll_on_click = false; // Desactiva el scroll automático al hacer clic
//gantt.config.autosize = "xy";
//gantt.config.smart_rendering = false;
gantt.config.columns = [
//{ name: "text", label: "Contrato ", width: "*", min_width: 150, tree: true, resize: true, template: function (obj) { return "<a href=\"/Transportes/RepContratoDetalle.aspx?CveContrato=" + obj.id + "\" target=\"_Blank\">" + obj.text + " </a>" } },
//{ name: "start_date", label: "Inicio", min_width: 90, align: "center" },
//{ name: "end_date", label: "Fin", min_width: 90, align: "center" }
//{ name: "progress", label: "Avance", align: "center", template: function (obj) { return "" + (obj.progress * 100).toFixed(2) + " %" } },
//{ name: "duration", label: "Duración", align: "center" },
//{ name: "new", label: "<a onclick=\"NuevoEvento(" + RCveEvento + ");\" target=\"_Blank\"><i class='fa fa-plus'></i></a>", align: "center", template: function (obj) { return "<a onclick=\"NuevoEvento(" + obj.id + ");\" target=\"_Blank\"><i class='fa fa-plus'></i> </a>" } }
/*{name:"staff", label:"Holder(s)", template:function(obj){return obj.holder+"("+obj.progress+")"} },*/
//{ name: "add", label: "" }
];
gantt.parse({
data: datosGant
});
// Agregar evento para hover y mostrar tooltip
gantt.attachEvent("onMouseMove", function (id, e) {
if (id) {
var task = gantt.getTask(id);
// Mostrar el tooltip burbuja
var tooltip = document.getElementById("gantt_tooltip");
if (!tooltip) {
tooltip = document.createElement("div");
tooltip.id = "gantt_tooltip";
tooltip.style.position = "absolute";
tooltip.style.backgroundColor = "#fff";
tooltip.style.border = "1px solid #ccc";
tooltip.style.padding = "5px";
tooltip.style.borderRadius = "5px";
tooltip.style.boxShadow = "0 2px 5px rgba(0,0,0,0.2)";
tooltip.style.zIndex = "1000";
document.body.appendChild(tooltip);
}
tooltip.innerHTML = "<b>UNIDAD: </b> " + task.unidad + "<br/><b>CONTRATO: </b> " + task.text +
"<br/><b>DURACIÓN: </b> " + task.duracion;
// Posicionar el tooltip cerca del cursor
tooltip.style.left = (e.pageX + 15) + "px"; // Desplazado un poco a la derecha del cursor
tooltip.style.top = (e.pageY + 15) + "px"; // Desplazado un poco abajo del cursor
tooltip.style.display = "block";
} else {
var tooltip = document.getElementById("gantt_tooltip");
if (tooltip) {
tooltip.style.display = "none";
}
}
});
gantt.attachEvent("onTaskDblClick", function (id, e) {
// Cancelar el comportamiento predeterminado
return false;
});
}
gantt.attachEvent("onBeforeTaskMove", function (id, parent, tindex) {
console.log(tindex)
var task = gantt.getTask(id);
if (task.parent != parent)
return false;
return true;
});
gantt.attachEvent("onRowDragEnd", function (id, target, tindex) {
console.log(tindex)
debugger;
drag_id = null;
gantt.render();
});
gantt.attachEvent("onGanttScroll", function (left, top) {
// var step = 50; // Define cuánto avanzar con cada paso del scroll
//var newTop = top + step; // Incrementa el scroll vertical en 50 píxeles
//gantt.scrollTo(left, newTop); // Establece el nuevo valor de scroll vertical
console.log("Scroll vertical: ", top);
return false; // Previene el scroll predeterminado para que solo se aplique el manual
//return true;
});
loadGant();
</script> </script>

View File

@@ -39,9 +39,17 @@ Partial Class RepContratosCalendario
End Property End Property
#End Region #End Region
Public Property RCveEvento As Integer
Get
Return If(ViewState("RCveEvento") IsNot Nothing, ViewState("RCveEvento").ToString().ToEntero(), 0)
End Get
Set(value As Integer)
ViewState("RCveEvento") = value
End Set
End Property
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then If Not IsPostBack Then
RCveEvento = 0
txtFechaI.Text = NowADS().FirstDayOfMonth.ToShortDateString() txtFechaI.Text = NowADS().FirstDayOfMonth.ToShortDateString()
txtFechaF.Text = GetLastDayOfMonth(NowADS()).ToShortDateString() txtFechaF.Text = GetLastDayOfMonth(NowADS()).ToShortDateString()
InicializaCombos() InicializaCombos()
@@ -83,16 +91,16 @@ Partial Class RepContratosCalendario
Private Sub CargaCronograma(Optional TipoVista As Integer = -1) Private Sub CargaCronograma(Optional TipoVista As Integer = -1)
If DtAvance IsNot Nothing Then If DtAvance IsNot Nothing Then
Dim separator As String = ""
Dim str As New StringBuilder()
str.AppendLine("datosGant=[")
Dim StrFiltro As String = "" Dim StrFiltro As String = ""
If DdlTipoUnidad.SelectedValue.ToEntero > 0 Then StrFiltro = " AND CveTipoActivoFijo = " & DdlTipoUnidad.SelectedValue If DdlTipoUnidad.SelectedValue.ToEntero > 0 Then StrFiltro = " AND CveTipoActivoFijo = " & DdlTipoUnidad.SelectedValue
Dim DtUnidades As DataTable = GlobalDTActivoFijos(UsuarioActual.CveEmpresa).FiltraParametros("Codigo <> '' AND MedidaVehicular IN (2,3) " & StrFiltro, Orderby:=" TipoActivoFijo ASC, CodigoNumeroOrden ASC", DistinctColumns:={"Codigo", "CveActivoFijo"}) Dim DtUnidades As DataTable = GlobalDTActivoFijos(UsuarioActual.CveEmpresa).FiltraParametros("Codigo <> '' AND MedidaVehicular IN (2,3) " & StrFiltro, Orderby:=" TipoActivoFijo ASC, CodigoNumeroOrden ASC", DistinctColumns:={"Codigo", "CveActivoFijo"})
'For Each Row As DataRow In DtAvance.Rows
' If String.IsNullOrEmpty(Row("CodigoAF").ToString()) Then
' Row("CodigoAF") = "Unidad no asignada"
' End If
'Next
Dim jsonData As New JArray() Dim jsonData As New JArray()
Dim jsonCategorias As New JArray() Dim jsonCategorias As New JArray()
@@ -117,6 +125,16 @@ Partial Class RepContratosCalendario
) )
jsonData.Add(obj) jsonData.Add(obj)
strAF.AppendFormat("{0},", Row("CveAF")) strAF.AppendFormat("{0},", Row("CveAF"))
'uniad contrato y duracion
Dim unidad As String = $"{Row("CodigoAF")}-{Row("NombreAF")}"
Dim duracion As String = $"{Row("FechaInicial").ToString.ToDate.ToString("dd/MM/yyyy HH:mm")} - {Row("FechaFinal").ToString.ToDate.ToString("dd/MM/yyyy HH:mm")}"
str.AppendLine(String.Format("{0}{{id: {1}, text: ""{2}"", start_date: ""{3:yyyy/MM/dd HH:mm}"", end_date: ""{4:yyyy/MM/dd HH:mm}"", parent: {5}, progress:{6}, open: true, unidad: ""{7}"",duracion: ""{8}""}}",
separator, Row("CveContrato"), Row("NumeroContrato").ToString().Replace("\\", "\\\\").Replace("""", "\"""), Row("FechaInicial"), Row("FechaFinal"), 0, 100, unidad, duracion))
separator = ","
Next Next
If TipoVista = 1 Then 'solo con viajes If TipoVista = 1 Then 'solo con viajes
@@ -134,11 +152,45 @@ Partial Class RepContratosCalendario
Dim FechaF = txtFechaF.Text.ToDateTime() Dim FechaF = txtFechaF.Text.ToDateTime()
Dim ScriptZoom = $"zoomAxis({FechaI.Year},{FechaI.Month - 1},{FechaI.Day},{FechaF.Year},{FechaF.Month - 1},{FechaF.Day});" Dim ScriptZoom = $"zoomAxis({FechaI.Year},{FechaI.Month - 1},{FechaI.Day},{FechaF.Year},{FechaF.Month - 1},{FechaF.Day});"
RegistraScript($"cargaDiagramaGrant({jsonData.ToString()},{jsonCategorias.ToString()},{TipoVista});{ScriptZoom}", "A1") RegistraScript($"cargaDiagramaGrant({jsonData.ToString()},{jsonCategorias.ToString()},{TipoVista});{ScriptZoom}", "A1")
str.AppendLine("];loadGant();")
RegistraScript(str.ToString())
UPPGantt.Update() UPPGantt.Update()
UPGat.Update()
End If End If
End Sub End Sub
'Public Sub loadEvento()
' Dim separator As String = ""
' Dim str As New StringBuilder()
' str.AppendLine("datosGant=[")
' Using oieve As New ClsOIEventos()
' If oieve.GetEventos2(RCveEvento, UsuarioActual.CveEmpresa) AndAlso oieve.DtResultados.Rows.Count > 0 Then
' Dim drow As System.Data.DataRow = oieve.DtResultados.Rows(0)
' LblAsunto.Text = drow("Asunto").ToString()
' End If
' If oieve.GetTareaConHijos(RCveEvento, UsuarioActual.CveEmpresa) Then
' For Each dr As System.Data.DataRow In oieve.DtResultados.Select("Nivel > 0")
' str.AppendLine(String.Format("{0}{{id: {1}, text: ""{2}"", start_date: ""{3:yyyy/MM/dd}"", end_date: ""{4:yyyy/MM/dd}"", parent: {5}, progress:{6}, open: true }}",
' separator, dr("CveEvento"), dr("Asunto").ToString().Replace("\\", "\\\\").Replace("""", "\"""), dr("FechaInicio"), dr("FechaFin"), If(dr("Nivel").ToString().ToEntero() <= 1, 0, dr("CveEventoPadre").ToString().ToEntero()), dr("Avance").ToString().ToDecimal() / 100))
' separator = ","
' Next
' End If
' End Using
' str.AppendLine("];loadGant();")
' RegistraScript(str.ToString())
' UpContenido.Update()
' ' { id: 2, text: "Direccion: evaluación de mercado", start_date: "2020/04/29 00:00", end_date: "2020/05/02 00:00",/*duration: 3,*/ parent: 1, progress: 0.25 }
'End Sub
Private Sub InicializaCalendar() Private Sub InicializaCalendar()
RegistraScript("InitCalendar();") RegistraScript("InitCalendar();")

View File

@@ -292,7 +292,7 @@
<table width="100%"> <table width="100%">
<tr> <tr>
<td align="center"> <td align="center">
<asp:UpdatePanel runat="server"> <asp:UpdatePanel runat="server" >
<ContentTemplate> <ContentTemplate>
<asp:Button ID="BtnGuardar" Text="Guardar" CssClass="btn btn-primary" ValidationGroup="GrpGuardar" OnClick="BtnGuardar_Click" runat="server" /> <asp:Button ID="BtnGuardar" Text="Guardar" CssClass="btn btn-primary" ValidationGroup="GrpGuardar" OnClick="BtnGuardar_Click" runat="server" />
<asp:Button ID="ButBtnEliminar" Text="Eliminar" CssClass="btn btn-danger" OnClick="BtnEliminar_Click" runat="server" Visible="false" <asp:Button ID="ButBtnEliminar" Text="Eliminar" CssClass="btn btn-danger" OnClick="BtnEliminar_Click" runat="server" Visible="false"

View File

@@ -121,16 +121,16 @@ Partial Class Ventas_Promociones
End Set End Set
End Property End Property
Private Property EmpresaFnc382 As Boolean Private Property EmpresaGrupoDiaz As Boolean
Get Get
If ViewState("EmpresaFnc382") Is Nothing Then If ViewState("EmpresaGrupoDiaz") Is Nothing Then
ViewState("EmpresaFnc382") = False ViewState("EmpresaGrupoDiaz") = False
End If End If
Return Boolean.Parse(ViewState("EmpresaFnc382").ToString) Return Boolean.Parse(ViewState("EmpresaGrupoDiaz").ToString)
End Get End Get
Set(value As Boolean) Set(value As Boolean)
ViewState("EmpresaFnc382") = value ViewState("EmpresaGrupoDiaz") = value
End Set End Set
End Property End Property
@@ -157,10 +157,10 @@ Partial Class Ventas_Promociones
PorMinMasCostoVentaFnc129 = UsuarioActual.Empresa.Funcionalidad(129).ToDecimal PorMinMasCostoVentaFnc129 = UsuarioActual.Empresa.Funcionalidad(129).ToDecimal
PermisoAutorizPromocionPorcentaje = UsuarioActual.TienePermisoProceso(386) PermisoAutorizPromocionPorcentaje = UsuarioActual.TienePermisoProceso(386)
EmpresaFnc382 = If(UsuarioActual.Empresa.Funcionalidad(382) = "1", True, False) 'Grupo díaz EmpresaGrupoDiaz = If(UsuarioActual.Empresa.Funcionalidad(382) = "1", True, False) 'Grupo díaz
'EmpresaFnc382 = True ''Para pruebas 'EmpresaGrupoDiaz = True ''Para pruebas
If EmpresaFnc382 Then If EmpresaGrupoDiaz Then
DVModalClasificacion.Visible = False DVModalClasificacion.Visible = False
GvDatos.Columns(6).Visible = True GvDatos.Columns(6).Visible = True
GvDatos.Columns(7).Visible = True GvDatos.Columns(7).Visible = True
@@ -179,8 +179,18 @@ Partial Class Ventas_Promociones
ValidaPromosiones(False) ValidaPromosiones(False)
If EmpresaFnc382 AndAlso ChkEstatus.Checked = False AndAlso BloqueadoPromocionPorcentaje AndAlso Not PermisoAutorizPromocionPorcentaje Then If EmpresaGrupoDiaz Then
ChkEstatus.Enabled = False
If ChkEstatus.Checked = False AndAlso BloqueadoPromocionPorcentaje AndAlso Not PermisoAutorizPromocionPorcentaje Then
ChkEstatus.Enabled = False
End If
If ChkEstatus.Checked = True And Not PermisoAutorizPromocionPorcentaje Then
BtnGuardar.Visible = False
ButBtnEliminar.Visible = False
'UpBotones.Update()
End If
End If End If
Else Else
@@ -351,7 +361,7 @@ Partial Class Ventas_Promociones
Private Sub CargaDTUltimoCosto() Private Sub CargaDTUltimoCosto()
If EmpresaFnc382 Then If EmpresaGrupoDiaz Then
Dim DTPSUltimoCosto = New DataTable Dim DTPSUltimoCosto = New DataTable
Dim ObjInv As New ClsInventarios Dim ObjInv As New ClsInventarios
@@ -659,7 +669,7 @@ Partial Class Ventas_Promociones
Private Sub ValidaPromosiones(Bloquear As Boolean) Private Sub ValidaPromosiones(Bloquear As Boolean)
If Not EmpresaFnc382 Then If Not EmpresaGrupoDiaz Then
BloqueadoPromocionPorcentaje = False BloqueadoPromocionPorcentaje = False
Exit Sub Exit Sub
End If End If
@@ -808,6 +818,15 @@ Partial Class Ventas_Promociones
Private Sub GuardaPromocion() Private Sub GuardaPromocion()
If EmpresaGrupoDiaz Then
If DdlClientes.SelectedValue.ToEntero <= 0 AndAlso Not PermisoAutorizPromocionPorcentaje Then
Alert("Debe de seleccionar un cliente. Seleccione uno e intente de nuevo.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
End If
ValidaPromosiones(True) ValidaPromosiones(True)
Dim CveCliente As Integer = If(DdlClientes.SelectedValue = "", -1, DdlClientes.SelectedValue.ToEntero) Dim CveCliente As Integer = If(DdlClientes.SelectedValue = "", -1, DdlClientes.SelectedValue.ToEntero)
@@ -858,8 +877,19 @@ Partial Class Ventas_Promociones
Private Sub ActualizaPromocion() Private Sub ActualizaPromocion()
Dim CveCliente As Integer = If(DdlClientes.SelectedValue = "", -1, DdlClientes.SelectedValue.ToEntero) Dim CveCliente As Integer = If(DdlClientes.SelectedValue = "", -1, DdlClientes.SelectedValue.ToEntero)
If EmpresaGrupoDiaz Then
If DdlClientes.SelectedValue.ToEntero <= 0 AndAlso Not PermisoAutorizPromocionPorcentaje Then
Alert("Debe de seleccionar un cliente. Seleccione uno e intente de nuevo.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
End If
Dim ObjVentas As New ClsVentas Dim ObjVentas As New ClsVentas
Dim TieneError As Boolean = False Dim TieneError As Boolean = False
@@ -1079,7 +1109,7 @@ Partial Class Ventas_Promociones
TieneError = True TieneError = True
End If End If
If EmpresaFnc382 AndAlso EstatusOriginal = False AndAlso ChkEstatus.Checked And BloqueadoPromocionPorcentaje Then If EmpresaGrupoDiaz AndAlso EstatusOriginal = False AndAlso ChkEstatus.Checked And BloqueadoPromocionPorcentaje Then
Dim objGeneral As New ClsGenerales(ObjVentas.IniciaTransacSQL) Dim objGeneral As New ClsGenerales(ObjVentas.IniciaTransacSQL)
If Not objGeneral.AddHistorialBitacora(360, -1, -1, -1, -1, -1, -1, -1, "Se Autorizo con bloqueo", "No", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 0, "", "", "", CvePromocion:=CvePromocion) Then If Not objGeneral.AddHistorialBitacora(360, -1, -1, -1, -1, -1, -1, -1, "Se Autorizo con bloqueo", "No", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 0, "", "", "", CvePromocion:=CvePromocion) Then
@@ -1335,6 +1365,8 @@ Partial Class Ventas_Promociones
CargaGrid() CargaGrid()
RegistraScript("$('#DivAgregarPlantilla').modal('hide')") RegistraScript("$('#DivAgregarPlantilla').modal('hide')")
ValidaPromosiones(True)
End Sub End Sub
Private Function ValidaDTPlantilla(ByRef DTPlantilla As DataTable) As Boolean Private Function ValidaDTPlantilla(ByRef DTPlantilla As DataTable) As Boolean

View File

@@ -24,12 +24,16 @@
<li> <li>
<asp:LinkButton ID="LnkImprimirPedidos" runat="server" Visible="false" OnClick="LnkImprimirPedidos_Click"> <i class="fa fa-file-pdf-o" style="font-weight:bold;"></i> Imprimir Pedidos</asp:LinkButton> <asp:LinkButton ID="LnkImprimirPedidos" runat="server" Visible="false" OnClick="LnkImprimirPedidos_Click"> <i class="fa fa-file-pdf-o" style="font-weight:bold;"></i> Imprimir Pedidos</asp:LinkButton>
</li> </li>
<li>
<asp:LinkButton ID="LnkImprimirPedidosExcel" runat="server" Visible="false" OnClick="LnkImprimirPedidosExcel_Click"> <i class="fa fa-file-excel-o" aria-hidden="true" style="font-weight:bold;"></i> Excel Pedidos</asp:LinkButton>
</li>
<li> <li>
<asp:LinkButton runat="server" ID="BtnHorariosPedidos" OnClick="BtnHorariosPedidos_Click" data-toggle="tooltip" data-placement="left" title="Agregar Horario" Text="Horarios de Pedidos"></asp:LinkButton> <asp:LinkButton runat="server" ID="BtnHorariosPedidos" OnClick="BtnHorariosPedidos_Click" data-toggle="tooltip" data-placement="left" title="Agregar Horario" Text="Horarios de Pedidos"></asp:LinkButton>
</li> </li>
</ContentTemplate> </ContentTemplate>
<Triggers> <Triggers>
<asp:PostBackTrigger ControlID="LnkImprimirPedidos" /> <asp:PostBackTrigger ControlID="LnkImprimirPedidos" />
<asp:PostBackTrigger ControlID="LnkImprimirPedidosExcel" />
</Triggers> </Triggers>
</asp:UpdatePanel> </asp:UpdatePanel>

View File

@@ -65,6 +65,12 @@ Partial Class Ventas_RepPedidosSTF
End Sub End Sub
Protected Sub CargaDatos() Protected Sub CargaDatos()
LnkImprimirPedidos.Visible = False
LnkImprimirPedidosExcel.Visible = False
DatosGV = New DataTable
Dim Opcion As Integer = 1 Dim Opcion As Integer = 1
Dim FechaInicio As Date = MinFecha Dim FechaInicio As Date = MinFecha
@@ -99,6 +105,7 @@ Partial Class Ventas_RepPedidosSTF
GvDatos.DataSource = DatosGV GvDatos.DataSource = DatosGV
If DatosGV IsNot Nothing AndAlso DatosGV.Rows.Count > 0 Then If DatosGV IsNot Nothing AndAlso DatosGV.Rows.Count > 0 Then
LnkImprimirPedidos.Visible = True LnkImprimirPedidos.Visible = True
LnkImprimirPedidosExcel.Visible = True
End If End If
End If End If
ObjVentas.Dispose() ObjVentas.Dispose()
@@ -372,7 +379,15 @@ Partial Class Ventas_RepPedidosSTF
End Sub End Sub
Protected Sub LnkImprimirPedidos_Click(sender As Object, e As EventArgs) Protected Sub LnkImprimirPedidos_Click(sender As Object, e As EventArgs)
ImprimirReporte("PDF")
End Sub
Protected Sub LnkImprimirPedidosExcel_Click(sender As Object, e As EventArgs)
ImprimirReporte("Excel")
End Sub
Private Sub ImprimirReporte(Formato As String)
Dim FechaI As String = txtFechaI.Text Dim FechaI As String = txtFechaI.Text
Dim FechaF As String = txtFechaF.Text Dim FechaF As String = txtFechaF.Text
If txtFechaI.Text = "" Then FechaI = "-1" If txtFechaI.Text = "" Then FechaI = "-1"
@@ -408,13 +423,13 @@ Partial Class Ventas_RepPedidosSTF
ImprimirPDF("Empresas/Grales/Formatos/RepPedidos.rdlc", DatosGV, params, "ReportePedidos") ImprimirPDF("Empresas/Grales/Formatos/RepPedidos.rdlc", DatosGV, params, "ReportePedidos", Formato)
Else Else
Alert("No hay datos consultados", TipoMensaje.MsgAdvertencia) Alert("No hay datos consultados", TipoMensaje.MsgAdvertencia)
End If End If
End Sub End Sub
Protected Sub BtnEditarHorariosPedidos_Click(sender As Object, e As EventArgs) Protected Sub BtnEditarHorariosPedidos_Click(sender As Object, e As EventArgs)
Dim objSisEmpresas As New ClsSisEmpresas Dim objSisEmpresas As New ClsSisEmpresas
If objSisEmpresas.UpdateEmpresaFuncionalidad(546, $"{TxtHorarioDe.Text}|{TxtHorarioA.Text}", UsuarioActual.CveEmpresa) Then If objSisEmpresas.UpdateEmpresaFuncionalidad(546, $"{TxtHorarioDe.Text}|{TxtHorarioA.Text}", UsuarioActual.CveEmpresa) Then