AND (des.data_validade IS NULL OR des.data_validade >= CURDATE())), 0)
+ COALESCE((SELECT SUM(acr.valor)
FROM cliente_contrato_acrescimos AS acr
WHERE acr.id_contrato = cc.id
AND vd.id = acr.id_vd_contrato_produtos), 0) AS valor_liquido
FROM
cliente_contrato cc
LEFT JOIN
cliente c ON cc.id_cliente = c.id
LEFT JOIN
vd_contratos_produtos vd ON cc.id_vd_contrato = vd.id_vd_contrato OR cc.id = vd.id_contrato
LEFT JOIN
fn_areceber_mot_cancelamento AS can ON can.id = cc.motivo_cancelamento
LEFT JOIN
tipo_cliente AS tip ON c.id_tipo_cliente = tip.id
LEFT JOIN
vendedor AS ven ON cc.id_vendedor = ven.id
LEFT JOIN
filial AS f ON cc.id_filial = f.id
WHERE
cc.status = "I"
AND c.id <> "2"
AND YEAR(cc.data_cancelamento) = 2024
AND MONTH(cc.data_cancelamento) = 3
AND cc.id = '62206'
GROUP BY
cc.id, c.id, c.razao,
tip.tipo_cliente,
cc.status,
can.motivo,
ven.nome,
vd.qtde,
vd.valor_unit,
vd.id_produto ;
Onde quero trazer dados desses clientes e o valor liquido que esta sendo calculado com Valor Liquido = Valor Bruto + Acréscimo - Descontos, o problema em sí esta quando estou trazendo o valor liquido que ele está trazendo os desconto com a data de validade expirados e queria que me trouxesse apenas os com data de validade >= ao dia de hj
Pergunta
Charles Andrade
Hey incomparáveis, estou fazendo a seguinte consulta no SQL
SELECT
vd.id AS id_produto,
c.id AS id_cliente,
cc.id AS id_contrato,
vd.id_produto ,
cc.id_vd_contrato,
c.razao,
tip.tipo_cliente,
cc.status,
can.motivo,
ven.nome AS vendedor,
vd.qtde,
vd.valor_unit,
COALESCE((SELECT SUM(des.valor)
FROM cliente_contrato_descontos AS des
WHERE des.id_contrato = cc.id
AND vd.id = des.id_vd_contrato_produtos
AND des.origem IN ("M", "A")
AND (des.data_validade IS NULL OR des.data_validade >= CURDATE())), 0) AS desconto_total,
COALESCE((SELECT SUM(acr.valor)
FROM cliente_contrato_acrescimos AS acr
WHERE acr.id_contrato = cc.id
AND vd.id = acr.id_vd_contrato_produtos), 0) AS acrescimo_total,
SUM(vd.valor_unit * vd.qtde ) AS VALOR_BRUTO,
CAST(cc.data_ativacao AS DATE) AS data_ativacao,
CAST(cc.data_cancelamento AS DATE) AS data_cancelamento,
f.id AS id_filial,
f.fantasia AS filial,
SUM(vd.valor_unit * vd.qtde) - COALESCE((SELECT SUM(des.valor)
FROM cliente_contrato_descontos AS des
WHERE des.id_contrato = cc.id
AND vd.id = des.id_vd_contrato_produtos
AND des.origem IN ("M", "A")
AND (des.data_validade IS NULL OR des.data_validade >= CURDATE())), 0)
+ COALESCE((SELECT SUM(acr.valor)
FROM cliente_contrato_acrescimos AS acr
WHERE acr.id_contrato = cc.id
AND vd.id = acr.id_vd_contrato_produtos), 0) AS valor_liquido
FROM
cliente_contrato cc
LEFT JOIN
cliente c ON cc.id_cliente = c.id
LEFT JOIN
vd_contratos_produtos vd ON cc.id_vd_contrato = vd.id_vd_contrato OR cc.id = vd.id_contrato
LEFT JOIN
fn_areceber_mot_cancelamento AS can ON can.id = cc.motivo_cancelamento
LEFT JOIN
tipo_cliente AS tip ON c.id_tipo_cliente = tip.id
LEFT JOIN
vendedor AS ven ON cc.id_vendedor = ven.id
LEFT JOIN
filial AS f ON cc.id_filial = f.id
WHERE
cc.status = "I"
AND c.id <> "2"
AND YEAR(cc.data_cancelamento) = 2024
AND MONTH(cc.data_cancelamento) = 3
AND cc.id = '62206'
GROUP BY
cc.id, c.id, c.razao,
tip.tipo_cliente,
cc.status,
can.motivo,
ven.nome,
vd.qtde,
vd.valor_unit,
vd.id_produto ;
Onde quero trazer dados desses clientes e o valor liquido que esta sendo calculado com Valor Liquido = Valor Bruto + Acréscimo - Descontos, o problema em sí esta quando estou trazendo o valor liquido que ele está trazendo os desconto com a data de validade expirados e queria que me trouxesse apenas os com data de validade >= ao dia de hj
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Faça login para comentar
Você vai ser capaz de deixar um comentário após fazer o login
Entrar Agora