diff --git a/Inventarios/TraspasoAlmacen.aspx.vb b/Inventarios/TraspasoAlmacen.aspx.vb
index cbccac8d7..3b1b0db67 100644
--- a/Inventarios/TraspasoAlmacen.aspx.vb
+++ b/Inventarios/TraspasoAlmacen.aspx.vb
@@ -1460,6 +1460,9 @@ Partial Class Inventarios_TraspasoAlmacen
End Sub
Private Sub CargaRecepcion()
+ DivRealizarDevolucion.Visible = False
+ ChkRealizarDevolucion.Checked = False
+
Dim Dtt As DataTable = Nothing
FolioBusqueda = If(TxtFolioRecepcion.Text = "", -1, TxtFolioRecepcion.Text.ToEntero)
@@ -1506,6 +1509,11 @@ Partial Class Inventarios_TraspasoAlmacen
If UsuarioActual.TienePermisoProceso(290) Then
BtnCancelarTraspaso.Visible = True
End If
+
+ If UsuarioActual.Empresa.Funcionalidad(162) = "1" Then
+ DivRealizarDevolucion.Visible = True
+ ChkRealizarDevolucion.Checked = True
+ End If
End If
@@ -1518,6 +1526,7 @@ Partial Class Inventarios_TraspasoAlmacen
UpDatosRecepcion.Update()
UPDivCodigoSeriePSRecepcion.Update()
+ UPDatosAlmacen.Update()
End Sub
Protected Sub GvDatosRecepcion_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvDatosRecepcion.RowDataBound
@@ -1815,6 +1824,225 @@ Partial Class Inventarios_TraspasoAlmacen
End Sub
+ Private Class MCancelacionTraspaso
+ Public Property TieneError As Boolean = False
+ Public Property MsgError As String = ""
+ Public Property CveMovimientoEntrada As Integer = -1
+ Public Property FolioEntrada As Integer = 0
+ Public Property CveMovimientoSalidaTransitorio As Integer = -1
+ Public Property FolioSalidaTransitorio As Integer = 0
+ End Class
+
+ Private Function CancelarTraspaso(ByRef ObjInventario As ClsInventarios, ByRef ObjConta As ClsContabilidad, CveAlmacenDestino As Integer, Fecha As DateTime) As MCancelacionTraspaso
+ Dim Retorno As New MCancelacionTraspaso()
+ Dim ErrorMovInv As Boolean = False
+ Try
+ Dim CveMovimientoEntrada = ObjInventario.AddMovimiento(CveAlmacenDestino, 27, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1,
+ Observaciones:=TxtObservacionesRecepcion.Text.Trim, Recibio:=TxtRecibio.Text, CveAlmacenDestino:=CveAlmacenDestino,
+ CveMovimientoRelacionado:=CveMovimientoSalida, Modulo:="TA/C")
+ If CveMovimientoEntrada <= 0 Then
+ Retorno.MsgError = "No se pudo generar el movimiento"
+ ErrorMovInv = True
+ End If
+
+ Retorno.CveMovimientoEntrada = CveMovimientoEntrada
+ Retorno.FolioEntrada = ObjInventario.Folio
+
+ 'AGREGAMOS LA SALIDA
+ Dim CveMovimientoSalidaTransitorio = ObjInventario.AddMovimiento(CveAlmacenTransitorio, 8, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1,
+ Observaciones:=TxtObservacionesRecepcion.Text.Trim, CveAlmacenDestino:=CveAlmacenDestino,
+ CveMovimientoRelacionado:=CveMovimientoEntrada, Modulo:="TA/G12")
+
+ Retorno.CveMovimientoSalidaTransitorio = CveMovimientoSalidaTransitorio
+
+ Dim CvePrePoliza As Integer = -1
+ Dim Concepto As String = TxtObservacionesRecepcion.Text
+ If Concepto = "" Then Concepto = "Cancelación Traspaso"
+
+ If Not ErrorMovInv Then
+ Retorno.FolioSalidaTransitorio = ObjInventario.Folio
+ CvePrePoliza = ObjConta.AddPrePolizas("Inventario/TraspasoAlmacen", 53, 0, 0, 1, Fecha, Concepto, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
+
+ If CvePrePoliza <= 0 Then
+ Retorno.MsgError = "No se pudo generar la Poliza para la cancelación"
+ ErrorMovInv = True
+ End If
+ End If
+
+ If CveMovimientoEntrada <= 0 And Not ErrorMovInv Then
+ Retorno.MsgError = "No se pudo generar el movimiento de entrada correctamente"
+ ErrorMovInv = True
+ Else
+ Dim CveMovimientoDetalleSalida As Integer = 0
+ Dim importe As Double = 0
+
+ Dim Dtt As DataTable = Nothing
+
+ FolioBusqueda = TxtFolioRecepcion.Text.ToEntero
+
+ If ObjInventario.GetMovimientosTransitorios(DdlAlmacenRecepcion.SelectedValue.ToEntero, -1, DdlAlmacenTransitorioRecepcion.SelectedValue.ToEntero, -1, FolioBusqueda, UsuarioActual.CveEmpresa, UsuarioActual.CveUsuario) Then
+ Dtt = ObjInventario.DtResultados.FiltraParametros(String.Format("CveTipoAlmacenDestino <> 4"))
+ Else
+ Dtt = Nothing
+ End If
+
+ If Dtt IsNot Nothing Then
+ For Each GvRow As DataRow In Dtt.Rows
+ Dim CvePS As Integer = GvRow("CvePS").ToString().ToEntero
+ 'DEBE CONSIDERAR SOLO LAS FILAS QUE TENGA PRODUCTOS, NO EL TOTALIZADOR
+ If CvePS > 0 Then
+ CveMovimientoDetalleSalida = GvRow("CveMovimientoDetalle").ToString.ToEntero
+ Dim Cantidad As Decimal = GvRow("Cantidad").ToString.ToDecimal
+ Dim PrecioUnitario As Decimal = GvRow("PU").ToString.ToDecimal
+ If CveMovimientoDetalleSalida <= 0 Then
+ ErrorMovInv = True
+ Retorno.MsgError = "Ocurrió un error al guardar los movimientos de salida"
+ Exit For
+ End If
+
+ If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, Cantidad, GvRow("CveUM").ToString().ToEntero, CvePS, PrecioUnitario, -1, -1, Serie:=GvRow("Serie").ToString, Lote:=GvRow("Lote").ToString(), FechaCaducidad:=GvRow("FechaCaducidad").ToString().ToDate, CveMovimientoDetalleEntrada:=CveMovimientoDetalleSalida) Then
+ ErrorMovInv = True
+ Retorno.MsgError = "Ocurrió un error al guardar los movimientos de entrada"
+ Exit For
+ End If
+ 'MOV, Alm, Transito
+ If GvRow("CveMovimientoDetalleTransitorio").ToString.ToEntero > 0 Then
+ If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalidaTransitorio, Cantidad, GvRow("CveUM").ToString.ToEntero, CvePS, PrecioUnitario, CveSeccionAlmacen:=-3, Serie:=GvRow("Serie").ToString, Lote:=GvRow("Lote").ToString, FechaCaducidad:=GvRow("FechaCaducidad").ToString().ToDate, CveMovimientoDetalleEntrada:=GvRow("CveMovimientoDetalleTransitorio").ToString.ToEntero) Then
+ ErrorMovInv = True
+ Retorno.MsgError = "Ocurrió un error al guardar los movimientos de salida"
+ Exit For
+ End If
+ Else
+ CveMovimientoSalidaTransitorio = 0
+ End If
+ importe += Cantidad * PrecioUnitario
+ End If
+ Next
+ Else
+ ErrorMovInv = True
+ Retorno.MsgError = "Ocurrió un error al guardar los movimientos de salida"
+ End If
+
+
+ 'VIRTUAL ENTRADA
+
+ If UsuarioActual.Empresa.Funcionalidad(573) = "1" Then
+
+ Dim CveAlmacenVirtual As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=GvDatosRecepcion.Rows(0).DataKey("CveAlmacenSalida").ToEntero).FiltroPrimeroValor("CveAlmacenVirtual", "").ToEntero()
+ Dim CveAlmacenVirtualSalida As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=CveAlmacenTransitorio).FiltroPrimeroValor("CveAlmacenVirtual", "").ToEntero()
+
+ 'SI EL ALMACEN ORIGEN ES DE APOPYO LOGISTICO EL ALMACEN VIRTUAL DEBE SER DE APOYO LOGISTICO
+ 'Dim CveAlmacenVirtual As Integer = -1
+ 'If CveTipoAlmacenOrigen = 27 Then
+ ' CveAlmacenVirtual = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveAlmacen", $" CveTipoAlmacen =25 AND CveSubProyecto={CveSubProyecto}").ToEntero()
+ 'Else
+ ' CveAlmacenVirtual = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveAlmacen", $" CveTipoAlmacen =24 AND CveSubProyecto={CveSubProyecto}").ToEntero()
+ 'End If
+
+ Dim CveMovimientoVirtualEntrada As Integer = -1
+ Dim CveMovimientoVirtualSalida As Integer = -1
+
+ 'VERIFICA SI TIENE ALMACEN VIRTUAL ASIGNADA
+ If CveAlmacenVirtual > 0 And CveAlmacenVirtualSalida > 0 Then
+
+ Dim dtvirtual As DataTable = Nothing
+ Dim importePoliza As Decimal = 0
+
+ If ObjInventario.GetMovimientosDetalleVirtual(CveMovimientoEntrada, UsuarioActual.CveEmpresa, CveMovimientoRelacionado:=CveMovimientoSalida) Then
+ dtvirtual = ObjInventario.DtResultados
+ If dtvirtual.Rows.Count > 0 Then
+
+ CveMovimientoVirtualEntrada = ObjInventario.AddMovimiento(CveAlmacenVirtual, 36, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObservacionesRecepcion.Text.Trim, CveMovimientoRelacionado:=CveMovimientoEntrada, Modulo:="TA/C2")
+
+ CveMovimientoVirtualSalida = ObjInventario.AddMovimiento(CveAlmacenVirtualSalida, 37, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObservacionesRecepcion.Text.Trim, CveMovimientoRelacionado:=CveMovimientoSalidaTransitorio, Modulo:="TA/C3")
+
+ Dim FolioVirtualEntrada = ObjInventario.Folio
+
+ For Each RowVirtual As DataRow In dtvirtual.Rows
+ Dim CvePS = RowVirtual("CvePS").ToString().ToEntero()
+ Dim CantidadUsado As Decimal = RowVirtual("Cantidad").ToString().ToDecimal()
+ Dim PU As Decimal = RowVirtual("PUOriginal").ToString().ToDecimal()
+ Dim CveUM As Integer = RowVirtual("CveUM").ToString().ToEntero()
+ Dim CostoIndirecto As Decimal = RowVirtual("CostoIndirecto").ToString().ToDecimal()
+
+
+ importePoliza = importePoliza + (CantidadUsado * PU)
+
+ If Not ObjInventario.AddMovimientoDetalle(CveMovimientoVirtualEntrada, CantidadUsado, CveUM, CvePS, PU, -1, CostoIndirecto:=CostoIndirecto, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then
+ ErrorMovInv = True
+ Exit For
+ End If
+
+ If Not ObjInventario.AddMovimientoDetalle(CveMovimientoVirtualSalida, CantidadUsado, CveUM, CvePS, PU, -1, CostoIndirecto:=CostoIndirecto, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then
+ ErrorMovInv = True
+ Exit For
+ End If
+
+ Next
+ End If
+
+ 'Else
+ ' TextoError = "No se pudo registrar el movimiento virtual"
+ ' ErrorMovInv = True
+ End If
+
+
+ If Not ErrorMovInv AndAlso (CveMovimientoSalida > 0 And CveMovimientoVirtualEntrada > 0) Then
+
+ Dim CvePrePolizaMovVirtual As Integer = ObjConta.AddPrePolizas("TA/C2|TA/C3", 53, importePoliza, importePoliza, 1, TxtFecha.Text.ToDate, "TA/C2|TA/C3", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
+ If CvePrePolizaMovVirtual > 0 Then
+ If Not ErrorMovInv AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePolizaMovVirtual, True, importePoliza, importePoliza, 68, TxtObservacionesRecepcion.Text, TxtObservacionesRecepcion.Text, -1, -1, CveMovimientoAlmacen:=CveMovimientoVirtualSalida, Contabilizable:=False) Then
+ ErrorMovInv = True
+ End If
+
+ If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaMovVirtual, False, importePoliza, importePoliza, 68, TxtObservacionesRecepcion.Text, TxtObservacionesRecepcion.Text, -1, -1, CveMovimientoAlmacen:=CveMovimientoVirtualEntrada, Contabilizable:=False) Then
+ ErrorMovInv = True
+ End If
+ Else
+ ErrorMovInv = True
+ End If
+
+ End If
+ 'Else
+ ' TextoError = "La Sucursal no tiene creado un almacen virtual"
+ ' ErrorMovInv = True
+ End If
+
+ End If
+
+ If Not ErrorMovInv Then
+ Dim ImporteDecimal As Decimal = importe.ToDecimal.RoundAD
+ Dim IdCtaContable As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", String.Format("CveAlmacen = {0}", DdlAlmacenTransitorioRecepcion.SelectedValue.ToEntero)).ToEntero
+
+ If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ImporteDecimal, TxtObservaciones.Text, 68, TxtObservaciones.Text, Fecha, IdCtaContable, -1,
+ CveMovimientoAlmacen:=CveMovimientoEntrada, ImporteMX:=ImporteDecimal, Contabilizable:=False) Then
+ ErrorMovInv = True
+ Retorno.MsgError = "Ocurrió un error al cancelar el traspaso"
+ End If
+
+ If CveMovimientoSalidaTransitorio > 0 Then
+ If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ImporteDecimal, TxtObservaciones.Text, 68, TxtObservaciones.Text, Fecha, IdCtaContable, -1,
+ CveMovimientoAlmacen:=CveMovimientoSalidaTransitorio, ImporteMX:=ImporteDecimal, Contabilizable:=False) Then
+ ErrorMovInv = True
+ Retorno.MsgError = "Ocurrió un error al cancelar el traspaso"
+ End If
+ End If
+
+ End If
+
+ End If
+
+ Catch ex As Exception
+ ErrorMovInv = True
+ Retorno.MsgError = "Ocurrió un error al cancelar el traspaso"
+ OnError("Ocurrió un erro al cancelar el traspaso", ex)
+ End Try
+
+ Retorno.TieneError = ErrorMovInv
+
+ Return Retorno
+ End Function
+
Protected Sub BtnRecibir_Click(sender As Object, e As EventArgs)
If GvDatosRecepcion.Rows.Count > 0 Then
'Valida Movimientos
@@ -2039,6 +2267,13 @@ Partial Class Inventarios_TraspasoAlmacen
End If
End If
+ Dim CancelacionTraspaso As MCancelacionTraspaso = Nothing
+ If UsuarioActual.Empresa.Funcionalidad(162) = "1" AndAlso ChkRealizarDevolucion.Checked AndAlso Not ErrorMovInv Then
+ CancelacionTraspaso = CancelarTraspaso(ObjInventario, ObjConta, GvDatosRecepcion.Rows(0).DataKey("CveAlmacenSalida").ToEntero, TxtFechaRecepcion.Text.ToDateTime())
+ If CancelacionTraspaso IsNot Nothing Then
+ ErrorMovInv = CancelacionTraspaso.TieneError
+ End If
+ End If
If Not ErrorMovInv Then
@@ -2053,6 +2288,9 @@ Partial Class Inventarios_TraspasoAlmacen
Mensaje.AppendFormat(" Imprimir Reporte", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoEntrada))) 'onclick='ImprimirTraslado()'
If CveMovimientoVirtualEntrada > 0 Then Mensaje.AppendFormat("
Folio Virtual {2} Imprimir Reporte", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoVirtualEntrada)), CveMovimientoVirtualEntrada, FolioVirtualEntrada) 'onclick='ImprimirTraslado()'
+ If CancelacionTraspaso IsNot Nothing Then
+ If CancelacionTraspaso.CveMovimientoEntrada > 0 Then Mensaje.AppendFormat("
Folio Devolución {2} Imprimir Reporte", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CancelacionTraspaso.CveMovimientoEntrada)), CancelacionTraspaso.CveMovimientoEntrada, CancelacionTraspaso.FolioEntrada) 'onclick='ImprimirTraslado()'
+ End If
Alert(Mensaje.ToString, TipoMensaje.MsgInformacion)