684 lines
32 KiB
VB.net
684 lines
32 KiB
VB.net
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 tsWPFCore.modExtensiones
|
|
Imports System.Data.Common
|
|
Imports bdGrupoSanchoToro.db
|
|
Imports tsUtilidades.Datos
|
|
Imports DevExpress.Xpf.Bars
|
|
Imports DevExpress.Xpf.Grid
|
|
Imports System.Collections
|
|
Imports tsEFCore8.Extensiones
|
|
Imports bdGrupoSanchoToro.db.Utilidades
|
|
|
|
Imports tsUtilidades.Enumeraciones
|
|
Imports tsUtilidades
|
|
Imports bdGrupoSanchoToro.db.productos
|
|
Imports System.IO
|
|
Imports Microsoft.Win32
|
|
Imports tsUtilidades.Extensiones
|
|
|
|
'TODO: Comprobar cuando se puede modificar una factura (o eliminar)
|
|
Public Class ucFacturaRecibida
|
|
Private bd As tscGrupoSanchoToro
|
|
Friend _idFactura As Nullable(Of Integer)
|
|
Private lProductos As List(Of productos)
|
|
Private ivas As List(Of enumeraciones)
|
|
Friend idLog As Integer?
|
|
Dim ra As facturasrecibidas
|
|
Public Overrides Sub Cargado()
|
|
Me.Tipo_ucControlBusqueda = GetType(ucFacturasRecibidas)
|
|
End Sub
|
|
|
|
Public Overrides Sub EstableceDataContextSecundarios(Optional Background As Boolean = False)
|
|
Try
|
|
lProductos = bd.productos.OrderBy(Function(x) x.Descripcion).ToList
|
|
Dim lProductosFra = ra.detallesfacturasrecibidas.Select(Function(x) x.idProducto).ToArray
|
|
lProductos = lProductos.Where(Function(x) x.FechaBaja Is Nothing OrElse lProductosFra.Contains(x.idProducto)).ToList
|
|
cbProducto.ItemsSource = lProductos
|
|
|
|
|
|
'For Each d In ra.detallesfacturasrecibidas
|
|
' If Not ivas.Contains(d.PorcentajeIVA) Then ivas.Add(d.PorcentajeIVA)
|
|
'Next
|
|
|
|
cbIva.ItemsSource = ivas
|
|
cbTipoDocumento.ItemsSource = tsUtilidades.DescripcionValor.EnumADescripcionValor(GetType(bdGrupoSanchoToro.db.documentosfacturasrecibidas.TipoDocumentoFacturaEnum)).OrderBy(Function(x) x.Descripcion)
|
|
cbCategoria.ItemsSource = bd.enumeraciones.Where(Function(x) x.idGrupoEnumeracionNavigation.Grupo = "CATFR").OrderBy(Function(x) x.Descripcion).ToList
|
|
Dim plantillas As List(Of tsWPFCore.Plantilla) = Comun.ObtienePlantillas(bd, {"GRUPLA.FACREC"}, False)
|
|
Me.ContenedorAplicacion.cbPlantillaAImprimir.ItemsSource = plantillas
|
|
If plantillas.Count > 0 Then
|
|
Me.ContenedorAplicacion.bePlantilla.EditValue = plantillas.First.idPlantilla
|
|
End If
|
|
Catch ex As Exception
|
|
Throw New Exception(ex.Message, ex)
|
|
End Try
|
|
End Sub
|
|
|
|
|
|
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
|
|
|
|
ivas = bd.enumeraciones.Where(Function(x) x.idGrupoEnumeracionNavigation.Grupo = "PIVA").OrderBy(Function(x) x.ValorNumerico2).ToList
|
|
|
|
If idLog.HasValue Then
|
|
Try
|
|
Dim log = bd.logs.First(Function(x) x.idLog = idLog)
|
|
ra = tsUtilidades.Utilidades.DeserializarSinErrores(log.Log, GetType(facturasrecibidas))
|
|
If ra.idUsuario.HasValue Then ra.idUsuarioNavigation = bd.usuarios.FirstOrDefault(Function(x) x.idUsuario = ra.idUsuario.Value)
|
|
Dim df = bd.logs.FirstOrDefault(Function(x) x.idRelacionado = log.idLog AndAlso x.Aplicacion = "DETALLESFACTURASRECIBIDAS")
|
|
If df IsNot Nothing Then
|
|
Dim ld = tsUtilidades.Utilidades.DeserializarSinErrores(df.Log, GetType(List(Of detallesfacturasrecibidas)))
|
|
For Each d In ld
|
|
ra.detallesfacturasrecibidas.Add(d)
|
|
Next
|
|
End If
|
|
Dim mv = bd.logs.FirstOrDefault(Function(x) x.idRelacionado = log.idLog AndAlso x.Aplicacion = "MOVIMIENTOSCAJA_FR")
|
|
If mv IsNot Nothing Then
|
|
Dim ld = tsUtilidades.Utilidades.DeserializarSinErrores(mv.Log, GetType(List(Of movimientoscaja)))
|
|
For Each d In ld
|
|
ra.movimientoscaja.Add(d)
|
|
Next
|
|
End If
|
|
Dim lent = bd.logs.FirstOrDefault(Function(x) x.idRelacionado = log.idLog AndAlso x.Aplicacion = "ENTIDADES")
|
|
If lent IsNot Nothing Then
|
|
Dim ent = tsUtilidades.Utilidades.DeserializarSinErrores(lent.Log, GetType(entidades))
|
|
ra.idProveedorNavigation = ent
|
|
lgDatosProveedor.DataContext = ra.idProveedorNavigation
|
|
End If
|
|
Dim lfic = bd.logs.FirstOrDefault(Function(x) x.idRelacionado = log.idLog AndAlso x.Aplicacion = "FICHEROS")
|
|
If lfic IsNot Nothing Then
|
|
Dim fic = tsUtilidades.Utilidades.DeserializarSinErrores(lfic.Log, GetType(db.ficheros))
|
|
ra.idFicheroNavigation = fic
|
|
End If
|
|
NuevoEstado = tsUtilidades.EstadosAplicacion.ModificandoRegistro
|
|
Catch EX As Exception
|
|
Throw New Exception("No ha sido posible mostrar el registro del cambio (id " & idLog.Value.ToString & ").", EX)
|
|
End Try
|
|
Else
|
|
If FuerzaNuevo OrElse _idFactura Is Nothing Then
|
|
ra = New facturasrecibidas
|
|
ra.FechaFactura = DateOnly.FromDateTime(Today)
|
|
_idFactura = Nothing
|
|
ra.FechaRegistro = DateOnly.FromDateTime(Today)
|
|
NuevoEstado = tsUtilidades.EstadosAplicacion.Nuevo
|
|
lgDatosProveedor.DataContext = ra.idProveedorNavigation
|
|
Else
|
|
ra = bd.facturasrecibidas.First(Function(x) x.idFactura = _idFactura)
|
|
NuevoEstado = tsUtilidades.EstadosAplicacion.ModificandoRegistro
|
|
lgDatosProveedor.DataContext = ra.idProveedorNavigation
|
|
End If
|
|
End If
|
|
cbIVA.ItemsSource = ivas
|
|
Dim lCajas = bd.cajas.Where(Function(x) x.idEmpresa = EmpresaActual.idEmpresa).ToList.Where(Function(x) (x.FechaBaja.HasValue = False OrElse ra.movimientoscaja.Any(Function(y) y.idCaja = x.idCaja))).OrderBy(Function(x) x.Descripcion).ToList
|
|
Me.cbCaja.ItemsSource = lCajas
|
|
|
|
|
|
|
|
|
|
|
|
cbRazonSocial.ItemsSource = bd.entidades.Where(Function(x) x.idEmpresa = EmpresaActual.idEmpresa AndAlso ((x.EsProveedor AndAlso x.FechaBaja.HasValue = False) OrElse x.idEntidad = ra.idProveedor)).ToList
|
|
gcDetalle.ItemsSource = ra.detallesfacturasrecibidas
|
|
gcRecibos.ItemsSource = ra.movimientoscaja
|
|
gcDocumentos.ItemsSource = ra.documentosfacturasrecibidas
|
|
Me.gcLogs.ItemsSource = bd.logs.Where(Function(x) x.id = ra.idFactura AndAlso x.Aplicacion = "FACTURASRECIBIDAS").ToList
|
|
|
|
'Dim Acciones As New List(Of tsWPFCore.Accion)
|
|
'Acciones.Add(New Accion With {
|
|
' .idAccion = 1,
|
|
' .Descripcion = "AGREGAR PRODUCTOS PENDIENTES DE FACTURAR"})
|
|
'Acciones.Add(New Accion With {
|
|
' .idAccion = 2,
|
|
' .Descripcion = "SALDAR FACTURA POR CAJA CONTADO"})
|
|
'Acciones.Add(New Accion With {
|
|
' .idAccion = 3,
|
|
' .Descripcion = "SALDAR FACTURA POR TPV"})
|
|
'Acciones.Add(New Accion With {
|
|
' .idAccion = 4,
|
|
' .Descripcion = "SALDAR FACTURA POR BANCO"})
|
|
'Me.ContenedorAplicacion.cbAcciones.ItemsSource = Acciones
|
|
'Me.ContenedorAplicacion.beAcciones.EditValue = Acciones.First.idAccion
|
|
Me.DataContext = ra
|
|
Return NuevoEstado
|
|
End Function
|
|
|
|
Public Overrides Function ObtieneBD() As tsUtilidades.ItsContexto
|
|
bd = tscGrupoSanchoToro.NuevoContexto
|
|
Return bd
|
|
End Function
|
|
|
|
Public Overrides ReadOnly Property NombreTablaBase As String
|
|
Get
|
|
Return "facturasrecibidas"
|
|
End Get
|
|
End Property
|
|
|
|
'Public Overrides ReadOnly Property CampoIndice As String
|
|
' Get
|
|
' Return "idFactura"
|
|
' End Get
|
|
'End Property
|
|
Public Overrides ReadOnly Property idRegistroAplicacionActual As String
|
|
Get
|
|
If idLog.HasValue Then
|
|
Return "Gastos / Factura Proveedor R.C.:" & idLog.ToString
|
|
Else
|
|
If Me.Estado = tsUtilidades.EstadosAplicacion.Nuevo Then
|
|
Return "Gastos / Factura Proveedor.Nuevo"
|
|
Else
|
|
Return "Gastos / Factura Proveedor." & DirectCast(Me.DataContext, facturasrecibidas).idFactura.ToString
|
|
End If
|
|
End If
|
|
End Get
|
|
End Property
|
|
|
|
Public Overrides ReadOnly Property DescripcionRegistro As String
|
|
Get
|
|
Return "Gastos / Factura Proveedor"
|
|
End Get
|
|
End Property
|
|
|
|
Public Sub New(Optional idFactura As Integer? = Nothing)
|
|
|
|
' Llamada necesaria para el diseñador.
|
|
InitializeComponent()
|
|
_idFactura = idFactura
|
|
' Agregue cualquier inicialización después de la llamada a InitializeComponent().
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
Public Overrides Sub EstableceTitulo()
|
|
If idLog.HasValue Then
|
|
Dim fr As facturasrecibidas = Me.DataContext
|
|
Me.docpanel.Caption = "R.C. Gastos / Factura de Proveedor " & fr.NumeroFactura
|
|
Me.docpanel.Tag = "R.C. Gastos / Factura Recibida." & fr.NumeroFactura
|
|
Else
|
|
If Me.Estado = tsUtilidades.EstadosAplicacion.ModificandoRegistro Then
|
|
Dim fr As facturasrecibidas = Me.DataContext
|
|
Me.docpanel.Caption = " Gastos / Factura de Proveedor " & fr.NumeroFactura
|
|
Me.docpanel.Tag = " Gastos / Factura Recibida." & fr.NumeroFactura
|
|
Else
|
|
Me.docpanel.Caption = " Gastos / Factura de Proveedor Nueva"
|
|
Me.docpanel.Tag = " Gastos / FacturaRecibida.Nuevo"
|
|
End If
|
|
End If
|
|
' End If
|
|
'End If
|
|
End Sub
|
|
|
|
Public Overrides Function ObtienePermisos() As tsUtilidades.Permisos
|
|
Dim pers = Comun.ObtienePermisos(Me.bd, "AP.ADMINISTRATIVOS", idUsuario)
|
|
' pers.Eliminar = False
|
|
Return pers
|
|
End Function
|
|
|
|
|
|
Private Sub ap_ValidarControl(sender As Object, e As ValidationEventArgs, ByRef ev As ErrorValidacion, ByRef ValorOriginalCambiado As Object) Handles Me.ValidarControl
|
|
Dim pts As PropiedadesTS = sender.parent.propiedadests
|
|
Try
|
|
If Not pts Is Nothing Then
|
|
Me.ErroresValidacion.EliminaError("validando-" & pts.NombreCampo)
|
|
Dim ra As facturasrecibidas = Me.DataContext
|
|
Select Case pts.NombreCampo.ToLower
|
|
Case "idproveedor_nulable"
|
|
Dim id As Integer = e.Value
|
|
Dim ent = bd.entidades.First(Function(x) x.idEntidad = id)
|
|
lgDatosProveedor.DataContext = ent
|
|
End Select
|
|
End If
|
|
Catch ex As Exception
|
|
Dim sCodigoError As String = "validando-"
|
|
If pts IsNot Nothing Then
|
|
sCodigoError &= pts.NombreCampo
|
|
End If
|
|
ev = New ErrorValidacion(sCodigoError, sender, ex.Message, ex, DevExpress.XtraEditors.DXErrorProvider.ErrorType.Critical)
|
|
e.IsValid = False
|
|
End Try
|
|
End Sub
|
|
|
|
|
|
Private Sub ap_DespuesGuardar(sender As Object, e As ItemClickEventArgs, OpcionGuardado As Integer) Handles Me.DespuesGuardar
|
|
_idFactura = ra.idFactura
|
|
RefrescaUC()
|
|
' Me.gcRecibos.ItemsSource = ra.movimientoscaja
|
|
' Me.gcLogs.ItemsSource = bd.logs.Where(Function(x) x.id = ra.idFactura AndAlso x.Aplicacion = "FACTURASRECIBIDAS").ToList
|
|
End Sub
|
|
|
|
|
|
Private Sub ap_Enlazar(Celda As EditGridCellData, Defecto As Boolean) Handles Me.Enlazar
|
|
Dim ra As facturasrecibidas = Me.DataContext
|
|
Select Case Celda.Column.FieldName.ToLower
|
|
Case "idlog"
|
|
Dim log As logs = gcLogs.CurrentItem
|
|
Dim id As Integer = log.idLog
|
|
Dim uc As New ucFacturaRecibida
|
|
uc.idLog = log.idLog
|
|
FuncionesDinamicas.AbrirAP(uc, OtrosParametros)
|
|
End Select
|
|
'Select Case Celda.Column.FieldName.ToLower
|
|
' Case "numeroalbaranentrega"
|
|
' Dim ra = DirectCast(Me.gcDetalle.CurrentItem, detallesfacturasrecibidas)
|
|
' Dim id As Integer = ra.detallesalbaranes.idAlbaranEntrega
|
|
' FuncionesDinamicas.AbrirAP(New ucAlbaranEntrega(id), OtrosParametros)
|
|
' Case "numeroalbaranrecogida"
|
|
' Dim ra = DirectCast(Me.gcDetalle.CurrentItem, detallesfacturasrecibidas)
|
|
' Dim id As Integer = ra.detallesalbaranes.idAlbaranRecogida
|
|
' FuncionesDinamicas.AbrirAP(New ucAlbaranRecogida(id), OtrosParametros)
|
|
'End Select
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Private Sub ap_EstadoCambiado(EstadoAnterior As tsUtilidades.EstadosAplicacion, EstadoNuevo As tsUtilidades.EstadosAplicacion) Handles Me.EstadoCambiado
|
|
Select Case EstadoNuevo
|
|
Case EstadosAplicacion.ModificandoRegistro
|
|
Dim ra As facturasrecibidas = Me.DataContext
|
|
|
|
' Dim ra As albaranesrecogida = Me.DataContext
|
|
' If ra.detallesfacturasrecibidas.ToList.Any(Function(x) x.idAlbaranRecogida.HasValue OrElse (x.idUltimaFactura.HasValue AndAlso (x.facturasrecibidas.Fecha > ra.Fecha.Date))) Then me.EstableceSoloLectura()
|
|
End Select
|
|
If idLog.HasValue Then EstableceSoloLectura()
|
|
EstableceSoloLecturaCI()
|
|
End Sub
|
|
|
|
|
|
Private Sub BiBuscarProducto_Click(sender As Object, e As RoutedEventArgs)
|
|
'Dim dxw As New dxwProductos(lProductos)
|
|
'If dxw.ShowDialog Then
|
|
' If gcDetalle.CurrentItem Is Nothing Then tvDetalle.AddNewRow()
|
|
' Dim def As detallesfacturasrecibidas = gcDetalle.CurrentItem
|
|
' Dim prod = lProductos.First(Function(x) x.idProducto = dxw.idProducto)
|
|
' def.idProducto = prod.idProducto
|
|
' RellenaDatosProducto(def)
|
|
' tvDetalle.MoveNextCell()
|
|
' gcDetalle.RefreshRow(tvDetalle.FocusedRowHandle)
|
|
'End If
|
|
If tvDetalle.ActiveEditor Is Nothing Then
|
|
Dispatcher.BeginInvoke(New Action(Sub() tvDetalle.ShowEditor()), System.Windows.Threading.DispatcherPriority.Render)
|
|
End If
|
|
|
|
Dim dxw As New dxwProductos(lProductos)
|
|
If dxw.ShowDialog Then
|
|
If gcDetalle.CurrentItem Is Nothing Then tvDetalle.AddNewRow()
|
|
Dim def As detallesfacturasrecibidas = gcDetalle.CurrentItem
|
|
Dim prod = lProductos.First(Function(x) x.idProducto = dxw.idProducto)
|
|
def.idProducto = prod.idProducto
|
|
If tvDetalle.ActiveEditor IsNot Nothing Then tvDetalle.ActiveEditor.EditValue = prod.idProducto
|
|
tvDetalle.PostEditor()
|
|
tvDetalle.CloseEditor()
|
|
gcDetalle.RefreshRow(tvDetalle.FocusedRowHandle)
|
|
End If
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
|
|
Private Sub ap_AntesGuardar(sender As Object, e As ItemClickEventArgs, ByRef Cancelar As Boolean, ByRef MensajesError As Hashtable, OpcionGuardado As Integer) Handles Me.AntesGuardar
|
|
|
|
ra.idUsuario = idUsuario
|
|
Dim hte As New Hashtable
|
|
If ra.detallesfacturasrecibidas.Count = 0 Then
|
|
hte.Add("ALMACENAR-DETALLE_OBLIGATORIO", "Es obligatorio introducir al menos un artículo")
|
|
End If
|
|
If bd.facturasrecibidas.Any(Function(x) x.NumeroFactura = ra.NumeroFactura AndAlso x.idProveedor = ra.idProveedor AndAlso x.idFactura <> ra.idFactura) Then
|
|
hte.Add("ALMACENAR-YA-EXISTE-OTRA-FACTURA", "Ya existe esta factura del mismo cliente registrada")
|
|
End If
|
|
If ra.TotalFactura = 0 Then
|
|
hte.Add("ALMACENAR-IMPORTE_0", "El total de la factura no puede ser 0")
|
|
End If
|
|
If Math.Abs(ra.ImportePagado) > Math.Abs(ra.TotalFactura) Then
|
|
hte.Add("ALMACENAR-IMPORTE_PAGADO_SUPERIOR", "El importe pagado de los recibos no puede superar al total de la factura")
|
|
End If
|
|
|
|
If hte.Count > 0 Then
|
|
MensajesError = hte
|
|
Cancelar = True
|
|
Else
|
|
For Each mv In ra.movimientoscaja
|
|
mv.Tipo = TipoMovimientoEnum.RECIBO_PROVEEDOR
|
|
If mv.idUsuario.HasValue = False Then mv.idUsuario = idUsuario
|
|
Next
|
|
For Each d In ra.documentosfacturasrecibidas
|
|
If d.idUsuario.HasValue = False Then d.idUsuario = idUsuario
|
|
Next
|
|
If ra.ImportePendiente = 0 Then
|
|
ra.FechaPago = DateOnly.FromDateTime(ra.movimientoscaja.OrderByDescending(Function(x) x.Fecha).First.Fecha)
|
|
Else
|
|
ra.FechaPago = Nothing
|
|
End If
|
|
If ra.PorcentajeIVA2.HasValue = False Then
|
|
ra.BaseImponible2 = Nothing
|
|
ra.CuotaIVA2 = Nothing
|
|
End If
|
|
If ra.PorcentajeIVA3.HasValue = False Then
|
|
ra.BaseImponible3 = Nothing
|
|
ra.CuotaIVA3 = Nothing
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub tvDetalle_CellValueChanged(sender As Object, e As CellValueChangedEventArgs) Handles tvDetalle.CellValueChanged
|
|
Try
|
|
Dim def As detallesfacturasrecibidas = e.Row
|
|
Select Case e.Column.FieldName.ToLower
|
|
Case "idproducto"
|
|
RellenaDatosProducto(def)
|
|
'Case "cantidad", "precio"
|
|
' def.RefrescaImporte()
|
|
Case "idtipoiva"
|
|
Dim idTIVA = CInt(e.Value)
|
|
def.PorcentajeIVA = ivas.First(Function(x) x.idEnumeracion = idTIVA).ValorNumerico1
|
|
End Select
|
|
Catch ex As Exception
|
|
|
|
End Try
|
|
End Sub
|
|
Private Sub RellenaDatosProducto(dea As detallesfacturasrecibidas)
|
|
Dim ae As facturasrecibidas = Me.DataContext
|
|
Dim pr = lProductos.First(Function(x) x.idProducto = dea.idProducto)
|
|
dea.Precio = pr.UltimoPrecioCompra
|
|
If dea.Cantidad = 0 Then dea.Cantidad = 1
|
|
'dea.RefrescaImporte()
|
|
End Sub
|
|
|
|
Private Sub BiBuscarProveedor_Click(sender As Object, e As RoutedEventArgs)
|
|
If Me.ContenedorAplicacion.btGuardar.IsEnabled Then
|
|
Dim dxw As New dxwEntidades(bd, False, True)
|
|
If dxw.ShowDialog Then
|
|
Dim ra As facturasrecibidas = Me.DataContext
|
|
Dim ent = bd.entidades.First(Function(x) x.idEntidad = dxw.Entidad.idEntidad)
|
|
ra.idProveedorNavigation = ent
|
|
ra.idProveedor_Nulable = ent.idEntidad
|
|
lgDatosProveedor.DataContext = ent
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Private Sub ap_ImprimirPlantilla(sender As Object, e As ItemClickEventArgs, idPlantilla As Integer, Previsualizar As Boolean) Handles Me.ImprimirPlantilla
|
|
Imprimir(idPlantilla, False, 1)
|
|
End Sub
|
|
Private Sub Imprimir(idPlantilla As Integer, ImpresoraDefecto As Boolean, Copias As Integer)
|
|
|
|
Dim ds As List(Of facturasrecibidas)
|
|
Dim pl = bd.plantillas.AsNoTracking.Where(Function(x) x.idPlantilla = idPlantilla).Select(Function(x) New With {.Fichero = x.idFicheroNavigation.Fichero, .Tipo = x.idGrupoNavigation.Codigo}).FirstOrDefault
|
|
ds = New List(Of facturasrecibidas)
|
|
ds.Add(ra)
|
|
Informes.ImprimirPlantilla(bd, pl.Fichero, ds, ImpresoraDefecto, Copias)
|
|
|
|
End Sub
|
|
|
|
|
|
'Private Sub ap_EjecutarAccion(sender As Object, e As ItemClickEventArgs, idAccion As Integer) Handles Me.EjecutarAccion
|
|
|
|
|
|
'End Sub
|
|
|
|
|
|
Private Sub tvDetalle_RowUpdated(sender As Object, e As DevExpress.Xpf.Grid.RowEventArgs) Handles tvDetalle.RowUpdated
|
|
Call CalculaTotales()
|
|
End Sub
|
|
Sub CalculaTotales()
|
|
Dim ra As facturasrecibidas = Me.DataContext
|
|
Dim ivas(2) As Double?
|
|
For Each df In ra.detallesfacturasrecibidas.Where(Function(x) x.PorcentajeIVA.HasValue).ToList
|
|
For i = 0 To 3
|
|
If i = 3 Then Throw New Exception("Demasiados tipos de iva en la misma factura.")
|
|
If ivas(i).HasValue = False OrElse ivas(i).Value = df.PorcentajeIVA Then
|
|
ivas(i) = df.PorcentajeIVA
|
|
Exit For
|
|
End If
|
|
Next
|
|
Next
|
|
ra.PorcentajeIVA1 = ivas(0)
|
|
ra.PorcentajeIVA2 = ivas(1)
|
|
ra.PorcentajeIVA3 = ivas(2)
|
|
ra.BaseImponibleExenta = ra.detallesfacturasrecibidas.Where(Function(x) x.PorcentajeIVA.HasValue = False).Sum(Function(x) x.Importe)
|
|
ra.BaseImponible1 = Nothing
|
|
ra.BaseImponible2 = Nothing
|
|
ra.BaseImponible3 = Nothing
|
|
If ivas(0).HasValue Then ra.BaseImponible1 = ra.detallesfacturasrecibidas.Where(Function(x) x.PorcentajeIVA.HasValue AndAlso x.PorcentajeIVA = ivas(0)).Sum(Function(x) x.Importe)
|
|
If ivas(1).HasValue Then ra.BaseImponible2 = ra.detallesfacturasrecibidas.Where(Function(x) x.PorcentajeIVA.HasValue AndAlso x.PorcentajeIVA = ivas(1)).Sum(Function(x) x.Importe)
|
|
If ivas(2).HasValue Then ra.BaseImponible3 = ra.detallesfacturasrecibidas.Where(Function(x) x.PorcentajeIVA.HasValue AndAlso x.PorcentajeIVA = ivas(2)).Sum(Function(x) x.Importe)
|
|
'ra.BaseImponible2 = If(ivas(2).HasValue, ra.detallesfacturasrecibidas.Where(Function(x) x.PorcentajeIVA = ivas(1)).Sum(Function(x) x.Importe), 0)
|
|
'ra.BaseImponible3 = If(ivas(2).HasValue, ra.detallesfacturasrecibidas.Where(Function(x) x.PorcentajeIVA = ivas(2)).Sum(Function(x) x.Importe), 0)
|
|
ra.TotalBaseImponible = Math.Round(ra.detallesfacturasrecibidas.Sum(Function(x) x.Importe), 2)
|
|
CalculaIRPF(ra)
|
|
CalculaCuotasIVA(ra)
|
|
CalculaTotalesFinales(ra)
|
|
End Sub
|
|
Public Sub CalculaIRPF(F As facturasrecibidas)
|
|
F.IRPF = Math.Round(F.TotalBaseImponible * F.PorcentajeIRPF / 100, 2, MidpointRounding.AwayFromZero)
|
|
End Sub
|
|
Public Sub CalculaCuotasIVA(F As facturasrecibidas)
|
|
F.CuotaIVA1 = Nothing
|
|
F.CuotaIVA2 = Nothing
|
|
F.CuotaIVA3 = Nothing
|
|
If F.PorcentajeIVA1.HasValue Then
|
|
F.CuotaIVA1 = Math.Round(F.BaseImponible1.Value * F.PorcentajeIVA1.Value / 100, 2, MidpointRounding.AwayFromZero)
|
|
End If
|
|
If F.PorcentajeIVA2.HasValue Then
|
|
F.CuotaIVA2 = Math.Round(F.BaseImponible2.Value * F.PorcentajeIVA2.Value / 100, 2, MidpointRounding.AwayFromZero)
|
|
End If
|
|
If F.PorcentajeIVA3.HasValue Then
|
|
F.CuotaIVA3 = Math.Round(F.BaseImponible3.Value * F.PorcentajeIVA3.Value / 100, 2, MidpointRounding.AwayFromZero)
|
|
End If
|
|
End Sub
|
|
Public Sub CalculaTotalesFinales(ra As facturasrecibidas)
|
|
ra.TotalIVA = If(ra.CuotaIVA1.HasValue, ra.CuotaIVA1.Value, 0) + If(ra.CuotaIVA2.HasValue, ra.CuotaIVA2.Value, 0) + If(ra.CuotaIVA3.HasValue, ra.CuotaIVA3.Value, 0)
|
|
ra.TotalFactura = Math.Round(ra.TotalBaseImponible + ra.TotalIVA - ra.IRPF, 2, MidpointRounding.AwayFromZero)
|
|
ra.ImportePagado = Math.Round(ra.movimientoscaja.Sum(Function(x) x.ImporteNegativo), 2, MidpointRounding.AwayFromZero)
|
|
|
|
End Sub
|
|
Private Sub tvDetalle_ValidaFila(sender As Object, e As DevExpress.Xpf.Grid.GridRowValidationEventArgs) Handles tvDetalle.ValidateRow
|
|
'Dim df As detallesfacturasrecibidas = e.Row
|
|
'Dim htErrores = New Hashtable
|
|
'If df.Cantidad = 0 Then
|
|
' DXMessageBox.Show("La Cantidad no puede ser 0", "Error")
|
|
' e.SetError("La Cantidad no puede ser 0")
|
|
' e.IsValid = False
|
|
'End If
|
|
Try
|
|
Dim htErrores = New Hashtable
|
|
ErroresValidacion.LimpiarErrores("TSGC-" & gcDetalle.PropiedadesTS.NumeroObjeto.ToString & ":" & e.RowHandle.ToString & ":")
|
|
Dim df As detallesfacturasrecibidas = e.Row
|
|
|
|
If df.Cantidad = 0 Then
|
|
htErrores.Add("Cantidad0", "La Cantidad no puede ser 0")
|
|
End If
|
|
|
|
If htErrores.Count > 0 Then
|
|
Me.AgregaErroresTSGC(gcDetalle, htErrores, e)
|
|
End If
|
|
Catch ex As Exception
|
|
FuncionesDinamicas.ErrorNoControladoAp(Me, ex)
|
|
DXMessageBox.Show(ex.Message, "Error")
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub gcDetalle_DespuesEliminar(gc As tsGridControl) Handles gcDetalle.DespuesEliminar
|
|
CalculaTotales()
|
|
End Sub
|
|
|
|
Private Sub tvRecibos_ValidaFila(sender As Object, e As GridRowValidationEventArgs) Handles tvRecibos.ValidateRow
|
|
'Dim mv As movimientoscaja = e.Row
|
|
'If mv.Importe = 0 Then
|
|
' DXMessageBox.Show("El Importe no puede ser 0", "Error")
|
|
' e.SetError("El Importe no puede ser 0")
|
|
' e.IsValid = False
|
|
'End If
|
|
Try
|
|
Dim htErrores = New Hashtable
|
|
ErroresValidacion.LimpiarErrores("TSGC-" & gcRecibos.PropiedadesTS.NumeroObjeto.ToString & ":" & e.RowHandle.ToString & ":")
|
|
Dim mv As movimientoscaja = e.Row
|
|
|
|
If mv.Importe = 0 Then
|
|
htErrores.Add("Importe0", "El Importe no puede ser 0")
|
|
End If
|
|
If htErrores.Count > 0 Then
|
|
Me.AgregaErroresTSGC(gcRecibos, htErrores, e)
|
|
End If
|
|
Catch ex As Exception
|
|
FuncionesDinamicas.ErrorNoControladoAp(Me, ex)
|
|
DXMessageBox.Show(ex.Message, "Error")
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub gcRecibos_DespuesEliminar(gc As tsGridControl) Handles gcRecibos.DespuesEliminar
|
|
CalculaTotales()
|
|
End Sub
|
|
|
|
Private Sub tvRecibos_RowUpdated(sender As Object, e As RowEventArgs) Handles tvRecibos.RowUpdated
|
|
Dim ra As facturasrecibidas = Me.DataContext
|
|
CalculaTotalesFinales(ra)
|
|
End Sub
|
|
|
|
Private Sub tvRecibos_InitNewRow(sender As Object, e As InitNewRowEventArgs) Handles tvRecibos.InitNewRow
|
|
gcRecibos.SetCellValue(e.RowHandle, "Fecha", Now)
|
|
gcRecibos.SetCellValue(e.RowHandle, "FechaCreacion", Now)
|
|
End Sub
|
|
|
|
Private Sub ucFacturaRecibida_CampoActualizado(sender As Object, e As DataTransferEventArgs) Handles Me.CampoActualizado
|
|
Dim pts As PropiedadesTS = sender.parent.propiedadests
|
|
If Not pts Is Nothing Then
|
|
Dim ra As facturasrecibidas = Me.DataContext
|
|
Select Case pts.NombreCampo.ToLower
|
|
Case "porcentajeirpf"
|
|
CalculaIRPF(ra)
|
|
CalculaTotalesFinales(ra)
|
|
Case "cuotaiva1", "cuotaiva2", "cuotaiva3", "irpf"
|
|
CalculaTotalesFinales(ra)
|
|
Case "idproveedor_nulable"
|
|
ra.idProveedorNavigation = bd.entidades.First(Function(x) x.idEntidad = ra.idProveedor)
|
|
End Select
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub tvDetalle_InitNewRow(sender As Object, e As InitNewRowEventArgs) Handles tvDetalle.InitNewRow
|
|
gcDetalle.SetCellValue(e.RowHandle, "idTipoIVA", ivas.OrderByDescending(Function(x) x.ValorNumerico1).First.idEnumeracion)
|
|
End Sub
|
|
|
|
|
|
|
|
Private Sub tvDetalle_PreviewKeyDown(sender As Object, e As Input.KeyEventArgs) Handles tvDetalle.PreviewKeyDown
|
|
If e.Key = Key.F6 Then
|
|
Select Case gcDetalle.CurrentColumn.FieldName.ToLower
|
|
Case "idproducto"
|
|
tvDetalle.ShowEditor()
|
|
BiBuscarProducto_Click(Nothing, Nothing)
|
|
End Select
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub cbRazonSocial_PreviewKeyDown(sender As Object, e As Input.KeyEventArgs) Handles cbRazonSocial.PreviewKeyDown
|
|
If e.Key = Key.F6 Then
|
|
BiBuscarProveedor_Click(Nothing, Nothing)
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub gcRecibos_AntesEliminar(gc As tsGridControl, ByRef Cancelar As Boolean) Handles gcRecibos.AntesEliminar
|
|
Dim da As movimientoscaja = gc.CurrentItem
|
|
If da.idMovimientoCierre.HasValue Then
|
|
DXMessageBox.Show("No se puede eliminar un pago ya que está cerrado")
|
|
Cancelar = True
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub tvDocumentos_ValidateRow(sender As Object, e As GridRowValidationEventArgs) Handles tvDocumentos.ValidateRow
|
|
Dim ges As documentosfacturasrecibidas = gcDocumentos.CurrentItem
|
|
If ges.idUsuario.HasValue = False Then
|
|
ges.idUsuario = bdGrupoSanchoToro.db.Utilidades.idUsuario
|
|
End If
|
|
End Sub
|
|
Private Sub VerDocumento(sender As System.Object, e As System.Windows.RoutedEventArgs)
|
|
Try
|
|
Dim exp As documentosfacturasrecibidas = gcDocumentos.CurrentItem
|
|
If exp IsNot Nothing AndAlso exp.idFicheroNavigation IsNot Nothing AndAlso exp.idFicheroNavigation.NombreFichero IsNot Nothing AndAlso exp.idFicheroNavigation.Fichero IsNot Nothing Then
|
|
Dim sftmp As String = tsUtilidades.Utilidades.ObtieneDirectorioAleatorio("GrupoSanchoToro") & "\" & exp.idFicheroNavigation.NombreFichero
|
|
tsUtilidades.Utilidades.ByteArrayAFichero(exp.idFicheroNavigation.Fichero, sftmp, True)
|
|
tsUtilidades.Sistema.EjecutaFichero(sftmp)
|
|
End If
|
|
Catch ex As Exception
|
|
End Try
|
|
End Sub
|
|
Private Sub Examinar(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles btFichero.DefaultButtonClick
|
|
Try
|
|
If gcDocumentos.CurrentItem Is Nothing Then tvDocumentos.AddNewRow()
|
|
Dim exp As documentosfacturasrecibidas = gcDocumentos.CurrentItem
|
|
Dim ofd As New OpenFileDialog
|
|
If ofd.ShowDialog() Then
|
|
Dim fin As New FileInfo(ofd.FileName)
|
|
If fin.Length > 1024 * 1024 * 50 Then
|
|
DXMessageBox.Show("El fichero no puede ser mayor de 50 Mb", "Atención")
|
|
Else
|
|
Dim f() As Byte = IO.File.ReadAllBytes(ofd.FileName)
|
|
Dim idTipoDocumentoExp = bd.enumeraciones.First(Function(x) x.Codigo = "TIPFIC.EXPENT").idEnumeracion
|
|
If exp.idFicheroNavigation Is Nothing Then
|
|
Dim fi As New db.ficheros
|
|
exp.idFicheroNavigation = fi
|
|
End If
|
|
exp.idFicheroNavigation.NombreFichero = IO.Path.GetFileName(ofd.FileName)
|
|
exp.idFicheroNavigation.Fichero = f
|
|
exp.idFicheroNavigation.Fecha = Now
|
|
exp.idFicheroNavigation.Descripcion = exp.Descripcion.Acortar(80)
|
|
exp.idFicheroNavigation.idTipo = idTipoDocumentoExp
|
|
exp.Fecha = Now
|
|
Dim usu = bd.usuarios.First(Function(x) x.idUsuario = bdGrupoSanchoToro.db.Utilidades.idUsuario)
|
|
exp.idUsuario = bdGrupoSanchoToro.db.Utilidades.idUsuario
|
|
exp.idUsuarioNavigation = usu
|
|
tvDocumentos.MoveNextCell()
|
|
gcDocumentos.RefreshRow(tvDocumentos.FocusedRowHandle)
|
|
End If
|
|
End If
|
|
Catch ex As Exception
|
|
DXMessageBox.Show(ex.Message, "Error")
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub tvDocumentos_PreviewKeyDown(sender As Object, e As KeyEventArgs)
|
|
If e.Key = Key.F6 AndAlso gcDocumentos.CurrentColumn.FieldName.ToLower = "ficheros.nombrefichero" Then
|
|
Examinar(Nothing, Nothing)
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub tvDocumentos_InitNewRow(sender As Object, e As InitNewRowEventArgs) Handles tvDocumentos.InitNewRow
|
|
gcDocumentos.SetCellValue(e.RowHandle, "Fecha", Now)
|
|
End Sub
|
|
|
|
Private Sub teBI1_EditValueChanged(sender As Object, e As EditValueChangedEventArgs) Handles teBI1.EditValueChanged
|
|
EstableceSoloLectura(teCuotaIVA1, ra IsNot Nothing AndAlso ra.BaseImponible1.HasValue AndAlso ra.BaseImponible1.Value <> 0)
|
|
End Sub
|
|
Private Sub teBI2_EditValueChanged(sender As Object, e As EditValueChangedEventArgs) Handles teBI1.EditValueChanged
|
|
EstableceSoloLectura(teCuotaIVA2, ra IsNot Nothing AndAlso ra.BaseImponible2.HasValue AndAlso ra.BaseImponible2.Value <> 0)
|
|
End Sub
|
|
Private Sub teBI3_EditValueChanged(sender As Object, e As EditValueChangedEventArgs) Handles teBI1.EditValueChanged
|
|
EstableceSoloLectura(teCuotaIVA3, ra IsNot Nothing AndAlso ra.BaseImponible3.HasValue AndAlso ra.BaseImponible3.Value <> 0)
|
|
End Sub
|
|
Private Sub EstableceSoloLecturaCI()
|
|
EstableceSoloLectura(teCuotaIVA1, ra IsNot Nothing AndAlso ra.BaseImponible1.HasValue AndAlso ra.BaseImponible1.Value <> 0)
|
|
EstableceSoloLectura(teCuotaIVA2, ra IsNot Nothing AndAlso ra.BaseImponible2.HasValue AndAlso ra.BaseImponible2.Value <> 0)
|
|
EstableceSoloLectura(teCuotaIVA3, ra IsNot Nothing AndAlso ra.BaseImponible3.HasValue AndAlso ra.BaseImponible3.Value <> 0)
|
|
End Sub
|
|
|
|
End Class
|
|
|