Files
SanchoToro/GestionGrupoSanchoToro/Comun.vb
2026-01-23 12:45:41 +01:00

411 lines
20 KiB
VB.net

Imports bdGrupoSanchoToro
Imports bdGrupoSanchoToro.db
Imports bdGrupoSanchoToro.db.Utilidades
Imports DevExpress.Xpf.Docking
Imports DevExpress.XtraReports.UI
Imports System.IO
Imports DevExpress.Xpf.Printing
Imports DevExpress.Xpf.Core
Imports tsWPFCore
Imports tsUtilidades
Imports System.Data.Entity
Imports DevExpress.Xpf.Editors
'TODO No permitir 2 facturas rápidas al mismo tiempo
'TODO Traspaso a otra caja
'TODO Seleccion cajas en conciliación bancaria
Public Class Comun
Friend Shared OtrosParametros As String = ""
Public Shared Property dwi As DXWindow
Public Shared Property dg As DocumentGroup
Public Shared Sub EscalaVentana(ByRef Ventana As Window, ByRef tr As Transform)
If UsuarioActual.Escala.HasValue AndAlso UsuarioActual.Escala Then
Ventana.Height = Math.Min(Comun.dwi.Height, Ventana.Height * UsuarioActual.Escala.Value)
Ventana.Width = Math.Min(Comun.dwi.Width, Ventana.Width * UsuarioActual.Escala.Value)
Dim scaler = TryCast(tr, ScaleTransform)
If scaler Is Nothing Then
scaler = New ScaleTransform(1.0, 1.0)
tr = scaler
End If
scaler.ScaleX = UsuarioActual.Escala.Value
scaler.ScaleY = UsuarioActual.Escala.Value
scaler.BeginAnimation(ScaleTransform.ScaleXProperty, Nothing)
scaler.BeginAnimation(ScaleTransform.ScaleYProperty, Nothing)
End If
End Sub
Public Shared Function ObtienePermisos(bd As tscGrupoSanchoToro, Codigo As String, idUsuario As Integer) As tsUtilidades.Permisos
Dim per As New tsUtilidades.Permisos
If bd.usuarios.First(Function(x) x.idUsuario = bdGrupoSanchoToro.db.Utilidades.idUsuario).idGrupoNavigation.Descripcion = "SUPERADMINISTRADORES" Then
per.Consultar = True
per.Eliminar = True
per.Nuevos = True
per.Otros = True
per.Modificar = True
per.Impresion = True
per.Exportar = True
Else
Dim au = (From a In bd.autorizacionesusuarios Select a Where a.idPermisoNavigation.CodigoPermiso = Codigo AndAlso a.idUsuario = bdGrupoSanchoToro.db.Utilidades.idUsuario)
If au.Count = 0 Then
Dim idGrupo As Integer = (From u In bd.usuarios Select u Where u.idUsuario = bdGrupoSanchoToro.db.Utilidades.idUsuario).First.idGrupo.Value
Dim ag = (From g In bd.autorizacionesgrupos Select g Where g.idPermisoNavigation.CodigoPermiso = Codigo AndAlso g.idGrupo = idGrupo)
If ag.Count = 0 Then
per.Consultar = False
per.Eliminar = False
per.Nuevos = False
per.Otros = False
per.Modificar = False
per.Impresion = False
per.Exportar = False
Else
per.Consultar = ag.First.PermitirConsultas
per.Eliminar = ag.First.PermitirEliminaciones
per.Nuevos = ag.First.PermitirNuevos
per.Otros = ag.First.OtrosPermisos
per.Modificar = ag.First.PermitirModificaciones
per.Impresion = ag.First.PermitirImpresiones
per.Exportar = ag.First.PermitirImpresiones
End If
Else
per.Consultar = au.First.PermitirConsultas
per.Eliminar = au.First.PermitirEliminaciones
per.Nuevos = au.First.PermitirNuevos
per.Otros = au.First.OtrosPermisos
per.Modificar = au.First.PermitirModificaciones
per.Impresion = au.First.PermitirImpresiones
per.Exportar = au.First.PermitirExportar
End If
End If
'If Not bdga.DataBase.ToLower.Contains("GrupoSanchoToro") AndAlso Not bdga.DataBase.ToLower.Contains("desarrollo") AndAlso Not bdga.DataBase.ToLower.Contains("viernes") Then
' per.Modificar = False
' per.Nuevos = False
'End If
Return per
End Function
Public Shared Function ObtienePermisos(bd As tscGrupoSanchoToro, idPermiso As Nullable(Of Integer), idUsuario As Integer) As tsUtilidades.Permisos
Dim per As New tsUtilidades.Permisos
If bd.usuarios.First(Function(x) x.idUsuario = bdGrupoSanchoToro.db.Utilidades.idUsuario).Usuario = "MANMOG" Then
per.Consultar = True
per.Eliminar = True
per.Nuevos = True
per.Otros = True
per.Modificar = True
per.Impresion = True
per.Exportar = True
Else
If idPermiso Is Nothing Then
per.Consultar = False
per.Eliminar = False
per.Nuevos = False
per.Otros = False
per.Modificar = False
per.Impresion = False
per.Exportar = False
Else
Dim au = (From a In bd.autorizacionesusuarios Select a Where a.idPermisoNavigation.idPermiso = idPermiso AndAlso a.idUsuario = bdGrupoSanchoToro.db.Utilidades.idUsuario)
If au.Count = 0 Then
Dim idGrupo As Integer = (From u In bd.usuarios Select u Where u.idUsuario = bdGrupoSanchoToro.db.Utilidades.idUsuario).First.idGrupo.Value
Dim ag = (From g In bd.autorizacionesgrupos Select g Where g.idPermisoNavigation.idPermiso = idPermiso AndAlso g.idGrupo = idGrupo)
If ag.Count = 0 Then
per.Consultar = False
per.Eliminar = False
per.Nuevos = False
per.Otros = False
per.Modificar = False
per.Impresion = False
per.Exportar = False
Else
per.Consultar = ag.First.PermitirConsultas
per.Eliminar = ag.First.PermitirEliminaciones
per.Nuevos = ag.First.PermitirNuevos
per.Otros = ag.First.OtrosPermisos
per.Modificar = ag.First.PermitirModificaciones
per.Impresion = ag.First.PermitirImpresiones
per.Exportar = ag.First.PermitirImpresiones 'ag.First.PermitirExportar
End If
Else
per.Consultar = au.First.PermitirConsultas
per.Eliminar = au.First.PermitirEliminaciones
per.Nuevos = au.First.PermitirNuevos
per.Otros = au.First.OtrosPermisos
per.Modificar = au.First.PermitirModificaciones
per.Impresion = au.First.PermitirImpresiones
per.Exportar = au.First.PermitirImpresiones
End If
End If
End If
Return per
End Function
Friend Shared Function ObtienePlantillas(bd As tscGrupoSanchoToro, Grupo As String, Optional IncluirTipoListado As Boolean = True) As List(Of tsWPFCore.Plantilla)
Dim plas As IQueryable(Of plantillas)
If Not IncluirTipoListado Then
plas = (From p In bd.plantillas Where p.idEmpresa = EmpresaActual.idEmpresa AndAlso p.idGrupoNavigation.Codigo = Grupo AndAlso p.TipoListado = False Select p)
Else
plas = (From p In bd.plantillas Where p.idEmpresa = EmpresaActual.idEmpresa AndAlso p.idGrupoNavigation.Codigo = Grupo Select p)
End If
Dim plantillas As New List(Of tsWPFCore.Plantilla)
For Each p In plas
Dim pl As New tsWPFCore.Plantilla
pl.idPlantilla = p.idPlantilla
pl.Descripcion = p.Descripcion
plantillas.Add(pl)
Next
Return plantillas
End Function
Friend Shared Function ObtienePlantillas(bd As tscGrupoSanchoToro, Grupos() As String, Optional IncluirTipoListado As Boolean = True) As List(Of tsWPFCore.Plantilla)
Dim plas As List(Of plantillas)
If Not IncluirTipoListado Then
plas = (From p In bd.plantillas Where p.TipoListado = False AndAlso p.Oculta = False Order By p.Orden Select p).ToList
Else
plas = (From p In bd.plantillas Where p.Oculta = False Order By p.Orden Select p).ToList
End If
Dim plantillas As New List(Of tsWPFCore.Plantilla)
For Each p In plas
If Grupos.Contains(p.idGrupoNavigation.Codigo) Then
If Not p.idPermiso.HasValue OrElse ObtienePermisos(bd, p.idPermisoNavigation.CodigoPermiso, idUsuario).Impresion Then
Dim pl As New tsWPFCore.Plantilla
pl.idPlantilla = p.idPlantilla
pl.Descripcion = p.Descripcion
plantillas.Add(pl)
End If
End If
Next
Return plantillas
End Function
Friend Shared Function ObtienePlantillasPorCodigos(bd As tscGrupoSanchoToro, Codigos() As String, Optional IncluirTipoListado As Boolean = True) As List(Of tsWPFCore.Plantilla)
Dim plas As List(Of plantillas)
If Not IncluirTipoListado Then
plas = (From p In bd.plantillas Where p.idEmpresa = EmpresaActual.idEmpresa AndAlso p.TipoListado = False AndAlso p.Oculta = False Order By p.Orden Select p).ToList
Else
plas = (From p In bd.plantillas Where p.idEmpresa = EmpresaActual.idEmpresa AndAlso p.Oculta = False Order By p.Orden Select p).ToList
End If
Dim plantillas As New List(Of tsWPFCore.Plantilla)
plas = plas.Where(Function(x) Codigos.Contains(x.Codigo) AndAlso (x.idPermisoNavigation Is Nothing OrElse ObtienePermisos(bd, x.idPermisoNavigation.CodigoPermiso, idUsuario).Impresion)).ToList
For Each p In plas
Dim pl As New tsWPFCore.Plantilla
pl.idPlantilla = p.idPlantilla
pl.Descripcion = p.Descripcion
plantillas.Add(pl)
Next
Return plantillas
End Function
'Friend Shared Sub MuestraImpresos(bd As tscGrupoSanchoToro, idPlantilla As Integer, Datasource As Object, GrupoDocumentos As DocumentGroup, dc As DockController)
' Try
' If idPlantilla = 0 Then Throw New Exception("Seleccione primero la plantilla a imprimir")
' Dim xr As New XtraReport
' Dim qr As ObjectSet(Of plantillas) = bd.plantillas
' ' qr.MergeOption = MergeOption.OverwriteChanges
' Dim pl = qr.Where(Function(x) x.idPlantilla = idPlantilla).First
' 'Dim pl As plantillas = (From p In bd.plantillas Where p.idPlantilla = idPlantilla).First
' Dim s As String = System.Text.Encoding.UTF8.GetString(pl.idFicheroNavigation.Fichero)
' Using sw As New StreamWriter(New MemoryStream())
' sw.Write(s)
' sw.Flush()
' xr = XtraReport.FromStream(sw.BaseStream, True)
' End Using
' Try
' Dim pr As DevExpress.XtraReports.Parameters.Parameter = (From p As DevExpress.XtraReports.Parameters.Parameter In xr.Parameters Where p.Name = "Fecha").First
' pr.Value = Now
' pr.Visible = False
' Catch ex As Exception
' End Try
' Select Case Datasource.GetType
' 'Case GetType(personas), GetType(List(Of personas))
' ' If Datasource.GetType = GetType(personas) Then
' ' Dim lp As New List(Of personas)
' ' Dim per As personas = Datasource
' ' lp.Add(per)
' ' Datasource = lp
' ' End If
' ' If pl.enumeraciones.Codigo = "GRUPLA.TARJETAVERTICAL" Then
' ' Dim ltvd As New List(Of TarjetaVerticalDiputado)
' ' Dim iNumPer As Integer
' ' Dim tvd As TarjetaVerticalDiputado = Nothing
' ' For Each p In DirectCast(Datasource, List(Of personas))
' ' iNumPer += 1
' ' If iNumPer Mod 2 = 1 Then
' ' tvd = New TarjetaVerticalDiputado
' ' With tvd
' ' .Dni1 = p.NIF
' ' If p.idFicheroFoto IsNot Nothing AndAlso p.idFicheroNavigation.Fichero IsNot Nothing AndAlso p.idFicheroNavigation.Fichero.Length > 0 Then
' ' Dim original = System.Drawing.Image.FromStream(New IO.MemoryStream(p.idFicheroNavigation.Fichero))
' ' original.RotateFlip(System.Drawing.RotateFlipType.Rotate90FlipNone)
' ' Dim memStream As IO.MemoryStream = New IO.MemoryStream()
' ' original.Save(memStream, ImageFormat.Png)
' ' .Foto1 = memStream.ToArray
' ' End If
' ' .Nombre1 = p.Nombre & " " & p.Apellidos
' ' .PuestoEnTarjeta1 = p.PuestoTrabajoEnTarjeta
' ' .Tratamiento1 = p.Tratamiento
' ' End With
' ' ltvd.Add(tvd)
' ' Else
' ' With tvd
' ' .Dni2 = p.NIF
' ' If p.idFicheroFoto IsNot Nothing AndAlso p.idFicheroNavigation.Fichero.Length > 0 Then
' ' Dim original = System.Drawing.Image.FromStream(New IO.MemoryStream(p.idFicheroNavigation.Fichero))
' ' original.RotateFlip(System.Drawing.RotateFlipType.Rotate90FlipNone)
' ' Dim memStream As IO.MemoryStream = New IO.MemoryStream()
' ' original.Save(memStream, ImageFormat.Png)
' ' .Foto2 = memStream.ToArray
' ' End If
' ' .Nombre2 = p.Nombre & " " & p.Apellidos
' ' .PuestoEnTarjeta2 = p.PuestoTrabajoEnTarjeta
' ' .Tratamiento2 = p.Tratamiento
' ' End With
' ' End If
' ' Next
' ' Datasource = ltvd
' ' End If
' End Select
' xr.DataSource = Datasource
' Dim modelo As New XtraReportPreviewModel(xr)
' Dim vi As New tsWPFCore.ucVisualizadorInformes
' vi.Visualizador.Model = modelo
' xr.CreateDocument(True)
' 'If pl.Codigo = "TARDIPVER" Then
' ' Dim original = System.Drawing.Image.FromStream(New IO.MemoryStream(Per.idFicheroNavigation.Fichero))
' ' original.RotateFlip(System.Drawing.RotateFlipType.Rotate270FlipNone)
' ' Dim memStream As IO.MemoryStream = New IO.MemoryStream()
' ' original.Save(memStream, ImageFormat.Png)
' ' Per.idFicheroNavigation.Fichero = memStream.ToArray
' 'End If
' Dim docpanel As New DevExpress.Xpf.Docking.DocumentPanel
' docpanel.Caption = pl.Descripcion
' docpanel.Content = vi
' docpanel.ClosingBehavior = DevExpress.Xpf.Docking.ClosingBehavior.ImmediatelyRemove
' GrupoDocumentos.Items.Add(docpanel)
' dc.Activate(docpanel)
' Catch ex As Exception
' DXMessageBox.Show(ex.Message, "Atención", MessageBoxButton.OK, MessageBoxImage.Error)
' End Try
'End Sub
Shared Sub GeneraRegistroCorreoExcepcion(bd As tscGrupoSanchoToro, ex As Exception, Rutina As String, Optional FicheroImagen As Byte() = Nothing)
Try
If bd Is Nothing Then bd = tscGrupoSanchoToro.NuevoContexto
Dim sMensaje As String = "Usuario: " & bdGrupoSanchoToro.db.Utilidades.Usuario & vbCrLf
Dim sStackTrace As String = "Tipo excepción: " & ex.ToString & vbCrLf
Dim exError As Exception = ex
Do
sStackTrace &= exError.StackTrace & vbCrLf
exError = exError.InnerException
Loop Until IsNothing(exError)
If sStackTrace <> "" Then sMensaje &= vbCrLf & "StackTrace: " & sStackTrace
Dim cuentaorigen As cuentascorreo = (From c In bd.cuentascorreo Select c Where c.Codigo = "M3SOFT").First
If FicheroImagen Is Nothing Then
correos.GeneraRegistroCorreon(bd, "Mensaje Automático. Error en " & Rutina, sMensaje, cuentaorigen, "manmog@gmail.com", "", "", , ,, "ERRORES")
Else
correos.GeneraRegistroCorreon(bd, "Mensaje Automático. Error en " & Rutina, sMensaje, cuentaorigen, "manmog@gmail.com", "", "", FicheroImagen, "captura.jpg",, "ERRORES")
End If
Catch ex2 As Exception
DXMessageBox.Show(ex2.Message & vbCrLf & ex2.StackTrace, "Error Generando Correo Excepcion")
End Try
End Sub
Friend Shared Function ObtieneListaAlmacenes(bd As tscGrupoSanchoToro) As List(Of almacenes)
Dim alms = bd.almacenes.Where(Function(x) x.FechaBaja.HasValue = False).ToList
Return alms
End Function
End Class
Namespace Convertidores
Public Class DoubleToDecimalConverter
Implements IValueConverter
Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As Globalization.CultureInfo) As Object Implements IValueConverter.Convert
If value Is Nothing Then
Return 0
Else
Return Decimal.Parse(value)
End If
End Function
Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As Globalization.CultureInfo) As Object Implements IValueConverter.ConvertBack
If value Is Nothing Then
Return 0
Else
Return Double.Parse(value)
End If
End Function
End Class
Public Class ExistenLineasConverter
Implements IValueConverter
Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As Globalization.CultureInfo) As Object Implements IValueConverter.Convert
Dim lineas As IEnumerable(Of Object) = value
Return (lineas.Count > 0)
End Function
Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As Globalization.CultureInfo) As Object Implements IValueConverter.ConvertBack
Return value
End Function
End Class
Public Class ImagenConverter
Implements IValueConverter
Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As Globalization.CultureInfo) As Object Implements IValueConverter.Convert
Try
If value Is Nothing Then
Return Nothing
Else
Dim ms As New IO.MemoryStream(DirectCast(value, Byte()))
Dim img As New BitmapImage
img.BeginInit()
img.StreamSource = ms
img.CacheOption = BitmapCacheOption.OnLoad
img.EndInit()
img.Freeze()
ms.Close()
ms.Dispose()
Return img
GC.Collect()
GC.WaitForPendingFinalizers()
GC.Collect()
End If
Catch ex As Exception
Return Nothing
' Throw New Exception(ex.Message, ex)
End Try
End Function
Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As Globalization.CultureInfo) As Object Implements IValueConverter.ConvertBack
Try
If value Is Nothing Then
Return Nothing
Else
Dim bm As BitmapImage = value
Dim ms As IO.MemoryStream = bm.StreamSource
Return ms.ToArray
End If
Catch ex As Exception
Throw New Exception(ex.Message, ex)
End Try
End Function
End Class
End Namespace