Pular para o conteúdo principal

Postagem em destaque

🚀 Oferecendo Serviços Remotos de Desenvolvedor AdvPL e Mais 🖥️

🚀 Oferecendo Serviços Remotos de Desenvolvedor AdvPL e Mais 🖥️ Olá pessoal, Espero que este post encontre todos vocês bem! É com grande entusiasmo que compartilho que estou expandindo meus serviços como Desenvolvedor AdvPL para novos desafios e colaborações. Com mais de duas décadas de experiência sólida, minha jornada profissional tem sido enriquecedora, com a oportunidade de participar de projetos empolgantes ao longo dos anos. Agora, estou ansioso para trazer minha experiência e habilidades para novas equipes e projetos, trabalhando de forma remota. Minha expertise abrange não apenas AdvPL, mas também outras tecnologias-chave, incluindo JS, SQL, Infraestrutura e Otimização de Processos. Acredito que essa combinação de conhecimentos me permite oferecer soluções abrangentes e eficazes para uma variedade de necessidades de desenvolvimento. Acredito que a tecnologia tem o poder de transformar negócios e impulsionar o sucesso, e estou comprometido em ajudar meus clientes a alcançar seu

BlackTDN :: ADVPL & Harbour MiniGui Extended ~ GPEWriter

open_office

Muitos são os clientes que utilizam a “suíte OpenOffice” em detrimento da “suíte Office” da Microsoft e, em função disto, não conseguem utilizar alguns recursos do protheus como o programa GPEWord, disponível no módulo de Gestão de Pessoal, para a impressão de documentos (Contrato de Trabalho, Termo de Prorrogação de Contrato de Trabalho, Acordo de Compensação de Horas de Trabalho,Termo de Vale-Transporte, Declaração de Dependentes dentre outros).

Em função disto, e atendendo a uma necessidade pontual, combinei GPEWord e Harbour MiniGui Extended para criar um “mini aplicativo” para permitir a impressão dos documentos WORD, disponibilizados no SIGAGPE, no Writer.

Para que isso seja possível algumas alterações se fazem necessárias:

  1. Conversão dos documentos do Microsoft Office para OpenOffice;
  2. Substituição das DOCVariables do WORD por Constantes que serão substituídas por seus respectivos valores (1);
  3. Criação do programa GPEWriter (baseado no GPEWord);
  4. Compilação do programa em Harbour MiniGui Extended gpe_word.prg; e
  5. Criação do diretório C:\gpe_writer

(1) A técnica utilizada no WORD para substituição das DOCVariables deu muito trabalho no OpenOffice e por isso preferi substituir essa técnica por outra.

Tive que utilizar o Harbour MiniGui Extended para “integração” com a suíte OpenOffice porque ADVPL, infelizmente, não suporta OLE e COM de forma nativa. A idéia básica é a seguinte:

Através do GPEWriter será gerado um arquivo CSV com cabeçalho (campos GPE_?) e item (Conteúdo atribuído a cada campo). Esse arquivo será delimitado com “Pipe” |, após a geração do arquivo e utilizando WaitRun o programa compilado no Harbour gpe_writer.exe será executado para instanciar os componentes OLE/COM do OpenOffice, carregará o conteúdo do arquivo gerado pela GPEWriter e fará a busca e substituição das variáveis pelos seus respectivos valores (semelhante ao que faz OLE_SetDocumentVar() e OLE_UpDateFields()) e, logo após, irá efetuar a impressão do documento. Não implementei a parte de salvar o arquivo, então, para este caso, recomendo utilizar uma impressora virtual que gera arquivo PDF.

O código, dividido em duas partes, uma em Harbour e outra em ADVPL poderá ser obtido ao clicar aqui.

Para utilizar o GPEWriter proceda da seguinte forma:

  1. Baixe o arquivo disponibilizado acima e descompacte em C:\;
  2. Compile o programa em ADVPL GPEWriter;
  3. Adicione a chamada ao Menu do SIGAGPE conforme abaixo;

<MenuItem Status="Enable">
    <Title lang="pt">Writer</Title>
    <Title lang="es">Writer</Title>
    <Title lang="en">Writer</Title>
    <Function>GPEWRITER</Function>
    <Type>03</Type>
    <Access>xxxxxxxxxx</Access>
    <Module>07</Module>
    <Owner>0</Owner>
</MenuItem>

Obs.: O arquivo gpe_wcontrato.odt, um exemplo de DOC convertido para ODT,  será encontrado em c:\gpe_writer e será utilizado como base para teste.

Alguns “ScreenShots”:

GPEWriter : Exportar Variáveis

GPEWriter : Exportar Variáveis : Variáveis ExportadasApesar do Título “Integração com MS-Word” leia-se “Integração OpenOffice-Writer” (não me dei ao trabalho de alterar a string de tradução).

O botão Exportar variáveis tem por finalidade exportar as variáveis GPE_? para um arquivo .csv que será utilizado como modelo para a elaboração dos documentos.

GPEWriter : Exportar Variáveis : Imprimir Documento

Impr. Documento irá exportar os dados reais para .csv e executar o programa gpe_writer.exe que efetuará a comunicação como OpenOffice, abrirá o documento modelo, substituirá as constantes GPE_? ali definidas pelos seus respectivos valores imprimindo ao final.GPEWriter : Exportar Variáveis : OpenOffice Writer

Obs.:

  1. Diferente do GPEWord o GPEWriter poderá ser executado no Linux (bastando, para isso, alguns ajustes e recompilar o código gpe_writer.prg nessa plataforma);
  2. Caso necessite recompilar e gerar um novo executável para o gpe_writer.prg baixe o Harbour MiniGui Extended clicando aqui

[]s
иαldσ dj

Comentários

  1. Depto de Tecnologia Totvs..

    ..um pouco atrás do BTDN.

    ResponderExcluir
  2. Tem algumas alterações a serem feitas, como por exemplo: deixar dinâmica a escolha do arquivo de modelo e permitir a escolha de arquivo .ODT além de .DOT e ou .DOC.

    ResponderExcluir
  3. Gran trabalho... é uma lástima que a TOTVS nao profece o Software Libre!

    ResponderExcluir
  4. É uma pena que a TOTVS nao pense em usar Software Libre para seus aplicativos.

    ResponderExcluir
  5. Olá... ainda hoje tenho problemas porque o Prothues nao e compativel com Office 2013... PUAHH!!! Éste trabalho do usar o OpenOffice trabalha com as ultimas vercoes?

    ResponderExcluir
  6. Voce tem um exemplo da criacao de um documento con cabelho e itens?

    ResponderExcluir

Postar um comentário

Postagens mais visitadas deste blog

BlackTDN :: RLeg ~ Desvendando a Função ParamBox

Para quem precisar desenvolver uma interface de entrada de dados, coisa rápida, e não quer ter aquele trabalhão danado que todos já sabemos, o Protheus tem uma função que ajuda muito, é uma interface semelhante a função Pergunte, porém com muito mais opção de objeto de entrada de dados, alias até colocar o scrollbox desta interface com todos os objetos em outra MsDialog ou Wizard é simples. Vejam o exemplo abaixo, boa sorte! Rleg. //---------------------------------------------------------- // Função exemplo utilizando a função ParamBox() //---------------------------------------------------------- User Function xParamBox() Local aRet := {} Local aParamBox := {} Local aCombo := {"Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"} Local i := 0 Private cCadastro := "xParambox" // ---------------

BlackTDN :: Customizando a interface de Login no Protheus e by You

A publicação “ BlackTDN :: By You e sua nova tela de login ”  de nosso amigo OBona deu o que falar e, em função disso, esse que a muito não vos escreve resolveu criar uma versão onde será possível personalizar, “por completo”, a tela de login no Protheus/by You. Considerando que OBona já havia “mapeado, identificado e customizado” as imagens peguei-as emprestadas para o exemplo que se segue: O primeiro passo para a customização “total” da interface de login do Protheus/by You será implementar o “Ponto de Entrada” ChgPrDir (Diretório de impressão) . Usaremos esse PE juntamente como programa U_FindMsObject.prg (apresentado pela primeira vez em: Protheus :: ADVPL : The Container : Presents Pandora's box ). Diferente do exemplo proposto por OBona, que substitui, durante o processo de compilação, as imagens padrões do sistema (excluindo-as) por imagens customizadas (com o mesmo nome) este novo exemplo mantém, no RPO, as imagens padrões adicionando novas imagens customizadas que serã

Protheus :: Chamando Funções do Menu Diretamente e sem a Necessidade de Login

Ferne$ perguntou: "...é possível abrir alguma rotina do sistema sem solicitar login ao usuário, como por exemplo a rotina MATA010..." Sim Ferne$, é possível sim. Abaixo um Exemplo para a Chamada à função MATA010 sem a necessidade de Login no sistema. #INCLUDE "PROTHEUS.CH" #INCLUDE "TBICONN.CH" /*/ Funcao: MATA010Ex Data: 30/04/2011 Autor: Marinaldo de Jesus Descricao: Executar a Funcao MATA010 diretamente sem a necessidade de LOGIN no Protheus Sintaxe: 1 ) U_MATA010Ex ( Chamada diretamente na Tela de Entrada do Sistema ) ; ou 2 ) totvsclient.exe -q -p=u_MATA010Ex -a=01;01 -c=rnp_local -e=rnp -m -l ( Chamada Via Linha de Comando ) /*/ User Function MATA010Ex( cEmpFil ) Local aEmpFil Local bWindowInit := { || __Execute( "MATA010()" , "xxxxxxxxxxxxxxxxxxxx" , "MATA010" , "SIGAFAT" , "SIGAFAT", 1 , .T. ) } Local cEmp Local cFil Local cMod Local cModName := "SIGAFAT" DEFA