diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb
index 07f8fecbf..9fdf3e692 100644
--- a/App_Code/Modelos.vb
+++ b/App_Code/Modelos.vb
@@ -4571,7 +4571,7 @@ Namespace Modelos
Next
- 'SI EXISTEN HAY EXISTENCIA EN (ENTREGA POR ADELANTADO) SE TIENE QUE REGRESAR AL ALMACEN GENERAL
+ 'SI EXISTEN HAY EXISTENCIA EN (ENTREGA POR ADELANTADO) SE TIENE QUE REGRESAR AL ALMACEN ORGINAL (GENERAL,SIN COSTO)
If Not ErrorCancelar AndAlso ListaRemisionesCancelar IsNot Nothing AndAlso ListaRemisionesCancelar.Count > 0 Then
'VERIFICA LOS MOVIMIENTOS DE DEVOLUCION YA GENERADOS QUE TENGAN EXISTENCIA EN (ENTREGA POR ADELANTADO)
@@ -4584,21 +4584,24 @@ Namespace Modelos
End If
End If
- 'DEBE REGRESAR LA EXISTENCIA DE (ENTREGA POR ADELANTADO) AL ALMACEN GENERAL
+ 'DEBE REGRESAR LA EXISTENCIA DE (ENTREGA POR ADELANTADO) AL ALMACEN ORGINAL (GENERAL,SIN COSTO)
If Not ErrorCancelar AndAlso DtDevoluciones IsNot Nothing Then
For Each CveRemision As Integer In ListaRemisionesCancelar
Dim DtDevRemision As DataTable = DtDevoluciones.FiltraParametros($"CveRemision={CveRemision}")
- Dim RowDevolucion As DataRow = DtDevRemision.FiltraParametros("", DistinctColumns:={"CveRemision", "CveAlmacen", "CveAlmacenDestino"}).Rows(0)
+ Dim DtDevMovs = DtDevRemision.FiltraParametros("", DistinctColumns:={"CveMovimiento", "CveRemision", "CveAlmacen", "CveAlmacenDestino"})
- CveAlmacen = RowDevolucion("CveAlmacen").ToString().ToEntero()
- CveAlmacenDevolucion = RowDevolucion("CveAlmacenDestino").ToString().ToEntero()
+ For Each RowDevolucion As DataRow In DtDevMovs.Rows
+ CveAlmacen = RowDevolucion("CveAlmacen").ToString().ToEntero()
+ CveAlmacenDevolucion = RowDevolucion("CveAlmacenDestino").ToString().ToEntero()
+
+ 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
+ Next
- 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
Next
Else
ErrorCancelar = True
@@ -5028,7 +5031,7 @@ Namespace Modelos
'SALIDA DE (ENTREGA POR ADELANTADO)
If Not ErrorCancelar Then
- For Each DrRem As DataRow In DtMovDetalle.FiltraParametros($"CveRemision = {CveRemision}").Rows
+ For Each DrRem As DataRow In DtMovDetalle.Rows
Dim CveVentaDetalleRem = DrRem("CveVentaDetalleRemision").ToString.ToEntero
Dim CantidadRem = DrRem("Cantidad").ToString.ToDecimal
@@ -5037,7 +5040,7 @@ Namespace Modelos
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, CveAF:=DrRem("CveActivoFijo").ToString.ToEntero, Serie:=DrRem("Serie").ToString, CveVentaDetalle:=CveVentaDetalleRem, Lote:=DrRem("Lote").ToString) Then
+ If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalidaDevRem, DrRem("Cantidad").ToString.ToDecimal, DrRem("CveUM").ToString.ToEntero, DrRem("CvePS").ToString.ToEntero, DrRem("PU").ToString.ToDecimal, CveAF:=DrRem("CveActivoFijo").ToString.ToEntero, Serie:=DrRem("Serie").ToString, Lote:=DrRem("Lote").ToString, CveVentaDetalle:=CveVentaDetalleRem, CveMovimientoDetalleEntrada:=DrRem("CveMovimientoDetalle").ToString().ToEntero()) Then
ErrorCancelar = True
Exit For
End If
diff --git a/Inventarios/EntregaAlmacen.aspx.vb b/Inventarios/EntregaAlmacen.aspx.vb
index 19bf302aa..6532d27a0 100644
--- a/Inventarios/EntregaAlmacen.aspx.vb
+++ b/Inventarios/EntregaAlmacen.aspx.vb
@@ -509,7 +509,7 @@ Partial Class Inventarios_EntregaAlmacen
TipoEntrega = 1
BtnGuardar.Visible = True
- Dim StrAlmacenes As String = "CveTipoAlmacen IN (1,2)"
+ Dim StrAlmacenes As String = "CveTipoAlmacen IN (1,2,26)"
If UsuarioActual.CveSubProyecto = 8804 Then
StrAlmacenes = "CveTipoAlmacen IN (1,2,12)"
@@ -1663,7 +1663,16 @@ Partial Class Inventarios_EntregaAlmacen
DtTraspasos.Columns.Add("CveTipoAlmacen", GetType(Integer))
DtTraspasos.Columns.Add("CveConceptoMovimientoSalida", GetType(Integer))
- Dim CveMovimientoSalida = -1, FolioSalida = -1, CveMovimientoEntrada = -1, CveMovimientoEntradaApartado = -1, FolioEntrada = -1, CveMovimientoSalidaDevRem = -1, FolioMovimientoSalidaDevRem = -1, CveMovimientoEntradaDevRem = -1, FolioMovimientoEntradaDevRem = -1
+ Dim CveMovimientoSalida = -1, FolioSalida = -1, CveMovimientoEntrada = -1, CveMovimientoEntradaApartado = -1, FolioEntrada = -1, CveMovimientoSalidaDevRem = -1, FolioMovimientoSalidaDevRem = -1, CveMovimientoEntradaDevRem = -1, FolioMovimientoEntradaDevRem = -1
+
+
+ Dim DtDevSinCosto As New DataTable
+ DtDevSinCosto.Columns.Add("CveAlmacen", GetType(Integer))
+ DtDevSinCosto.Columns.Add("Almacen", GetType(String))
+ DtDevSinCosto.Columns.Add("CveMovimientoEntrada", GetType(Integer))
+ DtDevSinCosto.Columns.Add("FolioEntrada", GetType(Integer))
+ DtDevSinCosto.Columns.Add("CveTipoAlmacen", GetType(Integer))
+ DtDevSinCosto.Columns.Add("CveConceptoMovimientoSalida", GetType(Integer))
Try
'VALIDA EXISTENCIA 2
@@ -2189,11 +2198,70 @@ Partial Class Inventarios_EntregaAlmacen
End If
Next
End If
+ End If
+ ' TERMINA: GARANTIAS
+
+ 'DEVOLUCION DE SIN COSTO
+ Dim CantidadEntradaSinCosto As Decimal = 0
+
+ If Not ErrorMovInv AndAlso TipoMovimiento = 2 AndAlso UsuarioActual.Empresa.Funcionalidad(587) = "1" Then
+ For Each Dr1 As DataRow In DtExistencias.FiltraParametros("CveTipoAlmacenDevolucion = 26").Rows
+ Dim CveMovimientoSalidaSinCosto = Dr1("CveMovimiento").ToString.ToEntero
+
+ 'Dim CveAlmacenSinCosto As Integer = Dr1("CveAlmacenDevolucion").ToString().ToEntero()
+
+ 'Dim AlmacenSinCosto As String = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveTipoAlmacen:=26).FiltroPrimeroValor("Almacen", $"CveAlmacen={CveAlmacenSinCosto}").ToString()
+
+ Dim CveMovimientoDevolucionSinCosto = ObjInventario.AddMovimiento(DdlAlmacen.SelectedValue.ToEntero(), 41, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVentaSurtir, -1, -1,
+ Observaciones:=TxtObservaciones.Text.Trim, CveAlmacenDestino:=DdlAlmacen.SelectedValue.ToEntero, CveMovimientoRelacionado:=CveMovimientoSalida,
+ Guia:=TxtGuia.Text, CveContrato:=CveContrato, CveVendedor:=CveVendedor, CveCliente:=CveCliente, Modulo:="RE/G4")
+ Dim FolioDevSinCosto = ObjInventario.Folio
+
+ If Not CveMovimientoDevolucionSinCosto > 0 Then
+ ErrorMovInv = True
+ TextoError.AppendFormat("Ocurrió un error al procesar los movimientos de traspaso de apartado. Por favor vuelva a intentar.")
+ Exit For
+ End If
+
+ If ObjInventario.GetMovimientosDetalle(CveMovimientoSalidaSinCosto, UsuarioActual.CveEmpresa) Then
+ For Each Dr As DataRow In ObjInventario.DtResultados.Rows
+
+ CantidadEntradaSinCosto += Dr("Cantidad").ToString.ToDecimal()
+
+ If Not ObjInventario.AddMovimientoDetalle(CveMovimientoDevolucionSinCosto, 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, CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString.ToEntero, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero, FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString.ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString, "-1"), CveSeccionAlmacen:=If(CBool(Dr("AplicaSeccion")), Dr("CveSeccion").ToString.ToEntero, -1)) Then
+ ErrorMovInv = True
+ TextoError.AppendFormat("Ocurrió un error al procesar los conceptos de traspaso de apartado. Por favor vuelva a intentar.")
+ Exit For
+ End If
+ Next
+ End If
+
+ If ErrorMovInv Then Exit For
+
+ Dim DrMovto = DtDevSinCosto.NewRow
+ DrMovto("Almacen") = DdlAlmacen.SelectedItem.Text
+ DrMovto("CveAlmacen") = DdlAlmacen.SelectedValue.ToEntero()
+ DrMovto("CveMovimientoEntrada") = CveMovimientoDevolucionSinCosto
+ DrMovto("FolioEntrada") = FolioDevSinCosto
+ DrMovto("CveTipoAlmacen") = 10
+ DrMovto("CveConceptoMovimientoSalida") = 41
+ DtDevSinCosto.Rows.Add(DrMovto)
+
+ If Not ErrorMovInv Then
+ ErrorMovInv = Not GenerarPrePoliza(ObjInventario, ObjVentas, ObjConta, CveMovimientoDevolucionSinCosto, TextoError)
+ End If
+
+ Next
End If
- ' TERMINA: GARANTIAS
-
- Dim CantidadPendientePorSalir As Decimal = DtDatos.SUM("CantidadGV").ToDecimal() - CantidadSalidaSinCosto
+ Dim CantidadPendientePorSalir As Decimal = DtDatos.SUM("CantidadGV").ToDecimal()
+
+ If TipoMovimiento = 1 Then
+ CantidadPendientePorSalir = CantidadPendientePorSalir - CantidadSalidaSinCosto
+ ElseIf TipoMovimiento = 2 Then
+ CantidadPendientePorSalir = CantidadPendientePorSalir - CantidadEntradaSinCosto
+ End If
+
If Not ErrorMovInv AndAlso CantidadPendientePorSalir > 0 Then
Dim ConceptoMovimiento = 3
ConceptoMovimiento = If(TipoMovimiento = 1, ConceptoMovimiento, 18)
@@ -2261,7 +2329,7 @@ Partial Class Inventarios_EntregaAlmacen
CantidadPendiente = 0
Dim Cont As Integer = 0
For Each Dr As DataRow In DtDatos.Rows
- CantidadPendiente = Dr("CantidadGV").ToString.ToDecimal - Dr("CantidadTraspaso").ToString.ToDecimal
+ CantidadPendiente = Dr("CantidadGV").ToString.ToDecimal - Dr("CantidadTraspaso").ToString.ToDecimal - CantidadEntradaSinCosto
If CantidadPendiente > 0 Then
Dim PU As Decimal = 0
@@ -2271,7 +2339,7 @@ Partial Class Inventarios_EntregaAlmacen
If DtDetalle.Rows.Count > 0 Then
For Each Dr1 As DataRow In DtDetalle.Rows
If TipoMovimiento = 2 AndAlso DtExistencias IsNot Nothing Then
- PU = DtExistencias.FiltroPrimeroValor("PU", $"CvePS = {Dr("CvePS")} AND CveUM = {Dr("CveUM").ToString.ToEntero} AND Serie = '{Dr1("Serie").ToString}'").ToString.ToDecimal
+ PU = DtExistencias.FiltroPrimeroValor("PU", $"CveTipoAlmacenDevolucion <> 26 AND CvePS = {Dr("CvePS")} AND CveUM = {Dr("CveUM").ToString.ToEntero} AND Serie = '{Dr1("Serie").ToString}'").ToString.ToDecimal
End If
If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, 1, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, PU, Serie:=Dr1("Serie").ToString, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero, FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString.ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString, "-1"), CveSeccionAlmacen:=If(CBool(Dr("AplicaSeccion")), Dr("CveSeccion").ToString.ToEntero, -1)) Then
@@ -2626,6 +2694,13 @@ Partial Class Inventarios_EntregaAlmacen
Next
End If
+ If DtDevSinCosto.Rows.Count > 0 Then
+ Msg.AppendFormat("
Movimientos de Control (Sin Costo):")
+ For Each Dr As DataRow In DtDevSinCosto.Rows
+ Msg.AppendFormat("
Almacén {0} | Devolución directa de almacen: {2} ", Dr("Almacen"), Dr("CveMovimientoEntrada"), Dr("FolioEntrada"))
+ Next
+ End If
+
If CveMovimientoGarantia > 0 Then
Msg.AppendFormat("
Movimiento de Entrada (garantías): {1}", CveMovimientoGarantia, FolioGarantia)
Msg.AppendFormat("
Imprimir Movimiento ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoGarantia)))
diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb
index ea5a9df12..3ed3f2224 100644
--- a/Ventas/Ventas.aspx.vb
+++ b/Ventas/Ventas.aspx.vb
@@ -16086,6 +16086,8 @@ Partial Class Ventas
Dim DtMovimientosDetalles As DataTable
DtRemConceptosSurtidos = Nothing
+ Dim TieneMovimientosSinCosto As Boolean = False
+
'Obtenemos los movimientos detalle
If ObjInventario.GetInv_Mov(CveRemision, UsuarioActual.CveEmpresa) Then
@@ -16116,6 +16118,9 @@ Partial Class Ventas
'VALIDAR SI TIENE PRODUCTOS POR TRASPASAR
If DtMovimientos.Rows.Count > 0 Then
Dim GeneroMovimientoAlmacen As Boolean = False
+
+ TieneMovimientosSinCosto = DtMovimientosDetalles.COUNT("CveTipoAlmacen", "CveTipoAlmacen=26") > 0
+
For Each dr As DataRow In DtMovimientos.Rows
'Obtenemos los Movimientos de salida
If ObjInventario.GetMovimientos(dr("CveMovimiento").ToString().ToEntero(), ConceptoMovimiento, -1, UsuarioActual.CveEmpresa) Then
@@ -16132,9 +16137,14 @@ Partial Class Ventas
Dim MovDetalle As New DataTable
Dim AplicaMovimientoDetalleEntrada As Boolean = False
+
If RemisionesLista.Count > 0 Then
AplicaMovimientoDetalleEntrada = True
- MovDetalle = CuadrarFacturaMovimientos(DtMovimientosDetalles.FiltraParametros($"CveMovimiento = {dr("CveMovimiento")} AND (TieneSalidaxFactura IS NULL OR SaldoAlmacen > 0)"))
+ If TieneMovimientosSinCosto Then
+ MovDetalle = DtMovimientosDetalles.FiltraParametros($"CveMovimiento = {dr("CveMovimiento")}")
+ Else
+ MovDetalle = CuadrarFacturaMovimientos(DtMovimientosDetalles.FiltraParametros($"CveMovimiento = {dr("CveMovimiento")} AND (TieneSalidaxFactura IS NULL OR SaldoAlmacen > 0)"))
+ End If
Else
MovDetalle = DtMovimientosDetalles.FiltraParametros($"CveMovimiento = {dr("CveMovimiento")}")
End If
@@ -16209,7 +16219,10 @@ Partial Class Ventas
MovDetalle.Dispose()
- OcurrioError = Not GeneroMovimientoAlmacen
+ 'VERIFICA QUE SE HAYA GENERADO MOVIMIENTO DE ALMACEN
+ If Not OcurrioError Then
+ OcurrioError = Not GeneroMovimientoAlmacen
+ End If
End If
End If