× Linguagem de Programação ADVPL

Perguntas Atualizar GET após retorno de consulta padrão

Mais
11 anos 1 mês atrás #17672 por Rstrozi
Boa tarde pessoal,

Gostaria de saber como atualizar um GET de um DIALOG após o preenchimento de um campo com uma consulta padrão no código abaixo:
Static Function NWMOTDEV()

  Local oCliente
  Local cCliente 	:= SF1->F1_FORNECE
  Local oCodMot
  Local cCodMot 	:= Space(6)
  Local oDescMot
  Local cDescMot 	:= Posicione("ZA2",1,xFilial("ZA2")+cCodMot,"ZA2_NWDESC")
  Local oLoja
  Local cLoja 		:= SF1->F1_LOJA
  Local oNF
  Local cNF 		:= SF1->F1_DOC
  Local oNFOri
  Local cNFOri 		:= Posicione("SD1",1,xFilial("SD1")+F1_DOC+F1_SERIE+F1_FORNECE+F1_LOJA,"D1_NFORI")
  Local oPesBru
  Local nPesBru 	:= SF2->F2_PBRUTO
  Local oQtdCx
  Local nQtdCx 		:= SF2->F2_VOLUME1
  Local oRazSoc
  Local cRazSoc 	:= Posicione("SA1",1,xFilial("SA1")+F1_FORNECE+F1_LOJA,"A1_NREDUZ")
  Local oSerNF
  Local cSerNF 		:= SF1->F1_SERIE
  Local oSerOri
  Local cSerOri 	:= Posicione("SD1",1,xFilial("SD1")+F1_DOC+F1_SERIE+F1_FORNECE+F1_LOJA,"D1_SERIORI")
  Local oVlrNF
  Local nVlrNF 		:= SF1->F1_VALBRUT
  Local lOk    		:= .F.
  Local cNum		:= GetSX8Num("ZA1","ZA1_NWCOD")
  Local cObserv		:= Space(80)
  Local oSay1
  Local oSay10
  Local oSay11
  Local oSay12
  Local oSay13
  Local oSay2
  Local oSay3
  Local oSay4
  Local oSay5
  Local oSay6
  Local oSay7
  Local oSay8
  Local oSay9
  Local oBtnOk
  Local oBtnCan
  Static oDlg

  DEFINE MSDIALOG oDlg TITLE "Motivação NF Devolução" FROM 000,000  TO 500,500 COLORS 0,16777215 PIXEL

    @013,011 SAY 	oSay1 	PROMPT "Serie" 			SIZE 045,011 OF oDlg COLORS 0,16777215 PIXEL
    @025,011 SAY 	oSay2 	PROMPT "NF" 			SIZE 045,011 OF oDlg COLORS 0,16777215 PIXEL
    @042,011 SAY 	oSay3 	PROMPT "Serie NF Orig" 	SIZE 045,011 OF oDlg COLORS 0,16777215 PIXEL
    @058,011 SAY 	oSay4 	PROMPT "NF Original" 	SIZE 045,011 OF oDlg COLORS 0,16777215 PIXEL
    @074,011 SAY 	oSay5 	PROMPT "Cliente" 		SIZE 045,011 OF oDlg COLORS 0,16777215 PIXEL
    @086,011 SAY 	oSay6 	PROMPT "Loja" 			SIZE 045,011 OF oDlg COLORS 0,16777215 PIXEL
    @102,011 SAY 	oSay7 	PROMPT "Razao Social" 	SIZE 045,011 OF oDlg COLORS 0,16777215 PIXEL
    @118,011 SAY 	oSay8 	PROMPT "Cod. Motivo" 	SIZE 045,011 OF oDlg COLORS 0,16777215 PIXEL
    @132,011 SAY 	oSay9 	PROMPT "Descr. Motivo" 	SIZE 045,011 OF oDlg COLORS 0,16777215 PIXEL
    @146,011 SAY 	oSay10 	PROMPT "Peso Bruto" 	SIZE 045,012 OF oDlg COLORS 0,16777215 PIXEL
    @158,011 SAY 	oSay11 	PROMPT "Qtd Caixas" 	SIZE 045,013 OF oDlg COLORS 0,16777215 PIXEL
    @173,011 SAY 	oSay12 	PROMPT "Valor NF" 		SIZE 045,010 OF oDlg COLORS 0,16777215 PIXEL
    @185,011 SAY 	oSay13 	PROMPT "Observação" 	SIZE 045,010 OF oDlg COLORS 0,16777215 PIXEL
    @013,058 MSGET 	oSerNF 		VAR cSerNF 			SIZE 016,010 OF oDlg COLORS 0,16777215 READONLY PIXEL
    @025,058 MSGET 	oNF 		VAR cNF 			SIZE 029,010 OF oDlg COLORS 0,16777215 READONLY PIXEL
    @042,058 MSGET 	oSerOri 	VAR cSerOri 		SIZE 016,010 OF oDlg COLORS 0,16777215 READONLY PIXEL
    @058,058 MSGET 	oNFOri 		VAR cNFOri 			SIZE 029,010 OF oDlg COLORS 0,16777215 READONLY PIXEL
    @074,058 MSGET 	oCliente 	VAR cCliente 		SIZE 023,010 OF oDlg COLORS 0,16777215 READONLY PIXEL
    @086,058 MSGET 	oLoja    	VAR cLoja 			SIZE 017,010 OF oDlg COLORS 0,16777215 READONLY PIXEL
    @102,058 MSGET 	oRazSoc  	VAR cRazSoc 		SIZE 183,010 OF oDlg COLORS 0,16777215 READONLY PIXEL
    @118,058 MSGET 	oCodMot  	VAR cCodMot 		SIZE 027,010 OF oDlg COLORS 0,16777215 F3 "ZA2150" PIXEL
    @132,058 MSGET 	oDescMot 	VAR cDescMot 		SIZE 183,010 OF oDlg COLORS 0,16777215 PIXEL
    @146,058 MSGET 	oPesBru  	VAR nPesBru 		SIZE 070,010 OF oDlg PICTURE "99999.99" 	COLORS 0,16777215 READONLY PIXEL
    @158,058 MSGET 	oQtdCx  	VAR nQtdCx 			SIZE 070,010 OF oDlg PICTURE "99999.99" 	COLORS 0,16777215 READONLY PIXEL
    @173,058 MSGET 	oVlrNF   	VAR nVlrNF 			SIZE 073,010 OF oDlg PICTURE "9999999.99" 	COLORS 0,16777215 READONLY PIXEL
    @185,058 MSGET 	oObserv  	VAR cObserv 		SIZE 188,010 OF oDlg COLORS 0,16777215 PIXEL

    DEFINE SBUTTON oBtnOk   FROM 205,077 TYPE 01 Action(lOk:=.T.,oDlg:End()) OF oDlg ENABLE
    DEFINE SBUTTON oBtnCan  FROM 205,140 TYPE 02 Action(lOk:=.F.,oDlg:End()) OF oDlg ENABLE

	oDlg:Refresh()    

  ACTIVATE MSDIALOG oDlg CENTERED
  
  	If lOk
		RecLock("ZA1",.T.)
			ZA1->ZA1_FILIAL	:= xFilial("ZA1")
			ZA1->ZA1_NWCOD	:= cNum
			ZA1->ZA1_NWDEVO := cNF
			ZA1->ZA1_NWSERD := cSerie
			ZA1->ZA1_NWCLIE := cCliente
			ZA1->ZA1_NWLOJA := cLoja
			ZA1->ZA1_NWNOME	:= cRazSoc
			ZA1->ZA1_NWNFOR	:= cNFOri
			ZA1->ZA1_NWSERO	:= cSerOri
			ZA1->ZA1_NWMOTI := cCodMot
			ZA1->ZA1_NWDESC	:= cDescMot
			ZA1->ZA1_NWRCLI	:= cObserv
			ZA1->ZA1_PESBRU	:= nPesBru
			ZA1->ZA1_QTDCX	:= nQtdCx
			ZA1->ZA1_VLRNF	:= nVlrNF
		MsUnlock()
	Else
		Alert("Cancelado pelo usuário!")
	EndIf

Return

No caso, que quando o usuário preenchesse o campo "Cod. Motivo", o campo "Descr. Motivo" fosse atualizado.


Alguém poderia me dar uma luz?

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 1 mês atrás #17673 por cintra_daniel
Ola Rafael!

Você pode usar a propriedade ON CHANGE ou VALID do campo "Cod. Motivo"
e chamar uma função que faça o preenchimento do campo "Descr. Motivo"
de acordo com o valor que for preenchido no "Cod. Motivo"...

Exemplo:

@ (nLinCB += nLinDif), nColCB MSGET oCodMot VAR cCodMot SIZE 060, 010 OF oDlg PIXEL VALID PreencheDescr(cCodMot)
@ (nLinCB += nLinDif), nColCB MSGET oDescMot VAR cDescMot SIZE 060, 010 OF oDlg PIXEL

Ai dentro da função:

Static Function PreencheDescr()

local cValor := ""

//Faça a consulta e preencha o valor dessa variável
com o que vc deseja preencher no campo.

cDescMot := cValor

oDescMot:Refresh()

Return

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 1 mês atrás #17679 por Rstrozi
Obrigado Daniel.

Havia pensado em utilizar uma função, só não tinha idéia de como. Já fiz isso utilizando um botão em uma outra rotina.

Tive que fazer algumas alterações, jogando algumas variáveis para tipo public.


Segue abaixo o resultado final:
Static Function NWMOTDEV()

  Local oCliente
  Local cCliente 	:= SF1->F1_FORNECE
  Local oCodMot
  Local cCodMot 	:= Space(6)
  Local oLoja
  Local cLoja 		:= SF1->F1_LOJA
  Local oNF
  Local cNF 		:= SF1->F1_DOC
  Local oNFOri
  Local cNFOri 		:= Posicione("SD1",1,xFilial("SD1")+F1_DOC+F1_SERIE+F1_FORNECE+F1_LOJA,"D1_NFORI")
  Local oPesBru
  Local nPesBru 	:= SF2->F2_PBRUTO
  Local oQtdCx
  Local nQtdCx 		:= SF2->F2_VOLUME1
  Local oRazSoc
  Local cRazSoc 	:= Posicione("SA1",1,xFilial("SA1")+F1_FORNECE+F1_LOJA,"A1_NREDUZ")
  Local oSerNF
  Local cSerNF 		:= SF1->F1_SERIE
  Local oSerOri
  Local cSerOri 	:= Posicione("SD1",1,xFilial("SD1")+F1_DOC+F1_SERIE+F1_FORNECE+F1_LOJA,"D1_SERIORI")
  Local oVlrNF
  Local nVlrNF 		:= SF1->F1_VALBRUT
  Local lOk    		:= .F.
  Local cNum		:= GetSX8Num("ZA1","ZA1_NWCOD")
  Local cObserv		:= Space(80)
  Local oSay1
  Local oSay10
  Local oSay11
  Local oSay12
  Local oSay13
  Local oSay2
  Local oSay3
  Local oSay4
  Local oSay5
  Local oSay6
  Local oSay7
  Local oSay8
  Local oSay9
  Local oBtnOk
  Local oBtnCan
  Public _oDescMot
  Public _cDescMot 	:= Space(240)
  Static oDlg

  DEFINE MSDIALOG oDlg TITLE "Motivação NF Devolução" FROM 000,000  TO 500,500 COLORS 0,16777215 PIXEL

    @013,011 SAY 	oSay1 	PROMPT "Serie" 			SIZE 045,011 OF oDlg COLORS 0,16777215 PIXEL
    @025,011 SAY 	oSay2 	PROMPT "NF" 			SIZE 045,011 OF oDlg COLORS 0,16777215 PIXEL
    @042,011 SAY 	oSay3 	PROMPT "Serie NF Orig" 	SIZE 045,011 OF oDlg COLORS 0,16777215 PIXEL
    @058,011 SAY 	oSay4 	PROMPT "NF Original" 	SIZE 045,011 OF oDlg COLORS 0,16777215 PIXEL
    @074,011 SAY 	oSay5 	PROMPT "Cliente" 		SIZE 045,011 OF oDlg COLORS 0,16777215 PIXEL
    @086,011 SAY 	oSay6 	PROMPT "Loja" 			SIZE 045,011 OF oDlg COLORS 0,16777215 PIXEL
    @102,011 SAY 	oSay7 	PROMPT "Razao Social" 	SIZE 045,011 OF oDlg COLORS 0,16777215 PIXEL
    @118,011 SAY 	oSay8 	PROMPT "Cod. Motivo" 	SIZE 045,011 OF oDlg COLORS 0,16777215 PIXEL
    @132,011 SAY 	oSay9 	PROMPT "Descr. Motivo" 	SIZE 045,011 OF oDlg COLORS 0,16777215 PIXEL
    @146,011 SAY 	oSay10 	PROMPT "Peso Bruto" 	SIZE 045,012 OF oDlg COLORS 0,16777215 PIXEL
    @158,011 SAY 	oSay11 	PROMPT "Qtd Caixas" 	SIZE 045,013 OF oDlg COLORS 0,16777215 PIXEL
    @173,011 SAY 	oSay12 	PROMPT "Valor NF" 		SIZE 045,010 OF oDlg COLORS 0,16777215 PIXEL
    @185,011 SAY 	oSay13 	PROMPT "Observação" 	SIZE 045,010 OF oDlg COLORS 0,16777215 PIXEL
    @013,058 MSGET 	oSerNF 		VAR cSerNF 			SIZE 016,010 OF oDlg COLORS 0,16777215 READONLY PIXEL
    @025,058 MSGET 	oNF 		VAR cNF 			SIZE 029,010 OF oDlg COLORS 0,16777215 READONLY PIXEL
    @042,058 MSGET 	oSerOri 	VAR cSerOri 		SIZE 016,010 OF oDlg COLORS 0,16777215 READONLY PIXEL
    @058,058 MSGET 	oNFOri 		VAR cNFOri 			SIZE 029,010 OF oDlg COLORS 0,16777215 READONLY PIXEL
    @074,058 MSGET 	oCliente 	VAR cCliente 		SIZE 023,010 OF oDlg COLORS 0,16777215 READONLY PIXEL
    @086,058 MSGET 	oLoja    	VAR cLoja 			SIZE 017,010 OF oDlg COLORS 0,16777215 READONLY PIXEL
    @102,058 MSGET 	oRazSoc  	VAR cRazSoc 		SIZE 183,010 OF oDlg COLORS 0,16777215 READONLY PIXEL
    @118,058 MSGET 	oCodMot  	VAR cCodMot 		SIZE 027,010 OF oDlg COLORS 0,16777215 F3 "ZA2150" PIXEL VALID PrDescr(cCodMot)
    @132,058 MSGET 	_oDescMot 	VAR _cDescMot 		SIZE 183,010 OF oDlg COLORS 0,16777215 READONLY PIXEL
    @146,058 MSGET 	oPesBru  	VAR nPesBru 		SIZE 070,010 OF oDlg PICTURE "99999.99" 	COLORS 0,16777215 READONLY PIXEL
    @158,058 MSGET 	oQtdCx  	VAR nQtdCx 			SIZE 070,010 OF oDlg PICTURE "99999.99" 	COLORS 0,16777215 READONLY PIXEL
    @173,058 MSGET 	oVlrNF   	VAR nVlrNF 			SIZE 073,010 OF oDlg PICTURE "9999999.99" 	COLORS 0,16777215 READONLY PIXEL
    @185,058 MSGET 	oObserv  	VAR cObserv 		SIZE 188,010 OF oDlg PICTURE "@!" 			COLORS 0,16777215 PIXEL

    DEFINE SBUTTON oBtnOk   FROM 205,077 TYPE 01 Action(lOk:=.T.,oDlg:End()) OF oDlg ENABLE
    DEFINE SBUTTON oBtnCan  FROM 205,140 TYPE 02 Action(lOk:=.F.,oDlg:End()) OF oDlg ENABLE

	oDlg:Refresh()    

  ACTIVATE MSDIALOG oDlg CENTERED
  
  	If lOk
		RecLock("ZA1",.T.)
			ZA1->ZA1_FILIAL	:= xFilial("ZA1")
			ZA1->ZA1_NWCOD	:= cNum
			ZA1->ZA1_NWDEVO := cNF
			ZA1->ZA1_NWSERD := cSerie
			ZA1->ZA1_NWCLIE := cCliente
			ZA1->ZA1_NWLOJA := cLoja
			ZA1->ZA1_NWNOME	:= cRazSoc
			ZA1->ZA1_NWNFOR	:= cNFOri
			ZA1->ZA1_NWSERO	:= cSerOri
			ZA1->ZA1_NWMOTI := cCodMot
			ZA1->ZA1_NWDESC	:= _cDescMot
			ZA1->ZA1_NWRCLI	:= cObserv
			ZA1->ZA1_PESBRU	:= nPesBru
			ZA1->ZA1_QTDCX	:= nQtdCx
			ZA1->ZA1_VLRNF	:= nVlrNF
		MsUnlock()
	Else
		Alert("Cancelado pelo usuário!")
	EndIf

Return
                                                                                                                   

Static Function PrDescr(cCodMot)
    
	Local cMot	:= cCodMot
	Local cDesc := Posicione("ZA2",1,xFilial("ZA2")+cMot,"ZA2_NWDESC")

	_cDescMot := cDesc

	_oDescMot:Refresh()

Return 


Esta rotina é parte do meu ponto de Entrada GQREENTR, na gravação da NF de entrada (MATA103), para que o usuário possa especificar o motivo de uma NF de Devolução.

Por favor Acessar ou Registrar para participar da conversa.

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