Files
SanchoToro/GestionGrupoSanchoToro/Almacen/ucAlbaranR.xaml.vb
2026-02-17 13:47:52 +01:00

806 lines
40 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 tsUtilidades.Extensiones
Imports tsUtilidades.Enumeraciones
Imports bdGrupoSanchoToro.db.Utilidades
Imports System.Drawing
Imports bdGrupoSanchoToro.db.albaranes
Public Class ucAlbaranR
Private bd As tscGrupoSanchoToro
Friend _idAlbaran As Nullable(Of Integer)
'Private lProductos As List(Of productos)
'Private lArticulos As List(Of articulos)
Friend idLog As Integer?
Public Overrides Sub Cargado()
Me.Tipo_ucControlBusqueda = GetType(ucAlbaranes)
End Sub
Dim ra As albaranes
Public Overrides Sub EstableceDataContextSecundarios(Optional Background As Boolean = False)
Try
'lProductos = bd.productos.OrderBy(Function(x) x.Descripcion).ToList
'Dim lProductosAlb = ra.detallesalbaranesidAlbaranNavigation.Select(Function(x) x.idProducto).ToArray
'lProductos = lProductos.Where(Function(x) x.FechaBaja Is Nothing OrElse lProductosAlb.Contains(x.idProducto)).ToList
'cbProducto.ItemsSource = lProductos
cbRazonSocial.ItemsSource = bd.entidades.Where(Function(X) X.FechaBaja.HasValue = False OrElse X.idEntidad = ra.idEntidad).ToList.Select(Function(x) New With {x.idEntidad, x.RazonSocial}).OrderBy(Function(x) x.RazonSocial).ToList
Dim plantillas As List(Of tsWPFCore.Plantilla) = Comun.ObtienePlantillas(bd, {"GRUPLA.ALBENT"}, False)
Me.ContenedorAplicacion.cbPlantillaAImprimir.ItemsSource = plantillas
If plantillas.Count > 0 Then
Me.ContenedorAplicacion.bePlantilla.EditValue = plantillas.First.idPlantilla
End If
Dim Acciones As New List(Of tsWPFCore.Accion)
Acciones.Add(New Accion With {
.idAccion = 1,
.Descripcion = "AGREGA PRODUCTOS AL ALBARAN F9"})
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 Function EstablecedcPrincipal(Optional Background As Boolean = False, Optional FuerzaNuevo As Boolean = False, Optional Refrescar As Boolean = False) As tsUtilidades.EstadosAplicacion
Try
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.LogXML, GetType(albaranes))
' 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 = "detallesalbaranes_AE")
' If df IsNot Nothing Then
' Dim ld As List(Of detallesalbaranes) = tsUtilidades.Utilidades.DeserializarSinErrores(df.LogXML, GetType(List(Of detallesalbaranes)))
' For Each d In ld
' Dim pr = bd.productos.FirstOrDefault(Function(x) x.idProducto = d.idProducto)
' d.productos = pr
' If d.idArticulo.HasValue Then
' Dim art = bd.articulos.FirstOrDefault(Function(x) x.idArticulo = d.idArticulo)
' d.articulos = art
' End If
' ra.detallesalbaranes.Add(d)
' Next
' End If
' Dim mv = bd.logs.FirstOrDefault(Function(x) x.idRelacionado = log.idLog AndAlso x.Aplicacion = "MOVIMIENTOSCAJA_AE")
' If mv IsNot Nothing Then
' Dim ld = tsUtilidades.Utilidades.DeserializarSinErrores(mv.LogXML, 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.LogXML, GetType(entidades))
' ra.entidades = ent
' ' lgDatosCliente.DataContext = ra.entidades
' End If
' Dim lobr = bd.logs.FirstOrDefault(Function(x) x.idRelacionado = log.idLog AndAlso x.Aplicacion = "OBRAS")
' If lobr IsNot Nothing Then
' Dim obr = tsUtilidades.Utilidades.DeserializarSinErrores(lobr.LogXML, GetType(destinomontajes))
' ra.destinomontajes = obr
' ' lgDatosObra.DataContext = ra.destinomontajes
' 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 _idAlbaran Is Nothing Then
ra = New albaranes
_idAlbaran = Nothing
ra.Fecha = DateOnly.FromDateTime(Today)
ra.NumeroBultos = 1
ra.idEmpresa = EmpresaActual.idEmpresa
ra.Tipo = _Tipo
NuevoEstado = tsUtilidades.EstadosAplicacion.Nuevo
Else
ra = bd.albaranes.First(Function(x) x.idAlbaran = _idAlbaran)
NuevoEstado = tsUtilidades.EstadosAplicacion.ModificandoRegistro
End If
End If
If Me.cbTipo.ItemsSource Is Nothing Then
cbTipo.ItemsSource = tsUtilidades.DescripcionValor.EnumADescripcionValor(GetType(bdGrupoSanchoToro.db.albaranes.TipoAlbaranEnum))
cbAlmacenOrigen.ItemsSource = Comun.ObtieneListaAlmacenes(bd)
cbAlmacenDestino.ItemsSource = Comun.ObtieneListaAlmacenes(bd)
End If
'Me.gcLogs.ItemsSource = bd.logs.Where(Function(x) x.id = ra.idAlbaran AndAlso x.Aplicacion = "albaranes").ToList
gcProductos.ItemsSource = ra.detallesalbaranesidAlbaranRecogidaNavigation
Me.DataContext = ra
Return NuevoEstado
Catch ex As Exception
Throw New Exception(ex.Message, ex)
End Try
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 "albaranes"
End Get
End Property
Private ReadOnly Property IAplicacion_CampoIndice As String
Get
Return "idAlbaran"
End Get
End Property
Public Overrides ReadOnly Property idRegistroAplicacionActual As String
Get
If idLog.HasValue Then
Return "Albarán R.C.:" & idLog.ToString
Else
If Me.Estado = tsUtilidades.EstadosAplicacion.Nuevo Then
Return "Albarán.Nuevo"
Else
Return "Albarán." & DirectCast(Me.DataContext, albaranes).idAlbaran.ToString
End If
End If
End Get
End Property
Public Overrides ReadOnly Property DescripcionRegistro As String
Get
Return "Albarán"
End Get
End Property
'Public Overrides ReadOnly Property CampoIndice As String
' Get
' Return "idAlbaranEntrega"
' End Get
'End Property
Private _Tipo As albaranes.TipoAlbaranEnum
Public Sub New(Tipo As albaranes.TipoAlbaranEnum, Optional idAlbaran As Integer? = Nothing)
' Llamada necesaria para el diseñador.
InitializeComponent()
_idAlbaran = idAlbaran
' Agregue cualquier inicialización después de la llamada a InitializeComponent().
End Sub
Public Overrides Sub EstableceTitulo()
If idLog.HasValue Then
Me.docpanel.Caption = "R.C. Albarán " & ra.idAlbaran
Me.docpanel.Tag = "R.C. Albarán." & ra.idAlbaran
Else
If Me.Estado = tsUtilidades.EstadosAplicacion.ModificandoRegistro Then
Me.docpanel.Caption = "Albarán " & ra.idAlbaran
Me.docpanel.Tag = "Albarán." & ra.idAlbaran.ToString
Else
Me.docpanel.Caption = "Albarán Nuevo"
Me.docpanel.Tag = "Albaran.Nuevo"
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
Me.ErroresValidacion.EliminaError("validando-" & pts.NombreCampo)
Select Case pts.NombreCampo.ToLower
Case "codigopostalcarga"
If Not e.Value Is Nothing AndAlso e.Value.ToString <> "" AndAlso e.Value.ToString <> ra.CodigoMunicipioCarga 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 If sCpo.Length <> 5 Then Throw New Exception("El código postal del Cliente 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.CodigoMunicipioCarga = pob.CodigoMunicipio
Else
Throw New Exception("El código postal de la carga no es correcto")
End If
Case 1
Dim pob = bd.codigospostales.First(Function(x) x.CodigoPostal = sCpo)
ra.CodigoMunicipioCarga = pob.CodigoMunicipio
Case Else
Dim wMunicipios As New dxwCodigosPostales(bd, sCpo)
If wMunicipios.ShowDialog Then
ra.CodigoMunicipioCarga = wMunicipios.CodigoMunicipio
Else
Throw New Exception("El código postal de la carga no es correcto")
End If
End Select
ra.CodigoMunicipioCargaNavigation = bd.municipios.First(Function(x) x.CodigoMunicipio = ra.CodigoMunicipioCarga)
' ra.CodigoPostalCarga = sCpo
ra.RefrescaCamposSoloLectura()
End If
Case "codigopostaldescarga"
If Not e.Value Is Nothing AndAlso e.Value.ToString <> "" AndAlso e.Value.ToString <> ra.CodigoMunicipioDescarga 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 If sCpo.Length <> 5 Then Throw New Exception("El código postal del Cliente 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.CodigoMunicipioDescarga = pob.CodigoMunicipio
Else
Throw New Exception("El código postal de la descarga no es correcto")
End If
Case 1
Dim pob = bd.codigospostales.First(Function(x) x.CodigoPostal = sCpo)
ra.CodigoMunicipioDescarga = pob.CodigoMunicipio
Case Else
Dim wMunicipios As New dxwCodigosPostales(bd, sCpo)
If wMunicipios.ShowDialog Then
ra.CodigoMunicipioDescarga = wMunicipios.CodigoMunicipio
Else
Throw New Exception("El código postal de la descarga no es correcto")
End If
End Select
ra.CodigoMunicipioDescargaNavigation = bd.municipios.First(Function(x) x.CodigoMunicipio = ra.CodigoMunicipioCarga)
' ra.CodigoPostalDescarga = sCpo
ra.RefrescaCamposSoloLectura()
End If
Case "emailcarga"
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 "emaildescarga"
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
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 BtAñadirCodigoPostalCarga_Click(sender As Object, e As RoutedEventArgs)
If ContenedorAplicacion.btGuardar.IsEnabled Then
Dim vncp As New dxwAgregarNuevoMunicipio("")
If vncp.ShowDialog Then
Dim pob = bd.codigospostales.AsNoTracking.First(Function(x) x.CodigoPostal = vncp._CodigoPostal)
ra.CodigoMunicipioCarga = pob.CodigoMunicipio
ra.CodigoPostalCarga = vncp._CodigoPostal
ra.CodigoMunicipioCargaNavigation = bd.municipios.AsNoTracking.First(Function(x) x.CodigoMunicipio = ra.CodigoMunicipioCarga)
ra.RefrescaCamposSoloLectura()
End If
End If
End Sub
Private Sub BtAñadirCodigoPostalDesCarga_Click(sender As Object, e As RoutedEventArgs)
If ContenedorAplicacion.btGuardar.IsEnabled Then
Dim vncp As New dxwAgregarNuevoMunicipio("")
If vncp.ShowDialog Then
Dim pob = bd.codigospostales.First(Function(x) x.CodigoPostal = vncp._CodigoPostal)
ra.CodigoMunicipioDescarga = pob.CodigoMunicipio
ra.CodigoPostalDescarga = vncp._CodigoPostal
ra.CodigoMunicipioDescargaNavigation = bd.municipios.AsNoTracking.First(Function(x) x.CodigoMunicipio = ra.CodigoMunicipioDescarga)
ra.RefrescaCamposSoloLectura()
End If
End If
End Sub
Private Sub BtCancelarCodigoPostalCarga_Click(sender As Object, e As RoutedEventArgs)
If ContenedorAplicacion.btGuardar.IsEnabled Then
ra.CodigoPostalCarga = ""
ra.CodigoMunicipioCarga = ""
ra.CodigoMunicipioCarga = Nothing
ra.RefrescaCamposSoloLectura()
End If
End Sub
Private Sub BtCancelarCodigoPostalDescarga_Click(sender As Object, e As RoutedEventArgs)
If ContenedorAplicacion.btGuardar.IsEnabled Then
ra.CodigoPostalDescarga = ""
ra.CodigoMunicipioDescarga = ""
ra.CodigoMunicipioDescargaNavigation = Nothing
ra.RefrescaCamposSoloLectura()
End If
End Sub
Private Sub ap_DespuesGuardar(sender As Object, e As ItemClickEventArgs, OpcionGuardado As Integer) Handles Me.DespuesGuardar
Dim ae As albaranes = Me.DataContext
_idAlbaran = DirectCast(Me.DataContext, albaranes).idAlbaran
'Me.gcLogs.ItemsSource = bd.logs.Where(Function(x) x.id = ae.idAlbaran AndAlso x.Aplicacion = "albaranes").ToList
End Sub
Private Sub ap_Enlazar(Celda As EditGridCellData, Defecto As Boolean) Handles Me.Enlazar
'Select Case Celda.Column.FieldName.ToLower
' Case "idlog"
' Dim log As logs = gcLogs.CurrentItem
' Dim id As Integer = log.idLog
' Dim uc As New ucAlbaran
' uc.idLog = log.idLog
' FuncionesDinamicas.AbrirAP(uc, OtrosParametros)
'End Select
End Sub
Private Sub ap_EstadoCambiado(EstadoAnterior As tsUtilidades.EstadosAplicacion, EstadoNuevo As tsUtilidades.EstadosAplicacion) Handles Me.EstadoCambiado
If idLog.HasValue Then EstableceSoloLectura()
'Select Case EstadoNuevo
' Case tsUtilidades.EstadosAplicacion.ModificandoRegistro
' If ra.Tipo = TipoAlbaranEnum.COMPRA Then
' gcEsVenta.ReadOnly = True
' Else
' gcEsVenta.ReadOnly = False
' End If
'End Select
End Sub
Private Sub BiBuscarCliente_Click(sender As Object, e As RoutedEventArgs)
'If Me.Estado = EstadosAplicacion.Nuevo Then
Dim dxw As New dxwEntidades(bd, True, False)
If dxw.ShowDialog Then
Dim ent = bd.entidades.First(Function(x) x.idEntidad = dxw.Entidad.idEntidad)
ra.idEntidadNavigation = ent
ra.idEntidad = ent.idEntidad
End If
' End If
End Sub
Private Sub BeCodigoPostalCarga_DefaultButtonClick(sender As Object, e As RoutedEventArgs)
Dim dxw As New dxwCodigosPostales(bd, "")
If dxw.ShowDialog Then
ra.CodigoMunicipioCarga = dxw.CodigoMunicipio
ra.CodigoMunicipioCargaNavigation = bd.municipios.First(Function(x) x.CodigoMunicipio = ra.CodigoMunicipioCarga)
ra.CodigoPostalCarga = dxw.CodigoPostal
ra.RefrescaCamposSoloLectura()
End If
End Sub
Private Sub BeCodigoPostalDescarga_DefaultButtonClick(sender As Object, e As RoutedEventArgs)
Dim dxw As New dxwCodigosPostales(bd, "")
If dxw.ShowDialog Then
ra.CodigoMunicipioDescarga = dxw.CodigoMunicipio
ra.CodigoPostalDescarga = dxw.CodigoPostal
ra.CodigoMunicipioDescargaNavigation = bd.municipios.First(Function(x) x.CodigoMunicipio = ra.CodigoMunicipioDescarga)
ra.RefrescaCamposSoloLectura()
End If
End Sub
Private Sub uc_ImprimirPlantilla(sender As Object, e As ItemClickEventArgs, idPlantilla As Integer, Previsualizar As Boolean) Handles Me.ImprimirPlantilla
If Me.Estado = tsUtilidades.EstadosAplicacion.ModificandoRegistro Then
Dim bdtmp = tscGrupoSanchoToro.NuevoContexto
Dim ae = bdtmp.albaranes.First(Function(x) x.idAlbaran = ra.idAlbaran)
Imprimir(ra, idPlantilla, 1, False)
Else
DXMessageBox.Show("Antes debe almacenar", "Atención")
End If
End Sub
Private Sub Imprimir(ra As albaranes, idPlantilla As Integer, Copias As Integer, ImpresoraDefecto As Boolean)
Dim ds As List(Of albaranes)
' Dim pl As plantillas = (From p In bd.plantillas Where p.idPlantilla = idPlantilla).First
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 albaranes)
ds.Add(ra)
Select Case pl.Tipo
Case Else ' "GRUPLA.ALBENT"
tsWPFCore.tsXtraReport.ImprimirPlantilla(pl.Fichero, ImpresoraDefecto, Copias, ds)
End Select
End Sub
Private Sub tvProductos_ShowingEditor(sender As Object, e As ShowingEditorEventArgs) Handles tvProductos.ShowingEditor
'If ra.detallesalbaranes.ToList.Any(Function(x) x.idAlbaranRecogida.HasValue OrElse (x.idUltimaFactura.HasValue AndAlso (x.facturas.Fecha > ra.Fecha.Date))) Then
' If e.RowHandle <> DataControlBase.NewItemRowHandle Then
' Dim da As detallesalbaranes = gcProductos.GetRow(e.RowHandle)
' If e.Column.FieldName.ToLower <> "observaciones" AndAlso e.Column.FieldName.ToLower <> "fechacancelacion" AndAlso e.Column.FieldName.ToLower <> "motivocancelacion" AndAlso e.Column.FieldName.ToLower <> "precio" AndAlso e.Column.FieldName.ToLower <> "cantidad" Then
' If da.idAlbaranRecogida.HasValue OrElse da.idUltimaFactura.HasValue Then
' e.Cancel = True
' e.Handled = True
' End If
' End If
' End If
'End If
End Sub
Private Sub beCodigoPostalCarga_PreviewKeyDown(sender As Object, e As KeyEventArgs) Handles beCodigoPostalCarga.PreviewKeyDown
If e.Key = Key.F6 Then
BeCodigoPostalCarga_DefaultButtonClick(Nothing, Nothing)
End If
End Sub
Private Sub beCodigoPostalDescarga_PreviewKeyDown(sender As Object, e As KeyEventArgs) Handles beCodigoPostalDescarga.PreviewKeyDown
If e.Key = Key.F6 Then
BeCodigoPostalDescarga_DefaultButtonClick(Nothing, Nothing)
End If
End Sub
Private Sub tvProductos_ValidateRow(sender As Object, e As GridRowValidationEventArgs) Handles tvProductos.ValidateRow
'Dim da As detallesalbaranes = e.Row
'Dim Errores As String = ""
'If da.Cantidad <> 1 AndAlso da.idArticulo.HasValue Then
' Errores &= "Si es un artículo en concreto la cantidad tiene que ser 1" & vbCrLf
'End If
'If Errores <> "" Then
' DXMessageBox.Show(Errores, "Error")
' e.SetError(Errores)
' e.IsValid = False
'End If
Try
Dim htErrores = New Hashtable
ErroresValidacion.LimpiarErrores("TSGC-" & gcProductos.PropiedadesTS.NumeroObjeto.ToString & ":" & e.RowHandle.ToString & ":")
Dim da As detallesalbaranes = e.Row
If da.Cantidad <> 1 AndAlso da.idArticulo.HasValue Then
htErrores.Add("Cantidad1", "Si es un artículo en concreto la cantidad tiene que ser 1")
End If
If htErrores.Count > 0 Then
Me.AgregaErroresTSGC(gcProductos, htErrores, e)
End If
Catch ex As Exception
FuncionesDinamicas.ErrorNoControladoAp(Me, ex)
DXMessageBox.Show(ex.Message, "Error")
End Try
End Sub
Private Sub tvProductos_InitNewRow(sender As Object, e As InitNewRowEventArgs) Handles tvProductos.InitNewRow
gcProductos.SetCellValue(e.RowHandle, "Cantidad", 1)
End Sub
Private Sub ucAlbaranEntrega_EjecutarAccion(sender As Object, e As ItemClickEventArgs, idAccion As Integer) Handles Me.EjecutarAccion
Select Case idAccion
Case 1 'AGREGA PRODUCTOS AL ALBARAN F9
Dim ldet = ra.detallesalbaranesidAlbaranRecogidaNavigation
Dim ld = ldet.Select(Function(x) x.idDetalle).ToArray
If ra.idEntidad.HasValue Then
Dim dxw As New dxwRecogidaProductos(bd, ld, ra.idEntidad)
If dxw.ShowDialog Then
For Each d In dxw.LSeleccionados
If Not ldet.Any(Function(x) x.idDetalle = d.idDetalle) Then
ldet.Add(d)
End If
Next
Dim ldq = ldet.Except(dxw.LSeleccionados).ToList
For Each d In ldq
ldet.Remove(ldet.First(Function(x) x.idDetalle = d.idDetalle))
Next
'Me.gcProductos.ItemsSource = ldet.OrderBy(Function(x) x.idDetalleAlbaran).ToList
' Me.gcProductos.ItemsSource = ldet.OrderBy(Function(x) x.idProductoNavigation.Descripcion).ThenBy(Function(x) x.idDetalle).ToList
'ra.detallealbaranentrega.OrderBy(Function(x) x.productos.Descripcion).ThenBy(Function(x) x.idDetalleAlbaran).ToList
gcProductos.RefreshData()
End If
Else
DXMessageBox.Show("Antes seleccione el cliente", "Atención")
End If
End Select
'Select Case idAccion
' Case 1 ' GENERA ALBARÁN DE RECOGIDA Y FACTURA RAPIDA
' Try
' If Not Guardar(Nothing, Nothing,,, 3) Then
' Dim ae As albaranes = Me.DataContext
' ' If ae.detallesalbaranes.Any(Function(x) x.idAlbaranRecogida.HasValue) Then
' ' DXMessageBox.Show("Sólo se puede generar una factura rápida si no se ha recogido ningún producto del albarán", "Atención")
' ' Else
' Dim ar As albaranesrecogida = New albaranesrecogida
' With ar
' .Fecha = Now
' .idCliente = ae.idCliente
' .idUsuario = idUsuario
' .EstableceNumeroAlbaran(bd)
' End With
' bd.albaranesrecogida.Add(ar)
' For Each d In ae.detallesalbaranes.Where(Function(x) x.EsVenta = False AndAlso x.idAlbaranRecogida.HasValue = False)
' d.albaranesrecogida = ar
' Next
' bd.GuardarCambios()
' Dim id As Integer = ae.idAlbaranEntrega
' Dim uc As New ucFacturaEmitida(,, id)
' FuncionesDinamicas.AbrirAP(uc, OtrosParametros)
' tsWPFCore.Comun.dm.DockController.RemovePanel(docpanel)
' End If
' Catch ex As Exception
' FuncionesDinamicas.ErrorNoControladoAp(Me, ex)
' DXMessageBox.Show(ex.Message, "Error")
' End Try
' Case 2 ' ENVIA ALBARÁN DE ENTREGA POR EMAIL
' Dim bCancelar As Boolean = False
' If Me.ContenedorAplicacion.btGuardar.IsEnabled Then
' bCancelar = Me.Guardar(Nothing, Nothing,, True, 5)
' End If
' If Not bCancelar Then
' Dim dxnc = New dxwEnvioCorreo(ra.entidades.Email, ra.entidades.Email2, "", "Producciones SanchoToro, S.L. - Adjunto le remitimos albarán de entrega nº " & ra.NumeroAlbaran, "Distinguidos Sres., " & vbCrLf & "Adjunto le remitimos albarán entrega nº " & ra.NumeroAlbaran, "AlbaranEntrega_" & ra.NumeroAlbaran.Replace("/", "-") & ".pdf")
' If dxnc.ShowDialog Then
' Dim cta = bd.cuentascorreo.First(Function(x) x.Codigo = "DEFECTO")
' Dim bAlbaran = GeneraPdfAlbaran(bd, ra)
' bdGrupoSanchoToro.db.correos.GeneraRegistroCorreon(bd, dxnc._Asunto, dxnc._Cuerpo, cta, dxnc._Destinatarios, dxnc._CC, dxnc._BCC, bAlbaran, dxnc._Adjunto, ra.idAlbaranEntrega, "albaranes", ra.idCliente)
' End If
' End If
'Case 3 ' GENERA ALBARÁN DE RECOGIDA RÁPIDO
' Try
' If Not Guardar(Nothing, Nothing,,, 3) Then
' Dim ae As albaranes = Me.DataContext
' Dim uc As New ucAlbaranRecogida(, ae.idAlbaranEntrega)
' FuncionesDinamicas.AbrirAP(uc, OtrosParametros)
' tsWPFCore.Comun.dm.DockController.RemovePanel(docpanel)
' End If
' Catch ex As Exception
' FuncionesDinamicas.ErrorNoControladoAp(Me, ex)
' DXMessageBox.Show(ex.Message, "Error")
' End Try
' End Select
End Sub
Friend Shared Function GeneraPdfAlbaran(bd As tscGrupoSanchoToro, Albaran As albaranes) As Byte()
Dim albes As New List(Of albaranes)
albes.Add(Albaran)
Dim tipo As String = "ALB_" & Albaran.Tipo.ToString
Dim idplae = bd.plantillas.First(Function(x) x.Codigo = tipo).idPlantilla
Dim bAes = Informes.GuardaInformeEnPdf(bd, idplae, albes)
Return bAes
End Function
Private Sub ucAlbaranEntrega_TeclaFuncionPulsada(sender As Object, e As KeyEventArgs) Handles Me.TeclaFuncionPulsada
Select Case e.Key
Case Key.F12
ValidaControlObjetoActual()
ucAlbaranEntrega_EjecutarAccion(Nothing, Nothing, 2)
Case Key.F11
ValidaControlObjetoActual()
ucAlbaranEntrega_EjecutarAccion(Nothing, Nothing, 3)
Case Key.System
Select Case e.SystemKey
Case Key.F10
ValidaControlObjetoActual()
ucAlbaranEntrega_EjecutarAccion(Nothing, Nothing, 1)
e.Handled = True
End Select
End Select
End Sub
Private Sub gcProductos_AntesEliminar(gc As tsGridControl, ByRef Cancelar As Boolean) Handles gcProductos.AntesEliminar
End Sub
'Private Sub ucAlbaranEntrega_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 "tipo"
' gcEsVenta.ReadOnly = False
' Select Case DirectCast(ra.Tipo, bdGrupoSanchoToro.db.albaranes.TipoAlbaranEnum)
' Case bdGrupoSanchoToro.db.albaranes.TipoAlbaranEnum.COMPRA
' For Each d In ra.detallesalbaranesidAlbaranNavigation.Where(Function(x) x.EsVenta)
' d.EsVenta = False
' Next
' gcEsVenta.ReadOnly = True
' ra.idAlmacenOrigen = Nothing
' EstableceSoloLectura(cbAlmacenOrigen, True)
' EstableceSoloLectura(cbAlmacenDestino, False)
' Case bdGrupoSanchoToro.db.albaranes.TipoAlbaranEnum.CAMBIO_ALMACEN
' EstableceSoloLectura(cbAlmacenOrigen, False)
' EstableceSoloLectura(cbAlmacenDestino, False)
' Case bdGrupoSanchoToro.db.albaranes.TipoAlbaranEnum.SUBALQUILER
' ra.idAlmacenOrigen = Nothing
' EstableceSoloLectura(cbAlmacenOrigen, True)
' EstableceSoloLectura(cbAlmacenDestino, False)
' Case bdGrupoSanchoToro.db.albaranes.TipoAlbaranEnum.DEVOLUCION_SUBALQUILER
' EstableceSoloLectura(cbAlmacenOrigen, False)
' ra.idAlmacenDestino = Nothing
' EstableceSoloLectura(cbAlmacenDestino, True)
' Case bdGrupoSanchoToro.db.albaranes.TipoAlbaranEnum.ENTREGA
' EstableceSoloLectura(cbAlmacenOrigen, False)
' ra.idAlmacenDestino = Nothing
' EstableceSoloLectura(cbAlmacenDestino, True)
' Case bdGrupoSanchoToro.db.albaranes.TipoAlbaranEnum.RECOGIDA
' ra.idAlmacenOrigen = Nothing
' EstableceSoloLectura(cbAlmacenOrigen, True)
' EstableceSoloLectura(cbAlmacenDestino, False)
' Case bdGrupoSanchoToro.db.albaranes.TipoAlbaranEnum.REGULARIZACION_STOCK
' ra.idAlmacenOrigen = Nothing
' EstableceSoloLectura(cbAlmacenOrigen, True)
' EstableceSoloLectura(cbAlmacenDestino, False)
' End Select
' End Select
' End If
'End Sub
Private Sub hlVale_Click(sender As Object, e As RoutedEventArgs)
'Dim uc As New ucPresupuesto(ra.idPresupuesto)
'FuncionesDinamicas.AbrirAP(uc, OtrosParametros)
End Sub
'Private Sub hlPresupuesto_Click(sender As Object, e As RoutedEventArgs)
' If ra.idPresupuesto.HasValue Then
' Dim uc As New ucPresupuesto(ra.idPresupuesto)
' FuncionesDinamicas.AbrirAP(uc, OtrosParametros)
' End If
'End Sub
Private Sub beContrato_DefaultButtonClick(sender As Object, e As RoutedEventArgs)
'Dim dxw As New dxwAsignarContrato(bd, ra.idEntidad)
'If dxw.ShowDialog Then
' Dim ctr = bd.presupuestos.First(Function(x) x.idPresupuesto = dxw.idPresupuesto)
' ra.idPresupuestoNavigation = ctr
' If ra.idEntidad.HasValue = False Then
' ra.idEntidadNavigation = ctr.idClienteNavigation
' ra.idEntidad = ctr.idCliente
' End If
'End If
End Sub
Private Sub ucAlbaran_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
Select Case DirectCast(ra.Tipo, bdGrupoSanchoToro.db.albaranes.TipoAlbaranEnum)
Case bdGrupoSanchoToro.db.albaranes.TipoAlbaranEnum.RECOGIDA
If ra.idAlmacenDestino.HasValue = False Then hte.Add("ALMACENAR-ALMACEN_DESTINO_OBLIGATORIO", "El almacén destino es obligatorio")
Case bdGrupoSanchoToro.db.albaranes.TipoAlbaranEnum.REGULARIZACION_STOCK
If ra.idAlmacenDestino.HasValue = False Then hte.Add("ALMACENAR-ALMACEN_DESTINO_OBLIGATORIO", "El almacén destino es obligatorio")
End Select
If hte.Count > 0 Then
MensajesError = hte
Cancelar = True
Else
ra.idUsuario = bdGrupoSanchoToro.db.Utilidades.idUsuario
Dim lds As List(Of detallesalbaranes) = Me.gcProductos.ItemsSource
Dim dad = lds.Where(Function(x) x.UnidadesRecogidasTmp < x.Cantidad).ToList
For Each d In dad
Dim nd As New detallesalbaranes
With nd
.Cantidad = d.Cantidad - d.UnidadesRecogidasTmp
.idAlbaran = d.idAlbaran
.idArticulo = d.idArticulo
.idProducto = d.idProducto
.idUltimaFactura = d.idUltimaFactura
.Observaciones = d.Observaciones
.EsVenta = False
.idAlbaranRecogida = Nothing
End With
bd.detallesalbaranes.Add(nd)
d.Cantidad = d.UnidadesRecogidasTmp
Next
Dim bdtmp = tscGrupoSanchoToro.NuevoContexto
Select Case Estado
Case tsUtilidades.EstadosAplicacion.Nuevo
For Each d In ra.detallesalbaranesidAlbaranRecogidaNavigation
d.idAlbaranRecogidaNavigation = ra
d.ActualizaProducto(bdtmp, ra.Tipo, 1, ra.idEmpresa)
Next
Case tsUtilidades.EstadosAplicacion.ModificandoRegistro
Dim das = bdtmp.detallesalbaranes.Where(Function(x) x.idAlbaranRecogida = ra.idAlbaran).ToList
For Each d In das
d.ActualizaProducto(bdtmp, d.idAlbaranRecogidaNavigation.Tipo, -1, d.idAlbaranRecogidaNavigation.idEmpresa)
Next
For Each d In ra.detallesalbaranesidAlbaranRecogidaNavigation
If d.idAlbaranRecogidaNavigation Is Nothing Then d.idAlbaranRecogidaNavigation = ra
d.ActualizaProducto(bdtmp, d.idAlbaranRecogidaNavigation.Tipo, 1, d.idAlbaranRecogidaNavigation.idEmpresa)
Next
End Select
bdtmp.GuardarCambios()
End If
End Sub
Private Sub ucAlbaran_AntesEliminar(sender As Object, e As ItemClickEventArgs, ByRef Cancelar As Boolean, ByRef MensajesError As Hashtable, ByRef OmitirPreguntaContinuar As Boolean) Handles Me.AntesEliminar
Dim bdtmp = tscGrupoSanchoToro.NuevoContexto
Dim das = bdtmp.detallesalbaranes.Where(Function(x) x.idAlbaranRecogida = ra.idAlbaran).ToList
For Each d In das
d.ActualizaProducto(bdtmp, d.idAlbaranRecogidaNavigation.Tipo, -1, d.idAlbaranRecogidaNavigation.idEmpresa)
Next
bdtmp.SaveChanges()
End Sub
Private Sub btIrAContrato_Click(sender As Object, e As RoutedEventArgs)
If ra.idPresupuesto.HasValue Then
'Dim uc As New ucPresupuesto(ra.idPresupuesto)
'FuncionesDinamicas.AbrirAP(uc, OtrosParametros)
End If
End Sub
Private Sub btQuitarContrato_Click(sender As Object, e As RoutedEventArgs)
ra.idPresupuesto = Nothing
ra.idPresupuestoNavigation = Nothing
End Sub
'Private Sub BiBuscarArticulo_Click(sender As Object, e As RoutedEventArgs)
' Try
' If gcProductos.CurrentItem IsNot Nothing Then
' Dim dea As detallesalbaranes = gcProductos.CurrentItem
' If dea.idProducto > 0 Then
' If tvProductos.ActiveEditor Is Nothing Then
' Dispatcher.BeginInvoke(New Action(Sub() tvProductos.ShowEditor()), System.Windows.Threading.DispatcherPriority.Render)
' End If
' Dim dxw As New dxwArticulos(lArticulos, dea.idProducto)
' If dxw.ShowDialog Then
' Dim art = lArticulos.First(Function(x) x.idArticulo = dxw.idArticulo)
' dea.idArticulo = art.idArticulo
' dea.Cantidad = 1
' If tvProductos.ActiveEditor IsNot Nothing Then tvProductos.ActiveEditor.EditValue = art.idArticulo
' tvProductos.PostEditor()
' tvProductos.CloseEditor()
' gcProductos.RefreshRow(tvProductos.FocusedRowHandle)
' End If
' End If
' End If
' Catch ex As Exception
' FuncionesDinamicas.ErrorNoControladoAp(Me, ex)
' DXMessageBox.Show(ex.Message, "Error")
' End Try
'End Sub
End Class