SQL abaixo gera rateio caixa de todos os movimentos gerados na devolução de DAV em dinheiro:
INSERT INTO rateiocaixa(CodigoMovimento, CodigoRateioCompetencia, CodigoParcelaOrigem, CodigoParcelaCaixa, TipoParcela, TipoRateio, Flutuante, CodigoTransacaoFinanceira, CodigoModeloDav, CodigoConta, CodigoLE, CodigoGestorExecutivo, CodigoGestorOperacional, CodigoGestorContrato, CodigoSetor, CodigoCentroOperacional, CodigoCFOP, CodigoPlano, CodigoSubPlano, CodigoTransacao, CodigoPeriodoGerencial, CodigoLinhaNegocio, CodigoContrato, CodigoCF, TipoCF, CodigoClienteContrato, DataRateioCompetencia, DataEmissao, Data, Descricao, Serie, Numero, Percentual, Valor, Desconto, ValorFinal, CodigoTipoParcela, Juncao)
SELECT movimento.codigo AS CodigoMovimento, rateiocompetencia.codigo AS CodigoRateioCompetencia, 0 AS CodigoParcelaOrigem, 0 AS CodigoParcelaCaixa, 2 AS TipoParcela, 0 AS TipoRateio, 0 AS Flutuante, movimento.CodigoTransacaoFinanceira, rateiocompetencia.codigoOrigem AS CodigoModeloDav, movimento.CodigoConta AS CodigoConta, rateiocompetencia.CodigoLE, rateiocompetencia.CodigoGestorExecutivo, rateiocompetencia.CodigoGestorOperacional, rateiocompetencia.CodigoGestorContrato, rateiocompetencia.CodigoSetor, rateiocompetencia.CodigoCentroOperacional, rateiocompetencia.CodigoCFOP, rateiocompetencia.CodigoPlano, rateiocompetencia.CodigoSubPlano, rateiocompetencia.CodigoTransacao, rateiocompetencia.CodigoPeriodoGerencial, rateiocompetencia.CodigoLinhaNegocio, rateiocompetencia.CodigoContrato, rateiocompetencia.CodigoCF, rateiocompetencia.TipoCF, rateiocompetencia.CodigoClienteContrato, rateiocompetencia.data AS DataRateioCompetencia, rateiocompetencia.data AS DataEmissao, rateiocompetencia.data, rateiocompetencia.Descricao, rateiocompetencia.Serie, rateiocompetencia.Numero, rateiocompetencia.rateio AS Percentual, rateiocompetencia.valorrateio AS Valor, 0 AS Desconto, rateiocompetencia.valorrateio AS ValorFinal, 0 AS CodigoTipoParcela, 0 AS Juncao
FROM movimento
INNER JOIN faturamento ON faturamento.codigo = movimento.codigoorigem AND movimento.tipoorigem = 5
INNER JOIN rateiocompetencia ON rateiocompetencia.codigoOrigem = faturamento.codigoorigem AND rateiocompetencia.CodigoModeloDav = faturamento.codigomodelo AND rateiocompetencia.tipoorigem = 8
WHERE movimento.tipoorigem = 5 and ISNULL((SELECT rateiocaixa.codigo FROM rateiocaixa WHERE rateiocaixa.CodigoMovimento = movimento.codigo LIMIT 1));
O erro do sistema foi arrumado a partir da versão 1.90.14. Esse SQL pode ser útil para ajustar em clientes que ficaram com registros antigos ou para se basear para criar outros, como por exemplo o da NF de devolução de cliente que estava errado também.