on 08-26-2014 1:32 PM
Hola, buen día.
Tengo la siguiente consulta que funciona perfecto con documentos ya creados (ordenes de venta), el problema es que quiero incluirla en un proceso de autorización donde el documento aún no se crea en el sistema, leyendo encontré que debo seguir la misma lógica que las búsquedas formateadas para capturar el documento actual, pero no me está resultando, me pueden ayudar por favor?
Gracias
--declare de variables
declare @efectivo as varchar (10)
set @efectivo=( select t0.groupnum from ordr t0 where t0.Docnum = $[$8.0.1])
declare @condiciones as varchar (10)
set @condiciones = (SELECT t0.DocNum FROM ORDR T0 INNER JOIN OCRD T1 ON T0.CardCode = T1.CardCode WHERE
T0.[DocNum] =$[$8.0.1] and ( ( T0.[DocTotal] >= T0.[U_saldo] or T0.[U_saldo] is null )
or ( T1.[U_SEGURO] <>'1' and T1.[U_SEGURO] <> '2' )or t1.[U_revcredito] ='Si') )
--Primer filtro Efectivo o no
if @efectivo = '-1'
begin
--Si es efectivo, No arroja alarma
select 'No arroja Alarma '
end
else if @efectivo <> '-1'
begin --Si no es efectivo comienza
if @condiciones is not null --Si algunas de las condiciones de venta no se esta cumpliendo
begin
select 'TRUE'
end
if @condiciones is null --Si todas las condiciones de cumplen
begin
select 'No arroja alarma'
end
end
Ignacio, si la necesidad sigue siendo la misma, es decir, que la intención es que el query del modelo de autorización funcione como el query que publicaste al inicio de tu post, entonces intenta con este query:
select case when $[ORDR.GroupNum] <> -1
and ($[29.0.number] >= isnull($[ORDR.U_Saldo],0)
or T0.[U_SEGURO] not in ('1', '2')
or T0.[U_revcredito] ='Si')
then 'TRUE'
else 'False'
from OCRD T0
where T0.CardCode = $[ORDR.CardCode]
En mis pruebas sí funcionó.
Saludos,
JC.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Buen dia Ignacio, no se si te comprendi bien pero tu quieres aplicar este proceso con documentos que aun no esten autorizados es de decir en preliminares. si fuese asi yo lo probaria de la siguiente forma:
-declare de variables
declare @efectivo as varchar (10)
set @efectivo=( select t0.groupnum from odrf t0 where t0.Docnum = $[$8.0.1])
declare @condiciones as varchar (10)
set @condiciones = (SELECT t0.DocNum FROM ODRF T0 INNER JOIN OCRD T1 ON T0.CardCode = T1.CardCode WHERE
T0.[DocNum] =$[$8.0.1] and ( ( T0.[DocTotal] >= T0.[U_saldo] or T0.[U_saldo] is null )
or ( T1.[U_SEGURO] <>'1' and T1.[U_SEGURO] <> '2' )or t1.[U_revcredito] ='Si') )
--Primer filtro Efectivo o no
if @efectivo = '-1'
begin
--Si es efectivo, No arroja alarma
select 'No arroja Alarma '
end
else if @efectivo <> '-1'
begin --Si no es efectivo comienza
if @condiciones is not null --Si algunas de las condiciones de venta no se esta cumpliendo
begin
select 'TRUE'
end
if @condiciones is null --Si todas las condiciones de cumplen
begin
select 'No arroja alarma'
end
end
Saludos Cordiales
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Básicamente, necesito aplicar esta consulta a un proceso de autorización de ordenes de venta, cuando la persona este creando la orden al darle crear, debe funcionar la consulta que puse mas arriba, ya que si cumple con ciertos requisitos, el proceso de autorización no saltará, pero si cumple con alguno de los filtros, arrojará true y entonces el proceso comenzará y como te decía con documentos ya creados me funciona, pero con los preliminares no.
Probaré lo que me dices y te comento.
Gracias.
Hola,
En ese caso, como el documento no esta guardado, debes reemplazar DocTotal y U_Saldo por la consulta de la informacion de la pantalla. O sea $[$8.U_Saldo.NUMBER]
Y en este caso no puedes consultar la table de OINV porque no esta guardada. Por lo que tendras que modificar el query sin esta tabla.
espero te funcione.
Hola, he logrado que la busqueda formateada me funcione, he creado un campo para probar si me trae el valor TRUE y si me lo trae a perfectamente .Aprovecho de agradecerles por la ayuda con esta primera etapa.
El problema ahora es que apliqué esta query en un modelo de autorizaciones y todos los documentos pasan sin pedir autorización aunque el resultado sea TRUE, y me fije que arroja un error al crear
error interno 3006 es el que arroja, es extraño, ya que la misma query en un campo funciona sin problemas, me trae el valor.
Gracias de antemano.
Claro:
declare @efectivo as varchar (10) --- variable para guardar medio de pago
set @efectivo=( $[$-47.7.0])
declare @seguro as varchar (10) --Variable para guardar tipo de seguro--
set @seguro = ( select t0.u_seguro from ocrd t0 where t0.cardcode = $[$-4.0.0] )
declare @condiciones as varchar (10) --Variable donde se aplican los filtros--
set @condiciones = ( SELECT 'Autorizar' WHERE
($[$-29.0.NUMBER] >= $[$U_saldo.1.Number]) or ( $[$U_saldo.1.Number] is null)
or ( @seguro <>'1' and @seguro <> '2' ) )
if @efectivo = '-1'
begin
--Si es efectivo, No arroja alarma
select 'No arroja Alarma , es efectivo'
end
else if @efectivo <> '-1'
begin --Si no es efectivo comienza
if @condiciones is not null --Si algunas de las condiciones de venta no se esta cumpliendo
begin
select 'TRUE'
end
if @condiciones is null --Si todas las condiciones de cumplen
begin
select 'No arroja alarma la query es NULL'
end
end
Hola, estuve probando con queries mas sencillas y tampoco me funciona los procesos de autorizaciones, por ejemplo traté con
Select 'True' where $[$-47.7.0] = -1
Solo que arroje el proceso de autorización cuando la condicion de pago es efectivo.
Y no funciona, a pesar de que la condicion es efectivo, el documento pasa sin problemas.
Ayuda porfavor con la query principal, o si existe algun manual de autorizaciones con consultas, no he podido encontrar ninguno.
GRACIAS!
User | Count |
---|---|
97 | |
11 | |
11 | |
6 | |
6 | |
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.