ERP - Aplicação e Financiamento - Não é possível atualizar contrato de Aplicação - Data Base "XX/XX/XXXX" com resgate efetuado, não é possível atualizar Aplicação\Captação do contrato XX
Incidente
No módulo Gestão de Tesouraria, ao efetuar um resgate parcial no contrato de aplicação e, na mesma data, tentar efetuar uma atualização, é retornada a mensagem: Data Base "XX/XX/XXXX" com resgate efetuado, não é possível atualizar Aplicação\Captação do contrato XX.

Causa
Esse incidente ocorre, pois, desde a concepção do sistema, a atualização de um contrato de aplicação só deve ocorrer em algum dia posterior ao do resgate. Toda a lógica foi construída com base nessa premissa. Por esse motivo, não é possível realizar uma atualização no mesmo dia do resgate para apurar o rendimento do novo saldo na mesma data.
Importante
Quando o resgate parcial ocorre no último dia do mês, a próxima atualização será feita apenas no próximo dia do mês seguinte, e neste caso, se necessário uma atualização do saldo das provisões ainda dentro do mês corrente, é necessário efetuar alguns comandos via banco de dados para 'burlar' a lógica da rotina.
Solução
Para que a mensagem não seja retornada ao efetuar a atualização do contrato, siga o exemplo a seguir:
1. Lançado um contrato de aplicação no valor de R$ 1.000.000,00:

1.2. Movimento gerado na conta interna:

1.3. Feita a atualização do contrato em janeiro e fevereiro:
Janeiro:

Fevereiro:

2. Consulta dos movimentos na conta interna:

2.1. Planilha do banco para conferência dos valores:

2.2. Feito o resgate parcial no último dia do mês de março:

3. Consulta dos movimentos na conta interna (veja que foi atualizado o rendimento 'parcial' conforme resgate);

3.1. Planilha do banco para conferência dos valores:

4. Ao tentar atualizar na mesma data do resgate, é retornada a Mensagem de consistência (essa mensagem existe para evitar que as próximas atualizações tenham valores incorretos, a rotina foi construída de forma que o último movimento sempre precisa ser um resgate):

5. Para que solucione a mensagem, encontre o movimento de resgate na tabela E606MAA. É o movimento que o TipMaa = 26:

5.1. Faça o update no campo, e altere o valor para = 99:
![]()

6. Na tela de atualização, informe a data 31/03, pressione TAB para sair do campo data, não irá dar a mensagem.
NÃO clique no botão Mostrar, antes precisa voltar o campo e606maa.TipMaa para = 26:

6.1. Altere o campo via banco de dados:


6.2. Após o campo alterado, clique no botão Mostrar:

6.3. Conferência do cálculo com a planilha do banco:

7. Consulta do movimento na conta interna, após processamento:

Atenção: Se tentar realizar a atualização do próximo mês, como a mensagem foi burlada, a rotina irá calcular valores INCORRETOS:

8. Para contorno, insira um novo registro na tabela E600MCC, tomando como base o movimento de resgate (SeqMov=25). O objetivo é gerar um movimento de resgate 'falso'.
8.1. Primeiro faça o Select na tabela E600MCC e verifique qual o próximo SeqMov disponível;
8.2. Em seguida efetue o INSERT na tabela, alterando os campos: SeqMov, HisMov, VlrMov:

Observação:
Para criar o insert, copie como 'Markdown' uma linha já existente no banco de dados para o contrato, e que seja do tipo resgate, em seguida gere o insert e altere apenas os campos necessários.
Exemplo de registro inserido:

9. Agora insira um novo registro na tabela E606MAA. O campo SeqMov precisa ter o mesmo valor do SeqMov que foi gerado na E600MCC. O TipMaa precisa ser 26.
9.1. Para isso, primeiramente faça o Select na tabela E606MAA e verifique qual o próximo SeqMaa disponível;
9.2. Em seguida efetue o INSERT na tabela, e altere os campos: SeqMaa (próximo disponível) e SeqMov (mesmo valor do insert anterior):

Observação:
Para criar o insert, copie como 'Markdown' uma linha já existente no contrato que seja do TipMaa=26, em seguida gere o insert e altere apenas os campos necessários:
Registro inserido:

10. Fazer a atualização do contrato no próximo mês:

10.1. Planilha do banco para conferência:

11. Consulta dos movimentos na conta interna:

12. Por fim, inative os movimentos que foram inseridos manualmente.
12.1. Exemplo de inativação do movimento na tabela E600MCC:

12.2. Inativação do movimento na tabela E606MAA:

Atenção! Antes de realizar qualquer alteração, analise o impacto que poderá ter em outros lançamentos/processos do sistema.