cancel
Showing results for 
Search instead for 
Did you mean: 

Transaction Notification

Former Member
0 Kudos

Estimados:

Tengo unas dudas con respecto al TRANSACTION NOTIFICATION quiero validar los modulos de Maestro de Articulos, Maestro de Socios de Negocio y la Tabla del Tipo de cambio ya que tengo problemas con las metidas de dedo de los usuarios,

para los documentos utilizo la sgte sentencia un ejemplo de una validacion:

-

-


--VALIDA QUE NO SE CREE LA ORDEN DE VENTA SI EL CAMPO IMPUESTOS ESTA VACIO

SET @OVIGV = (select ORDR.vatsum from ORDR WHERE ORDR.DocEntry = @list_of_cols_val_tab_del)

SET @TipVta = (select ORDR.u_qa_vta from ORDR WHERE ORDR.DocEntry = @list_of_cols_val_tab_del)

IF @OVIGV is null AND @TipVta <> '3'

BEGIN

SET @error = 1 -- IMPORTANTE: Indica que la validación no ha sido superada

SET @error_message = 'NO SE PUEDE CREAR LA ORDEN DE VENTA VERIFICAR EL CAMPO IMPUESTOS'

END

-

-


Si quisiera validar los Maestro de Articulos o SN o la tabla de tipo de cambio como lo hago y si me pueden decir que significa, como utilizarlo y en donde se utilizan estas variables

@num_of_cols_in_key int,

@list_of_key_cols_tab_del nvarchar(255),

@list_of_cols_val_tab_del nvarchar(255)

Edited by: Rui Pereira on Nov 7, 2008 10:07 AM

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hola Jesus

Te escribo por lo siguiente, ojo y no es para levantar polemicas leo que jorge te responde con una idea que dio Ian, pero la verdad que no me funciono yo mejore el proceso del error que tenia y que jorge me ayudo

IF @object_type='17' and @transaction_type='A'

begin

declare @ItemCode as varchar(20)

declare @Mensaje as varchar(200)

declare@OnHand as varchar(10)

declare @WHSCODE as varchar(20)

set @Mensaje=''

declare C cursor for

SELECT T0.itemcode, T0.WHSCODE from rdr1 T0

WHERE T0.docentry=@list_of_cols_val_tab_del/* esta SQL te entregara mas de 1 registro*/

open C

fetch next from C

into @ItemCode,@WHSCODE

while @@fetch_status = 0

begin

SEt @OnHand=(SELECT OITW.onhand

FROM OITW INNER JOIN RDR1 ON OITW.ItemCode = RDR1.ItemCode

WHERE (OITW.WHSCODE = @WHSCODE) and (RDR1.ItemCode = @ItemCode)

GROUP BY RDR1.ItemCode,OITW.OnHand )

IF @OnHand = '0.000000'

begin

set @Mensaje=@Mensaje@ItemCode'-'

end

-- Avanzamos otro registro

fetch next from C

into @ItemCode,@WHSCODE

end

--cerramos el cursor

close C

deallocate C

if @Mensaje =''

begin

SET @ERROR = 0

SET @error_message = ''

end

else

begin

SET @ERROR = 1

SET @error_message = 'Artículos sin stocks disponibles: ' + @Mensaje

end

end

Answers (2)

Answers (2)

Former Member
0 Kudos

HOLA JESUS UNA DUDA,EN QUE PARTE DEL SISTEMA ESTA LA OPCION DE TRANSACTION NOTIFICATION?

LO QUE PASA QUE YO NECESITO CONFIGURAR UN AVISO TAMBIEN CUANDO UN ARTICULO SE HAYA RECODIFICADO, QUE CADA VEZ QUE SE TRATE DE FACTURAR EL CODIGO ANTERIOR MANDE UN AVISO DE QUE HAY UN CODIGO NUEVO , ESTO PORQUE AQUI EN LA EMPRESA SE DA DE ALTA EL MISMO CODIGO DE ARTICULO DE LA FACTURA DEL PROVEEDOR, POR LOQUE SI ELPROVEEDOR NOS ENVIA UNA FACTURA CON ITEM RECODIFICADO TAMBIEN SE DA DA ALTA EN SAP, PERO LOS FACTURISTAS POR DEFAULT SIEMPRE SE VAN AL CODIGO QUE YA SE SABEN Y NECESITO QUE EL SISTEMA AVISE CADA VES QUE SE TRATE DE FACTURAR EL CODIGO ANTERIOR

GRACIAS DE ANTEMANO

former_member188440
Active Contributor
0 Kudos

Hola, para ver el transaction notification debes irte al MSSQL Management Studio y abrir la base de datos de tu compañia, haces clic en programabilidad, y luego en Procedimientos almacenados (stored procedures), busca ahi uno que dice SBO_TransactionNotification, dale clic derecho y modificar

Entonces busca la linea de codigo que esta comentada y en color verde que dice ADD YOUR CODE HERE, debajo de esto puedes agreagar el codigo que pretendes manejar

Former Member
0 Kudos

hola Jesus, para cada formulario debes agregar:

IF @object_type='17' and @transaction_type='A'

begin

--aca va la validacion

end

donde el @Object_Type es el ID del objeto de negocios que quieres controlar

4 Items

2 Business Partner

Tipo de cambio no tiene objeto de negocio.

y el @transaction_type es el tipo de transaccion que quieres controlar(detallado en el SPTN)

@list_of_cols_val_tab_del (te entrega el valor de la llave del objeto de negocio en el que esta el SP)

@num_of_cols_in_key (numero de columnas que componen la llave)

@list_of_key_cols_tab_del (nombre del campo que compone la llave del Objeto)

ejemplo de Ian que soluciona el siguiente error:

"Hola a todos, tengo un problema con las ordenes de ventas, al hacer una orden de venta esta no verifica si hay existencia o no en el almacen, hice un SP para que me validara si el articulo tenia existencia en el stock . Funciona con una sola linea, si hay dos lineas me da error"

IF @object_type='17' and @transaction_type='A'
begin
  declare @Mensaje as varchar(200)
  set @Mensaje=''
 
if exists(
  select 'A'
  from RDR1 R1
  inner join OITW IW on IW.ItemCode = R1.ItemCode and IW.WhsCode = R1.WhsCode
  where R1.DocEntry = @list_of_cols_val_tab_del and IW.OnHand  < 0
)
begin
	select @Mensaje=''
	select @Mensaje = coalesce(@Mensaje + ' ', '; ') + cast(R1.LineNum + 1 as varchar) + '. ' + R1.ItemCode + ' ' + cast(cast(IW.OnHand as numeric(10,2)) as varchar)
	from RDR1 R1
		inner join OITW IW on IW.ItemCode = R1.ItemCode and IW.WhsCode = R1.WhsCode
	where R1.DocEntry = @list_of_cols_val_tab_del and IW.OnHand < 0
                SET @ERROR = 1
	select @error_message = 'Artículos sin stocks disponibles: ' + @Mensaje
	return
 
end
 
end