Ambiente
Pentaho
Instalação/Configuração Pentaho - Data Integration
Commerce
Para integração devemos utilizar a versão 5.6r03 ou superior a qual tem todos os objetos de banco necessários para realização da integração.
Definições da Exportação
Para exportação de documentos são utilizados os códigos externos conforme definição via cadastros ou integração.
- Tipo de operação o qual é exportado conforme o código externo cadastrado conforme os caso.
Para os Documentos de "Pagamento", "NFCe", "SAT-CF-e" e "Cupom Fiscal" são fixos conforme definido com a EME4.
- 999 - Documento de Pagamento
- 998 - Cupom Fiscal - Modelo 2D
- 997 - NFCe - Nota Fiscal Consumidor Eletrônica - Modelo 65
- 996 - SAT-CF-e - Modelo 59
- Sugestão é deixar a faixa 900 à 999 reservada caso no futuro haja necessidade de exportação de novos tipos fixos.
Para venda é extraído do cadastro da natureza "TTConfig >>> Venda >>> Natureza" sendo os campos "TD_NAT.EXTDEM" ou "TD_NAT.EXTFOR".

Para compras é extraído do cadastro de CFOP "TTConfig >>> Outros >>> Compras >>> CFOP" sendo o campo "TD_CFO.EXTCFO".

Para movimentações financeiras como não temos uma tabela com os tipos foi definido que o código a ser exportado seria com base em parâmetros de sistema que estão definidos conforme relação:
TP_OP_EXP_EME4_TRC - Código do Tipo de Operação na Exportação EME4 para Documentos "TRC - _Títulos a receber" TP_OP_EXP_EME4_PTR - Código do Tipo de Operação na Exportação EME4 para Documentos "PTR - _Parcela Tít. Recebe" TP_OP_EXP_EME4_CCC - Código do Tipo de Operação na Exportação EME4 para Documentos "CCC - Conta Corrente" TP_OP_EXP_EME4_CHR - Código do Tipo de Operação na Exportação EME4 para Documentos "CHR - Cheques Recebidos" TP_OP_EXP_EME4_DOP - Código do Tipo de Operação na Exportação EME4 para Documentos "DOP - Docs. Pagto. (Todos)" TP_OP_EXP_EME4_FIN - Código do Tipo de Operação na Exportação EME4 para Documentos "FIN - Lan. Finan. Avulsos" TP_OP_EXP_EME4_TEF - Código do Tipo de Operação na Exportação EME4 para Documentos "TEF - Cartão"
- Código do centro de custo dos lançamentos de notas recebidas é utilizado o código externo cadastrado em "TTConfig >>> Outros >>> Centro de Custo".

- Código da conta financeira é exportado conforme código externo cadastrado em "TTBackof >>> Fluxo Financeiro >>> Plano de Contas".

- Código do lote é utilizado o código externo recebido no processo de integração de lote campo "TI_LOT.CODEXT"
Layout de Importação para o Totali Commerce - Código do centro de custo dos lançamentos de notas emitidas é utilizado o código externo da unidade de negócio, cadastrado em "TTConfig >>> Outros >>> Unidades de Negócios"

EME4
A integração das tabelas TIMUs exigem que o campo ID seja alimentado com valor sequencial para atender essa necessidade foram criadas triggers para todas as tabelas a qual fazemos integração seguindo nosso padrão de macros para simplificar a compilação, essas triggers são inseridas no "Job Cria Triggers de Controle na Base de Destino -> job_exportacao_triggers_destino.kjb" esse job do Pentaho é responsável por aplicar todas as triggers necessárias do processo de integração na Base de Destino e as triggers devem ser definidas conforme cada banco de destino.
As Triggers criadas para as Parte(s) do Documento e da Redução Z também são responsáveis por localizar o IDMaster o que leva em consideração a chave do Documento/Redução Z onde o lançamento esteja pendente de processamento.
As macros das triggers estão no repositório do Totali Commerce "\integracoes\eme4\trigger", os scripts estão implementados com a nossa linguagem de macros para facilitar a compilação para múltiplos bancos.
- Para ambiente de Homologação podemos criar as tabelas TIMUs utilizando os scripts:
Oracle: "\integracoes\eme4\Layout\CREATES TIMUS - ORA.sql"
PostgreSQL: "\integracoes\eme4\Layout\CREATES TIMUS - PG.sql"
Desenvolvimento da Integração
View
Foi criado uma View para extração de dados para cada Tabela da integrada. No repositório do Totali Commerce "\integracoes\eme4\view" estão as macros das views criadas com o nome da respectiva Tabela a qual terá o destino dos dados para facilitar a identificação e ajustes caso sejam necessários.
Pentaho
Para facilitar o processo de integração foi criada uma "Transformação" para cada Tabela da integração. Os arquivos do Pentado estão no repositório do Totali Commerce "\integracoes\eme4\Pentaho\Oracle" ou "\integracoes\eme4\Pentaho\PostgreSQL".
Para integração da movimentação é necessário definir a ação a ser realizado, para isso é utilizado a tabela "TW_EXTXDOC" na base do commerce é por ela que o sistema identifica se a ação exportada será uma Inclusão ou Alteração.
Exceção foi para a "TIMU_ParteDoctoConheceFrete" o qual foi necessário a criação além da "Transformação" um "Job" especifico para realizar processo de rateio de valores.
- Nesse processo é utilizado a função "\integracoes\eme4\function\ProcessaRateioCustoFrete.mac" criada para processar o rateio do valor do frete sobre cada nota referenciada pelo conhecimento.
Executando a Integração
Após a configuração do ambiente chegou a hora da execução da integração.
Devemos criar um diretório para alocar os arquivos do Pentaho que devem ser obtidos conforme o Banco de Dados utilizado pelo Commerce e EME4, os arquivos estão alocados no repositório do Totali Commerce "\integracoes\eme4\Pentaho".
- Atualmente temos os processos implementados no Pentaho para Oracle e PostgreSQL para o Commerce, para EME4 apenas o "Job Cria Triggers de Controle na Base de Destino -> job_exportacao_triggers_destino.kjb" é diferente conforma cada destino atualmente temos implementado para Oracle.
Após cópia dos arquivos iniciar o Pentaho e abrir o arquivo "job_exportacao.kjb".
- No Objeto "Dados de conexão ao Banco de Dados" devemos definir os dados para acesso ao banco de dados, os valores dessas variáveis são utilizadas em todos os processos para conexão ao banco de dados de Origem e Destino dos Dados.

- Para utilização de conexão de forma genérica no Pentaho é necessário definição de alguns valores específicos para conexão segue exemplo de valores
/* Oracle */ PA_DESTINO_DRIVER = oracle.jdbc.driver.OracleDriver PA_DESTINO_URL_JDBC - jdbc:oracle:thin:@ PA_DESTINO_IP - TTORACLE PA_DESTINO_URL_SEP_PORT - : PA_DESTINO_PORT - 1521 PA_DESTINO_URL_DATABASE - : PA_DESTINO_DATABASE - TTORACLE PA_DESTINO_URL_DEF - Exemplo de URL: jdbc:oracle:thin:@TTORACLE:1521:TTORACLE
/* PostgreSQL */ PA_DESTINO_DRIVER = org.postgresql.Driver PA_DESTINO_URL_JDBC - jdbc:postgresql:// PA_DESTINO_IP - TTPGDESENV PA_DESTINO_URL_SEP_PORT - : PA_DESTINO_PORT - 5432 PA_DESTINO_URL_DATABASE - / PA_DESTINO_DATABASE - totali PA_DESTINO_URL_DEF - Exemplo de URL: jdbc:postgresql://TTPGDESENV:5432/totali
/* SQL Server */ PA_DESTINO_DRIVER = com.microsoft.sqlserver.jdbc.SQLServerDriver PA_DESTINO_URL_JDBC - jdbc:sqlserver:// PA_DESTINO_IP - TTSQLSERVER PA_DESTINO_URL_SEP_PORT - : PA_DESTINO_PORT - 1433 PA_DESTINO_URL_DATABASE - ;databaseName= PA_DESTINO_DATABASE - totali PA_DESTINO_URL_DEF - ;integratedSecurity=false Exemplo de URL: jdbc:sqlserver://TTORACLE:1433;databaseName=totali;integratedSecurity=false
/* Firebird */ PA_DESTINO_DRIVER = org.firebirdsql.jdbc.FBDriver PA_DESTINO_URL_JDBC - jdbc:firebirdsql:// PA_DESTINO_IP - TTFIREBIRD PA_DESTINO_URL_SEP_PORT - : PA_DESTINO_PORT - 3050 PA_DESTINO_URL_DATABASE -/ PA_DESTINO_DATABASE - c:\teste.fdb PA_DESTINO_URL_DEF - Exemplo de URL: jdbc:firebirdsql://192.168.0.1:3050/c:\teste.fdb
- A URL utilizada nas conexão é definida no Objeto "Define URLs de Conexão" do Job Principal, definição padrão: "${PA_ORIGEM_URL_JDBC}${PA_ORIGEM_IP}${PA_ORIGEM_URL_SEP_PORT}${PA_ORIGEM_PORT}${PA_ORIGEM_URL_DATABASE}${PA_ORIGEM_DATABASE}", contudo para conexão com SQL Server é preciso adicionar ao final do Texto acima indicado o valor "${PA_DESTINO_URL_DEF}".

- Exemplo de Conexão

Após configurar os dados de acesso devemos definir o "Tipo de Integração", "Filial Padrão de Funcionário" e "Data do Primeiro Movimento" no Job Principal.
Abrir o objeto "Definições da Integração" e definir para variável:
"PA_TIPO_EXPORTACAO" - Opção "C - Para Completo" ou "V - Para Varejo". "PA_FILIAL_FUNCIONARIO" - Filial de alocação do Funcionário será utilizado caso não esteja definido a "Unidade de Alocação" no Cadastro de Usuário. "PA_DATA_PRIMEIRO_MOVIMENTO" - Data do primeiro movimento a ser considerado na exportação.

Para geração da carga de dados, o processo de integração é realizado a partir da Data Final da última integração que fica armazenado na tabela "TT_ATU" com a descrição "EXPORTACAO_EME4" para gerar uma carga completa devemos atualizar o registro na "TT_ATU" com uma data inferior a data de inclusão/atualização dos dados a serem integrados, no processo de integração continua a data será atualizada a cada execução assim não precisando de interferência externa.
Para integração de Inventário de Estoque devemos definir algumas informações no Job Principal, abrir o objeto "Definições da Integração" devemos definir as Filiais "PA_INV_FILIAIS" a serem exportadas colocando entre aspas simples e separando por virgula em caso se mais de uma Filial, Informar a Data do Inventário "PA_INV_DATEST" e informar o Tipo do Inventário "PA_INV_TIPO" conforme opções da EME4 "0=Inventário Geral; 1=Inventário Cíclico; 2=Inventário FCI", após definir os valores devemos salvar o arquivo e executar o processo de integração ativando o Job de Inventário.