Autorizaciones lìmite de crèdito query

Hola,

Estoy realizando autorizaciones sobre el pedido de ventas en base a que supere el lìmite de crèdito ya que el mi cliente quiere que se tengan en cuenta pedidos pendientes de autorizar tuve que hacer un campo SaldoTotal1 que los sume al saldo.

Tengo varios rangos para las autorizaciones, la primera autorizaciòn funciona, las demàs no y no sé por qué

SELECT Distinct 'TRUE' FROM ORDR T0 INNER JOIN OCRD T1 ON T0."CardCode" = T1."CardCode" 
WHERE (T1."U_SaldoTotal1" + $[$29.93.0] ) BETWEEN (T1."CreditLine") AND (T1."CreditLine" + '100000')


SELECT Distinct 'TRUE' FROM ORDR T0 INNER JOIN OCRD T1 ON T0."CardCode" = T1."CardCode" 
WHERE (T1."U_SaldoTotal1" + $[$29.93.0] ) BETWEEN (T1."CreditLine" + '100001') AND (T1."CreditLine" + '300000')


SELECT Distinct 'TRUE' FROM ORDR T0 INNER JOIN OCRD T1 ON T0."CardCode" = T1."CardCode" 
WHERE (T1."U_SaldoTotal1" + $[$29.93.0] ) BETWEEN (T1."CreditLine" + '300001') AND (T1."CreditLine" + '500000')


SELECT Distinct 'TRUE' FROM ORDR T0 INNER JOIN OCRD T1 ON T0."CardCode" = T1."CardCode"
 WHERE (T1."U_SaldoTotal1" + $[$29.93.0] ) >= (T1."CreditLine" + '500001')

Alguien tiene idea de que puede estar fallando en las querys?

Me genera mensaje de error interno y no aparece la autorización.

Gracias!!

Hola @PP24 que te parece algo como esto, que considera también las facturas que están pendientes:

Select
CASE WHEN ((DAYS_BETWEEN(min(T0."DocDueDate"), CURRENT_DATE)) >= 20)  
AND (SELECT SUM(T10."DocTotal"-T10."PaidToDate") 
FROM OINV T10 WHERE T10."CardCode"=$[ORDR.CardCode] AND T10."DocDueDate"<= CURRENT_DATE AND T10."DocStatus" ='O' )<='1000000' 
THEN 'TRUE' ELSE 'FALSE' END
FROM OINV T0 
WHERE T0."CardCode" =$[ORDR.CardCode] and  T0."DocStatus" ='O'
1 me gusta

Hola,

Ya que mi campo U_SaldoTotal1 está compuesto de :

SELECT ifnull(T0."BalanceFC",0)+ ifnull(T0."DNoteBalFC",0)+ ifnull(T0."OrderBalFC",0)+ ifnull(SUM(T1."DocTotalFC"), 0)
FROM OCRD T0  
left JOIN ODRF T1 ON T0."CardCode" = T1."CardCode" and T1."DocStatus"='O' AND (T1."ObjType"='17' OR T1."ObjType"='23' )


where T0."CardCode"= 'CD1140'
group by T0."BalanceFC", T0."DNoteBalFC", T0."OrderBalFC";

Por eso lo unico que necesito con la autorización es comparar el credit line contra el campo SaldoTotal1.

Lo que me llama la atención es que la primera no falle y las demás si, cuando son muy similares…

Ya lo resolví y quedó así:

SELECT Distinct 'TRUE' FROM ORDR T0 INNER JOIN OCRD T1 ON T0."CardCode" = T1."CardCode" 
WHERE (T1."U_SaldoTotal1" + $[$29.93.Number] ) BETWEEN (T1."CreditLine") AND (T1."CreditLine" + '100000')


SELECT Distinct 'TRUE' FROM ORDR T0 INNER JOIN OCRD T1 ON T0."CardCode" = T1."CardCode" 
WHERE (T1."U_SaldoTotal1" + $[$29.93.Number] ) BETWEEN (T1."CreditLine" + '100001') AND (T1."CreditLine" + '300000')


SELECT Distinct 'TRUE' FROM ORDR T0 INNER JOIN OCRD T1 ON T0."CardCode" = T1."CardCode" 
WHERE (T1."U_SaldoTotal1" + $[$29.93.Number] ) BETWEEN (T1."CreditLine" + '300001') AND (T1."CreditLine" + '500000')


SELECT Distinct 'TRUE' FROM ORDR T0 INNER JOIN OCRD T1 ON T0."CardCode" = T1."CardCode"
 WHERE (T1."U_SaldoTotal1" + $[$29.93.Number] ) >= (T1."CreditLine" + '500001')

Por si le sirve a alguien.

Saludos,

2 Me gusta

Este tema se cerró automáticamente 7 días después del último post. No se permiten nuevas respuestas.