diff --git a/App_Code/NotificacionesSQLWatcher.vb b/App_Code/NotificacionesSQLWatcher.vb
new file mode 100644
index 000000000..327dbc656
--- /dev/null
+++ b/App_Code/NotificacionesSQLWatcher.vb
@@ -0,0 +1,73 @@
+Option Explicit On
+Option Strict Off
+Imports System.Data.SqlClient
+Imports ADSNetLibrary.Helpers
+Imports Microsoft.AspNet.SignalR
+
+Public Class NotificacionesSQLWatcher
+ Private _hubContext As IHubContext
+ Public rutadb As String
+ Public Sub New()
+ rutadb = ConfigurationManager.ConnectionStrings("Conexion").ConnectionString
+ ' Obtener el contexto del Hub de SignalR
+ _hubContext = GlobalHost.ConnectionManager.GetHubContext(Of Notificaciones)()
+ End Sub
+
+ ' Iniciar el proceso de escucha de cambios en SQL
+ Public Sub StartWatching()
+ ' Detener y reiniciar SqlDependency para evitar múltiples suscripciones
+ SqlDependency.Stop(rutadb)
+ SqlDependency.Start(rutadb)
+
+ ' Iniciar el proceso de escucha
+ RegisterNotification()
+ End Sub
+
+ ' Método para registrar notificaciones SQL
+ Private Sub RegisterNotification()
+ Using connection As New SqlConnection(rutadb)
+ ' Consulta para detectar cambios recientes
+ Dim command As New SqlCommand(
+ "SELECT CveUsuario, Notificaciones, Fecha FROM NotificacionesUsuarios", connection)
+
+ ' Asociar dependencia SQL a la consulta
+ Dim dependency As New SqlDependency(command)
+ AddHandler dependency.OnChange, AddressOf OnNotificationChange
+
+ connection.Open()
+ command.ExecuteReader()
+ End Using
+ End Sub
+
+ ' Método ejecutado cuando ocurre un cambio en la tabla
+ Private Sub OnNotificationChange(sender As Object, e As SqlNotificationEventArgs)
+ ' Volver a escuchar cambios inmediatamente
+ RegisterNotification()
+
+ ' Enviar notificaciones con los registros actualizados
+ SendNotifications()
+ End Sub
+
+ ' Método para enviar notificaciones solo de los registros actualizados
+ Private Sub SendNotifications()
+ Using connection As New SqlConnection(rutadb)
+ Dim query As String = "SELECT CveUsuario, Notificaciones, Fecha FROM NotificacionesUsuarios WHERE Fecha > DATEADD(MINUTE, -1, GETDATE())"
+ Dim command As New SqlCommand(query, connection)
+
+ connection.Open()
+ Dim reader As SqlDataReader = command.ExecuteReader()
+
+ ' Iterar sobre los registros actualizados y enviar notificaciones
+ While reader.Read()
+ Dim cveUsuario As Integer = reader("CveUsuario").ToString().ToEntero()
+ Dim notificacion As String = reader("Notificaciones").ToString()
+ Dim fecha As String = reader("Fecha").ToString()
+
+ ' Enviar al cliente usando SignalR
+ _hubContext.Clients.Client(Notificaciones.UsuariosConexiones(cveUsuario)).ContadorCampana(notificacion)
+ '_hubContext.Clients.All.broadcastMessage(cveUsuario, notificacion, fecha)
+ End While
+ End Using
+ End Sub
+End Class
+
diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb
index 1f0d383e7..2fe6da977 100644
--- a/Compras/Compras.aspx.vb
+++ b/Compras/Compras.aspx.vb
@@ -5585,6 +5585,9 @@ Partial Class Compras_Compras
Dim listalmacenes As List(Of Integer) = (From cvealmacen In DtInv.AsEnumerable() Where cvealmacen.Field(Of Integer)("cvealmacen") > 0 Select cvealmacen.Field(Of Integer)("cvealmacen")).Distinct().ToList
For Each tcvealmacen As Integer In listalmacenes
+
+ Dim ObsGDiaz As String = If(EsGrupoDiaz, TxtObsFact.Text, "")
+
If GvInv.Rows(indice).FCDropDownList("ddlrecibirinv").SelectedValue = "1" Then
Continue For
End If
@@ -5594,7 +5597,7 @@ Partial Class Compras_Compras
If Not UsuarioActual.Empresa.UsaAC Then fecha = NowADS()
folio = ObjInventario.GetFolioSiguiente(2, UsuarioActual.CveEmpresa)
- cvemovimientoentrada = ObjInventario.AddMovimiento(tcvealmacen, 2, 1, fecha, folio, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompra, -1, -1, -1, TipoCambio:=If(DdlMoneda.SelectedValue.ToEntero = 1, -1, TipoCambioGuardar), Modulo:="Comp/G4")
+ cvemovimientoentrada = ObjInventario.AddMovimiento(tcvealmacen, 2, 1, fecha, folio, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompra, -1, -1, -1, TipoCambio:=If(DdlMoneda.SelectedValue.ToEntero = 1, -1, TipoCambioGuardar), Modulo:="Comp/G4", Observaciones:=ObsGDiaz)
If cvemovimientoentrada <= 0 Then
ErrorMovInv = True
Exit For
@@ -5618,7 +5621,7 @@ Partial Class Compras_Compras
'agregamos la salida
folio = ObjInventario.GetFolioSiguiente(3, UsuarioActual.CveEmpresa)
- cvemovimientosalidagasto = ObjInventario.AddMovimiento(tcvealmacen, 3, DdlMoneda.SelectedValue.ToEntero, fecha.AddSeconds(1), folio, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompra, -1, -1, -1, Modulo:="Comp/G3")
+ cvemovimientosalidagasto = ObjInventario.AddMovimiento(tcvealmacen, 3, DdlMoneda.SelectedValue.ToEntero, fecha.AddSeconds(1), folio, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompra, -1, -1, -1, Modulo:="Comp/G3", Observaciones:=ObsGDiaz)
If cvemovimientosalidagasto <= 0 Then
ErrorMovInv = True
Exit For
@@ -5684,6 +5687,8 @@ Partial Class Compras_Compras
If (DdlTipoComprobante.SelectedValue = "Fac" AndAlso CveCompraRefacturacion <= 0) OrElse CveConceptoMovimiento = 13 Then
+ Dim ObsGDiaz As String = If(EsGrupoDiaz, TxtObsFact.Text, "")
+
For Each tCveAlmacen As Integer In ListAlmacenes
If GvInv.Rows(indice).FCDropDownList("DdlRecibirInv").SelectedValue = "1" Then
Continue For
@@ -5693,7 +5698,7 @@ Partial Class Compras_Compras
Dim fecha As Date = TxtFecha.Text.ToDate
If Not UsuarioActual.Empresa.UsaAC Then fecha = NowADS()
- CveMovimientoInventario = ObjInventario.AddMovimiento(tCveAlmacen, CveConceptoMovimiento, 1, fecha, 0, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompra, -1, -1, -1, TipoCambio:=If(DdlMoneda.SelectedValue.ToEntero = 1, -1, TipoCambioGuardar), CveFolioGarantia:=tCveFolioGarantia, Modulo:="Comp/G2", CveEntregaAlmacen:=tCveEntregaAlmacen)
+ CveMovimientoInventario = ObjInventario.AddMovimiento(tCveAlmacen, CveConceptoMovimiento, 1, fecha, 0, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCompra, -1, -1, -1, TipoCambio:=If(DdlMoneda.SelectedValue.ToEntero = 1, -1, TipoCambioGuardar), CveFolioGarantia:=tCveFolioGarantia, Modulo:="Comp/G2", CveEntregaAlmacen:=tCveEntregaAlmacen, Observaciones:=ObsGDiaz)
If CveMovimientoInventario <= 0 Then
ErrorMovInv = True
diff --git a/Compras/PopUpVerFactura.aspx.vb b/Compras/PopUpVerFactura.aspx.vb
index dfba54f77..4ca329ed2 100644
--- a/Compras/PopUpVerFactura.aspx.vb
+++ b/Compras/PopUpVerFactura.aspx.vb
@@ -3097,11 +3097,9 @@ Partial Class PopUpVerFactura
params.Add(New ReportParameter("Folio", Folio))
params.Add(New ReportParameter("FacturaProveedor", If(CveCompra > 0, dr("SerieFolio").ToString, "")))
- If UsuarioActual.CveEmpresa.Contiene(72, 80) Then
- params.Add(New ReportParameter("Fecha", String.Format("{0} {1}", FechaHora.ToDate.ToString("yyyy-MM-dd"), FechaHora.ToDateTime.ToString("HH:mm:ss"))))
- Else
- params.Add(New ReportParameter("Fecha", Fecha))
- End If
+
+ params.Add(New ReportParameter("Fecha", String.Format("{0} {1}", FechaHora.ToDate.ToString("dd/MM/yyyy"), FechaHora.ToDateTime.ToString("HH:mm:ss"))))
+
If UsuarioActual.CveEmpresa = 72 Then
params.Add(New ReportParameter("CveTipoAlmacen", CveTipoAlmacen.ToString()))
@@ -3125,10 +3123,19 @@ Partial Class PopUpVerFactura
params.Add(New ReportParameter("TelefonoProveedor", If(CveCompra > 0, dr("Telefono").ToString, "")))
params.Add(New ReportParameter("ContactoProveedor", If(CveCompra > 0, dr("ContactoNombre").ToString, "")))
params.Add(New ReportParameter("ImporteLetra", String.Format("({0})", DtMovimientos.SUM("Total").ToString.ToDecimal.Texto2Letras(CveMoneda).ToUpper)))
- params.Add(New ReportParameter("SubTotal", If(CveCompra > 0, (dr("SubTotal").ToString.ToDouble).FormatoNumero, "")))
+ params.Add(New ReportParameter("SubTotal", If(CveCompra > 0, (dr("SubTotal").ToString.ToDouble - dr("Descuentos").ToString.ToDouble).FormatoNumero(2), "")))
params.Add(New ReportParameter("Descuentos", If(CveCompra > 0, (dr("Descuentos").ToString.ToDouble).FormatoNumero(2), "")))
params.Add(New ReportParameter("IVA", If(CveCompra > 0, (dr("IVA").ToString.ToDouble).FormatoNumero, "")))
params.Add(New ReportParameter("Total", If(CveCompra > 0, (dr("Total").ToString.ToDouble).FormatoNumero, "")))
+
+ params.Add(New ReportParameter("FechaFactura", If(CveCompra > 0, dr("Fecha").ToString.ToDate().ToString("dd/MM/yyyy"), "")))
+ params.Add(New ReportParameter("SerieFolio", If(CveCompra > 0, dr("SerieFolio").ToString, "")))
+ params.Add(New ReportParameter("Moneda", If(CveCompra > 0, dr("Moneda").ToString, "")))
+
+ params.Add(New ReportParameter("Condicion", If(CveCompra > 0, (((dr("FechaVencimiento").ToString.ToDate - dr("Fecha").ToString.ToDate)).TotalDays).ToString, "")))
+
+ params.Add(New ReportParameter("Saldo", If(CveCompra > 0, dr("Saldo").ToString.ToDouble.FormatoNumero(2), "")))
+
params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Usuario))
params.Add(New ReportParameter("NombreEntrego", String.Format("REVISÓ ALMACÉN{0}{1}", vbCrLf, Recibio)))
params.Add(New ReportParameter("NombreRecibio", String.Format("RECIBIÓ ALMACÉN{0}{1}", vbCrLf, Recibio)))
diff --git a/Compras/RepComprasDetalle.aspx b/Compras/RepComprasDetalle.aspx
index 4765f5ede..9173f4f06 100644
--- a/Compras/RepComprasDetalle.aspx
+++ b/Compras/RepComprasDetalle.aspx
@@ -302,138 +302,154 @@