cancel
Showing results for 
Search instead for 
Did you mean: 

Sentencia Distinto de

Former Member
0 Kudos

Hola a todos,

Estoy realizando una sentencia para el tema de que se lance una autorización si es que el cliente pasa su limite de credito la sentencia es la siguiente

SELECT 'TRUE' WHERE ($[$29.0.Number]+(SELECT T0.[Balance]+T0.[OrdersBal]

FROM OCRD T0 WHERE T0.[CardCode] = $[$4.0]) > (SELECT T0.[CreditLine]

FROM OCRD T0 WHERE T0.[CardCode] = $[$4.0])) END

Sin embargo necesito poner la condición de que no lo haga cuando el cliente tiene la condicion de pago "Contado" es decir cuando el campo Group Num es igual a -1 y aumente lo siguiente : WHERE T0.[GroupNum] <>'-1' quedando la sentencia completa de la siguiente manera

SELECT 'TRUE' WHERE ($[$29.0.Number]+(SELECT T0.[Balance]+T0.[OrdersBal]

FROM OCRD T0 WHERE T0.[CardCode] = $[$4.0]) > (SELECT T0.[CreditLine]

FROM OCRD T0 WHERE T0.[CardCode] = $[$4.0])) WHERE T0.[GroupNum] <>'-1'

end

Pero me genera el siguiente error al momento de ejecutarla ya en la pantalla de la venta

Could not commit transaction: Error -1 detected during transaction

cual puede ser el error?

gracias anticipadas

Accepted Solutions (1)

Accepted Solutions (1)

former_member188440
Active Contributor
0 Kudos

El último where no va, debería ser un AND no?

Para que le digas que sea el código de socio de negocios igual al de tu documento Y que tenga pago de contado (-1)

Former Member
0 Kudos

Hola Mauricio

Aun cuando cambio el ultimo Where por un And sigue este error

Could not commit transaction: Error -1 detected during transaction

La sentencia quedo asi:

SELECT 'TRUE' WHERE ($[$29.0.Number]+(SELECT T0.[Balance]+T0.[OrdersBal]

FROM OCRD T0 WHERE T0.[CardCode] = $[$4.0]) > (SELECT T0.[CreditLine]

FROM OCRD T0 WHERE T0.[CardCode] = $[$4.0])) AND T0.[GroupNum] <>'-1' END

juancarlos_huerta
Contributor
0 Kudos

Hola, Laura.

Intenta con este query:


SELECT 'TRUE' WHERE

  ($[$29.0.Number]

  +(SELECT T0.[Balance]+T0.[OrdersBal] FROM OCRD T0 WHERE T0.[CardCode] = $[$4.0] AND T0.[GroupNum] <>'-1')

  > (SELECT T0.[CreditLine] FROM OCRD T0 WHERE T0.[CardCode] = $[$4.0] AND T0.[GroupNum] <>'-1')

  )

La condición de pago la puse dentro de los SELECT de cada subquery y quité en END que pusiste al final. Espero te sea de utilidad.

Saludos,

JC.

Former Member
0 Kudos

Hola Juan te comento que no lanzo la autorización y me dejo ingresar la transacción a pesar de que no debía hacerlo

la sentencia que tu enviaste es asi como la ingrese:

SELECT 'TRUE' WHERE ($[$29.0.Number] +(SELECT T0.[Balance]+T0.[OrdersBal] FROM OCRD T0 WHERE T0.[CardCode] = $[$4.0] AND T0.[GroupNum] <>'-1') > (SELECT T0.[CreditLine]

FROM OCRD T0 WHERE T0.[CardCode] = $[$4.0] AND T0.[GroupNum] <>'-1'))

que mas puede ser?

gracias anticipadas

juancarlos_huerta
Contributor
0 Kudos

Acá hice pruebas y me aparece la solicitud de autorización.

Intenta así:

SELECT 'TRUE' WHERE

  ((SELECT T0.[Balance]+T0.[OrdersBal]+$[$29.0.Number] FROM OCRD T0 WHERE T0.[CardCode] = $[$4.0] AND T0.[GroupNum] <>'-1')

  > (SELECT T0.[CreditLine] FROM OCRD T0 WHERE T0.[CardCode] = $[$4.0] AND T0.[GroupNum] <>'-1')

  )

Si sigue sin pedirte la solicitud, ejecuta el siguiente query para determinar los valores que está viendo el query de la Autorización:

SELECT T0.[Balance]

  , T0.[OrdersBal]

  , T0.[CreditLine]

  , T0.[GroupNum]

FROM OCRD T0

WHERE T0.[CardCode] = 'C20000'

Nota: cambia el C20000 por el código de tu SN.

Saludos,

JC.

Former Member
0 Kudos

Hola Juan

Al parecer otra sentencia que estaba anidada no me permitia la quite y con tu indicación ha funcionado

muchas gracias!

Answers (1)

Answers (1)

Former Member
0 Kudos

Puedes Probar este,

es la que ocupo y me va bastante bien

DECLARE @Saldo int

DECLARE @Limite int

SET @Limite=(SELECT OCRD.CreditLine FROM OCRD WHERE OCRD.CARDCODE=$[$4.1.0])

SET @Saldo=(SELECT OCRD.Balance FROM OCRD WHERE OCRD.CardCode=$[$4.1.0])

      IF @Saldo>@Limite

           SELECT 'TRUE'