on 05-18-2013 5:39 PM
Hola, necesito ayuda con el SBO_SP_TransactionNotification lo que necesito es que los usuarios ya no puedan modificar el empleado de ventas después de que hayan creado la factura, para esto cree esta consulta que cumple con lo que necesito pero a la vez me bloquea la actualización de otros campos, en resumen me bloquea la modificación de todos los campos y no solo del SlpCode. Espero me puedan ayudar!!!
Hola David, Intenta este:
IF @object_type = '13' AND @transaction_type = 'U'
Begin
Declare @Log Varchar(20)
Declare @Vendedor Varchar(20)
SET @Log = (SELECT T0.SlpCode FROM ADOC T0 WHERE T0.ObjType = @object_type AND T0.DocEntry = @list_of_cols_val_tab_del AND
T0.LogInstanc = (SELECT TOP 1 Y.LogInstanc FROM ADOC Y WHERE Y.DocEntry = @list_of_cols_val_tab_del AND Y.ObjType = @object_type
ORDER BY Y.LogInstanc DESC))
SET @Vendedor = (SELECT T0.Slpcode FROM OINV T0 WHERE T0.DocEntry = @list_of_cols_val_tab_del)
IF @Vendedor != @Log
BEGIN
Set @error = -00231
Set @error_message = 'No tiene permiso de actualizar'
END
END
Temas de Referencia:
Saludos.
Alessandro.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hola Alessandro pues no me queda mas que darte las gracias es justamente lo que necesitaba la verdad no sabia el contenido de la tabla ADOC y no se me ocurría como comparar los datos antiguos y los actualizados. Gracias
Aprovechando tal vez alguien tenga por ahí una tipo guía del SBO_SP_PostTransactionNotification que me puedan facilitar.
Saludos.
Hola me puedes ayudar en algo mas por favor, siempre con respecto al SBO_SP_TransactionNotification.en las facturas de clientes, tengo dos Campos de Usuario uno es "Medio de Pago" y el otro es "Banco". En "Medio de Pago existen las opciones (efectivo, Tarjeta Crédito, Cheque, etc.) en "Banco" esta libre puedes digitar el nombre al cual pertenece el cheque.
Lo que necesito es: Cuando "Medio de Pago" sea = a Cheque, pida que llenen el campo "Banco" me refiero a que digiten el nombre del banco y si no lo llenan que no deje crear la factura.
Por favor ayúdame, la verdad no se me viene a la mente como hacerlo, tal vez puedas guiarme.
Hola David, Intenta este:
IF (@object_type='13' AND @transaction_type = 'A') --Factura de Cliente
Begin
Declare @MetodoPago as nvarchar (10)
Declare @banco as nvarchar (10)
Set @MetodoPago = (SELECT T0.U_MetododePago FROM OINV T0 WHERE T0.DocEntry = @list_of_cols_val_tab_del)
Set @banco = (select T0.U_Banco FROM OINV T0 WHERE T0.DocEntry = @list_of_cols_val_tab_del)
IF (@MetodoPago = 'cheque' and @banco is null)
Begin
Select @Error = 1
Select @error_message = 'Ingresa el Banco '
End
End
Saludos.
Alessandro.
Buenos días
Soy nueva con los Transactions, espero que me puedan ayudar.
Tengo un caso similar a este. Necesito bloquear la actualización de los pedidos de cliente a excepción de un campo en especial, ya que este se puede editar las veces que sea necesario.
Esto es lo que tengo:
IF @object_type='17' and (@transaction_type='U')
begin
IF (SELECT COUNT (*)
FROM ORDR T0 INNER JOIN OUSR T1 ON T0.UserSign = T1.USERID
WHERE (U_ARMAZON IS NULL )
AND T0.DocEntry = @list_of_cols_val_tab_del ) >0
BEGIN
if (select usersign2 from ORDR where DocEntry=@list_of_cols_val_tab_del) in (1)
begin
set @error=12
set @error_message='No se Puede Realizar el Cambio'
END
END
END
Mi idea es que el usuario pueda crear su pedido de cliente y dejar en blanco el campo U_ARMAZON, pero después puede tener la opción de actualizarlo, pero solo debe poder actualizar este campo.
Pero con lo que tengo no me funciona.
Muchas gracias por el apoyo que me puedan brindar
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
David,
Haga SBO_SP_TransactionNotification y bloquear cualquier cambio en "Empl.dpto.Ventas" cuando diferentes fuentes de documento de marketing.
o
Compare el SlpCode documento del documento de marketing con el Business Partner
Ejemplo:
IF @object_type = '17' and (@transaction_type='U')
BEGIN
Declare @vendedor Int
Set @vendedor = (Select T0.SlpCode From ORDR T0 Where T0.SlpCode <> -1 and T0.DocEntry = @list_of_cols_val_tab_del)
If @vendedor > -1
Begin
Set @error = 1000
Set @error_message = 'No es permitido cambiar vendedor'
End
END
Saludos,
Marcelo Silva Santos
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hola como están? tengo un problema , resulta que necesito bloquear las facturas si estas no tienen su pedido previo, alguien tiene una pista de como lograrlo? he tenido algunas pero no me resulta, o bloqueo completa la factura o se queda abierta.
if @object_type = 13 and @transaction_type in ('A')
begin
declare @val as int
select @val = T0.docentry from INV1 T0 inner join OINV T1 on T1.docentry = T0.docentry where T1.usersign !=1 and T1.userSign2 != 1
and T1.docentry = @list_of_cols_val_tab_del
end
if @val is not null
begin @error etc etc.
para ver si alguien me pudiera orientar, saludos
Si entiendo bien , lo que tu deseas es que cada vez que se actualice una factura no te permita actualizar el vendedor. De la manera como lo estas haciendo no es posible ya que todo dato que rescates por el transaction son con los datos actualizados, y pierdes el dato que estaba originalmente y no tienes como hacer la comparación.
La manera que se me ocurre de hacer esto puede ser de 2 maneras:
1. Como en el transaction sobre la tabla oinv solo puedo recatar el valor nuevo, solo me faltaría rescatar el valor antiguo que se puede hacer de la tabla del log de modificaciones, y luego puedo hacer la comparación.
2. Otra manera que es la que mas me gusta, es crear una tabla que tenga 2 campos Docentry y SlpCode, donde se guardara Docentry de factura y código de vendedor, donde la idea es que cada vez que se cree una factura grabar en esta tabla el docentry de la factura y el código de vendedor de la factura, esta tarea se puede realizar mediante SBO_SP_PostTransactionNotice. En tonces cada vez que se quiera actualizar una factura tendremos el valor nuevo y el valor antiguo.
A i me gusta mucho mas la opción de 2 asi no dependo del log de modificaciones, ya que en mi experiencia no siempre he tenido resultados satisfactorios con el log de modificaciones
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hola gracias por tu respuesta, con tu primera opción me di cuenta que necesitaba el valor antiguo para compararlo con el actualizado y pues con la consulta que publico Alessandro me quedo mas que claro, la segunda opción que me diste me llama la atención ya que nunca eh usado el SBO_SP_PostTransactionNotice y no entiendo si te refieres a usar una tabla #temp o crear una como tal que al final seria lo mismo que compararla con la ADOC, pero seria bueno que dieras una idea para hacer pruebas en mi base test.
User | Count |
---|---|
107 | |
12 | |
11 | |
6 | |
5 | |
4 | |
4 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.