Mudanças entre as edições de "Integração com WMS da Próton"

De TotaliWiki
Ir para: navegação, pesquisa
(Retira no Depósito)
(Alterar Separação)
 
(2 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 57: Linha 57:
 
=== Alteração em Separações ===
 
=== 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.<br/>
+
É permitido fazer alterações nas quantidades separadas até que seja emitida a NF de Pedido de Reposição.
Com isso, pode-se fazer separações incrementais, ou alteração nas separações.<br/>
+
Nesses casos, a quantidade a separar é limitada a quantidade que foi separada anteriormente.
+
  
 
<syntaxhighlight lang="SQL">
 
<syntaxhighlight lang="SQL">
Linha 282: Linha 280:
 
É permitido fazer alterações nas separações até a emissão da nota de romaneio.
 
É permitido fazer alterações nas separações até a emissão da nota de romaneio.
  
 +
<syntaxhighlight lang="SQL">
 
SELECT *
 
SELECT *
 
   FROM TV_ESEP
 
   FROM TV_ESEP
Linha 287: Linha 286:
 
     AND SEP_FLGEST IN ('P','F')
 
     AND SEP_FLGEST IN ('P','F')
 
     AND SEP_TIPENT = '3'
 
     AND SEP_TIPENT = '3'
 +
</syntaxhighlight>
  
 
== Dados para Entrega ==
 
== 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.
+
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.<br/>
Bem como, endereço, caso seja necessário.
+
Bem como, endereço, caso seja necessário.<br/>
É preciso distinguir essas notas, das demais notas que não devem ser entregues.
+
É preciso distinguir essas notas, das demais notas que não devem ser entregues.<br/>
 
Abaixo maiores informações.
 
Abaixo maiores informações.
  
Disponibilização de Dados para Entrega (Pedido de Reposição):
+
=== Pedido de Reposição ===
  
 
Notas:
 
Notas:
 +
<syntaxhighlight lang="SQL">
 
select tab.codfil, tab.sequen, tab.numecf, tab.codser, tab.numnot, sum(tab.vlrliq) as ven_vlrliq, count(*) as qtditens
 
select tab.codfil, tab.sequen, tab.numecf, tab.codser, tab.numnot, sum(tab.vlrliq) as ven_vlrliq, count(*) as qtditens
 
   from (
 
   from (
Linha 305: Linha 306:
 
) tab
 
) tab
 
  group by tab.codfil, tab.sequen, tab.numecf, tab.codser, tab.numnot
 
  group by tab.codfil, tab.sequen, tab.numecf, tab.codser, tab.numnot
 +
</syntaxhighlight>
  
 
Itens:
 
Itens:
 +
<syntaxhighlight lang="SQL">
 
select ive.*
 
select ive.*
 
   from tv_eive ive                                                                                   
 
   from tv_eive ive                                                                                   
Linha 319: Linha 322:
 
                   and ipe.seqive = ive.sequen
 
                   and ipe.seqive = ive.sequen
 
                   and ipe.numive = ive.numite)
 
                   and ipe.numive = ive.numite)
 +
</syntaxhighlight>
  
 
Observações:
 
Observações:
- Usar tabelas internas somente para filtros. Seus valores podem não ter a correspondência exata do layout de integração.
+
* 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.
+
* Os filtros de filial e data são obrigatórios por questão de desempenho.
  
Disponibilização de Dados para Entrega (Entrega pela Loja):
+
=== Entrega pela Loja ===
  
 
Notas:
 
Notas:
 +
<syntaxhighlight lang="SQL">
 
select tab.codfil, tab.sequen, tab.numecf, tab.codser, tab.numnot, sum(tab.vlrliq) as ven_vlrliq, count(*) as qtditens
 
select tab.codfil, tab.sequen, tab.numecf, tab.codser, tab.numnot, sum(tab.vlrliq) as ven_vlrliq, count(*) as qtditens
 
   from (
 
   from (
Linha 334: Linha 339:
 
) tab
 
) tab
 
  group by tab.codfil, tab.sequen, tab.numecf, tab.codser, tab.numnot
 
  group by tab.codfil, tab.sequen, tab.numecf, tab.codser, tab.numnot
 +
</syntaxhighlight>
  
 
Romaneios:
 
Romaneios:
 +
<syntaxhighlight lang="SQL">
 
select tab.rom_codfil, tab.rom_sequen, tab.rom_codext, tab.rom_placa, sum(tab.vlrliq) as ven_vlrliq, count(*) as qtditens
 
select tab.rom_codfil, tab.rom_sequen, tab.rom_codext, tab.rom_placa, sum(tab.vlrliq) as ven_vlrliq, count(*) as qtditens
 
   from (
 
   from (
Linha 343: Linha 350:
 
) tab
 
) tab
 
  group by tab.rom_codfil, tab.rom_sequen, tab.rom_codext, tab.rom_placa
 
  group by tab.rom_codfil, tab.rom_sequen, tab.rom_codext, tab.rom_placa
 
+
</syntaxhighlight>
  
 
Itens:
 
Itens:
 +
<syntaxhighlight lang="SQL">
 
select ive.codfil, ive.sequen, ive.numite, ive.numecf, ive.codser, ive.numnot, ive.vlrliq,
 
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*/
 
       /*Incluir aqui qualquer coluna da TV_EIVE que se queira*/
Linha 366: Linha 374:
 
           /*Incluir aqui qualquer coluna da TV_EIVE que se queira*/
 
           /*Incluir aqui qualquer coluna da TV_EIVE que se queira*/
 
           rom.codfil, rom.sequen, rom.codext, rom.placas
 
           rom.codfil, rom.sequen, rom.codext, rom.placas
 +
</syntaxhighlight>
  
Disponibilização de Dados para Entrega (Entrega com Televendas):
+
=== Entrega com Televendas ===
  
 
Notas:
 
Notas:
 +
<syntaxhighlight lang="SQL">
 
select tab.codfil, tab.sequen, tab.numecf, tab.codser, tab.numnot, sum(tab.vlrliq) as ven_vlrliq, count(*) as qtditens
 
select tab.codfil, tab.sequen, tab.numecf, tab.codser, tab.numnot, sum(tab.vlrliq) as ven_vlrliq, count(*) as qtditens
 
   from (
 
   from (
Linha 377: Linha 387:
 
) tab
 
) tab
 
  group by tab.codfil, tab.sequen, tab.numecf, tab.codser, tab.numnot
 
  group by tab.codfil, tab.sequen, tab.numecf, tab.codser, tab.numnot
 +
</syntaxhighlight>
  
 
Romaneios:
 
Romaneios:
 +
<syntaxhighlight lang="SQL">
 
select tab.rom_codfil, tab.rom_sequen, tab.rom_codext, tab.rom_placa, sum(tab.vlrliq) as ven_vlrliq, count(*) as qtditens
 
select tab.rom_codfil, tab.rom_sequen, tab.rom_codext, tab.rom_placa, sum(tab.vlrliq) as ven_vlrliq, count(*) as qtditens
 
   from (
 
   from (
Linha 386: Linha 398:
 
) tab
 
) tab
 
  group by tab.rom_codfil, tab.rom_sequen, tab.rom_codext, tab.rom_placa
 
  group by tab.rom_codfil, tab.rom_sequen, tab.rom_codext, tab.rom_placa
 
+
</syntaxhighlight>
  
 
Itens:
 
Itens:
 +
<syntaxhighlight lang="SQL">
 
select ive.codfil, ive.sequen, ive.numite, ive.numecf, ive.codser, ive.numnot, ive.vlrliq,
 
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*/
 
       /*Incluir aqui qualquer coluna da TV_EIVE que se queira*/
Linha 410: Linha 423:
 
           /*Incluir aqui qualquer coluna da TV_EIVE que se queira*/
 
           /*Incluir aqui qualquer coluna da TV_EIVE que se queira*/
 
           rom.codfil, rom.sequen, rom.codext, rom.placas
 
           rom.codfil, rom.sequen, rom.codext, rom.placas
 +
</syntaxhighlight>
  
 +
=== Retira no Depósito ===
  
Disponibilização de Dados para Entrega (Retira no Depósito):
+
<syntaxhighlight lang="SQL">
 
select ive.codfil, ive.sequen, ive.numite, ive.numecf, ive.codser, ive.numnot, ive.vlrliq
 
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*/
 
       /*Incluir aqui qualquer coluna da TV_EIVE que se queira*/
Linha 430: Linha 445:
 
  group by ive.codfil, ive.sequen, ive.numite, ive.numecf, ive.codser, ive.numnot, ive.vlrliq
 
  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*/
 
           /*Incluir aqui qualquer coluna da TV_EIVE que se queira*/
 +
</syntaxhighlight>

Edição atual tal como às 12h25min de 22 de novembro de 2016

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>, <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.

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 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 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>

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 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.

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>
 
) 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.

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

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

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*/