Merge branch 'master' of http://192.168.10.111:8383/SIG
This commit is contained in:
@@ -917,7 +917,14 @@ Public Class Timbrado
|
||||
.NumParcialidad = VentaNumParcialidad,
|
||||
.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 {
|
||||
.TrasladooRetencion = drp("Tipo").ToString,
|
||||
.Base = drp("Base").ToString.ToDecimal.RoundSQL,
|
||||
|
||||
@@ -25,6 +25,7 @@ Imports iText.Html2pdf
|
||||
Imports iText.Html2pdf.Resolver.Font
|
||||
Imports iText.Layout.Properties
|
||||
Imports Newtonsoft.Json
|
||||
Imports Stimulsoft.Base.Json.Linq
|
||||
Namespace Extensiones
|
||||
|
||||
#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 MaxFecha As Date = #1/1/9999#
|
||||
Public Const GlobalRowVersion As Integer = 555555
|
||||
Public Const WhatsAppToken As String = "EAAQvTBdnkp4BO51Hmf5PD48NaY3ZC830gUS7WVNNoZAampZCK256UQ68OZCVCcPZCZCMmtW4xZA0PtP8HLRz6ZASufOgqk4A0lOpCi4ZBtWR5ZCpiMZCr9e0PpwUx4lZBW0spGZBM1DcOHQE5DnTmeJ1RISBnzI1i8RbRClLk2xbvNTu4elEXoSaofd96bW2mQ66ddLprSAZDZD"
|
||||
|
||||
|
||||
#Region "PropiedadesEncriptación"
|
||||
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
|
||||
Dim RetornoObj As String = "{}"
|
||||
Dim Retorno As Boolean = False
|
||||
Dim Str As String = My.Computer.FileSystem.ReadAllText($"c:\temp\WSToken.txt")
|
||||
|
||||
Try
|
||||
Dim TokenAutorizacion As String = $"Bearer {Str}"
|
||||
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"))
|
||||
|
||||
@@ -681,6 +683,78 @@ Namespace Extensiones
|
||||
Return Retorno
|
||||
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
|
||||
|
||||
@@ -1513,7 +1513,7 @@ Partial Class Compras_Proveedores
|
||||
GlobalDTCompProveedores(UsuarioActual.CveEmpresa) = 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()
|
||||
End If
|
||||
End If
|
||||
|
||||
@@ -435,7 +435,7 @@
|
||||
</asp:TemplateField>
|
||||
<asp:TemplateField HeaderText="Proveedor">
|
||||
<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>
|
||||
<ItemStyle HorizontalAlign="Left" />
|
||||
</asp:TemplateField>
|
||||
|
||||
@@ -437,6 +437,7 @@
|
||||
}
|
||||
gantt.render();
|
||||
}
|
||||
|
||||
var datosGant = [];
|
||||
function loadGant() {
|
||||
gantt.config.date_format = "%Y-%m-%d %H:%i";
|
||||
|
||||
@@ -129,7 +129,6 @@
|
||||
</div>
|
||||
</ContentTemplate>
|
||||
</asp:UpdatePanel>
|
||||
|
||||
</div>
|
||||
</asp:Content>
|
||||
<asp:Content ID="Content8" ContentPlaceHolderID="JS" runat="Server">
|
||||
|
||||
@@ -192,6 +192,10 @@ Partial Class SessionesActivas
|
||||
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>"
|
||||
|
||||
|
||||
EnviarNotificacionWhatsApp("6621143532", mensaje)
|
||||
|
||||
ClsSisNotificaciones.EnviarAlerta("Aviso", mensaje, RCveUsuario, Tipo:=TipoNotificacion.ToastInformacionB)
|
||||
|
||||
RegistraScript($"$(""#DivMensaje"").modal('hide');console.log('{Decripta(Context.User.Identity.Name)}')")
|
||||
|
||||
@@ -1249,7 +1249,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<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="caption font-green">
|
||||
<i class="icon-pin font-green"></i>
|
||||
@@ -2622,6 +2622,37 @@
|
||||
</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>
|
||||
</ContentTemplate>
|
||||
<Triggers>
|
||||
@@ -3194,7 +3225,6 @@
|
||||
</asp:UpdatePanel>
|
||||
</div>
|
||||
|
||||
|
||||
</asp:Content>
|
||||
<asp:Content ID="Content7" ContentPlaceHolderID="JS" runat="Server">
|
||||
<script src="/Metronic/assets/global/plugins/jquery.pulsate.min.js"></script>
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
Option Strict On
|
||||
|
||||
Imports System.Data
|
||||
Imports System.Net.Http
|
||||
Imports Extensiones
|
||||
Imports Microsoft.Reporting.WebForms
|
||||
|
||||
@@ -470,6 +471,10 @@ Partial Class Sistemas_UsuarioDetalle
|
||||
TrCodigoAcceso.Visible = True
|
||||
End If
|
||||
|
||||
If UsuarioActual.CveRol = 1 Then
|
||||
DivNotificaciones.Visible = True
|
||||
End If
|
||||
|
||||
CargaDatos()
|
||||
InicializaClonarUsuario()
|
||||
InicializaRestricciones()
|
||||
@@ -611,6 +616,7 @@ Partial Class Sistemas_UsuarioDetalle
|
||||
TxtPorcentajeMaximoAutorizacion.Text = ObjUsuario.DtResultados.Rows(0)("PorcentajeMaximoAutorizacion").ToString().ToDecimal().FormatoNumero(2)
|
||||
TxtDiasVencidos.Text = ObjUsuario.DtResultados.Rows(0)("DiasMaximoAutorizacion").ToString()
|
||||
|
||||
TxtTelefono.Text = ObjUsuario.DtResultados.Rows(0)("Celular").ToString()
|
||||
Else
|
||||
Alert("El Usuario Solicitado no existe, Revise su búsqueda.", TipoMensaje.MsgAdvertencia)
|
||||
BtnGuardar.Enabled = False
|
||||
@@ -858,7 +864,7 @@ Partial Class Sistemas_UsuarioDetalle
|
||||
|
||||
'REGISTRA O ACTUALIZA LOS DATOS GENERALES DEL USUARIO
|
||||
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
|
||||
If CveUsuario = -1 Then
|
||||
TieneError = True
|
||||
@@ -870,7 +876,7 @@ Partial Class Sistemas_UsuarioDetalle
|
||||
End If
|
||||
Next
|
||||
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
|
||||
End If
|
||||
|
||||
@@ -5013,4 +5019,82 @@ Partial Class Sistemas_UsuarioDetalle
|
||||
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))
|
||||
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
|
||||
|
||||
@@ -23,7 +23,75 @@
|
||||
width: 100%;
|
||||
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>
|
||||
.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 ID="Content2" ContentPlaceHolderID="E" runat="Server">
|
||||
@@ -287,6 +355,61 @@
|
||||
<%--Calendario Tab--%>
|
||||
<ajax:TabPanel ID="TabGrantt" runat="server" HeaderText="Cronograma">
|
||||
<ContentTemplate>
|
||||
|
||||
<asp:UpdatePanel ID="UPGat" runat="server" UpdateMode="Conditional">
|
||||
<ContentTemplate>
|
||||
|
||||
<div>
|
||||
<div class="gantt-samples-banner_controls_bar controls_bar">
|
||||
|
||||
<strong>Formato: </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> | </span>
|
||||
<strong>Mostrar: </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> | </span>
|
||||
<strong>Mostrar: </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">
|
||||
<ContentTemplate>
|
||||
<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/xy.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>
|
||||
// Create 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
|
||||
eventRender: function (event, element) {
|
||||
element.css({
|
||||
'margin-bottom': '1px',
|
||||
'margin-left': '1px',
|
||||
'margin-bottom': '2px',
|
||||
'margin-left': '2px',
|
||||
'white-space': 'normal', // Permitir el ajuste de texto
|
||||
'height': 'auto', // Ajustar la altura automáticamente
|
||||
'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>
|
||||
|
||||
|
||||
|
||||
@@ -39,9 +39,17 @@ Partial Class RepContratosCalendario
|
||||
End Property
|
||||
|
||||
#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
|
||||
If Not IsPostBack Then
|
||||
RCveEvento = 0
|
||||
txtFechaI.Text = NowADS().FirstDayOfMonth.ToShortDateString()
|
||||
txtFechaF.Text = GetLastDayOfMonth(NowADS()).ToShortDateString()
|
||||
InicializaCombos()
|
||||
@@ -83,16 +91,16 @@ Partial Class RepContratosCalendario
|
||||
Private Sub CargaCronograma(Optional TipoVista As Integer = -1)
|
||||
If DtAvance IsNot Nothing Then
|
||||
|
||||
Dim separator As String = ""
|
||||
Dim str As New StringBuilder()
|
||||
str.AppendLine("datosGant=[")
|
||||
|
||||
|
||||
Dim StrFiltro As String = ""
|
||||
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"})
|
||||
|
||||
'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 jsonCategorias As New JArray()
|
||||
@@ -117,6 +125,16 @@ Partial Class RepContratosCalendario
|
||||
)
|
||||
jsonData.Add(obj)
|
||||
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
|
||||
|
||||
If TipoVista = 1 Then 'solo con viajes
|
||||
@@ -134,11 +152,45 @@ Partial Class RepContratosCalendario
|
||||
Dim FechaF = txtFechaF.Text.ToDateTime()
|
||||
|
||||
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")
|
||||
|
||||
|
||||
str.AppendLine("];loadGant();")
|
||||
RegistraScript(str.ToString())
|
||||
|
||||
UPPGantt.Update()
|
||||
UPGat.Update()
|
||||
End If
|
||||
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()
|
||||
|
||||
RegistraScript("InitCalendar();")
|
||||
|
||||
@@ -292,7 +292,7 @@
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<asp:UpdatePanel runat="server">
|
||||
<asp:UpdatePanel runat="server" >
|
||||
<ContentTemplate>
|
||||
<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"
|
||||
|
||||
@@ -121,16 +121,16 @@ Partial Class Ventas_Promociones
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private Property EmpresaFnc382 As Boolean
|
||||
Private Property EmpresaGrupoDiaz As Boolean
|
||||
Get
|
||||
|
||||
If ViewState("EmpresaFnc382") Is Nothing Then
|
||||
ViewState("EmpresaFnc382") = False
|
||||
If ViewState("EmpresaGrupoDiaz") Is Nothing Then
|
||||
ViewState("EmpresaGrupoDiaz") = False
|
||||
End If
|
||||
Return Boolean.Parse(ViewState("EmpresaFnc382").ToString)
|
||||
Return Boolean.Parse(ViewState("EmpresaGrupoDiaz").ToString)
|
||||
End Get
|
||||
Set(value As Boolean)
|
||||
ViewState("EmpresaFnc382") = value
|
||||
ViewState("EmpresaGrupoDiaz") = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
@@ -157,10 +157,10 @@ Partial Class Ventas_Promociones
|
||||
PorMinMasCostoVentaFnc129 = UsuarioActual.Empresa.Funcionalidad(129).ToDecimal
|
||||
PermisoAutorizPromocionPorcentaje = UsuarioActual.TienePermisoProceso(386)
|
||||
|
||||
EmpresaFnc382 = If(UsuarioActual.Empresa.Funcionalidad(382) = "1", True, False) 'Grupo díaz
|
||||
'EmpresaFnc382 = True ''Para pruebas
|
||||
EmpresaGrupoDiaz = If(UsuarioActual.Empresa.Funcionalidad(382) = "1", True, False) 'Grupo díaz
|
||||
'EmpresaGrupoDiaz = True ''Para pruebas
|
||||
|
||||
If EmpresaFnc382 Then
|
||||
If EmpresaGrupoDiaz Then
|
||||
DVModalClasificacion.Visible = False
|
||||
GvDatos.Columns(6).Visible = True
|
||||
GvDatos.Columns(7).Visible = True
|
||||
@@ -179,8 +179,18 @@ Partial Class Ventas_Promociones
|
||||
|
||||
|
||||
ValidaPromosiones(False)
|
||||
If EmpresaFnc382 AndAlso ChkEstatus.Checked = False AndAlso BloqueadoPromocionPorcentaje AndAlso Not PermisoAutorizPromocionPorcentaje Then
|
||||
ChkEstatus.Enabled = False
|
||||
If EmpresaGrupoDiaz Then
|
||||
|
||||
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
|
||||
|
||||
Else
|
||||
@@ -351,7 +361,7 @@ Partial Class Ventas_Promociones
|
||||
|
||||
Private Sub CargaDTUltimoCosto()
|
||||
|
||||
If EmpresaFnc382 Then
|
||||
If EmpresaGrupoDiaz Then
|
||||
Dim DTPSUltimoCosto = New DataTable
|
||||
|
||||
Dim ObjInv As New ClsInventarios
|
||||
@@ -659,7 +669,7 @@ Partial Class Ventas_Promociones
|
||||
Private Sub ValidaPromosiones(Bloquear As Boolean)
|
||||
|
||||
|
||||
If Not EmpresaFnc382 Then
|
||||
If Not EmpresaGrupoDiaz Then
|
||||
BloqueadoPromocionPorcentaje = False
|
||||
Exit Sub
|
||||
End If
|
||||
@@ -808,6 +818,15 @@ Partial Class Ventas_Promociones
|
||||
|
||||
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)
|
||||
|
||||
Dim CveCliente As Integer = If(DdlClientes.SelectedValue = "", -1, DdlClientes.SelectedValue.ToEntero)
|
||||
@@ -858,8 +877,19 @@ Partial Class Ventas_Promociones
|
||||
|
||||
|
||||
Private Sub ActualizaPromocion()
|
||||
|
||||
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 TieneError As Boolean = False
|
||||
@@ -1079,7 +1109,7 @@ Partial Class Ventas_Promociones
|
||||
TieneError = True
|
||||
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)
|
||||
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()
|
||||
RegistraScript("$('#DivAgregarPlantilla').modal('hide')")
|
||||
|
||||
ValidaPromosiones(True)
|
||||
|
||||
End Sub
|
||||
|
||||
Private Function ValidaDTPlantilla(ByRef DTPlantilla As DataTable) As Boolean
|
||||
|
||||
@@ -24,12 +24,16 @@
|
||||
<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>
|
||||
</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>
|
||||
<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>
|
||||
</ContentTemplate>
|
||||
<Triggers>
|
||||
<asp:PostBackTrigger ControlID="LnkImprimirPedidos" />
|
||||
<asp:PostBackTrigger ControlID="LnkImprimirPedidosExcel" />
|
||||
</Triggers>
|
||||
</asp:UpdatePanel>
|
||||
|
||||
|
||||
@@ -65,6 +65,12 @@ Partial Class Ventas_RepPedidosSTF
|
||||
End Sub
|
||||
|
||||
Protected Sub CargaDatos()
|
||||
LnkImprimirPedidos.Visible = False
|
||||
LnkImprimirPedidosExcel.Visible = False
|
||||
|
||||
|
||||
|
||||
DatosGV = New DataTable
|
||||
|
||||
Dim Opcion As Integer = 1
|
||||
Dim FechaInicio As Date = MinFecha
|
||||
@@ -99,6 +105,7 @@ Partial Class Ventas_RepPedidosSTF
|
||||
GvDatos.DataSource = DatosGV
|
||||
If DatosGV IsNot Nothing AndAlso DatosGV.Rows.Count > 0 Then
|
||||
LnkImprimirPedidos.Visible = True
|
||||
LnkImprimirPedidosExcel.Visible = True
|
||||
End If
|
||||
End If
|
||||
ObjVentas.Dispose()
|
||||
@@ -372,7 +379,15 @@ Partial Class Ventas_RepPedidosSTF
|
||||
End Sub
|
||||
|
||||
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 FechaF As String = txtFechaF.Text
|
||||
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
|
||||
Alert("No hay datos consultados", TipoMensaje.MsgAdvertencia)
|
||||
End If
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
Protected Sub BtnEditarHorariosPedidos_Click(sender As Object, e As EventArgs)
|
||||
Dim objSisEmpresas As New ClsSisEmpresas
|
||||
If objSisEmpresas.UpdateEmpresaFuncionalidad(546, $"{TxtHorarioDe.Text}|{TxtHorarioA.Text}", UsuarioActual.CveEmpresa) Then
|
||||
|
||||
Reference in New Issue
Block a user