Checkbox de devolucion de almacen

This commit is contained in:
2022-11-22 09:27:48 -07:00
parent c31448bf05
commit da8c63521f
2 changed files with 244 additions and 0 deletions

View File

@@ -609,6 +609,12 @@
<asp:TextBox ID="TxtObservacionesRecepcion" TextMode="MultiLine" Rows="2" runat="server" Width="300px"></asp:TextBox>
</div>
</div>
<div class="row" id="DivRealizarDevolucion" runat="server" visible="false">
<label class="col-sm-3">Realizar Devolución:</label>
<div class="col-sm-9">
<asp:CheckBox ID="ChkRealizarDevolucion" runat="server" Checked="false" />
</div>
</div>
<div class="row">
<div style="text-align: center;" class="col-sm-12">
<asp:UpdatePanel runat="server">

View File

@@ -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("<br/><a target='_blank' href='/Compras/PopUpVerFactura.aspx?P={0}'>Imprimir Reporte</a>", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoEntrada))) 'onclick='ImprimirTraslado()'
If CveMovimientoVirtualEntrada > 0 Then Mensaje.AppendFormat("<br/><br/><br/>Folio Virtual <b> <a href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={1}"" target=""_blank"">{2}</a> </b> <br/><a target='_blank' href='/Compras/PopUpVerFactura.aspx?P={0}'>Imprimir Reporte</a>", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoVirtualEntrada)), CveMovimientoVirtualEntrada, FolioVirtualEntrada) 'onclick='ImprimirTraslado()'
If CancelacionTraspaso IsNot Nothing Then
If CancelacionTraspaso.CveMovimientoEntrada > 0 Then Mensaje.AppendFormat("<br/><br/><br/>Folio Devolución <b> <a href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={1}"" target=""_blank"">{2}</a> </b> <br/><a target='_blank' href='/Compras/PopUpVerFactura.aspx?P={0}'>Imprimir Reporte</a>", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CancelacionTraspaso.CveMovimientoEntrada)), CancelacionTraspaso.CveMovimientoEntrada, CancelacionTraspaso.FolioEntrada) 'onclick='ImprimirTraslado()'
End If
Alert(Mensaje.ToString, TipoMensaje.MsgInformacion)