cancel
Showing results for 
Search instead for 
Did you mean: 

Transaction Notification Pedidos

Former Member
0 Kudos

Buenas tardes, resulta que tengo el un SP para evitar que los usuarios modifiquen los pedidos de clientes, sin embargo ahora necesito arreglarlo para que solo permita modificar la direccion de destino Address2, Sin embargo revisando no encuentro que estos contengan historico para pedidos como si lo tienen las facturas que es la ADOC.

Agradeceria si me pudieran indicar si conocen alguna forma de hacer la excepcion para este campo, de tal manera que si van a modificar otro campo si se active el SP.

El sp que tengo actualmente es

if @object_type in ('17') and @transaction_type in ('L', 'C','U') 

begin

  if (select count(*)

  FROM ORDR T0

  WHERE  UserSign2 not in ('43')  AND @list_of_cols_val_tab_del = T0.DocEntry)>0

  begin

  set @error = 10

  set @error_message = '** SP VENTASxx: No se permite modificar los pedidos-'

  end

end

Agradezco la colaboración y quedo atento.

Accepted Solutions (0)

Answers (1)

Answers (1)

former_member188440
Active Contributor
0 Kudos

Si existe el histórico de pedidos en esa tabla, filtralo por objecttype=17

Former Member
0 Kudos

Hola mauricio ya revise lo que me comentaste y efectivamente filtrando por el 17 si me permitio realizarlo.muchas gracias. relaciono el codigo para quien lo pueda llegar a necesitar.

if @object_type in ('17') and @transaction_type in ('L', 'C','U') 

BEGIN

DECLARE @Dir1 VARCHAR(100)

DECLARE @Dir2 VARCHAR (100)

SET @Dir1= (SELECT ADDRESS2 FROM ORDR WHERE DocEntry = @list_of_cols_val_tab_del)

SET @Dir2 = ((SELECT (Address2) FROM ADOC T0 WHERE ObjType='17' AND DocEntry = @list_of_cols_val_tab_del AND

LogInstanc IN (SELECT MAX(LogInstanc) FROM ADOC WHERE ObjType= '17' AND DocNum='1001826')))

IF @Dir1 = @Dir2

BEGIN

      if (select count(*)

            FROM ORDR T0

            WHERE  UserSign2 not in ('43')

          AND @list_of_cols_val_tab_del = T0.DocEntry)>0

      begin

                  set @error = 10

                  set @error_message = '** SP XX: NO PUEDE MODIFICAR PEDIDOS'

      END

END

END

Former Member
0 Kudos

Mauricio me nace una duda a la hora de implementarlo ya que me funciona bien, pero se presenta un filtro de seguridad si los usuarios actualizan cualquier campo y por ultimo la direccion el sistema los dejaria pasar, sabes de alguna manera de especificarle al sistema que si detecta un cambio adicional a la direccion se dispare.

agradezco tu colaboracion

former_member188440
Active Contributor
0 Kudos

valida primero al usuario, si el usuario está permitido hacer cambios que entre entonces al IF que valida la dirección, de lo contrario, mándalo luego luego al mensaje de error

Former Member
0 Kudos

Hola Mauricio, lo que ocurre es que necesito que los usuarios que no están incluidos solo puedan actualizar la ADDRESS2 y ningún otro campo. En el caso de los usuarios que si están incluidos si pueden modificar cualquier campo. hasta el momento llevo el código de la siguiente manera pero no logro hacer que los usuarios que no están incluidos solo modifiquen la dirección, ya que si modifican cualquier campo y por ultimo la dirección los deja pasar.

if @object_type in ('17') and @transaction_type in ('L', 'C','U')  ---

BEGIN

DECLARE @Direccion VARCHAR(100)

DECLARE @Direccionactual VARCHAR (100)SET @Direccion= (SELECT ADDRESS2 FROM ORDR WHERE DocEntry = @list_of_cols_val_tab_del)

SET @Direccionactual = (SELECT (Address2) FROM ADOC T0 WHERE ObjType=@object_type AND DocEntry = @list_of_cols_val_tab_del AND

LogInstanc IN (SELECT MAX(T0.LogInstanc) FROM ADOC T0  WHERE T0.DocEntry= @list_of_cols_val_tab_del AND T0.ObjType=@object_type ))

     

      if (select count(*)

            FROM ORDR T0

            WHERE  UserSign2 not in ('43')

          AND @Direccionactual = @Direccion AND @list_of_cols_val_tab_del = T0.DocEntry)>0

      begin

                  set @error = 10

                  set @error_message = '** SPXX: NO PUEDE ACTUALIZAR PEDIDOS-'

      END

END

former_member188440
Active Contributor
0 Kudos

Tendrías que comparar los campos que mas probablemente cambien o que puedan impactar negativamente tu proceso de venta si los cambian, entonces, la sugerencia es que compares los campos , tal cual lo haces con la dirección para validar que se mantengan iguales, entonces necesitarías 2 IF

Uno para validar al usuario y que los campos comparados sean iguales, excepto la dirección (para que efectivamente la puedan cambiar)