F40DELPR em resumo
- Onde fica
- função
Fa040Subst(), a rotina Substituir do Contas a Receber. - Quando dispara
- uma vez, ao entrar na substituição, antes da tela de seleção dos provisórios.
- PARAMIXB
- nenhum. O padrão chama o ponto de entrada sem passar parâmetros.
- Retorno
- lógico.
.T.troca o processo (exclui o provisório); qualquer outro valor vira.F.. - Serve para bloquear?
- Não. Ele escolhe o jeito de substituir, não impede a substituição.
Consulta rápida5 seções
O que ele muda
Na substituição, o título provisório (tipo PR) sai de cena e dá lugar ao
título efetivo. O padrão tem dois caminhos para tirar o provisório:
Retorno do F40DELPR | O que acontece com o provisório |
|---|---|
.F. (ou ponto de entrada inexistente) | É baixado por Fina070 com motivo de baixa STP, com histórico de substituição. O vínculo entre o provisório e o título efetivo é gravado na tabela auxiliar FIH |
.T. | É excluído (dbDelete) do SE1, sem baixa e sem gravar o vínculo na FIH |
Dito de outro jeito: sem o ponto de entrada você fica com o processo novo
(baixar o PR); com ele devolvendo .T., volta o processo antigo, de excluir o
provisório.
O que acontece em cada caminho
No caminho de exclusão (.T.), em cada provisório substituído o padrão:
- chama o
F040PROV, se existir, antes de apagar; - estorna o lançamento do SIGAPCO (
PcoDetLan); - atualiza o saldo da natureza quando o título controla fluxo de caixa e o parâmetro de saldo por natureza está ligado;
- na substituição manual, remove os registros das tabelas de apoio
(
FINDELFKs) pela chave do título; - apaga o registro do
SE1.
No caminho de baixa (.F.), o provisório é baixado por MSExecAuto de
Fina070 e uma falha na baixa chama DisarmTransaction(). Na substituição
manual a data da baixa é a emissão do título efetivo e o F040PROV roda
depois da baixa; na automática nova a data é a data-base e o F040PROV não
é chamado.
Repare na inversão: na substituição manual o F040PROV roda antes da exclusão
e depois da baixa. Quem tem lógica pendurada nele precisa saber qual caminho
está ativo.
Armadilhas
Ele é lido uma vez, na entrada. O valor sai da declaração das variáveis
locais de Fa040Subst(). Não dá para decidir por título: a escolha vale para
todos os provisórios daquela execução. Ele roda antes da tela de seleção, então a regra não
pode depender dos provisórios escolhidos.
Retorno que não é lógico vira .F.. O padrão confere o tipo e, se não for
lógico, assume .F.. Um Return Nil por descuido deixa o processo de baixa,
sem erro e sem aviso.
Excluir o provisório não deixa rastro de baixa. Sem baixa não há movimento
no SE5 com motivo STP, e o vínculo da FIH não é gravado. Relatório ou
conciliação que dependa desse vínculo para ligar PR e título efetivo não
enxerga a substituição feita assim.
Vale para a manual e para a automática nova. Há uma única leitura, na
entrada. A substituição automática no formato antigo (lF040Auto sem a lista de
títulos provisórios) não consulta o valor: sempre exclui o provisório, sem
F040PROV e sem FINDELFKs.
Exemplo
O exemplo liga o processo antigo por uma chave de parâmetro, para existir sempre um jeito de desligar sem recompilar. O parâmetro é próprio (não existe no padrão); crie-o no Configurador.
#Include "Protheus.ch"
/*/{Protheus.doc} F40DELPR
Executado em Fa040Subst(), na entrada da substituicao de titulo provisorio.
Retornando .T., o provisorio e excluido em vez de baixado.
@type function
@return logical, .T. exclui o provisorio; .F. baixa o provisorio (padrao)
/*/
User Function F40DELPR()
Local lExclui := .F.
// Sem PARAMIXB: o padrao nao passa parametros.
// Padrao .F. mantem o processo de baixa do provisorio.
lExclui := SuperGetMv("MV_XDELPRV", .F., .F.)
// Garante retorno logico, mesmo com parametro mal cadastrado.
If ValType(lExclui) <> "L"
lExclui := .F.
EndIf
Return lExcluiPoucas linhas de propósito: este ponto de entrada só decide. O que o
.T. provoca está inteiro no padrão.
SELECT X6_VAR, X6_TIPO, X6_DESCRIC, X6_CONTEUD
FROM SX6010
WHERE X6_VAR = 'MV_XDELPRV'Se a consulta voltar vazia, o parâmetro não foi criado e o código acima cai no
padrão .F. (baixa do provisório). Ajuste o sufixo 010 para o da sua
empresa.
Quando usar outro
| Necessidade | Ponto de entrada |
|---|---|
| Rodar lógica própria ao tirar o provisório, antes da exclusão ou depois da baixa | F040PROV |
Para a inclusão normal de título, veja o FA040INC. Para entender o mecanismo geral de chamada, veja Ponto de entrada no Protheus.
Continue por aqui
- Vídeo
DesenvolvimentoReferência técnica
F340VALOK: o ponto de entrada que barra o OK da compensação a pagar
F340VALOK roda ao clicar OK na lista de títulos da compensação a pagar, recebe a lista em PARAMIXB e, retornando .F., mantém o usuário na lista.
- Vídeo
DesenvolvimentoReferência técnica
F340VLD: o ponto de entrada que barra a compensação no Contas a Pagar
F340VLD roda ao confirmar a primeira tela da compensação a pagar (FINA340), sem PARAMIXB. Retornando .F., a tela não fecha e nenhum título chega a ser listado.
- Vídeo
DesenvolvimentoReferência técnica
M120VLPC: valida os pedidos de compra marcados antes de carregá-los no documento de entrada
M120VLPC roda depois do OK na tela de seleção de pedidos de compra do documento de entrada, recebe a lista marcada e, ao retornar .F., cancela a carga inteira sem mensagem.