Histórico da Página
A040ATOK – Permiti exibir ou não a tela de alteração do contas a receber.
Descrição: | A finalidade do ponto de entrada A040ATOK é utilizado para a substituição da tela de instrução de cobrança, permitindo preenchimento e geração automática da instrução no momento da geração do registro, chamado na função Fa040AltOk. | |||||||||||||||||||||||||||||
Localização: | Está presente na função F460TitGer() | Eventos: | Fa040AltOk() | |||||||||||||||||||||||||||
Programa Fonte: | FINA040.PRW | |||||||||||||||||||||||||||||
Versões: | 12 | |||||||||||||||||||||||||||||
Parâmetros: |
| |||||||||||||||||||||||||||||
Retorno: | Array com os campos de ocorrências que serão gravadas. |
Exemplo:
#Include 'Protheus.ch'
User Function A040AtOk()
Local aArea := GetArea()
Local aCpOcor := &(GetMv("TI_A040ARR",,"{}")) // Array de Preenchimento automatico de Intrução.
Local lInstruc := GetMv("TI_A040TOK",,.T.) // Exibe pergunta para gerar ou não automaticamente o que foi encontrado.
Local lExibTela := GetMv("TI_A040INS",,.T.) // Exibe tela ou não quando não houver Preenchimento automatico.
Local lContinua := .F.
Local nX := 0
Local nPos := 0
Local aPosItens := {}
Local aAux := PARAMIXB[1] //Dados da tela apresentada pelo sistema, para manipulação do usuário
Local lLigAlcada := SuperGetMV('ES_ALCPRG',,.F.)
Local lProrrogPend := .F.
Local dDtNova := M->E1_VENCREA
Local lConsegProrrog := .T.
Local lProssegue := .T.
If FindFunction("U_TFINAA22") .AND. lLigAlcada
lProssegue := .F.
//importante: ================================================================
//se apenas modifica um outro campo do titulo e permitir msg
//nao estamos na rotina de efetivacao e
//nao existe uma aprov\efetiv em aguardo
//se apenas modifica um outro campo do titulo e impedir msg
//nao estamos na rotina de efetivacao e
//existe uma aprov\efetiv em aguardo
//se nao estamos na rotina de efetivacao e simule para ver se ele conseguira prorrogar
//nao existe uma aprov\efetiv em aguardo caso consiga -> permitir msg
//mas ele acaba de prorrogar a data caso não -> impedir msg
//se esta na rotina de efetivacao permitir msg
//=============================================================================
//testar se existe uma aprov\efetiv pendente
Processa( {|| lProrrogPend := U_TFINAE22( SE1->E1_NUM, SE1->E1_PREFIXO, SE1->E1_PARCELA, SE1->E1_TIPO, SE1->E1_CLIENTE, SE1->E1_LOJA, SE1->E1_filial) }, 'Aguarde...', 'Identificando Alçadas para alteração da Data de Vencimento...', .T.) // Cria arquivo temporario
If IsInCallStack("U_TFINA029")
lProrrogPend := .F. //pq ainda esta com prorrog pendente antes de fazer execauto na tela de efetivacao mesmo
EndIf
If !lProrrogPend
If !IsInCallStack("U_TFINA029") .And. nOldVenRea != dDtNova
//este PE ocorre antes do F040ALT no qual se faz mesmo a prorrogacao ... entao :
//simula se ele conseguira prorrogar por conta propria
Processa({|| lConsegProrrog := U_TFINAX22(nOldVenRea, ;//<-- este é o nome da variavel que o Produto padrao criou e contem a data antes da alteracao
dDtNova, SE1->E1_NUM, SE1->E1_PREFIXO, SE1->E1_PARCELA, SE1->E1_TIPO, SE1->E1_CLIENTE, SE1->E1_LOJA, SE1->E1_HIST, SE1->E1_filial) }, 'Aguarde...', 'Identificando Alçadas para alteração da Data de Vencimento...', .T.) // Cria arquivo temporário
EndIf
If lConsegProrrog
lProssegue := .T.
EndIf
Endif
EndIf
// Verifica se existe preenchimento automatico do parametro
If Len(aCpOcor) > 0 .and. Len(aAux) > 0
DbSelectArea("SE1")
For nX := 1 To Len(aAux)
nPos := aScan(aCpOcor,{|x| aAux[nX][5] == x[2] })
If nPos > 0 .and. SE1->E1_PORTADO == aCpOcor[nPos][1]
aAdd(aPosItens,{nX,nPos})
EndIf
Next nX
EndIf
If lProssegue //se situação comum ... ou houve prorrogacao(sendo que usuario consegue prorrogar por conta propria) entao permite mensagens abaixo em tela
//caso contrario, havendo impedimento de prorrogacao evitar qualquer abertura de tela ou msg
// Verifica se existe preenchimento automatico
If Len(aPosItens) > 0
If lInstruc
If MsgYesNo("Deseja cadastrar instrução de cobrança para a alteração efetuada para posterior envio ao banco?","Atenção")
aAux := TA040ATU(aAux,aCpOcor,aPosItens)
Else
lExibTela := .F.
EndIf
Else
aAux := TA040ATU(aAux,aCpOcor,aPosItens)
EndIf
EndIf
If lExibTela
aAux := TA040TEL(aAux)
EndIf
EndIf
RestArea(aArea)
Return aAux