2026-01-30-v2

This commit is contained in:
2026-01-30 11:10:56 +01:00
parent 12039e9ae4
commit 6034845e65
46 changed files with 9717 additions and 356 deletions

View File

@@ -0,0 +1,260 @@
Option Strict Off
Imports DevExpress.Xpf.Editors
Imports DevExpress.Xpf.LayoutControl
Imports tsWPFCore
Imports System.ComponentModel
Imports System.Data
Imports DevExpress.Xpf.Editors.Validation
Imports DevExpress.Xpf.Editors.Helpers
Imports DevExpress.Xpf.Core
Imports tsWPF.modExtensiones
Imports System.Data.Common
Imports System.Data.Entity
Imports DevExpress.Xpf.Grid
Imports tsl5.Extensiones
Imports DevExpress.Xpf.Bars
Imports tsl5.Datos
Imports tsWPF.Comun
Imports bdGrupoSanchoToro.db
Public Class ucAsientoModelo
Private bd As tscGrupoSanchoToro
Friend _idAsiento As Nullable(Of Integer)
Friend _idAsientoACopiar As Integer?
Public Sub New(Optional idAsiento As Integer? = Nothing, Optional idAsientoACopiar As Integer? = Nothing)
' Llamada necesaria para el diseñador.
InitializeComponent()
_idAsiento = idAsiento
_idAsientoACopiar = idAsientoACopiar
' Agregue cualquier inicialización después de la llamada a InitializeComponent().
End Sub
Public Overrides ReadOnly Property idRegistroAplicacionActual As String
Get
If Estado = tsUtilidades.EstadosAplicacion.Nuevo Then
Return "AsientosModelo.Nuevo"
Else
Return "AsientosModelo." & DirectCast(Me.DataContext, asientosmodelos).Codigo.ToString
End If
End Get
End Property
Public Overrides ReadOnly Property DescripcionRegistro As String
Get
Return "AsientosModelo"
End Get
End Property
Public Overrides ReadOnly Property NombreTablaBase As String
Get
Return "asientosmodelos"
End Get
End Property
Public Overrides Sub EstableceDataContextSecundarios(Optional Background As Boolean = False)
cbTipoDocumento.ItemsSource = bdGrupoSanchoToro.db.apuntes.ListaTiposDocumentos
End Sub
Public Overrides Sub EstableceTitulo()
If Me.Estado = tsUtilidades.EstadosAplicacion.ModificandoRegistro Then
Dim asiento As asientosmodelos = Me.DataContext
Me.docpanel.Caption = "Asiento Modelo " & asiento.idAsientoModelo.ToString
Me.docpanel.Tag = "Asiento Modelo." & asiento.idAsientoModelo.ToString
Else
Me.docpanel.Caption = "Asiento Modelo Nuevo"
Me.docpanel.Tag = "Asiento Modelo.Nuevo"
End If
End Sub
Public Overrides Sub Cargado()
tvApuntesModelo.ShowSearchPanel(False)
End Sub
Dim ra As asientosmodelos
Public Overrides Function EstableceDCPrincipal(Optional Background As Boolean = False, Optional FuerzaNuevo As Boolean = False, Optional Refrescar As Boolean = False) As tsUtilidades.EstadosAplicacion
Dim NuevoEstado As tsUtilidades.EstadosAplicacion
If FuerzaNuevo OrElse _idAsiento Is Nothing Then
'Dim uEc = bd.ejercicioscontables.Where(Function(x) x.FechaCierre Is Nothing).OrderByDescending(Function(x) x.FechaInicio).First
ra = New asientosmodelos
ra.FechaIntroduccion = Now
Dim usuarioprueba = bdGrupoSanchoToro.db.Utilidades.idUsuario
ra.idUsuarioNavigation = bd.usuarios.First(Function(x) x.idUsuario = bdGrupoSanchoToro.db.Utilidades.idUsuario)
If _idAsientoACopiar.HasValue Then
Dim asiac = bd.asientos.First(Function(x) x.idAsiento = _idAsientoACopiar)
For Each ap In asiac.apuntes
Dim napm As New apuntesmodelo
ra.apuntesmodelo.Add(napm)
With napm
.NumeroCuenta = ap.idCuentaNavigation.NumeroCuenta
.Concepto = ap.Concepto
.Debe = ap.Debe
.Haber = ap.Haber
.idConcepto = ap.idConcepto
.NumeroDocumento = ap.NumeroDocumento
.TipoDocumento = ap.TipoDocumento
End With
Next
End If
''sergio listen: preguntar EjerciciosContables a manolo
''ra.ejercicioscontables = uEc
NuevoEstado = tsUtilidades.EstadosAplicacion.Nuevo
Else
Dim id As Integer = _idAsiento
ra = bd.asientosmodelos.First(Function(X) X.idAsientoModelo = id)
NuevoEstado = tsUtilidades.EstadosAplicacion.ModificandoRegistro
End If
'sergio listen: ¿descomentar?
'ra.RellenaCuentaTmp()
Me.DataContext = ra
gcApuntesModelos.ItemsSource = ra.apuntesmodelo
Return NuevoEstado
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.SUPERADMINISTRATIVOS", bdGrupoSanchoToro.db.Utilidades.idUsuario)
End Function
Private Sub ucAsientoModelo_AntesGuardar(sender As Object, e As ItemClickEventArgs, ByRef Cancelar As Boolean, ByRef MensajesError As Hashtable, OpcionGuardado As Integer) Handles Me.AntesGuardar
Dim ra As asientosmodelos = Me.DataContext
Dim hte As New Hashtable
Dim sd = Math.Round(ra.apuntesmodelo.Sum(Function(x) x.Debe), 2, MidpointRounding.AwayFromZero)
Dim sh = Math.Round(ra.apuntesmodelo.Sum(Function(x) x.Haber), 2, MidpointRounding.AwayFromZero)
If sd <> sh Then
hte.Add("Almacenar-SUMA", "La suma del Debe no coincide con la suma del Haber")
End If
If sd = 0 Then
If ra.apuntesmodelo.Count > 0 Then
hte.Add("Almacenar-suma0", "La suma de los apuntes no puede ser 0")
Else
hte.Add("Almacenar-0Apuntes", "Es obligatorio meter al menos 2 apuntes")
End If
End If
If hte.Count > 0 Then
MensajesError = hte
Cancelar = True
End If
End Sub
Private Sub BtConcepto_DefaultButtonClick(sender As Object, e As RoutedEventArgs)
Try
Dim asiento As asientosmodelos = Me.DataContext
If gcApuntesModelos.CurrentItem Is Nothing Then tvApuntesModelo.AddNewRow()
Dim ap As apuntesmodelo = gcApuntesModelos.CurrentItem
If tvApuntesModelo.ActiveEditor Is Nothing Then
Dispatcher.BeginInvoke(New Action(Sub() tvApuntesModelo.ShowEditor()), System.Windows.Threading.DispatcherPriority.Render)
End If
Dim dxw As New dxwConceptosPredefinidos(bd)
If dxw.ShowDialog Then
Dim con = bd.conceptosapuntes.First(Function(x) x.idConcepto = dxw.idConcepto)
ap.Concepto = con.Concepto
If tvApuntesModelo.ActiveEditor IsNot Nothing Then tvApuntesModelo.ActiveEditor.EditValue = con.Concepto
tvApuntesModelo.PostEditor()
tvApuntesModelo.CloseEditor()
gcApuntesModelos.RefreshRow(tvApuntesModelo.FocusedRowHandle)
tvApuntesModelo.MoveNextCell()
End If
Catch ex As Exception
FuncionesDinamicas.ErrorNoControladoAp(Me, ex)
DXMessageBox.Show(ex.Message, "Error")
End Try
End Sub
Private Sub ucAsientoModelo_DespuesGuardar(sender As Object, e As ItemClickEventArgs, OpcionGuardado As Integer) Handles Me.DespuesGuardar
_idAsientoACopiar = Nothing
_idAsiento = ra.idAsientoModelo
End Sub
Private Sub gcApuntesModelo_EnterPulsado() Handles gcApuntesModelos.EnterPulsado
Select Case gcApuntesModelos.CurrentColumn.FieldName.ToLower
Case "concepto"
If tvApuntesModelo.FocusedRowHandle = DataControlBase.NewItemRowHandle Then
Dim ap As apuntes = gcApuntesModelos.CurrentItem
Dim apant = ra.apuntesmodelo.FirstOrDefault(Function(x) x.Concepto <> "")
If apant IsNot Nothing Then
ap.idConcepto = apant.idConcepto
ap.Concepto = apant.Concepto
End If
gcApuntesModelos.RefreshRow(tvApuntesModelo.FocusedRowHandle)
End If
Case "tipodocumento"
If tvApuntesModelo.FocusedRowHandle = DataControlBase.NewItemRowHandle Then
Dim ap As apuntes = gcApuntesModelos.CurrentItem
Dim apant = ra.apuntesmodelo.FirstOrDefault(Function(x) x.TipoDocumento.HasValue)
If apant IsNot Nothing Then
ap.TipoDocumento = apant.TipoDocumento
End If
gcApuntesModelos.RefreshRow(tvApuntesModelo.FocusedRowHandle)
End If
Case "numerodocumento"
If tvApuntesModelo.FocusedRowHandle = DataControlBase.NewItemRowHandle Then
Dim ap As apuntes = gcApuntesModelos.CurrentItem
Dim apant = ra.apuntesmodelo.FirstOrDefault(Function(x) x.NumeroDocumento.NothingAVacio)
If apant IsNot Nothing Then
ap.NumeroDocumento = apant.NumeroDocumento
End If
gcApuntesModelos.RefreshRow(tvApuntesModelo.FocusedRowHandle)
End If
End Select
End Sub
Private Sub tvApuntesModelo_CellValueChanged(sender As Object, e As CellValueChangedEventArgs) Handles tvApuntesModelo.CellValueChanged
Try
Dim ap As apuntesmodelo = e.Row
Select Case e.Column.FieldName.ToLower
Case "numerocuenta"
Dim NumeroCuenta As String = ap.NumeroCuenta.NothingAVacio
If NumeroCuenta.Contains(".") Then
NumeroCuenta = NumeroCuenta.Replace(".", "0".PadRight(9 - NumeroCuenta.Length, "0")).Acortar(8)
ap.NumeroCuenta = NumeroCuenta
gcApuntesModelos.RefreshRow(tvApuntesModelo.FocusedRowHandle)
End If
End Select
Catch ex As Exception
FuncionesDinamicas.ErrorNoControladoAp(Me, ex)
DXMessageBox.Show(ex.Message, "Error")
End Try
End Sub
Private Sub BtCuenta_DefaultButtonClick(sender As Object, e As RoutedEventArgs) Handles btCuenta.DefaultButtonClick
Try
If tvApuntesModelo.HasValidationError Then tvApuntesModelo.CancelRowEdit()
Dim asiento As asientosmodelos = Me.DataContext
If gcApuntesModelos.CurrentItem Is Nothing Then tvApuntesModelo.AddNewRow()
If tvApuntesModelo.ActiveEditor Is Nothing Then
Dispatcher.BeginInvoke(New Action(Sub() tvApuntesModelo.ShowEditor()), System.Windows.Threading.DispatcherPriority.Render)
End If
Dim idj = bd.ejercicioscontables.OrderByDescending(Function(x) x.FechaInicio).First.idEjercicio
Dim dxw As New dxwCuentas(bd, idj)
If dxw.ShowDialog Then
Dim ap As apuntesmodelo = gcApuntesModelos.CurrentItem
Dim cta = bd.cuentas.First(Function(x) x.idCuenta = dxw.idCuenta)
ap.NumeroCuenta = cta.NumeroCuenta
If tvApuntesModelo.ActiveEditor IsNot Nothing Then tvApuntesModelo.ActiveEditor.EditValue = cta.NumeroCuenta
tvApuntesModelo.PostEditor()
gcApuntesModelos.RefreshRow(tvApuntesModelo.FocusedRowHandle)
tvApuntesModelo.MoveNextCell()
End If
Catch ex As Exception
FuncionesDinamicas.ErrorNoControladoAp(Me, ex)
DXMessageBox.Show(ex.Message, "Error")
End Try
End Sub
End Class