Advertisement
FerJoLi

Caso do dia 29/11/2019 - Nfs não movimentaram

Dec 3rd, 2019
474
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.72 KB | None | 0 0
  1. with dfi as(
  2. Select DISTINCT dfi.*, nf.recebimento, nf.datacancelamento, df.emissao, df.status as statusdf
  3. FROM DocumentoFiscalItem dfi
  4. left outer join documentofiscalitemmovimentacaoalmoxarifado dm on (dm.fkdocumentofiscalitem = dfi.pkdocumentofiscalitem and dm.status = 0)
  5. left outer join movimentacaoalmoxarifado m on (dm.fkmovimentacaoalmoxarifado = m.pkmovimentacaoalmoxarifado and m.status = 0)
  6. left outer join movimentacaoalmoxarifado m2 on (cast(dfi.pkdocumentofiscalitem as VARCHAR) = m2.efk and m2.status = 0)
  7. , DocumentoFiscal df
  8. LEFT OUTER JOIN NotaFiscal nf ON nf.fkdocumentofiscal = df.pkdocumentofiscal
  9. , telaatributo ta
  10. WHERE df.status in (0, 10)
  11. and m is null
  12. and m2 is null
  13. and dfi.fkdocumentofiscal in (69092,69097,69104,69117,69125,69126,69129,69154,69158,69164,69167,69191,69193,69203,69209,69215,69234,69235,69240,69241,69243,69245,69248,69249)
  14. and ta.tipo = 16502
  15. and dfi.status not in (999)
  16. and ( (nf.situacao = 6295 AND DF.STATUS in (10) ) or
  17. (nf.situacao = 6294
  18. AND NF.dataautorizacao is NOT null
  19. )
  20. or
  21. (
  22. (nf.situacao NOT IN (6287, 6288) OR nf.situacao is null)
  23. AND df.emitxnome IS NOT NULL AND df.destxnome IS NOT NULL
  24. AND (nf.recebimento IS NOT NULL OR dfi.alimentaEstoque = false)
  25. )
  26. )
  27. and dfi.fkDocumentoFiscal = df.pkDocumentoFiscal
  28. AND dfi.alimentaEstoque = true
  29. AND dfi.fkproduto in (57453,47614,60120,48076,61299,60811,52502,45991,55550,51122,50537,48198,47649,67588,55750,49140,48745,48731,48757,52415,48789,48144,47646,47739,47630,53894,53927,53900,53508,53434,53451,53365,53969,53739,46130,48670,45995,56767,59059,64760,59015,44237,46022,59332,61398,67907,48433,48609,59668,56040,67821,43777,55297,60150,60787,59339,57853,57846,48788,57437,56031,48407,57844,56967,57396,57075,48701,57523,53105,43982,59079,56960,56180,54605,46721
  30. )
  31. AND (dfi.fkAlmoxarifado IS NOT NULL or dfi.fkprodutoalmoxarifadoestoque is not null)
  32. AND df.tipo = 1
  33. AND df.emissao >= cast(ta.valorstring as TIMESTAMP)
  34. AND df.emissao >= cast('2019-02-19 00:00:00' as TIMESTAMP)
  35. AND df.emissao >= cast('2019-07-17 00:00:00' as TIMESTAMP)
  36. ),
  37. m as(
  38. Select dfimv.fkDocumentoFiscalItem, ma.pkMovimentacaoAlmoxarifado, ma.fkProdutoAlmoxarifadoEstoque, ma.tipo, pae.fkalmoxarifado
  39. FROM DocumentoFiscalItemMovimentacaoAlmoxarifado dfimv
  40. inner join dfi dfi on (dfi.pkdocumentofiscalitem = dfimv.fkdocumentofiscalitem )
  41. , MovimentacaoAlmoxarifado ma
  42. inner join produtoalmoxarifadoestoque pae on (pae.pkprodutoalmoxarifadoestoque = ma.fkprodutoalmoxarifadoestoque )
  43.  
  44. WHERE dfimv.fkMovimentacaoAlmoxarifado = ma.pkMovimentacaoAlmoxarifado
  45. and dfimv.status = 0
  46. and ma.status = 0
  47. ),
  48. cf as(
  49. Select DISTINCT dfi.pkDocumentoFiscalItem, cfop.tipoentradasaida
  50. FROM dfi as dfi, cfop cfop
  51. WHERE cfop.status = 0
  52. and ((dfi.fkCfop is not null and dfi.fkCfop = cfop.pkCfop ) or (dfi.fkCfop is null and dfi.fkCfopEntrada = cfop.pkCfop ))
  53. ),
  54. pae as(
  55. Select DISTINCT dfi.pkDocumentoFiscalItem, COALESCE(pae2.pkProdutoAlmoxarifadoEstoque, pae.pkProdutoAlmoxarifadoEstoque) AS pkProdutoAlmoxarifadoEstoque, dfi.fkalmoxarifado, dfi.fkproduto
  56. FROM DocumentoFiscalItem dfi
  57. LEFT OUTER JOIN produtoalmoxarifadoestoque pae on (pae.pkProdutoAlmoxarifadoEstoque = dfi.fkProdutoAlmoxarifadoEstoque and pae.status = 0)
  58. LEFT OUTER JOIN produtoalmoxarifadoestoque pae2 on (pae2.fkalmoxarifado = dfi.fkalmoxarifado and dfi.fkproduto = pae2.fkproduto and pae2.status = 0)
  59. WHERE dfi.status not in ( 999)
  60.  
  61. ),
  62. b AS (
  63. 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,
  64. dfp.TipoEntradaSaida as tes, cfop.tipoEntradaSaida,df.fkUsuario, dfi.pkDocumentoFiscalItem, m.pkMovimentacaoAlmoxarifado as pkFeita
  65. FROM dfi as dfi
  66. INNER JOIN DocumentoFiscal df on (df.pkDocumentoFiscal = dfi.fkDocumentoFiscal )
  67. LEFT OUTER JOIN DocumentoFiscalProduto dfp ON dfp.pkDocumentoFiscalProduto = df.fkDocumentoFiscalProduto
  68. inner join cf as cfop on (dfi.pkDocumentoFiscalItem = cfop.pkDocumentoFiscalItem AND cfop.tipoEntradaSaida = 8671)
  69. inner JOIN pae pae ON (dfi.pkDocumentoFiscalItem = pae.pkDocumentoFiscalItem)
  70. LEFT OUTER JOIN m as m ON (m.fkDocumentoFiscalItem = dfi.pkDocumentoFiscalItem and m.fkProdutoAlmoxarifadoEstoque = pae.pkProdutoAlmoxarifadoEstoque and m.tipo = 7026)
  71.  
  72. UNION
  73.  
  74. 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,
  75. dfp.TipoEntradaSaida as tes,cfop.tipoEntradaSaida,df.fkUsuario, dfi.pkDocumentoFiscalItem, m.pkMovimentacaoAlmoxarifado as pkFeita
  76. FROM dfi as dfi
  77. INNER JOIN DocumentoFiscal df on (df.pkDocumentoFiscal = dfi.fkDocumentoFiscal )
  78. LEFT OUTER JOIN DocumentoFiscalProduto dfp ON dfp.pkDocumentoFiscalProduto = df.fkDocumentoFiscalProduto
  79. inner join cf as cfop on (dfi.pkDocumentoFiscalItem = cfop.pkDocumentoFiscalItem AND cfop.tipoEntradaSaida = 8672)
  80. inner JOIN pae pae ON (dfi.pkDocumentoFiscalItem = pae.pkDocumentoFiscalItem)
  81. LEFT OUTER JOIN m as m ON (m.fkDocumentoFiscalItem = dfi.pkDocumentoFiscalItem and m.fkProdutoAlmoxarifadoEstoque = pae.pkProdutoAlmoxarifadoEstoque and m.tipo = 7026)
  82.  
  83. union
  84.  
  85. 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,
  86. dfp.TipoEntradaSaida as tes, cfop.tipoEntradaSaida,df.fkUsuario, dfi.pkDocumentoFiscalItem, m.pkMovimentacaoAlmoxarifado as pkFeita
  87. FROM dfi as dfi
  88. INNER JOIN DocumentoFiscal df on (df.pkDocumentoFiscal = dfi.fkDocumentoFiscal )
  89. LEFT OUTER JOIN DocumentoFiscalProduto dfp ON dfp.pkDocumentoFiscalProduto = df.fkDocumentoFiscalProduto
  90. inner join cf as cfop on (dfi.pkDocumentoFiscalItem = cfop.pkDocumentoFiscalItem AND cfop.tipoEntradaSaida = 8671)
  91. inner JOIN pae pae ON (dfi.pkDocumentoFiscalItem = pae.pkDocumentoFiscalItem)
  92. LEFT OUTER JOIN m as m ON (m.fkDocumentoFiscalItem = dfi.pkDocumentoFiscalItem and m.fkProdutoAlmoxarifadoEstoque = pae.pkProdutoAlmoxarifadoEstoque and m.tipo = 7031)
  93. WHERE dfi.statusdf in (10)
  94.  
  95. UNION
  96.  
  97. 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,
  98. dfp.TipoEntradaSaida as tes,cfop.tipoEntradaSaida,df.fkUsuario, dfi.pkDocumentoFiscalItem, m.pkMovimentacaoAlmoxarifado as pkFeita
  99. FROM dfi as dfi
  100. INNER JOIN DocumentoFiscal df on (df.pkDocumentoFiscal = dfi.fkDocumentoFiscal )
  101. LEFT OUTER JOIN DocumentoFiscalProduto dfp ON dfp.pkDocumentoFiscalProduto = df.fkDocumentoFiscalProduto
  102. inner join cf as cfop on (dfi.pkDocumentoFiscalItem = cfop.pkDocumentoFiscalItem AND cfop.tipoEntradaSaida = 8672)
  103. inner JOIN pae pae ON (dfi.pkDocumentoFiscalItem = pae.pkDocumentoFiscalItem)
  104. LEFT OUTER JOIN m as m ON (m.fkDocumentoFiscalItem = dfi.pkDocumentoFiscalItem and m.fkProdutoAlmoxarifadoEstoque = pae.pkProdutoAlmoxarifadoEstoque and m.tipo = 7031)
  105. WHERE dfi.statusdf in (10)
  106. )
  107. , a as (
  108.  
  109. select * from b where b.pkFeita is null
  110.  
  111.  
  112.  
  113. )
  114. INSERT INTO MovimentacaoAlmoxarifado (efk, dataLancamento, DATA, tipo, operacao, quantidade, status, fkprodutoAlmoxarifadoEstoque)
  115. 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