Árvore de páginas

01. DADOS GERAIS

Linha de Produto:Microsiga Protheus®
Segmento:Backoffice
Módulo:Financeiro
IdiomasPortuguês
Função:

FINA710 - Novo Gestor Financeiro

02. DESCRIÇÃO

O ponto de entrada NGFPOSE1 permite substituir o posicionamento do título do programa padrão, na tabela de contas a receber (SE1), que é realizada por IDCNAB

Este ponto de entrada é chamado no momento da localização do título, após receber do API do banco o JSON com o campo correspondente ao IDCNAB.

É chamado na execução do job FINA715 e também para o webhook.

Obs 1: Nesse momento não estamos com o ambiente na filial correta, somente abrimos a filial correta após encontrar o título.

Obs 2: Para o programa padrão considerar que este ponto de entrada encontrou o título é obrigatório utilizar a função DbSeek/MsSeek.

03. PARÂMETROS

Nome

Tipo

Descrição

PARAMIXB[1]

Caractere

IDCNAB do boleto que o programa padrão pesquisaria no campo E1_IDCNAB, recebido através do JSON de retorno do banco

04. RETORNO

Este ponto de entrada não tem retorno. O programa padrão valida se foi posicionado registro SE1 com DbSeek/MsSeek corretamente.

05. EXEMPLO DE UTILIZAÇÃO

NGFEMBOL
#INCLUDE "PROTHEUS.CH"
#INCLUDE "TBICONN.CH"
 
/*/{Protheus.doc} NGFPOSE1
Ponto de entrada para substituição da pesquisa do Título a Receber para Baixa Títulos (Retorno) FINA715.
  
paramixb[1]:
    cIdCnab          , Código que o programa padrão iria procurar no E1_IDCNAB caso não tivesse esse PE, exemplo: "NDC0085358"
 
 
@type       Function
@author     TOTVS
@since      25/05/2021
@return     Nil
/*/
User function NGFPOSE1()
 
     
    Local cIdCnab   := paramIXB[1]
    Local cQuery    := ""
    Local cAlias    := GetNextAlias()
 
 
    // Atenção - Nesse momento não estamos com o ambiente na filial correta, somente abrimos a filial correta após encontrar o título.
     
    cQuery := " SELECT R_E_C_N_O_ AS RECNO FROM " + RetSqlName("SE1")
    cQuery += " WHERE D_E_L_E_T_ = ' ' "
    cQuery += " AND E1_IDCNAB = '" + cIdCnab + "' "
 
    DbUseArea(.T., "TOPCONN", TCGenQry(,, cQuery), cAlias, .F., .T.)
 
    If (cAlias)->(!EOF())
 
        SE1->(DbGoTo((cAlias)->RECNO))
        /*
            Atenção
            Para o programa padrão considerar que o PE encontrou o título é obrigatório utilizar a função DbSeek/MsSeek.
            Caso utilize DbGoTo, DbSkip ou qualquer outra função de manipulação, depois é obrigatório posicionar no título correto com DbSeek/MsSeek.
            Utilizamos a função Found() para validar o posicionamento da SE1.
        */
        DbSelectArea("SE1")
        SE1->(DbSetOrder(1)) // E1_FILIAL+E1_PREFIXO+E1_NUM+E1_PARCELA+E1_TIPO
        SE1->(DbSeek(SE1->E1_FILIAL+SE1->E1_PREFIXO+SE1->E1_NUM+SE1->E1_PARCELA+SE1->E1_TIPO)) 
 
    EndIf
 
    (cAlias)->(DbCloseArea())

    /*
        Atenção -> Caso despocisione outras tabelas, utilizar RestArea() ponteirado apenas nas tabelas desposicionadas.
        Exemplo:
        aAreaSA6 := SA6->(GetArea())
            ...
        RestArea(aAreaSA6)

        *** Não utilizar RestArea para area ativa nem para tabela SE1.
            --> Não utilizar:
            aArea := GetArea()
                ...
            RestArea(aArea)
            --> Não utilizar:
            aAreaSE1 := SE1->(GetArea())
                ...
            RestArea(aAreaSE1)
    */
     
Return