Advertisement
Guest User

Untitled

a guest
Feb 21st, 2020
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.23 KB | None | 0 0
  1. QrProc := TSQLQuery.Create(nil); // cria uma instância do objeto
  2. try
  3. QrProc.SQLConnection := DMGeral.DBConexao; // componente de conexão
  4. QrProc.SQL.Clear;
  5. QrProc.SQL.Add( 'create or alter procedure INVENTARIO ( EMPRESA DOMCODIGO, ' +
  6. 'FILIAL DOMCODIGO, DATA DOMDATA) returns ( PRODUTO DOMCODIGO, DERIVACAO DOMDERIVACAO, ' +
  7. 'UNIDADEMEDIDA DOMUNIDADE, DESCRICAO DOMDESCRICAO, QUANTIDADE DOMQUANTIDADE, ' +
  8. 'COMPRA DOMQUANTIDADE, VENDA DOMQUANTIDADE, PRECOCOMPRA DOMVALOR, PRECOMEDIO DOMVALOR, ' +
  9. 'PRECONORMAL DOMVALOR, PRECOMINIMO DOMVALOR, PERCENTUALICMS DOMVALOR, CST DOMCEP, ' +
  10. 'NCM DOMDOCUMENTO, GRUPO DOMCODIGO, SUBGRUPO DOMCODIGO, ECF DOMDESCRICAO) ' +
  11. 'as declare variable USARDESCRICAODERIVACOES DOMLOGICO; declare variable LQUANTIDADE DOMVALOR; ' +
  12. 'begin ' +
  13. ' select USARDESCRICAODERIVACOES from CONFIGURACOES where EMPRESA = :EMPRESA and FILIAL = :FILIAL ' +
  14. ' into :USARDESCRICAODERIVACOES; ' +
  15. ' for select E.PRODUTO, E.DERIVACAO, D.UNIDADEMEDIDA, iif(:USARDESCRICAODERIVACOES = ''S'', substring(P.DESCRICAO || ''-'' || D.DESCRICAO from 1 for 100), P.DESCRICAO) as DESCRICAO,' +
  16. ' sum(E.QUANTIDADE), Y.PRECOCOMPRA, Y.PRECOMEDIO, Z.PRECONORMAL, Z.PRECOMINIMO, F.PERCENTUALICMS, F.CST, ' +
  17. ' P.NCM, P.GRUPO, P.SUBGRUPO, F.PERCENTUALICMS, F.ITECF ' +
  18. ' ' +
  19. ' from ESTOQUES E ' +
  20. ' inner join PRODUTOS P on (P.CODIGO = E.PRODUTO) ' +
  21. ' inner join DERIVACOES D on (D.CODIGO = E.DERIVACAO and ' +
  22. ' D.PRODUTO = E.PRODUTO) ' +
  23. ' inner join CONFIGURACOES C on (C.EMPRESA = E.EMPRESA and ' +
  24. ' C.FILIAL = E.FILIAL) ' +
  25. ' inner join FILIAIS X on (X.CODIGO = E.FILIAL and ' +
  26. ' X.EMPRESA = E.EMPRESA) ' +
  27. ' left outer join ITENSPRECOSCOMPRAS Y on (Y.PRECO = C.PRECOCOMPRAPADRAO and ' +
  28. ' Y.PRODUTO = E.PRODUTO and ' +
  29. ' Y.DERIVACAO = E.DERIVACAO) ' +
  30. ' left outer join ITENSPRECOSVENDAS Z on (Z.PRECO = C.PRECOVENDAPADRAO and ' +
  31. ' Z.PRODUTO = E.PRODUTO and ' +
  32. ' Z.DERIVACAO = E.DERIVACAO) ' +
  33. ' inner join ITENSCLASSIFICACOESFISCAIS F on (F.CLASSIFICACAOFISCAL = P.CLASSIFICACAOFISCAL and ' +
  34. ' F.TIPO = ''S'' and ' +
  35. ' F.UF = X.UF) ' +
  36. ' where E.EMPRESA = :EMPRESA and ' +
  37. ' E.FILIAL = :FILIAL and ' +
  38. ' P.INVENTARIADO = ''S'' and ' +
  39. ' P.BLOQUEADO = ''N'' and ' +
  40. ' D.BLOQUEADO = ''N'' ' +
  41. ' group by E.PRODUTO, E.DERIVACAO, D.UNIDADEMEDIDA, DESCRICAO, Y.PRECOCOMPRA, Y.PRECOMEDIO, Z.PRECONORMAL, Z.PRECOMINIMO, F.ITECF, F.PERCENTUALICMS, F.CST, P.NCM, P.GRUPO, P.SUBGRUPO ' +
  42. ' into :PRODUTO, :DERIVACAO, :UNIDADEMEDIDA, :DESCRICAO, :QUANTIDADE, :PRECOCOMPRA, :PRECOMEDIO, :PRECONORMAL, ' +
  43. ' :PRECOMINIMO, :PERCENTUALICMS, :CST, :NCM, :GRUPO, :SUBGRUPO, :PERCENTUALICMS, :ECF ' +
  44. ' do ' +
  45. ' begin ' +
  46. ' /* COMPRAS */ ' +
  47. ' select coalesce(sum(I.QUANTIDADE), 0) ' +
  48. ' from ITENSCOMPRAS I ' +
  49. ' inner join COMPRAS C on (C.CODIGO = I.COMPRA) ' +
  50. ' where C.EMPRESA = :EMPRESA and ' +
  51. ' C.FILIAL = :FILIAL and ' +
  52. ' I.PRODUTO = :PRODUTO and ' +
  53. ' I.DERIVACAO = :DERIVACAO and ' +
  54. ' C.SITUACAO = ''F'' and ' +
  55. ' C.ENTREGA > :DATA ' +
  56. ' into :COMPRA; ' +
  57. ' ' +
  58. ' QUANTIDADE = QUANTIDADE - :COMPRA; ' +
  59. ' ' +
  60. ' /* AJUSTES DE ESTOQUES - ENTRADA */ ' +
  61. ' select coalesce(sum(I.QUANTIDADE), 0) ' +
  62. ' from ITENSAJUSTESESTOQUES I ' +
  63. ' inner join AJUSTESESTOQUES A on (A.CODIGO = I.AJUSTEESTOQUE) ' +
  64. ' where A.EMPRESA = :EMPRESA and ' +
  65. ' A.FILIAL = :FILIAL and ' +
  66. ' I.PRODUTO = :PRODUTO and ' +
  67. ' I.DERIVACAO = :DERIVACAO and ' +
  68. ' A.SITUACAO = ''F'' and ' +
  69. ' I.TIPO = ''E'' and ' +
  70. ' A.DATA > :DATA ' +
  71. ' into LQUANTIDADE; ' +
  72. ' ' +
  73. ' QUANTIDADE = QUANTIDADE - LQUANTIDADE; ' +
  74. ' ' +
  75. ' /* AJUSTES DE ESTOQUES - SAÍDA */ ' +
  76. ' select coalesce(sum(I.QUANTIDADE), 0) ' +
  77. ' from ITENSAJUSTESESTOQUES I ' +
  78. ' inner join AJUSTESESTOQUES A on (A.CODIGO = I.AJUSTEESTOQUE) ' +
  79. ' where A.EMPRESA = :EMPRESA and ' +
  80. ' A.FILIAL = :FILIAL and ' +
  81. ' I.PRODUTO = :PRODUTO and ' +
  82. ' I.DERIVACAO = :DERIVACAO and ' +
  83. ' A.SITUACAO = ''F'' and ' +
  84. ' I.TIPO = ''S'' and ' +
  85. ' A.DATA > :DATA ' +
  86. ' into LQUANTIDADE; ' +
  87. ' ' +
  88. ' QUANTIDADE = QUANTIDADE + LQUANTIDADE; ' +
  89. ' ' +
  90. ' /* DEVOLUÇÕES - VENDAS */ ' +
  91. ' select coalesce(sum(I.QUANTIDADE), 0) ' +
  92. ' from ITENSDEVOLUCOES I ' +
  93. ' inner join DEVOLUCOES D on (D.CODIGO = I.DEVOLUCAO) ' +
  94. ' where D.EMPRESA = :EMPRESA and ' +
  95. ' D.FILIAL = :FILIAL and ' +
  96. ' I.PRODUTO = :PRODUTO and ' +
  97. ' I.DERIVACAO = :DERIVACAO and ' +
  98. ' D.SITUACAO = ''F'' and ' +
  99. ' D.TIPO = ''V'' and ' +
  100. ' D.DATA > :DATA ' +
  101. ' into LQUANTIDADE; ' +
  102. ' ' +
  103. ' QUANTIDADE = QUANTIDADE - LQUANTIDADE; ' +
  104. ' ' +
  105. ' /* DEVOLUÇÕES - COMPRAS */ ' +
  106. ' select coalesce(sum(I.QUANTIDADE), 0) ' +
  107. ' from ITENSDEVOLUCOES I ' +
  108. ' inner join DEVOLUCOES D on (D.CODIGO = I.DEVOLUCAO) ' +
  109. ' where D.EMPRESA = :EMPRESA and ' +
  110. ' D.FILIAL = :FILIAL and ' +
  111. ' I.PRODUTO = :PRODUTO and ' +
  112. ' I.DERIVACAO = :DERIVACAO and ' +
  113. ' D.SITUACAO = ''F'' and ' +
  114. ' D.TIPO = ''C'' and ' +
  115. ' D.DATA > :DATA ' +
  116. ' into LQUANTIDADE; ' +
  117. ' ' +
  118. ' QUANTIDADE = QUANTIDADE + LQUANTIDADE; ' +
  119. ' ' +
  120. ' /* INDUSTRIALIZAÇÃO */ ' +
  121. ' select coalesce(sum(I.QUANTIDADE), 0) ' +
  122. ' from ITENSINDUSTRIALIZACOES I ' +
  123. ' inner join INDUSTRIALIZACOES X on (X.CODIGO = I.INDUSTRIALIZACAO) ' +
  124. ' where X.EMPRESA = :EMPRESA and ' +
  125. ' X.FILIAL = :FILIAL and ' +
  126. ' I.PRODUTO = :PRODUTO and ' +
  127. ' I.DERIVACAO = :DERIVACAO and ' +
  128. ' X.SITUACAO = ''F'' and ' +
  129. ' X.DATA > :DATA ' +
  130. ' into LQUANTIDADE; ' +
  131. ' ' +
  132. ' QUANTIDADE = QUANTIDADE - LQUANTIDADE; ' +
  133. ' ' +
  134. ' /* INDUSTRIALIZAÇÕES - SUB - ENTRADAS */ ' +
  135. ' select coalesce(cast(sum(I.QUANTIDADE * F.QUANTIDADE) as DOMVALOR), 0) ' +
  136. ' from ITENSINDUSTRIALIZACOES I ' +
  137. ' inner join INDUSTRIALIZACOES X on (X.CODIGO = I.INDUSTRIALIZACAO) ' +
  138. ' inner join FICHASTECNICAS F on (F.PRODUTOMESTRE = I.PRODUTO and ' +
  139. ' F.DERIVACAOMESTRE = I.DERIVACAO) ' +
  140. ' where X.EMPRESA = :EMPRESA and ' +
  141. ' X.FILIAL = :FILIAL and ' +
  142. ' F.PRODUTO = :PRODUTO and ' +
  143. ' F.DERIVACAO = :DERIVACAO and ' +
  144. ' X.SITUACAO = ''F'' and ' +
  145. ' F.ACAO = ''C'' and ' +
  146. ' X.DATA > :DATA ' +
  147. ' into LQUANTIDADE; ' +
  148. ' ' +
  149. ' QUANTIDADE = QUANTIDADE - LQUANTIDADE; ' +
  150. ' ' +
  151. ' /* INDUSTRIALIZAÇÕES - SUB - SAÍDAS */ ' +
  152. ' select coalesce(cast(sum(I.QUANTIDADE * F.QUANTIDADE) as DOMVALOR), 0) ' +
  153. ' from ITENSINDUSTRIALIZACOES I ' +
  154. ' inner join INDUSTRIALIZACOES X on (X.CODIGO = I.INDUSTRIALIZACAO) ' +
  155. ' inner join FICHASTECNICAS F on (F.PRODUTOMESTRE = I.PRODUTO and ' +
  156. ' F.DERIVACAOMESTRE = I.DERIVACAO) ' +
  157. ' where X.EMPRESA = :EMPRESA and ' +
  158. ' X.FILIAL = :FILIAL and ' +
  159. ' F.PRODUTO = :PRODUTO and ' +
  160. ' F.DERIVACAO = :DERIVACAO and ' +
  161. ' X.SITUACAO = ''F'' and ' +
  162. ' F.ACAO = ''D'' and ' +
  163. ' X.DATA > :DATA ' +
  164. ' into LQUANTIDADE; ' +
  165. ' ' +
  166. ' QUANTIDADE = QUANTIDADE + LQUANTIDADE; ' +
  167. ' ' +
  168. ' /* VENDAS */ ' +
  169. ' select coalesce(sum(I.QUANTIDADE), 0) ' +
  170. ' from ITENSVENDAS I ' +
  171. ' inner join VENDAS V on (V.CODIGO = I.VENDA) ' +
  172. ' where V.EMPRESA = :EMPRESA and ' +
  173. ' V.FILIAL = :FILIAL and ' +
  174. ' I.PRODUTO = :PRODUTO and ' +
  175. ' I.DERIVACAO = :DERIVACAO and ' +
  176. ' I.SITUACAO = ''N'' and ' +
  177. ' I.ESTOQUE = ''M'' and ' +
  178. ' V.SITUACAO = ''F'' and ' +
  179. ' V.DATA > :DATA ' +
  180. ' into :VENDA; ' +
  181. ' ' +
  182. ' QUANTIDADE = QUANTIDADE + :VENDA; ' +
  183. ' ' +
  184. ' if (QUANTIDADE > 0) then ' +
  185. ' suspend; ' +
  186. ' end ' +
  187. 'end');
  188. QrProc.ExecSQL;
  189.  
  190. finally
  191. FreeAndNil(QrProc); // tira o objeto da memória
  192. end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement