× Linguagem de Programação ADVPL

Perguntas Problema com ponto de entrada

Mais
11 anos 2 meses atrás #17441 por RodrigoMiras
Boa tarde pessoal,

Estou com um problema, ao criar um borderô na rotina de transferência no contas a receber, onde os títulos que forem selecionados, após a geração deste, sejam atualizados no campo E1_FLUXO com valor "N" na tabela SE1, quando o banco especificado for X.
Ex.: Caso numero do banco seja 237, os títulos selecionados terão o valor do campo E1_FLUXO igual a "N".

Ao abrir o chamado com a TOTVs nos instruíram a utilizar o ponto de entrada F060EXIT:
Esta função é chamada em 3 momentos no sistema, na geração do borderô, no cancelamento da geração e após a transferência.

#include 'totvs.ch'

User Function F060EXIT()

Local cNumBor := SE1->E1_NUMBOR
If empty(cNumBor)
MsgAlert("Gerando Borderô ou Cancelado", "F060EXIT")
Else
MsgAlert("Numero Borderô: " +cNumBor, "F060EXIT")
Endif

RETURN .T.

Ao testar esta função constatei que em nenhum momento a variável "cNumBor" recebe o o número do borderô, sempre vem vazio. Desta forma como vou aplicar uma condição se eu nem consigo resgatar o número do borderô o qual acabei de gerar?

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 2 meses atrás #17452 por RonaldoLopes
Respondido por RonaldoLopes no tópico Problema com ponto de entrada
Bom dia, você já verificou o que está vindo da sua E1?
Coloque um break point na linha Local cNumBor := SE1->E1_NUMBOR e veja o conteúdo do SE1->E1_NUMBOR.

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 2 meses atrás #17455 por RodrigoMiras
Respondido por RodrigoMiras no tópico Problema com ponto de entrada
Bom dia Ronaldo,

Obrigado pela atenção, realizei o teste, o conteúdo vem em branco.
A rotina está ok, o borderô está sendo gravado no banco de dados. Não entendo porque não consigo resgatar este número.

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 2 meses atrás #17470 por lalberto
Respondido por lalberto no tópico Problema com ponto de entrada
Veja se Ajuda

#include 'totvs.ch'

User Function F060SEA2()

If SEA->EA_PORTADO == '237'
If RecLock("SE1",.f.)
SE1->E1_FLUXO := "N"
SE1->(MsUnlock())
Endif
ENdif

RETURN .T.

Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 2 meses atrás #17480 por RodrigoMiras
Respondido por RodrigoMiras no tópico Problema com ponto de entrada
Bom dia Luiz Alberto,

Obrigado pela atenção, Matou a charada ! o código funcionou legal... muito obrigado

Agora só uma obeservação, apesar de ter funcionado, eu não entendi como o código funcionou rsrs
Estou iniciando com ADVPL agora e tb to tentando entender como o Protheus funciona com relação a parte técnica. Pelo que eu entendi de ponto de entrada, são funções que são chamadas pela fonte principal a qual podemos realizar algumas modificações de acordo com o nosso negócio. Com relação a esta específica, você poderia me explicar como ela está funcionando se não for incomodar muito..

If SEA->EA_PORTADO == '237' // quando eu realizo esta condição, o programa varre toda a tabela SEA para saber qual borderô tem o banco 237? ou a rotina já consegue localizar o borderô que está sendo criada neste momento?

If RecLock("SE1",.f.) //qual a finalidade desta função?

SE1->E1_FLUXO := "N" // Aqui está ok eu entendi...
SE1->(MsUnlock()) // Aqui tb entendi que está destravando alguma coisa..
Endif
ENdif

Abraços e mais uma vez obrigado pela atenção.

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 2 meses atrás #17482 por lalberto
Respondido por lalberto no tópico Problema com ponto de entrada
Olá Rodrigo, bom dia.

Então olha só.

If SEA->EA_PORTADO == '237' -> Neste Momento ele não esta varrendo a tabela, ele está gerando o bordero de cobrança titulo a titulo, por isso tbém já estou posicionado na tabela abaixo a SE1 (Tabela de Contas a Receber).

If RecLock("SE1",.f.) a Função RecLock é utilizada para bloquear um registro existente para gravação, quando passamos .f. ele trava um registro existente, quando passamos .t. ele adiciona um novo registro na tabela.

SE1->E1_FLUXO := "N" // Aqui está ok eu entendi...
SE1->(MsUnlock()) // Esta função é utilizada juntamente com a RecLock sempre, ela é responsável pelo destravamento do registro.
Endif
ENdif


O Que vc mencionou sobre ponto de entrada é exatamente isso, podemos interferir em alguns programas padrões do protheus, alterando telas, adicionando ou editando novas informações, cada ponto de entrada tem um tratamento especifico para cada rotina.

Abraços e indique o site aos amigos e coloca uma foto sua ai pra gente te conhecer melhor.

Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.121 segundos
Joomla templates by a4joomla