Cancelacion de remisiones
This commit is contained in:
@@ -3061,6 +3061,24 @@ Public Class ClsInventarios
|
||||
|
||||
Return Retorno
|
||||
End Function
|
||||
Public Function GetMovimientosDevoluciones(CveVenta As Integer, CveEmpresa As Integer) As Boolean
|
||||
Dim Retorno As Boolean = False
|
||||
DataAdapter("PA_Vta_VentaDetalleAlmacenDevolucion")
|
||||
|
||||
With SqlAdapter.SelectCommand.Parameters
|
||||
.Add("@CveVenta", SqlDbType.Int).Value = CveVenta
|
||||
.Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa
|
||||
End With
|
||||
|
||||
Try
|
||||
SqlAdapter.Fill(Data)
|
||||
Retorno = True
|
||||
Catch ex As Exception
|
||||
OnError("Ocurrió un error al obtener datos de devolucion.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo)
|
||||
End Try
|
||||
|
||||
Return Retorno
|
||||
End Function
|
||||
Public Function GetDevolucionRemisionesFacturadas(CveVenta As Integer) As Boolean
|
||||
Dim Retorno As Boolean = False
|
||||
DataAdapter("PA_Inv_DevolucionRemisionesFacturadas")
|
||||
|
||||
@@ -4340,13 +4340,14 @@ Namespace Modelos
|
||||
End If
|
||||
|
||||
'CUANDO LA CANCELACION ESTA EN PROCESO NO DEBE REALIZAR NADA DE ESTE PROCESO
|
||||
If Not EsRefacturacion AndAlso (CveEstatus > 0 AndAlso CveEstatus <> 20) AndAlso CveEstatusRefacturacion = 0 Then
|
||||
If Not ErrorCancelar AndAlso Not EsRefacturacion AndAlso (CveEstatus > 0 AndAlso CveEstatus <> 20) AndAlso CveEstatusRefacturacion = 0 Then
|
||||
|
||||
'DEVOLUCION DE ALMACEN
|
||||
If Not ErrorCancelar AndAlso TieneAlmacen Then
|
||||
Dim TieneSalida As Boolean = False
|
||||
Dim DtInventario As DataTable = Nothing
|
||||
Dim DtMovimientos As DataTable = Nothing
|
||||
Dim DtSalidas As DataTable = Nothing
|
||||
Dim DtDevoluciones As DataTable = Nothing
|
||||
Dim DtExistencias As DataTable = Nothing
|
||||
Dim DtRemisionesFacturadas As DataTable = Nothing
|
||||
|
||||
@@ -4375,14 +4376,16 @@ Namespace Modelos
|
||||
ErrorCancelar = True
|
||||
End If
|
||||
|
||||
If ObjInventario.GetInv_Mov(CveVenta, UsuarioActual.CveEmpresa) Then
|
||||
DtInventario = ObjInventario.DtResultados.Copy()
|
||||
DtMovimientos = DtInventario.FiltraParametros($"CvePS IS NULL AND {Filtro}")
|
||||
DtExistencias = DtInventario.FiltraParametros($"CvePS IS NOT NULL AND {Filtro} AND CveTipoPS = 2")
|
||||
TieneSalida = DtExistencias.Rows.Count > 0
|
||||
Else
|
||||
ErrorCancelar = True
|
||||
MensajeError = "Ocurrió un error al cargar los datos de devolución. Por favor vuelva a intentar."
|
||||
If Not ErrorCancelar Then
|
||||
If ObjInventario.GetInv_Mov(CveVenta, UsuarioActual.CveEmpresa) Then
|
||||
DtInventario = ObjInventario.DtResultados.Copy()
|
||||
DtSalidas = DtInventario.FiltraParametros($"CvePS IS NULL AND {Filtro}")
|
||||
DtExistencias = DtInventario.FiltraParametros($"CvePS IS NOT NULL AND {Filtro} AND CveTipoPS = 2")
|
||||
TieneSalida = DtExistencias.Rows.Count > 0
|
||||
Else
|
||||
ErrorCancelar = True
|
||||
MensajeError = "Ocurrió un error al cargar los datos de devolución. Por favor vuelva a intentar."
|
||||
End If
|
||||
End If
|
||||
|
||||
End If
|
||||
@@ -4390,38 +4393,42 @@ Namespace Modelos
|
||||
If Not ErrorCancelar AndAlso TieneSalida Then
|
||||
|
||||
If Not ErrorCancelar AndAlso RealizarDevolucionAlmacen Then
|
||||
|
||||
For Each RowMovimiento As DataRow In DtMovimientos.Rows
|
||||
'REALIZA DEVOLUCION A LAS SALIDAS PENDIENTES
|
||||
For Each RowMovimiento As DataRow In DtSalidas.Rows
|
||||
Dim CveConceptoDevolucion As Integer = -1
|
||||
Dim CveAlmacenDevolucion As Integer = -1
|
||||
|
||||
Dim CveMovimientoDevolucion As Integer = 0
|
||||
Dim Folio As Integer = 0
|
||||
|
||||
Select Case RowMovimiento("CveConcepto").ToString().ToEntero()
|
||||
Case 3
|
||||
CveConceptoDevolucion = 18 'DEVOLUCION DEL CLIENTE
|
||||
CveAlmacenDevolucion = RowMovimiento("CveAlmacen").ToString().ToEntero()
|
||||
Case 40
|
||||
CveConceptoDevolucion = 41 'DEVOLUCIÓN DEL CLIENTE DIRECTA
|
||||
'SI TIENE REMISIONES RELACIONADAS
|
||||
If DtRemisionesFacturadas.Rows.Count > 0 Then
|
||||
Dim RowRemision As DataRow = DtExistencias.FiltroPrimero($"CveMovimiento = {RowMovimiento("CveMovimiento").ToString()}")
|
||||
Dim CveRemision As Integer = RowRemision("CveRemision").ToString().ToEntero()
|
||||
CveAlmacenDevolucion = RowMovimiento("CveAlmacen").ToString().ToEntero()
|
||||
''SI TIENE REMISIONES RELACIONADAS
|
||||
'If DtRemisionesFacturadas.Rows.Count > 0 Then
|
||||
' Dim RowRemision As DataRow = DtExistencias.FiltroPrimero($"CveMovimiento = {RowMovimiento("CveMovimiento").ToString()}")
|
||||
|
||||
Dim CancelarRemision As Boolean = (ListaRemisionesCancelar IsNot Nothing) AndAlso (ListaRemisionesCancelar.Any(Function(CveRemisionCancelar) CveRemisionCancelar = CveRemision))
|
||||
'SI LA REMISION SE VA A CANCELAR DEBE REGRESAR AL ALMACEN GENERAL
|
||||
If CancelarRemision Then
|
||||
CveAlmacenDevolucion = RowRemision("CveAlmacenDevolucion").ToString().ToEntero()
|
||||
Else
|
||||
CveAlmacenDevolucion = RowMovimiento("CveAlmacen").ToString().ToEntero()
|
||||
End If
|
||||
Else
|
||||
CveAlmacenDevolucion = RowMovimiento("CveAlmacen").ToString().ToEntero()
|
||||
End If
|
||||
' Dim CveRemision As Integer = RowRemision("CveRemision").ToString().ToEntero()
|
||||
|
||||
' Dim CancelarRemision As Boolean = (ListaRemisionesCancelar IsNot Nothing) AndAlso (ListaRemisionesCancelar.Any(Function(CveRemisionCancelar) CveRemisionCancelar = CveRemision))
|
||||
|
||||
' 'SI LA REMISION SE VA A CANCELAR DEBE REGRESAR AL ALMACEN GENERAL
|
||||
' If CancelarRemision Then
|
||||
' CveAlmacenDevolucion = RowRemision("CveAlmacenDevolucion").ToString().ToEntero()
|
||||
' Else
|
||||
' CveAlmacenDevolucion = RowMovimiento("CveAlmacen").ToString().ToEntero()
|
||||
' End If
|
||||
|
||||
'Else
|
||||
' CveAlmacenDevolucion = RowMovimiento("CveAlmacen").ToString().ToEntero()
|
||||
'End If
|
||||
End Select
|
||||
|
||||
Dim CveMovimientoDevolucion As Integer = 0
|
||||
Dim Folio As Integer = 0
|
||||
|
||||
'VERIFICAR SI YA TIENE UNA DEVOLUCION
|
||||
'SI TIENE SALDO PENDIENTE POR DEVOLVER GENERA UN MOVIMIENTO DE DEVOLUCION
|
||||
If ObjFactura.SaldoAlmacen <> 0 Then
|
||||
'SALIDA DE ALMACEN - SALIDA POR TRASPASO CUANDO ES REMISION - DEVOLUCION (SI ES TRASPASO Y TIENE CONTRATO NO HACE DEVOLUCIóN)
|
||||
CveMovimientoDevolucion = ObjInventario.AddMovimiento(CveAlmacenDevolucion, CveConceptoDevolucion, 1, Now, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVenta, -1, -1, Observaciones:="", Guia:="", CveContrato:=CveContrato, CveAlmacenDestino:=-1)
|
||||
@@ -4518,30 +4525,15 @@ Namespace Modelos
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
'Else
|
||||
' 'UTILIZA LA DEVOLUCION YA REALIZADA
|
||||
' Dim CveConceptoDevolucion As Integer = 18 'DEVOLUCION DEL CLIENTE
|
||||
' If UsuarioActual.Empresa.Funcionalidad(575) = "1" Then
|
||||
' CveConceptoDevolucion = 41 'DEVOLUCIÓN DEL CLIENTE DIRECTA
|
||||
' End If
|
||||
|
||||
' If ObjInventario.GetInv_Mov(CveVenta, UsuarioActual.CveEmpresa) Then
|
||||
' CveMovimientoDevolucion = ObjInventario.DtResultados.FiltroPrimeroValor("CveMovimiento", $"CvePS IS NULL AND CveConcepto = {CveConceptoDevolucion}").ToEntero()
|
||||
' Else
|
||||
' ErrorCancelar = True
|
||||
' MensajeError = "Ocurrió un error al cargar los datos de devolución. Por favor vuelva a intentar."
|
||||
' End If
|
||||
End If
|
||||
|
||||
|
||||
'DEVOLUCION REMISION - REGRESA LAS EXISTENCIAS A ENTREGA POR ADELANTADO SI LA FACTURA VIENE DE REMISION
|
||||
'SI ES DEVOLUCION DEL CLIENTE DEBE REGRESAR A ENTREGA POR ADELANTADO
|
||||
If CveConceptoDevolucion = 18 Then
|
||||
If Not ErrorCancelar AndAlso RevivirRemisiones Then
|
||||
If Not GeneraMovimientosEntregaPorAdelantadoRemision(CveMovimientoDevolucion, ObjVentas, ObjInventario, DtDevRem, ListaRemisionesCancelar) Then
|
||||
ErrorCancelar = True
|
||||
MensajeError = "Ocurrió un error al generar los movimientos de devolución a remisión"
|
||||
End If
|
||||
If Not ErrorCancelar AndAlso CveConceptoDevolucion = 18 AndAlso RevivirRemisiones Then
|
||||
If Not GeneraMovimientosEntregaPorAdelantadoRemision(CveMovimientoDevolucion, ObjVentas, ObjInventario, DtDevRem, ListaRemisionesCancelar) Then
|
||||
ErrorCancelar = True
|
||||
MensajeError = "Ocurrió un error al generar los movimientos de devolución a remisión"
|
||||
End If
|
||||
End If
|
||||
|
||||
@@ -4556,12 +4548,45 @@ Namespace Modelos
|
||||
|
||||
Next
|
||||
|
||||
'VERIFICA LOS MOVIMIENTOS DE DEVOLUCION YA GENERADOS QUE TENGAN EXISTENCIA EN (ENTREGA POR ADELANTADO)
|
||||
If Not ErrorCancelar Then
|
||||
If ObjInventario.GetMovimientosDevoluciones(CveVenta, UsuarioActual.CveEmpresa) Then
|
||||
DtDevoluciones = ObjInventario.DtResultados.FiltraParametros("CveTipoAlmacen = 10")
|
||||
Else
|
||||
ErrorCancelar = True
|
||||
MensajeError = "Ocurrió un error al cargar los datos de devolución. Por favor vuelva a intentar."
|
||||
End If
|
||||
End If
|
||||
|
||||
'SI EXISTEN HAY EXISTENCIA EN (ENTREGA POR ADELANTADO) SE TIENE QUE REGRESAR AL ALMACEN GENERAL
|
||||
If Not ErrorCancelar AndAlso ListaRemisionesCancelar IsNot Nothing AndAlso ListaRemisionesCancelar.Count > 0 Then
|
||||
For Each CveRemision As Integer In ListaRemisionesCancelar
|
||||
For Each RowDevolucion As DataRow In DtDevoluciones.FiltraParametros($"CveRemision={CveRemision}", DistinctColumns:={"CveRemision", "CveAlmacen", "CveAlmacenDestino"}).Rows
|
||||
|
||||
Dim DtDevRemision As DataTable = DtDevoluciones.FiltraParametros($"CveRemision={CveRemision}")
|
||||
|
||||
CveAlmacen = RowDevolucion("CveAlmacen").ToString().ToEntero()
|
||||
CveAlmacenDevolucion = RowDevolucion("CveAlmacenDestino").ToString().ToEntero()
|
||||
|
||||
'DEBE REGRESAR LA EXISTENCIA DE (ENTREGA POR ADELANTADO) AL ALMACEN GENERAL
|
||||
If Not CancelarMovimientosRemision(CveRemision, CveAlmacen, CveAlmacenDevolucion, DtDevRemision, ObjVentas, ObjInventario) Then
|
||||
ErrorCancelar = True
|
||||
MensajeError = "Ocurrió un error al cancelar los movimientos de la remisión."
|
||||
Exit For
|
||||
End If
|
||||
|
||||
DtDevRemision.Dispose()
|
||||
Next
|
||||
Next
|
||||
End If
|
||||
|
||||
'REALIZA LA DEVOLUCION AL ALMACEN VIRTUAL
|
||||
If Not GeneraMovimientosVirtuales(CveVenta, ObjInventario) Then
|
||||
ErrorCancelar = True
|
||||
MensajeError = "Ocurrió un error al cargar los datos de devolución. Por favor vuelva a intentar."
|
||||
End If
|
||||
|
||||
'VERIFICAR MOVIMIENTOS DE APARTADOS
|
||||
If Not ErrorCancelar Then
|
||||
If Not GeneraMovimientosApartados(ObjInventario) Then
|
||||
ErrorCancelar = True
|
||||
@@ -4957,6 +4982,69 @@ Namespace Modelos
|
||||
Return Not ErrorCancelar
|
||||
End Function
|
||||
|
||||
Private Function CancelarMovimientosRemision(CveRemision As Integer, CveAlmacen As Integer, CveAlmacenDestino As Integer, DtMovDetalle As DataTable, ByRef ObjVentas As ClsVentas, ByRef ObjInventario As ClsInventarios) As Boolean
|
||||
Dim ErrorCancelar As Boolean = False
|
||||
|
||||
Dim CveMovimientoSalidaDevRem As Integer = 0
|
||||
Dim FolioMovimientoSalidaDevRem As Integer = 0
|
||||
|
||||
Dim CveMovimientoEntradaDevRem As Integer = 0
|
||||
Dim FolioMovimientoEntradaDevRem As Integer = 0
|
||||
|
||||
'SALIDA DE (ENTREGA POR ADELANTADO)
|
||||
CveMovimientoSalidaDevRem = ObjInventario.AddMovimiento(CveAlmacen, 8, 1, Now, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveRemision, -1, -1, Observaciones:="", Guia:="", CveContrato:=CveContrato, CveAlmacenDestino:=CveAlmacenDestino)
|
||||
FolioMovimientoSalidaDevRem = ObjInventario.Folio
|
||||
|
||||
'ENTRADA A (ALMACEN GENERAL)
|
||||
CveMovimientoEntradaDevRem = ObjInventario.AddMovimiento(CveAlmacenDestino, 9, 1, Now, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveRemision, -1, -1, Observaciones:="", Guia:="", CveContrato:=CveContrato, CveMovimientoRelacionado:=CveMovimientoSalidaDevRem, CveAlmacenDestino:=CveAlmacenDestino)
|
||||
FolioMovimientoEntradaDevRem = ObjInventario.Folio
|
||||
|
||||
If Not (CveMovimientoSalidaDevRem > 0 And CveMovimientoEntradaDevRem > 0) Then
|
||||
ErrorCancelar = True
|
||||
End If
|
||||
|
||||
'SALIDA DE (ENTREGA POR ADELANTADO)
|
||||
If Not ErrorCancelar Then
|
||||
For Each DrRem As DataRow In DtMovDetalle.FiltraParametros($"CveRemision = {CveRemision}").Rows
|
||||
Dim CveVentaDetalleRem = DrRem("CveVentaDetalleRemision").ToString.ToEntero
|
||||
Dim CantidadRem = DrRem("Cantidad").ToString.ToDecimal
|
||||
|
||||
If Not CveVentaDetalleRem > 0 Then
|
||||
ErrorCancelar = True
|
||||
Exit For
|
||||
End If
|
||||
|
||||
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalidaDevRem, DrRem("Cantidad").ToString.ToDecimal, DrRem("CveUM").ToString.ToEntero, DrRem("CvePS").ToString.ToEntero, DrRem("PU").ToString.ToDecimal, DrRem("CveActivoFijo").ToString.ToEntero, -1, DrRem("SerieLote").ToString, CveVentaDetalle:=CveVentaDetalleRem, Lote:=DrRem("Lote").ToString, Batch:=DrRem("Batch").ToString) Then
|
||||
ErrorCancelar = True
|
||||
Exit For
|
||||
End If
|
||||
|
||||
If ErrorCancelar Then
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
|
||||
'ENTRADA A (ALMACEN GENERAL)
|
||||
If Not ErrorCancelar Then
|
||||
If ObjInventario.GetMovimientosDetalle(CveMovimientoSalidaDevRem, UsuarioActual.CveEmpresa) Then
|
||||
For Each Dr As DataRow In ObjInventario.DtResultados.Rows
|
||||
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntradaDevRem, Dr("Cantidad").ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, Dr("CveAF").ToString.ToEntero, -1, Dr("SerieLote").ToString, CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString().ToEntero(), CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero, Lote:=Dr("Lote").ToString, Batch:=Dr("Batch").ToString) Then
|
||||
ErrorCancelar = True
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
|
||||
|
||||
If Not ObjVentas.UpdateVentasDevolucionAlmacen(2, CveRemision) Then
|
||||
ErrorCancelar = True
|
||||
End If
|
||||
|
||||
Return Not ErrorCancelar
|
||||
End Function
|
||||
|
||||
Private Function GeneraMovimientosApartados(ByRef ObjInventario As ClsInventarios) As Boolean
|
||||
Dim ErrorCancelar As Boolean = False
|
||||
If Not ErrorCancelar Then
|
||||
|
||||
@@ -4334,7 +4334,7 @@ Partial Class Ventas
|
||||
If DdlTipoComprobante.SelectedValue.Contiene("Ing", "Ant") AndAlso GvRemisiones.Rows.Count > 0 Then
|
||||
ChkDevAlm.Checked = True
|
||||
ChkDevAlm.Enabled = False
|
||||
LiDevolucionAlmacen.Visible = False
|
||||
'LiDevolucionAlmacen.Visible = False
|
||||
End If
|
||||
|
||||
End If
|
||||
|
||||
Reference in New Issue
Block a user