Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- with dfi as(
- Select DISTINCT dfi.*, nf.recebimento, nf.datacancelamento, df.emissao, df.status as statusdf
- FROM DocumentoFiscalItem dfi
- left outer join documentofiscalitemmovimentacaoalmoxarifado dm on (dm.fkdocumentofiscalitem = dfi.pkdocumentofiscalitem and dm.status = 0)
- left outer join movimentacaoalmoxarifado m on (dm.fkmovimentacaoalmoxarifado = m.pkmovimentacaoalmoxarifado and m.status = 0)
- left outer join movimentacaoalmoxarifado m2 on (cast(dfi.pkdocumentofiscalitem as VARCHAR) = m2.efk and m2.status = 0)
- , DocumentoFiscal df
- LEFT OUTER JOIN NotaFiscal nf ON nf.fkdocumentofiscal = df.pkdocumentofiscal
- , telaatributo ta
- WHERE df.status in (0, 10)
- and m is null
- and m2 is null
- and dfi.fkdocumentofiscal = ?
- and ta.tipo = 16502
- and dfi.status not in (999)
- and ( (nf.situacao = 6295 AND DF.STATUS in (10) ) or
- (nf.situacao = 6294
- AND NF.dataautorizacao is NOT null
- )
- or
- (
- (nf.situacao NOT IN (6287, 6288) OR nf.situacao is null)
- AND df.emitxnome IS NOT NULL AND df.destxnome IS NOT NULL
- AND (nf.recebimento IS NOT NULL OR dfi.alimentaEstoque = false)
- )
- )
- and dfi.fkDocumentoFiscal = df.pkDocumentoFiscal
- AND dfi.alimentaEstoque = true
- AND dfi.fkproduto in (59527, 47550, 47550, 44299, 50724, 68445, 51012)
- AND (dfi.fkAlmoxarifado IS NOT NULL or dfi.fkprodutoalmoxarifadoestoque is not null)
- AND df.tipo = 1
- AND df.emissao >= cast(ta.valorstring as TIMESTAMP)
- AND df.emissao >= cast('2019-02-19 00:00:00' as TIMESTAMP)
- AND df.emissao >= cast('2019-07-17 00:00:00' as TIMESTAMP)
- ),
- m as(
- Select dfimv.fkDocumentoFiscalItem, ma.pkMovimentacaoAlmoxarifado, ma.fkProdutoAlmoxarifadoEstoque, ma.tipo, pae.fkalmoxarifado
- FROM DocumentoFiscalItemMovimentacaoAlmoxarifado dfimv
- inner join dfi dfi on (dfi.pkdocumentofiscalitem = dfimv.fkdocumentofiscalitem )
- , MovimentacaoAlmoxarifado ma
- inner join produtoalmoxarifadoestoque pae on (pae.pkprodutoalmoxarifadoestoque = ma.fkprodutoalmoxarifadoestoque )
- WHERE dfimv.fkMovimentacaoAlmoxarifado = ma.pkMovimentacaoAlmoxarifado
- and dfimv.status = 0
- and ma.status = 0
- ),
- cf as(
- Select DISTINCT dfi.pkDocumentoFiscalItem, cfop.tipoentradasaida
- FROM dfi as dfi, cfop cfop
- WHERE cfop.status = 0
- and ((dfi.fkCfop is not null and dfi.fkCfop = cfop.pkCfop ) or (dfi.fkCfop is null and dfi.fkCfopEntrada = cfop.pkCfop ))
- ),
- pae as(
- Select DISTINCT dfi.pkDocumentoFiscalItem, COALESCE(pae2.pkProdutoAlmoxarifadoEstoque, pae.pkProdutoAlmoxarifadoEstoque) AS pkProdutoAlmoxarifadoEstoque, dfi.fkalmoxarifado, dfi.fkproduto
- FROM DocumentoFiscalItem dfi
- LEFT OUTER JOIN produtoalmoxarifadoestoque pae on (pae.pkProdutoAlmoxarifadoEstoque = dfi.fkProdutoAlmoxarifadoEstoque and pae.status = 0)
- LEFT OUTER JOIN produtoalmoxarifadoestoque pae2 on (pae2.fkalmoxarifado = dfi.fkalmoxarifado and dfi.fkproduto = pae2.fkproduto and pae2.status = 0)
- WHERE dfi.status not in ( 999)
- ),
- b AS (
- SELECT DISTINCT 1, 7026 as tipomovimentacao, COALESCE(dfi.recebimento, dfi.emissao) as emissao, dfi.fkalmoxarifado, dfi.fkProduto, dfi.quantidade AS qtd, pae.pkProdutoAlmoxarifadoEstoque, dfi.quantidadeReservada AS qtdReservada,
- dfp.TipoEntradaSaida as tes, cfop.tipoEntradaSaida,df.fkUsuario, dfi.pkDocumentoFiscalItem, m.pkMovimentacaoAlmoxarifado as pkFeita
- FROM dfi as dfi
- INNER JOIN DocumentoFiscal df on (df.pkDocumentoFiscal = dfi.fkDocumentoFiscal )
- LEFT OUTER JOIN DocumentoFiscalProduto dfp ON dfp.pkDocumentoFiscalProduto = df.fkDocumentoFiscalProduto
- inner join cf as cfop on (dfi.pkDocumentoFiscalItem = cfop.pkDocumentoFiscalItem AND cfop.tipoEntradaSaida = 8671)
- inner JOIN pae pae ON (dfi.pkDocumentoFiscalItem = pae.pkDocumentoFiscalItem)
- LEFT OUTER JOIN m as m ON (m.fkDocumentoFiscalItem = dfi.pkDocumentoFiscalItem and m.fkProdutoAlmoxarifadoEstoque = pae.pkProdutoAlmoxarifadoEstoque and m.tipo = 7026)
- UNION
- SELECT DISTINCT 3, 7026 as tipomovimentacao, COALESCE(dfi.emissao, dfi.recebimento) AS emissao, dfi.fkalmoxarifado, dfi.fkProduto, dfi.quantidade*-1 AS qtd, pae.pkProdutoAlmoxarifadoEstoque, dfi.quantidadeReservada*-1 AS qtdReservada,
- dfp.TipoEntradaSaida as tes,cfop.tipoEntradaSaida,df.fkUsuario, dfi.pkDocumentoFiscalItem, m.pkMovimentacaoAlmoxarifado as pkFeita
- FROM dfi as dfi
- INNER JOIN DocumentoFiscal df on (df.pkDocumentoFiscal = dfi.fkDocumentoFiscal )
- LEFT OUTER JOIN DocumentoFiscalProduto dfp ON dfp.pkDocumentoFiscalProduto = df.fkDocumentoFiscalProduto
- inner join cf as cfop on (dfi.pkDocumentoFiscalItem = cfop.pkDocumentoFiscalItem AND cfop.tipoEntradaSaida = 8672)
- inner JOIN pae pae ON (dfi.pkDocumentoFiscalItem = pae.pkDocumentoFiscalItem)
- LEFT OUTER JOIN m as m ON (m.fkDocumentoFiscalItem = dfi.pkDocumentoFiscalItem and m.fkProdutoAlmoxarifadoEstoque = pae.pkProdutoAlmoxarifadoEstoque and m.tipo = 7026)
- union
- SELECT DISTINCT 2, 7031 as tipomovimentacao, COALESCE(dfi.datacancelamento, dfi.recebimento) as emissao, dfi.fkalmoxarifado, dfi.fkProduto, dfi.quantidade*-1 AS qtd, pae.pkProdutoAlmoxarifadoEstoque, dfi.quantidadeReservada*-1 AS qtdReservada,
- dfp.TipoEntradaSaida as tes, cfop.tipoEntradaSaida,df.fkUsuario, dfi.pkDocumentoFiscalItem, m.pkMovimentacaoAlmoxarifado as pkFeita
- FROM dfi as dfi
- INNER JOIN DocumentoFiscal df on (df.pkDocumentoFiscal = dfi.fkDocumentoFiscal )
- LEFT OUTER JOIN DocumentoFiscalProduto dfp ON dfp.pkDocumentoFiscalProduto = df.fkDocumentoFiscalProduto
- inner join cf as cfop on (dfi.pkDocumentoFiscalItem = cfop.pkDocumentoFiscalItem AND cfop.tipoEntradaSaida = 8671)
- inner JOIN pae pae ON (dfi.pkDocumentoFiscalItem = pae.pkDocumentoFiscalItem)
- LEFT OUTER JOIN m as m ON (m.fkDocumentoFiscalItem = dfi.pkDocumentoFiscalItem and m.fkProdutoAlmoxarifadoEstoque = pae.pkProdutoAlmoxarifadoEstoque and m.tipo = 7031)
- WHERE dfi.statusdf in (10)
- UNION
- SELECT DISTINCT 4, 7031 as tipomovimentacao, COALESCE(dfi.datacancelamento, dfi.emissao), dfi.fkalmoxarifado, dfi.fkProduto, dfi.quantidade AS qtd, pae.pkProdutoAlmoxarifadoEstoque, dfi.quantidadeReservada AS qtdReservada,
- dfp.TipoEntradaSaida as tes,cfop.tipoEntradaSaida,df.fkUsuario, dfi.pkDocumentoFiscalItem, m.pkMovimentacaoAlmoxarifado as pkFeita
- FROM dfi as dfi
- INNER JOIN DocumentoFiscal df on (df.pkDocumentoFiscal = dfi.fkDocumentoFiscal )
- LEFT OUTER JOIN DocumentoFiscalProduto dfp ON dfp.pkDocumentoFiscalProduto = df.fkDocumentoFiscalProduto
- inner join cf as cfop on (dfi.pkDocumentoFiscalItem = cfop.pkDocumentoFiscalItem AND cfop.tipoEntradaSaida = 8672)
- inner JOIN pae pae ON (dfi.pkDocumentoFiscalItem = pae.pkDocumentoFiscalItem)
- LEFT OUTER JOIN m as m ON (m.fkDocumentoFiscalItem = dfi.pkDocumentoFiscalItem and m.fkProdutoAlmoxarifadoEstoque = pae.pkProdutoAlmoxarifadoEstoque and m.tipo = 7031)
- WHERE dfi.statusdf in (10)
- )
- , a as (
- select * from b where b.pkFeita is null
- )
- INSERT INTO MovimentacaoAlmoxarifado (efk, dataLancamento, DATA, tipo, operacao, quantidade, status, fkprodutoAlmoxarifadoEstoque)
- SELECT a.pkdocumentofiscalitem, a.emissao, a.emissao, a.tipomovimentacao, CASE WHEN a.qtd >= 0 THEN 7041 ELSE 8040 END, ABS(a.qtd), 0, a.pkprodutoalmoxarifadoestoque FROM a AS a;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement