| Linha de Produto: | Microsiga Protheus® |
|---|---|
| Segmento: | Backoffice |
| Módulo: | Financeiro |
| Idiomas | Português |
| Função: | FINA710 - Novo Gestor Financeiro |
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.
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.
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 |
Este ponto de entrada não tem retorno. O programa padrão valida se foi posicionado registro SE1 com DbSeek/MsSeek corretamente.
#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 |