on 11-23-2015 7:55 PM
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.
Si existe el histórico de pedidos en esa tabla, filtralo por objecttype=17
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
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
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
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)
User | Count |
---|---|
89 | |
7 | |
6 | |
3 | |
3 | |
3 | |
3 | |
3 | |
3 | |
2 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.