618 lines
30 KiB
VB.net
618 lines
30 KiB
VB.net
Option Strict Off
|
|
Imports DevExpress.Xpf.Editors
|
|
Imports DevExpress.Xpf.LayoutControl
|
|
Imports tsWPFCore
|
|
Imports System.ComponentModel
|
|
Imports System.Data
|
|
Imports DevExpress.Xpf.Core
|
|
Imports tsWPFCore.modExtensiones
|
|
Imports System.Data.Common
|
|
Imports bdGrupoSanchoToro
|
|
Imports DevExpress.Xpf.Grid
|
|
Imports tsUtilidades.Extensiones
|
|
Imports bdGrupoSanchoToro.db.apuntes
|
|
Imports DevExpress.Xpf.Bars
|
|
Imports System.Windows.Media.Animation
|
|
Imports tsWPFCore.Comun
|
|
Imports tsUtilidades
|
|
|
|
Imports bdGrupoSanchoToro.db
|
|
Imports bdGrupoSanchoToro.db.Utilidades
|
|
|
|
Public Class ucDiario
|
|
Private bd As tscGrupoSanchoToro
|
|
Private _idAsiento? As Integer
|
|
Private tbAlerta As TextBlock
|
|
Private ra As asientos
|
|
Public Sub New(Optional idAsiento As Integer? = Nothing)
|
|
|
|
' Esta llamada es exigida por el diseñador.
|
|
InitializeComponent()
|
|
_idAsiento = idAsiento
|
|
' Agregue cualquier inicialización después de la llamada a InitializeComponent().
|
|
|
|
End Sub
|
|
|
|
|
|
Public Overrides ReadOnly Property idRegistroAplicacionActual As String
|
|
Get
|
|
If Estado = EstadosAplicacion.Nuevo Then
|
|
Return "Asiento.Nuevo"
|
|
Else
|
|
Return "Asiento." & DirectCast(Me.DataContext, asientos).idAsiento.ToString
|
|
End If
|
|
End Get
|
|
End Property
|
|
|
|
Public Overrides ReadOnly Property DescripcionRegistro As String
|
|
Get
|
|
Return "Asientos"
|
|
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)
|
|
cbTipoDocumento.ItemsSource = bdGrupoSanchoToro.db.apuntes.ListaTiposDocumentos
|
|
|
|
If Me.ContenedorAplicacion.cbAcciones.ItemsSource Is Nothing Then
|
|
Dim Acciones As New List(Of tsWPFCore.Accion)
|
|
Acciones.Add(New Accion With {
|
|
.idAccion = 1,
|
|
.Descripcion = "LEE ASIENTO MODELO"})
|
|
Acciones.Add(New Accion With {
|
|
.idAccion = 2,
|
|
.Descripcion = "COPIA ASIENTO ACTUAL COMO ASIENTO MODELO"})
|
|
Me.ContenedorAplicacion.cbAcciones.ItemsSource = Acciones
|
|
Me.ContenedorAplicacion.beAcciones.EditValue = Acciones.First.idAccion
|
|
End If
|
|
End Sub
|
|
|
|
Public Overrides Sub EstableceTitulo()
|
|
If Me.docpanel Is Nothing Then
|
|
Dim w As dxwGenerica = Window.GetWindow(Me)
|
|
w.Title = "Agregar nuevo asiento"
|
|
Else
|
|
If Me.Estado = EstadosAplicacion.ModificandoRegistro Then
|
|
Dim asiento As asientos = Me.DataContext
|
|
Me.docpanel.Caption = "Asiento " & asiento.idAsiento.ToString
|
|
Me.docpanel.Tag = "Asiento." & asiento.idAsiento.ToString
|
|
Else
|
|
Me.docpanel.Caption = "Asiento Nuevo"
|
|
Me.docpanel.Tag = "Asiento.Nuevo"
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Public Overrides Sub Cargado()
|
|
Me.Tipo_ucControlBusqueda = GetType(ucDiarios)
|
|
' Me.GridBusqueda = GetType(ucDiarios)
|
|
End Sub
|
|
|
|
|
|
Public Overrides Function EstableceDCPrincipal(Optional Background As Boolean = False, Optional FuerzaNuevo As Boolean = False, Optional Refrescar As Boolean = False) As EstadosAplicacion
|
|
Dim NuevoEstado As EstadosAplicacion
|
|
If FuerzaNuevo OrElse _idAsiento Is Nothing Then
|
|
|
|
ra = New asientos
|
|
ra.Fecha = DateOnly.FromDateTime(Today) ' If(uEc.FechaFin > Now.Date, Now.Date, uEc.FechaFin)
|
|
ra.FechaIntroduccion = DateOnly.FromDateTime(Now)
|
|
Dim uEc = bd.ejercicioscontables.FirstOrDefault(Function(x) x.FechaInicio <= ra.Fecha And x.FechaFin >= ra.Fecha And x.FechaCierre Is Nothing)
|
|
If uEc Is Nothing Then
|
|
uEc = bd.ejercicioscontables.Where(Function(x) x.FechaCierre Is Nothing).OrderByDescending(Function(x) x.FechaInicio).First
|
|
ra.Fecha = uEc.FechaInicio
|
|
End If
|
|
ra.idEjercicioNavigation = uEc
|
|
ra.idEjercicio = uEc.idEjercicio
|
|
ra.Tipo = bdGrupoSanchoToro.db.asientos.TipoAsiento.NORMAL
|
|
ra.Punteado = False
|
|
NuevoEstado = EstadosAplicacion.Nuevo
|
|
ra.idUsuarioNavigation = bd.usuarios.First(Function(x) x.idUsuario = bdGrupoSanchoToro.db.Utilidades.idUsuario)
|
|
Else
|
|
ra = bd.asientos.First(Function(x) x.idAsiento = _idAsiento)
|
|
NuevoEstado = EstadosAplicacion.ModificandoRegistro
|
|
End If
|
|
Me.DataContext = ra
|
|
ra.RellenaCuentaTmp()
|
|
gcApuntes.ItemsSource = ra.apuntes
|
|
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.CONTABILIDAD", idUsuario)
|
|
End Function
|
|
|
|
Private Sub ucDiario_AntesGuardar(sender As Object, e As DevExpress.Xpf.Bars.ItemClickEventArgs, ByRef Cancelar As Boolean, ByRef MensajesError As Hashtable, OpcionGuardado As Integer) Handles Me.AntesGuardar
|
|
Dim hte As New Hashtable
|
|
Dim sd = Math.Round(ra.apuntes.Sum(Function(x) x.Debe), 2, MidpointRounding.AwayFromZero)
|
|
Dim sh = Math.Round(ra.apuntes.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")
|
|
Else
|
|
If ra.apuntes.Count < 2 Then
|
|
hte.Add("Almacenar-Apuntes", "Es obligatorio meter al menos 2 apuntes")
|
|
End If
|
|
End If
|
|
If ra.apuntes.Any(Function(x) x.TipoDocumento.HasValue AndAlso (x.TipoDocumento = TiposDocumentos.FACTURA And x.NumeroDocumento.NothingAVacio = "")) Then
|
|
hte.Add("Almacenar-FaltaNumeroDocumento", "Es obligatorio meter el nº de documento en los apuntes de tipo factura")
|
|
End If
|
|
Dim ej = bd.ejercicioscontables.FirstOrDefault(Function(x) x.FechaInicio <= ra.Fecha And x.FechaFin >= ra.Fecha And x.FechaCierre.HasValue = False)
|
|
If ej Is Nothing Then
|
|
hte.Add("Almacenar-EjercicioNoAbiertooCerrado", "El ejercicio según la fecha del asiento no se ha abierto o ya se cerró")
|
|
End If
|
|
If Estado = EstadosAplicacion.Nuevo Then
|
|
ra.FechaIntroduccion = DateOnly.FromDateTime(Now)
|
|
ra.idUsuario = idUsuario
|
|
End If
|
|
If hte.Count > 0 Then
|
|
MensajesError = hte
|
|
Cancelar = True
|
|
Else
|
|
ra.idEjercicioNavigation = ej
|
|
ra.idEjercicio = ej.idEjercicio
|
|
ra.EjercicioTmp = ej.Descripcion
|
|
For Each ap In ra.apuntes
|
|
ap.idCuenta = bd.cuentas.First(Function(x) x.idEjercicio = ra.idEjercicio And x.NumeroCuenta = ap.NumeroCuentaTmp).idCuenta
|
|
If ap.idAsientoNavigation Is Nothing Then ap.idAsientoNavigation = ra
|
|
Next
|
|
ra.Importe = sd
|
|
' If ra.NumeroAsiento.HasValue = False Then ra.EstableceNumeroAsiento(bd)
|
|
End If
|
|
End Sub
|
|
|
|
|
|
Private Sub ucpersona_ValidarControl(sender As Object, e As DevExpress.Xpf.Editors.ValidationEventArgs, ByRef ev As ErrorValidacion, ByRef ValorOriginalCambiado As Object) Handles Me.ValidarControl
|
|
Try
|
|
Dim pts As PropiedadesTS = sender.parent.propiedadests
|
|
|
|
If Not pts Is Nothing Then
|
|
Select Case pts.NombreCampo.ToLower
|
|
Case "fecha"
|
|
|
|
Dim NuevaFecha As DateOnly = DateOnly.FromDateTime(e.Value)
|
|
If NuevaFecha <> ra.Fecha Then
|
|
Dim Ejercicios = bd.ejercicioscontables.ToList
|
|
Dim EjercicioNuevo = Ejercicios.FirstOrDefault(Function(x) x.FechaInicio <= NuevaFecha And x.FechaFin >= NuevaFecha And x.FechaCierre Is Nothing)
|
|
If EjercicioNuevo Is Nothing Then
|
|
ev = New ErrorValidacion(DirectCast(sender.parent.propiedadests, PropiedadesTS).NumeroObjeto, sender, "No existe ningún ejercicio abierto con la fecha indicada", Nothing, DevExpress.XtraEditors.DXErrorProvider.ErrorType.Critical)
|
|
Else
|
|
Dim EjercicioAnterior = Ejercicios.FirstOrDefault(Function(x) x.FechaInicio <= ra.Fecha And x.FechaFin >= ra.Fecha)
|
|
If EjercicioAnterior IsNot Nothing AndAlso ra.apuntes.Count > 1 Then
|
|
Dim sCuentasFaltantes As String = ""
|
|
If EjercicioAnterior.idEjercicio <> EjercicioNuevo.idEjercicio Then
|
|
For Each ap In ra.apuntes
|
|
Dim cta = ap.idCuentaNavigation.NumeroCuenta
|
|
If Not bd.cuentas.Any(Function(x) x.NumeroCuenta = cta And x.idEjercicio = EjercicioNuevo.idEjercicio) Then
|
|
sCuentasFaltantes &= cta & ","
|
|
End If
|
|
Next
|
|
If sCuentasFaltantes <> "" Then
|
|
ev = New ErrorValidacion(DirectCast(sender.parent.propiedadests, PropiedadesTS).NumeroObjeto, sender, "En el ejercicio de la fecha indicada, no existen las cuentas " & sCuentasFaltantes, Nothing, DevExpress.XtraEditors.DXErrorProvider.ErrorType.Critical)
|
|
Else
|
|
ra.idEjercicioNavigation = EjercicioNuevo
|
|
ra.idEjercicio = EjercicioNuevo.idEjercicio
|
|
ra.NumeroAsiento = Nothing
|
|
ra.RellenaCuentaTmp()
|
|
teEjercicio.EditValue = EjercicioNuevo.Descripcion
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
End Select
|
|
|
|
End If
|
|
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)
|
|
Try
|
|
|
|
Dim dxw As New dxwCuentas(bd, ra.idEjercicio)
|
|
If dxw.ShowDialog Then
|
|
|
|
' If tvApuntes.HasValidationError Then tvApuntes.CancelRowEdit()
|
|
If gcApuntes.CurrentItem Is Nothing Then tvApuntes.AddNewRow()
|
|
If tvApuntes.ActiveEditor Is Nothing Then
|
|
Dispatcher.BeginInvoke(New Action(Sub() tvApuntes.ShowEditor()), System.Windows.Threading.DispatcherPriority.Render)
|
|
End If
|
|
|
|
|
|
Dim ap As apuntes = gcApuntes.CurrentItem
|
|
Dim cta = bd.cuentas.First(Function(x) x.idCuenta = dxw.idCuenta)
|
|
ap.NumeroCuentaTmp = cta.NumeroCuenta
|
|
ap.DescripcionCuentaTmp = cta.Denominacion
|
|
If tvApuntes.ActiveEditor IsNot Nothing Then tvApuntes.ActiveEditor.EditValue = cta.NumeroCuenta
|
|
tvApuntes.PostEditor()
|
|
gcApuntes.RefreshRow(tvApuntes.FocusedRowHandle)
|
|
tvApuntes.MoveNextCell()
|
|
End If
|
|
Catch ex As Exception
|
|
FuncionesDinamicas.ErrorNoControladoAp(Me, ex)
|
|
DXMessageBox.Show(ex.Message, "Error")
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub tvApuntes_CellValueChanged(sender As Object, e As CellValueChangedEventArgs) Handles tvApuntes.CellValueChanged
|
|
Try
|
|
|
|
Dim ap As apuntes = e.Row
|
|
If ap IsNot Nothing Then
|
|
Select Case e.Column.FieldName.ToLower
|
|
Case "numerocuentatmp"
|
|
Dim NumeroCuenta As String = ap.NumeroCuentaTmp.NothingAVacio
|
|
If NumeroCuenta.Contains(".") Then
|
|
NumeroCuenta = NumeroCuenta.Replace(".", "0".PadRight(9 - NumeroCuenta.Length, "0")).Acortar(8)
|
|
ap.NumeroCuentaTmp = NumeroCuenta
|
|
End If
|
|
Dim cta = bd.cuentas.FirstOrDefault(Function(x) x.NumeroCuenta = NumeroCuenta And x.idEjercicio = ra.idEjercicio)
|
|
If cta IsNot Nothing Then
|
|
ap.DescripcionCuentaTmp = cta.Denominacion
|
|
ap.idCuentaNavigation = cta
|
|
End If
|
|
gcApuntes.RefreshRow(tvApuntes.FocusedRowHandle)
|
|
End Select
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
FuncionesDinamicas.ErrorNoControladoAp(Me, ex)
|
|
DXMessageBox.Show(ex.Message, "Error")
|
|
End Try
|
|
End Sub
|
|
|
|
|
|
Private Sub BtConcepto_DefaultButtonClick(sender As Object, e As RoutedEventArgs)
|
|
Try
|
|
Dim dxw As New dxwConceptosPredefinidos(bd)
|
|
If dxw.ShowDialog Then
|
|
|
|
' If tvApuntes.HasValidationError Then tvApuntes.CancelRowEdit()
|
|
If gcApuntes.CurrentItem Is Nothing Then tvApuntes.AddNewRow()
|
|
Dim ap As apuntes = gcApuntes.CurrentItem
|
|
If tvApuntes.ActiveEditor Is Nothing Then
|
|
Dispatcher.BeginInvoke(New Action(Sub() tvApuntes.ShowEditor()), System.Windows.Threading.DispatcherPriority.Render)
|
|
End If
|
|
|
|
Dim con = bd.conceptosapuntes.First(Function(x) x.idConcepto = dxw.idConcepto)
|
|
ap.Concepto = con.Concepto
|
|
If tvApuntes.ActiveEditor IsNot Nothing Then tvApuntes.ActiveEditor.EditValue = con.Concepto
|
|
tvApuntes.PostEditor()
|
|
tvApuntes.CloseEditor()
|
|
gcApuntes.RefreshRow(tvApuntes.FocusedRowHandle)
|
|
tvApuntes.MoveNextCell()
|
|
End If
|
|
Catch ex As Exception
|
|
FuncionesDinamicas.ErrorNoControladoAp(Me, ex)
|
|
DXMessageBox.Show(ex.Message, "Error")
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub tvApuntes_ValidateRow(sender As Object, e As GridRowValidationEventArgs) Handles tvApuntes.ValidateRow
|
|
|
|
Try
|
|
Dim htErrores = New Hashtable
|
|
ErroresValidacion.LimpiarErrores("TSGC-" & gcApuntes.PropiedadesTS.NumeroObjeto.ToString & ":" & e.RowHandle.ToString & ":")
|
|
Dim ap As apuntes = e.Row
|
|
|
|
If ap.Debe <> 0 And ap.Haber <> 0 Then
|
|
htErrores.Add("ValoresEnDebeYHaber", "Los asientos no pueden tener valor en el debe y el haber al mismo tiempo")
|
|
End If
|
|
If ap.Debe = 0 And ap.Haber = 0 Then
|
|
htErrores.Add("Valor0EnDebeYHaber", "Los asientos deben tener algún valor en el debe y el haber")
|
|
End If
|
|
If htErrores.Count > 0 Then
|
|
Me.AgregaErroresTSGC(gcApuntes, htErrores, e)
|
|
End If
|
|
Catch ex As Exception
|
|
FuncionesDinamicas.ErrorNoControladoAp(Me, ex)
|
|
DXMessageBox.Show(ex.Message, "Error")
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub apCL_EstadoCambiado(EstadoAnterior As EstadosAplicacion, EstadoNuevo As EstadosAplicacion) Handles Me.EstadoCambiado
|
|
Try
|
|
Select Case EstadoNuevo
|
|
Case EstadosAplicacion.ModificandoRegistro
|
|
Dim ra As asientos = DataContext
|
|
If ra.idEjercicioNavigation.FechaCierre.HasValue Then
|
|
EstableceSoloLectura()
|
|
End If
|
|
End Select
|
|
EstableceAlerta()
|
|
Catch ex As Exception
|
|
FuncionesDinamicas.ErrorNoControladoAp(Me, ex)
|
|
DXMessageBox.Show(ex.Message, "Error")
|
|
End Try
|
|
End Sub
|
|
|
|
|
|
Private Sub TbAlerta_Loaded(sender As Object, e As RoutedEventArgs)
|
|
Try
|
|
If tbAlerta Is Nothing Then
|
|
tbAlerta = sender
|
|
EstableceAlerta()
|
|
End If
|
|
Catch ex As Exception
|
|
FuncionesDinamicas.ErrorNoControladoAp(Me, ex)
|
|
DXMessageBox.Show(ex.Message, "Error")
|
|
End Try
|
|
End Sub
|
|
Private Sub EstableceAlerta()
|
|
Try
|
|
If tbAlerta IsNot Nothing Then
|
|
Dim ra As asientos = Me.DataContext
|
|
If ra.idEjercicioNavigation IsNot Nothing AndAlso ra.idEjercicioNavigation.FechaInicio.Year <> Now.Year Then
|
|
tbAlerta.Visibility = Visibility.Visible
|
|
Dim Emp = ra.idEjercicioNavigation.Descripcion
|
|
tbAlerta.Text = "Atención: Ejercicio " & Emp
|
|
Dim sb As Storyboard = Me.FindResource("sbBlink")
|
|
Storyboard.SetTarget(sb, tbAlerta)
|
|
BeginStoryboard(sb)
|
|
Else
|
|
tbAlerta.Visibility = Visibility.Hidden
|
|
End If
|
|
End If
|
|
Catch ex As Exception
|
|
FuncionesDinamicas.ErrorNoControladoAp(Me, ex)
|
|
DXMessageBox.Show(ex.Message, "Error")
|
|
End Try
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
|
|
Private Sub GcNumeroCuenta_Validate(sender As Object, e As GridCellValidationEventArgs)
|
|
Try
|
|
If e IsNot Nothing AndAlso e.Value IsNot Nothing Then
|
|
If gcApuntes.CurrentItem Is Nothing Then tvApuntes.AddNewRow()
|
|
Dim NumeroCuenta As String = e.Value.ToString
|
|
If Not bd.cuentas.Any(Function(x) x.NumeroCuenta = NumeroCuenta And x.EsCuentaFinal And x.idEjercicio = ra.idEjercicio) Then
|
|
If NumeroCuenta.Contains(".") Then
|
|
NumeroCuenta = NumeroCuenta.Replace(".", "0".PadRight(9 - NumeroCuenta.Length, "0")).Acortar(8)
|
|
End If
|
|
If Not bd.cuentas.Any(Function(x) x.NumeroCuenta = NumeroCuenta And x.EsCuentaFinal And x.idEjercicio = ra.idEjercicio) Then
|
|
e.SetError("Nº de cuenta incorrecto")
|
|
Else
|
|
Dim ap As apuntes = gcApuntes.CurrentItem
|
|
ap.NumeroCuentaTmp = NumeroCuenta
|
|
End If
|
|
Else
|
|
Dim ap As apuntes = gcApuntes.CurrentItem
|
|
ap.NumeroCuentaTmp = NumeroCuenta
|
|
End If
|
|
End If
|
|
Catch ex As Exception
|
|
FuncionesDinamicas.ErrorNoControladoAp(Me, ex)
|
|
DXMessageBox.Show(ex.Message, "Error")
|
|
End Try
|
|
End Sub
|
|
|
|
|
|
Private Sub VerDocumento_Click(sender As Object, e As RoutedEventArgs)
|
|
If gcApuntes.CurrentItem IsNot Nothing Then
|
|
Dim ap As apuntes = gcApuntes.CurrentItem
|
|
VerDocumentoApunte(bd, ap)
|
|
End If
|
|
End Sub
|
|
Friend Shared Sub VerDocumentoApunte(bd As tscGrupoSanchoToro, ap As apuntes)
|
|
If ap.NumeroDocumento.NothingAVacio <> "" AndAlso ap.TipoDocumento.HasValue Then
|
|
Select Case ap.TipoDocumento
|
|
Case TiposDocumentos.RECIBO
|
|
Dim rec = bd.movimientoscaja.FirstOrDefault(Function(x) x.idMovimiento = ap.idAplicacion)
|
|
If rec IsNot Nothing Then
|
|
Dim uc As New ucMovimientoCaja(rec.idMovimiento)
|
|
FuncionesDinamicas.AbrirAP(uc, "")
|
|
Else
|
|
DXMessageBox.Show("El Movimiento no se encuentra", "Atención")
|
|
End If
|
|
Case Else
|
|
DXMessageBox.Show("Tipo Movimiento no disponible", "Atención")
|
|
End Select
|
|
End If
|
|
End Sub
|
|
|
|
' Private Sub apCL_AntesEliminar(sender As Object, e As ItemClickEventArgs, ByRef Cancelar As Boolean, ByRef MensajesError As Hashtable, ByRef EliminacionManual As Boolean) Handles Me.AntesEliminar
|
|
'bd.asientos.DeleteObject(ra)
|
|
'bd.GuardarCambios()
|
|
'Cancelar = True
|
|
' End Sub
|
|
|
|
Private Sub ucDiario_DespuesGuardar(sender As Object, e As ItemClickEventArgs, OpcionGuardado As Integer) Handles Me.DespuesGuardar
|
|
_idAsiento = ra.idAsiento
|
|
ra.RefrescaExtensiones()
|
|
End Sub
|
|
|
|
Private Sub ucDiario_EjecutarAccion(sender As Object, e As ItemClickEventArgs, idAccion As Integer) Handles Me.EjecutarAccion
|
|
Select Case idAccion
|
|
Case 1 ' lee asiento modelo
|
|
If Me.Estado = EstadosAplicacion.Nuevo AndAlso ra.apuntes.Count = 0 AndAlso ra.idEjercicio > 0 Then
|
|
Dim dxwam As New dxwAsientosModelo(bd)
|
|
If dxwam.ShowDialog Then
|
|
Dim am = bd.asientosmodelos.First(Function(x) x.idAsientoModelo = dxwam.idAsientoModelo)
|
|
ra.idAsientoModelo = am.idAsientoModelo
|
|
For Each ap In am.apuntesmodelo.OrderBy(Function(x) x.Orden)
|
|
Dim na As New apuntes
|
|
With na
|
|
Dim CTA = bd.cuentas.FirstOrDefault(Function(x) x.idEjercicio = ra.idEjercicio And x.NumeroCuenta = ap.NumeroCuenta)
|
|
If CTA IsNot Nothing Then
|
|
na.DescripcionCuentaTmp = CTA.Denominacion
|
|
na.NumeroCuentaTmp = CTA.NumeroCuenta
|
|
na.idCuentaNavigation = CTA
|
|
na.Concepto = ap.Concepto
|
|
na.Debe = ap.Debe
|
|
na.Haber = ap.Haber
|
|
na.idConcepto = ap.idConcepto
|
|
na.NumeroDocumento = ap.NumeroDocumento
|
|
na.TipoDocumento = ap.TipoDocumento
|
|
Else
|
|
DXMessageBox.Show("Cuenta " & ap.NumeroCuenta & " no existente.", "Atención")
|
|
End If
|
|
End With
|
|
ra.apuntes.Add(na)
|
|
Next
|
|
Me.gcApuntes.RefreshData()
|
|
End If
|
|
Else
|
|
DXMessageBox.Show("Solo se pueden leer apuntes si aún está sin apuntes y tiene fecha", "Atención")
|
|
End If
|
|
Case 2
|
|
Dim SoloLectura = Not Me.ContenedorAplicacion.btGuardar.IsEnabled
|
|
Dim Continuar = SoloLectura
|
|
If Not SoloLectura Then
|
|
Continuar = Me.Guardar(Nothing, Nothing, True) = False
|
|
End If
|
|
If Continuar Then
|
|
Dim uc As New ucAsientoModelo(Nothing, ra.idAsiento)
|
|
FuncionesDinamicas.AbrirAP(uc, OtrosParametros)
|
|
End If
|
|
End Select
|
|
End Sub
|
|
|
|
Private Sub tvApuntes_PreviewKeyDown(sender As Object, e As KeyEventArgs) Handles tvApuntes.PreviewKeyDown
|
|
If e.Key = Key.F6 Then
|
|
Select Case gcApuntes.CurrentColumn.FieldName.ToLower
|
|
Case "numerocuentatmp"
|
|
tvApuntes.ShowEditor()
|
|
BtCuenta_DefaultButtonClick(Nothing, Nothing)
|
|
Case "concepto"
|
|
tvApuntes.ShowEditor()
|
|
BtConcepto_DefaultButtonClick(Nothing, Nothing)
|
|
End Select
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub gcApuntes_EnterPulsado() Handles gcApuntes.EnterPulsado
|
|
Select Case gcApuntes.CurrentColumn.FieldName.ToLower
|
|
Case "concepto"
|
|
If tvApuntes.FocusedRowHandle = DataControlBase.NewItemRowHandle Then
|
|
If gcApuntes.CurrentItem Is Nothing Then tvApuntes.AddNewRow()
|
|
Dim ap As apuntes = gcApuntes.CurrentItem
|
|
Dim apant = ra.apuntes.LastOrDefault(Function(x) x.Concepto <> "")
|
|
If apant IsNot Nothing Then
|
|
ap.idConcepto = apant.idConcepto
|
|
ap.Concepto = apant.Concepto
|
|
End If
|
|
gcApuntes.RefreshRow(tvApuntes.FocusedRowHandle)
|
|
End If
|
|
Case "tipodocumento"
|
|
If tvApuntes.FocusedRowHandle = DataControlBase.NewItemRowHandle Then
|
|
If gcApuntes.CurrentItem Is Nothing Then tvApuntes.AddNewRow()
|
|
Dim ap As apuntes = gcApuntes.CurrentItem
|
|
Dim apant = ra.apuntes.LastOrDefault(Function(x) x.TipoDocumento.HasValue)
|
|
If apant IsNot Nothing Then
|
|
ap.TipoDocumento = apant.TipoDocumento
|
|
End If
|
|
gcApuntes.RefreshRow(tvApuntes.FocusedRowHandle)
|
|
End If
|
|
Case "numerodocumento"
|
|
If tvApuntes.FocusedRowHandle = DataControlBase.NewItemRowHandle Then
|
|
If gcApuntes.CurrentItem Is Nothing Then tvApuntes.AddNewRow()
|
|
Dim ap As apuntes = gcApuntes.CurrentItem
|
|
Dim apant = ra.apuntes.LastOrDefault(Function(x) x.NumeroDocumento.NothingAVacio <> "")
|
|
If apant IsNot Nothing Then
|
|
ap.NumeroDocumento = apant.NumeroDocumento
|
|
End If
|
|
gcApuntes.RefreshRow(tvApuntes.FocusedRowHandle)
|
|
End If
|
|
Case "numerocuentatmp"
|
|
If tvApuntes.FocusedRowHandle = DataControlBase.NewItemRowHandle Then
|
|
If gcApuntes.CurrentItem Is Nothing Then tvApuntes.AddNewRow()
|
|
Dim ap As apuntes = gcApuntes.CurrentItem
|
|
Dim apant = ra.apuntes.LastOrDefault
|
|
If apant IsNot Nothing Then
|
|
ap.NumeroCuentaTmp = apant.NumeroCuentaTmp
|
|
Dim cta = bd.cuentas.FirstOrDefault(Function(x) x.NumeroCuenta = ap.NumeroCuentaTmp And x.idEjercicio = ra.idEjercicio)
|
|
If cta IsNot Nothing Then
|
|
ap.DescripcionCuentaTmp = cta.Denominacion
|
|
ap.idCuentaNavigation = cta
|
|
End If
|
|
gcApuntes.RefreshRow(tvApuntes.FocusedRowHandle)
|
|
End If
|
|
End If
|
|
End Select
|
|
End Sub
|
|
|
|
Private Sub ucDiario_ErrorGuardando(sender As Object, ex As Exception, OpcionGuardado As Integer) Handles Me.ErrorGuardando
|
|
Try
|
|
|
|
' //IEnumerable<Microsoft.EntityFrameworkCore.ChangeTracking.EntityEntry> res = from e in this.ChangeTracker.Entries()
|
|
'// where e.State.HasFlag(Microsoft.EntityFrameworkCore.EntityState.Added) ||
|
|
'// e.State.HasFlag(Microsoft.EntityFrameworkCore.EntityState.Modified) ||
|
|
'// e.State.HasFlag(Microsoft.EntityFrameworkCore.EntityState.Deleted)
|
|
'// select e;
|
|
|
|
'//if (res.Any())
|
|
'// return true;
|
|
'//return false;
|
|
|
|
Dim ea = bd.ChangeTracker.Entries.Where(Function(x) x.State.HasFlag(EntityState.Added))
|
|
Dim ee = bd.ChangeTracker.Entries.Where(Function(x) x.State.HasFlag(EntityState.Deleted))
|
|
Dim em = bd.ChangeTracker.Entries.Where(Function(x) x.State.HasFlag(EntityState.Modified))
|
|
|
|
Dim sMensaje As String = "Entidades Añadidas: " & ea.Count.ToString
|
|
For Each ent In ea
|
|
Select Case ent.Entity.GetType
|
|
Case GetType(apuntes)
|
|
Dim ap As apuntes = ent.Entity
|
|
sMensaje &= vbCrLf & " Nº Asiento " & ap.idAsiento.ToString & " Concepto " & ap.Concepto & " Debe " & ap.Debe.ToString("c2") & " Haber " & ap.Haber.ToString("c2")
|
|
End Select
|
|
Next
|
|
sMensaje &= vbCrLf & "Entidades Eliminadas: " & ee.Count.ToString
|
|
For Each ent In ee
|
|
Select Case ent.Entity.GetType
|
|
Case GetType(apuntes)
|
|
Dim ap As apuntes = ent.Entity
|
|
sMensaje &= vbCrLf & " Nº Asiento " & ap.idAsiento.ToString & " Concepto " & ap.Concepto & " Debe " & ap.Debe.ToString("c2") & " Haber " & ap.Haber.ToString("c2") & " idApunte " & ap.idApunte.ToString
|
|
End Select
|
|
Next
|
|
|
|
sMensaje &= vbCrLf & "Entidades Modificadas: " & ee.Count.ToString
|
|
For Each ent In ee
|
|
Select Case ent.Entity.GetType
|
|
Case GetType(apuntes)
|
|
Dim ap As apuntes = ent.Entity
|
|
sMensaje &= vbCrLf & " Nº Asiento " & ap.idAsiento.ToString & " Concepto " & ap.Concepto & " Debe " & ap.Debe.ToString("c2") & " Haber " & ap.Haber.ToString("c2") & " idApunte " & ap.idApunte.ToString
|
|
End Select
|
|
Next
|
|
Dim ex2 As New Exception(sMensaje, ex)
|
|
FuncionesDinamicas.ErrorNoControladoAp(Me, ex2)
|
|
Catch exc As Exception
|
|
FuncionesDinamicas.ErrorNoControladoAp(Me, exc)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub ucDiario_CampoActualizado(sender As Object, e As DataTransferEventArgs) Handles Me.CampoActualizado
|
|
Dim pts As PropiedadesTS = sender.parent.propiedadests
|
|
If Not pts Is Nothing Then
|
|
Select Case pts.NombreCampo.ToLower
|
|
Case "fecha"
|
|
Dim uEc = bd.ejercicioscontables.FirstOrDefault(Function(x) x.FechaInicio <= ra.Fecha And x.FechaFin >= ra.Fecha And x.FechaCierre Is Nothing)
|
|
If uEc Is Nothing Then
|
|
uEc = bd.ejercicioscontables.Where(Function(x) x.FechaCierre Is Nothing).OrderByDescending(Function(x) x.FechaInicio).First
|
|
ra.Fecha = uEc.FechaInicio
|
|
End If
|
|
ra.idEjercicioNavigation = uEc
|
|
ra.EjercicioTmp = uEc.Descripcion
|
|
End Select
|
|
End If
|
|
End Sub
|
|
End Class
|