Mudanças entre as edições de "Integração com WMS da Próton"
(→Alteração em Separações) |
(→Entrega pela Loja) |
||
Linha 70: | Linha 70: | ||
== Entrega pela Loja == | == Entrega pela Loja == | ||
− | Processo | + | === Processo === |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | Observações: | + | * 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:<br/> | ||
Apesar de serem processos bem diferentes no Totall Commerce, não há diferença na integração para os tipos de entrega pela loja: | Apesar de serem processos bem diferentes no Totall 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 === | ||
− | + | <syntaxhighlight lang="SQL"> | |
SELECT CRIA_SEPARACAO_FULL(<Processa Devoluções de Separação>) | SELECT CRIA_SEPARACAO_FULL(<Processa Devoluções de Separação>) | ||
+ | </syntaxhighlight> | ||
− | Parâmetros: | + | Parâmetros:<br/> |
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". | 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: | Condições que a Próton deve usar para obter as separações deste processo: | ||
+ | |||
+ | <syntaxhighlight lang="SQL"> | ||
SELECT * | SELECT * | ||
FROM TV_ESEP | FROM TV_ESEP | ||
Linha 104: | Linha 111: | ||
AND SEP_FLGEST = 'A' | AND SEP_FLGEST = 'A' | ||
AND SEP_TIPENT IN ('2','5','7') | AND SEP_TIPENT IN ('2','5','7') | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Disponibilizar Motorista === | ||
− | |||
Condições que a Próton deve usar para obter os dados de motorista: | Condições que a Próton deve usar para obter os dados de motorista: | ||
+ | |||
+ | <syntaxhighlight lang="SQL"> | ||
SELECT * | SELECT * | ||
from TV_EPAR | from TV_EPAR | ||
where TIPCLI7 = 'T' | where TIPCLI7 = 'T' | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Receber Romaneio === | ||
− | |||
Como a Próton deve mandar o registro na TI_ROM: | Como a Próton deve mandar o registro na TI_ROM: | ||
− | CODFIL -> Filial do processo; | + | * CODFIL -> Filial do processo; |
− | CODEXT -> Identificador único da carga no sistema da Próton; | + | * CODEXT -> Identificador único da carga no sistema da Próton; |
− | DATCRI -> Data e hora atuais; | + | * DATCRI -> Data e hora atuais; |
− | FILMOT -> Utilizar FILCLI obtido na TV_EPAR; | + | * FILMOT -> Utilizar FILCLI obtido na TV_EPAR; |
− | CODMOT -> Utilizar CODCLI obtido na TV_EPAR; | + | * CODMOT -> Utilizar CODCLI obtido na TV_EPAR; |
− | PLACA -> Informar placa do veículo; | + | * PLACA -> Informar placa do veículo; |
− | FLGEST -> "A". | + | * FLGEST -> "A". |
+ | |||
+ | === Receber Separação === | ||
− | |||
Como a Próton deve mandar o registro na TI_SEP: | 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; | + | * 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; | + | * SEQUEN -> Deve devolver o dado que puxou da view TV_ESEP no campo SEP_SEQUEN; |
− | DATCRI -> Data e hora atuais; | + | * DATCRI -> Data e hora atuais; |
− | CONTEM -> Quantidade separada (pode ser menor ou igual a SEP_QTDSEP da view); | + | * 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); | + | * 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. | + | * ROM_CODEXT -> Identificador único da carga no sistema da Próton. |
− | Observações: | + | Observações:<br/> |
A soma de CONTEM e QTDFAL nunca pode ultrapassar SEP_QTDSEP da view. | A soma de CONTEM e QTDFAL nunca pode ultrapassar SEP_QTDSEP da view. | ||
− | Retorno de Fechamento do Romaneio | + | === Retorno de Fechamento do Romaneio === |
+ | |||
Como a Próton deve mandar o registro na TI_ROM: | Como a Próton deve mandar o registro na TI_ROM: | ||
− | CODFIL -> Filial do processo; | + | * CODFIL -> Filial do processo; |
− | CODEXT -> Identificador único da carga no sistema da Próton; | + | * CODEXT -> Identificador único da carga no sistema da Próton; |
− | DATCRI -> Data e hora atuais; | + | * DATCRI -> Data e hora atuais; |
− | FILMOT -> Informar mesmo FILCLI informado anteriormente; | + | * FILMOT -> Informar mesmo FILCLI informado anteriormente; |
− | CODMOT -> Informar mesmo CODCLI informado anteriormente; | + | * CODMOT -> Informar mesmo CODCLI informado anteriormente; |
− | PLACA -> Informar mesma placa do veículo informada anteriormente; | + | * PLACA -> Informar mesma placa do veículo informada anteriormente; |
− | FLGEST -> "F". | + | * FLGEST -> "F". |
− | Observação: | + | Observação:<br/> |
Só mandar o fechamento do romaneio, depois de ter certeza de que todos os itens da separação foram processados. | Só mandar o fechamento do romaneio, depois de ter certeza de que todos os itens da separação foram processados. | ||
+ | <syntaxhighlight lang="SQL"> | ||
SELECT COUNT(*) | SELECT COUNT(*) | ||
FROM TI_SEP | FROM TI_SEP | ||
WHERE STATUS = 0 | WHERE STATUS = 0 | ||
AND ROM_CODEXT = <Identificador único da carga no sistema da Próton> | AND ROM_CODEXT = <Identificador único da carga no sistema da Próton> | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Alteração em Separações === | ||
− | |||
Antes que a carga esteja fechada, é possível realizar alterações nas quantidades separadas ou em falta. | Antes que a carga esteja fechada, é possível realizar alterações nas quantidades separadas ou em falta. | ||
+ | |||
+ | <syntaxhighlight lang="SQL"> | ||
SELECT * | SELECT * | ||
FROM TV_ESEP | FROM TV_ESEP | ||
WHERE SEP_ORIGEM = 'V' | WHERE SEP_ORIGEM = 'V' | ||
AND SEP_FLGEST IN ('P','F') | AND SEP_FLGEST IN ('P','F') | ||
+ | </syntaxhighlight> | ||
== Entrega com Televendas == | == Entrega com Televendas == |
Edição das 12h02min de 22 de novembro de 2016
Este artigo descreve a integração com o WMS da Próton.
Índice
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>, <Número de Dias>)
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.
Disponibilização de Dados
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'
Retorno de Dados
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
Depois que a Próton mandar as separações, elas estarão disponíveis na view de integração até que o usuário emita a NF.
Com isso, pode-se fazer separações incrementais, ou alteração nas separações.
Nesses casos, a quantidade a separar é limitada a quantidade que foi separada anteriormente.
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 Totall 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>)
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 Motorista
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.
Retorno de 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>
Alteração em Separações
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 Totall 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.
Função para Criar Separações: Idem Entrega pela Loja.
Disponibilização de Dados da Separação: 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')
Disponibilização de Dados do Motorista: Idem Entrega pela Loja.
Retorno de Dados do Romaneio: Idem Entrega pela Loja.
Retorno de Dados da Separação: Idem Entrega pela Loja.
Retorno de Fechamento do Romaneio: Idem Entrega pela Loja.
Alteração em Separações: 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.
Função para Criar Separações: Idem Entrega pela Loja.
Disponibilização de Dados da Separação: 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'
Retorno de Dados da Separação: Idem Entrega pela Loja.
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.
Disponibilização de Dados para Entrega (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>
) 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> and ive.ven_dathor >= <Filtro de Data> 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.
Disponibilização de Dados para Entrega (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>
) 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>
) 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> and ive.ven_dathor >= <Filtro de Data> 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
Disponibilização de Dados para Entrega (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>
) 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>
) 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> and ive.ven_dathor >= <Filtro de Data> 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
Disponibilização de Dados para Entrega (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> and ive.ven_dathor >= <Filtro de Data> 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*/