203 lines
7.9 KiB
VB.net
203 lines
7.9 KiB
VB.net
|
|
|
|
|
|
|
|
Imports bdGrupoSanchoToro.tscGrupoSanchoToro
|
|
Imports DevExpress.Xpf.Core
|
|
Imports tsWPFCore
|
|
Imports Microsoft.Win32
|
|
Imports DevExpress.Xpf.Grid
|
|
Imports bdGrupoSanchoToro.db.Utilidades
|
|
Imports bdGrupoSanchoToro.db
|
|
|
|
|
|
Public Class ucPagoMultipleFacturas
|
|
|
|
|
|
Private bd As bdGrupoSanchoToro.tscGrupoSanchoToro
|
|
|
|
|
|
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 Overrides Sub Cargado()
|
|
ContenedorAplicacion.btGuardar.IsVisible = True
|
|
ContenedorAplicacion.btNuevo.IsVisible = False
|
|
ContenedorAplicacion.siEstado.IsVisible = False
|
|
Me.HabilitarRefresco = False
|
|
End Sub
|
|
|
|
|
|
|
|
Public Overrides Function EstablecedcPrincipal(Optional Background As Boolean = False, Optional FuerzaNuevo As Boolean = False, Optional Refrescar As Boolean = False) As tsUtilidades.EstadosAplicacion
|
|
cbRazonSocial.ItemsSource = bd.entidades.Where(Function(x) x.EsCliente AndAlso x.idEmpresa = EmpresaActual.idEmpresa).ToList
|
|
cbCaja.ItemsSource = bd.cajas.OrderBy(Function(x) x.Descripcion AndAlso x.idEmpresa = EmpresaActual.idEmpresa).ToList
|
|
deFechaPago.EditValue = Now.Date
|
|
Return tsUtilidades.EstadosAplicacion.AplicacionSinIndice
|
|
End Function
|
|
|
|
Public Overrides Sub EstableceDataContextSecundarios(Optional Background As Boolean = False)
|
|
|
|
End Sub
|
|
|
|
Public Overrides Sub EstableceTitulo()
|
|
Me.docpanel.Caption = "Cobro Múltiple de Fras. Clientes"
|
|
End Sub
|
|
|
|
Public Overrides ReadOnly Property idRegistroAplicacionActual As String
|
|
Get
|
|
Return "PagoMultiple"
|
|
End Get
|
|
End Property
|
|
|
|
Public Overrides ReadOnly Property NombreTablaBase As String
|
|
Get
|
|
Return "facturas"
|
|
End Get
|
|
End Property
|
|
|
|
Public Overrides ReadOnly Property DescripcionRegistro As String
|
|
Get
|
|
Return "Cobro Multiple de Facturas A Clientes"
|
|
End Get
|
|
End Property
|
|
|
|
Public Overrides Function ObtieneBD() As tsUtilidades.ItsContexto
|
|
bd = tscGrupoSanchoToro.NuevoContexto
|
|
Return bd
|
|
End Function
|
|
|
|
|
|
|
|
Public Overrides Function ObtienePermisos() As tsUtilidades.Permisos
|
|
Dim per = Comun.ObtienePermisos(Me.bd, "AP.ADMINISTRATIVOS", idUsuario)
|
|
per.Eliminar = False
|
|
per.Nuevos = False
|
|
per.Modificar = False
|
|
Return per
|
|
|
|
End Function
|
|
|
|
|
|
Private Sub ap_Enlazar(Celda As DevExpress.Xpf.Grid.EditGridCellData, Defecto As Boolean) Handles Me.Enlazar
|
|
Dim ra = DirectCast(Me.gcFacturas.CurrentItem, facturas)
|
|
Select Case Celda.Column.FieldName.ToLower
|
|
Case "numerofactura"
|
|
Dim id As Integer = ra.idFactura
|
|
FuncionesDinamicas.AbrirAP(New ucFacturaEmitida(id), OtrosParametros)
|
|
Case "idclientenavigation.razonsocial"
|
|
Dim id As Integer = ra.idCliente
|
|
FuncionesDinamicas.AbrirAP(New ucEntidad(id), OtrosParametros)
|
|
End Select
|
|
|
|
End Sub
|
|
Private Sub btMostrar_Click(sender As Object, e As RoutedEventArgs)
|
|
Try
|
|
If cbRazonSocial.EditValue Is Nothing Then
|
|
DXMessageBox.Show("Seleccione primero el cliente", "Atención")
|
|
Else
|
|
If DXSplashScreen.IsActive = False Then DXSplashScreen.Show(Of SplashScreenTecnosis)()
|
|
DXSplashScreen.SetState("Buscando facturas ...")
|
|
Dim idcliente As Integer = cbRazonSocial.EditValue
|
|
Dim facs = bd.facturas.Include(Function(x) x.movimientoscaja).Include(Function(x) x.idClienteNavigation).Include(Function(x) x.idUsuarioNavigation).Where(Function(x) x.idCliente = idcliente).OrderBy(Function(x) x.FechaFactura).ToList.Where(Function(x) x.ImportePendiente <> 0).ToList
|
|
Me.gcFacturas.ItemsSource = facs
|
|
CalculaTotalAPagar()
|
|
End If
|
|
If DXSplashScreen.IsActive Then DXSplashScreen.Close()
|
|
Catch ex As Exception
|
|
If DXSplashScreen.IsActive Then DXSplashScreen.Close()
|
|
FuncionesDinamicas.ErrorNoControladoAp(Me, ex)
|
|
DXMessageBox.Show(ex.Message, "Error")
|
|
End Try
|
|
End Sub
|
|
|
|
|
|
|
|
Private Sub BiBuscarCliente_Click(sender As Object, e As RoutedEventArgs)
|
|
Dim dxw As New dxwEntidades(bd, True, False)
|
|
If dxw.ShowDialog Then
|
|
cbRazonSocial.EditValue = dxw.Entidad.idEntidad
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub CalculaTotalAPagar()
|
|
Dim lf As List(Of facturas) = Me.gcFacturas.ItemsSource
|
|
lf = lf.Where(Function(x) x.Marca_TMP).ToList
|
|
|
|
Dim TotalFacturas = lf.Sum(Function(x) x.ImportePendiente)
|
|
|
|
teTotalAPagar.EditValue = Math.Round(TotalFacturas, 2, MidpointRounding.AwayFromZero)
|
|
End Sub
|
|
|
|
|
|
Private Sub tvMovimientos_CellValueChanging(sender As Object, e As CellValueChangedEventArgs) Handles tv.CellValueChanging
|
|
tv.CommitEditing()
|
|
CalculaTotalAPagar()
|
|
End Sub
|
|
|
|
Private Sub btPagar_Click(sender As Object, e As RoutedEventArgs)
|
|
Try
|
|
If deFechaPago.EditValue Is Nothing Then Throw New Exception("La fecha de pago es obligatoria")
|
|
Dim FechaPago As Date = deFechaPago.EditValue
|
|
If cbCaja.EditValue Is Nothing Then Throw New Exception("La caja de pago es obligatoria")
|
|
Dim lf As List(Of facturas) = Me.gcFacturas.ItemsSource
|
|
lf = lf.Where(Function(x) x.Marca_TMP).ToList
|
|
Dim idCaja As Integer = cbCaja.EditValue
|
|
Dim cj = bd.cajas.First(Function(x) x.idCaja = idCaja)
|
|
If lf.Count = 0 Then Throw New Exception("Seleccione al menos una factura para pagar")
|
|
|
|
Dim lr As New List(Of movimientoscaja)
|
|
For Each f In lf
|
|
Dim nm As New movimientoscaja
|
|
With nm
|
|
.idFacturaNavigation = f
|
|
.Importe = f.ImportePendiente
|
|
.Tipo = TipoMovimientoEnum.RECIBO_CLIENTE
|
|
.idCaja = idCaja
|
|
.Fecha = FechaPago
|
|
.FechaCreacion = Now
|
|
.idUsuario = idUsuario
|
|
.Observaciones = If(teObservaciones.EditValue IsNot Nothing, teObservaciones.EditValue.ToString, "")
|
|
.EstableceNumeroRecibo()
|
|
End With
|
|
f.ImportePagado = Math.Round(f.movimientoscaja.Sum(Function(x) x.Importe), 2, MidpointRounding.AwayFromZero)
|
|
f.FechaPago = New DateOnly(FechaPago.Year, FechaPago.Month, FechaPago.Day)
|
|
f.movimientoscaja.Add(nm)
|
|
bd.SaveChanges()
|
|
lr.Add(nm)
|
|
Next
|
|
teObservaciones.EditValue = ""
|
|
Dim cp As String = "RECIBO"
|
|
Dim pl = bd.plantillas.First(Function(x) x.Codigo = cp)
|
|
DXMessageBox.Show("Se han pagado " & lf.Count.ToString & " facturas. Seleccione ahora el fichero dónde se guardará el pdf de los recibos correspondientes.", "Atención")
|
|
Dim b() As Byte = Informes.GuardaInformeEnPdf(bd, pl.idPlantilla, lr)
|
|
|
|
Dim sfd As New SaveFileDialog
|
|
sfd.FileName = "Pago Facturas " & FechaPago.ToString("yyyy-MM-dd") & ".pdf"
|
|
sfd.Filter = "Fichero PDF|*.pdf"
|
|
sfd.DefaultExt = ".pdf"
|
|
If sfd.ShowDialog Then
|
|
IO.File.WriteAllBytes(sfd.FileName, b)
|
|
tsUtilidades.Sistema.EjecutaFichero(sfd.FileName)
|
|
End If
|
|
' Informes.ImprimirPlantilla(bd, pl.idFicheroNavigation.Fichero, lr, False, 1)
|
|
RefrescaAplicaciones()
|
|
btMostrar_Click(Nothing, Nothing)
|
|
Catch ex As Exception
|
|
DXMessageBox.Show(ex.Message, "Atención")
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub cbRazonSocial_PreviewKeyDown(sender As Object, e As KeyEventArgs) Handles cbRazonSocial.PreviewKeyDown
|
|
If e.Key = Key.F6 Then BiBuscarCliente_Click(Nothing, Nothing)
|
|
End Sub
|
|
|
|
End Class
|