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

215 lines
8.1 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 DevExpress.Xpf.Bars
Imports tsUtilidades.Datos
Imports tsWPF
Imports DevExpress.Data
Imports tsWPF.Comun
Imports tsWPFCore.Comun
Imports tsWPFCore
Imports tsUtilidades
Imports bdGrupoSanchoToro.db
Imports bdGrupoSanchoToro.db.Utilidades
Public Class ucBalanceExplotacion
Private TotalGastos As Double
Private TotalIngresos As Double
Dim bd As tscGrupoSanchoToro
' Private _Ejercicios As List(Of Integer)
' Private _NivelCuentas As Integer
Public Overrides ReadOnly Property idRegistroAplicacionActual As String
Get
Return "BalanceExplotacion"
End Get
End Property
Public Overrides ReadOnly Property DescripcionRegistro As String
Get
Return "Cuentas"
End Get
End Property
Public Overrides ReadOnly Property NombreTablaBase As String
Get
Return "Cuentas"
End Get
End Property
Public Overrides Sub EstableceDataContextSecundarios(Optional Background As Boolean = False)
End Sub
Public Overrides Sub EstableceTitulo()
Me.docpanel.Caption = "Balance de Explotación"
End Sub
Public Overrides Sub Cargado()
Dim Ejercicios = bd.ejercicioscontables.OrderByDescending(Function(x) x.FechaInicio).ToList
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
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 bdCOASVD.GestionAsegasaEntities.bdga
'End Function
Public Overrides Function ObtienePermisos() As tsUtilidades.Permisos
Return Comun.ObtienePermisos(Me.bd, "AP.CONTABILIDAD", idUsuario)
End Function
Public Sub New()
' Esta llamada es exigida por el diseñador.
InitializeComponent()
'Me.lgFiltrosBusquedaRapida.Visibility = Visibility.Collapsed
'Me.lgFiltrosBusquedaAvanzada.Visibility = Visibility.Visible
' Agregue cualquier inicialización después de la llamada a InitializeComponent().
End Sub
Public Function ObtieneApuntes(ByRef DataContext As Object, BackGround As Boolean, FechaInicio As DateOnly, FechaFin As DateOnly) As List(Of CuentaBalanceExplotacion)
Dim parametros(0) As Object
Dim iNumExc As Integer = 0
Dim lcbe As New List(Of CuentaBalanceExplotacion)
Do
Try
Dim tiporeg As Integer = bdGrupoSanchoToro.db.asientos.TipoAsiento.REGULARIZACION
Dim rsa = bd.apuntes.Include(Function(x) x.idCuentaNavigation.idCuenta).Where(Function(x) x.idAsientoNavigation.Tipo <> tiporeg And x.idAsientoNavigation.Fecha >= FechaInicio And x.idAsientoNavigation.Fecha <= FechaFin And (x.idCuentaNavigation.NumeroCuenta.StartsWith("6") Or x.idCuentaNavigation.NumeroCuenta.StartsWith("7"))).GroupBy(Function(x) x.idCuentaNavigation.NumeroCuenta).ToList()
Dim orden As Integer
For Each g In rsa
Dim cbe As New CuentaBalanceExplotacion
orden += 1
With cbe
.Cuenta = g.First.idCuentaNavigation.NumeroCuenta
.Denominacion = g.First.idCuentaNavigation.Denominacion
.Importe = (g.Sum(Function(x) x.Debe) - g.Sum(Function(x) x.Haber)) * If(.Cuenta.StartsWith("6"), 1, -1)
.Grupo = If(.Cuenta.StartsWith("6"), "GASTOS", "INGRESOS")
End With
lcbe.Add(cbe)
Next
' rs = bd.asientos.Where(Function(x) x.Fecha >= FechaInicio And x.Fecha <= FechaFin).ToList
Exit Do
Catch ex As Exception
iNumExc += 1
If iNumExc > 3 Then
lcbe = Nothing
Exit Do
End If
End Try
Loop
Return lcbe
End Function
Public Async Sub ObtieneApuntesAsync(bd As tscGrupoSanchoToro, Background As Boolean)
Try
Dim rs As New List(Of CuentaBalanceExplotacion)
Dim fi, ff As DateOnly?
fi = deFechaInicio.EditValue
ff = deFechaFin.EditValue
If Background Then
Me.ContenedorAplicacion.IsEnabled = False
Await Task.Run(Sub()
rs = ObtieneApuntes(bd, Background, fi, ff)
End Sub)
Else
If DXSplashScreen.IsActive = False Then DXSplashScreen.Show(Of tsWPFCore.SplashScreenTecnosis)()
DXSplashScreen.SetState("Buscando Apuntes ...")
rs = ObtieneApuntes(bd, Background, fi, ff)
End If
gc.ItemsSource = rs
DataContext = rs
gc.RefreshData()
gc.ExpandAllGroups()
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
FuncionesDinamicas.AbrirAP(New ucCuenta, OtrosParametros)
End Sub
Private Sub ApLineas_Enlazar(Celda As EditGridCellData, Defecto As Boolean) Handles Me.Enlazar
Dim id As Integer = DirectCast(Me.gc.CurrentItem, cuentas).idCuenta
Dim uc As New ucCuenta(id)
FuncionesDinamicas.AbrirAP(New ucCuenta(id), OtrosParametros)
End Sub
Private Sub BtBuscar_Click(sender As Object, e As RoutedEventArgs)
ObtieneApuntesAsync(bd, False)
End Sub
Private Sub Gc_CustomSummary(sender As Object, e As DevExpress.Data.CustomSummaryEventArgs)
Dim Campo As String = (CType(e.Item, GridSummaryItem)).FieldName
Dim cta As CuentaBalanceExplotacion = Nothing
If e.SummaryProcess = CustomSummaryProcess.Calculate Then
cta = DirectCast(e.Row, CuentaBalanceExplotacion)
End If
Select Case Campo
Case "Importe" 'INGRESOS
If e.SummaryProcess = CustomSummaryProcess.Start Then
TotalIngresos = 0
TotalGastos = 0
End If
If e.SummaryProcess = CustomSummaryProcess.Calculate Then
If cta.Cuenta.StartsWith("6") Then
TotalGastos += cta.Importe
Else
TotalIngresos += cta.Importe
End If
End If
If e.SummaryProcess = CustomSummaryProcess.Finalize Then
e.TotalValue = TotalIngresos
End If
Case "TotalGastos"
If e.SummaryProcess = CustomSummaryProcess.Finalize Then
e.TotalValue = TotalGastos
End If
Case "Perdidas"
If e.SummaryProcess = CustomSummaryProcess.Finalize Then
e.TotalValue = If(TotalGastos > TotalIngresos, TotalGastos - TotalIngresos, 0)
End If
Case "Ganancias"
If e.SummaryProcess = CustomSummaryProcess.Finalize Then
e.TotalValue = If(TotalIngresos > TotalGastos, TotalIngresos - TotalGastos, 0)
End If
End Select
End Sub
End Class
Public Class CuentaBalanceExplotacion
Property Grupo As String
Property Cuenta As String
Property Denominacion As String
Property Importe As Double
End Class