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 @@ + <%--0--%> - Fecha - + Fecha + <%--1--%> - Serie/Folio - + Serie/Folio - + <%--2--%> - Folio Fiscal - + Folio Fiscal - + <%--3--%> - Cant. - + Cant. + <%--4--%> - SubTotal - + SubTotal + <%--5--%> - IVA - + IVA + <%--6--%> - IEPS - + IEPS + <%--7--%> - Descuentos - + Descuentos + <%--8--%> + <%--9--%> + <%--10--%> - Total - + Total + <%--11--%> - Moneda - + Moneda - + <%--12--%> - Proveedor - + Proveedor + <%--13--%> - Folio Inv - + Folio Inv + <%--14--%> - Fecha Movimiento - + Fecha Movimiento + <%--15--%> - Observaciones - + Observaciones - + <%--16--%> + + + Descripción + + + + + + <%--17--%> + + + Almacén + + + + + @@ -521,7 +537,9 @@ - + + + diff --git a/Compras/RepComprasDetalle.aspx.vb b/Compras/RepComprasDetalle.aspx.vb index 6a69044fc..db983457b 100644 --- a/Compras/RepComprasDetalle.aspx.vb +++ b/Compras/RepComprasDetalle.aspx.vb @@ -380,7 +380,19 @@ Partial Class Compras_RepComprasDetalle params.Add(New ReportParameter("FechaImpresion", NowADS().ToString)) params.Add(New ReportParameter("AgrupadoPor", $"Agrupado Por: {Grupo}{Proveedor}{Capturo}{FechaIn}{FechaFn}{FechaCIn}{FechaCFn}{Proyecto}{SubProyecto}{TipoGasto}{TipoProveedor}{TipoDocto}")) params.Add(New ReportParameter("LogoPath", If(Imagen.Exists, $"file://{Imagen.FullName}", ""))) - ImprimirPDF("Empresas/Grales/Formatos/RepComprasDetalle.rdlc", DtDatos, params, "ReporteComprasDetalles", Opcion) + + + Dim Archivo As New System.IO.FileInfo(String.Format("{0}Formatos\RepComprasDetalle.rdlc", UsuarioActual.Empresa.Ruta)) + + If Archivo.Exists Then + ImprimirPDF(Archivo.FullName, DtDatos, params, "ReporteComprasDetalles", Opcion) + Else + ImprimirPDF("Empresas/Grales/Formatos/RepComprasDetalle.rdlc", DtDatos, params, "ReporteComprasDetalles", Opcion) + End If + + + + Else Alert("No hay datos consultados", TipoMensaje.MsgAdvertencia) End If @@ -463,6 +475,7 @@ Partial Class Compras_RepComprasDetalle GvDatos.Columns(14).Visible = ChkFecha.Checked GvDatos.Columns(15).Visible = ChkObs.Checked GvDatos.Columns(16).Visible = ChkDescripcion.Checked + GvDatos.Columns(17).Visible = ChkAlmacen.Checked Personalizo = 1 If Personalizo = 1 Then diff --git a/Empresas/186/Formatos/EtiquetaDeRecepcion.rdlc b/Empresas/186/Formatos/EtiquetaDeRecepcion.rdlc index 0b0529c02..66e9b3b1a 100644 --- a/Empresas/186/Formatos/EtiquetaDeRecepcion.rdlc +++ b/Empresas/186/Formatos/EtiquetaDeRecepcion.rdlc @@ -23,9 +23,9 @@ PS 0.14111cm - 2.48778cm - 1.1761cm - 6.93443cm + 2.49661cm + 1.11613cm + 6.06038cm @@ -186,10 +186,10 @@ Embedded Logo FitProportional - 1.5468cm - 8.2016cm + 1.40569cm + 8.55699cm 0.74287cm - 1.52823cm + 1.19402cm 6 + + Embedded + ImagendeWhatsApp20241231alas090549_f3f7f850 + FitProportional + 0.25428cm + 8.55699cm + 1.11613cm + 1.19402cm + 7 + + + + 0.92351in @@ -857,9 +857,9 @@ 1.53162cm - 0.17882cm + 0.14707cm 0cm - 19.11979cm + 21.07279cm 1 @@ -1445,11 +1449,15 @@ - =Fields!Abono.Value + =IIf( + Fields!Abono.Value = 0, + "", + Format(Fields!Abono.Value, "###,###,###.00") +) @@ -1540,14 +1548,17 @@ - + Total - Textbox30 @@ -1569,12 +1580,16 @@ - =Sum(Fields!Cargo.Value) + =IIf( + Fields!Cargo.Value = 0, + "", + Format(Sum(Fields!Cargo.Value), "###,###,###.00") +) @@ -1602,12 +1617,16 @@ - =Sum(Fields!Abono.Value) + =IIf( + Fields!Abono.Value = 0, + "", + Format(Sum(Fields!Abono.Value), "###,###,###.00") +) @@ -1654,9 +1673,9 @@ DsPrePoliza 2.33687cm - 0.18166cm + 0.14991cm 1.17898cm - 19.11695cm + 21.19397cm 5 + + + + + + + =Parameters!FechaFactura.Value + + + + + + + + + + + =Parameters!SerieFolio.Value + + + + + + + + + + + =Parameters!Moneda.Value + + + + + + + + + + + =Parameters!OCVinculada.Value + + + + - - =Parameters!Fecha.Value - - - - - - - - - Folio Factura del Proveedor: - - - - =Parameters!FacturaProveedor.Value - - + + true + true + + + + + Fecha de Entrada: + + + + + + + + + + + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!Fecha.Value + + + + + + + + + =Parameters!Condicion.Value + + + + + + + + + =Parameters!SubTotal.Value + + + + + + + + + =Parameters!IVA.Value + + + + + + + + + =Parameters!Total.Value + + + + + + + + + =Parameters!Saldo.Value + + + + + + + Textbox2 + 2.13642cm + 18.06883cm + 2.87013cm + 3.15103cm + 5 + + =Parameters!CveTipoAlmacen.Value = "19" + + + + 2pt + 2pt + 2pt + 2pt + + - 2.08167cm + 2.34625cm true true @@ -2006,7 +2321,7 @@ 1.1404cm 0.05012cm 0cm - 19.16949cm + 21.20149cm - 2pt - 2pt - 2pt - 2pt @@ -2076,10 +2387,6 @@ - 2pt - 2pt - 2pt - 2pt @@ -2101,7 +2408,7 @@ Textbox12 1.22061cm - 7.7587cm + 8.7112cm 0.44125cm 2.68521cm 3 @@ -2137,7 +2444,7 @@ Textbox18 1.22061cm - 10.44391cm + 11.39641cm 0.44125cm 3.44953cm 4 @@ -2172,7 +2479,7 @@ Textbox3 1.22061cm - 15.59511cm + 17.50011cm 0.38981cm 3.61081cm 5 @@ -2205,7 +2512,7 @@ Textbox29 1.66186cm - 0.12912cm + 0.14991cm 0.41981cm 5.78083cm 6 @@ -2213,17 +2520,13 @@ - 2pt - 2pt - 2pt - 2pt 0.18344cm - 1.19476cm + 1.53738cm 0cm 5.13525cm