× Linguagem de Programação ADVPL

Perguntas Declaração de função com parâmetros

Mais
9 anos 11 meses atrás #23248 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

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 11 meses atrás #23250 por inocenciojr
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

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 11 meses atrás #23252 por inocenciojr
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 "!"

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 11 meses atrás #23256 por kanaamlrr
Exatamente, o problema está no "!="
é só trocar por "!"

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 11 meses atrás #23272 por so-bmoraes
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.

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 11 meses atrás #23280 por kanaamlrr
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.

Por favor Acessar ou Registrar para participar da conversa.

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