diff --git a/App_Code/ClsOC.vb b/App_Code/ClsOC.vb index dbda19f3b..5a2e41f76 100644 --- a/App_Code/ClsOC.vb +++ b/App_Code/ClsOC.vb @@ -1431,7 +1431,7 @@ Public Class ClsOC Return Retorno End Function - Public Function UpdateEstatus(Estatus As String, Tipo As String, CveEstatusSiguiente As Integer, TipoTermino As Integer, EstatusActivo As Boolean, EsCancelable As Boolean, CveEstatus As Integer) As Boolean + Public Function UpdateEstatus(Estatus As String, Tipo As String, CveEstatusSiguiente As Integer, TipoTermino As Integer, EstatusActivo As Boolean, EsCancelable As Boolean, CveEstatus As Integer, EsatatusSiguiente As String) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_OC_EstatusUpdate") @@ -1452,6 +1452,9 @@ Public Class ClsOC Catch Ex1 As SqlException If Ex1.Message.Contains("Número: 2627;") Then Alert("Ya existe un Estatus con el mismo nombre: " & Estatus & ".", TipoMensaje.MsgAdvertencia) + + ElseIf Ex1.Message.Contains("Número: 530;") Then + Alert($"La asiganación del campo estatus siguiente {EsatatusSiguiente} esta creando problema de recursividad.", TipoMensaje.MsgAdvertencia) Else Me.OnError("Ocurrió un error al guardar los cambios en el Estatus", Ex1, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) End If diff --git a/OC/CatEstatus.aspx.vb b/OC/CatEstatus.aspx.vb index 0ee5d010d..84303384c 100644 --- a/OC/CatEstatus.aspx.vb +++ b/OC/CatEstatus.aspx.vb @@ -165,16 +165,27 @@ Partial Class OC_CatEstatus Private Sub BtnGuardar_Click(sender As Object, e As EventArgs) Handles BtnGuardar.Click Dim TieneError = False - Dim ObjEstatus As New ClsOC + Dim ObjEstatus As New ClsOC + + 'No quitar transacción la transacción es por que el update puede generar recursividad en la vista Vw_OC_Estatus error 530 + ObjEstatus.IniciaTransacSQL() + If HdnModalidad.Value = "I" Then If Not ObjEstatus.AddEstatus(TxtEstatus.Text.Trim, DdlTipo.SelectedValue.ToString, DdlEstatusSiguiente.SelectedValue.ToEntero, DdlTipoTermino.SelectedValue.ToEntero, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then TieneError = True End If Else - If Not ObjEstatus.UpdateEstatus(TxtEstatus.Text.Trim, DdlTipo.SelectedValue.ToString, DdlEstatusSiguiente.SelectedValue.ToEntero, DdlTipoTermino.SelectedValue.ToEntero, ChkEstatus.Checked, ChkCancelable.Checked, CveEstatus) Then + If Not ObjEstatus.UpdateEstatus(TxtEstatus.Text.Trim, DdlTipo.SelectedValue.ToString, DdlEstatusSiguiente.SelectedValue.ToEntero, DdlTipoTermino.SelectedValue.ToEntero, ChkEstatus.Checked, ChkCancelable.Checked, CveEstatus, DdlEstatusSiguiente.SelectedItem.Text) Then TieneError = True End If End If + + If TieneError Then + ObjEstatus.RollBack() + Else + ObjEstatus.Commit() + End If + ObjEstatus.Dispose() If Not TieneError Then @@ -189,7 +200,7 @@ Partial Class OC_CatEstatus RegistraScript(String.Format("$('#{0}').modal('hide');", "DivAgregarEstatus")) CargaDatos() Else - Alert("Ocurrió un error al guardar/editar estatus de órden de compra", TipoMensaje.MsgError) + 'Alert("Ocurrió un error al guardar/editar estatus de órden de compra", TipoMensaje.MsgError) End If End Sub