Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

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 Fa040AltOk()

Programa Fonte:

FINA040.PRW

Versões:12

Parâmetros:

Nome

Tipo

Descrição

Obrigatório

aItemFI2

Array

Array de Ocorrências

X

lAbatimLógico

lProtestoLógico

lCancProtLógico

aCPosArrayArray com os nomes dos campos que serão avaliadosX
lButtonLógicoExibe botão de alteraçãoX
Retorno:Array com os campos de ocorrências que serão gravadas.

Exemplo: 



Bloco de código
languagejava
themeMidnight
titleExemplo de utilização
#Include 
#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
 

User Function A040AtOk()

Local aAux      := PARAMIXB[1] //Dados da tela apresentada pelo sistema, para manipulação do usuário
Local laltdat   := .T. // Regra específica se é uma alteração de data

//Exemplo de preenchimento para alimentar tabela FI2
If laltdat
    aAux[1][1]:="06"
    aAux[1][2]:="Vencto real "
    aAux[1][3]:="03/04/2020"
    aAux[1][4]:="04/04/2020"
    aAux[1][5]:="E1_VENCREA"
    aAux[1][6]:="D"
    aAux[1][7]:=" "
    aAux[1][8]:=.F.
EndIf

Return aAux