Iniciando com o Sincronizador

De Demander
Ir para: navegação, pesquisa

Sobre o sincronizador

Sincronizador é a API utilizada para fazer a sincronização dos dados tanto quanto o processo de envio de informação ao Demander e a busca de informação no Demander e também no banco de dados do cliente.

Ao criar um arquivo texto baseado no leiaute de integração Demander, o mesmo é processado pelo sincronizador que é responsável por fazer a quebra de linha do arquivo por tabelas e enviar ao Webservice Demander. Possíveis erros são apresentados na tela de log do Sincronizador.

Ao fazer um pedido, alterar ou cadastrar um cliente, fazer uma visita sem venda, dentre outras funcionalidades do sistema, as mesmas alterações precisam ser enviadas ao ERP integrado. Para isso é utilizado o Sincronizador. Ao fazer uma busca, será gerado um arquivo com todos registros que tiverem alguma alteração igual e maior a data salva no arquivo de configuração. Consulte o leiaute para saber quais tabelas são enviadas ao ERP.

Outra funcionalidade importante do Sincronizador é a busca dos registros diretamente no banco de dados do cliente. Chamada de Integrador, essa funcionalidade é capaz de através de scripts SQL e uma conexão ao banco de dados através de uma string de conexão, buscar registros salvos na tabela no banco de dados e criar um arquivo pronto para ser enviado ao Demander.

Baixando e organizando

Para baixar o sincronizador clique aqui. Baixado o Sincronizador vamos a sua configuração. Vamos criar uma pasta chamada DEMANDER no 'disco local C' para organizar os arquivos e pastas que o Sincronizador.exe gerar, Por exemplo:

11.png

O Sincronizador não precisa ser instalado e sim somente executado com um duplo clique. Para isso vamos copiar o arquivo Sincronizador.exe baixado para a pasta "DEMANDER" criada no passo acima.

12.png

Ao executar o Sincronizador.exe pela primeira vez, vai ser criada uma estrutura de pastas com sua utilidade explicada abaixo e também aberta a tela de configuração do Sincronizador que também será explicada abaixo.

Estrutura de pastas

Abaixo a imagem ilustra todas pastas iniciais criadas. OBS: As pastas não devem ser renomeadas para não impactar em problemas na execução do Sincronizador.

EstPastas.png

1 - Pasta ARQUIVOS

Ao abrir a pasta ARQUIVOS temos outras 4 pastas: BUSCADOS, ENVIADOS AO DEMANDER, ENVIADOS AO ERP e ENVIAR.

30.png

1.1 - Pasta BUSCADOS

Ao fazer o processo de BUSCA no Sincronizador é gerado um arquivo no Webservice baseado em todas alterações e inserções que foram feitas depois da data de controle armazenada no arquivo CONFIGURACAO.PROPERTIES do Sincronizador para a empresa configurada. Esse arquivo fica armazenada na pasta BUSCADOS para assim ser manipulado pelo ERP.

1.2 - Pasta ENVIAR

O arquivo que for gerado pelo Integrador ou uma API de integração deve ser colocado dentro da pasta ARQUIVOS. Essa pasta fica responsável por armazenar os arquivos que vão ser enviados ao Webservice Demander. Ao iniciar o processo de ENVIO, os arquivos armazenados dentro da pasta são quebrados em novos arquivos, 1 arquivo por tabela ou mais caso existir mais que 1500 registros da mesma tabela. Dentro da pasta ARQUIVOS é criada uma pasta TEMP que é responsável por armazenar esses arquivos quebrados. Exemplo:


23.png

Ao colocar um arquivo para enviar: OBS: todo arquivo a ser enviado deve ser colocado dentro da pasta ENVIAR e não na pasta Temp.

24.png

Ao enviar, podemos ver a estrutura de arquivos que vai ser criada baseada nas informações contidas no arquivo principal entrando na pasta Temp:

25.png

Cada arquivo é criado com o padrão IDTABELA_DATAHORA. Assim é possível saber exatamente quando o arquivo foi enviado.

26.png

1.3 - Pasta ENVIADOS AO DEMANDER

O arquivo que já foi processado e enviado ao Webservice Demander é armazenado na pasta ENVIADOS AO DEMANDER.

1.4 - Pasta ENVIADOS AO ERP

Como o Sincronizador faz o retorno de dados para alguns BANCOS/ERP integrados, após fazer a BUSCA o arquivo é processado, as informações são enviadas ao ERP e logo movido para a pasta ENVIADOS AO ERP. Para BANCOS/ERP não integrados, o arquivo que foi BUSCADO e já foi enviado ao ERP pode ser armazenado nessa pasta também.

4 - Pasta Arquivos BAT

Um arquivo com extensão .bat pode ser definido como um conjunto de comandos executados em lote (sequencialmente). Criado para o MS-DOS tem a função de automatizar tarefas rotineiras e muitas vezes trabalhosas. Primeiramente, criamos um arquivo no bloco de notas podendo já conter os comandos de execução do DOS e salvamos na extensão .bat, para isso, basta incluirmos “.bat” no fim do nome do arquivo quando for salvar. Segue exemplo:

ArquivoBat.png

3 - Pasta CONFIGURACAO

O arquivo de configuração do Sincronizador é armazenado na pasta CONFIGURACAO. Esse arquivo de configuração armazena as informações da empresa configurada assim como o token, datas de cada processo e informações de conexão no banco de dados integrado.

4 - Pasta LOG

Toda informação que é exibida na tela de log no Sincronizador é salva num arquivo texto. É criado um arquivo com o padrão AAAA-MM-DD. Nesta pasta é armazenado toda informação de logs que acontecem no Sincronizador.

5 - Pasta TABELAS DE BUSCA NO ERP

Cada consulta SQL cadastrada no Integrador é armazenado na pasta TABELAS DE BUSCA NO ERP.

Configurando a empresa

Ao abir a tela de configuração do Sincronizador, é necessário definir algumas configurações.

Config1.png

1 - Token da empresa

Ao cadastrar a empresa no Demanderweb é criado uma sequência de caracteres chamada de TOKEN. Esse token deve ser colocado no campo texto para o Sincronizador saber para qual empresa enviar/buscar registros.

2 - Processos

Como o Sincronizador trabalha automaticamente é possível definir um determinado tempo para cada processo ser executado. Esse tempo é definido pela empresa mesmo, baseado na necessidade da atualização dos registros.

3 - Ambiente de trabalho

O Sincronizador pode enviar/buscar registros de vários Web services. Os ambientes de DESENVOLVIMENTO e HOMOLOGAÇÃO são usados para testes internos, ou seja se não tiver ordens de usar esses ambientes sempre use o PRODUÇÃO. Ao salvar as configurações vamos a tela de sincronização.

Tela de Sincronização

Com as configurações validadas é apresentada a tela abaixo. Essa tela é responsável por executar os processos de envio e busca no Demanderweb assim como a busca e envio ( caso implementado ) no ERP configurado.

TelaSincronizacao.png

1 - Botão Enviar

Responsável por fazer a geração do arquivo no ERP, executar o processo do arquivo .bat de pré envio e enviar os registros ao Demanderweb.

2 - Botão Buscar

Responsável por buscar um arquivo com os registros novos e editados no Demanderweb passando uma data inicial que é armazenada no arquivo CONFIGURACAO e caso implementado, retorna os registros buscados para o ERP configurado.

3 - Botão Iniciar/Parar

Responsável por iniciar ou parar o processo automático de envio e busca. Caso iniciado, o Sincronizador habilita a informação do contador de tempo de cada processo:

Timer.png

Quando o contador chegar no valor 0, é executado o respectivo processo. Quando iniciado o processo automático, é criado também o System Tray que é situada no Windows Taskbar, geralmente no canto direito inferior ao lado do relógio. Mesmo fechando o Sincronizador, o mesmo continua rodando. Para finalizar é preciso parar o processo automático ou ir até a Taskbar do Windows, procurar o ícone do Sincronizador, clicar com o botão direito do mouse e em FECHAR. Para exibir é só clicar na opção MOSTRAR.

SystemTray.png

4 - Menu Configuração

Responsável pelas configurações da empresa. Token, tempo de cada processo e ambiente de trabalho.

5 - Menu Integrador

Responsável por conectar no banco de dados do cliente e gerar os registros conforme scripts criados. Seguindo o manual temos um capítulo exemplificando a utilização do Integrador.

6 - Menu Ajuda

Responsável por abrir o manual do Sincronizador ( Essa página ).

Integrador

Tela de integração

O Integrador é utilizado para buscar os registros do banco de dados configurado através dos scripts SQLs cadastrados. Ao clicar no menu Integrador da tela de sincronização é aberta a seguinte tela:

IntegradorInfo.png

Configuração

Responsável pela conexão com o banco de dados utilizado.

ConfigIntegrador.png

1 - Menu Ajuda

Abre um arquivo texto com exemplos de strings de conexão para cada banco implementado no Sincronizador.

2 - Caixa de seleção Banco de dados

Selecione o banco de dados que vai ser configurado. Hoje temos os bancos FIREBIRD, POSTGRES, MYSQL, SQL SERVER, SYBASE e ORACLE implementados no Sincronizador.

3 - Campo String de conexão com banco de dados

Exemplos de strings de conexão:

EXEMPLO CONEXÃO POSTGRES url=jdbc:postgresql://localhost:5432/teste usuario=demander senha=teste


EXEMPLO PARA CONEXÃO ORACLE url=jdbc:oracle:thin:@111.111.222.222:1521:dsv usuario=demander senha=teste


EXEMPLO PARA CONEXÃO FIREBIRD url=jdbc:firebirdsql:localhost/3050:C:\Bancos\Teste usuario=demander senha=teste


EXEMPLO PARA CONEXÃO MYSQL url=jdbc:mysql://localhost/desenvolvimento usuario=demander senha=teste


EXEMPLO PARA CONEXÃO SQL SERVER url=jdbc:sqlserver://127.0.0.1:1433;databaseName=BASE; usuario=demander senha=teste


EXEMPLO PARA CONEXÃO SYBASE url=jdbc:sybase:Tds:localhost:5000/EXEMPLO usuario=demander senha=teste

4 - Campo Usuário

Usuário cadastrado no banco de dados.

5 - Campo Senha

Senha do usuário cadastrado no banco de dados.

Ao testar a conexão é exibida a mensagem de sucesso ou o respectivo erro é apresentado.

ConexaoCorreta.png

Com a conexão correta, pode ser feito os scripts SQLs. Abaixo temos um exemplo da criação de um script SQL de CIDADE:

ScriptCidade.png

ScriptCidade2.png

Exemplo scripts SQL

Cidade

Exemplo de um SQl da tabela 03 - CIDADE utilizado num cliente/parceiro:

SELECT '03' AS IDENTIFICADOR,

CODCIDADE AS CODIgO,

NOMECIDADE AS DESCRICAO,

ESTADO AS UF,

ATIVO AS ATIVO

FROM TAB_CIDADE

Cliente

Exemplo de um SQL da tabela 18 - CLIENTE utilizado hoje num cliente/parceiro:

SELECT

IDENTIFICADOR,

CODIGO,

CPF_CNPJ,

CASE WHEN COD_CONDICAO_PAGAMENTO = 0 THEN " ELSE COD_CONDICAO_PAGAMENTO END,

CASE WHEN COD_FORMA_PAGAMENTO = 0 THEN " ELSE COD_FORMA_PAGAMENTO END,

CASE WHEN COD_REGIAO AS REGIAO = 0 THEN " ELSE COD_REGIAO AS REGIAO END,

CASE WHEN COD_VENDEDOR = 0 THEN " ELSE COD_VENDEDOR END,

CASE WHEN COD_LISTA_PRECO = 0 THEN " ELSE COD_LISTA_PRECO END,

CASE WHEN COD_CIDADE = 0 THEN " ELSE COD_CIDADE END,

CASE WHEN COD_FILIAL = 0 THEN " ELSE COD_FILIAL END,

NOME_RAZAO,

CASE WHEN NOME_FANTASIA = " THEN NOME_RAZAO ELSE NOME_FANTASIA END,

TIPO_PESSOA,

" AS INTERVALOVISITA,

RG_IE,

TELEFONE_1,

TELEFONE_2,

" AS EMAILCOMPRADOR,

EMAIL_NFE,

" AS EMAILFINANCEIRO,

CONTATO,

ENDERECO,

BAIRRO,

CEP,

UF,

OBSERVACAO,

CASE WHEN ATIVO = '0' THEN '0' ELSE '1' END AS ATIVO,

" as BLOQUEADO,

NUMERO,

COMPLEMENTO,

" AS LATITUDE,

" AS LONGITUDE,

'0' AS BLOQUEAREDICAOFILIAL,

'0' AS BLOQUEAREDICAOLISTAPRECO,

'0' AS BLOQUEAREDICAOCONDICAO,

'0' AS BLOQUEAREDICAOFORMAPAGTO,

INSCRICAO_ESTADUAL_PESSOA_FISICA,

" AS IDDEMANDER,

" AS TIPOCLIENTETRIBUTARIO,

" VENDEDORESRELACIONADOS,

'0' AS PROSPECTO,

" IDENTIFICACAOALTERACAO,

" AS ACORDOCOMERCIAL,

" TRANSPORTADORAPREFERENCIAL,

" TRANSPORTADORAPREFERENCIALREDESPACHO,

" AS DATANASCIMENTO,

" AS SEGMENTOSRELACIONADOS,

" AS NUMCRO,

" AS PERCMAXIMODESCONTO

FROM dba.VDMR_CLIENTE_VIEW

Configuração Banco de dados

Possíveis problemas com conexão Firebird 3.0

Na conexão com o banco de dados Firebird na versão 3.0 pode ser exibido o erro abaixo ao tentar conectar:

ErroFirebird.png

Para solucionar isso, pode ser que seja preciso configurar o arquivo firebird.conf que se localiza na pasta de instalação do banco de dados ( Geralmente no diretório C:\Program Files\Firebird\Firebird_3_0 ). Abra o arquivo com um editor de texto e procure a linha que se inicia com: #WireCrypt = e altere para WireCrypt = Enabled.

ResolucaoErroFirebird.png

Após feita a mudança é preciso reiniciar o serviço do banco de dados. Ao entrar na opção Gerenciador de tarefas e procure a instância do banco Firebird. E Reinicie.

GeenciadorTarefas.png

Após feito isso, o Sincronizador deve conseguir se conectar com o banco Firebird.

ConectadoNoBancoFirebird.png

Importando pedidos pelo Integrador

Criando os scripts

Na versão 3.3 do Sincronizador é possível importar os pedidos do ERP atraves de scripts criados no Integrador. Abaixo segue um passo a passo de como está implementado a funcionalidade.

Primeiramente é preciso criar o script das duas tabelas separadamente. Um script para a tabela 16 - PEDIDO e um script para tabela 17 - ITEMPEDIDO. Segue anexo scripts de exemplo:

Pedido

SELECT '16' as ID,

" as IdentificadorPedido,

" as NumeroPedido,

" as FormaPagamento,

" as CondicaoPagamento,

" as StatusPedido,

" as CodigoFilial,

" as CodigoCliente,

" as CNPJCliente,

" as ListaPreco,

" as CodigoVendedor,

" as CodigoPortador,

" as NumeroPedido,

" as SequencialVendedor,

" as NumeroOrdemCompra,

" as DataHoraEmissao,

" as ValorProdutosComAcrescimoOUdescontoUnitario,

" as ValorProdutosSemAcrescimoOUdescontoUnitario,

" as Quantidade de Itens do Pedido,

" as IdentificadorAparelho,

" as OeracaoFiscalUtilizadaNoPedido,

" as ObservacaoInterna,

" as CampoLivre1,

" as CampoLivre2,

" as CampoLivre3,

" as CodigoTipoPedido,

" as PrevisaoEntrega,

" as CodigoVendedorEmissor,

" as Latitude,

" as Longitude,

" as OrigemPedido,

" as ValordoFrete,

" as ValorTotalPedido,

" as TipoFrete,

" as ValorTotalIPI,

" as ValorTotalICMSST,

" as Cancelado,

" as ObservacaoCliente,

" as TipoDesconto,

" as PercentualDescontoNivelPedido,

" as ValorDescontoNivelPedido,

" as PercentualDescontoJurosCondicaoPagamento,

" as InformacaoCapturaGPS,

" as ValorComissao,

" as CodigoTransportadora,

" as CodigoTransportadoraRedespacho,

" as UniqueIdEnderecoEntrega,

" as Segmento,

" as idERP,

" as UsouTabelaDesconto,

" as CodigoTipoDesconto,

" as ValorTotalTaxaAdicional,

" as ValorAbaterBaseCalculoComissao,

" as NumPedidoPrincipal,

" as CodigoMixProdutos,

" as IDUnicoClienteDemander

FROM TABELA_PEDIDO

ItemPedido

SELECT '17' as Identificador,

" as CodigoItemPedido,

" as CodigoProduto,

" as CodigodoPedido,

" as PercentualDescontoItem,

" as PercentualAcrescimoItem,

" as ValorTotalProdutosDesconto,

" as ValorUnitarioSemDesconto,

" as ValorUnitarioComDesconto,

" as QuantidadedoProduto,

" as IdentificadordoPedido,

" as Observacao,

" as ValorTotaldoIPI,

" as ValorTotalICMSST,

" as ValorTotaldoItemComImpostos,

" as ValorUnitarioComImpostos,

" as ValorDescontoRateado,

" as ValorTotalProdutosSemRateio,

" as ValorUnitarioVendaSemRateio,

" as QuantidadeCancelada,

" as QuantidadeFaturada,

" as ValorFlexMovimentado,

" as ValorProdutosSemDescontoAcrescimoCondicaoPagamento,

" as NumDaOpçãoDePrecopreFixadoUtilizada,

" as DataHoraInsercaoItemAoPedido,

" as PercentualComissao,

" as ValorComissao,

" as QuantidadePorEmbalagem,

" as UsouatabelaDesconto,

" as ValorUnitarioDaListaPreco,

" as ValorTaxaAdicional,

" as ValorAbaterdaBasedeCalculoComissao,

" as PercentualdecomissãodescontandoBonificacoes

FROM TABELA_ITEMPEDIDO

Organizando o pedido

Com os scripts corretamente configurados é possível gerar o arquivo. Exemplo:


3.10

17|45155286|2645|300057|0.0|0.0|59.6|29.8|29.8|2.0|2373352||||59.6|29.8||59.6|29.8||||59.6||||||||||| 17|45155287|454|300057|0.0|0.0|95.6|47.8|47.8|2.0|2373352||||95.6|47.8||95.6|47.8||||95.6||||||||||| 17|45155288|455|300057|0.0|0.0|27.96|13.98|13.98|2.0|2373352||||27.96|13.98||27.96|13.98||||27.96||||||||||| 17|45155289|689|300057|0.0|0.0|7.96|3.98|3.98|2.0|2373352||||7.96|3.98||7.96|3.98||||7.96||||||||||| 17|45155290|3013|300057|0.0|0.0|85.12|42.56|42.56|2.0|2373352||||85.12|42.56||85.12|42.56||||85.12||||||||||| 17|45155291|2645|300058|0.0|0.0|59.6|29.8|29.8|2.0|2373353||||59.6|29.8||59.6|29.8||||59.6||||||||||| 17|45155292|454|300058|0.0|0.0|95.6|47.8|47.8|2.0|2373353||||95.6|47.8||95.6|47.8||||95.6||||||||||| 17|45155293|455|300058|0.0|0.0|27.96|13.98|13.98|2.0|2373353||||27.96|13.98||27.96|13.98||||27.96||||||||||| 17|45155294|689|300058|0.0|0.0|7.96|3.98|3.98|2.0|2373353||||7.96|3.98||7.96|3.98||||7.96|||||||||||

16|2373352|300057||58||1|73|056.518.729-57|3|3||300057|||2017-11-23 12:00:00|276.24|276.24|5|||||||1|||||1|35623.00|35899.24|1|||0|||||||||||||||||||| 16|2373353|300058||46||1|1090|038.642.377-69|3|3||300058|||2017-11-23 12:00:00|191.12|191.12|4|||||||1|||||1|21321.00|21512.12|2|||0||||||||||||||||||||


Como na importação para o Demander é preciso que cada Pedido venha com seus respectivos itens, o exemplo acima ocasionará erro na importação. Para que não aconteça o problema foi criada a seguinte regra:

No script da tabela PEDIDO é fundamental setar no campo IdentificadorPedido com um número único. No script da tabela de ITEMPEDIDO também é preciso setar o campo IdentificadorPedido com o mesmo número único setado no pedido correspondente. Observação: Não é preciso setar esse campo com o idPedido gerado pelo Demander. Com os campos preenchidos corretamente o Sincronizador vai ler esse arquivo e organizar o Pedido colocando logo abaixo seus itens. Exemplo:


01|3.7|

16|2373352|300057||58||1|73|056.518.729-57|3|3||300057|||2017-11-23 12:00:00|276.24|276.24|5|||||||1|||||1|35623.00|35899.24|1|||0|||||||||||||||||||| 17|45155286|2645|300057|0.0|0.0|59.6|29.8|29.8|2.0|2373352||||59.6|29.8||59.6|29.8||||59.6||||||||||| 17|45155287|454|300057|0.0|0.0|95.6|47.8|47.8|2.0|2373352||||95.6|47.8||95.6|47.8||||95.6||||||||||| 17|45155288|455|300057|0.0|0.0|27.96|13.98|13.98|2.0|2373352||||27.96|13.98||27.96|13.98||||27.96||||||||||| 17|45155289|689|300057|0.0|0.0|7.96|3.98|3.98|2.0|2373352||||7.96|3.98||7.96|3.98||||7.96||||||||||| 17|45155290|3013|300057|0.0|0.0|85.12|42.56|42.56|2.0|2373352||||85.12|42.56||85.12|42.56||||85.12|||||||||||

16|2373353|300058||46||1|1090|038.642.377-69|3|3||300058|||2017-11-23 12:00:00|191.12|191.12|4|||||||1|||||1|21321.00|21512.12|2|||0|||||||||||||||||||| 17|45155291|2645|300058|0.0|0.0|59.6|29.8|29.8|2.0|2373353||||59.6|29.8||59.6|29.8||||59.6||||||||||| 17|45155292|454|300058|0.0|0.0|95.6|47.8|47.8|2.0|2373353||||95.6|47.8||95.6|47.8||||95.6||||||||||| 17|45155293|455|300058|0.0|0.0|27.96|13.98|13.98|2.0|2373353||||27.96|13.98||27.96|13.98||||27.96||||||||||| 17|45155294|689|300058|0.0|0.0|7.96|3.98|3.98|2.0|2373353||||7.96|3.98||7.96|3.98||||7.96|||||||||||


Com o arquivo nessa organização vai ser possível fazer a importação.