Uebá!!! Montei essa query um tempo atrás para localizar fechamento incorreto no protheus, o fechamento acontece na SB9, que é feito todo mês. Let's Share!
https://centraldeatendimento.totvs.com/hc/pt-br/articles/360006558492-MP-SIGAEST-Roteiro-para-a-realiza%C3%A7%C3%A3o-da-virada-de-saldos-no-estoque-MATA280
SELECT * FROM (
SELECT B9_FILIAL,B9_COD,B9_LOCAL,B9_DATA,B9_QINI,
--ULTIMO FECHAMENTO ANTES DO MES ATUAL
(
SELECT ISNULL(B9_QINI,0)
FROM SB9050 SB9X
WHERE SB9X.B9_COD =SB9.B9_COD
AND SB9X.B9_LOCAL = SB9.B9_LOCAL
AND SB9X.D_E_L_E_T_ = ' '
AND MONTH(SB9X.B9_DATA) = MONTH(DATEADD(month,-1,convert(datetime,SB9.B9_DATA,103)))
AND YEAR(SB9X.B9_DATA) = YEAR(DATEADD(month,-1,convert(datetime,SB9.B9_DATA,103)))
--SELECT * FROM SF4050 WHERE F4_CODIGO = '618'
)-(
--MOVIMENTACAO DO ESTOQUE
SELECT
ISNULL(SUM(CASE
WHEN LEFT(SD3.D3_CF,1)='R' THEN SD3.D3_QUANT
ELSE SD3.D3_QUANT * -1
END),0)
FROM SD3050 SD3
WHERE SD3.D_E_L_E_T_ = ' '
AND SD3.D3_EMISSAO BETWEEN SUBSTRING(SB9.B9_DATA,1,6)+'01' AND SB9.B9_DATA
AND SD3.D3_FILIAL = B9_FILIAL
AND SD3.D3_COD = B9_COD
AND SD3.D3_LOCAL = B9_LOCAL
AND SD3.D3_ESTORNO = ' '
)+(
-- NOTAS FISCAIS DE ENTRADA
SELECT ISNULL(SUM(D1_QUANT),0)
FROM SD1050 SD1
INNER JOIN SF4050 SF4
ON SF4.D_E_L_E_T_ = ' '
AND SF4.F4_CODIGO = SD1.D1_TES
AND SF4.F4_ESTOQUE = 'S'
WHERE SD1.D_E_L_E_T_ = ' '
AND SD1.D1_DTDIGIT BETWEEN SUBSTRING(SB9.B9_DATA,1,6)+'01' AND SB9.B9_DATA
AND SD1.D1_COD = SB9.B9_COD
AND SD1.D1_LOCAL = SB9.B9_LOCAL
AND SD1.D1_FILIAL = B9_FILIAL
)-(
-- NOTAS FISCAIS DE SAIDA
SELECT ISNULL(SUM(D2_QUANT),0)
FROM SD2050 SD2
INNER JOIN SF4050 SF4
ON SF4.D_E_L_E_T_ = ' '
AND SF4.F4_CODIGO = SD2.D2_TES
AND SF4.F4_ESTOQUE = 'S'
WHERE SD2.D_E_L_E_T_ = ' '
AND SD2.D2_EMISSAO BETWEEN SUBSTRING(SB9.B9_DATA,1,6)+'01' AND SB9.B9_DATA
AND SD2.D2_COD = SB9.B9_COD
AND SD2.D2_LOCAL = SB9.B9_LOCAL
AND SD2.D2_FILIAL = B9_FILIAL
) QUANTIDADE
,B2_QATU,B9_VINI1,B9_CM1,
--MOVIMENTACAO ATUAL DA SD3
(SELECT
ISNULL(SUM(CASE
WHEN LEFT(SD3.D3_CF,1)='R' THEN SD3.D3_QUANT
ELSE SD3.D3_QUANT * -1
END),0)
FROM SD3050 SD3
WHERE SD3.D_E_L_E_T_ = ' '
AND SD3.D3_EMISSAO BETWEEN SUBSTRING(SB9.B9_DATA,1,6)+'01' AND SB9.B9_DATA
AND SD3.D3_FILIAL = B9_FILIAL
AND SD3.D3_COD = B9_COD
AND SD3.D3_LOCAL = B9_LOCAL
AND SD3.D3_ESTORNO = ' ') SD3ATU
FROM SB9050 SB9
INNER JOIN SB2050 SB2
ON SB2.D_E_L_E_T_ = ' '
AND SB2.B2_FILIAL = SB9.B9_FILIAL
AND SB2.B2_COD = SB9.B9_COD
AND SB2.B2_LOCAL = SB9.B9_LOCAL
WHERE B9_LOCAL = '01'
--AND B9_COD = '30300506T'
AND SB9.D_E_L_E_T_ = ' '
AND SB9.B9_DATA BETWEEN '20200101' AND '20200831'
GROUP BY B9_FILIAL,B9_COD,B9_LOCAL,B9_DATA,B9_QINI,B9_VINI1,B9_CM1,B2_QATU
--SELECT convert(datetime,'20171231',103)
--SELECT DATEADD(month,1,convert(datetime,'20171231',103))
--DATEADD(month, 1, '2006-08-30')
) XX WHERE round(XX.B9_QINI,2) <> round(XX.QUANTIDADE,2)
ORDER BY B9_FILIAL,B9_COD,B9_LOCAL,B9_DATA