× Linguagem de Programação ADVPL

Perguntas FORÇAR PREENCHIMENTO DE CAMPO MEDIANTE CONDIÇÃO

Mais
10 anos 2 meses atrás - 10 anos 2 meses atrás #25316 por raphaelf
Boa tarde Senhores,
Gostaria de uma ajuda de vocês, a situação é a seguinte:

No Contas a Receber(SE1) criei um campo (E1_JUSTIF) com uma Lista de opções com 04 escolhas, para o usuário Justificar a Prorrogação do vencimento do título...
Preciso FORÇAR o usuário a preencher este campo APENAS no caso dele prorrogar o vencimento, notificando-o na tela disso, ou se possível, abrindo uma caixa de texto para ele preencher e armazenar neste campo.

Existe uma condição que está no fonte que é para apenas um usuário específico poder prorrogar acima de 150 dias.

Desde já agradeço a todos.


Segue fonte:

User Function URBG040()

nQtDias := M->E1_VENCTO - SE1->E1_VENCTO

IF nQtDias >= 150
IF __CUSERID$'000109' .AND. Empty(Alltrim(M->E1_JUSTIF))
ELSE
APMSGALERT("DESCULPE, VOCÊ NÃO TEM AUTORIZAÇÃO PARA PRORROGAR ACIMA DE 150 DIAS.","SEM ACESSO-"+ALLTRIM(ProcName())+"-URBG040")
M->E1_VENCTO := SE1->E1_VENCTO
M->E1_VENCREA := SE1->E1_VENCREA
M->E1_JUSTIF := SE1->E1_JUSTIF
ENDIF

ENDIF

IF nQtDias <> 0 .AND. Empty(Alltrim(M->E1_JUSTIF))
APMSGALERT("JUSTIFIQUE O MOTIVO DA PRORROGAÇÃO NO CAMPO - 'Jus.Prorroga' -")
ENDIF

Return
Ultima edição: 10 anos 2 meses atrás por raphaelf.

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 2 meses atrás #25328 por lalberto
Não testei veja se funfa.

User Function URBG040()

nQtDias := M->E1_VENCTO - SE1->E1_VENCTO

IF nQtDias >= 150
IF __CUSERID$'000109' .AND. Empty(Alltrim(M->E1_JUSTIF))
M->E1_JUSTIF := fJustif()
ELSE
APMSGALERT("DESCULPE, VOCÊ NÃO TEM AUTORIZAÇÃO PARA PRORROGAR ACIMA DE 150 DIAS.","SEM ACESSO-"+ALLTRIM(ProcName())+"-URBG040")
M->E1_VENCTO := SE1->E1_VENCTO
M->E1_VENCREA := SE1->E1_VENCREA
M->E1_JUSTIF := SE1->E1_JUSTIF
ENDIF

ENDIF

IF nQtDias <> 0 .AND. Empty(Alltrim(M->E1_JUSTIF))
APMSGALERT("JUSTIFIQUE O MOTIVO DA PRORROGAÇÃO NO CAMPO - 'Jus.Prorroga' -")
ENDIF

Return



Static Function fJustif()

Local nOpc := 0
Local cRet := ""
Local cMemo:= ""
Local oDlg1
Local oFont

cMemo :=M->E1_JUSTIF

DEFINE FONT oFont NAME "Courier New" SIZE 7,14

@ 3,0 TO 340,550 DIALOG oDlg1 TITLE OemToAnsi("MOTIVO DA PRORROGACAO")
@ 5,5 Get cMemo MEMO OBJECT oMemo SIZE 267,145
oMemo:bRClicked := {||AllwaysTrue()}
oMemo:oFont:=oFont
@ 153,240 BMPBUTTON TYPE 1 ACTION ( nOpc := 1 , oDlg1:End() )
ACTIVATE DIALOG oDlg1 CENTER

Return(AllTrim(cMemo))

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
10 anos 2 meses atrás #25332 por raphaelf
Está apresentando Sintax Error na linha: DEFINE FONT oFont NAME "Courier New" SIZE 7,14

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 1 mês atrás - 10 anos 1 mês atrás #25408 por raphaelf
Bom dia Luiz Alberto,

Vou ter que eliminar esta ideia de caixa de texto... Vou deixar apenas o campo com as opções mesmo.
Só queria uma ajuda para obrigar o preenchimento deste campo (E1_JUSTIF) quando o usuário prorrogar o vencimento do título.

Desde já agradeço a atenção.
Ultima edição: 10 anos 1 mês atrás por raphaelf.

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 1 mês atrás - 10 anos 1 mês atrás #25558 por raphaelf
Boa tarde Senhores,
Consegui resolver este caso, arrumei um ponto de entrada que é ativado no OK do Título no contas a receber...
Espero poder ajudar alguém com o fonte abaixo que bloqueia prorrogações acima de 150 para usuários que não estão no parâmetro, e abaixo disso , solicita Justificativa no campo que criei.



USER FUNCTION FA040ALT()

Local cUser := RETCODUSR()
Local nQtDias := M->E1_VENCTO - SE1->E1_VENCTO

IF nQtDias < 0
M->E1_JUSTIF := ""
Return .T.
ENDIF

IF nQtDias >= 150 .AND. !cUser$GETMV("MU_LIBPRO")
APMSGALERT("DESCULPE. Você não está autorizado a prorrogar data acima de 150 dias.","SEM ACESSO-"+ALLTRIM(ProcName()))
M->E1_VENCTO := SE1->E1_VENCTO
M->E1_VENCREA := SE1->E1_VENCREA
M->E1_JUSTIF := SE1->E1_JUSTIF
Return .F.

ELSEIF nQtDias <> 0 .AND. Empty(Alltrim(M->E1_JUSTIF))
APMSGALERT("Justifique o motivo da prorrogação no campo - 'JUS.PRORROGA'","SEM ACESSO-"+ALLTRIM(ProcName()))
Return .F.
ENDIF

Return .T.
Ultima edição: 10 anos 1 mês atrás por raphaelf.

Por favor Acessar ou Registrar para participar da conversa.

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