Relatório SQL de faturamento - devolução

29/12/2023

0

Estou fazendo um relatório de faturamento, com o seguinte comando:

Select
 YEAR (T.DATA) ANO,
 CHOOSE (month (t.data), 'JAN', 'FEV', 'MAR', 'ABR','MAI', 'JUN', 'JUL', 'AGO', 'SET', 'OUT', 'NOV', 'DEZ') AS MES,
 ROUND (SUM (o.TOTALITEM - o.VLRDESCICMSIS - O.VLRDESC),2) 'FATURAMENTO',
 'DEVOLUÇÃO',
 'FATURAMENTO LIQUIDO',
 ROUND (SUM (s.CUSTOMEDIO * o.QTDADE),2) 'CPV',
 ROUND (SUM((o.TOTALITEM - o.VLRDESCICMSIS - O.VLRDESC) - (s.CUSTOMEDIO * o.QTDADE)),2) 'LUCRO',
 ROUND (SUM((o.TOTALITEM - o.VLRDESCICMSIS - O.VLRDESC) - (s.CUSTOMEDIO * o.QTDADE)) / SUM (o.TOTALITEM - o.VLRDESCICMSIS - O.VLRDESC),4) * 100 '% MARGEM BRUTA',
 ROUND (SUM((o.QTDADE * u.EQUIVALENCIA)/1000),3) 'TONELADAS',
 ROUND (SUM ((o.TOTALITEM - o.VLRDESCICMSIS - O.VLRDESC)) / SUM ((o.QTDADE * u.EQUIVALENCIA)/1000),3) 'TICKET MEDIO',
 ROUND (SUM (O.FRETENULO),2) 'FRETE NULO'
 
From TRANSACAO T
 
inner join ORDTRANS O on T.CODTRANSACAO=O.CODTRANSACAO
inner join ORDSALDO S on s.CODORDTRANS=o.CODORDTRANS
inner join PRODUTO P on o.codprod=p.CODPROD
inner join UNIDADE U on u.CODUNID=p.CODUNID
 
where t.DATA  between '01/01/2022' and '31/12/2022'
 
AND t.SITUACAO=3
AND o.CODNATU in ('1201','2201','5101', '5101A', '5101C', '5101P', '5102','5116', '5124','5125', '6101P','6116')
 
GROUP BY  Year(t.DATA), MONTH (t.DATA)
 
ORDER BY Year(t.DATA), MONTH (t.DATA)


Preciso do total de devolução de cada mês para abater no faturamento. O registro das devoluções e o faturamento ficam na mesma tabela, sendo diferenciadas através da CFOP de devolução 1201 e 2201.

No caso desse comando, como encontro o total de devolução, para depois abater no faturamento ?

Tentei usar o case when para somar os valores caso a CFOP seja 1201 e 2201, mas acabou atrapalhando no agrupamento (ano/mes)
Mylena

Mylena

Responder

Posts

29/12/2023

Arthur Heinrich

Ao fazer o sum(), você pode colocar uma condição:

sum( case when o.CODNATU in ('1201','2201') then -valor else valor end )

Desta forma, o que não é cancelamento é somado e o que é cancelamento é subtraído.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar