- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Problema com ponto de entrada
×
Linguagem de Programação ADVPL
Perguntas Problema com ponto de entrada
- RodrigoMiras
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 9
- Obrigados Recebidos: 0
11 anos 1 mês atrás #17441
por RodrigoMiras
Problema com ponto de entrada foi criado 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?
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.
- RonaldoLopes
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 478
- Obrigados Recebidos: 2
11 anos 1 mês 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.
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.
- RodrigoMiras
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 9
- Obrigados Recebidos: 0
11 anos 1 mês 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.
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.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
11 anos 1 mês atrás #17470
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
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.
#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.
- RodrigoMiras
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 9
- Obrigados Recebidos: 0
11 anos 1 mês 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.
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.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
11 anos 1 mês atrás #17482
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
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.
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.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Problema com ponto de entrada
Tempo para a criação da página:0.121 segundos