MCP - View de Estoques
1. Introdução
Nessa seção de estoque será abordado como é a criação e as informações que retornarão de três Views principais acerca de informações dos saldos dos produtos, sendo que possuímos alguns cenários diferentes de estoque que podem ser utilizados. Sendo elas:
V_VT_ESTOQUE - Retorna o estoque de um tipo de saldo e o local de estoque padrão do produto sem fazer a conversão do múltiplo de venda;
V_VT_ESTOQUETOT - Retorna o estoque de um tipo de saldo e soma o saldo de todos os locais e faz a conversão do múltiplo de venda;
V_VT_ESTOQUEMULT - Retorna o estoque de um tipo de saldo e o local de estoque padrão do produto fazendo a conversão do múltiplo de venda;
2. Informações de Estoque
Apensa de ter mais que um View de Estoque as colunas que retornam são as mesmas, conforme pode ser verificado abaixo:
Campo | Tipo | Obr. | Informação |
---|---|---|---|
erpId | NUMBER(38) | S | Código do Item |
quantidade | NUMBER | S | Quantidade em estoque |
quantidadeMinima | NUMBER | N | Quantidade mínima de estoque |
estabItem | NUMBER(38) | S | Estabelecimento do Item |
dtAlteracaoSinc | TIMESTAMP(6) | S | Data da última sincronização |
3. Views
Abaixo segue o SQL de cada View de Estoque
V_VT_ESTOQUE
CREATE OR REPLACE VIEW VIASOFTVTRINA.V_VT_ESTOQUE ("erpId", "quantidade", "quantidadeMinima", "estabItem", "dtAlteracaoSinc") AS
SELECT
CAST(ITEEST.IDITEM AS INTEGER) "erpId",
VIASOFTMCP.GETSALDOITEMCARR (ITEEST.ESTAB, ITEEST.ESTABITEM, ITEEST.IDITEM, ITEEST.IDESTOQUELOCAL,2,DECODE(COALESCE(ITEREP.ESTABLOCALRET,0), 0, ITEEST.ESTAB,ITEREP.ESTABLOCALRET),
DECODE(COALESCE(LOCRET.IDESTOQUELOCAL,0), 0, ITEEST.IDESTOQUELOCAL, LOCRET.IDESTOQUELOCAL), null, null, COALESCE(WECCON.SDOPRODLOCALRET, 'N')) - DECODE(WECCON.PLATAFORMA, 1, COALESCE(ITEECO.QTDEESGOTA,0), 0) "quantidade",
ITEECO.QTDEESGOTA "quantidadeMinima",
ITEEST.ESTAB "estabItem",
ITEEST.DTALTERACAOSINC "dtAlteracaoSinc"
FROM VIASOFTMCP.ITEMESTAB ITEEST
LEFT JOIN VIASOFTMCP.ITEMMCP ITEMCP
ON ITEMCP.ESTAB = ITEEST.ESTABITEM
AND ITEMCP.IDITEM = ITEEST.IDITEM
LEFT JOIN VIASOFTMCP.WECCONFIG WECCON
ON WECCON.ESTABEC = ITEEST.ESTAB
LEFT JOIN VIASOFTMCP.ITEMREPOSICAO ITEREP
ON ITEREP.ESTAB = ITEEST.ESTAB
AND ITEREP.ESTABITEM = ITEEST.ESTABITEM
AND ITEREP.IDITEM = ITEEST.IDITEM
LEFT JOIN VIASOFTMCP.LOCALRETIRADA LOCRET
ON LOCRET.ESTAB = ITEREP.ESTABLOCALRET
AND LOCRET.IDLOCALRETIRADA = ITEREP.IDLOCALRETIRADA
LEFT JOIN VIASOFTMCP.ITEMECOMMERCE ITEECO
ON ITEECO.ESTAB = ITEEST.ESTABITEM
AND ITEECO.IDITEM = ITEEST.IDITEM
WHERE COALESCE(ITEMCP.TINTA, 'X') <> 'P';
V_VT_ESTOQUETOT
CREATE OR REPLACE VIEW VIASOFTVTRINA.V_VT_ESTOQUETOT ("erpId", "quantidade", "quantidadeMinima", "estabItem", "dtAlteracaoSinc") AS
SELECT
CAST(ITEEST.IDITEM AS INTEGER) "erpId",
CASE
WHEN ITEREP.IDLOCALRETIRADA IS NOT NULL AND (ITEEMP.MULTIPLOVDA > 0 OR ITEEMP.MULTIPLOVDA IS NOT NULL) AND IT.UNIDADE = 'M2' THEN
COALESCE((SELECT SUM(ES.SALDO)
FROM VIASOFTMCP.ESTOQUESALDO ES
WHERE ES.ESTAB = ITEEST.ESTAB
AND ES.IDITEM = ITEEST.IDITEM
AND ES.IDESTOQUETIPO = 2), 0)
ELSE
COALESCE((SELECT SUM(ES.SALDO)
FROM VIASOFTMCP.ESTOQUESALDO ES
WHERE ES.ESTAB = ITEEST.ESTAB
AND ES.IDITEM = ITEEST.IDITEM
AND ES.IDESTOQUETIPO = 2
AND ES.IDESTOQUELOCAL NOT IN (6,7)), 0)
END "quantidade",
ITEECO.QTDEESGOTA "quantidadeMinima",
ITEEST.ESTAB "estabItem",
ITEEST.DTALTERACAOSINC "dtAlteracaoSinc"
FROM VIASOFTMCP.ITEMESTAB ITEEST
LEFT JOIN VIASOFTMCP.ITEMMCP ITEMCP
ON ITEMCP.ESTAB = ITEEST.ESTABITEM
AND ITEMCP.IDITEM = ITEEST.IDITEM
LEFT JOIN VIASOFTBASE.ITEM IT
ON IT.ESTAB = ITEEST.ESTABITEM
AND IT.IDITEM = ITEEST.IDITEM
LEFT JOIN VIASOFTMCP.WECCONFIG WECCON
ON WECCON.ESTABEC = ITEEST.ESTAB
LEFT JOIN VIASOFTMCP.ITEMREPOSICAO ITEREP
ON ITEREP.ESTAB = ITEEST.ESTAB
AND ITEREP.ESTABITEM = ITEEST.ESTABITEM
AND ITEREP.IDITEM = ITEEST.IDITEM
LEFT JOIN VIASOFTMCP.LOCALRETIRADA LOCRET
ON LOCRET.ESTAB = ITEREP.ESTABLOCALRET
AND LOCRET.IDLOCALRETIRADA = ITEREP.IDLOCALRETIRADA
LEFT JOIN VIASOFTMCP.ITEMECOMMERCE ITEECO
ON ITEECO.ESTAB = ITEEST.ESTABITEM
AND ITEECO.IDITEM = ITEEST.IDITEM
LEFT JOIN VIASOFTSYS.FILIAL FIL
ON FIL.ESTAB = ITEEST.ESTAB
LEFT JOIN VIASOFTMCP.ITEMEMP ITEEMP
ON ITEEMP.EMPRESA = FIL.EMPRESA
AND ITEEMP.ESTABITEM = ITEEST.ESTABITEM
AND ITEEMP.IDITEM = ITEEST.IDITEM
WHERE COALESCE(ITEMCP.TINTA, 'X') <> 'P';
V_VT_ESTOQUEMULT
CREATE OR REPLACE VIEW VIASOFTVTRINA.V_VT_ESTOQUEMULT ("erpId", "quantidade", "quantidadeMinima", "estabItem", "dtAlteracaoSinc") AS
SELECT
CAST(ITEEST.IDITEM AS INTEGER) "erpId",
CASE
WHEN ITEREP.IDLOCALRETIRADA IS NOT NULL AND ITEEMP.MULTIPLOVDA > 0 AND IT.UNIDADE = 'M2' THEN
(VIASOFTMCP.GETSALDOITEMCARR (ESTLOC.ESTAB, ITEEST.ESTABITEM, ITEEST.IDITEM, ESTLOC.IDESTOQUELOCAL,3,DECODE(COALESCE(ITEREP.ESTABLOCALRET,0), 0, ITEEST.ESTAB,ITEREP.ESTABLOCALRET),
DECODE(COALESCE(LOCRET.IDESTOQUELOCAL,0), 0, ITEEST.IDESTOQUELOCAL, LOCRET.IDESTOQUELOCAL), null, null, COALESCE(WECCON.SDOPRODLOCALRET, 'N')) - DECODE(WECCON.PLATAFORMA, 1, COALESCE(ITEECO.QTDEESGOTA,0), 0))/ITEEMP.MULTIPLOVDA
WHEN ITEREP.IDLOCALRETIRADA IS NOT NULL THEN
VIASOFTMCP.GETSALDOITEMCARR (ESTLOC.ESTAB, ITEEST.ESTABITEM, ITEEST.IDITEM, ESTLOC.IDESTOQUELOCAL,3,DECODE(COALESCE(ITEREP.ESTABLOCALRET,0), 0, ITEEST.ESTAB,ITEREP.ESTABLOCALRET),
DECODE(COALESCE(LOCRET.IDESTOQUELOCAL,0), 0, ITEEST.IDESTOQUELOCAL, LOCRET.IDESTOQUELOCAL), null, null, COALESCE(WECCON.SDOPRODLOCALRET, 'N')) - DECODE(WECCON.PLATAFORMA, 1, COALESCE(ITEECO.QTDEESGOTA,0), 0)
ELSE
VIASOFTMCP.GETSALDOITEMCARR (ITEEST.ESTAB, ITEEST.ESTABITEM, ITEEST.IDITEM, ITEEST.IDESTOQUELOCAL,3,DECODE(COALESCE(ITEREP.ESTABLOCALRET,0), 0, ITEEST.ESTAB,ITEREP.ESTABLOCALRET),
DECODE(COALESCE(LOCRET.IDESTOQUELOCAL,0), 0, ITEEST.IDESTOQUELOCAL, LOCRET.IDESTOQUELOCAL), null, null, COALESCE(WECCON.SDOPRODLOCALRET, 'N')) - DECODE(WECCON.PLATAFORMA, 1, COALESCE(ITEECO.QTDEESGOTA,0), 0)
END "quantidade",
ITEECO.QTDEESGOTA "quantidadeMinima",
ITEEST.ESTAB "estabItem",
ITEEST.DTALTERACAOSINC "dtAlteracaoSinc"
FROM VIASOFTMCP.ITEMESTAB ITEEST
LEFT JOIN VIASOFTMCP.ITEMMCP ITEMCP
ON ITEMCP.ESTAB = ITEEST.ESTABITEM
AND ITEMCP.IDITEM = ITEEST.IDITEM
LEFT JOIN VIASOFTBASE.ITEM IT
ON IT.ESTAB = ITEEST.ESTABITEM
AND IT.IDITEM = ITEEST.IDITEM
LEFT JOIN VIASOFTMCP.WECCONFIG WECCON
ON WECCON.ESTABEC = ITEEST.ESTAB
LEFT JOIN VIASOFTMCP.ITEMREPOSICAO ITEREP
ON ITEREP.ESTAB = ITEEST.ESTAB
AND ITEREP.ESTABITEM = ITEEST.ESTABITEM
AND ITEREP.IDITEM = ITEEST.IDITEM
LEFT JOIN VIASOFTMCP.LOCALRETIRADA LOCRET
ON LOCRET.ESTAB = ITEREP.ESTABLOCALRET
AND LOCRET.IDLOCALRETIRADA = ITEREP.IDLOCALRETIRADA
LEFT JOIN VIASOFTBASE.ESTOQUELOCAL ESTLOC
ON ESTLOC.IDESTOQUELOCAL = LOCRET.IDESTOQUELOCAL
AND ESTLOC.ESTAB = ITEREP.ESTABLOCALRET
LEFT JOIN VIASOFTMCP.ITEMECOMMERCE ITEECO
ON ITEECO.ESTAB = ITEEST.ESTABITEM
AND ITEECO.IDITEM = ITEEST.IDITEM
LEFT JOIN VIASOFTSYS.FILIAL FIL
ON FIL.ESTAB = ITEEST.ESTAB
LEFT JOIN VIASOFTMCP.ITEMEMP ITEEMP
ON ITEEMP.EMPRESA = FIL.EMPRESA
AND ITEEMP.ESTABITEM = ITEEST.ESTABITEM
AND ITEEMP.IDITEM = ITEEST.IDITEM
WHERE COALESCE(ITEMCP.TINTA, 'X') <> 'P';