Índice


       

Objetivo


       Este documento foi desenvolvido como guia para a integração do RM Reports x Protheus. O mesmo contempla os passos para a configuração do webservice RM, webservice Protheus e parametrização da comunicação entre ambos. Para seguir este manual faz-se necessário que os softwares RM e Protheus já estejam instalados e funcionando.

       Para o desenvolvimento do mesmo foram usados os seguintes softwares/versões:

  • Protheus 11.8
  • RM – Biblioteca 11.82.34

Introdução



  1. Pré-Requisitos:
  • Instalação do Protheus na versão 11 ou superior e configuração do webservice do Protheus.
  • Instalação da Biblioteca RM versão 11.80 ou superior. (Caso o cliente não utilize nenhum módulo da linha RM torna-se necessário uma base exemplo RM devidamente configurada).

Preparar Banco de Dados


       Para o correto funcionamento da integração é necessário que sejam executados alguns passos no Banco de Dados.

Recomendável que esta preparação do banco de dados seja realizada por alguém com conhecimento em Banco de Dados, preferencialmente um DBA.

Permissões na Base RM

    Devem ser adicionados os seguintes Grants na base de dados RM:

    GRANT SELECT,INSERT ON GDATALOG TO sysdba
    GO
    GRANT SELECT,INSERT, UPDATE ON RRPTREPORT TO sysdba
    GO
    GRANT SELECT,INSERT ON RRELTIP TO sysdba
    GO
    GRANT SELECT,INSERT ON GDIC TO sysdba
    GO
    GRANT SELECT,INSERT ON GIMAGEM TO sysdba
    GO
    GRANT SELECT,INSERT ON GFILTROS TO sysdba
    GO
    GRANT SELECT,INSERT ON GCONSSQL TO sysdba
    GO
    GRANT SELECT,INSERT ON GMOEDA TO sysdba
    GO
    GRANT SELECT,INSERT ON RRELTIPSCHEMA TO sysdba
    GO

    Devem ser adicionados os seguintes Grants e Sinônimos na base de dados RM:

    GRANT SELECT,INSERT,UPDATE ON GDATALOG TO ACESSO_RM;
    GRANT SELECT,INSERT,UPDATE ON RRPTREPORT TO ACESSO_RM;
    GRANT SELECT,INSERT,UPDATE ON RRELTIP TO ACESSO_RM;
    GRANT SELECT,INSERT,UPDATE ON GDIC TO ACESSO_RM;
    GRANT SELECT,INSERT,UPDATE ON GIMAGEM TO ACESSO_RM;
    GRANT SELECT,INSERT,UPDATE ON GFILTROS TO ACESSO_RM;
    GRANT SELECT,INSERT,UPDATE ON GCONSSQL TO ACESSO_RM;
    GRANT SELECT,INSERT,UPDATE ON GMOEDA TO ACESSO_RM;
    GRANT SELECT,INSERT,UPDATE ON RRELTIPSCHEMA TO ACESSO_RM;
     
    CREATE PUBLIC SYNONYM GDATALOG
    FOR RM.GDATALOG
    ;
    CREATE PUBLIC SYNONYM RRPTREPORT
    FOR RM.RRPTREPORT
    ;
    CREATE PUBLIC SYNONYM RRELTIP
    FOR RM.RRELTIP
    ;
    CREATE PUBLIC SYNONYM GDIC
    FOR RM.GDIC
    ;
    ;CREATE PUBLIC SYNONYM GIMAGEM
    FOR RM.GIMAGEM
    ;
    CREATE PUBLIC SYNONYM GFILTROS
    FOR RM.GFILTROS
    ;
    CREATE PUBLIC SYNONYM GCONSSQL
    FOR RM.GCONSSQL
    ;

    Usuário no Banco de Dados

           É importante que exista um usuário igual em todas nas instâncias de banco de dados (RM e Protheus), ou seja, o mesmo nome de usuário e senha nas instâncias do RM e Protheus. É interessante também que estes usuários tenham permissão de SA ou DBA.

           É recomendável que este usuário seja utilizado na configuração da integração por parte do RM.

           No caso de bancos de dados MSSQL pode ser usado o usuário SA desde que o mesmo tenha as senhas iguais nas duas instâncias. Em caso de banco de dados Oracle, criar um usuário com prilégio DBA.

    Passos - Lado RM


           Importante: Para que a integração funcione adequadamente é necessário que as fontes de dados RM e Protheus estejam devidamente configuradas no servidor RM e Protheus. Ou seja, no caso de banco de dados SQL Server é necessário que o ODBC esteja apontando para os bancos de dados RM e Protheus, no caso de Oracle é necessário que o OracleClient esteja instalado no servidor e os serviços RM e Protheus configurados no mesmo.

    Arquivos de configuração

           1- Acesse o diretório da instação do RM, procure pela pasta RM.Net e busque todos os arquivos com extensão .config Obs.: Em uma instalação padrão do RM o caminho da pasta será: C:\totvs\CorporeRM\RM.Net.

            2- Abra os arquivos RM.Host.exe.config e RM.Host.Service.exe.config e adicione as linhas destacadas em vermelho no arquivo, para ficar com a mesma estrutura abaixo. Os campos em azul devem ser editados colocando suas respectivas informações:

      Para banco de dados Microsoft SQL Server:

      Expanda para copiar o código
      <?xml version="1.0"?> 
      <configuration>
         <appSettings>
            <add key="JobServer3Camadas" value="false" />
            <add key="Port" value="8050" />
            <add key="ActionsPath" value="C:\totvs\CorporeRM\RM.Net;C:\totvs\CorporeRM\Corpore.Net\Bin" />
            <add key="EnableCompression" value="true" />
            <add key="DEFAULTDB" value="<Base de Dados do RM – Padrão: CorporeRM>" />
            <add key="HTTPPORT" value="8051" />
            <add key="RM_Lib_Protheus_Server_FWDictionary_FWDICTIONARY" value="http://<IP_do_webservice_Protheus>:<Porta_WS_Protheus>/wsdictionary/FWDICTIONARY.apw" />
            <add key="RM_Rpt_Lib_Server_FWDictionaryWS_FWDICTIONARY" value="http:// <IP_do_webservice_Protheus>:<Porta_WS_Protheus>/FWDICTIONARY.apw" />
            <add key="RM_Rpt_Lib_Protheus_Server_ConnectionString" value="Data Source=<Instância_SQLServer_Proheus>;Initial Catalog=<Base_Dados_Protheus>;Persist Security Info=True;User ID=<usuário_acesso_base_Protheus>;Password=<Senha_acesso_base_Protheus>" />
         </appSettings>
         <runtime>
            <NetFx40_LegacySecurityPolicy enabled="true" />
         </runtime>
         <system.runtime.remoting>
            <customErrors mode="Off" />
         </system.runtime.remoting>
         <startup>
            <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
         </startup>
      </configuration>

      Para banco de dados Oracle:

      Expanda para copiar o código
      <?xml version="1.0"?> 
      <configuration>
         <appSettings>
            <add key="JobServer3Camadas" value="false" />
            <add key="Port" value="8050" />
            <add key="ActionsPath" value="C:\totvs\CorporeRM\RM.Net;C:\totvs\CorporeRM\Corpore.Net\Bin" />
            <add key="EnableCompression" value="true" />
            <add key="DEFAULTDB" value="<Base de Dados do RM – Padrão: CorporeRM>" />
            <add key="HTTPPORT" value="8051" />
            <add key="RM_Lib_Protheus_Server_FWDictionary_FWDICTIONARY" value="http://<IP_do_webservice_Protheus>:<Porta_WS_Protheus>/wsdictionary/FWDICTIONARY.apw" />
            <add key="RM_Rpt_Lib_Server_FWDictionaryWS_FWDICTIONARY" value="http:// <IP_do_webservice_Protheus>:<Porta_WS_Protheus>/FWDICTIONARY.apw" />
            <add key="RM_Rpt_Lib_Protheus_Server_ConnectionString" value="Data Source=<Nome_serviço_Oracle>;Persist Security Info=True;User ID=<usuário_acesso_base_Protheus>;Password=<Senha_acesso_base_Protheus>;Unicode=True " />
         </appSettings>
         <runtime>
            <NetFx40_LegacySecurityPolicy enabled="true" />
         </runtime>
         <system.runtime.remoting>
            <customErrors mode="Off" />
         </system.runtime.remoting>
         <startup>
            <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
         </startup>
      </configuration>

              3- Crie um arquivo com nome RM.Lib.Protheus.Server.dll.config dentro da pasta e copie o seguinte conteúdo dentro dele alterando as partes em azul com as respectivas informações:

      Expanda para copiar o código
      <?xml version="1.0" encoding="utf-8" ?> 
         <configuration>
            <configSections>
               <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
                  <section name="RM.Lib.Protheus.Server.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
            </sectionGroup>
            </configSections>
            <applicationSettings>
               <RM.Lib.Protheus.Server.Properties.Settings>
                  <setting name="RM_Lib_Protheus_Server_FWDictionary_FWDICTIONARY" serializeAs="String">
                  <value>http://<IP_do_webservice_Protheus>:<Porta_WS_Protheus>/wsdictionary/FWDICTIONARY.apw</value> </setting>
               </RM.Lib.Protheus.Server.Properties.Settings>
            </applicationSettings>
      </configuration>

              4- Crie um arquivo com nome RM.Rpt.Protheus.Server.dll.config dentro da pasta e copie o seguinte conteúdo dentro dele alterando as partes em azul com as respectivas informações:

        Expanda para copiar o código
        <?xml version="1.0" encoding="utf-8" ?> 
        <configuration>
           <configSections>
              <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
                 <section name="RM.Rpt.Protheus.Server.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
              </sectionGroup>
           </configSections>
           <connectionStrings>
              <add name="RM.Rpt.Lib.Server.Properties.Settings.DefaultConnection"
                 connectionString="Data Source=<Instância_SQLServer_Proheus>;Initial Catalog=<Base_Dados_Protheus>;Persist Security Info=True;User ID=<usuário_acesso_base_Protheus>;Password=<Senha_acesso_base_Protheus>"
                 providerName="System.Data.SqlClient" />
              <add name="RM.Rpt.Protheus.Server.Properties.Settings.DefaultConnection"
                 connectionString=" Data Source=<Instância_SQLServer_Proheus>;Initial Catalog=<Base_Dados_Protheus>;Persist Security Info=True;User ID=<usuário_acesso_base_Protheus>;Password=<Senha_acesso_base_Protheus>"
                 providerName="System.Data.SqlClient" />
           </connectionStrings>
           <applicationSettings>
              <RM.Rpt.Protheus.Server.Properties.Settings>
                 <setting name="RM_Rpt_Protheus_Server_FWDictionaryWS_FWDICTIONARY" serializeAs="String">
                    <value>
                       http://
                       <IP_do_webservice_Protheus>
                       :
                       <Porta_WS_Protheus>
                       /wsdictionary/FWDICTIONARY.apw
                    </value>
                 </setting>
              </RM.Rpt.Protheus.Server.Properties.Settings>
           </applicationSettings>
        </configuration>

        Expanda para copiar o código
        <?xml version="1.0" encoding="utf-8" ?> 
        <configuration>
           <configSections>
              <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
                 <section name="RM.Rpt.Protheus.Server.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
              </sectionGroup>
           </configSections>
           <connectionStrings>
              <add name="RM.Rpt.Lib.Server.Properties.Settings.DefaultConnection"
                 connectionString=" Data Source=<Nome_Serviço_Oracle>;Persist Security Info=True;User ID=<usuário_acesso_base_Protheus>;Password=<Senha_acesso_base_Protheus>;Unicode=True"
                 providerName="System.Data.OracleClient.OracleConnection" />
              <add name="RM.Rpt.Protheus.Server.Properties.Settings.DefaultConnection"
                 connectionString=" Data Source=<Nome_Serviço_Oracle>;Persist Security Info=True;User ID=<usuário_acesso_base_Protheus>;Password=<Senha_acesso_base_Protheus>;Unicode=True"
                 providerName="System.Data.OracleClient.OracleConnection" />
           </connectionStrings>
           <applicationSettings>
              <RM.Rpt.Protheus.Server.Properties.Settings>
                 <setting name="RM_Rpt_Protheus_Server_FWDictionaryWS_FWDICTIONARY" serializeAs="String">
                    <value>
                       http://
                       <IP_do_webservice_Protheus>
                       :
                       <Porta_WS_Protheus>
                       /FWDICTIONARY.apw
                    </value>
                 </setting>
              </RM.Rpt.Protheus.Server.Properties.Settings>
           </applicationSettings>
        </configuration>

        Configurando o Serviço

               Após configurar todos os arquivos acima, faz-se necessária a configuração do serviço da RM.

               Por padrão o mesmo está configurado para “logar” como Network Service, porém é necessário que o mesmo esteja como LocalSystem. Para tal siga os passos abaixo:

        1.  Na pasta RM.Net busque o aplicativo RM.Host.exe
        2.  Execute o aplicativo como Administrador (clique como botão direto do mouse > Executar como Administrador
        3.  Será aberto um aplicativo minimizado na Aréa de Notificação, clique com o botão direito do mouse sobre ele > Configurar > Configurar Serviço

        4. Na janela que se abriu, clique em Desinstalar:

        5.  Em seguida selecione o usuário LocalSystem na lista de contas do sistema e clique em Instalar

        6.  Se estiver tudo correto ficará como abaixo. Pode fechar a janela.

        7. Teste o WebService acessando o endereço http://127.0.0.1:8051/rptwebservicesserver/mex?wsdl dentro do servidor. Caso tudo dê certo, deverá aparecer um schema XML no browser.

        Disponibilizar a fonte de dados no RM

               Após toda a configuração é necessário habilitar a fonte de dados Protheus para a geração de relatórios.

        1. Acesse o RM e o ambiente Serviços Globais:
        2. Dentro de Serviços Globais, acesse a pasta (aba) Ambientes, menu Parâmetros e opção Globais:
        3. Na janela que se abriu, vá na pasta Gerador de Relatórios, busque o Provedor Protheus e clique duas vezes sobre ele:
        4. Na nova janela marque o checkbox Ativo e clique em Ok e na janela anterior clique em Ok também:

        Passos - Lado Protheus


               Para a integração com o RM Reports não é necessário um Web Service específico, em testes realizados um Web Service convencional do Protheus foi o suficiente para suprir as necessidades do RM. Para fins deste material será demonstrado a criação do Web Service dedicado a integração.

        É altamente recomendável criar um serviço exclusivo para “subir” o Web Service, isso evita perdas de desempenho na operação normal do sistema e em casos de manutenção ou parada no Web Service, não prejudica o restante da operação.

        Criando o WebService

        1. Nos Parâmetros Iniciais do smartclient do Protheus, coloque as informações referentes a comunicação e ambiente do servidor que irá hospedar o webservice do RM e acesse o programa Server Wizard:
        2. Dentro do Wizard, clique uma vez com cima de Módulos Web e em sequida clique na opção incluir na barra superior da janela:
        3. Na janela que abriu preencha as informações conforme indicado abaixo e clique em Avançar:
        • Módulo Web: WSR: Web Service Integração Totvs Reports
        • Nome da Instância: Nome do WebService – O padrão adotado é WSR
        • Diretório Raiz das Imagens: É o diretório onde o Web Service irá usar para armazenar imagens e outros arquivos – É recomendável deixar o padrão que é preenchido automaticamente
        • Selecione o Enviroment: Ambiente do servidor onde irá “subir” o Web Service
        • Habiliar processos na Inicialização do Servidor: Define se o job do Web Service irá iniciar junto com o serviço do appserver ou o mesmo deverá ser chamado manualmente – Altamente recomendável deixar marcado como habilitado.

        4. No campo Host preencha com IP do servidor e porta do WebService (por padrão a porta adotada é 8090, porém pode ser mudada desde que seja atualizada no arquivo de configuração do RM), em seguida clique sobre a filial que irá ser amarrada a este endereço, clique em Relacionar e por fim Avançar:

        5. Na tela seguinte preencha com 1 o campo Mínimo de Usuários e 999999 o campo Máximo de Usuários:

        6. Na mensagem de confirmação que será exibida, confirme clicando em Sim.

        7. Para finalizar a instalação reinicie o serviço do appserver onde o Web Service está instalado.

        Configurando a Comunicação

        1. Acesse o configurador do Protheus
        2.  Dentro do configurador acesse o caminho Ambiente > Parâmetros:

        3. Busque os parâmetros a seguir e preencha com as respectivas informações:

        • MV_RMWSPRT: Porta do Web Service RM (Padrão é 8051) – Neste campo preencha somente com o número, exemplo: 8051
        • MV_RMWSURL: Endereço do Web Service RM – Neste campo preencha somente com o IP ou nome do servidor RM, exemplo:192.168.0.21

        Chamar o Relatório RM no Protheus

               Esta etapa consiste em criar o atalho no menu do Protheus para chamar o relatório do RM.

        1. Dentro do configurador abra o caminho Ambiente > Menus:

        2. Desmaque o checkbox Todos os Menus, marque o checkbox do Menu desejado e clique em Ok:

        3. Clique uma vez em cima do nome do menu escolhido e em seguida Adicionar:

        4. Navegue na janela do lado direito até encontrar a pasta desejada para alocar o relatório, em seguida dê um clique simples no nome desta pasta e clique em Novo Item: 

        5. Preencha os campos Descrição, em seguida Módulo (módulo onde será executado o relatório), Tipo (Totvs Report) e por último clique no botão ... na opção Programa:

        6. Na janela que se abriu marque o checkbox com o relatório desejado, clique em Confirmar e na janela anterior clique em Ok:

        7. Terminada a inclusão dos relatórios, salve as alterações do menu clicando em Gerar na tela anteior, preenchendo com o nome do menu e em seguida Gerar novamente:

        Obs.: As nomenclaturas padrões (“original” da Totvs e sem customização) de menus dos principais módulos do Protheus são:

        •  Ativo Fixo - SIGAATF
        • Compras – SIGACOM
        • Contabilidade – SIGACTB
        • Estoque - SIGAEST
        • Faturamento – SIGAFAT
        • Financeiro – SIGAFIN


        Gerar Relatório no Protheus 


        Tela Principal

               Após “chamar” o relatório desejado será exibida a tela a seguir:

               O grupo Tipo corresponde ao formato de arquivo que será gerado.

               O Local corresponde ao local onde o arquivo gerado será salvo.

        Filtros

        Clique sobre o grupo Filtro, preencha o filtro desejado e clique em Ok

        Exemplo da composição de um filtro:

        Desejado:

        • Todos os Pedidos de Compra entre 01/01/2014 e 01/05/2014
        • Fornecedor 000002 e 000040

        Estrutura do filtro:

        (DT Emissão Maior ou Igual a 01/01/2014 e DT Emissão Menor ou Igual a 01/05/2014) e (Fornecedor Igual a 000002 ou Fornecedor Igual a 000040)



        Para maiores informações:

        @FRAMEWORK

        Canais de Atendimento

        Chamado: Através do Portal TOTVS - www.suporte.totvs.com.br

        Telefônico: 4003-0015 Escolhendo as opções 2-2-3-9-5 (Framework) ou 2-2-3-9-4 (BI)


        Produto: Framework

        Versão: 11.80.XX

        Processo: Totvs Reports

        Subprocesso: Integração RM Reports X Protheus