Neste post quero apresentar a forma que utilizo para corrigir a numeração no campo D3_DOC.
Sei que às vezes alguns usuários, sem querer erram o dedo e acabam alterando a sequência de algum campo do Protheus. E não somente o usuário, pois o sistema às vezes apresenta algum erro ou outro que altera a numeração.
E no caso da tabela SD3 (Movimentos Internos), o campo D3_DOC, utiliza na inicialização do campo a função NextNumero, e essa função efetua a busca direto no banco de dados, sem passar pelo controle de numerações do License, então você não consegue simplesmente ir e alterar via configurador.
Então é preciso realizar alguns procedimentos via QUERY.
E para isto eu costumo, primeiro verificar quantos registros estão errados, e se não houve movimentação no estoque desses itens.
E para isso, utilizo a query a seguinte:
SELECT
R_E_C_N_O_,
D3_FILIAL,
D3_DOC
FROM
dbo.SD3010
WHERE
D3_FILIAL = '01'
AND D3_DOC < 'INVENT '
AND D_E_L_E_T_ = ' '
ORDER BY
D3_FILIAL DESC ,
D3_DOC DESC ,
D3_COD DESC ,
R_E_C_N_O_ DESC
Após isto com esta listagem em mãos (documentos SD3), solicito ao usuário responsável pelas movimentações (caso exista um, rs), que realize os processos para estornar um a um desses documentos.
E após estes estornos, prossigo com a exclusão (pois a função NextNumero, não filtra o campo D3_ESTORNO).
E para isso, realizo um UPDATE na tabela SD3, atualizando o campo D_E_L_E_T_ para * (somente dos registros que foram estornados).
*Dica: Se a instalação tiver o R_E_C_D_E_L_, preencho ele com R_E_C_N_O_.
Para isto utilizo o seguinte script.
UPDATE
SD3010
SET
D_E_L_E_T_ = '*'
WHERE
D3_DOC >= '40 '
AND D3_ESTORNO = 'S'
AND D3_DOC < 'INVENT '
AND D_E_L_E_T_ = ' '
E assim concluo o processo acho que consegui contribuir de alguma forma.
Até a próxima.