Skip to Content
avatar image
Former Member

Transaction Notification

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

Add comment
10|10000 characters needed characters exceeded

  • Follow
  • Get RSS Feed

3 Answers

  • Best Answer
    avatar image
    Former Member
    Oct 07, 2008 at 06:06 PM

    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

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Oct 06, 2008 at 04:28 PM

    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

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Oct 20, 2010 at 07:48 PM

    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

    Add comment
    10|10000 characters needed characters exceeded

    • 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