Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Pessoal, boa tarde.
Tenho aqui na empresa uma solicitação cuja qual eu ainda não tratei.
Preciso trabalhar com vendas de dois bancos de dados. Um desses bancos de dados é de um antigo ERP meu, e o outro BD é do meu ERP atual.
Vamos lá, tenho as seguintes tabelas:
BD antigo (Viasoft):
Tabela: PPESCLI (possui campos de dados do cliente como, cnpj, razão social, nome fantasia etc..)
BD atual (Globus)
Tabela CODCLI (possui campos de dados do cliente como, cnpj, razão social, nome fantasia etc..)
Estou tratando aqui apenas uma das tabelas que tenho, que seriam em torno de 21 tabelas com informações de notas fiscais, vendas, quantidades, valores...
Preciso de uma força para saber qual a melhor maneira de tratar esses dados e unifica-los.
Obrigado comunidade
Diego,
Minha primeira pergunta:
Já virou a chave do ERP Antigo 100%?
Se sim
Pra mim você poderia criar um qvd de histórico com essas informações, ajustando corretamente no padrão certo.
E sempre ler ele depois de forma otimizada.
Att.
Os atributos em comum entre os sistemas, poderá unificar/padronizar em tabelas como de clientes, fornecedor, veículo, motorista... Utilizando recursos como Distinct, Exists, Mapping, Concatenate, Join, ...
Tente colocar as medidas numa tabela principal (Fato);
Cuidado com dimensões com muitos registros distintos, você se depara-rá com tabelas de viagens realizadas por exemplo que contém muitos registros.
Conheço um pouco do sistema Globus e já trabalhei com Transnet, soft para empresa de logística ou de transporte urbano/rodoviário.
Mario, o Globus é um baita sistema no meu ver e é isso mesmo, é do ramo de transportes/materias/vendas.
O Globus é oracle e meu antigo ERP, o viasoft é firebird.
Minha preocupação é tratar essas datas que são em formatos diferentes, vendas para clientes que tinha no banco antigo e não tenho mais no novo e essas coisas.
Tenho um cadastro de clientes no sistema antigo e tenho um no sistema novo, onde no sistema novo só trouxe os clientes que eram ativos. Então vejamos: terei vendas para clientes antigos e para clientes novos, e também para clientes que estão no sistema antigo e novo.
Só preciso pegar o fio da meada, e ai eu consigo ir esmiuçando a coisa toda.
Obrigado.
Fábio, isso mesmo. O meu ERP antigo já foi 100% inativado. Agora estamos em produção totalmente no ERP novo.
Entendo, é uma boa empreitada o trabalho que pegou.
Bem vindo ao Oracle...
Referente as datas, quando for gerar os QVDs, poderá formata-las, tipo:
Gerar Data de um Timestamp
Date(Floor(Date#([CAMPO_TIMESTAMP],'YYYY-MM-DD hh:mm:ss')),'DD/MM/YYYY') As 'Data'
Gerar Tempo de um Timestamp
Date(Frac(Date#([CAMPO_TIMESTAMP],'YYYY-MM-DD hh:mm:ss')),'hh:mm:ss') As 'Tempo'
A mascara da função Date#() tem que ser igual ao da fonte de origem;
Mantenha as horas separadas das datas por questão de performance.
Referente aos cadastros, utilize campos como CNPJ, CPF, NF em comum entre os sistemas para tratar as associações, Concatenate, Join, Mapping, chaves tipo:
Auternumber([CNPJ],'FORNECEDOR') As '%SK_FORNECEDOR'
Abraço
Diego, ja fiz algumas coisas nesse sentido.
O que eu fiz e faria no seu caso.
Faria a leitura do banco de dados histórico 1 vez e salva em QVD.
Popula esse QVD, e cria uma flag apenas para identificar que é histórico.
String conexao firebird;
Exemplo :
Load 'Viasoft' as Flag_Identifica_Sistema,Cod_cli , CNPJ_cli , todos os campos ;
Select * from tabela do banco historico;
//Quando ler o novo banco de um concatenate com o historico, deixando todos os campos com a mesma nomenclaturas.
concatenate
String conexao oracle;
Load 'Globus' as Flag_Identifica_Sistema,Cod_cli,CNPJ_cli, todos os campos ;
Select * from tabela banco novo;
Assim vai juntando as tabelas, formatando os campos datas por exemplo para que fique iguais nas duas tabelas entre outros campos mais necessários a tratar para deixar iguais entre uma tabela e outra.
Campos que cada sistema tem sua particularidade , não tem problema.
Lembrando que as conexões devem ser criadas no odbc do windows, dentro da aba DSN de sistema.
Espero ter ajudado de alguma forma.
Pessoal, vamos lá. Vamos começar do básico e mais detalhado para que eu possa entender direitinho.
Nesse print tenho os dados do meu antigo BD (Viasoft) cujo já está 100% inativo, pois já estamos em produção no novo erp.
Vejam que aqui tenho as colunas NOME, FANTASIA, CGC, CPF. Total de linhas 1939.
(Figura1)
Aqui na sequência estou listando os dados do meu novo erp (Globus) onde tenho as colunas RSOCIALCLI, NFANTASIACLI, NRINSCRICAOCLI. Total de linhas 977.
(Figura2)
Vejamos, no antigo BD (figura1) temos o campo CGC e CNP separados, e no BD atual (Figura2) temos essas mesmas informações no campo NRINSCRICAOCLI.
Como deveria modelar essas dados da melhor maneira? No meu script de carga fiz o seguinte:
Load Nome, Fantasia, Cgc& '|' &Cpf as NRINSCRICAOCLI, para então na transformação eu concatenat com a tabela do BD novo (Globus), porém as informações ficaram erradas.
Resumindo, pela lógica voou utilizar esse campo de Cnpj e Cpf para unir as duas tabelas.
O que eu pensei, pegar o campo Cgc e Cpf e unir os dois e criar um novo campo colocando em uma tabela auxilia, em seguida pegar o campo Nrinscricaocli e criar uma outra tabela auxiliar.
Uso o Resident ou left join ou concateno?
Agradeço se alguém puder ajudar, tenho varias tabelas para tratar, porém se eu conseguir tratar a primeira da maneira correta as outras eu vou me virando.
Obrigado pessoal.
Vamos la :
string conexao odbc do banco Viasoft;
//Viasoft
Load NOME, FANTASIA, if(IsNull(cpf),cgc,cpf) as NRINSCRICAOCLI;
select * from Tabela;
concatenate
string conexao odbc do banco globus;
//globus
Load RSOCIALCLI as NOME, NFANTASIACLI as FANTASIA, NRINSCRICAOCLI;
select * from tabela;
Algo nesse sentido !
Maicon,
Ao invés dele fazer toda vez a conexão com o banco do ERP Antigo, eu aconselho criar um qvd historico.
Vou citar o exemplo:
Cria um qvw apenas para gerar o historico
//Viasoft
Historico:
Load NOME, FANTASIA, if(IsNull(cpf),cgc,cpf) as NRINSCRICAOCLI;
select * from Tabela;
Store Historico Into ... historico.qvd (qvd);
Aí na sua aplicação você apenas carrega este arquivo.
Load *
From ERP Novo
Concatenate
Load *
From historico;