cancel
Showing results for 
Search instead for 
Did you mean: 

Procedimientos de autorización en cadena fallan

Former Member
0 Kudos

Estimados Consultores,

Acudo a ustedes por que tengo el siguiente escenario que me esta fallando en los procedimientos de autorización, cuando debe mandar dos de estos seguidos el primero se ejecuta con normalidad, pero el segundo falla y deja crear el documento así:

* Se tienen procedimientos de autorización para los pedidos de cliente (Orden de venta) (AUT1 si SN supera limite de crédito, AUT2 Si no tiene documentos completos, AUT3 si SN tiene saldo) adicionalmente se tiene un bloqueo SP_TN si los precios de los artículos están por de bajo de lo establecido, dispare otro procedimiento de autorización AUT4 por medio de un campo de usuario al ponerle valor "SI"

Cuando el documento necesita alguno de los procedimientos AUT1, AUT2 o AUT3 se ejecuta y lo manda a la persona encargada, luego que este autoriza y como el precio de los artículos de las lineas esta por debajo de lo permitido, lo bloquea por SP_TN, para esto se digita en el campo de usuario con el "SI" y debería disparar el otro procedimiento AUT4, pero no lo hace y deja crear el documento.

El caso es que las personas que autorizan son diferentes para poner todo en un solo procedimiento, también se probo uno por uno y se ejecutan sin problema, adicionalmente al ejecutar los Querys manda True o False según corresponda.

Agradezco sus opiniones y/o sugerencias al respecto,

Cordial saludo,

Iván Fernando Vanegas

Accepted Solutions (0)

Answers (1)

Answers (1)

gerardo_mendez
Active Contributor
0 Kudos

Saludos amigo.

No me quedó del todo claro tu escenario pero me parece todo un show jejeje. Por que no pruebas agregando varias etapas de autorización en lugar de varios modelos de autorización, esto pensando en el rendimiento de tu sistema ya que a la larga tanto bloqueo puede afectar tu performance.

Aterrizando en tu problema, ¿el detalle es en el último bloqueo? ¿cierto? A lo que entiendo, actualizas el valor de un campo de usuario directamente desde el Transaction Notification y tu procedimiento de autorización evalúa el valor de dicho campo y lanza el cuarto procedimiento, ¿es correcto?

Former Member
0 Kudos

Hola Gerardo, gracias por tu respuesta,

si tienes razón en cuanto a que es todo un show (Así son las peticiones de los clientes jejejej), ya probé varias etapas de autorización en un solo modelo pero no me funciona ya que se debe disparar la ultima si hay un campo de usuario diligenciado, el cual diligencian si el SP TN les bloquea, pero como el documento ya tiene una autorización no dispara el ultimo modelo.

Detenidamente me he dado cuenta que primero se disparan los procedimientos de autorización y después los SP_TN, lo que necesitaría para solucionar esto es que se me activara primero el SP_TN y luego si los procedimientos.

En este post

responde algo similar con respecto a que se pueden trabajar los SP_TN con Drafts, pero no lo he logrado hacer funcionar.


Si de casualidad sabes como hacer que se disparen primero los SP que los procedimientos te agradecería, de igual manera dejo aqui el codigo del SP por si sabes como trabajar con los Drafts y me puedas dar una mano o guiar de como modificarlo si esta es la solución


--BLOQUEO PARA PRECIO DE VENTA INFERIOR AL DE LA LISTA

IF @object_type IN ('17')

AND @transaction_type IN ('A','U')

Begin

declare @precio as int

set @precio= (SELECT COUNT(*)

FROM ORDR A0 JOIN RDR1 A1 ON A0.DocEntry=A1.DocEntry

JOIN OCRD A2 ON A0.CardCode=A2.CardCode

JOIN OPLN A3 ON A2.ListNum = A3.ListNum

join ITM1 A4 ON A3.ListNum=A4.PriceList AND A1.ItemCode=A4.ItemCode

JOIN OUSR A5 ON A0.UserSign = A5.USERID

WHERE A1.Price<A4.Price AND A0.DocEntry=@list_of_cols_val_tab_del and ISNULL(A0.U_Descuento,'')='' )

Begin

Set @error = 18

  Set @error_message = 'Precio inferior al de la lista'

  End

End

--FIN


Slds,


IFV

gerardo_mendez
Active Contributor
0 Kudos

Entiendo...

De hecho si me he encontrado con este tipo de escenario y lamento decirte que no hay manera de hacer que primero valide el TN y despues el proceso de autorización, esto es algo nativo del sistema, digamos que siempre el TN es la última validación que se realiza antes de crear el documento y como ya bien lo detectaste, tu documento despues de pasar por el proceso de autorización ahora está almacenado en la tabla ODRF y no en la ORDR

Mauricio Quintana es muy claro en el post al que haces referencia, ahora tu código del TN debe estar dirigido a la tabla ODRF agregando la validación del campo ObjType donde especificarás que te valide siempre y cuando el ObjType = 17.