01. DATOS GENERALES

Línea de producto:Microsiga Protheus®
Segmento:Backoffice
Módulo:Financiero
IdiomasPortugués - Español
Función:

FINA710 - Nuevo Administrador Financiero

02. DESCRIPCIÓN

El punto de entrada NGFPOSE1 permite sustituir el posicionamiento del título del programa estándar, en la tabla del cuentas por cobrar (SE1), que se realiza por medio del IDCNAB

Este punto de entrada se llama en el momento de hacer la localización del título, después de recibir del API del banco el archivo JSON con el campo correspondiente al IDCNAB.

Obs 1: En este momento no estamos con el entorno en la sucursal correcta, solamente abrimos la sucursal correcta después de encontrar el título.

Obs 2: Para que el programa estándar considere que este punto de entrada encontró el título, es obligatorio utilizar la función DbSeek/MsSeek.

03. PARÁMETROS

Nombre

Tipo

Descripción

PARAMIXB[1]

Caracter

IDCNAB de la boleta que el programa estándar buscaría en el campo E1_IDCNAB, recibido a través del JSON de devolución del banco.

04. DEVOLUCIÓN

Este punto de entrada no tiene devolución. El programa estándar valida si se ha posicionado correctamente el registro SE1 con DbSeek/MsSeek.

05. EJEMPLO DE UTILIZACIÓN

#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