Skip to content

Este artigo descreve a integração com o WMS da Próton.

Pedido de Reposição ​

Processo ​

  • No Backoffice, usuário registra Pedido de Reposição;
  • No Backoffice, supervisor autoriza o pedido;
  • Próton executa função CriaSeparacaoReposicao;
  • Próton lê separação na view TV_ESEP;
  • Processo de separação pelo WMS é realizado;
  • Próton insere separação na tabela TI_SEP;
  • Middleware de tempos-em-tempos processa as separações da TI_SEP;
  • No CheckOut, usuário emite NF de Pedido de Reposição baseado na separação;
  • Próton lê nota na view TV_EVEN;
  • Processo de entrega pelo WMS é realizado.

Observações:
Existe possibilidade do pedido ser cancelado ou desautorizado após já ter separações criadas. Neste caso, a função CriaSeparacaoReposicao irá cancelar as separações.
Ou seja, ao receber a separação na TI_SEP, sistema apresentará um erro no processamento do registro.
O usuário deverá desfazer o processo no WMS manualmente.
Sistema não permitirá o cancelamento de separações que já vieram pela TI_SEP, ou seja, que já estão separadas ou em falta.

Criar Separações ​

SELECT CriaSeparacaoReposicao(<Filial&gt;, <Número de Dias&gt;)

Parâmetros: Filial: Filial onde foi registrado o pedido. Se mandar NULL vai processar todas as filiais.
Número de Dias: Número de dias pretéritos que serão considerados para encontrar pedidos. Se mandar NULL serão considerados 7 dias apenas.

Disponibilizar Separações ​

Condições que a Próton deve usar para obter as separações deste processo:

SELECT * FROM TV_ESEP WHERE SEP_ORIGEM = 'P' AND SEP_FLGEST = 'A'

Receber Separação ​

Como a Próton deve mandar o registro na TI_SEP:

  • CODFIL -> Deve devolver o dado que puxou da view TV_ESEP no campo SEP_CODFIL;
  • SEQUEN -> Deve devolver o dado que puxou da view TV_ESEP no campo SEP_SEQUEN;
  • DATCRI -> Data e hora atuais;
  • CONTEM -> Quantidade separada (pode ser menor ou igual a SEP_QTDSEP da view);
  • QTDFAL -> Quantidade em falta (pode ser menor ou igual a SEP_QTDSEP da view).

Observações:
A soma de CONTEM e QTDFAL nunca pode ultrapassar SEP_QTDSEP da view.

Alteração em Separações ​

É permitido fazer alterações nas quantidades separadas até que seja emitida a NF de Pedido de Reposição.

SELECT * FROM TV_ESEP WHERE SEP_ORIGEM = 'P' AND SEP_FLGEST IN ('P','F')

Entrega pela Loja ​

Processo ​

  • No Order, usuário registra um orçamento com tipo de entrega Loja Entrega Sem Televendas;
  • No CheckOut, usuário resgata o orçamento e emite a Fatura;
  • Próton executa função CRIA_SEPARACAO_FULL('T');
  • Próton lê separação na view TV_ESEP;
  • Processo de WMS é realizado;
  • Próton insere romaneio na tabela TI_ROM;
  • Próton insere separação na tabela TI_SEP;
  • Próton fecha romaneio na tabela TI_ROM quando todas as separações da carga foram incluídas;
  • Middleware de tempos-em-tempos processa os romaneios da TI_ROM;
  • Middleware de tempos-em-tempos processa as separações da TI_SEP;
  • No CheckOut, usuário utiliza Impressão em Grupo para gerar a Remessa da carga informada.
  • Próton lê nota na view TV_EVEN;
  • Processo de entrega pelo WMS é realizado.

Observações:
Apesar de serem processos bem diferentes no Totali Commerce, não há diferença na integração para os tipos de entrega pela loja:

  • Loja Entrega sem Televendas;
  • Entrega Futura;
  • Venda Sob Encomenda sem Televendas.

Criar Separações ​

SELECT CRIA_SEPARACAO_FULL(<Processa Devoluções de Separação&gt;)

Parâmetros:
Processa Devoluções de Separação: "T" ou "F". Enviar "T" se quiser que a procedure confira notas canceladas ou devolvidas para gerar separações com situação "Devolver". Essas separações já estavam "Separadas" e vinculadas a algum romaneio. De "Devolver", a situação da separação só pode ser alterada para "Cancelado".

Disponibilizar Separações ​

Condições que a Próton deve usar para obter as separações deste processo:

SELECT * FROM TV_ESEP WHERE SEP_ORIGEM = 'V' AND SEP_FLGEST = 'A' AND SEP_TIPENT IN ('2','5','7')

Disponibilizar Motoristas ​

Condições que a Próton deve usar para obter os dados de motorista:

SELECT * FROM TV_EPAR WHERE TIPCLI7 = 'T'

Receber Romaneio ​

Como a Próton deve mandar o registro na TI_ROM:

  • CODFIL -> Filial do processo;
  • CODEXT -> Identificador único da carga no sistema da Próton;
  • DATCRI -> Data e hora atuais;
  • FILMOT -> Utilizar FILCLI obtido na TV_EPAR;
  • CODMOT -> Utilizar CODCLI obtido na TV_EPAR;
  • PLACA -> Informar placa do veículo;
  • FLGEST -> "A".

Receber Separação ​

Como a Próton deve mandar o registro na TI_SEP:

  • CODFIL -> Deve devolver o dado que puxou da view TV_ESEP no campo SEP_CODFIL;
  • SEQUEN -> Deve devolver o dado que puxou da view TV_ESEP no campo SEP_SEQUEN;
  • DATCRI -> Data e hora atuais;
  • CONTEM -> Quantidade separada (pode ser menor ou igual a SEP_QTDSEP da view);
  • QTDFAL -> Quantidade em falta (pode ser menor ou igual a SEP_QTDSEP da view);
  • ROM_CODEXT -> Identificador único da carga no sistema da Próton.

Observações:
A soma de CONTEM e QTDFAL nunca pode ultrapassar SEP_QTDSEP da view.

Receber Fechamento do Romaneio ​

Como a Próton deve mandar o registro na TI_ROM:

  • CODFIL -> Filial do processo;
  • CODEXT -> Identificador único da carga no sistema da Próton;
  • DATCRI -> Data e hora atuais;
  • FILMOT -> Informar mesmo FILCLI informado anteriormente;
  • CODMOT -> Informar mesmo CODCLI informado anteriormente;
  • PLACA -> Informar mesma placa do veículo informada anteriormente;
  • FLGEST -> "F".

Observação:
Só mandar o fechamento do romaneio, depois de ter certeza de que todos os itens da separação foram processados.

SELECT COUNT(*) FROM TI_SEP WHERE STATUS = 0 AND ROM_CODEXT = <Identificador único da carga no sistema da Próton&gt;

Alterar Separação ​

Antes que a carga esteja fechada, é possível realizar alterações nas quantidades separadas ou em falta.

SELECT * FROM TV_ESEP WHERE SEP_ORIGEM = 'V' AND SEP_FLGEST IN ('P','F')

Entrega com Televendas ​

Processo ​

  • No Order, usuário registra um orçamento com tipo de entrega Loja Entrega Com Televendas;
  • Próton executa função CRIA_SEPARACAO_FULL('T');
  • Próton lê separação na view TV_ESEP;
  • Processo de WMS é realizado;
  • Próton insere romaneio na tabela TI_ROM;
  • Próton insere separação na tabela TI_SEP;
  • Próton fecha romaneio na tabela TI_ROM quando todas as separações da carga foram incluídas;
  • Middleware de tempos-em-tempos processa os romaneios da TI_ROM;
  • Middleware de tempos-em-tempos processa as separações da TI_SEP;
  • No CheckOut, usuário utiliza Impressão em Grupo para gerar uma nota completa da carga informada.
  • Próton lê nota na view TV_EVEN;
  • Processo de entrega pelo WMS é realizado.

Observações:
Apesar de serem processos bem diferentes no Totali Commerce, não há diferença na integração para os tipos de entrega pela loja:

  • Loja Entrega com Televendas;
  • Venda Sob Encomenda com Televendas.

Criar Separações ​

Idem Entrega pela Loja.

Disponibilizar Separações ​

Condições que a Próton deve usar para obter as separações deste processo:

SELECT * FROM TV_ESEP WHERE SEP_ORIGEM = 'O' AND SEP_FLGEST = 'A' AND SEP_TIPENT IN ('2','7')

Disponibilizar Motoristas ​

Idem Entrega pela Loja.

Receber Romaneio ​

Idem Entrega pela Loja.

Receber Separação ​

Idem Entrega pela Loja.

Receber Fechamento do Romaneio ​

Idem Entrega pela Loja.

Alterar Separação ​

Antes que a carga esteja fechada, é possível realizar alterações nas quantidades separadas ou em falta.

SELECT * FROM TV_ESEP WHERE SEP_ORIGEM = 'O' AND SEP_FLGEST IN ('P','F') AND SEP_TIPENT IN ('2','7')

Retira no Depósito ​

Processo ​

  • No Order, usuário registra um orçamento com tipo de entrega Retira no Depósito;
  • No CheckOut, usuário resgata o orçamento e emite a Fatura;
  • Próton executa função CRIA_SEPARACAO_FULL('T');
  • Próton lê separação na view TV_ESEP;
  • Processo de WMS é realizado;
  • Próton insere separação na tabela TI_SEP;
  • Middleware de tempos-em-tempos processa as separações da TI_SEP;
  • No CheckOut, usuário utiliza Emissão de Nota Vinculada para gerar a Remessa da carga informada.

Criar Separações ​

Idem Entrega pela Loja.

Disponibilizar Separações ​

Condições que a Próton deve usar para obter as separações deste processo:

SELECT * FROM TV_ESEP WHERE SEP_ORIGEM = 'V' AND SEP_FLGEST = 'A' AND SEP_TIPENT = '3'

Receber Separação ​

Idem Pedido de Reposição.

Alterar Separação ​

É permitido fazer alterações nas separações até a emissão da nota de romaneio.

SELECT * FROM TV_ESEP WHERE SEP_ORIGEM = 'V' AND SEP_FLGEST IN ('P','F') AND SEP_TIPENT = '3'

Dados para Entrega ​

As notas de Pedido de Reposição e Remessa deve ser consultada na TV_EVEN, juntamente com seus itens na TV_EIVE para obtenção dos produtos que deverão ser entregues.
Bem como, endereço, caso seja necessário.
É preciso distinguir essas notas, das demais notas que não devem ser entregues.
Abaixo maiores informações.

Pedido de Reposição ​

Notas:

SELECT tab.codfil, tab.sequen, tab.numecf, tab.codser, tab.numnot, SUM(tab.vlrliq) AS ven_vlrliq, COUNT(*) AS qtditens FROM (   <SELECT dos Itens&gt;   ) tab GROUP BY tab.codfil, tab.sequen, tab.numecf, tab.codser, tab.numnot

Itens:

SELECT ive.* FROM tv_eive ive
WHERE 1=1 AND ive.codfil = <Filial&gt; AND ive.ven_dathor >= <Filtro de Data&gt; AND EXISTS (SELECT 1 AS ok FROM tt_ipe ipe INNER JOIN tt_ivo ivo ON ivo.filipe = ipe.codfil AND ivo.numipe = ipe.numped AND ivo.iteipe = ipe.numite WHERE ipe.filive = ive.codfil AND ipe.seqive = ive.sequen AND ipe.numive = ive.numite)

Observações:

  • Usar tabelas internas somente para filtros. Seus valores podem não ter a correspondência exata do layout de integração.
  • Os filtros de filial e data são obrigatórios por questão de desempenho.

Entrega pela Loja ​

Notas:

SELECT tab.codfil, tab.sequen, tab.numecf, tab.codser, tab.numnot, SUM(tab.vlrliq) AS ven_vlrliq, COUNT(*) AS qtditens FROM (   <SELECT dos Itens&gt;   ) tab GROUP BY tab.codfil, tab.sequen, tab.numecf, tab.codser, tab.numnot

Romaneios:

SELECT tab.rom_codfil, tab.rom_sequen, tab.rom_codext, tab.rom_placa, SUM(tab.vlrliq) AS ven_vlrliq, COUNT(*) AS qtditens FROM (   <SELECT dos Itens&gt;   ) tab GROUP BY tab.rom_codfil, tab.rom_sequen, tab.rom_codext, tab.rom_placa

Itens:

SELECT ive.codfil, ive.sequen, ive.numite, ive.numecf, ive.codser, ive.numnot, ive.vlrliq, /*Incluir aqui qualquer coluna da TV_EIVE que se queira*/ rom.codfil AS rom_codfil, rom.sequen AS rom_sequen, rom.codext AS rom_codext, rom.placas AS rom_placa FROM tv_eive ive INNER JOIN tt_ive fat ON fat.codfil = ive.filori AND fat.sequen = ive.numori AND fat.numite = ive.iteori INNER JOIN tt_ivo ivo ON ivo.filive = fat.codfil AND ivo.seqive = fat.sequen AND ivo.numive = fat.numite INNER JOIN tt_rom rom ON rom.codfil = ivo.filrom AND rom.sequen = ivo.seqrom
WHERE 1=1 AND ive.codfil = <Filial&gt; AND ive.ven_dathor >= <Filtro de Data&gt; GROUP BY ive.codfil, ive.sequen, ive.numite, ive.numecf, ive.codser, ive.numnot, ive.vlrliq, /*Incluir aqui qualquer coluna da TV_EIVE que se queira*/ rom.codfil, rom.sequen, rom.codext, rom.placas

Entrega com Televendas ​

Notas:

SELECT tab.codfil, tab.sequen, tab.numecf, tab.codser, tab.numnot, SUM(tab.vlrliq) AS ven_vlrliq, COUNT(*) AS qtditens FROM (   <SELECT dos Itens&gt;   ) tab GROUP BY tab.codfil, tab.sequen, tab.numecf, tab.codser, tab.numnot

Romaneios:

SELECT tab.rom_codfil, tab.rom_sequen, tab.rom_codext, tab.rom_placa, SUM(tab.vlrliq) AS ven_vlrliq, COUNT(*) AS qtditens FROM (   <SELECT dos Itens&gt;   ) tab GROUP BY tab.rom_codfil, tab.rom_sequen, tab.rom_codext, tab.rom_placa

Itens:

SELECT ive.codfil, ive.sequen, ive.numite, ive.numecf, ive.codser, ive.numnot, ive.vlrliq, /*Incluir aqui qualquer coluna da TV_EIVE que se queira*/ rom.codfil AS rom_codfil, rom.sequen AS rom_sequen, rom.codext AS rom_codext, rom.placas AS rom_placa FROM tv_eive ive INNER JOIN tt_ior ior ON ior.filive = ive.codfil AND ior.seqive = ive.sequen AND ior.numive = ive.numite INNER JOIN tt_ivo ivo ON ivo.filped = ior.codfil AND ivo.tipped = ior.tipped AND ivo.numped = ior.numped AND ivo.numite = ior.numite INNER JOIN tt_rom rom ON rom.codfil = ivo.filrom AND rom.sequen = ivo.seqrom
WHERE 1=1 AND ive.codfil = <Filial&gt; AND ive.ven_dathor >= <Filtro de Data&gt; GROUP BY ive.codfil, ive.sequen, ive.numite, ive.numecf, ive.codser, ive.numnot, ive.vlrliq, /*Incluir aqui qualquer coluna da TV_EIVE que se queira*/ rom.codfil, rom.sequen, rom.codext, rom.placas

Retira no Depósito ​

SELECT ive.codfil, ive.sequen, ive.numite, ive.numecf, ive.codser, ive.numnot, ive.vlrliq /*Incluir aqui qualquer coluna da TV_EIVE que se queira*/ FROM tv_eive ive INNER JOIN tt_ive fat ON fat.codfil = ive.filori AND fat.sequen = ive.numori AND fat.numite = ive.iteori INNER JOIN tt_ivo ivo ON ivo.filive = fat.codfil AND ivo.seqive = fat.sequen AND ivo.numive = fat.numite INNER JOIN tt_ior ior ON ior.filive = fat.codfil AND ior.seqive = fat.sequen AND ior.numive = fat.numite
WHERE 1=1 AND ior.tipent = '3' AND ive.codfil = <Filial&gt; AND ive.ven_dathor >= <Filtro de Data&gt; GROUP BY ive.codfil, ive.sequen, ive.numite, ive.numecf, ive.codser, ive.numnot, ive.vlrliq /*Incluir aqui qualquer coluna da TV_EIVE que se queira*/