diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb
index a23c7af68..436328d6c 100644
--- a/App_Code/Modelos.vb
+++ b/App_Code/Modelos.vb
@@ -5080,202 +5080,203 @@ Namespace Modelos
If Not ErrorCancelar AndAlso RealizarDevolucionAlmacen Then
'REALIZA DEVOLUCION A LAS SALIDAS PENDIENTES
- For Each RowMovimiento As DataRow In DtSalidas.Rows
- Dim CveConceptoMovimiento As Integer = -1
- Dim CveAlmacenMovimiento As Integer = -1
+ If ObjFactura.TipoDocto <> "Rem" Then
+ For Each RowMovimiento As DataRow In DtSalidas.Rows
+ Dim CveConceptoMovimiento As Integer = -1
+ Dim CveAlmacenMovimiento As Integer = -1
- Dim CveMovimientoDevolucion As Integer = 0
- Dim Folio As Integer = 0
+ Dim CveMovimientoDevolucion As Integer = 0
+ Dim Folio As Integer = 0
- Select Case RowMovimiento("CveConcepto").ToString().ToEntero()
- Case 3
- CveConceptoMovimiento = 18 'DEVOLUCION DEL CLIENTE
- CveAlmacenMovimiento = RowMovimiento("CveAlmacen").ToString().ToEntero()
- Case 40
- CveConceptoMovimiento = 41 'DEVOLUCIÓN DEL CLIENTE DIRECTA
- CveAlmacenMovimiento = RowMovimiento("CveAlmacen").ToString().ToEntero()
- Case 18
- CveConceptoMovimiento = 3 'DEVOLUCIÓN DEL CLIENTE DIRECTA
- CveAlmacenMovimiento = RowMovimiento("CveAlmacen").ToString().ToEntero()
- ''SI TIENE REMISIONES RELACIONADAS
- 'If DtRemisionesFacturadas.Rows.Count > 0 Then
- ' Dim RowRemision As DataRow = DtExistencias.FiltroPrimero($"CveMovimiento = {RowMovimiento("CveMovimiento").ToString()}")
+ Select Case RowMovimiento("CveConcepto").ToString().ToEntero()
+ Case 3
+ CveConceptoMovimiento = 18 'DEVOLUCION DEL CLIENTE
+ CveAlmacenMovimiento = RowMovimiento("CveAlmacen").ToString().ToEntero()
+ Case 40
+ CveConceptoMovimiento = 41 'DEVOLUCIÓN DEL CLIENTE DIRECTA
+ CveAlmacenMovimiento = RowMovimiento("CveAlmacen").ToString().ToEntero()
+ Case 18
+ CveConceptoMovimiento = 3 'DEVOLUCIÓN DEL CLIENTE DIRECTA
+ CveAlmacenMovimiento = 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 CveRemision As Integer = RowRemision("CveRemision").ToString().ToEntero()
+ ' Dim CveRemision As Integer = RowRemision("CveRemision").ToString().ToEntero()
- ' Dim CancelarRemision As Boolean = (ListaRemisionesCancelar IsNot Nothing) AndAlso (ListaRemisionesCancelar.Any(Function(CveRemisionCancelar) CveRemisionCancelar = CveRemision))
+ ' 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
+ ' '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
+ 'Else
+ ' CveAlmacenDevolucion = RowMovimiento("CveAlmacen").ToString().ToEntero()
+ 'End If
+ End Select
- '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(CveAlmacenMovimiento, CveConceptoMovimiento, 1, Now, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVenta, -1, -1, Observaciones:="", Guia:="", CveContrato:=CveContrato, CveAlmacenDestino:=-1, Modulo:="Mod/CV1")
- Folio = ObjInventario.Folio
+ '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(CveAlmacenMovimiento, CveConceptoMovimiento, 1, Now, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVenta, -1, -1, Observaciones:="", Guia:="", CveContrato:=CveContrato, CveAlmacenDestino:=-1, Modulo:="Mod/CV1")
+ Folio = ObjInventario.Folio
- If CveMovimientoDevolucion > 0 Then
- For Each Dr As DataRow In DtExistencias.FiltraParametros($"CveMovimiento = {RowMovimiento("CveMovimiento").ToString()}").Rows
+ If CveMovimientoDevolucion > 0 Then
+ For Each Dr As DataRow In DtExistencias.FiltraParametros($"CveMovimiento = {RowMovimiento("CveMovimiento").ToString()}").Rows
- Dim FechaCaducidad As Date = MinFecha
- If Not String.IsNullOrEmpty(Dr("FechaCaducidad").ToString()) Then
- If IsDate(Dr("FechaCaducidad")) Then
- FechaCaducidad = Dr("FechaCaducidad").ToString().ToDate()
+ Dim FechaCaducidad As Date = MinFecha
+ If Not String.IsNullOrEmpty(Dr("FechaCaducidad").ToString()) Then
+ If IsDate(Dr("FechaCaducidad")) Then
+ FechaCaducidad = Dr("FechaCaducidad").ToString().ToDate()
+ End If
+ End If
+
+ Dim CveVentaDetalleRemision As Integer = -1
+ If CveConceptoMovimiento = 41 Then
+ CveVentaDetalleRemision = Dr("CveVentaDetalleRemision").ToString.ToEntero()
+ End If
+
+ If Not ObjInventario.AddMovimientoDetalle(CveMovimientoDevolucion, Dr("Cantidad").ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, -1, Serie:=Dr("Serie").ToString, Lote:=Dr("Lote").ToString, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero, CveSeccionAlmacen:=Dr("CveSeccionAlmacen").ToString.ToEntero, FechaCaducidad:=FechaCaducidad, CveVentaDetalleRemision:=CveVentaDetalleRemision) Then
+ ErrorCancelar = True
+ MensajeError = "Ocurrió un error al procesar los conceptos de salida. Por favor vuelva a intentar."
+ Exit For
+ End If
+ Next
+ Else
+ MensajeError = "Ocurrió un error al agregar el movimiento"
+ ErrorCancelar = True
+ End If
+
+ 'GENERA PREPOLIZA DEL MOVIMIENTO DE DEVOLUCION
+ If Not ErrorCancelar Then
+ Dim DtCostos As DataTable = Nothing
+ Dim ValorInventario As Decimal = 0
+ If ObjInventario.GetMovimientosDetalle(CveMovimientoDevolucion, UsuarioActual.CveEmpresa) Then
+ DtCostos = ObjInventario.DtResultados
+
+ Dim tmpCostos As DataTable = DtCostos.FiltraParametros("", "", {"CveClasificacion"})
+ Dim IdCtaContableAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen = {CveAlmacenMovimiento}").ToEntero
+ Dim IdCtaContable As Integer = 0
+ If tmpCostos.Rows.Count > 0 Then
+
+ Dim Multiplicador As Decimal = -1D
+ If ObjFactura.TipoDocto = "Dev" Then
+ Multiplicador = 1D
+ End If
+
+ If ObjVentas.GetVenta(CveVenta, UsuarioActual.CveEmpresa) Then
+ Dim Fecha As Date = Now
+ Dim CveCliente As Integer = ObjVentas.DtResultados(0)("CveCliente").ToString.ToEntero
+ Dim ClienteNombre As String = ObjVentas.DtResultados(0)("ClienteNombre").ToString
+ Dim SerieFolio As String = ObjVentas.DtResultados(0)("SerieFolio").ToString
+ Dim TotalCosto As Decimal = DtCostos.SUMD("Total").RoundAD()
+ Dim TotalCostoAcumulado As Decimal = 0
+ Dim cont As Integer = 1
+
+ Dim CvePrePolizaDev As Integer = ObjConta.AddPrePolizas("Modelos/RecepcionEntrega", 4, TotalCosto, TotalCosto, 1, Fecha, ClienteNombre, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
+ 'SE AGREGA MOVIMIENTO SEPARADO POR LA CUENTA DE VENTAS (ER)
+ For Each RowInv As DataRow In tmpCostos.Rows
+ ValorInventario = DtCostos.SUMD("Total", $"CveClasificacion = {RowInv("CveClasificacion")}").RoundAD()
+ TotalCostoAcumulado += ValorInventario
+
+ 'CUANDO ES EL ÚLTIMO MOVIMIENTO Y HAY DIFERENCIAS EN LOS IMPORTES
+ If cont = DtCostos.Rows.Count AndAlso TotalCosto <> TotalCostoAcumulado Then
+ ValorInventario = ValorInventario + (TotalCosto - TotalCostoAcumulado)
+ End If
+
+ IdCtaContable = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCuentaCostos", $"CveClasificacion = {RowInv("CveClasificacion")}").ToEntero
+
+ If Not ErrorCancelar Then
+ If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaDev, False, Multiplicador * ValorInventario, SerieFolio, 69, SerieFolio, Fecha, IdCtaContable, -1, CveVenta:=CveVenta, CveCliente:=CveCliente, CveMovimientoAlmacen:=CveMovimientoDevolucion, CveSubProyecto:=ObjFactura.CveSubProyecto, ImporteMX:=Multiplicador * ValorInventario, CveClasificacion:=RowInv("CveClasificacion").ToString.ToEntero) Then
+ ErrorCancelar = True
+ End If
+ End If
+
+ cont += 1
+ Next
+
+ If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaDev, True, Multiplicador * TotalCosto, SerieFolio, 68, SerieFolio, Fecha, IdCtaContableAlmacen, -1, CveVenta:=CveVenta, CveCliente:=CveCliente, CveMovimientoAlmacen:=CveMovimientoDevolucion, CveSubProyecto:=ObjFactura.CveSubProyecto, ImporteMX:=Multiplicador * TotalCosto) Then
+ ErrorCancelar = True
+ End If
+
+ 'AUTOCONTA - EL MOVIMIENTO 1 ES EL DE VENTA
+
+ Dim AutoConta As Boolean = UsuarioActual.Empresa.Funcionalidad(200) = "1"
+
+ If UsuarioActual.CveEmpresa = 119 AndAlso ObjFactura.TipoDocto.Contiene("Ant", "Rem", "RNC", "Cot", "Ped", "Pd2", "PA", "Egs", "Dev") Then
+ AutoConta = False
+ End If
+
+ If AutoConta And Not ErrorCancelar Then
+
+ If IdCtaContable > 0 Then
+ If Not ObjConta.ContabilizarPrePoliza(CvePrePolizaDev, UsuarioActual.CveUsuario, UsuarioActual.Empresa, ObjConta:=ObjAC) Then
+ ErrorCancelar = True
+ MensajeError = "Ocurrió un error al contabilizar la prepoliza."
+ End If
+ Else
+ Alert(String.Format("No se puede contabilizar ya que falta asignación de las cuentas contables"), TipoMensaje.MsgAdvertencia)
+ End If
+
+ End If
+
+ Else
+ ErrorCancelar = True
+ MensajeError = "Ocurrió un Error al ingresar las prepolizas"
+ End If
End If
End If
+ End If
- Dim CveVentaDetalleRemision As Integer = -1
- If CveConceptoMovimiento = 41 Then
- CveVentaDetalleRemision = Dr("CveVentaDetalleRemision").ToString.ToEntero()
- End If
-
- If Not ObjInventario.AddMovimientoDetalle(CveMovimientoDevolucion, Dr("Cantidad").ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, -1, Serie:=Dr("Serie").ToString, Lote:=Dr("Lote").ToString, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero, CveSeccionAlmacen:=Dr("CveSeccionAlmacen").ToString.ToEntero, FechaCaducidad:=FechaCaducidad, CveVentaDetalleRemision:=CveVentaDetalleRemision) Then
+ 'AGREGA BITACORA A VENTA
+ If Not ErrorCancelar AndAlso RealizarDevolucionAlmacen AndAlso CveMovimientoDevolucion > 0 Then
+ Dim MensajeBitacora = "Devuelta"
+ If Not ObjEventos.AddEventoBitacora(String.Format("Venta {2} en Folio: {1}", CveMovimientoDevolucion, Folio, MensajeBitacora), "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=CveVenta) Then
+ MensajeError = "Ocurrió un error al agregar la bitacora."
ErrorCancelar = True
- MensajeError = "Ocurrió un error al procesar los conceptos de salida. Por favor vuelva a intentar."
- Exit For
+ End If
+ End If
+
+ Else
+ 'SI EXISTE UNA DEVOLUCION PREVIAMENTE HECHA UTILIZAR COMO REFERENCIA
+ If DtDevPrevias IsNot Nothing AndAlso DtDevPrevias.Rows.Count > 0 Then
+ CveMovimientoDevolucion = DtDevPrevias.FiltroPrimeroValor("CveMovimiento", $"CveConcepto = {CveConceptoMovimiento}").ToEntero()
+ 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 Not ErrorCancelar AndAlso CveConceptoMovimiento = 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
+
+ If DtVirtuales IsNot Nothing Then
+ For Each RowVirtual As DataRow In DtVirtuales.Rows
+ 'REALIZA LA DEVOLUCION AL ALMACEN VIRTUAL
+ If Not ErrorCancelar AndAlso Not GeneraMovimientosVirtuales(CveVenta, CveMovimientoDevolucion, RowVirtual("CveMovimiento").ToString().ToEntero(), ObjInventario) Then
+ ErrorCancelar = True
+ MensajeError = "Ocurrió un error al cargar los datos de devolución. Por favor vuelva a intentar."
End If
Next
- Else
- MensajeError = "Ocurrió un error al agregar el movimiento"
- ErrorCancelar = True
End If
- 'GENERA PREPOLIZA DEL MOVIMIENTO DE DEVOLUCION
- If Not ErrorCancelar Then
- Dim DtCostos As DataTable = Nothing
- Dim ValorInventario As Decimal = 0
- If ObjInventario.GetMovimientosDetalle(CveMovimientoDevolucion, UsuarioActual.CveEmpresa) Then
- DtCostos = ObjInventario.DtResultados
-
- Dim tmpCostos As DataTable = DtCostos.FiltraParametros("", "", {"CveClasificacion"})
- Dim IdCtaContableAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen = {CveAlmacenMovimiento}").ToEntero
- Dim IdCtaContable As Integer = 0
- If tmpCostos.Rows.Count > 0 Then
-
- Dim Multiplicador As Decimal = -1D
- If ObjFactura.TipoDocto = "Dev" Then
- Multiplicador = 1D
- End If
-
- If ObjVentas.GetVenta(CveVenta, UsuarioActual.CveEmpresa) Then
- Dim Fecha As Date = Now
- Dim CveCliente As Integer = ObjVentas.DtResultados(0)("CveCliente").ToString.ToEntero
- Dim ClienteNombre As String = ObjVentas.DtResultados(0)("ClienteNombre").ToString
- Dim SerieFolio As String = ObjVentas.DtResultados(0)("SerieFolio").ToString
- Dim TotalCosto As Decimal = DtCostos.SUMD("Total").RoundAD()
- Dim TotalCostoAcumulado As Decimal = 0
- Dim cont As Integer = 1
-
- Dim CvePrePolizaDev As Integer = ObjConta.AddPrePolizas("Modelos/RecepcionEntrega", 4, TotalCosto, TotalCosto, 1, Fecha, ClienteNombre, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
- 'SE AGREGA MOVIMIENTO SEPARADO POR LA CUENTA DE VENTAS (ER)
- For Each RowInv As DataRow In tmpCostos.Rows
- ValorInventario = DtCostos.SUMD("Total", $"CveClasificacion = {RowInv("CveClasificacion")}").RoundAD()
- TotalCostoAcumulado += ValorInventario
-
- 'CUANDO ES EL ÚLTIMO MOVIMIENTO Y HAY DIFERENCIAS EN LOS IMPORTES
- If cont = DtCostos.Rows.Count AndAlso TotalCosto <> TotalCostoAcumulado Then
- ValorInventario = ValorInventario + (TotalCosto - TotalCostoAcumulado)
- End If
-
- IdCtaContable = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCuentaCostos", $"CveClasificacion = {RowInv("CveClasificacion")}").ToEntero
-
- If Not ErrorCancelar Then
- If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaDev, False, Multiplicador * ValorInventario, SerieFolio, 69, SerieFolio, Fecha, IdCtaContable, -1, CveVenta:=CveVenta, CveCliente:=CveCliente, CveMovimientoAlmacen:=CveMovimientoDevolucion, CveSubProyecto:=ObjFactura.CveSubProyecto, ImporteMX:=Multiplicador * ValorInventario, CveClasificacion:=RowInv("CveClasificacion").ToString.ToEntero) Then
- ErrorCancelar = True
- End If
- End If
-
- cont += 1
- Next
-
- If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaDev, True, Multiplicador * TotalCosto, SerieFolio, 68, SerieFolio, Fecha, IdCtaContableAlmacen, -1, CveVenta:=CveVenta, CveCliente:=CveCliente, CveMovimientoAlmacen:=CveMovimientoDevolucion, CveSubProyecto:=ObjFactura.CveSubProyecto, ImporteMX:=Multiplicador * TotalCosto) Then
- ErrorCancelar = True
- End If
-
- 'AUTOCONTA - EL MOVIMIENTO 1 ES EL DE VENTA
-
- Dim AutoConta As Boolean = UsuarioActual.Empresa.Funcionalidad(200) = "1"
-
- If UsuarioActual.CveEmpresa = 119 AndAlso ObjFactura.TipoDocto.Contiene("Ant", "Rem", "RNC", "Cot", "Ped", "Pd2", "PA", "Egs", "Dev") Then
- AutoConta = False
- End If
-
- If AutoConta And Not ErrorCancelar Then
-
- If IdCtaContable > 0 Then
- If Not ObjConta.ContabilizarPrePoliza(CvePrePolizaDev, UsuarioActual.CveUsuario, UsuarioActual.Empresa, ObjConta:=ObjAC) Then
- ErrorCancelar = True
- MensajeError = "Ocurrió un error al contabilizar la prepoliza."
- End If
- Else
- Alert(String.Format("No se puede contabilizar ya que falta asignación de las cuentas contables"), TipoMensaje.MsgAdvertencia)
- End If
-
- End If
-
- Else
- ErrorCancelar = True
- MensajeError = "Ocurrió un Error al ingresar las prepolizas"
- End If
- End If
- End If
+ If ErrorCancelar Then
+ Exit For
End If
- 'AGREGA BITACORA A VENTA
- If Not ErrorCancelar AndAlso RealizarDevolucionAlmacen AndAlso CveMovimientoDevolucion > 0 Then
- Dim MensajeBitacora = "Devuelta"
- If Not ObjEventos.AddEventoBitacora(String.Format("Venta {2} en Folio: {1}", CveMovimientoDevolucion, Folio, MensajeBitacora), "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=CveVenta) Then
- MensajeError = "Ocurrió un error al agregar la bitacora."
- ErrorCancelar = True
- End If
- End If
-
- Else
- 'SI EXISTE UNA DEVOLUCION PREVIAMENTE HECHA UTILIZAR COMO REFERENCIA
- If DtDevPrevias IsNot Nothing AndAlso DtDevPrevias.Rows.Count > 0 Then
- CveMovimientoDevolucion = DtDevPrevias.FiltroPrimeroValor("CveMovimiento", $"CveConcepto = {CveConceptoMovimiento}").ToEntero()
- 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 Not ErrorCancelar AndAlso CveConceptoMovimiento = 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
-
- If DtVirtuales IsNot Nothing Then
- For Each RowVirtual As DataRow In DtVirtuales.Rows
- 'REALIZA LA DEVOLUCION AL ALMACEN VIRTUAL
- If Not ErrorCancelar AndAlso Not GeneraMovimientosVirtuales(CveVenta, CveMovimientoDevolucion, RowVirtual("CveMovimiento").ToString().ToEntero(), ObjInventario) Then
- ErrorCancelar = True
- MensajeError = "Ocurrió un error al cargar los datos de devolución. Por favor vuelva a intentar."
- End If
- Next
- End If
-
- If ErrorCancelar Then
- Exit For
- End If
-
- Next
-
+ Next
+ End If
'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
+ If Not ErrorCancelar AndAlso ObjFactura.TipoDocto <> "Rem" AndAlso ListaRemisionesCancelar IsNot Nothing AndAlso ListaRemisionesCancelar.Count > 0 Then
'VERIFICA LOS MOVIMIENTOS DE DEVOLUCION YA GENERADOS QUE TENGAN EXISTENCIA EN (ENTREGA POR ADELANTADO)
If Not ErrorCancelar Then
@@ -5314,6 +5315,40 @@ Namespace Modelos
End If
+ 'CANCELACION DE MOVIMIENTOS DE REMISION
+ If Not ErrorCancelar AndAlso ObjFactura.TipoDocto = "Rem" AndAlso RealizarDevolucionAlmacen Then
+ Dim CveAlmacenGeneral As Integer = 0
+ Dim DtMovRemision As DataTable = Nothing
+ 'VERIFICA LOS MOVIMIENTOS DE DEVOLUCION YA GENERADOS QUE TENGAN EXISTENCIA EN (ENTREGA POR ADELANTADO)
+ If Not ErrorCancelar Then
+ If ObjInventario.GetInv_Mov(CveVenta, UsuarioActual.CveEmpresa) Then
+ DtMovRemision = ObjInventario.DtResultados.FiltraParametros("CveTipoAlmacen = 10")
+ CveAlmacenGeneral = ObjInventario.DtResultados.FiltroPrimeroValor("CveAlmacen", "CveTipoAlmacen = 1").ToString().ToEntero()
+ Else
+ ErrorCancelar = True
+ MensajeError = "Ocurrió un error al cargar los datos 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)
+ If Not ErrorCancelar AndAlso DtMovRemision IsNot Nothing AndAlso DtMovRemision.Rows.Count > 0 Then
+
+ Dim DtDevMovs = DtMovRemision.FiltraParametros("", DistinctColumns:={"CveMovimiento", "CveAlmacen"})
+
+ For Each RowDevolucion As DataRow In DtDevMovs.Rows
+ CveAlmacen = RowDevolucion("CveAlmacen").ToString().ToEntero()
+
+ If Not CancelarMovimientosRemision(CveVenta, CveAlmacen, CveAlmacenGeneral, DtMovRemision.FiltraParametros($"CveMovimiento={RowDevolucion("CveMovimiento")} AND CvePS > 0"), ObjVentas, ObjInventario) Then
+ ErrorCancelar = True
+ MensajeError = "Ocurrió un error al cancelar los movimientos de la remisión."
+ Exit For
+ End If
+ Next
+
+ End If
+
+ End If
+
'VERIFICAR MOVIMIENTOS DE APARTADOS
If Not ErrorCancelar Then
If Not GeneraMovimientosApartados(ObjInventario) Then
diff --git a/Ashx/SIGWeb.ashx b/Ashx/SIGWeb.ashx
index 4c8ad31ac..abe9f9840 100644
--- a/Ashx/SIGWeb.ashx
+++ b/Ashx/SIGWeb.ashx
@@ -116,7 +116,10 @@ Public Class SIGWeb : Implements IHttpHandler, IRequiresSessionState
Case "sendMailLPM"
context.Response.Write(sendMailLPM(context))
Case "getSATColomias"
- getSatColonias(context)
+ getSATColonias(context)
+
+ Case "cancelarRemision"
+ cancelarRemision(context)
End Select
Catch ex As Exception
ex.GuardaLog(ex.Message)
@@ -1422,4 +1425,47 @@ Public Class SIGWeb : Implements IHttpHandler, IRequiresSessionState
Return retorno
End Function
#End Region
+
+#Region "Get SAT Colonmias"
+ Private Function cancelarRemision(ByVal context As HttpContext) As String
+ Dim retorno As String = ""
+
+ Dim CveVenta As Integer = IfNull(context.Request("CveVenta"), "-1").ToString().ToEntero()
+
+ If CveVenta > 0 Then
+ Dim usuario As Usuario = UsuarioActual(context)
+ If usuario IsNot Nothing AndAlso usuario.CveEmpresa > 0 Then
+ Dim CveAlmacenDevolucion As Integer = 0
+
+ Using ObjInv As New ClsInventarios
+ If ObjInv.GetInv_Mov(CveVenta, usuario.CveEmpresa) Then
+ If ObjInv.DtResultados.Rows.Count > 0 Then
+ CveAlmacenDevolucion = ObjInv.DtResultados.FiltroPrimeroValor("CveAlmacen", "CveConcepto IN (3,40)").ToEntero()
+ End If
+ End If
+ End Using
+
+ Dim ObjFacturaCancelacion As New Modelos.Factura(usuario, CveVenta, usuario.CveEmpresa, EsCancelacion:=True)
+ ObjFacturaCancelacion.CveAlmacenDevolucion = CveAlmacenDevolucion
+
+ If ObjFacturaCancelacion.TipoDocto = "Rem" Then
+ Dim respuesta = ObjFacturaCancelacion.CancelarFactura(True, New List(Of Integer))
+ If respuesta IsNot Nothing Then
+ retorno = JsonConvert.SerializeObject(respuesta)
+ End If
+ End If
+
+ End If
+
+ End If
+
+ If Not String.IsNullOrEmpty(retorno) Then
+ context.Response.Write(retorno)
+ Else
+ context.Response.Write("[]")
+ End If
+
+ Return retorno
+ End Function
+#End Region
End Class
\ No newline at end of file