Avalados por :

Como corrigir erros de valores nulos em um Trigger do SQL Server para bloquear a criação de pedidos

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 3 Vistas
0
Cargando...

Boa tarde, este TN tem como objetivo bloquear a criação de um pedido para um cliente se o saldo a seu favor for menor que o valor do pedido a ser criado. Também é considerado o saldo que o cliente tem com pedidos criados, subtraindo os pagamentos ou adiantamentos, o novo pedido deve ser menor que esse valor. No entanto, não está funcionando corretamente, está trazendo valores nulos, @MontoAbonado, @MontoPedido... e não sei o que estou fazendo de errado. Agradeço seus comentários. Aqui está o TN.

If @object_type='17' and @transaction_type in ('A','U')

BEGIN

DECLARE @MontoAbonado numeric(19, 6),

@MontoPedido numeric(19, 6)

SET @MontoAbonado =(SELECT T0.Balance + t0.OrdersBal

FROM OCRD T0 INNER JOIN OCTG T1 ON T0.GroupNum = T1.GroupNum and t1.PymntGroup = 'Contado'

INNER JOIN ORDR T2 ON T0.CardCode = T2.CardCode

WHERE T2.DocEntry = @list_of_cols_val_tab_del)

SET @MontoPedido=(SELECT T2.DocTotal

FROM ORDR T2

WHERE T2.DocEntry = @list_of_cols_val_tab_del)

IF (isnull(@MontoAbonado,0) *(-1) < @MontoPedido)

BEGIN

SET @error=102

SET @error_message= 'O VALOR DO PEDIDO EXCEDE O VALOR PAGO PELO CLIENTE'

END

END

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

1 Respuestas

0
Cargando...

Olá Ana, tente desta forma

Se @object_type='17' e @transaction_type em ('A','U')

Começar

DECLARE @MontoAbonado numeric(19, 6),

@MontoPedido numeric(19, 6)

SET @MontoAbonado = ISNULL((SELECT T0.Balance + t0.OrdersBal

DE OCRD T0 INNER JOIN OCTG T1 ON T0.GroupNum = T1.GroupNum

ONDE t0.CardCode = (SELECT cardcode DE ORDR ONDE DocEntry = @list_of_cols_val_tab_del)

E T1.PymntGroup = 'Contado'), 0)

SET @MontoPedido = ISNULL((SELECT T2.DocTotal

DE ORDR T2

ONDE T2.DocEntry = @list_of_cols_val_tab_del), 0)

SE (@MontoAbonado * -1) < @MontoPedido

Começar

SET @error = @MontoAbonado

SET @error_message = 'O VALOR DO PEDIDO EXCEDE O VALOR PAGO PELO CLIENTE'

Final

Final

Tenha em mente que o campo OrdersBal recebe o valor total do documento atual, não o que está armazenado no BD.

Isso funcionou para mim.

Cumprimentos,

Wuilmer Venegas

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?