Files
SanchoToro/GestionGrupoSanchoToro/Contabilidad/Aplicaciones/ucDiarios.xaml.vb
2026-01-30 12:07:23 +01:00

190 lines
7.3 KiB
VB.net

Imports System.Data.Entity
Imports DevExpress.Xpf.Core.ServerMode
Imports bdGrupoSanchoToro
Imports DevExpress.Xpf.Grid
Imports DevExpress.Xpf.Core
Imports System.Linq.Dynamic
Imports tsUtilidades.Datos
Imports tsWPF
Imports tsWPF.Comun
Imports tsWPFCore.Comun
Imports tsWPFCore
Imports tsUtilidades
Imports bdGrupoSanchoToro.db
Imports bdGrupoSanchoToro.db.Utilidades
Public Class ucDiarios
Dim bd As tscGrupoSanchoToro
Private _ListadoFiltrado As List(Of asientos)
Public Overrides Sub EstableceTitulo()
Me.docpanel.Caption = "Asientos"
End Sub
Public Overrides ReadOnly Property idRegistroAplicacionActual As String
Get
Return "Asientos"
End Get
End Property
Public Overrides ReadOnly Property DescripcionRegistro As String
Get
Return "Asientos Diarios"
End Get
End Property
Public Overrides ReadOnly Property NombreTablaBase As String
Get
Return "asientos"
End Get
End Property
Public Overrides Sub EstableceDataContextSecundarios(Optional Background As Boolean = False)
End Sub
Public Overrides Sub Cargado()
Dim Ejercicios = bd.ejercicioscontables.OrderByDescending(Function(x) x.FechaInicio).ToList
HabilitarRefresco = True
Dim ejab = Ejercicios.Where(Function(x) x.FechaCierre Is Nothing)
deFechaInicio.EditValue = ejab.OrderBy(Function(x) x.FechaInicio).First.FechaInicio
deFechaFin.EditValue = ejab.OrderByDescending(Function(x) x.FechaFin).First.FechaFin
End Sub
Public Overrides Function EstableceDCPrincipal(Optional Background As Boolean = False, Optional FuerzaNuevo As Boolean = False, Optional Refrescar As Boolean = False) As EstadosAplicacion
If Background Then ObtieneAsientosAsync(bd, Background)
Return EstadosAplicacion.AplicacionSinIndice
End Function
Public Overrides Function ObtieneBD() As tsUtilidades.ItsContexto
bd = tscGrupoSanchoToro.NuevoContexto()
Return bd
End Function
'Public Overrides Function ObtieneConexionBD() As BBDD
' Return bdGrupoSanchoToro.gestionasegasaEntities.bdga
'End Function
Public Overrides Function ObtienePermisos() As tsUtilidades.Permisos
Return Comun.ObtienePermisos(Me.bd, "AP.CONTABILIDAD", idUsuario)
End Function
'Public Sub New(ListadoFiltrado As List(Of asientos), TextoBusqueda As String, TituloCamposBusqueda As String, CamposBusquedaAlfabeticos() As String, CamposBusquedaNumericos() As String, FechaInicio As Date, FechaFin As Date)
' InitializeComponent()
' _ListadoFiltrado = ListadoFiltrado
' Me.lgFiltrosBusquedaRapida.Visibility = Visibility.Visible
' Me.lgFiltrosBusquedaAvanzada.Visibility = Visibility.Collapsed
' Me.teBusqueda.Text = TextoBusqueda
' Me.tbCamposBusqueda.Text = TituloCamposBusqueda
' Me.deFechaInicio.EditValue = FechaInicio
' Me.deFechaFin.EditValue = FechaFin
' _CamposBusquedaAlfabeticos = CamposBusquedaAlfabeticos
' _CamposBusquedaNumericos = CamposBusquedaNumericos
'End Sub
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 Function ObtieneAsientos(BackGround As Boolean, TextoBusqueda As String, FechaInicio As DateOnly, FechaFin As DateOnly) As List(Of asientos)
Dim rs As New List(Of asientos)
Dim parametros(0) As Object
Dim iNumExc As Integer = 0
Do
Try
If TextoBusqueda <> "" Then
Dim ExpresionBusqueda = tsWPFCore.Utilidades.Varias.GeneraExpresionBusqueda(TextoBusqueda, {"Importe"}, Nothing, Nothing)
'If ExpresionBusqueda <> "" Then
' rs = bd.asientos.Where(ExpresionBusqueda, parametros).Where(Function(x) x.Fecha >= FechaInicio And x.Fecha <= FechaFin).ToList
'Else
' rs = bd.asientos.Where(Function(x) x.Fecha >= FechaInicio And x.Fecha <= FechaFin).ToList
'End If
Dim Calfap() As String = {"NumeroDocumento", "Concepto"}
Dim Cnumap() As String = {"idAsiento", "Debe", "Haber"}
Dim ExpBusAsi As String = tsWPFCore.Utilidades.Varias.GeneraExpresionBusqueda(TextoBusqueda, Cnumap, Calfap, Nothing)
Dim lap = bd.apuntes.Where(ExpBusAsi, parametros).Select(Function(x) x.idAsientoNavigation).Where(Function(x) x.Fecha >= FechaInicio And x.Fecha <= FechaFin).ToList
Dim ctas = TextoBusqueda.Split(" ").Where(Function(x) x.Length = bdGrupoSanchoToro.db.cuentas.LongitudCuentaFinal).ToArray
Dim lap2 = bd.apuntes.Where(Function(x) ctas.Contains(x.idCuentaNavigation.NumeroCuenta)).Select(Function(x) x.idAsientoNavigation).Where(Function(x) x.Fecha >= FechaInicio And x.Fecha <= FechaFin).ToList
rs = lap.Union(lap2).OrderBy(Function(x) x.Fecha).ThenBy(Function(x) x.Fecha).ToList
Else
rs = bd.asientos.Where(Function(x) x.Fecha >= FechaInicio And x.Fecha <= FechaFin).ToList
End If
Exit Do
Catch ex As Exception
If BackGround = False Then Throw New Exception(ex.Message, ex)
iNumExc += 1
If iNumExc > 3 Then
Throw New Exception(ex.Message, ex)
End If
End Try
Loop
Return rs
End Function
Public Async Sub ObtieneAsientosAsync(bd As tscGrupoSanchoToro, Background As Boolean)
Try
Dim rs As New List(Of asientos)
Dim fi, ff As DateOnly?
Dim Busqueda As String
Busqueda = Me.teBusqueda.Text.Trim
fi = deFechaInicio.EditValue
ff = deFechaFin.EditValue
If Background Then
Me.ContenedorAplicacion.IsEnabled = False
Await Task.Run(Sub()
rs = ObtieneAsientos(Background, Busqueda, fi, ff)
End Sub)
Else
If DXSplashScreen.IsActive = False Then DXSplashScreen.Show(Of tsWPFCore.SplashScreenTecnosis)()
DXSplashScreen.SetState("Buscando Asientos ...")
rs = ObtieneAsientos(Background, Busqueda, fi, ff)
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 Nuevo() Handles Me.BotonNuevoPulsado
Dim r As New ucDiario
FuncionesDinamicas.AbrirAP(r, OtrosParametros)
End Sub
Private Sub ApLineas_Enlazar(Celda As EditGridCellData, Defecto As Boolean) Handles Me.Enlazar
Dim id As Integer = DirectCast(Me.gc.SelectedItems(0), asientos).idAsiento
FuncionesDinamicas.AbrirAP(New ucDiario(id), OtrosParametros)
End Sub
Private Sub BtBuscar_Click(sender As Object, e As RoutedEventArgs)
ObtieneAsientosAsync(bd, False)
End Sub
End Class