× Linguagem de Programação ADVPL

Perguntas Preenchimento automático do retorno da Consulta

Mais
10 anos 4 meses atrás #23652 por Mjuniorfacic
Boa tarde Galera,

Sou iniciante no ADVPL e estou com um duvida aqui mas sei que para vc sera facil, quem puder me ajudar agradeço.
Estou fazendo uma tela onde vou buscar uma NF-e de Entrada por uma Consulta Padrão "SF1-GA", Até ai sem problemas, me retorna o Numero da NF-e escolhida perfeitamente.
O problema que é preciso preencher os restantes dos campos da tela com o retorno e não consigo.
Ate já coloquei o TGET não deixando o usuário digitar.

Segue codigo e print da tela

User Function GACHVSF1

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Declaracao de Variaveis ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

Private cAlias1 := "QUERY1"
Private cQuery1 := ""
Private cPergs := "ENVXMLDAN"
Private aPergs := {}
Private cChv := SPACE(44)
Private cChv := Transform(cChv,"@R 9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999")
Private cNFe := SPACE(9)
Private cSerie := Space(3)
Private cCliFor := SPACE(50)
Private cCNPJ := SPACE(14)
Private dDTEmi := Date()
Private cEnde := SPACE(40)
Private cBair := SPACE(30)
Private cCEP := SPACE(8)
Private cMun := SPACE(40)
Private cUF := SPACE(2)
Private nCount := 0

_oDlg := MsDialog():New(153,180,430,695,OemToAnsi("Atualiza Chave da NF-e de Entrada - SF1"),,,,,,,,oMainWnd,.T.)
//NF-e
_oSay := TSay():New(007,010,{|| "NF-e / CTE / CTR:"},_oDlg,,advfont,,,,.T.)
_oGet := TGet():New(005,055,{|u| If(PCount()>0,cNFe:=u,cNFe)},_oDlg,095,010,,,,,,.F.,,.T.,,.F.,,.F.,.F.,,.F.,.F.,"SF1-GA",cNFe,,,,)
//Série
_oSay := TSay():New(007,160,{|| "Série:"},_oDlg,,advfont,,,,.T.)
_oGet := TGet():New(005,200,{|u| If(PCount()>0,cSerie:=u,cSerie)},_oDlg,050,010,,,,,,.F.,,.T.,,.F.,,.F.,.F.,,.T.,.F.,,cSerie,,,,)
//Cliente / Fornecedor da NF-e
_oSay := TSay():New(023,010,{|| "Cliente / Fornec.:"},_oDlg,,advfont,,,,.T.)
_oGet := TGet():New(021,055,{|u| If(PCount()>0,cCliFor:=u,cCliFor)},_oDlg,195,010,,,,,,.F.,,.T.,,.F.,,.F.,.F.,,.T.,.F.,,cCliFor,,,,)
//CNPJ
_oSay := TSay():New(039,010,{|| "CNPJ / CPF:"},_oDlg,,advfont,,,,.T.)
_oGet := TGet():New(037,055,{|u| If(PCount()>0,cCNPJ:=u,cCNPJ)},_oDlg,095,010,,,,,,.F.,,.T.,,.F.,,.F.,.F.,,.T.,.F.,,cCNPJ,,,,)
//Data de Emissao
_oSay := TSay():New(039,160,{|| "DT Emissao:"},_oDlg,,advfont,,,,.T.)
_oGet := TGet():New(037,200,{|u| If(PCount()>0,cNFe:=u,cNFe)},_oDlg,050,010,,,,,,.F.,,.T.,,.F.,,.F.,.F.,,.T.,.F.,,cNFe,,,,)
//Endereço
_oSay := TSay():New(055,010,{|| "Endereço:"},_oDlg,,advfont,,,,.T.)
_oGet := TGet():New(053,055,{|u| If(PCount()>0,cEnde:=u,cEnde)},_oDlg,195,010,,,,,,.F.,,.T.,,.F.,,.F.,.F.,,.T.,.F.,,cEnde,,,,)
//Bairro
_oSay := TSay():New(071,010,{|| "Bairro:"},_oDlg,,advfont,,,,.T.)
_oGet := TGet():New(069,055,{|u| If(PCount()>0,cBair:=u,cBair)},_oDlg,095,010,,,,,,.F.,,.T.,,.F.,,.F.,.F.,,.T.,.F.,,cBair,,,,)
//CEP
_oSay := TSay():New(071,160,{|| "CEP:"},_oDlg,,advfont,,,,.T.)
_oGet := TGet():New(069,200,{|u| If(PCount()>0,cCEP:=u,cCEP)},_oDlg,050,010,,,,,,.F.,,.T.,,.F.,,.F.,.F.,,.T.,.F.,,cCEP,,,,)
//Município
_oSay := TSay():New(087,010,{|| "Município:"},_oDlg,,advfont,,,,.T.)
_oGet := TGet():New(085,055,{|u| If(PCount()>0,cMun:=u,cMun)},_oDlg,095,010,,,,,,.F.,,.T.,,.F.,,.F.,.F.,,.T.,.F.,,cMun,,,,)
//Estado
_oSay := TSay():New(087,160,{|| "UF:"},_oDlg,,advfont,,,,.T.)
_oGet := TGet():New(085,200,{|u| If(PCount()>0,cUF:=u,cUF)},_oDlg,050,010,,,,,,.F.,,.T.,,.F.,,.F.,.F.,,.T.,.F.,,cUF,,,,)

_oSay := TSay():New(103,010,{|| "Chave da NF-e:"},_oDlg,,advfont,,,,.T.)
_oGet := TGet():New(101,055,{|u| If(PCount()>0,cChv:=u,cChv) },_oDlg,195,010,,,,,,.F.,,.T.,,.F.,,.F.,.F.,,.F.,.F.,,cChv,,,,)

oBtOK := TButton():New(119, 010,"Atualiza Chave",_oDlg,{|| Envia()},090,012,,advfont,,.T.)
oBtFim := TButton():New(119, 160,"Cancela" ,_oDlg,{|| _oDlg:End()} ,090,012,,advfont,,.T.)

ACTIVATE DIALOG _oDlg CENTERED

Return()


Aproveitando a pergunta:
Como faço para a Mascara da variável cChv ficar assim ao digitar ou coletar pelo leitor:
"@R 9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999")
Anexos:

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 4 meses atrás #23658 por davidjackpaiva
Boa Tarde Mauro, da uma olhada no arquivo prenotxml que esta aqui em downloads, pois ele tem exemplo de como trazer informações referente ao que foi selecionado no campo.

Se voce ja conhece a importação de xml daqui do site, vai ver que la parte de amarrar os produtos do fornecedor com os produtos da empresa, acho que server de exemplo e dentro da mesma fonte tem algo a respeito de codigo de barra.

Vou ver em casa e te falo.

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 4 meses atrás #23668 por davidjackpaiva
Olha o fonte, testei e esta preenchendo os campos, agora é so buscar os valores pelo posicione():


#INCLUDE "PROTHEUS.CH"

User Function GACHVSF1()

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Declaracao de Variaveis ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

Private cAlias1 := "QUERY1"
Private cQuery1 := ""
Private cPergs := "ENVXMLDAN"
Private aPergs := {}
Private cChv := SPACE(44)
Private cChv := Transform(cChv,"@R 9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999")//SPACE(54)
Private cNFe := SPACE(9)
Private cSerie := Space(3)
Private cCliFor := SPACE(50)
Private cCNPJ := SPACE(14)
Private dDTEmi := Date()
Private cEnde := SPACE(40)
Private cBair := SPACE(30)
Private cCEP := SPACE(8)
Private cMun := SPACE(40)
Private cUF := SPACE(2)
Private nCount := 0

_oDlg := MsDialog():New(153,180,430,695,OemToAnsi("Atualiza Chave da NF-e de Entrada - SF1"),,,,,,,,oMainWnd,.T.)
//NF-e
_oSay := TSay():New(007,010,{|| "NF-e / CTE / CTR:"},_oDlg,,advfont,,,,.T.)
_oGet := TGet():New(005,055,{|u| If(PCount()>0,cNFe:=u,cNFe)},_oDlg,095,010,,,,,,.F.,,.T.,,.F.,,.F.,.F.,,.F.,.F.,"SF1-GA",cNFe,,,,)
//AO SELECIONAR A NF EXECUTA A FUNÇÃO VALPROD()
_oGet:bLostFocus :={|| ValProd()}
//Série
_oSay := TSay():New(007,160,{|| "Série:"},_oDlg,,advfont,,,,.T.)
_oGet := TGet():New(005,200,{|u| If(PCount()>0,cSerie:=u,cSerie)},_oDlg,050,010,,,,,,.F.,,.T.,,.F.,,.F.,.F.,/*20*/,.T.,.F.,,cSerie,,,,)
//Cliente / Fornecedor da NF-e
_oSay := TSay():New(023,010,{|| "Cliente / Fornec.:"},_oDlg,,advfont,,,,.T.)
_oGet := TGet():New(021,055,{|u| If(PCount()>0,cCliFor:=u,cCliFor)},_oDlg,195,010,,,,,,.F.,,.T.,,.F.,,.F.,.F.,,.T.,.F.,,cCliFor,,,,)
//CNPJ
_oSay := TSay():New(039,010,{|| "CNPJ / CPF:"},_oDlg,,advfont,,,,.T.)
_oGet := TGet():New(037,055,{|u| If(PCount()>0,cCNPJ:=u,cCNPJ)},_oDlg,095,010,,,,,,.F.,,.T.,,.F.,,.F.,.F.,,.T.,.F.,,cCNPJ,,,,)
//Data de Emissao
_oSay := TSay():New(039,160,{|| "DT Emissao:"},_oDlg,,advfont,,,,.T.)
_oGet := TGet():New(037,200,{|u| If(PCount()>0,cNFe:=u,cNFe)},_oDlg,050,010,,,,,,.F.,,.T.,,.F.,,.F.,.F.,,.T.,.F.,,cNFe,,,,)
//Endereço
_oSay := TSay():New(055,010,{|| "Endereço:"},_oDlg,,advfont,,,,.T.)
_oGet := TGet():New(053,055,{|u| If(PCount()>0,cEnde:=u,cEnde)},_oDlg,195,010,,,,,,.F.,,.T.,,.F.,,.F.,.F.,,.T.,.F.,,cEnde,,,,)
//Bairro
_oSay := TSay():New(071,010,{|| "Bairro:"},_oDlg,,advfont,,,,.T.)
_oGet := TGet():New(069,055,{|u| If(PCount()>0,cBair:=u,cBair)},_oDlg,095,010,,,,,,.F.,,.T.,,.F.,,.F.,.F.,,.T.,.F.,,cBair,,,,)
//CEP
_oSay := TSay():New(071,160,{|| "CEP:"},_oDlg,,advfont,,,,.T.)
_oGet := TGet():New(069,200,{|u| If(PCount()>0,cCEP:=u,cCEP)},_oDlg,050,010,,,,,,.F.,,.T.,,.F.,,.F.,.F.,,.T.,.F.,,cCEP,,,,)
//Município
_oSay := TSay():New(087,010,{|| "Município:"},_oDlg,,advfont,,,,.T.)
_oGet := TGet():New(085,055,{|u| If(PCount()>0,cMun:=u,cMun)},_oDlg,095,010,,,,,,.F.,,.T.,,.F.,,.F.,.F.,,.T.,.F.,,cMun,,,,)
//Estado
_oSay := TSay():New(087,160,{|| "UF:"},_oDlg,,advfont,,,,.T.)
_oGet := TGet():New(085,200,{|u| If(PCount()>0,cUF:=u,cUF)},_oDlg,050,010,,,,,,.F.,,.T.,,.F.,,.F.,.F.,,.T.,.F.,,cUF,,,,)

_oSay := TSay():New(103,010,{|| "Chave da NF-e:"},_oDlg,,advfont,,,,.T.)
_oGet := TGet():New(101,055,{|u| If(PCount()>0,cChv:=u,cChv) },_oDlg,195,010,,,,,,.F.,,.T.,,.F.,,.F.,.F.,,.F.,.F.,,cChv,,,,)

oBtOK := TButton():New(119, 010,"Atualiza Chave",_oDlg,{|| Envia()},090,012,,advfont,,.T.)
oBtFim := TButton():New(119, 160,"Cancela" ,_oDlg,{|| _oDlg:End()} ,090,012,,advfont,,.T.)

ACTIVATE DIALOG _oDlg CENTERED

Return()

Static Function ValProd()

//ATUALIZA AS VARIAVEIS

//utilizar o Posicione() para trazer as informações
cCliFor := "NOME DO CLIENTE"
cSerie := "1"
cCNPJ := "123456000199"

Return

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 4 meses atrás #23709 por jbpc2001
Abra uma consulta padrão ja existente, e veja que você pode definir varios retornos.

Ou seja, inclua na sua consulta padrão os campos que desejar, eles devem ser incluidos na mesma ordem que aparecem na sua tela.

Veja por exemplo a Consulta SA1, ela retorna: SA1->A1_COD, e SA1->A1_LOJA.

Mas pelo que vi, talvez isso resolva o seu problema:

tdn.totvs.com.br/display/public/mp/Consu...have+de+CTe+na+Sefaz

Caso não resolva, lembre-se que a informação da chave não fica somente na SF1

Por favor Acessar ou Registrar para participar da conversa.

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