Cancelacion de usados y virtuales
This commit is contained in:
@@ -3540,6 +3540,24 @@ Public Class ClsInventarios
|
|||||||
|
|
||||||
Return Retorno
|
Return Retorno
|
||||||
End Function
|
End Function
|
||||||
|
Public Function GetSaldoVentaDetalleAlmacen(CveVenta As Integer, CveEmpresa As Integer) As Boolean
|
||||||
|
Dim Retorno As Boolean = False
|
||||||
|
DataAdapter("PA_Vta_VentaDetalleSaldoAlmacen")
|
||||||
|
|
||||||
|
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 almacen por detalle.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo)
|
||||||
|
End Try
|
||||||
|
|
||||||
|
Return Retorno
|
||||||
|
End Function
|
||||||
Public Function GetMovimientosDevoluciones(CveVenta As Integer, CveEmpresa As Integer) As Boolean
|
Public Function GetMovimientosDevoluciones(CveVenta As Integer, CveEmpresa As Integer) As Boolean
|
||||||
Dim Retorno As Boolean = False
|
Dim Retorno As Boolean = False
|
||||||
DataAdapter("PA_Vta_VentaDetalleAlmacenDevolucion")
|
DataAdapter("PA_Vta_VentaDetalleAlmacenDevolucion")
|
||||||
|
|||||||
@@ -400,8 +400,8 @@ Namespace Modelos
|
|||||||
Me.VentaDesglosaIEPS = True
|
Me.VentaDesglosaIEPS = True
|
||||||
End If
|
End If
|
||||||
SetTotales(ObjVentas.DtResultados, ObjVentas)
|
SetTotales(ObjVentas.DtResultados, ObjVentas)
|
||||||
End If
|
|
||||||
End If
|
End If
|
||||||
|
End If
|
||||||
If ObjVentas.GetVentaDetalle(CveVenta) Then
|
If ObjVentas.GetVentaDetalle(CveVenta) Then
|
||||||
Me.DtDetalle = ObjVentas.DtResultados.Copy()
|
Me.DtDetalle = ObjVentas.DtResultados.Copy()
|
||||||
End If
|
End If
|
||||||
@@ -2208,12 +2208,11 @@ Namespace Modelos
|
|||||||
|
|
||||||
If DtMovimientosEntrada IsNot Nothing Then
|
If DtMovimientosEntrada IsNot Nothing Then
|
||||||
For Each Dr As DataRow In DtMovimientosEntrada.Rows
|
For Each Dr As DataRow In DtMovimientosEntrada.Rows
|
||||||
If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, CveAF:=Dr("CveAF").ToString.ToEntero, Serie:=Dr("Serie").ToString, Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, Observaciones:=Dr("Observaciones").ToString, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then
|
If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, CveAF:=Dr("CveAF").ToString.ToEntero, Serie:=Dr("Serie").ToString, Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, Observaciones:=Dr("Observaciones").ToString, CveVentaDetalle:=Dr("CveVentaDetalle").ToString().ToEntero(), CveUsuarioModifico:=UsuarioActual.CveUsuario) Then
|
||||||
CveMovimiento = -1
|
CveMovimiento = -1
|
||||||
Exit For
|
Exit For
|
||||||
End If
|
End If
|
||||||
Next
|
Next
|
||||||
|
|
||||||
DtMovimientosEntrada.Dispose()
|
DtMovimientosEntrada.Dispose()
|
||||||
DtMovimientosEntrada = Nothing
|
DtMovimientosEntrada = Nothing
|
||||||
End If
|
End If
|
||||||
@@ -5389,9 +5388,9 @@ Namespace Modelos
|
|||||||
If DtVirtuales IsNot Nothing Then
|
If DtVirtuales IsNot Nothing Then
|
||||||
For Each RowVirtual As DataRow In DtVirtuales.Rows
|
For Each RowVirtual As DataRow In DtVirtuales.Rows
|
||||||
'REALIZA LA DEVOLUCION AL ALMACEN VIRTUAL
|
'REALIZA LA DEVOLUCION AL ALMACEN VIRTUAL
|
||||||
If Not ErrorCancelar AndAlso Not GeneraMovimientosVirtuales(CveVenta, CveMovimientoDevolucion, RowVirtual("CveMovimiento").ToString().ToEntero(), ObjInventario) Then
|
If Not ErrorCancelar AndAlso Not CancelarMovimientosVirtuales(CveVenta, CveMovimientoDevolucion, RowVirtual("CveMovimiento").ToString().ToEntero(), ObjInventario) Then
|
||||||
ErrorCancelar = True
|
ErrorCancelar = True
|
||||||
MensajeError = "Ocurrió un error al cargar los datos de devolución. Por favor vuelva a intentar."
|
MensajeError = "Ocurrió un error al realizar la devolución del virtual. Por favor vuelva a intentar."
|
||||||
End If
|
End If
|
||||||
Next
|
Next
|
||||||
End If
|
End If
|
||||||
@@ -5419,20 +5418,85 @@ Namespace Modelos
|
|||||||
'DEBE REGRESAR LA EXISTENCIA DE (ENTREGA POR ADELANTADO) AL ALMACEN ORGINAL (GENERAL,SIN COSTO)
|
'DEBE REGRESAR LA EXISTENCIA DE (ENTREGA POR ADELANTADO) AL ALMACEN ORGINAL (GENERAL,SIN COSTO)
|
||||||
If Not ErrorCancelar AndAlso DtDevoluciones IsNot Nothing AndAlso DtDevoluciones.Rows.Count > 0 Then
|
If Not ErrorCancelar AndAlso DtDevoluciones IsNot Nothing AndAlso DtDevoluciones.Rows.Count > 0 Then
|
||||||
For Each CveRemision As Integer In ListaRemisionesCancelar
|
For Each CveRemision As Integer In ListaRemisionesCancelar
|
||||||
Dim DtDevRemision As DataTable = DtDevoluciones.FiltraParametros($"CveRemision={CveRemision}")
|
Dim ObjRemision As New Factura(UsuarioActual, CveRemision, UsuarioActual.CveEmpresa)
|
||||||
|
|
||||||
Dim DtDevMovs = DtDevRemision.FiltraParametros("", DistinctColumns:={"CveMovimiento", "CveRemision", "CveAlmacen", "CveAlmacenDestino"})
|
If ObjRemision IsNot Nothing AndAlso ObjRemision.SaldoAlmacen <> 0 Then
|
||||||
|
|
||||||
For Each RowDevolucion As DataRow In DtDevMovs.Rows
|
Dim SaldoAlmacenExA As Decimal = 0
|
||||||
CveAlmacen = RowDevolucion("CveAlmacen").ToString().ToEntero()
|
Dim SaldoAlmacenUsados As Decimal = 0
|
||||||
CveAlmacenDevolucion = RowDevolucion("CveAlmacenDestino").ToString().ToEntero()
|
Dim DtSaldosAlmacenRemision As DataTable = Nothing
|
||||||
|
'VERIFICA SI HACE FALTA DEVOLVER PRODUCTOS Y USADOS EN ESPECIFICO
|
||||||
If Not CancelarMovimientosRemision(CveRemision, CveAlmacen, CveAlmacenDevolucion, DtDevRemision.FiltraParametros($"CveMovimiento={RowDevolucion("CveMovimiento")}"), ObjVentas, ObjInventario) Then
|
If Not ErrorCancelar Then
|
||||||
ErrorCancelar = True
|
If ObjInventario.GetSaldoVentaDetalleAlmacen(ObjRemision.CveVenta, UsuarioActual.CveEmpresa) Then
|
||||||
MensajeError = "Ocurrió un error al cancelar los movimientos de la remisión."
|
DtSaldosAlmacenRemision = ObjInventario.DtResultados.Copy()
|
||||||
Exit For
|
Else
|
||||||
|
ErrorCancelar = True
|
||||||
|
MensajeError = "Ocurrió un error al cargar los saldos de devolución. Por favor vuelva a intentar."
|
||||||
|
End If
|
||||||
End If
|
End If
|
||||||
Next
|
|
||||||
|
|
||||||
|
Dim DtDevRemision As DataTable = DtDevoluciones.FiltraParametros($"CveRemision={CveRemision}")
|
||||||
|
|
||||||
|
Dim DtDevMovs = DtDevRemision.FiltraParametros("", DistinctColumns:={"CveMovimiento", "CveRemision", "CveAlmacen", "CveAlmacenDestino"})
|
||||||
|
|
||||||
|
For Each RowDevolucion As DataRow In DtDevMovs.Rows
|
||||||
|
CveAlmacen = RowDevolucion("CveAlmacen").ToString().ToEntero()
|
||||||
|
CveAlmacenDevolucion = RowDevolucion("CveAlmacenDestino").ToString().ToEntero()
|
||||||
|
|
||||||
|
If CveAlmacen > 0 AndAlso DtSaldosAlmacenRemision IsNot Nothing Then
|
||||||
|
SaldoAlmacenExA = DtSaldosAlmacenRemision.SUMD("SaldoAlmacen", $"CveAlmacen = {CveAlmacen}")
|
||||||
|
End If
|
||||||
|
|
||||||
|
If SaldoAlmacenExA <> 0 Then
|
||||||
|
If Not CancelarMovimientosRemision(CveRemision, CveAlmacen, CveAlmacenDevolucion, DtDevRemision.FiltraParametros($"CveMovimiento={RowDevolucion("CveMovimiento")}"), ObjVentas, ObjInventario) Then
|
||||||
|
ErrorCancelar = True
|
||||||
|
MensajeError = "Ocurrió un error al cancelar los movimientos de la remisión."
|
||||||
|
Exit For
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
Next
|
||||||
|
|
||||||
|
'CANCELAR MOVIMIENTOS DE USADOS SI TIENE
|
||||||
|
If Not ErrorCancelar AndAlso UsuarioActual.Empresa.Funcionalidad(531) = "1" Then
|
||||||
|
Dim CveAlmacenUsado As Integer = 0
|
||||||
|
Dim CveMovimientoUsado As Integer = 0
|
||||||
|
|
||||||
|
If ObjInventario.GetInv_Mov(ObjRemision.CveVenta, UsuarioActual.CveEmpresa) Then
|
||||||
|
CveMovimientoUsado = ObjInventario.DtResultados.FiltroPrimeroValor("CveMovimiento", "CvePS IS NULL AND CveConcepto = 42").ToEntero()
|
||||||
|
CveAlmacenUsado = ObjInventario.DtResultados.FiltroPrimeroValor("CveAlmacen", "CvePS IS NULL AND CveConcepto = 42").ToEntero()
|
||||||
|
Else
|
||||||
|
ErrorCancelar = True
|
||||||
|
MensajeError = "Ocurrió un error al cargar los datos de devolución de usado. Por favor vuelva a intentar."
|
||||||
|
End If
|
||||||
|
|
||||||
|
If CveAlmacenUsado > 0 AndAlso DtSaldosAlmacenRemision IsNot Nothing Then
|
||||||
|
SaldoAlmacenUsados = DtSaldosAlmacenRemision.SUMD("SaldoAlmacen", $"CveAlmacen = {CveAlmacenUsado}")
|
||||||
|
End If
|
||||||
|
|
||||||
|
If Not ErrorCancelar AndAlso CveMovimientoUsado > 0 AndAlso SaldoAlmacenUsados <> 0 Then
|
||||||
|
If CancelarInventarioUsado(ObjRemision, CveAlmacenUsado, CveMovimientoUsado, ObjInventario) <= 0 Then
|
||||||
|
ErrorCancelar = True
|
||||||
|
MensajeError = "Ocurrió un error al cancelar los usados. Por favor vuelva a intentar."
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
End If
|
||||||
|
|
||||||
|
If DtDevRemision IsNot Nothing Then
|
||||||
|
DtDevRemision.Dispose()
|
||||||
|
End If
|
||||||
|
|
||||||
|
If DtDevMovs IsNot Nothing Then
|
||||||
|
DtDevMovs.Dispose()
|
||||||
|
End If
|
||||||
|
|
||||||
|
End If
|
||||||
|
|
||||||
|
If ObjRemision IsNot Nothing Then
|
||||||
|
ObjRemision.Dispose()
|
||||||
|
End If
|
||||||
|
|
||||||
If ErrorCancelar Then
|
If ErrorCancelar Then
|
||||||
Exit For
|
Exit For
|
||||||
@@ -5444,22 +5508,48 @@ Namespace Modelos
|
|||||||
End If
|
End If
|
||||||
|
|
||||||
'CANCELACION DE MOVIMIENTOS DE REMISION
|
'CANCELACION DE MOVIMIENTOS DE REMISION
|
||||||
If Not ErrorCancelar AndAlso ObjFactura.TipoDocto = "Rem" AndAlso RealizarDevolucionAlmacen Then
|
If Not ErrorCancelar AndAlso ObjFactura.TipoDocto = "Rem" AndAlso RealizarDevolucionAlmacen AndAlso ObjFactura.SaldoAlmacen <> 0 Then
|
||||||
|
Dim CveMovimientoUsado As Integer = -1
|
||||||
|
Dim CveAlmacenUsado As Integer = 0
|
||||||
Dim CveAlmacenGeneral As Integer = 0
|
Dim CveAlmacenGeneral As Integer = 0
|
||||||
|
Dim CveAlmacenExA As Integer = 0
|
||||||
|
|
||||||
|
Dim SaldoAlmacenExA As Decimal = 0
|
||||||
|
Dim SaldoAlmacenUsados As Decimal = 0
|
||||||
|
|
||||||
Dim DtMovRemision As DataTable = Nothing
|
Dim DtMovRemision As DataTable = Nothing
|
||||||
'VERIFICA LOS MOVIMIENTOS DE DEVOLUCION YA GENERADOS QUE TENGAN EXISTENCIA EN (ENTREGA POR ADELANTADO)
|
'VERIFICA LOS MOVIMIENTOS DE DEVOLUCION YA GENERADOS QUE TENGAN EXISTENCIA EN (ENTREGA POR ADELANTADO)
|
||||||
If Not ErrorCancelar Then
|
If Not ErrorCancelar Then
|
||||||
If ObjInventario.GetInv_Mov(CveVenta, UsuarioActual.CveEmpresa) Then
|
If ObjInventario.GetInv_Mov(CveVenta, UsuarioActual.CveEmpresa) Then
|
||||||
DtMovRemision = ObjInventario.DtResultados.FiltraParametros("CveTipoAlmacen = 10")
|
DtMovRemision = ObjInventario.DtResultados.FiltraParametros("CveTipoAlmacen = 10")
|
||||||
CveAlmacenGeneral = ObjInventario.DtResultados.FiltroPrimeroValor("CveAlmacen", "CveTipoAlmacen = 1").ToString().ToEntero()
|
CveAlmacenGeneral = ObjInventario.DtResultados.FiltroPrimeroValor("CveAlmacen", "CveTipoAlmacen = 1").ToString().ToEntero()
|
||||||
|
CveAlmacenExA = ObjInventario.DtResultados.FiltroPrimeroValor("CveAlmacen", "CveTipoAlmacen = 10").ToString().ToEntero()
|
||||||
|
|
||||||
|
CveMovimientoUsado = ObjInventario.DtResultados.FiltroPrimeroValor("CveMovimiento", "CvePS IS NULL AND CveConcepto = 42").ToEntero()
|
||||||
|
CveAlmacenUsado = ObjInventario.DtResultados.FiltroPrimeroValor("CveAlmacen", "CvePS IS NULL AND CveConcepto = 42").ToEntero()
|
||||||
Else
|
Else
|
||||||
ErrorCancelar = True
|
ErrorCancelar = True
|
||||||
MensajeError = "Ocurrió un error al cargar los datos de devolución. Por favor vuelva a intentar."
|
MensajeError = "Ocurrió un error al cargar los datos de devolución. Por favor vuelva a intentar."
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
'VERIFICA SI HACE FALTA DEVOLVER PRODUCTOS Y USADOS EN ESPECIFICO
|
||||||
|
If Not ErrorCancelar Then
|
||||||
|
If ObjInventario.GetSaldoVentaDetalleAlmacen(CveVenta, UsuarioActual.CveEmpresa) Then
|
||||||
|
If CveAlmacenExA > 0 Then
|
||||||
|
SaldoAlmacenExA = ObjInventario.DtResultados.SUMD("SaldoAlmacen", $"CveAlmacen = {CveAlmacenExA}")
|
||||||
|
End If
|
||||||
|
If CveAlmacenUsado > 0 Then
|
||||||
|
SaldoAlmacenUsados = ObjInventario.DtResultados.SUMD("SaldoAlmacen", $"CveAlmacen = {CveAlmacenUsado}")
|
||||||
|
End If
|
||||||
|
Else
|
||||||
|
ErrorCancelar = True
|
||||||
|
MensajeError = "Ocurrió un error al cargar los saldos de devolución. Por favor vuelva a intentar."
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
'DEBE REGRESAR LA EXISTENCIA DE (ENTREGA POR ADELANTADO) AL ALMACEN ORGINAL (GENERAL,SIN COSTO)
|
'DEBE REGRESAR LA EXISTENCIA DE (ENTREGA POR ADELANTADO) AL ALMACEN ORGINAL (GENERAL,SIN COSTO)
|
||||||
If Not ErrorCancelar AndAlso DtMovRemision IsNot Nothing AndAlso DtMovRemision.Rows.Count > 0 Then
|
If Not ErrorCancelar AndAlso DtMovRemision IsNot Nothing AndAlso DtMovRemision.Rows.Count > 0 AndAlso SaldoAlmacenExA <> 0 Then
|
||||||
|
|
||||||
Dim DtDevMovs = DtMovRemision.FiltraParametros("", DistinctColumns:={"CveMovimiento", "CveAlmacen"})
|
Dim DtDevMovs = DtMovRemision.FiltraParametros("", DistinctColumns:={"CveMovimiento", "CveAlmacen"})
|
||||||
|
|
||||||
@@ -5475,6 +5565,14 @@ Namespace Modelos
|
|||||||
|
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
'CANCELAR MOVIMIENTOS DE USADOS SI TIENE
|
||||||
|
If UsuarioActual.Empresa.Funcionalidad(531) = "1" AndAlso Not ErrorCancelar AndAlso CveMovimientoUsado > 0 AndAlso SaldoAlmacenUsados <> 0 Then
|
||||||
|
If CancelarInventarioUsado(ObjFactura, CveAlmacenUsado, CveMovimientoUsado, ObjInventario) <= 0 Then
|
||||||
|
ErrorCancelar = True
|
||||||
|
MensajeError = "Ocurrió un error al cancelar los movimientos de usados."
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
End If
|
End If
|
||||||
|
|
||||||
'VERIFICAR MOVIMIENTOS DE APARTADOS
|
'VERIFICAR MOVIMIENTOS DE APARTADOS
|
||||||
@@ -5739,41 +5837,134 @@ Namespace Modelos
|
|||||||
CveAlmacenVirtual = ObjInventario.DtResultados.FiltroPrimeroValor("CveAlmacen").ToEntero()
|
CveAlmacenVirtual = ObjInventario.DtResultados.FiltroPrimeroValor("CveAlmacen").ToEntero()
|
||||||
End If
|
End If
|
||||||
|
|
||||||
If ObjInventario.GetMovimientosDetalleVirtual(CveMovimiento, UsuarioActual.CveEmpresa, CveMovimientoRelacionado:=CveMovimientoRelacionado) Then
|
Dim SaldoVirtual As Decimal = 0
|
||||||
DtPSVirtual = ObjInventario.DtResultados
|
|
||||||
End If
|
|
||||||
|
|
||||||
Dim CveConceptoMovimientoVirtual As Integer = 36
|
'VERIFICA SI HACE FALTA DEVOLVER PRODUCTOS Y USADOS EN ESPECIFICO
|
||||||
Dim CveMovimientoRelacionadoVirtual As Integer = CveMovimiento
|
If Not ErrorCancelar Then
|
||||||
|
If ObjInventario.GetSaldoVentaDetalleAlmacen(CveVenta, UsuarioActual.CveEmpresa) Then
|
||||||
If DtPSVirtual IsNot Nothing AndAlso DtPSVirtual.Rows.Count > 0 AndAlso CveAlmacenVirtual > 0 AndAlso CveConceptoMovimientoVirtual > 0 Then
|
If CveAlmacenVirtual > 0 Then
|
||||||
CveMovimientoVirtual = ObjInventario.AddMovimiento(CveAlmacenVirtual, CveConceptoMovimientoVirtual, 1, Now, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVenta, -1, -1,
|
SaldoVirtual = ObjInventario.DtResultados.SUMD("SaldoAlmacen", $"CveAlmacen = {CveAlmacenVirtual}")
|
||||||
Observaciones:="", Guia:="", CveMovimientoRelacionado:=CveMovimientoRelacionadoVirtual, Modulo:="Modelos/CancelarVirtual")
|
End If
|
||||||
|
|
||||||
If CveMovimientoVirtual > 0 Then
|
|
||||||
For Each RowUsado As DataRow In DtPSVirtual.Rows
|
|
||||||
Dim CvePS = RowUsado("CvePS").ToString().ToEntero()
|
|
||||||
Dim CantidadUsado As Double = RowUsado("Cantidad").ToString().ToDouble()
|
|
||||||
Dim PU As Decimal = RowUsado("Cargo").ToString().ToDecimal()
|
|
||||||
Dim CveUM As Integer = RowUsado("CveUM").ToString().ToEntero()
|
|
||||||
|
|
||||||
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoVirtual, CantidadUsado, CveUM, CvePS, PU, -1) Then
|
|
||||||
ErrorCancelar = True
|
|
||||||
Exit For
|
|
||||||
End If
|
|
||||||
Next
|
|
||||||
Else
|
Else
|
||||||
ErrorCancelar = True
|
ErrorCancelar = True
|
||||||
End If
|
End If
|
||||||
Else
|
End If
|
||||||
If ValidaVirtual Then
|
|
||||||
|
If Not ErrorCancelar AndAlso SaldoVirtual <> 0 Then
|
||||||
|
If ObjInventario.GetMovimientosDetalleVirtual(CveMovimiento, UsuarioActual.CveEmpresa, CveMovimientoRelacionado:=CveMovimientoRelacionado) Then
|
||||||
|
DtPSVirtual = ObjInventario.DtResultados
|
||||||
|
End If
|
||||||
|
|
||||||
|
Dim CveConceptoMovimientoVirtual As Integer = 36
|
||||||
|
Dim CveMovimientoRelacionadoVirtual As Integer = CveMovimiento
|
||||||
|
|
||||||
|
If DtPSVirtual IsNot Nothing AndAlso DtPSVirtual.Rows.Count > 0 AndAlso CveAlmacenVirtual > 0 AndAlso CveConceptoMovimientoVirtual > 0 Then
|
||||||
|
CveMovimientoVirtual = ObjInventario.AddMovimiento(CveAlmacenVirtual, CveConceptoMovimientoVirtual, 1, Now, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVenta, -1, -1,
|
||||||
|
Observaciones:="", Guia:="", CveMovimientoRelacionado:=CveMovimientoRelacionadoVirtual, Modulo:="Modelos/CancelarVirtual")
|
||||||
|
|
||||||
|
If CveMovimientoVirtual > 0 Then
|
||||||
|
For Each RowUsado As DataRow In DtPSVirtual.Rows
|
||||||
|
Dim CvePS = RowUsado("CvePS").ToString().ToEntero()
|
||||||
|
Dim CantidadUsado As Double = RowUsado("Cantidad").ToString().ToDouble()
|
||||||
|
Dim PU As Decimal = RowUsado("Cargo").ToString().ToDecimal()
|
||||||
|
Dim CveUM As Integer = RowUsado("CveUM").ToString().ToEntero()
|
||||||
|
|
||||||
|
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoVirtual, CantidadUsado, CveUM, CvePS, PU, -1) Then
|
||||||
|
ErrorCancelar = True
|
||||||
|
Exit For
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
Else
|
||||||
|
ErrorCancelar = True
|
||||||
|
End If
|
||||||
|
Else
|
||||||
|
If ValidaVirtual Then
|
||||||
|
ErrorCancelar = True
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
If DtPSVirtual.Rows.Count = 0 AndAlso ValidaVirtual = True Then
|
||||||
ErrorCancelar = True
|
ErrorCancelar = True
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
|
|
||||||
If DtPSVirtual.Rows.Count = 0 AndAlso ValidaVirtual = True Then
|
|
||||||
ErrorCancelar = True
|
End If
|
||||||
|
Catch ex As Exception
|
||||||
|
OnError("Ocurrió un error al realizar la devolución al almacen virtual.", ex)
|
||||||
|
ErrorCancelar = True
|
||||||
|
End Try
|
||||||
|
|
||||||
|
Return Not ErrorCancelar
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Private Function CancelarMovimientosVirtuales(CveVenta As Integer, CveMovimientoDevolucion As Integer, CveMovimientoVirtualSalida As Integer, ByRef ObjInventario As ClsInventarios) As Boolean
|
||||||
|
Dim ErrorCancelar As Boolean = False
|
||||||
|
Try
|
||||||
|
If UsuarioActual.Empresa.Funcionalidad(573) = "1" Then
|
||||||
|
Dim CveMovimientoVirtual As Integer = -1
|
||||||
|
Dim ValidaVirtual = True
|
||||||
|
Dim DtPSVirtual As New DataTable("DtTamanios")
|
||||||
|
|
||||||
|
Dim CveAlmacenVirtual As Integer = -1
|
||||||
|
|
||||||
|
If ObjInventario.GetMovimientos(CveMovimientoVirtualSalida, -1, -1, UsuarioActual.CveEmpresa) AndAlso ObjInventario.DtResultados.Rows.Count > 0 Then
|
||||||
|
CveAlmacenVirtual = ObjInventario.DtResultados.FiltroPrimeroValor("CveAlmacen").ToEntero()
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
Dim SaldoVirtual As Decimal = 0
|
||||||
|
|
||||||
|
'VERIFICA SI HACE FALTA DEVOLVER PRODUCTOS Y USADOS EN ESPECIFICO
|
||||||
|
If Not ErrorCancelar Then
|
||||||
|
If ObjInventario.GetSaldoVentaDetalleAlmacen(CveVenta, UsuarioActual.CveEmpresa) Then
|
||||||
|
If CveAlmacenVirtual > 0 Then
|
||||||
|
SaldoVirtual = ObjInventario.DtResultados.SUMD("SaldoAlmacen", $"CveAlmacen = {CveAlmacenVirtual}")
|
||||||
|
End If
|
||||||
|
Else
|
||||||
|
ErrorCancelar = True
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
If Not ErrorCancelar AndAlso SaldoVirtual <> 0 Then
|
||||||
|
If ObjInventario.GetMovimientosDetalle(CveMovimientoVirtualSalida, UsuarioActual.CveEmpresa) Then
|
||||||
|
DtPSVirtual = ObjInventario.DtResultados
|
||||||
|
End If
|
||||||
|
|
||||||
|
Dim CveConceptoMovimientoVirtual As Integer = 36
|
||||||
|
Dim CveMovimientoRelacionadoVirtual As Integer = CveMovimientoDevolucion
|
||||||
|
|
||||||
|
If DtPSVirtual IsNot Nothing AndAlso DtPSVirtual.Rows.Count > 0 AndAlso CveAlmacenVirtual > 0 AndAlso CveConceptoMovimientoVirtual > 0 Then
|
||||||
|
CveMovimientoVirtual = ObjInventario.AddMovimiento(CveAlmacenVirtual, CveConceptoMovimientoVirtual, 1, Now, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVenta, -1, -1,
|
||||||
|
Observaciones:="", Guia:="", CveMovimientoRelacionado:=CveMovimientoRelacionadoVirtual, Modulo:="Modelos/CancelarVirtual")
|
||||||
|
|
||||||
|
If CveMovimientoVirtual > 0 Then
|
||||||
|
For Each RowUsado As DataRow In DtPSVirtual.Rows
|
||||||
|
Dim CvePS = RowUsado("CvePS").ToString().ToEntero()
|
||||||
|
Dim CantidadUsado As Double = RowUsado("Cantidad").ToString().ToDouble()
|
||||||
|
Dim PU As Decimal = RowUsado("PU").ToString().ToDecimal()
|
||||||
|
Dim CveUM As Integer = RowUsado("CveUM").ToString().ToEntero()
|
||||||
|
Dim CveVentaDetalle As Integer = RowUsado("CveVentaDetalle").ToString().ToEntero()
|
||||||
|
|
||||||
|
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoVirtual, CantidadUsado, CveUM, CvePS, PU, -1, CveVentaDetalle:=CveVentaDetalle) Then
|
||||||
|
ErrorCancelar = True
|
||||||
|
Exit For
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
Else
|
||||||
|
ErrorCancelar = True
|
||||||
|
End If
|
||||||
|
Else
|
||||||
|
If ValidaVirtual Then
|
||||||
|
ErrorCancelar = True
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
If DtPSVirtual.Rows.Count = 0 AndAlso ValidaVirtual = True Then
|
||||||
|
ErrorCancelar = True
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
|
||||||
End If
|
End If
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
OnError("Ocurrió un error al realizar la devolución al almacen virtual.", ex)
|
OnError("Ocurrió un error al realizar la devolución al almacen virtual.", ex)
|
||||||
@@ -9921,7 +10112,9 @@ Namespace Modelos
|
|||||||
Public Property Colonia As String
|
Public Property Colonia As String
|
||||||
Public Property Localidad As String
|
Public Property Localidad As String
|
||||||
Public Property Municipio As String
|
Public Property Municipio As String
|
||||||
|
Public Property CveEstado As Integer
|
||||||
Public Property Estado As String
|
Public Property Estado As String
|
||||||
|
Public Property CvePais As Integer
|
||||||
Public Property Pais As String
|
Public Property Pais As String
|
||||||
Public Property CP As String
|
Public Property CP As String
|
||||||
Public Property IVA As Decimal
|
Public Property IVA As Decimal
|
||||||
|
|||||||
Reference in New Issue
Block a user