Totali Middleware – Versão 6.1G | Integração com e-commerce Magazord.
O Magazord é uma plataforma de E-commerce que oferece suporte e funcionalidades em todos os aspectos que envolvem uma operação de comércio online e que é utilizado por nosso cliente Pontão Calçados.
Configuração
Totali Config
No cadastro de filiais, selecione a filial que será usada no E-Commerce e marque a opção [Exportar para Web?]
Caso seja utilizado algum Subestoque, deverá ser marcada a opção [Exportar para Web].
WSMiddleware
Nas abas [ Integração ], [ Magazord ], marcar [ Ativada ] e informar [ Tempo (em minutos) ] (de quanto em quanto tempo será executada a integração).
Acesse a aba [ Configurações Empresa ], edite a empresa que fará a integração com Magazord.
Nas abas [ 7 – Integração ], [ Magazord ] informe todos os campos.
Nas abas [ Integração ], [ Magazord ], marque [ Ativada ] e informe [ Tempo (em minutos)]. Esse será o intervalo de tempo em que será executada a integração.
Organograma do fluxo completo da integração.
API Magazord
A API Magazord trata as derivações em 4 itens distintos:
1 – COR EXIBE PAI | 2 – TAMANHO | 3 – ÚNICO | 4 – COR EXIBE FILHOS
Commerce
No Commerce, tratamos esses valores como Divisão e Subdivisão e para adequação nos relacionamentos com as informações da API e será necessário incluir esses relacionamentos na tabela integracaoChave da Guarda de forma manual.
Script para inclusão e criação dos relacionamentos:
INSERT INTO public.integracaochave (intchv_cnpj, intchv_datinc, intchv_atu_em, intchv_export, intchv_tipint, intchv_tabint, intchv_chvint, intchv_tabcom, intchv_chvcom) VALUES(‘11111111111111’, ‘2022-11-11 17:31:58.662’, ‘2022-11-14 14:30:07.139’, ‘F’, 6, ‘derivacoes’, ‘4’, ‘derivacao’, ‘COR EXIBE FILHOS’);
INSERT INTO public.integracaochave (intchv_cnpj, intchv_datinc, intchv_atu_em, intchv_export, intchv_tipint, intchv_tabint, intchv_chvint, intchv_tabcom, intchv_chvcom) VALUES(‘11111111111111’, ‘2022-11-11 17:31:59.489’, ‘2022-11-14 14:30:08.600’, ‘F’, 6, ‘derivacoes’, ‘2’, ‘derivacao’, ‘TAMANHO’);
INSERT INTO public.integracaochave (intchv_cnpj, intchv_datinc, intchv_atu_em, intchv_export, intchv_tipint, intchv_tabint, intchv_chvint, intchv_tabcom, intchv_chvcom) VALUES(‘11111111111111’, ‘2022-11-11 17:31:59.240’, ‘2022-11-11 17:56:09.549’, ‘F’, 6, ‘derivacoes’, ‘3’, ‘derivacao’, ‘ÚNICO’);
INSERT INTO public.integracaochave (intchv_cnpj, intchv_datinc, intchv_atu_em, intchv_export, intchv_tipint, intchv_tabint, intchv_chvint, intchv_tabcom, intchv_chvcom) VALUES(‘11111111111111’, ‘2022-11-11 17:32:01.500’, ‘2022-11-11 17:56:12.161’, ‘F’, 6, ‘derivacoes’, ‘1’, ‘derivacao’, ‘COR EXIBE PAI’);
INSERT INTO public.integracaochave (intchv_cnpj, intchv_datinc, intchv_atu_em, intchv_export, intchv_tipint, intchv_tabint, intchv_chvint, intchv_tabcom, intchv_chvcom) VALUES(‘11111111111111’, ‘2022-11-16 16:50:21.395’, ‘2022-11-16 16:50:21.395’, ‘F’, 6, ‘derivacoes’, ‘3’, ‘derivacao’, ‘SUB DIVISAO’);
INSERT INTO public.integracaochave (intchv_cnpj, intchv_datinc, intchv_atu_em, intchv_export, intchv_tipint, intchv_tabint, intchv_chvint, intchv_tabcom, intchv_chvcom) VALUES(‘11111111111111’, ‘2022-11-14 10:16:36.210’, ‘2022-11-14 10:16:36.210’, ‘F’, 6, ‘derivacoes’, ‘3’, ‘derivacao’, ‘DIVISAO’);
INSERT INTO public.integracaochave (intchv_cnpj, intchv_datinc, intchv_atu_em, intchv_export, intchv_tipint, intchv_tabint, intchv_chvint, intchv_tabcom, intchv_chvcom) VALUES(‘11111111111111’, ‘2022-11-11 17:32:01.500’, ‘2022-11-14 14:30:11.586’, ‘F’, 6, ‘derivacoes’, ‘1’, ‘derivacao’, ‘1’);
INSERT INTO public.integracaochave (intchv_cnpj, intchv_datinc, intchv_atu_em, intchv_export, intchv_tipint, intchv_tabint, intchv_chvint, intchv_tabcom, intchv_chvcom) VALUES(‘11111111111111’, ‘2022-11-11 17:32:01.500’, ‘2022-11-14 14:30:08.251’, ‘F’, 6, ‘derivacoes’, ‘1’, ‘derivacao’, ‘COR’);
INSERT INTO public.integracaochave (intchv_cnpj, intchv_datinc, intchv_atu_em, intchv_export, intchv_tipint, intchv_tabint, intchv_chvint, intchv_tabcom, intchv_chvcom) VALUES(‘11111111111111’, ‘2022-11-11 17:32:01.500’, ‘2022-11-14 14:30:08.251’, ‘F’, 6, ‘derivacoes’, ‘2’, ‘derivacao’, ‘2’);
INSERT INTO public.integracaochave (intchv_cnpj, intchv_datinc, intchv_atu_em, intchv_export, intchv_tipint, intchv_tabint, intchv_chvint, intchv_tabcom, intchv_chvcom) VALUES(‘11111111111111’, ‘2022-11-11 17:31:58.662’, ‘2022-11-14 14:30:07.139’, ‘F’, 6, ‘derivacoes’, ‘4’, ‘derivacao’, ‘4’);
INSERT INTO public.integracaochave (intchv_cnpj, intchv_datinc, intchv_atu_em, intchv_export, intchv_tipint, intchv_tabint, intchv_chvint, intchv_tabcom, intchv_chvcom) VALUES(‘11111111111111’, ‘2022-11-16 16:50:22.803’, ‘2022-11-16 16:50:22.803’, ‘F’, 6, ‘derivacoes’, ‘3’, ‘derivacao’, ‘SEMENTE’);
INSERT INTO public.integracaochave (intchv_cnpj, intchv_datinc, intchv_atu_em, intchv_export, intchv_tipint, intchv_tabint, intchv_chvint, intchv_tabcom, intchv_chvcom) VALUES(‘11111111111111’, ‘2022-11-16 16:50:22.793’, ‘2022-11-16 16:50:22.793’, ‘F’, 6, ‘derivacoes’, ‘2’, ‘derivacao’, ’41/42′);
INSERT INTO public.integracaochave (intchv_cnpj, intchv_datinc, intchv_atu_em, intchv_export, intchv_tipint, intchv_tabint, intchv_chvint, intchv_tabcom, intchv_chvcom) VALUES(‘11111111111111’, ‘2022-11-11 17:32:01.500’, ‘2022-11-14 14:30:08.251’, ‘F’, 6, ‘derivacoes’, ‘3’, ‘derivacao’, ‘0’);
O Projeto
Neste projeto não serão importados os pedidos, mas as vendas, ou seja, as NF-e através do arquivo XML e também os clientes, porque, obrigatoriamente, a Magazord exige que a emissão da nota seja pelo seu sistema.
Conforme análise, foi criado um processo de integração contínua no qual será possível realizar a configuração do tempo para integração, onde o processo irá executar conforme o tempo definido e irá exportar ou importar os documentos alterados ou incluídos no período.
Ex.: Supondo que a última execução foi as 01/08/2022 00:00:00, e agora seja 03/08/2022 18:00:00 o sistema deverá pegar as mudanças de cadastros que ocorreram nesse intervalo e realizar o processo de envio ao e-commerce, assim como deverá pegar as notas emitidas pelo e-commerce nesse intervalo e realizar a importação. Nesse sentido foi criado a rotina de sincronização conforme o tempo configurado.
Também foi criado a integração de documentos e envio dos cadastros em rotinas em paralelo pois a integração de cadastros pode levar 2 horas e não podemos ficar esse tempo sem importar as notas geradas pelo e-commerce, processo similar a sincronização do Totali Mobi.
Considerando o escopo, o projeto está dividido em duas partes:
- Exportação dos Cadastros
- Importação das Notas Fiscais
EXPORTAÇÃO DOS CADASTROS
Para integração dos produtos, foi necessário criar a integração dos seguintes dados:
CATEGORIAS
Pode ser selecionada de acordo com uma tabela específica para esta finalidade junto ao cliente, tendo como origem obrigatória uma das seguintes tabelas: TD_DEP, TD_CLI1, TD_CLI2, TD_CLI3 ou TD_CLI4.
MARCAS
Tem como origem das informações, a tabela TT_MAR do Commerce
DERIVAÇÕES
Tem como origem das informações, as 4 derivações existentes na API Magazord (conforme INSERT disponibilizado acima)
ITENS VINCULADOS ÀS DERIVAÇÕES > ItemDerivacao
Tem como origem das informações, as tabelas TT_DIV e TT_SUB do Commerce com relacionamento para TD_DIV e TD_SUB respectivamente, das quais com base no relacionamento especificado no INSERT do item 2 serão retornados os itens associados a COR, TAMANHO, ÚNICO de acordo com seus respectivos registros de Divisão e Subdivisão.
ITENS DA DIVISÃO
ITENS DA SUBDIVISÃO
Esses itens deverão ser associados de forma automática ao executar o serviço do middleware onde conforme os registros são retornados da API Magazord, os mesmos terão suas respectivas associações com um identificador chave na tabela integracaoChave da Guarda.
Exemplo:
PRODUTO
Tem como origem das informações, a tabela TT_PRO com relacionamento com as tabelas TT_MAR, TD_DEP, TD_CL1, TD_CL2, TD_CL3, TD_CL4, TD_MED, TD_GRA, TD_DIV E TD_SUB
O produto é enviado a API conforme o seguinte modelo:
{
“codigo”: “00154604A”,
“nome”: “TENIS BEIRA RIO”,
“marca”: 7782,
“derivacoes”: [1,2],
“categorias”: [44],
“unidadeMedida”: “PC”,
“origemFiscal”: 0,
“produtoLoja”: [{“titulo”:””,”loja”:1}],
“modelo”: “TENIS BEIRA RIO 4174419 VERMELHO”,
“acompanha”: “”,
“palavraChave”: “TENIS”,
“peso”: 0,
“altura”: 0,
“largura”: 0,
“comprimento”: 0,
“ativo”: true,
“ncm”: “64029990”,
“cest”: “”
}
É obrigatório o envio das seguintes informações:
codigo = [PRO.REFBAS];
nome = [PRO.DESMAT];
marca = [MAR.CODMAR];
origemFiscal = [PRO.ORIPRO];
derivacoes = [1], [2], [3] ou [1,2];
categorias = [CODTAB]; Tabela vinculada em Busca Categoria Em WSMiddleware
produtoLoja = [IDLOJA]; De acordo com informado em ID Loja WSMiddleware
Importante: Marcas e Categorias deverão ser enviadas antes do envio do Produto.
GRADE
produtoDerivacao > Magazord
Tem como origem das informações, a tabela TT_GRA com relacionamento com as tabelas TT_PRO, TT_EAN, TD_GRA, TD_DIV, TD_SUB, TT_DIV e TT_SUB. Nesse processo, enviamos todos os itens da grade relacionados com os produtos enviados anteriormente, assim como as derivações que pertence a ele.
Exemplo:
Para o produto enviado no exemplo acima código: 00154604A
Enviaremos todos os itens da grade relacionados a ele:
O item da grade é enviado a API conforme o seguinte modelo:
{
“codigoProduto”: “00154604A”,
“codigo”: “08393487”,
“nome”: “TENIS BEIRA RIO”,
“peso”: 0,
“altura”: 0,
“largura”: 0,
“comprimento”: 0,
“ativo”: false,
“derivacoes”: [{
“derivacao”: 2,
“valor”: “37”
}, {
“derivacao”: 1,
“valor”: “VERMELHO”
}
],
“lojas”: [1]
}
É obrigatório o envio das seguintes informações:
codigoProduto = [PRO.REFBAS];
codigo = [GRA.REFPRO];
nome = [PRO.DESMAT];
derivacoes = [1], [2], [3] ou [1,2];
produtoLoja = [IDLOJA]; De acordo com informado em ID Loja WSMiddleware
Como no envio do produto informamos que possui “derivacoes”: [1,2], no envio dos itens da grade informaremos quais são as respectivas derivações, nesse caso acima:
“derivacoes”: [{
“derivacao”: 2,
“valor”: “37”
}, {
“derivacao”: 1,
“valor”: “VERMELHO”
}
],
1 = COR e 2 = TAMANHO
LISTA DE PREÇOS
Tem como origem das informações a tabela TT_PRE com relacionamento com as tabelas TT_GRA e TT_CFG.
Nesse processo foi considerado a tabela de preço padrão configurada para operação de venda em TT_CFG.FILPRE e TT_CFG.CODPRE e o envio do preço é realizado para cada item da grade dentro da filial.
É obrigatório o envio das seguintes informações:
produto = [GRA.REFPRO];
tabelaPreco = [PRE.CODPRE];
precoVenda = [PRE.PRECOV];
ESTOQUE
Tem como origem das informações a tabela TT_SAL com relacionamento com as tabelas TD_FIL, TD_MUL, TD_SUB, TT_SUB, TV_IPR, TT_GRA, TT_PRO e TT_CFG.
Nesse processo carregamos o saldo conforme TT_SAL, o qual faz o filtro pela filial e sub-estoque que será exportado para API, verifica-se a diferença para o estoque atual da API e gera a requisição para acerto de estoque conforme saldo atual no sistema.
É obrigatório o envio das seguintes informações:
produto = [PRO_REFERENCIA];
deposito = [1]; Não é devolvido o código do depósito pela API então enviamos 1
quantidade = [PRO_SALDO];
tipo = [1]; Físico (2 – Previsto, 3 – Reservado, 4 – Virtual)
tipoOperacao = [0]; Ajuste (1 – Entrada, 2 – Saída)
IMPORTAÇÃO DAS NOTAS FISCAIS
Nesse processo, consultamos o método listPedido que retornará uma lista de pedidos filtrando pelo período de alteração do status “dataHoraUltimaAlteracaoSituacao[gte]” e “situacao in (6-Nota Fiscal Emitida, 7-Transporte, 8-Entregue, 20-Devolvido Estoque (Dep. 1), 21-Devolvido Estoque (Outros Dep.), 28-Nota Fiscal Denegada)”.
Com o retorno dos dados, realizamos uma nova consulta ao método getPedido informando o pedidoCodigo que por sua vez retornará o ID referente a sua respectiva Nota Fiscal.
Novamente consultamos um novo método getNotaFiscalById – Consulta Nota Fiscal pelo ID que enfim retorna o arquivo XML para que possamos realizar a sua importação para a base do Middleware e do Commerce.
Nesse ponto usamos o método já existente no middleware para realizar as importações, persistência dos dados e finalmente a gravação das informações da NF-e através do arquivo XML na base de dados do cliente.