Advpl - Código Expresso https://codigoexpresso.com Código Expresso Sat, 12 Jul 2025 20:16:51 +0000 pt-BR hourly 1 https://wordpress.org/?v=6.8.2 https://codigoexpresso.com/wp-content/uploads/2025/06/cropped-logo_codigo-expresso-32x32.png Advpl - Código Expresso https://codigoexpresso.com 32 32 244947812 Abertura de ambiente com RpcSetEnv() https://codigoexpresso.com/2025/07/12/abertura-de-ambiente-com-rpcsetenv/?utm_source=rss&utm_medium=rss&utm_campaign=abertura-de-ambiente-com-rpcsetenv https://codigoexpresso.com/2025/07/12/abertura-de-ambiente-com-rpcsetenv/#respond Sat, 12 Jul 2025 17:00:02 +0000 https://demo.mekshq.com/vlog/dc/?p=143  A função RpcSetEnv é utilizada para abertura de ambiente em rotinas automáticas, permitindo definir a empresa e filial no qual desejamos fazer a inicialização do ambiente, especificando o usuário e senha para determinar os direitos e ações a serem realizadas. É possível também especificar quais as tabelas que serão abertas para uso no ambiente e qual módulo será utilizado.

The post Abertura de ambiente com RpcSetEnv() first appeared on Código Expresso.

]]>
 A função RpcSetEnv é utilizada para abertura de ambiente em rotinas automáticas, permitindo definir a empresa e filial no qual desejamos fazer a inicialização do ambiente, especificando o usuário e senha para determinar os direitos e ações a serem realizadas. É possível também especificar quais as tabelas que serão abertas para uso no ambiente e qual módulo será utilizado.

Sintaxe:

RpcSetEnv( [ cRpcEmp ] [ cRpcFil ] [ cEnvUser ] [ cEnvPass ] [ cEnvMod ] [ cFunName ] [ aTables ] [ lShowFinal ] [ lAbend ] [ lOpenSX ] [ lConnect ] ) → lRet

Retorno:

lRet → Logical, Retorna .T. se abriu corretamente o ambiente com a empresa e filial. Se .F. não conseguiu abrir o ambiente.

Parâmetros:

NomeTipoDescriçãoDefaultObrigatório
cRpcEmpCaracter
Código da empresa.
cRpcFilCaracterCódigo da filial.
cEnvUserCaracterNome do usuário.
cEnvPassCaracterSenha do usuário.
cEnvModCaracterCódigo do módulo.
cFunNameCaracterNome da rotina que será setada para retorno da função FunName(). É também utilizado na gravação da rotina que executou as inclusões/alterações na tabela de auditoria
aTablesArrayArray contendo as tabelas a serem abertas.‘RPC’
lShowFinalLogicalAlimenta a variável publica lMsFinalAuto..F.
lAbendLogicalSe .T., gera mensagem de erro ao ocorrer erro ao checar a licença para a estação..T.
lOpenSXLogicalSE .T. pega a primeira filial do arquivo SM0 quando não passar a filial e realiza a abertura dos SXs..T.
lConnectLogicalSe .T., faz a abertura da conexão com servidor As400, SQL Server etc..T.

Exemplo:

User Function fSetEnv()
Local aTables as array
 
aTables := {"CT1","CT2","CT3","CT4","CT5","CTF","CTE"}
 
//seta o ambiente com a empresa 99 filial 01 com os direitos do usuário administrador, módulo CTB
RpcSetEnv( "99","01", "Administrador", " ", "CTB", "CTBA102", aTables, , , ,  )
 
/************* Processamentos *************/
 
RpcClearEnv() //Encerra o ambiente, fechando as devidas conexões

Return Nil

O ambiente não deve ser inicializado ou encerrado em rotinas de menu do Protheus, o Protheus já entrega o ambiente aberto e preparado para a correta execução da rotina, caso o ambiente seja aberto ou fechado em rotinas de menu erros diversos podem ocorrer.

Essa situação também ocorrer para schedule (exceção para processo especial) e para REST quando já configurado com PrepareIn.

The post Abertura de ambiente com RpcSetEnv() first appeared on Código Expresso.

]]>
https://codigoexpresso.com/2025/07/12/abertura-de-ambiente-com-rpcsetenv/feed/ 0 143
Pontos de Entrada do Faturamento – Protheus https://codigoexpresso.com/2025/07/06/pontos-de-entrada-do-faturamento-protheus/?utm_source=rss&utm_medium=rss&utm_campaign=pontos-de-entrada-do-faturamento-protheus https://codigoexpresso.com/2025/07/06/pontos-de-entrada-do-faturamento-protheus/#respond Sun, 06 Jul 2025 08:00:49 +0000 https://demo.mekshq.com/vlog/dc/?p=133 Em ADVPL, para preparar um documento de saída no Protheus (rotinas MATA460 e MATA461), existem pontos de entrada específicos para customizar o processo antes da geração da nota fiscal. Estes pontos de entrada permitem modificar a lógica padrão do sistema, validando dados, manipulando informações e adicionando funcionalidades conforme a necessidade da empresa.  Pontos de Entrada Relevantes:

The post Pontos de Entrada do Faturamento – Protheus first appeared on Código Expresso.

]]>
Em ADVPL, para preparar um documento de saída no Protheus (rotinas MATA460 e MATA461), existem pontos de entrada específicos para customizar o processo antes da geração da nota fiscal. Estes pontos de entrada permitem modificar a lógica padrão do sistema, validando dados, manipulando informações e adicionando funcionalidades conforme a necessidade da empresa. 

Pontos de Entrada Relevantes:

  • M460MARK: Valida os pedidos marcados para geração de notas fiscais, localizado no início da função a460Nota
  • M410PVNF: Localizado na opção “Outras Ações -> Prep Doc. Saída” no pedido de venda. 
  • SX5NOTA: Utilizado para controlar a visibilidade de tabelas SX5 por filial, ideal para restringir o acesso a séries de notas fiscais. 
  • CHGX5FIL: Permite o uso de tabelas 01 exclusivas em um SX5 compartilhado. 
  • F040FRT: Manipula as filiais no cálculo de impostos. 
  • F440COM: Calcula comissões para títulos de adiantamento. 
  • M460FIM: Gravação dos dados após gerar NF de Saída e o titulo financeiro.

The post Pontos de Entrada do Faturamento – Protheus first appeared on Código Expresso.

]]>
https://codigoexpresso.com/2025/07/06/pontos-de-entrada-do-faturamento-protheus/feed/ 0 133
Buscando o nome do ambiente com GetEnvServer( ) – Advpl https://codigoexpresso.com/2025/07/02/buscandoo-o-nome-do-ambiente-com-getenvserver-advpl/?utm_source=rss&utm_medium=rss&utm_campaign=buscandoo-o-nome-do-ambiente-com-getenvserver-advpl https://codigoexpresso.com/2025/07/02/buscandoo-o-nome-do-ambiente-com-getenvserver-advpl/#respond Wed, 02 Jul 2025 09:00:36 +0000 https://demo.mekshq.com/vlog/dc/?p=126  A função GetEnvServer( ) retorna o nome do ambiente (environment) onde esta sendo executado a rotina. Ela traz o nome do ambiente configurada no Ini do appserver.

The post Buscando o nome do ambiente com GetEnvServer( ) – Advpl first appeared on Código Expresso.

]]>
 A função GetEnvServer( ) retorna o nome do ambiente (environment) onde esta sendo executado a rotina. Ela traz o nome do ambiente configurada no Ini do appserver daquele ambiente logado.

Exemplo:

User Function fNomeAmb()
    Local aArea      := FWGetArea()
    Local cMensagem  := ""
 
    //Busca a informação e exibe
    cMensagem := "O nome do ambiente que esta rodando o sistema é: " + GetEnvServer()
    FWAlertInfo(cMensagem, "Teste GetEnvServer")
 
    FWRestArea(aArea)
Return

The post Buscando o nome do ambiente com GetEnvServer( ) – Advpl first appeared on Código Expresso.

]]>
https://codigoexpresso.com/2025/07/02/buscandoo-o-nome-do-ambiente-com-getenvserver-advpl/feed/ 0 126
Buscando informações da Empresa (SM0) com FWSM0Util https://codigoexpresso.com/2025/07/02/buscando-informacoes-da-empresa-sm0-com-fwsm0util/?utm_source=rss&utm_medium=rss&utm_campaign=buscando-informacoes-da-empresa-sm0-com-fwsm0util https://codigoexpresso.com/2025/07/02/buscando-informacoes-da-empresa-sm0-com-fwsm0util/#respond Wed, 02 Jul 2025 08:00:02 +0000 https://demo.mekshq.com/vlog/dc/?p=165 Energistically foster principle-centered web-readiness whereas wireless technology. Competently visualize value-added metrics rather than covalent methodologies. Synergistically orchestrate end-to-end systems before cost effective opportunities. Efficiently recaptiualize reliable.

The post Buscando informações da Empresa (SM0) com FWSM0Util first appeared on Código Expresso.

]]>
A tabela SM0 armazena informações relacionadas às filiais da empresa do ERP TOTVs Protheus. Ela funciona como um cadastro de filiais, onde são armazenados dados como endereço, CNPJ, inscrição estadual, entre outras informações relevantes para cada filial.

Atualmente, com o dicionário de dados migrado para dentro do banco de dados, esses dados não devem mais ser acessados diretamente, sendo disponibilizadas funções para esse isso.

A classe FWSM0Util possui o método GetSM0Data() onde é possível informar o código da empresa, o código da filial e quais campos você deseja buscar a informação. A função retorna um array com os campos informados.

No exemplo abaixo é mostrado como recuperar o Nome, CNPJ/CPF e Cidade do cadastro da filial 01 da Empresa 99 de teste:

User Function fBuscaSM0()
Local aFieldSM0 := { ;
    "M0_CODIGO",;    //Posição [1]
    "M0_CODFIL",;    //Posição [2]
    "M0_NOMECOM",;   //Posição [3]
    "M0_CGC",;       //Posição [4]
    "M0_INSCM",;     //Posição [5]
    "M0_CIDENT",;    //Posição [6]
    "M0_ESTENT",;    //Posição [7]
    "M0_ENDENT",;    //Posição [8]
    "M0_BAIRENT",;   //Posição [9]
    "M0_CEPENT",;    //Posição [10]
    "M0_COMPENT",;   //Posição [11]
    "M0_TEL";        //Posição [12]
}
Local aSM0Data2 := {}

aSM0Data2 := FWSM0Util():GetSM0Data("99", "01", aFieldSM0)
If Len(aSM0Data2) > 0
    Alert(aSM0Data2[3][2]) //M0_NOMECOM
    Alert(aSM0Data2[4][2]) //M0_CGC
    Alert(aSM0Data2[6][2]) //M0_CIDENT
EndIf

Return 

Outra forma de utilização é mostrada no exemplo abaixo, onde a função retorna todos os campos presentes na SM0 daquela filial:

User Function f2BuscaSM0()
Local aSM0Data2 := {}
aSM0Data2 := FWSM0Util():GetSM0Data("99", "01")

Return 

The post Buscando informações da Empresa (SM0) com FWSM0Util first appeared on Código Expresso.

]]>
https://codigoexpresso.com/2025/07/02/buscando-informacoes-da-empresa-sm0-com-fwsm0util/feed/ 0 165
FWRest – Advpl https://codigoexpresso.com/2025/06/30/fwrest-metodo-post-com-url-https/?utm_source=rss&utm_medium=rss&utm_campaign=fwrest-metodo-post-com-url-https https://codigoexpresso.com/2025/06/30/fwrest-metodo-post-com-url-https/#respond Mon, 30 Jun 2025 20:00:39 +0000 https://demo.mekshq.com/vlog/dc/?p=124 FWRest() é uma classe Client para consumir uma API ou webservice REST.

The post FWRest – Advpl first appeared on Código Expresso.

]]>
FWRest() é uma classe Client para consumir uma API ou webservice REST.

The post FWRest – Advpl first appeared on Código Expresso.

]]>
https://codigoexpresso.com/2025/06/30/fwrest-metodo-post-com-url-https/feed/ 0 124
Primeiros passos com PO-UI – TOTVS https://codigoexpresso.com/2025/06/24/primeiros-passos-com-po-ui-totvs/?utm_source=rss&utm_medium=rss&utm_campaign=primeiros-passos-com-po-ui-totvs https://codigoexpresso.com/2025/06/24/primeiros-passos-com-po-ui-totvs/#respond Tue, 24 Jun 2025 09:00:12 +0000 https://demo.mekshq.com/vlog/dc/?p=137 Nos dias 25 e 26 de junho de 2019 durante o Universo TOTVS, aconteceu um marco histórico do TOTVS HTML FRAMEWORK, onde passamos a ter uma nova identidade visual para nossa biblioteca e também, um novo nome: PO UI, se tornando uma biblioteca open-source com licença MIT. PO-UI foi criado com o Angular (Node Js), utilizando Portinari, oque originou […]

The post Primeiros passos com PO-UI – TOTVS first appeared on Código Expresso.

]]>
Nos dias 25 e 26 de junho de 2019 durante o Universo TOTVS, aconteceu um marco histórico do TOTVS HTML FRAMEWORK, onde passamos a ter uma nova identidade visual para nossa biblioteca e também, um novo nome: PO UI, se tornando uma biblioteca open-source com licença MIT.

PO-UI foi criado com o Angular (Node Js), utilizando Portinari, oque originou a primeira parte de sua nomenclatura.

Pode ser aberta dentro do navegador WEB, ou dentro do Protheus.

Globally orchestrate distributed outsourcing before interoperable imperatives. Objectively incubate front-end methodologies for vertical products.

Assertively provide access to robust collaboration and idea-sharing with high-quality markets. Synergistically grow principle-centered convergence through stand-alone partnerships. Interactively repurpose cross-platform content vis-a-vis customized information.

Professionally evisculate vertical content via functional products. Competently visualize low-risk high-yield convergence after end-to-end opportunities. Distinctively orchestrate emerging markets with resource sucking intellectual capital. Continually seize innovative bandwidth after high-payoff experiences. Intrinsicly procrastinate an expanded array of total linkage via bleeding-edge products.

Competently brand just in time vortals and multimedia based strategic theme areas. Conveniently disintermediate e-business customer service and top-line synergy. Phosfluorescently reinvent effective leadership after team building materials. Quickly streamline go forward web-readiness via out-of-the-box supply.

Fontes: https://thf.totvs.com.br

The post Primeiros passos com PO-UI – TOTVS first appeared on Código Expresso.

]]>
https://codigoexpresso.com/2025/06/24/primeiros-passos-com-po-ui-totvs/feed/ 0 137
Pré-visualização do DANFE – PRE-DANFE https://codigoexpresso.com/2025/06/19/pre-visualizacao-do-danfe-pre-danfe/?utm_source=rss&utm_medium=rss&utm_campaign=pre-visualizacao-do-danfe-pre-danfe https://codigoexpresso.com/2025/06/19/pre-visualizacao-do-danfe-pre-danfe/#respond Thu, 19 Jun 2025 12:00:07 +0000 https://demo.mekshq.com/vlog/dc/?p=140 Evite problemas ao emitir sua NF-e com o recurso de Pré-visualização do DANFE. Essa funcionalidade permite validar todas as informações antes da emissão, garantindo mais segurança e organização no processo.

Com a pré-visualização, você pode revisar os dados do documento sem comprometer seu fluxo, evitando retrabalhos ou erros que poderiam impactar o atendimento ao cliente.

The post Pré-visualização do DANFE – PRE-DANFE first appeared on Código Expresso.

]]>
Evite problemas ao emitir sua NF-e com o recurso de Pré-visualização do DANFE. Essa funcionalidade permite validar todas as informações antes da emissão, garantindo mais segurança e organização no processo.

Com a pré-visualização, você pode revisar os dados do documento sem comprometer seu fluxo, evitando retrabalhos ou erros que poderiam impactar o atendimento ao cliente.

O Pré-DANFE é um facilitador para validação e não possui valor fiscal. ela permite a validação das informações da nota fiscal de forma visual, permitindo correções antes da transmissão da nota para a SEFAZ, evitando assim cancelamentos para correções.

Criamos essa customização para o ERP TOTVs Protheus, sendo possivel a impressão da visualização do Pré-DANFE dentro do Pedido de Vendas.

Entre em contato pra mais informações e solicitar uma demo de teste, ou nos envie um e-mail para contato: contato@codigoexpresso.com

The post Pré-visualização do DANFE – PRE-DANFE first appeared on Código Expresso.

]]>
https://codigoexpresso.com/2025/06/19/pre-visualizacao-do-danfe-pre-danfe/feed/ 0 140
Lançamento de Exceção com UserException – ADVPL https://codigoexpresso.com/2025/06/18/lancamento_de_excecao_com_userexception_advpl/?utm_source=rss&utm_medium=rss&utm_campaign=lancamento_de_excecao_com_userexception_advpl https://codigoexpresso.com/2025/06/18/lancamento_de_excecao_com_userexception_advpl/#respond Wed, 18 Jun 2025 08:00:52 +0000 https://demo.mekshq.com/vlog/dc/?p=156 Esse recurso é utilizado na linguagem ADVPL para forçar um erro de usuário, essa função recebe uma string com a descrição do erro que será apresentado de acordo com o ambiente onde está executando. Sintaxe: Parâmetros: Nome Tipo Descrição Obrigatório Referência cDescricao caractere caractere x Exemplo do uso:

The post Lançamento de Exceção com UserException – ADVPL first appeared on Código Expresso.

]]>
Esse recurso é utilizado na linguagem ADVPL para forçar um erro de usuário, essa função recebe uma string com a descrição do erro que será apresentado de acordo com o ambiente onde está executando.

Sintaxe:

UserException( [ cDescricao ] )

Parâmetros:

NomeTipoDescriçãoObrigatórioReferência
cDescricaocaracterecaracterex

Exemplo do uso:

User Function fExemplo()
  Local lcond := .F.
  If lCond
    Conout("Processando...")
  Else
    UserException("Força um erro")
  EndIf
Return

The post Lançamento de Exceção com UserException – ADVPL first appeared on Código Expresso.

]]>
https://codigoexpresso.com/2025/06/18/lancamento_de_excecao_com_userexception_advpl/feed/ 0 156
Tudo sobre Parambox – ADVPL https://codigoexpresso.com/2025/06/17/tudo-sobre-parambox-advpl/?utm_source=rss&utm_medium=rss&utm_campaign=tudo-sobre-parambox-advpl https://codigoexpresso.com/2025/06/17/tudo-sobre-parambox-advpl/#respond Tue, 17 Jun 2025 14:00:45 +0000 https://demo.mekshq.com/vlog/dc/?p=77 O Parambox é uma funcionalidade da linguagem ADVPL, que permite criar uma tela interativa para o usuário com parâmetros para preenchimento de dados, substituindo o uso do Grupo de Perguntas da SX1 em rotinas que usam parâmetros informados pelo usuario.

The post Tudo sobre Parambox – ADVPL first appeared on Código Expresso.

]]>
O Parambox é uma funcionalidade da linguagem ADVPL, que permite criar uma tela interativa para o usuário com parâmetros para preenchimento de dados, substituindo o uso do Grupo de Perguntas da SX1 em rotinas que usam parâmetros informados pelo usuario.

Segue abaixo um exemplo do seu uso:

User Function fParamBox()

Local aPergs   := {}
Local cArquivo := Space(100)
Local cProdDe  := Space(TamSX3("B1_COD")[01])
Local cProdAt  := Space(TamSX3("B1_COD")[01])
 
aAdd(aPergs, {1, "Arquivo",     cArquivo, "", ".T.", "",    ".T.", 120, .T.})
aAdd(aPergs, {1, "Produto De",  cProdDe,  "", ".T.", "SB1", ".T.", 80,  .F.})
aAdd(aPergs, {1, "Produto Até", cProdAt,  "", ".T.", "SB1", ".T.", 80,  .T.})
 
If ParamBox(aPergs, "Informe os parâmetros")
    Alert(MV_PAR01)
    Alert(MV_PAR02)
    Alert(MV_PAR03)
EndIf

Return 

Proactively expedite intuitive paradigms without cutting-edge supply chains. Proactively deliver frictionless solutions via client-focused technologies.

Nesse exemplo é passado por parâmetro dois atributos na função ParamBox( );

aPergs – Um array contendo as perguntas, onde cada posição do array corresponde a um atributo especifico do parametro (pergunta):

aPergs[1] –

aPergs[2] – Titulo da pergunta

aPergs[3] – Valor da pergunta

Credibly benchmark focused metrics via sustainable schemas. Distinctively customize 24/7 partnerships before scalable applications. Intrinsicly impact timely services via world-class meta-services. Energistically matrix resource-leveling schemas before multimedia based synergy. Efficiently deliver scalable outsourcing after cross-media data.

Monotonectally foster long-term high-impact products rather than collaborative innovation. Synergistically fashion interdependent leadership via resource-leveling meta-services. Energistically disseminate plug-and-play internal or “organic” sources whereas distributed services. Quickly incentivize customized supply chains vis-a-vis customer directed outsourcing. Objectively drive top-line customer service.

The post Tudo sobre Parambox – ADVPL first appeared on Código Expresso.

]]>
https://codigoexpresso.com/2025/06/17/tudo-sobre-parambox-advpl/feed/ 0 77
FWMsPrinter – Colocando senha em arquivos PDF com SetPassword( ) https://codigoexpresso.com/2025/06/17/fwmsprinter-colocando-senha-em-arquivos-pdf-com-setpassword/?utm_source=rss&utm_medium=rss&utm_campaign=fwmsprinter-colocando-senha-em-arquivos-pdf-com-setpassword https://codigoexpresso.com/2025/06/17/fwmsprinter-colocando-senha-em-arquivos-pdf-com-setpassword/#respond Tue, 17 Jun 2025 09:00:48 +0000 https://demo.mekshq.com/vlog/dc/?p=119 Hoje já é possível utilizar esse recurso de forma nativa, sem necessidade de usar o método Print( ) por meio do ShellExecute. Para isso, baste usar o método SetPassword( ) da classe FWMsPrinter conforme exemplo abaixo: Sintaxe: Parametros: Nome Tipo Descrição Obrigatório Referência cPassword Character Senha para a geração e visualização do PDF x Para […]

The post FWMsPrinter – Colocando senha em arquivos PDF com SetPassword( ) first appeared on Código Expresso.

]]>
Hoje já é possível utilizar esse recurso de forma nativa, sem necessidade de usar o método Print( ) por meio do ShellExecute.

Para isso, baste usar o método SetPassword( ) da classe FWMsPrinter conforme exemplo abaixo:

//Instancia o FWMSPrinter com o tipo PDF (device IMP_PDF)
oPrinter := FWMSPrinter():New(cArquivo, IMP_PDF, .F., /*cPathInServer*/, .T., /*lTReport*/, @oPrintPvt, /*cPrinter*/, /*lServer*/, /*lParam10*/, /*lRaw*/,.T.)
 
//Define a senha do arquivo pdf
oPrinter:SetPassword("123456")

Sintaxe:

FWMsPrinter(): SetPassword( < cPassword > )

Parametros:

NomeTipoDescriçãoObrigatórioReferência
cPasswordCharacterSenha para a geração e visualização do PDFx

Para usa-la basta incluir o trecho oPrinter:SetPassword(“123456”) com a senha desejada passada por parâmetro, seja uma senha fixa ou uma variável.

Segue abaixo a documentação completa da classe FWMsPrinter:

https://tdn.totvs.com/display/public/framework/FWMsPrinter

The post FWMsPrinter – Colocando senha em arquivos PDF com SetPassword( ) first appeared on Código Expresso.

]]>
https://codigoexpresso.com/2025/06/17/fwmsprinter-colocando-senha-em-arquivos-pdf-com-setpassword/feed/ 0 119