- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Declaração de função com parâmetros
×
Linguagem de Programação ADVPL
Perguntas Declaração de função com parâmetros
- so-bmoraes
- Autor do Tópico
- Desconectado
- Membro Sénior
Menos
Mais
- Postagens: 57
- Obrigados Recebidos: 0
10 anos 5 meses atrás #23248
por so-bmoraes
Declaração de função com parâmetros foi criado por so-bmoraes
Bom dia pessoal,
Sabem me dizer se, no ADVPL eu posso declarar uma user function com passagem de parâmetros?
Estou tentando criar a função com o código abaixo, para ser usada no FT_FORMULA, porém, dá erro de sintaxe na linha da declaração da função. Se alguém tiver alguma dica do que pode estar acontecendo, ou até uma forma melhor de fazer isso, agradeço.
#INCLUDE "rwmake.ch"
#INCLUDE "TOPCONN.CH"
User Function FormulaC195(cFilial, cTipoMov, cSerie, cNFiscal, cClieFor, cLoja)
Local cMsg := ""
Local _aGetArea := GetArea()
Local cQuery1 := ""
cQuery1 := "SELECT SUM(FT_VALIPI) AS IPI, SUM(FT_ICMSRET) AS ICM "
cQuery1 += "FROM DB2ADMIN." + RestSqlName("SFT") + " SFT "
cQuery1 += "WHERE FT_FILIAL = '" + cFilial + "' "
cQuery1 += "AND FT_TIPOMOV = '" + cTipoMov + "' "
cQuery1 += "AND FT_SERIE = '" + cSerie + "' "
cQuery1 += "AND FT_NFISCAL = '" + cNFiscal + "' "
cQuery1 += "AND FT_CLIEFOR = '" + cClieFor + "' "
cQuery1 += "AND FT_LOJA = '" + cLoja + "' "
cQuery1 += "AND D_E_L_E_T_=' ' "
cQuery1 += "GROUP BY "
cQuery1 += "FT_FILIAL, FT_TIPOMOV, FT_SERIE, FT_NFISCAL, FT_CLIEFOR, FT_LOJA "
TCQUERY cQuery1 NEW ALIAS "QRY"
dbSelectArea( "QRY" )
QRY->( DBGOTOP() )
If != ( QRY->BOF() .AND. QRY->EOF() )
If QRY->IPI > 0
cMsg := IPI: R$ " + LTrim( Str( QRY->IPI,15,2 ) ) + " / "
EndIf
If QRY->ICM > 0
cMsg := ICMS-ST: R$ " + LTrim( Str( QRY->ICM,15,2 ) ) + " / "
EndIf
If Len( cMsg ) > 0
cMsg := Left( cMsg, Len( cMsg )-3 )
EndIf
EndIf
Sabem me dizer se, no ADVPL eu posso declarar uma user function com passagem de parâmetros?
Estou tentando criar a função com o código abaixo, para ser usada no FT_FORMULA, porém, dá erro de sintaxe na linha da declaração da função. Se alguém tiver alguma dica do que pode estar acontecendo, ou até uma forma melhor de fazer isso, agradeço.
#INCLUDE "rwmake.ch"
#INCLUDE "TOPCONN.CH"
User Function FormulaC195(cFilial, cTipoMov, cSerie, cNFiscal, cClieFor, cLoja)
Local cMsg := ""
Local _aGetArea := GetArea()
Local cQuery1 := ""
cQuery1 := "SELECT SUM(FT_VALIPI) AS IPI, SUM(FT_ICMSRET) AS ICM "
cQuery1 += "FROM DB2ADMIN." + RestSqlName("SFT") + " SFT "
cQuery1 += "WHERE FT_FILIAL = '" + cFilial + "' "
cQuery1 += "AND FT_TIPOMOV = '" + cTipoMov + "' "
cQuery1 += "AND FT_SERIE = '" + cSerie + "' "
cQuery1 += "AND FT_NFISCAL = '" + cNFiscal + "' "
cQuery1 += "AND FT_CLIEFOR = '" + cClieFor + "' "
cQuery1 += "AND FT_LOJA = '" + cLoja + "' "
cQuery1 += "AND D_E_L_E_T_=' ' "
cQuery1 += "GROUP BY "
cQuery1 += "FT_FILIAL, FT_TIPOMOV, FT_SERIE, FT_NFISCAL, FT_CLIEFOR, FT_LOJA "
TCQUERY cQuery1 NEW ALIAS "QRY"
dbSelectArea( "QRY" )
QRY->( DBGOTOP() )
If != ( QRY->BOF() .AND. QRY->EOF() )
If QRY->IPI > 0
cMsg := IPI: R$ " + LTrim( Str( QRY->IPI,15,2 ) ) + " / "
EndIf
If QRY->ICM > 0
cMsg := ICMS-ST: R$ " + LTrim( Str( QRY->ICM,15,2 ) ) + " / "
EndIf
If Len( cMsg ) > 0
cMsg := Left( cMsg, Len( cMsg )-3 )
EndIf
EndIf
Por favor Acessar ou Registrar para participar da conversa.
- inocenciojr
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 114
- Obrigados Recebidos: 1
10 anos 5 meses atrás #23250
por inocenciojr
Respondido por inocenciojr no tópico Declaração de função com parâmetros
Bom dia Sofia,
É possível sim, tanto que o próprio fonte da Danfe começa assim:
User Function PrtNfeSef(cIdEnt,cVal1,cVal2,oDanfe,oSetup,cFilePrint)
Acredito que possa estar faltando algum include e por isso tá dando erro. (Vivo me matando pra descobrir o que são esses erros de sintaxe que dão)
Tenta colocar o Protheus.ch pra ver se vai
É possível sim, tanto que o próprio fonte da Danfe começa assim:
User Function PrtNfeSef(cIdEnt,cVal1,cVal2,oDanfe,oSetup,cFilePrint)
Acredito que possa estar faltando algum include e por isso tá dando erro. (Vivo me matando pra descobrir o que são esses erros de sintaxe que dão)
Tenta colocar o Protheus.ch pra ver se vai
Por favor Acessar ou Registrar para participar da conversa.
- inocenciojr
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 114
- Obrigados Recebidos: 1
10 anos 5 meses atrás #23252
por inocenciojr
Respondido por inocenciojr no tópico Declaração de função com parâmetros
Sofia,
Esquece o que eu falei sobre o Include.
O que está dando erro é a variável cFilial. Renomeia ela que ele passa o erro.
Porém ele está dando erro de sintaxe aqui agora:
If != ( QRY->BOF() .AND. QRY->EOF() )
E ainda não consegui descobrir como corrigir esse (E acredito que o "!=" esteja errado, não é? O correto não seria apenas "!"
Esquece o que eu falei sobre o Include.
O que está dando erro é a variável cFilial. Renomeia ela que ele passa o erro.
Porém ele está dando erro de sintaxe aqui agora:
If != ( QRY->BOF() .AND. QRY->EOF() )
E ainda não consegui descobrir como corrigir esse (E acredito que o "!=" esteja errado, não é? O correto não seria apenas "!"
Por favor Acessar ou Registrar para participar da conversa.
- kanaamlrr
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 1576
- Obrigados Recebidos: 4
- so-bmoraes
- Autor do Tópico
- Desconectado
- Membro Sénior
Menos
Mais
- Postagens: 57
- Obrigados Recebidos: 0
10 anos 5 meses atrás #23272
por so-bmoraes
Respondido por so-bmoraes no tópico Declaração de função com parâmetros
Bom dia pessoal,
Além do erro do "!=", eu precisei trocar o nome dos parâmetros.
Acredito que cFilial, cTipomov, etc... são variáveis já utilizadas no sistema...
Valeu pessoal!
Aproveitando, estou utilizando os campos F4_FORMULA / FT_FORMULA para gerar o registro C195 do SPEDFISCAL.
Minha dúvida é se estes campos são utilizados para outras situações, ou que possam afetar outras operações.
Alguém se habilita? rs
Obrigada.
Além do erro do "!=", eu precisei trocar o nome dos parâmetros.
Acredito que cFilial, cTipomov, etc... são variáveis já utilizadas no sistema...
Valeu pessoal!
Aproveitando, estou utilizando os campos F4_FORMULA / FT_FORMULA para gerar o registro C195 do SPEDFISCAL.
Minha dúvida é se estes campos são utilizados para outras situações, ou que possam afetar outras operações.
Alguém se habilita? rs
Obrigada.
Por favor Acessar ou Registrar para participar da conversa.
- kanaamlrr
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 1576
- Obrigados Recebidos: 4
10 anos 5 meses atrás #23280
por kanaamlrr
Respondido por kanaamlrr no tópico Declaração de função com parâmetros
Que eu saiba o F4_FORMULA serve para levar o texto de complemento de ICMS ST para os livros fiscais.
Pelo menos aqui só utilizamos para isso.
Pelo menos aqui só utilizamos para isso.
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Declaração de função com parâmetros
Tempo para a criação da página:0.124 segundos