diff --git a/App_Code/BundleConfig.vb b/App_Code/BundleConfig.vb index e3da720f1..4331cdfa4 100644 --- a/App_Code/BundleConfig.vb +++ b/App_Code/BundleConfig.vb @@ -33,6 +33,28 @@ Public Class BundleConfig "~/Scripts/exporting.js" )) + bundles.Add(New ScriptBundle("~/Metronic/assets/global/scripts/JSNoCustom").Include( + "~/Metronic/assets/global/plugins/bootstrap/js/bootstrap.min.js", + "~/Metronic/assets/global/plugins/bootstrap-hover-dropdown/bootstrap-hover-dropdown.min.js", + "~/Metronic/assets/global/plugins/jquery-slimscroll/jquery.slimscroll.min.js", + "~/Metronic/assets/global/plugins/jquery.blockui.min.js", + "~/Metronic/assets/global/plugins/jquery.cokie.min.js", + "~/Metronic/assets/global/plugins/bootstrap-switch/js/bootstrap-switch.min.js", + "~/Metronic/assets/global/plugins/select2/select2.full.min.js", + "~/Metronic/assets/global/plugins/select2/i18n/es.js", + "~/Metronic/assets/global/plugins/bootstrap-confirmation/bootstrap-confirmation.min.js", + "~/Metronic/assets/global/plugins/bootbox/bootbox.min.js", + "~/Metronic/assets/global/plugins/bootstrap-toastr/toastr.min.js", + "~/Metronic/assets/global/scripts/metronic.js", + "~/Metronic/assets/admin/layout/scripts/layout.js", + "~/Metronic/assets/admin/layout/scripts/quick-sidebar.js", + "~/Metronic/assets/admin/layout/scripts/demo.js", + "~/Metronic/assets/admin/pages/scripts/table-advanced.js", + "~/Metronic/assets/admin/pages/scripts/ui-alert-dialog-api.js", + "~/Metronic/assets/global/plugins/icheck/icheck.min.js", + "~/Metronic/assets/global/plugins/dropzone/dropzone.js", + "~/Metronic/assets/layouts/layout3/scripts/jquery.datetimepicker.full.js" + )) bundles.Add(New ScriptBundle("~/Metronic/assets/global/scripts/JS").Include( "~/Metronic/assets/global/plugins/bootstrap/js/bootstrap.min.js", "~/Metronic/assets/global/plugins/bootstrap-hover-dropdown/bootstrap-hover-dropdown.min.js", diff --git a/App_Code/ClsAcumuladores.vb b/App_Code/ClsAcumuladores.vb index 2d74b5f69..e451e5b44 100644 --- a/App_Code/ClsAcumuladores.vb +++ b/App_Code/ClsAcumuladores.vb @@ -797,6 +797,21 @@ Public Class ClsAcumuladores Return Retorno End Function + Public Function EliminarGarantiasDetalle(CveVenta As Integer) As Boolean + Dim Retorno As Boolean = False + SqlDataAdapter("PA_Acum_GarantiasDetallePolizaRemove") + With SqlAdapter.SelectCommand.Parameters + .Add("@CveVenta", SqlDbType.Int).Value = CveVenta + End With + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As SqlException + OnError("Ocurrió un error a eliminar de garantia.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + Return Retorno + End Function + #End Region @@ -863,6 +878,21 @@ Public Class ClsAcumuladores End Try Return Retorno End Function + + Public Function EliminarPolizaVirtual(CveVenta As Integer) As Boolean + Dim Retorno As Boolean = False + SqlDataAdapter("PA_Vta_PolizaVirtualRemove") + With SqlAdapter.SelectCommand.Parameters + .Add("@CveVenta", SqlDbType.Int).Value = CveVenta + End With + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As SqlException + OnError("Ocurrió un al eliminar poliza virtual. ", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + Return Retorno + End Function #End Region Public Function DistribuidorMovtosAdd(CveCliente As Integer, Cantidad As Integer, CveTamaño As Integer, CveConcepto As Integer, CveVenta As Integer, CveUsuario As Integer, diff --git a/App_Code/ClsInventarios.vb b/App_Code/ClsInventarios.vb index e0cc7a960..74be2b92d 100644 --- a/App_Code/ClsInventarios.vb +++ b/App_Code/ClsInventarios.vb @@ -3061,6 +3061,24 @@ Public Class ClsInventarios Return Retorno End Function + Public Function GetMovimientosDevoluciones(CveVenta As Integer, CveEmpresa As Integer) As Boolean + Dim Retorno As Boolean = False + DataAdapter("PA_Vta_VentaDetalleAlmacenDevolucion") + + 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 devolucion.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + + Return Retorno + End Function Public Function GetDevolucionRemisionesFacturadas(CveVenta As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Inv_DevolucionRemisionesFacturadas") diff --git a/App_Code/ClsOC.vb b/App_Code/ClsOC.vb index 0cbe50889..bcecb847d 100644 --- a/App_Code/ClsOC.vb +++ b/App_Code/ClsOC.vb @@ -967,13 +967,31 @@ Public Class ClsOC Return Retorno End Function - Public Function UpdateOrdenCompraDetalleAjuste(CveOrdenCompra As Integer, CveOrdenCompraDetalle As Integer, Diferencia As Double) As Boolean + Public Function UpdateOrdenCompraDetalleAjuste(CveOrdenCompra As Integer, CveOrdenCompraDetalle As Integer, Diferencia As Double, CveUsuarioModifico As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_OC_OrdenesCompraDetalleAjusteUpdate") With SqlAdapter.SelectCommand.Parameters .Add("@CveOrdenCompra", SqlDbType.Int).Value = CveOrdenCompra .Add("@CveOrdenCompraDetalle", SqlDbType.Int).Value = CveOrdenCompraDetalle .Add("@Diferencia", SqlDbType.Float).Value = Diferencia + .Add("@CveUsuarioModifico", SqlDbType.Int).Value = CveUsuarioModifico + End With + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As Exception + OnError("Ocurrió un error al actualizar la Orden de Compra Detalle.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + End Try + Return Retorno + End Function + Public Function UpdateOrdenCompraMoneda(CveOrdenCompra As Integer, CveEmpresa As Integer, CveMoneda As Integer, CveUsuarioModifico As Integer) As Boolean + Dim Retorno As Boolean = False + DataAdapter("PA_OC_OrdenesCompraMonedaUpdate") + With SqlAdapter.SelectCommand.Parameters + .Add("@CveOrdenCompra", SqlDbType.Int).Value = CveOrdenCompra + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + .Add("@CveMoneda", SqlDbType.Int).Value = CveMoneda + .Add("@CveUsuarioModifico", SqlDbType.Int).Value = CveUsuarioModifico End With Try SqlAdapter.Fill(Data) diff --git a/App_Code/ClsOIEventos.vb b/App_Code/ClsOIEventos.vb index a6056e0b2..d73f1af56 100644 --- a/App_Code/ClsOIEventos.vb +++ b/App_Code/ClsOIEventos.vb @@ -238,6 +238,23 @@ Public Class ClsOIEventos Return Retorno End Function + Public Function GetEventosVinculos(CveEvento As Integer, CveEmpresa As Integer) As Boolean + Dim Retorno As Boolean = False + DataAdapter("PA_OI_EventosVinculosGet") + + With SqlAdapter.SelectCommand.Parameters + .Add("@CveEvento", SqlDbType.Int).Value = CveEvento + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + End With + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As Exception + OnError("Ocurrió un error al obtener el Catálogo de Evento Usuario.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + End Try + Return Retorno + End Function + Public Function UpUsuarioseventosVisto(CveEvento As Integer, CveUsuario As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("UPDATE OI_EventosUsuarios SET Visto=1 WHERE CveEvento =@CveEvento AND CveUsuario=@CveUsuario", CommandType.Text) @@ -296,7 +313,11 @@ Public Class ClsOIEventos End Function Public Function AddOI_Eventos2(cveTipoEvento As OITipoEventos, asunto As String, descripcion As String, prioridad As Int32, cveUsuarioDe As Int32, cveUsuarioPara As Int32, fechaInicio As String, fechaFin As String, cveRevision As Int32, archivo As String, Lmiembros As List(Of Integer), chkList As List(Of String), - cveUsuarioIng As Int32, cveEmpresa As Int32, Optional CveEventoPadre As Integer = -1, Optional Acuerdos As String = Nothing, Optional CveAgendaTipo As Integer = -1) As Boolean + cveUsuarioIng As Int32, cveEmpresa As Int32, Optional CveEventoPadre As Integer = -1, Optional Acuerdos As String = Nothing, Optional CveAgendaTipo As Integer = -1, + Optional CveActivoFijo As Integer = -1, Optional CveIE As Integer = -1, Optional CveProspecto As Integer = -1, Optional CveCliente As Integer = -1, + Optional CveOS As Integer = -1, Optional CveOC As Integer = -1, Optional CvePersonal As Integer = -1, Optional CveProveedor As Integer = -1, + Optional CveCompra As Integer = -1, Optional CveVenta As Integer = -1, Optional CveContrato As Integer = -1, Optional CveSubProyecto As Integer = -1, + Optional CveMovimientoAlmacen As Integer = -1) As Boolean Dim retorno As Boolean = False Dim xmlMiembros As System.Xml.Linq.XDocument = Nothing @@ -339,6 +360,22 @@ Public Class ClsOIEventos .Add("@CveEventoPadre", SqlDbType.Int).Value = CveEventoPadre .Add("@Acuerdos", SqlDbType.VarChar).Value = If(Acuerdos Is Nothing, DBNull.Value, DirectCast(Acuerdos, Object)) .Add("@CveAgendaTipo", SqlDbType.Int).Value = CveAgendaTipo + + .Add("@CveActivoFijo", SqlDbType.Int).Value = CveActivoFijo + .Add("@CveIE", SqlDbType.Int).Value = CveIE + .Add("@CveProspecto", SqlDbType.Int).Value = CveProspecto + .Add("@CveCliente", SqlDbType.Int).Value = CveCliente + .Add("@CveOS", SqlDbType.Int).Value = CveOS + .Add("@CveOC", SqlDbType.Int).Value = CveOC + .Add("@CvePersonal", SqlDbType.Int).Value = CvePersonal + .Add("@CveProveedor", SqlDbType.Int).Value = CveProveedor + .Add("@CveCompra", SqlDbType.Int).Value = CveCompra + .Add("@CveVenta", SqlDbType.Int).Value = CveVenta + .Add("@CveContrato", SqlDbType.Int).Value = CveContrato + .Add("@CveSubProyecto", SqlDbType.Int).Value = CveSubProyecto + .Add("@CveMovimientoAlmacen", SqlDbType.Int).Value = CveMovimientoAlmacen + + '.Add("@mailPara", SqlDbType.VarChar).Direction = ParameterDirection.Output '.Add("@mailBody", SqlDbType.Xml).Direction = ParameterDirection.Output End With diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb index 0c2e6a30c..8a6e569be 100644 --- a/App_Code/ClsPaginas.vb +++ b/App_Code/ClsPaginas.vb @@ -70,7 +70,11 @@ Public Class ClsPaginas Get Try 'UsuarioActual = DirectCast(Session("UsuarioSIG"), Usuario) - UsuarioActual = CType(Context.Session("UsuarioSIG"), Usuario) + If Context.Session("UsuarioSIG") Is Nothing Then + Usuario.CerrarSession() + Else + UsuarioActual = CType(Context.Session("UsuarioSIG"), Usuario) + End If Catch ex As Exception Usuario.CerrarSession() Return Nothing @@ -4142,7 +4146,7 @@ Public Class ClsPaginas PaginaDict.Add("/CRM/PopUpBuscarAcercamiento.aspx".ToUpper(), 1312) PaginaDict.Add("/CRM/RepAcercamientosProcesos.aspx".ToUpper(), 1313) PaginaDict.Add("/CRM/RepAcercamientosRechazos.aspx".ToUpper(), 1314) - PaginaDict.Add("/CRM/RepAcercamientosProcesosDetalle.aspx".ToUpper(), -1) + PaginaDict.Add("/CRM/RepAcercamientosProcesosDetalle.aspx".ToUpper(), 758) PaginaDict.Add("/CRM/CatMetas.aspx".ToUpper(), 684) #End Region #Region "CxC" @@ -6781,7 +6785,7 @@ Public Class ClsPaginas Dim rds5 As New ReportDataSource With {.Name = "DataSet5", .Value = If(Vta.DtNCVinculadas IsNot Nothing, Vta.DtNCVinculadas, New DataTable)} ' sino esta creado el objeto, lo creamos, para que no truene el reporte lrds.Add(rds5) - If UsuarioActual.CveEmpresa = 141 AndAlso RutaFormato.Contains("Factura") Then + If UsuarioActual.CveEmpresa = 141 AndAlso (RutaFormato.Contains("Factura") Or RutaFormato.Contains("Cotizacion")) Then params.Add(New ReportParameter("Kilometraje", Vta.Kilometraje.ToString)) End If 'Imprime los parametros diff --git a/App_Code/ClsVentas.vb b/App_Code/ClsVentas.vb index a9e28e571..5d07b8c90 100644 --- a/App_Code/ClsVentas.vb +++ b/App_Code/ClsVentas.vb @@ -4496,6 +4496,25 @@ Public Class ClsVentas Return Retorno End Function + + Public Function EliminarUsados(CveVenta As Integer) As Boolean + Dim Retorno As Boolean = False + + DataAdapter("PA_Vta_VentasUsadosRemove", CommandType.StoredProcedure) + + With SqlAdapter.SelectCommand.Parameters + .Add("@CveVenta", SqlDbType.Int).Value = CveVenta + End With + + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As Exception + OnError("Ocurrió un error al eliminar los usados.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + + Return Retorno + End Function Public Function GetVentasUsados(CveVenta As Integer, CveSubProyecto As Integer, Fecha As DateTime, CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb index bb508bd69..c0867da74 100644 --- a/App_Code/Modelos.vb +++ b/App_Code/Modelos.vb @@ -3281,7 +3281,7 @@ Namespace Modelos End If Catch ex As Exception - GuardaLog(ex.ToString()) + GuardaLog("Model.Proceso.PreP-" & ex.ToString()) ErrorPrepoliza = True End Try Return ErrorPrepoliza @@ -4340,13 +4340,14 @@ Namespace Modelos End If 'CUANDO LA CANCELACION ESTA EN PROCESO NO DEBE REALIZAR NADA DE ESTE PROCESO - If Not EsRefacturacion AndAlso (CveEstatus > 0 AndAlso CveEstatus <> 20) AndAlso CveEstatusRefacturacion = 0 Then + If Not ErrorCancelar AndAlso Not EsRefacturacion AndAlso (CveEstatus > 0 AndAlso CveEstatus <> 20) AndAlso CveEstatusRefacturacion = 0 Then 'DEVOLUCION DE ALMACEN If Not ErrorCancelar AndAlso TieneAlmacen Then Dim TieneSalida As Boolean = False Dim DtInventario As DataTable = Nothing - Dim DtMovimientos As DataTable = Nothing + Dim DtSalidas As DataTable = Nothing + Dim DtDevoluciones As DataTable = Nothing Dim DtExistencias As DataTable = Nothing Dim DtRemisionesFacturadas As DataTable = Nothing @@ -4375,14 +4376,16 @@ Namespace Modelos ErrorCancelar = True End If - If ObjInventario.GetInv_Mov(CveVenta, UsuarioActual.CveEmpresa) Then - DtInventario = ObjInventario.DtResultados.Copy() - DtMovimientos = DtInventario.FiltraParametros($"CvePS IS NULL AND {Filtro}") - DtExistencias = DtInventario.FiltraParametros($"CvePS IS NOT NULL AND {Filtro} AND CveTipoPS = 2") - TieneSalida = DtExistencias.Rows.Count > 0 - Else - ErrorCancelar = True - MensajeError = "Ocurrió un error al cargar los datos de devolución. Por favor vuelva a intentar." + If Not ErrorCancelar Then + If ObjInventario.GetInv_Mov(CveVenta, UsuarioActual.CveEmpresa) Then + DtInventario = ObjInventario.DtResultados.Copy() + DtSalidas = DtInventario.FiltraParametros($"CvePS IS NULL AND {Filtro}") + DtExistencias = DtInventario.FiltraParametros($"CvePS IS NOT NULL AND {Filtro} AND CveTipoPS = 2") + TieneSalida = DtExistencias.Rows.Count > 0 + Else + ErrorCancelar = True + MensajeError = "Ocurrió un error al cargar los datos de devolución. Por favor vuelva a intentar." + End If End If End If @@ -4390,38 +4393,42 @@ Namespace Modelos If Not ErrorCancelar AndAlso TieneSalida Then If Not ErrorCancelar AndAlso RealizarDevolucionAlmacen Then - - For Each RowMovimiento As DataRow In DtMovimientos.Rows + 'REALIZA DEVOLUCION A LAS SALIDAS PENDIENTES + For Each RowMovimiento As DataRow In DtSalidas.Rows Dim CveConceptoDevolucion As Integer = -1 Dim CveAlmacenDevolucion As Integer = -1 + + Dim CveMovimientoDevolucion As Integer = 0 + Dim Folio As Integer = 0 + Select Case RowMovimiento("CveConcepto").ToString().ToEntero() Case 3 CveConceptoDevolucion = 18 'DEVOLUCION DEL CLIENTE CveAlmacenDevolucion = RowMovimiento("CveAlmacen").ToString().ToEntero() Case 40 CveConceptoDevolucion = 41 'DEVOLUCIÓN DEL CLIENTE DIRECTA - '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() + CveAlmacenDevolucion = 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 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 - Else - CveAlmacenDevolucion = RowMovimiento("CveAlmacen").ToString().ToEntero() - End If + ' Dim CveRemision As Integer = RowRemision("CveRemision").ToString().ToEntero() + ' 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 + + 'Else + ' CveAlmacenDevolucion = RowMovimiento("CveAlmacen").ToString().ToEntero() + 'End If End Select - Dim CveMovimientoDevolucion As Integer = 0 - Dim Folio As Integer = 0 - - 'VERIFICAR SI YA TIENE UNA DEVOLUCION + '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(CveAlmacenDevolucion, CveConceptoDevolucion, 1, Now, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVenta, -1, -1, Observaciones:="", Guia:="", CveContrato:=CveContrato, CveAlmacenDestino:=-1) @@ -4518,30 +4525,15 @@ Namespace Modelos End If End If End If - 'Else - ' 'UTILIZA LA DEVOLUCION YA REALIZADA - ' Dim CveConceptoDevolucion As Integer = 18 'DEVOLUCION DEL CLIENTE - ' If UsuarioActual.Empresa.Funcionalidad(575) = "1" Then - ' CveConceptoDevolucion = 41 'DEVOLUCIÓN DEL CLIENTE DIRECTA - ' End If - - ' If ObjInventario.GetInv_Mov(CveVenta, UsuarioActual.CveEmpresa) Then - ' CveMovimientoDevolucion = ObjInventario.DtResultados.FiltroPrimeroValor("CveMovimiento", $"CvePS IS NULL AND CveConcepto = {CveConceptoDevolucion}").ToEntero() - ' Else - ' ErrorCancelar = True - ' MensajeError = "Ocurrió un error al cargar los datos de devolución. Por favor vuelva a intentar." - ' 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 CveConceptoDevolucion = 18 Then - If Not ErrorCancelar 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 + If Not ErrorCancelar AndAlso CveConceptoDevolucion = 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 @@ -4556,12 +4548,45 @@ Namespace Modelos Next + 'VERIFICA LOS MOVIMIENTOS DE DEVOLUCION YA GENERADOS QUE TENGAN EXISTENCIA EN (ENTREGA POR ADELANTADO) + If Not ErrorCancelar Then + If ObjInventario.GetMovimientosDevoluciones(CveVenta, UsuarioActual.CveEmpresa) Then + DtDevoluciones = ObjInventario.DtResultados.FiltraParametros("CveTipoAlmacen = 10") + Else + ErrorCancelar = True + MensajeError = "Ocurrió un error al cargar los datos de devolución. Por favor vuelva a intentar." + End If + End If + + 'SI EXISTEN HAY EXISTENCIA EN (ENTREGA POR ADELANTADO) SE TIENE QUE REGRESAR AL ALMACEN GENERAL + If Not ErrorCancelar AndAlso ListaRemisionesCancelar IsNot Nothing AndAlso ListaRemisionesCancelar.Count > 0 Then + For Each CveRemision As Integer In ListaRemisionesCancelar + For Each RowDevolucion As DataRow In DtDevoluciones.FiltraParametros($"CveRemision={CveRemision}", DistinctColumns:={"CveRemision", "CveAlmacen", "CveAlmacenDestino"}).Rows + + Dim DtDevRemision As DataTable = DtDevoluciones.FiltraParametros($"CveRemision={CveRemision}") + + CveAlmacen = RowDevolucion("CveAlmacen").ToString().ToEntero() + CveAlmacenDevolucion = RowDevolucion("CveAlmacenDestino").ToString().ToEntero() + + 'DEBE REGRESAR LA EXISTENCIA DE (ENTREGA POR ADELANTADO) AL ALMACEN GENERAL + 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 + + DtDevRemision.Dispose() + Next + Next + End If + 'REALIZA LA DEVOLUCION AL ALMACEN VIRTUAL If Not GeneraMovimientosVirtuales(CveVenta, ObjInventario) Then ErrorCancelar = True MensajeError = "Ocurrió un error al cargar los datos de devolución. Por favor vuelva a intentar." End If + 'VERIFICAR MOVIMIENTOS DE APARTADOS If Not ErrorCancelar Then If Not GeneraMovimientosApartados(ObjInventario) Then ErrorCancelar = True @@ -4957,6 +4982,69 @@ Namespace Modelos Return Not ErrorCancelar End Function + Private Function CancelarMovimientosRemision(CveRemision As Integer, CveAlmacen As Integer, CveAlmacenDestino As Integer, DtMovDetalle As DataTable, ByRef ObjVentas As ClsVentas, ByRef ObjInventario As ClsInventarios) As Boolean + Dim ErrorCancelar As Boolean = False + + Dim CveMovimientoSalidaDevRem As Integer = 0 + Dim FolioMovimientoSalidaDevRem As Integer = 0 + + Dim CveMovimientoEntradaDevRem As Integer = 0 + Dim FolioMovimientoEntradaDevRem As Integer = 0 + + 'SALIDA DE (ENTREGA POR ADELANTADO) + CveMovimientoSalidaDevRem = ObjInventario.AddMovimiento(CveAlmacen, 8, 1, Now, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveRemision, -1, -1, Observaciones:="", Guia:="", CveContrato:=CveContrato, CveAlmacenDestino:=CveAlmacenDestino) + FolioMovimientoSalidaDevRem = ObjInventario.Folio + + 'ENTRADA A (ALMACEN GENERAL) + CveMovimientoEntradaDevRem = ObjInventario.AddMovimiento(CveAlmacenDestino, 9, 1, Now, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveRemision, -1, -1, Observaciones:="", Guia:="", CveContrato:=CveContrato, CveMovimientoRelacionado:=CveMovimientoSalidaDevRem, CveAlmacenDestino:=CveAlmacenDestino) + FolioMovimientoEntradaDevRem = ObjInventario.Folio + + If Not (CveMovimientoSalidaDevRem > 0 And CveMovimientoEntradaDevRem > 0) Then + ErrorCancelar = True + End If + + 'SALIDA DE (ENTREGA POR ADELANTADO) + If Not ErrorCancelar Then + For Each DrRem As DataRow In DtMovDetalle.FiltraParametros($"CveRemision = {CveRemision}").Rows + Dim CveVentaDetalleRem = DrRem("CveVentaDetalleRemision").ToString.ToEntero + Dim CantidadRem = DrRem("Cantidad").ToString.ToDecimal + + If Not CveVentaDetalleRem > 0 Then + ErrorCancelar = True + 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, DrRem("CveActivoFijo").ToString.ToEntero, -1, DrRem("SerieLote").ToString, CveVentaDetalle:=CveVentaDetalleRem, Lote:=DrRem("Lote").ToString, Batch:=DrRem("Batch").ToString) Then + ErrorCancelar = True + Exit For + End If + + If ErrorCancelar Then + Exit For + End If + Next + End If + + 'ENTRADA A (ALMACEN GENERAL) + If Not ErrorCancelar Then + If ObjInventario.GetMovimientosDetalle(CveMovimientoSalidaDevRem, UsuarioActual.CveEmpresa) Then + For Each Dr As DataRow In ObjInventario.DtResultados.Rows + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntradaDevRem, Dr("Cantidad").ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, Dr("CveAF").ToString.ToEntero, -1, Dr("SerieLote").ToString, CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString().ToEntero(), CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero, Lote:=Dr("Lote").ToString, Batch:=Dr("Batch").ToString) Then + ErrorCancelar = True + Exit For + End If + Next + End If + End If + + + If Not ObjVentas.UpdateVentasDevolucionAlmacen(2, CveRemision) Then + ErrorCancelar = True + End If + + Return Not ErrorCancelar + End Function + Private Function GeneraMovimientosApartados(ByRef ObjInventario As ClsInventarios) As Boolean Dim ErrorCancelar As Boolean = False If Not ErrorCancelar Then diff --git a/CRM/CatEtapasProceso.aspx b/CRM/CatEtapasProceso.aspx index 27ce1e6dd..8dc6acbfb 100644 --- a/CRM/CatEtapasProceso.aspx +++ b/CRM/CatEtapasProceso.aspx @@ -23,8 +23,8 @@ - - + + @@ -130,22 +130,24 @@