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

273 lines
12 KiB
VB.net

Imports bdGrupoSanchoToro.db
Imports System.Data.Entity
Imports DevExpress.Xpf.Core
Imports tsWPFCore
Imports System.Collections
Imports DevExpress.Xpf.Bars
Imports System.Threading.Tasks
Imports System.Linq.Dynamic
Imports bdGrupoSanchoToro.db.Utilidades
Imports bdGrupoSanchoToro.db.tscGrupoSanchoToro
Imports System.IO
Imports tsEFCore8.Extensiones
Public Class ucMovimientosCaja
Private bd As tscGrupoSanchoToro
Private _CamposBusquedaNumericos() As String = {"idAlbaranEntrega", "idMovimiento", "Importe"}
Private _CamposBusquedaAlfabeticos() As String = {"movimientos.entidades.RazonSocial", "movimientos.entidades.NIF", "movimientos.NumeroFactura", "movimientosrecibidas.entidades.RazonSocial", "movimientosrecibidas.entidades.NIF", "movimientosrecibidas.NumeroFactura"}
Public Sub New()
' Esta llamada es exigida por el diseñador.
InitializeComponent()
' Agregue cualquier inicialización después de la llamada a InitializeComponent().
End Sub
Public Overrides Sub Cargado()
ContenedorAplicacion.btGuardar.IsVisible = False
ContenedorAplicacion.siEstado.IsVisible = False
Dim Hoy = Date.Today
teFechaFin.EditValue = Hoy
teFechaInicio.EditValue = Hoy.AddDays(-30)
Me.GridSeleccion = Me.gc
End Sub
Public Overrides Function EstablecedcPrincipal(Optional Background As Boolean = False, Optional FuerzaNuevo As Boolean = False, Optional Refrescar As Boolean = False) As tsUtilidades.EstadosAplicacion
If Background OrElse Refrescar Then ObtienemovimientosAsync(bd, Background)
Return tsUtilidades.EstadosAplicacion.AplicacionSinIndice
End Function
Public Overrides Sub EstableceDataContextSecundarios(Optional Background As Boolean = False)
Dim Acciones As New List(Of tsWPFCore.Accion)
Acciones.Add(New Accion With {
.idAccion = 1,
.Descripcion = "ENVIA EXCEL DE MOVIMIENTOS SELECCIONADOS A ASESORIA"})
Me.ContenedorAplicacion.cbAcciones.ItemsSource = Acciones
Me.ContenedorAplicacion.beAcciones.EditValue = Acciones.First.idAccion
End Sub
Public Overrides Sub EstableceTitulo()
Me.docpanel.Caption = "Movimientos Caja"
End Sub
Public Overrides ReadOnly Property idRegistroAplicacionActual As String
Get
Return "movimientoscaja"
End Get
End Property
Public Overrides ReadOnly Property NombreTablaBase As String
Get
Return "movimientoscaja"
End Get
End Property
Public Overrides ReadOnly Property DescripcionRegistro As String
Get
Return "Movimientos Caja"
End Get
End Property
Public Overrides Function ObtieneBD() As tsUtilidades.ItsContexto
bd = tscGrupoSanchoToro.NuevoContexto()
Return bd
End Function
Public Overrides Function ObtienePermisos() As tsUtilidades.Permisos
Return Comun.ObtienePermisos(Me.bd, "AP.ADMINISTRATIVOS", idUsuario)
End Function
Private Sub Nuevo() Handles Me.BotonNuevoPulsado
FuncionesDinamicas.AbrirAP(New ucMovimientoCaja, OtrosParametros)
End Sub
Private Sub ap_Enlazar(Celda As DevExpress.Xpf.Grid.EditGridCellData, Defecto As Boolean) Handles Me.Enlazar
Dim ra = DirectCast(Me.gc.CurrentItem, movimientoscaja)
Select Case Celda.Column.FieldName.ToLower
Case "referenciadocumento"
Dim id As Integer
If ra.idFactura.HasValue Then
id = ra.idFactura
' FuncionesDinamicas.AbrirAP(New ucFacturaEmitida(id), OtrosParametros)
Else
id = ra.idFacturaRecibida
FuncionesDinamicas.AbrirAP(New ucFacturaRecibida(id), OtrosParametros)
End If
Case "razonsocial"
Dim id As Integer
If ra.idFactura.HasValue Then
id = ra.idFacturaNavigation.idCliente
Else
id = ra.idFacturaRecibidaNavigation.idProveedor
End If
FuncionesDinamicas.AbrirAP(New ucEntidad(id), OtrosParametros)
Case "idmovimiento"
Dim id As Integer
id = ra.idMovimiento
FuncionesDinamicas.AbrirAP(New ucMovimientoCaja(id), OtrosParametros)
Case "impresion"
Select Case DirectCast(ra.Tipo, TipoMovimientoEnum)
Case TipoMovimientoEnum.CIERRE_CAJA
Dim lm As New List(Of movimientoscaja)
lm.Add(ra)
Dim xr As New xrCierreCaja
Informes.ImprimeInforme(xr, False, 1, bd.AhoraMySql, lm)
Case TipoMovimientoEnum.RECIBO_CLIENTE
Dim ds As List(Of movimientoscaja)
Dim pl = bd.plantillas.AsNoTracking.Where(Function(x) x.Codigo = "RECIBO").Select(Function(x) New With {.Fichero = x.idFicheroNavigation.Fichero, .Tipo = x.idGrupoNavigation.Codigo}).FirstOrDefault
If pl IsNot Nothing Then
ds = New List(Of movimientoscaja)
ds.Add(ra)
Informes.ImprimirPlantilla(bd, pl.Fichero, ds, False, 1)
End If
End Select
End Select
End Sub
Public Function ObtieneMovimientosCaja(ByRef DataContext As Object, BackGround As Boolean, TextoBusqueda As String) As List(Of movimientoscaja)
Dim rs As IQueryable(Of movimientoscaja)
Dim lf As New List(Of movimientoscaja)
Dim iNumExc As Integer = 0
Do
Try
If TextoBusqueda <> "" Then
Dim parametros(0) As Object
Dim ExpresionBusqueda = tsWPFCore.Utilidades.Varias.GeneraExpresionBusqueda(TextoBusqueda, Me._CamposBusquedaNumericos, Me._CamposBusquedaAlfabeticos, Nothing)
rs = bd.movimientoscaja.Include(Function(x) x.idFacturaNavigation.idClienteNavigation).Include(Function(x) x.idFacturaRecibidaNavigation.idProveedorNavigation).Include(Function(x) x.idCajaNavigation).Include(Function(x) x.idUsuarioNavigation).Where(ExpresionBusqueda)
Else
rs = bd.movimientoscaja.Include(Function(x) x.idFacturaNavigation.idClienteNavigation).Include(Function(x) x.idFacturaRecibidaNavigation.idProveedorNavigation).Include(Function(x) x.idCajaNavigation).Include(Function(x) x.idUsuarioNavigation).OrderByDescending(Function(x) x.Fecha)
End If
Dim fi As Date? = teFechaInicio.EditValue
If fi.HasValue Then
rs = rs.Where(Function(x) x.Fecha >= fi.Value)
End If
Dim ff As Date? = teFechaFin.EditValue
If ff.HasValue Then
ff = ff.Value.AddDays(1)
rs = rs.Where(Function(x) x.Fecha < ff.Value)
End If
If cbIncluirTodos.IsChecked = False Then
rs = rs.Where(Function(x) x.idMovimientoCierre Is Nothing)
End If
lf = rs.OrderBy(Function(x) x.FechaCreacion).ToList
Exit Do
Catch ex As Exception
iNumExc += 1
If iNumExc > 3 Then
rs = Nothing
Exit Do
End If
End Try
Loop
Return lf
End Function
Public Async Sub ObtienemovimientosAsync(bd As tscGrupoSanchoToro, Background As Boolean)
Try
Dim rs As New List(Of movimientoscaja)
Dim Busqueda = tsEFCore8.Extensiones.ObjetoNothingAVacio(Me.teBusqueda.EditValue)
If Background Then
Me.ContenedorAplicacion.IsEnabled = False
Await Task.Run(Sub()
rs = ObtieneMovimientosCaja(bd, Background, Busqueda)
End Sub)
Else
If DXSplashScreen.IsActive = False Then DXSplashScreen.Show(Of tsWPFCore.SplashScreenTecnosis)()
DXSplashScreen.SetState("Buscando Movimientos Caja ...")
rs = ObtieneMovimientosCaja(bd, Background, Busqueda)
End If
gc.ItemsSource = rs
DataContext = rs
Catch ex As Exception
If DXSplashScreen.IsActive Then DXSplashScreen.Close()
DXMessageBox.Show(ex.Message, "Error")
Finally
Me.ContenedorAplicacion.IsEnabled = True
If DXSplashScreen.IsActive Then DXSplashScreen.Close()
End Try
End Sub
Private Sub BtBuscar_Click(sender As Object, e As RoutedEventArgs)
ObtienemovimientosAsync(bd, False)
End Sub
Private Sub ucMovimientosCaja_EjecutarAccion(sender As Object, e As ItemClickEventArgs, idAccion As Integer) Handles Me.EjecutarAccion
Select Case idAccion
Case 1
Dim tm As List(Of movimientoscaja) = gc.ItemsSource
Try
Dim movs = gc.ElementosSeleccionados.Cast(Of movimientoscaja).ToList
Dim sCorreo = bd.enumeraciones.First(Function(x) x.Codigo = "CONF.EMAILASESORIA").ValorAlfabeticoLargo
Dim dxnc = New dxwEnvioCorreo(sCorreo, "", "", EmpresaActual.RazonSocial & " - Adjunto le remitimos listado de movimientos de caja", "Distinguidos Sres., " & vbCrLf & "Adjunto le remitimos listado de movimientos de caja", "MovimientosCaja.xlsx")
If dxnc.ShowDialog Then
Dim cta = bd.cuentascorreo.First(Function(x) x.Codigo = "DEFECTO" AndAlso x.idEmpresa = EmpresaActual.idEmpresa)
gc.ItemsSource = movs
Dim ms As New MemoryStream
tv.ExportToXlsx(ms)
' gc.ItemsSource = tf
Dim bFacturas = ms.ToArray
bdGrupoSanchoToro.db.correos.GeneraRegistroCorreon(bd, dxnc._Asunto, dxnc._Cuerpo, cta, dxnc._Destinatarios, dxnc._CC, dxnc._BCC, bFacturas, dxnc._Adjunto,, "MOVIMIENTOSCAJA")
End If
Catch ex As Exception
Throw New Exception(ex.Message, ex)
Finally
gc.ItemsSource = tm
End Try
End Select
End Sub
'Private Sub ucMovimientosCaja_ImprimirPlantilla(sender As Object, e As ItemClickEventArgs, idPlantilla As Integer) Handles Me.ImprimirPlantilla
' Select Case idPlantilla
' Case 0
' If Me.DataContext IsNot Nothing Then
' Dim recs = gc.ElementosSeleccionados.Cast(Of movimientoscaja).ToList
' If recs Is Nothing OrElse recs.Count = 0 Then
' DXMessageBox.Show("Seleccione primero algún recibo a imprimir", "Atención")
' Else
' If recs.Any(Function(x) x.Tipo <> TipoMovimientoEnum.RECIBO_CLIENTE) Then
' DXMessageBox.Show("Solo se pueden imprimir recibos de cliente", "Atención")
' Else
' Dim lr As New List(Of movimientoscaja)
' Dim cp As String = "RECIBO"
' If rec.idFactura.HasValue AndAlso rec.facturas.PorcentajeIVA = 0 Then cp = "RECIBOSC"
' Dim idPl = bd.plantillas.First(Function(x) x.Codigo = cp).idPlantilla
' Informes.ImprimirPlantilla(bd, idPlantilla, lr, False, 1)
' End If
' End If
' End If
' End If
' End Select
'End Sub
'Private Sub ap_ImprimirPlantilla(sender As Object, e As ItemClickEventArgs, idPlantilla As Integer) Handles me.ImprimirPlantilla
' Dim ds As List(Of movimientos)
' Dim pl As plantillas = (From p In bd.plantillas Where p.idPlantilla = idPlantilla).First
' Dim sTipo As String = pl.enumeraciones.Codigo
' Dim al As movimientos = Me.DataContext
' ds = New List(Of movimientos)
' ds.Add(al)
' Select Case sTipo
' Case "GRUPLA.AV-ALBARANES"
' Informes.ImprimirPlantilla(bd, idPlantilla, ds, False)
' End Select
'End Sub
End Class