685 lines
38 KiB
VB.net
685 lines
38 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 Microsoft.Win32
|
|
Imports System.IO
|
|
|
|
Imports tsEFCore8.Extensiones
|
|
Imports DevExpress.Spreadsheet
|
|
Imports tsUtilidades.Enumeraciones
|
|
Imports bdGrupoSanchoToro.db.Utilidades
|
|
Imports tsUtilidades
|
|
|
|
Public Class ucEntidad
|
|
|
|
Private bd As tscGrupoSanchoToro
|
|
Friend _idEntidad As Nullable(Of Integer)
|
|
|
|
Friend idLog As Integer?
|
|
|
|
|
|
Public Overrides Sub Cargado()
|
|
Me.Tipo_ucControlBusqueda = GetType(ucEntidades)
|
|
End Sub
|
|
|
|
|
|
Dim ra As entidades
|
|
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 idLog.HasValue Then
|
|
Try
|
|
Dim log = bd.logs.First(Function(x) x.idLog = idLog)
|
|
ra = tsUtilidades.Utilidades.DeserializarSinErrores(log.Log, GetType(entidades))
|
|
If ra.idUsuarioCreador.HasValue Then ra.idUsuarioCreadorNavigation = bd.usuarios.FirstOrDefault(Function(x) x.idUsuario = ra.idUsuarioCreador.Value)
|
|
If ra.idUsuarioModificador.HasValue Then ra.idUsuarioModificadorNavigation = bd.usuarios.FirstOrDefault(Function(x) x.idUsuario = ra.idUsuarioModificador.Value)
|
|
If bd.logs.Any(Function(x) x.idRelacionado = log.idLog AndAlso x.Aplicacion = "OBRAS") Then
|
|
Dim entspol = bd.logs.First(Function(x) x.idRelacionado = log.idLog AndAlso x.Aplicacion = "OBRAS")
|
|
Dim ld = tsUtilidades.Utilidades.deserializarsinerrores(entspol.Log, GetType(List(Of eventos)))
|
|
For Each d In ld
|
|
ra.eventos.Add(d)
|
|
Next
|
|
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 _idEntidad Is Nothing Then
|
|
ra = New entidades
|
|
ra.idEmpresa = db.Utilidades.EmpresaActual.idEmpresa
|
|
ra.FechaAlta = DateOnly.FromDateTime(Now)
|
|
_idEntidad = Nothing
|
|
' ra.EsCliente = True
|
|
NuevoEstado = tsUtilidades.EstadosAplicacion.Nuevo
|
|
Else
|
|
ra = bd.entidades.First(Function(x) x.idEntidad = _idEntidad)
|
|
NuevoEstado = tsUtilidades.EstadosAplicacion.ModificandoRegistro
|
|
End If
|
|
End If
|
|
|
|
gcFacturasEmitidas.ItemsSource = bd.facturas.Include(Function(x) x.idEventoNavigation.CodigoMunicipioNavigation.CodigoProvinciaNavigation).Include(Function(x) x.movimientoscaja).Where(Function(x) x.idCliente = ra.idEntidad).OrderByDescending(Function(x) x.FechaFactura).ThenByDescending(Function(x) x.NumeroFactura).ToList
|
|
gcFacturasRecibidas.ItemsSource = bd.facturasrecibidas.Where(Function(x) x.idProveedor = ra.idEntidad).OrderByDescending(Function(x) x.FechaFactura).ToList
|
|
gcExpediente.ItemsSource = ra.expedientesentidades
|
|
Me.gcLogs.ItemsSource = bd.logs.Where(Function(x) x.id = ra.idEntidad AndAlso x.Aplicacion = "ENTIDADES" AndAlso x.idRelacionado Is Nothing).OrderByDescending(Function(x) x.idLog).ToList
|
|
Me.gcCorreos.ItemsSource = bd.correos.Where(Function(x) x.idEntidad = ra.idEntidad).OrderByDescending(Function(x) x.FechaCreacion).ToList
|
|
Me.DataContext = ra
|
|
EstableceItemsSourceProductos()
|
|
Return NuevoEstado
|
|
End Function
|
|
|
|
Private Sub EstableceItemsSourceProductos()
|
|
'Try
|
|
' Dim ra As entidades = Me.DataContext
|
|
' Dim iqda = bd.detallesalbaranes.Include("productos").Include("albaranes").Include("facturas").Include("articulos").Include("albaranesrecogida").Where(Function(x) x.albaranes.idCliente = ra.idEntidad)
|
|
' If cbSoloProductosPE.IsChecked Then
|
|
' iqda = iqda.Where(Function(x) x.EsVenta = False AndAlso x.idAlbaranRecogida Is Nothing AndAlso x.FechaCancelacion.HasValue = False)
|
|
' End If
|
|
|
|
' Dim ld = iqda.OrderByDescending(Function(x) x.albaranes.Fecha).ToList
|
|
' gcProductosAoV.ItemsSource = ld
|
|
' gcProductosAoV.ExpandAllGroups()
|
|
'Catch ex As Exception
|
|
' FuncionesDinamicas.ErrorNoControladoAp(Me, ex)
|
|
' If DXSplashScreen.IsActive Then DXSplashScreen.Close()
|
|
' DXMessageBox.Show(ex.Message, "Error")
|
|
'End Try
|
|
End Sub
|
|
|
|
Public Overrides Function ObtieneBD() As ItsContexto
|
|
bd = tscGrupoSanchoToro.NuevoContexto
|
|
Return bd
|
|
End Function
|
|
|
|
Public Overrides ReadOnly Property NombreTablaBase As String
|
|
Get
|
|
Return "entidades"
|
|
End Get
|
|
End Property
|
|
|
|
|
|
'Public Overrides ReadOnly Property CampoIndice As String
|
|
' Get
|
|
' Return "idEntidad"
|
|
' End Get
|
|
'End Property
|
|
|
|
'Private ReadOnly Property IAplicacion_Titulo As String Implements IAplicacion.Titulo
|
|
' Get
|
|
' Return "Entidad"
|
|
' End Get
|
|
'End Property
|
|
|
|
Public Overrides ReadOnly Property idRegistroAplicacionActual As String
|
|
Get
|
|
If idLog.HasValue Then
|
|
Return "Entidad. R.C.:" & idLog.ToString
|
|
Else
|
|
If Me.Estado = tsUtilidades.EstadosAplicacion.Nuevo Then
|
|
Return "Entidad.Nuevo"
|
|
Else
|
|
Return "Entidad." & DirectCast(Me.DataContext, entidades).idEntidad.ToString
|
|
End If
|
|
End If
|
|
End Get
|
|
End Property
|
|
|
|
Public Overrides ReadOnly Property DescripcionRegistro As String
|
|
Get
|
|
Return "Cliente/Proveedor"
|
|
End Get
|
|
End Property
|
|
|
|
Public Sub New(Optional idEntidad As Integer? = Nothing)
|
|
|
|
' Llamada necesaria para el diseñador.
|
|
InitializeComponent()
|
|
_idEntidad = idEntidad
|
|
' Agregue cualquier inicialización después de la llamada a InitializeComponent().
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
Public Overrides Sub EstableceDataContextSecundarios(Optional Background As Boolean = False)
|
|
Try
|
|
Me.cbTipoPago.ItemsSource = bd.enumeraciones.Where(Function(x) x.idGrupoEnumeracionNavigation.Grupo = "TIPP").ToList
|
|
Dim tipdir = bd.enumeraciones.Where(Function(x) x.idGrupoEnumeracionNavigation.Grupo = "TIPDIR").ToList
|
|
'Me.cbTarifa.ItemsSource = tsUtilidades.DescripcionValor.EnumADescripcionValor(GetType(Enums.TarifasEnum))
|
|
Dim Acciones As New List(Of tsWPFCore.Accion)
|
|
Acciones.Add(New Accion With {
|
|
.idAccion = 1,
|
|
.Descripcion = "ENVIA FACTURAS SELECCIONADAS Y SUS ALBARANES POR EMAIL"})
|
|
Acciones.Add(New Accion With {
|
|
.idAccion = 2,
|
|
.Descripcion = "ENVIA FACTURAS SELECCIONADAS POR EMAIL"})
|
|
Acciones.Add(New Accion With {
|
|
.idAccion = 3,
|
|
.Descripcion = "GENERA EXCEL DE FACTURAS SELECCIONADAS"})
|
|
Acciones.Add(New Accion With {
|
|
.idAccion = 4,
|
|
.Descripcion = "ENVIA EXCEL DE FACTURAS SELECCIONADAS POR EMAIL"})
|
|
Acciones.Add(New Accion With {
|
|
.idAccion = 5,
|
|
.Descripcion = "GENERA UN PDF DE FACTURAS SELECCIONADAS"})
|
|
Acciones.Add(New Accion With {
|
|
.idAccion = 6,
|
|
.Descripcion = "GENERA FACTURAS SELECCIONADAS Y SUS ALBARANES EN PDF"})
|
|
|
|
Me.ContenedorAplicacion.cbAcciones.ItemsSource = Acciones
|
|
Me.ContenedorAplicacion.beAcciones.EditValue = Acciones.First.idAccion
|
|
Catch ex As Exception
|
|
Throw New Exception(ex.Message, ex)
|
|
End Try
|
|
End Sub
|
|
|
|
Public Overrides Sub EstableceTitulo()
|
|
'If Me.docpanel Is Nothing Then
|
|
' Dim w As dxwGenerica = Window.GetWindow(Me)
|
|
' w.Title = "Agregar nuevo Cliente/Proveedor"
|
|
'Else
|
|
If idLog.HasValue Then
|
|
Dim ent As entidades = Me.DataContext
|
|
Me.docpanel.Caption = "R.C. Cliente/Proveedor " & ent.RazonSocial
|
|
Else
|
|
If Me.Estado = tsUtilidades.EstadosAplicacion.ModificandoRegistro Then
|
|
Dim ent As entidades = Me.DataContext
|
|
Me.docpanel.Caption = "Cliente/Proveedor " & ent.RazonSocial
|
|
Me.docpanel.Tag = "Entidad." & ent.idEntidad
|
|
Else
|
|
Me.docpanel.Caption = "Cliente/Proveedor Nuevo"
|
|
Me.docpanel.Tag = "Entidad.Nueva"
|
|
End If
|
|
End If
|
|
' End If
|
|
End Sub
|
|
|
|
Public Overrides Function ObtienePermisos() As tsUtilidades.Permisos
|
|
Return Comun.ObtienePermisos(Me.bd, "AP.ADMINISTRATIVOS", bdGrupoSanchoToro.db.Utilidades.idUsuario)
|
|
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
|
|
ErroresValidacion.EliminaError("validando-" & pts.NombreCampo)
|
|
Dim ra As entidades = Me.DataContext
|
|
Select Case pts.NombreCampo.ToLower
|
|
Case "email"
|
|
If e.Value IsNot Nothing AndAlso e.Value.ToString <> "" Then
|
|
If Not e.Value.ToString.Trim.ToLower.EsEmailValido Then Throw New Exception("El email es incorrecto")
|
|
End If
|
|
Case "email2"
|
|
If e.Value IsNot Nothing AndAlso e.Value.ToString <> "" Then
|
|
If Not e.Value.ToString.Trim.ToLower.EsEmailValido Then Throw New Exception("El email es incorrecto")
|
|
End If
|
|
Case "nif"
|
|
'If Not e.Value Is Nothing Then
|
|
' Dim sDNI As String = tsUtilidades.Utilidades.CalculoLetraCif(e.Value) ' tsUtilidades.Utilidades.RecalculaNIF(e.Value)
|
|
' If sDNI <> e.Value.ToString.ToUpper Then
|
|
' ra.NIF = sDNI
|
|
' ValorOriginalCambiado = sDNI
|
|
' End If
|
|
'End If
|
|
Case "codigopostal"
|
|
If Not e.Value Is Nothing AndAlso e.Value.ToString <> "" AndAlso e.Value.ToString <> ra.CodigoPostal Then
|
|
|
|
Dim sCpo As String = e.Value.ToString
|
|
If sCpo.Length <> 5 Then Throw New Exception("El código postal no es correcto")
|
|
Dim sCodigoprovincia As String = sCpo.Substring(0, 2)
|
|
If Not bd.provincias.Any(Function(x) x.CodigoProvincia = sCodigoprovincia) Then Throw New Exception("El código postal no es correcto")
|
|
Select Case bd.codigospostales.Where(Function(x) x.CodigoPostal = sCpo).Count
|
|
Case 0
|
|
Dim vncp As New dxwAgregarNuevoCodigoPostal(sCpo, bd)
|
|
If vncp.ShowDialog Then
|
|
Dim pob = bd.codigospostales.First(Function(x) x.CodigoPostal = sCpo)
|
|
ra.CodigoMunicipio = pob.CodigoMunicipio
|
|
Else
|
|
Throw New Exception("El código postal no es correcto")
|
|
End If
|
|
Case 1
|
|
Dim pob = bd.codigospostales.First(Function(x) x.CodigoPostal = sCpo)
|
|
ra.CodigoMunicipio = pob.CodigoMunicipio
|
|
|
|
Case Else
|
|
Dim wMunicipios As New dxwCodigosPostales(bd, sCpo)
|
|
If wMunicipios.ShowDialog Then
|
|
ra.CodigoMunicipio = wMunicipios.CodigoMunicipio
|
|
Else
|
|
Throw New Exception("El código postal no es correcto")
|
|
End If
|
|
End Select
|
|
End If
|
|
|
|
Case "iban"
|
|
' Me.ErroresValidacion.EliminaError("iban")
|
|
If Not e.Value Is Nothing AndAlso e.Value <> "" Then
|
|
Dim sIBAN As String = e.Value
|
|
If sIBAN <> "" Then
|
|
If sIBAN.Length <> 24 Then
|
|
' e.IsValid = False
|
|
If sIBAN.Length <> 20 Then
|
|
Throw New Exception("La longitud del codigo IBAN debe ser 24 caracteres (o 20 y se calculará el IBAN).")
|
|
Else
|
|
Dim sDC As String = tsUtilidades.Bancos.Genericas.CalcularDigitoControlBancario(sIBAN.Substring(0, 4), sIBAN.Substring(4, 4), sIBAN.Substring(10, 10))
|
|
If sDC <> sIBAN.Substring(8, 2) Then
|
|
Throw New Exception("El dígito de control bancario es erroneo.")
|
|
Else
|
|
Dim sIBANCalculado As String = tsUtilidades.Bancos.Genericas.CalcularIBAN("ES", sIBAN.Substring(0, 4), sIBAN.Substring(4, 4), sIBAN.Substring(8, 2), sIBAN.Substring(10, 10))
|
|
ra.IBAN = sIBANCalculado
|
|
ValorOriginalCambiado = True
|
|
End If
|
|
End If
|
|
Else
|
|
Dim sDC As String = tsUtilidades.Bancos.Genericas.CalcularDigitoControlBancario(sIBAN.Substring(4, 4), sIBAN.Substring(8, 4), sIBAN.Substring(14, 10))
|
|
If sDC <> sIBAN.Substring(12, 2) Then
|
|
Throw New Exception("El dígito de control bancario es erroneo.")
|
|
Else
|
|
Dim sIBANCalculado As String = tsUtilidades.Bancos.Genericas.CalcularIBAN(sIBAN.Substring(0, 2), sIBAN.Substring(4, 4), sIBAN.Substring(8, 4), sIBAN.Substring(12, 2), sIBAN.Substring(14, 10))
|
|
If sIBANCalculado.Substring(2, 2) <> sIBAN.Substring(2, 2) Then
|
|
' e.IsValid = False
|
|
Throw New Exception("Los digitos bancarios no son válidos.")
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
'Case "telefono1", "telefono2"
|
|
' If e.Value IsNot Nothing AndAlso e.Value.ToString <> "" Then
|
|
' Dim tlf = e.Value.ToString
|
|
' If tlf.Length <> 9 AndAlso tlf.Length <> 11 AndAlso tlf.Length <> 12 Then
|
|
' Throw New Exception("Nº de teléfono incorrecto")
|
|
' Else
|
|
' If tlf.Length = 12 AndAlso tlf.StartsWith("+") = False Then
|
|
' Throw New Exception("Nº de teléfono incorrecto")
|
|
' End If
|
|
' tlf = tlf.TrimStart("+")
|
|
' For i = 0 To tlf.Length - 1
|
|
' If "0123456789".Contains(tlf.Substring(i, 1)) = False Then Throw New Exception("Nº de teléfono incorrecto")
|
|
' Next
|
|
' End If
|
|
' End If
|
|
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
|
|
_idEntidad = DirectCast(Me.DataContext, entidades).idEntidad
|
|
If docpanel IsNot Nothing Then
|
|
'If Refrescar Then ap.RefrescaUC()
|
|
'Refrescar = False
|
|
Dim ra As entidades = Me.DataContext
|
|
Me.gcLogs.ItemsSource = bd.logs.Where(Function(x) x.id = ra.idEntidad AndAlso x.Aplicacion = "ENTIDADES" AndAlso x.idRelacionado Is Nothing).OrderByDescending(Function(x) x.idLog).ToList
|
|
Else
|
|
Dim w = Window.GetWindow(Me)
|
|
w.DialogResult = True
|
|
w.Close()
|
|
End If
|
|
End Sub
|
|
|
|
|
|
Private Sub ap_Enlazar(Celda As EditGridCellData, Defecto As Boolean) Handles Me.Enlazar
|
|
Dim ra As entidades = Me.DataContext
|
|
Select Case Celda.View.Name.ToLower
|
|
Case Else
|
|
Select Case Celda.Column.FieldName.ToLower
|
|
Case "idlog"
|
|
Dim log As logs = gcLogs.CurrentItem
|
|
Dim id As Integer = log.idLog
|
|
Dim uc As New ucEntidad()
|
|
uc.idLog = log.idLog
|
|
FuncionesDinamicas.AbrirAP(uc, OtrosParametros)
|
|
|
|
Case "contineficheroadjunto"
|
|
Dim correo As correos = gcCorreos.CurrentItem
|
|
Dim sDirAleatorio As String = tsUtilidades.Utilidades.ObtieneDirectorioAleatorio("GrupoSanchoToro")
|
|
Dim sftmp As String = sDirAleatorio & "\" & correo.idFicheroAdjuntoNavigation.NombreFichero
|
|
tsUtilidades.Utilidades.ByteArrayAFichero(correo.idFicheroAdjuntoNavigation.Fichero, sftmp, True)
|
|
tsUtilidades.Sistema.EjecutaFichero(sftmp)
|
|
Case "numerofactura"
|
|
Dim fe As facturas = gcFacturasEmitidas.CurrentItem
|
|
Dim id As Integer = fe.idFactura
|
|
' Dim uc As New ucFacturaEmitida(id)
|
|
' FuncionesDinamicas.AbrirAP(uc, OtrosParametros)
|
|
Case "idfactura"
|
|
Dim fe As facturasrecibidas = gcFacturasRecibidas.CurrentItem
|
|
Dim id As Integer = fe.idFactura
|
|
Dim uc As New ucFacturaRecibida(id)
|
|
FuncionesDinamicas.AbrirAP(uc, OtrosParametros)
|
|
|
|
Case "ficheroadjunto"
|
|
Dim co As correos = gcCorreos.CurrentItem
|
|
Dim b() = co.idFicheroAdjuntoNavigation.Fichero
|
|
Dim nf = tsUtilidades.Utilidades.ObtieneFicheroAleatorio(IO.Path.GetExtension(co.idFicheroAdjuntoNavigation.NombreFichero))
|
|
IO.File.WriteAllBytes(nf, b)
|
|
tsUtilidades.Sistema.EjecutaFichero(nf)
|
|
End Select
|
|
End Select
|
|
End Sub
|
|
|
|
Private Sub BeCodigoPostal_DefaultButtonClick(sender As Object, e As RoutedEventArgs)
|
|
Dim ra As entidades = Me.DataContext
|
|
Dim dxw As New dxwCodigosPostales(bd, "")
|
|
If dxw.ShowDialog Then
|
|
ra.CodigoMunicipio = dxw.CodigoMunicipio
|
|
ra.CodigoPostal = dxw.CodigoPostal
|
|
ra.RefrescaCamposSoloLectura()
|
|
beCodigoPostal.Text = ra.CodigoPostal
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub BtCancelarCodigoPostal_Click(sender As Object, e As RoutedEventArgs)
|
|
Dim ra As entidades = Me.DataContext
|
|
ra.CodigoMunicipio = ""
|
|
End Sub
|
|
|
|
|
|
|
|
Private Sub ap_EstadoCambiado(EstadoAnterior As tsUtilidades.EstadosAplicacion, EstadoNuevo As tsUtilidades.EstadosAplicacion) Handles Me.EstadoCambiado
|
|
Select Case EstadoNuevo
|
|
Case EstadosAplicacion.ModificandoRegistro
|
|
If Me.idLog.HasValue Then
|
|
Me.EstableceSoloLectura()
|
|
Else
|
|
Dim ra As entidades = Me.DataContext
|
|
If ra.facturas.Any OrElse ra.facturasrecibidas.Any OrElse ra.presupuestos.Any Then
|
|
Me.ContenedorAplicacion.btEliminar.IsEnabled = False
|
|
End If
|
|
End If
|
|
End Select
|
|
If idLog.HasValue Then EstableceSoloLectura()
|
|
End Sub
|
|
|
|
Private Sub CbSoloProductosPE_EditValueChanged(sender As Object, e As EditValueChangedEventArgs)
|
|
EstableceItemsSourceProductos()
|
|
End Sub
|
|
|
|
|
|
|
|
Private Sub tvExpediente_ValidateRow(sender As Object, e As GridRowValidationEventArgs) Handles tvExpediente.ValidateRow
|
|
Dim ges As expedientesentidades = gcExpediente.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 expedientesentidades = gcExpediente.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 gcExpediente.CurrentItem Is Nothing Then tvExpediente.AddNewRow()
|
|
Dim exp As expedientesentidades = gcExpediente.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
|
|
tvExpediente.MoveNextCell()
|
|
gcExpediente.RefreshRow(tvExpediente.FocusedRowHandle)
|
|
End If
|
|
End If
|
|
Catch ex As Exception
|
|
DXMessageBox.Show(ex.Message, "Error")
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub TvExpediente_PreviewKeyDown(sender As Object, e As KeyEventArgs)
|
|
If e.Key = Key.F6 AndAlso gcExpediente.CurrentColumn.FieldName.ToLower = "ficheros.nombrefichero" Then
|
|
Examinar(Nothing, Nothing)
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub tvExpediente_InitNewRow(sender As Object, e As InitNewRowEventArgs) Handles tvExpediente.InitNewRow
|
|
gcExpediente.SetCellValue(e.RowHandle, "Fecha", Date.Today)
|
|
End Sub
|
|
|
|
Private Sub ucEntidad_EjecutarAccion(sender As Object, e As ItemClickEventArgs, idAccion As Integer) Handles Me.EjecutarAccion
|
|
Try
|
|
Dim ra As entidades = Me.DataContext
|
|
Dim fras = gcFacturasEmitidas.ElementosSeleccionados.Cast(Of facturas).ToList
|
|
If fras.Count = 0 Then
|
|
DXMessageBox.Show("Antes debe seleccionar alguna factura emitida", "Atención")
|
|
Else
|
|
If fras.Any(Function(x) x.TotalIVA = 0) Then
|
|
DXMessageBox.Show("Atención alguna de las facturas seleccionadas no tienen IVA", "Atención")
|
|
End If
|
|
Select Case idAccion
|
|
Case 1, 2
|
|
If Not Guardar(Nothing, Nothing) Then
|
|
Dim sFacturas As String = ""
|
|
For Each f In fras
|
|
sFacturas &= f.NumeroFactura & vbCrLf
|
|
Next
|
|
Dim dxnc As dxwEnvioCorreo
|
|
If idAccion = 2 Then
|
|
dxnc = New dxwEnvioCorreo(ra.Email, ra.Email2.NothingAVacio, "", EmpresaActual.RazonSocial & " - Adjunto le remitimos facturas solicitadas", "Distinguidos Sres., " & vbCrLf & "Adjunto le remitimos las siguientes facturas:" & vbNewLine & sFacturas, "Facturas.zip")
|
|
Else
|
|
dxnc = New dxwEnvioCorreo(ra.Email, ra.Email2.NothingAVacio, "", EmpresaActual.RazonSocial & " - Adjunto le remitimos facturas y albaranes solicitados", "Distinguidos Sres., " & vbCrLf & "Adjunto le remitimos las siguientes facturas y sus albaranes relacionados:" & vbNewLine & sFacturas, "Facturas.zip")
|
|
End If
|
|
If dxnc.ShowDialog Then
|
|
DXSplashScreen.Show(Of tsWPFCore.SplashScreenTecnosis)()
|
|
DXSplashScreen.SetState("Generando correo, por favor espere ...")
|
|
Dim cta = bd.cuentascorreo.First(Function(x) x.Codigo = "DEFECTO" AndAlso x.idEmpresa = EmpresaActual.idEmpresa)
|
|
Dim dArchivos As Dictionary(Of String, Byte()) = Nothing
|
|
For Each fe In fras
|
|
DXSplashScreen.SetState("Generando archivos de la factura " & fe.NumeroFactura & ", por favor espere ...")
|
|
' ucFacturaEmitida.GeneraPdfFacturasYAlbaranes(bd, fe, idAccion = 1, dArchivos, True)
|
|
Next
|
|
DXSplashScreen.SetState("Comprimiendo Archivos, por favor espere ...")
|
|
Dim bzip = tsUtilidades.zip.ComprimirArchivos(dArchivos)
|
|
correos.GeneraRegistroCorreon(bd, dxnc._Asunto, dxnc._Cuerpo, cta, dxnc._Destinatarios, dxnc._CC, dxnc._BCC, bzip, dxnc._Adjunto, ra.idEntidad, "ENTIDAD", ra.idEntidad)
|
|
End If
|
|
End If
|
|
Case 3
|
|
Try
|
|
Dim sfd As New SaveFileDialog
|
|
sfd.FileName = IO.Path.GetDirectoryName("Exportacion") & ("Facturas.xlsx").Trim
|
|
sfd.Filter = "Fichero Excel (*.xls, *.xlsx, *.csv)|*.xls;*.xlsx;*.csv"
|
|
sfd.DefaultExt = ".xlsx"
|
|
If sfd.ShowDialog Then
|
|
gcFacturasEmitidas.ItemsSource = fras
|
|
Dim ms As New MemoryStream
|
|
Dim bFacturas As Byte() = Nothing
|
|
Select Case IO.Path.GetExtension(sfd.FileName).ToLower
|
|
Case ".xls"
|
|
tvFacturasEmitidas.ExportToXls(ms)
|
|
bFacturas = InsertaLogoEnXLSX(ms, DevExpress.Spreadsheet.DocumentFormat.Xls)
|
|
Case ".xlsx"
|
|
tvFacturasEmitidas.ExportToXlsx(ms)
|
|
bFacturas = InsertaLogoEnXLSX(ms, DevExpress.Spreadsheet.DocumentFormat.Xlsx)
|
|
Case ".csv"
|
|
tvFacturasEmitidas.ExportToCsv(ms)
|
|
bFacturas = InsertaLogoEnXLSX(ms, DevExpress.Spreadsheet.DocumentFormat.Csv)
|
|
Case Else
|
|
Throw New Exception("Formato no soportado")
|
|
End Select
|
|
IO.File.WriteAllBytes(sfd.FileName, bFacturas)
|
|
tsUtilidades.Sistema.EjecutaFichero(sfd.FileName)
|
|
End If
|
|
Catch ex As Exception
|
|
Throw New Exception(ex.Message, ex)
|
|
Finally
|
|
gcFacturasEmitidas.ItemsSource = ra.facturas.OrderByDescending(Function(x) x.FechaFactura).ToList
|
|
End Try
|
|
Case 4
|
|
If Not Guardar(Nothing, Nothing) Then
|
|
Try
|
|
Dim dxnc = New dxwEnvioCorreo(ra.Email, ra.Email2.NothingAVacio, "", EmpresaActual.RazonSocial & " - Adjunto le remitimos listado de facturas solicitadas", "Distinguidos Sres., " & vbCrLf & "Adjunto le remitimos listado de facturas solicitadas", "Facturas.xlsx")
|
|
If dxnc.ShowDialog Then
|
|
Dim cta = bd.cuentascorreo.First(Function(x) x.Codigo = "DEFECTO" AndAlso x.idEmpresa = EmpresaActual.idEmpresa)
|
|
gcFacturasEmitidas.ItemsSource = fras
|
|
Dim ms As New MemoryStream
|
|
tvFacturasEmitidas.ExportToXlsx(ms)
|
|
Dim bFacturas = InsertaLogoEnXLSX(ms, DevExpress.Spreadsheet.DocumentFormat.Xlsx)
|
|
gcFacturasEmitidas.ItemsSource = ra.facturas.OrderByDescending(Function(x) x.FechaFactura).ToList
|
|
bdGrupoSanchoToro.db.correos.GeneraRegistroCorreon(bd, dxnc._Asunto, dxnc._Cuerpo, cta, dxnc._Destinatarios, dxnc._CC, dxnc._BCC, bFacturas, dxnc._Adjunto, ra.idEntidad, "ENTIDAD", ra.idEntidad)
|
|
End If
|
|
Catch ex As Exception
|
|
Throw New Exception(ex.Message, ex)
|
|
Finally
|
|
gcFacturasEmitidas.ItemsSource = ra.facturas.OrderByDescending(Function(x) x.FechaFactura).ToList
|
|
End Try
|
|
End If
|
|
Case 5
|
|
Dim sfd As New SaveFileDialog
|
|
sfd.FileName = "Facturas " & ra.RazonSocial.Trim & ".pdf"
|
|
sfd.Filter = "Fichero PDF (*.pdf)|*.pdf"
|
|
sfd.DefaultExt = ".pdf"
|
|
If sfd.ShowDialog Then
|
|
DXSplashScreen.Show(Of tsWPFCore.SplashScreenTecnosis)()
|
|
DXSplashScreen.SetState("Generando PDF, por favor espere ...")
|
|
Dim lfras As New List(Of Byte())
|
|
For Each factura In fras.OrderBy(Function(x) x.NumeroFactura).ToList
|
|
DXSplashScreen.SetState("Procesando factura " & factura.NumeroFactura & ", por favor espere ...")
|
|
Dim ds = New List(Of facturas)
|
|
Dim idpl As Integer
|
|
If factura.PorcentajeIVA1 > 0 Then
|
|
idpl = bd.plantillas.First(Function(x) x.Codigo = "FACEMI").idPlantilla
|
|
Else
|
|
idpl = bd.plantillas.First(Function(x) x.Codigo = "NOTENT").idPlantilla
|
|
End If
|
|
ds.Add(factura)
|
|
lfras.Add(Informes.GuardaInformeEnPdf(bd, idpl, ds))
|
|
Next
|
|
Dim lista = lfras.Select(Function(x) New MemoryStream(x)).ToArray
|
|
TSpdfUtils.pdf.UnePdfs(lista, sfd.FileName)
|
|
tsUtilidades.Sistema.EjecutaFichero(sfd.FileName)
|
|
End If
|
|
|
|
Case 6
|
|
Dim sfd As New SaveFileDialog
|
|
sfd.FileName = "Facturas y Albaranes " & ra.RazonSocial.Trim & ".pdf"
|
|
sfd.Filter = "Fichero Pdf (*.pdf|*.pdf"
|
|
sfd.DefaultExt = ".pdf"
|
|
If sfd.ShowDialog Then
|
|
DXSplashScreen.Show(Of tsWPFCore.SplashScreenTecnosis)()
|
|
DXSplashScreen.SetState("Generando PDF, por favor espere ...")
|
|
Dim dArchivos As Dictionary(Of String, Byte()) = Nothing
|
|
For Each fe In fras
|
|
DXSplashScreen.SetState("Generando archivos de la factura " & fe.NumeroFactura & ", por favor espere ...")
|
|
' ucFacturaEmitida.GeneraPdfFacturasYAlbaranes(bd, fe, True, dArchivos, True)
|
|
Next
|
|
Dim aArchivos = dArchivos.Select(Function(x) x.Value).ToArray
|
|
Dim lista = aArchivos.Select(Function(x) New MemoryStream(x)).ToArray
|
|
TSpdfUtils.pdf.UnePdfs(lista, sfd.FileName)
|
|
tsUtilidades.Sistema.EjecutaFichero(sfd.FileName)
|
|
End If
|
|
End Select
|
|
End If
|
|
Catch ex As Exception
|
|
FuncionesDinamicas.ErrorNoControladoAp(Me, ex)
|
|
If DXSplashScreen.IsActive Then DXSplashScreen.Close()
|
|
DXMessageBox.Show("Error " & ex.Message, "Error")
|
|
Finally
|
|
If DXSplashScreen.IsActive Then DXSplashScreen.Close()
|
|
End Try
|
|
End Sub
|
|
Private Function InsertaLogoEnXLSX(ms As MemoryStream, Formato As DevExpress.Spreadsheet.DocumentFormat) As Byte()
|
|
ms.Position = 0
|
|
Dim wb As New Workbook
|
|
wb.LoadDocument(ms, Formato)
|
|
If Formato <> DevExpress.Spreadsheet.DocumentFormat.Csv Then
|
|
wb.Worksheets(0).Rows.Insert(0, 6)
|
|
wb.Worksheets(0).MergeCells(wb.Worksheets(0).Range("A1:C4"))
|
|
Dim memStream As System.IO.MemoryStream = New MemoryStream(bd.ficherosconfiguracion.First(Function(X) X.Codigo = "LOGO").Configuracion)
|
|
Dim chartControl1ImageSource = SpreadsheetImageSource.FromStream(memStream)
|
|
wb.Worksheets(0).Pictures.AddPicture(chartControl1ImageSource, wb.Worksheets(0).Range("A1:C4"), True)
|
|
wb.Worksheets(0).Cells("A5").Value = "IBAN: "
|
|
wb.Worksheets(0).Cells("A5").FillColor = System.Drawing.Color.LightGray
|
|
wb.Worksheets(0).Cells("A5").Font.Bold = True
|
|
wb.Worksheets(0).Cells("B5").Value = bd.cajas.FirstOrDefault(Function(X) X.FechaBaja.HasValue = False AndAlso (X.IBAN IsNot Nothing AndAlso X.IBAN <> "")).IBAN
|
|
wb.Worksheets(0).Cells("B5").Font.Color = System.Drawing.Color.Orange
|
|
End If
|
|
Dim b = wb.SaveDocument(Formato)
|
|
Return b
|
|
End Function
|
|
|
|
|
|
Private Sub ucEntidad_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 "codigopostal"
|
|
ra.RefrescaCamposSoloLectura()
|
|
End Select
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub ucEntidad_AntesGuardar(sender As Object, e As ItemClickEventArgs, ByRef Cancelar As Boolean, ByRef MensajesError As Hashtable, EliminacionManual As Integer) Handles Me.AntesGuardar
|
|
Dim hte As New Hashtable
|
|
If ra.EsCliente = False AndAlso ra.EsProveedor = False Then
|
|
hte.Add("ALMACENAR-CLIENTE_O_PROVEEDOR_OBLIGATORIO", "Debe seleccionar al menos alguna opción de si es cliente o proveedor")
|
|
End If
|
|
Dim vd = New tsUtilidades.ValidarDocumentoIdentidad(ra.NIF)
|
|
If vd.EsCorrecto = False Then
|
|
hte.Add("ALMACENAR-NIF INCORRECTO", "El documento de identidad es inválido")
|
|
Else
|
|
ra.NIF = vd.ToString
|
|
End If
|
|
If hte.Count = 0 Then
|
|
Dim cifexi = bd.entidades.FirstOrDefault(Function(x) x.idEntidad <> ra.idEntidad AndAlso x.NIF = ra.NIF AndAlso x.idEmpresa = EmpresaActual.idEmpresa)
|
|
If cifexi IsNot Nothing AndAlso cifexi.RazonSocial = ra.RazonSocial Then
|
|
hte.Add("ALMACENAR-ENTIDAD_DUPLICADA", "Entidad Duplicada")
|
|
ElseIf cifexi IsNot Nothing Then
|
|
If DXMessageBox.Show("Ya existe una entidad con el mismo NIF (" & cifexi.RazonSocial & ") ¿Desea añadir de todas formas ya que es una sucursal?", "Atención", MessageBoxButton.YesNo) = MessageBoxResult.No Then
|
|
hte.Add("ALMACENAR-ENTIDAD_DUPLICADA", "Entidad Duplicada")
|
|
End If
|
|
End If
|
|
End If
|
|
If hte.Count > 0 Then
|
|
MensajesError = hte
|
|
Cancelar = True
|
|
End If
|
|
End Sub
|
|
End Class
|