Advertisement
fmartns

Untitled

Dec 10th, 2024
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 6.13 KB | None | 0 0
  1. DROP TEMPORARY TABLE IF EXISTS tmpMaterias, tmpMaterias2,tmpMaterias3;
  2.  
  3. CREATE TEMPORARY TABLE `tmpmaterias` (
  4. `materia` VARCHAR(50) NULL DEFAULT NULL,
  5. `descricao` VARCHAR(153) NULL DEFAULT NULL,
  6. `codigoFornecedor` VARCHAR(16) NOT NULL,
  7. `FANTASIA` VARCHAR(250) NULL DEFAULT NULL,
  8. `numero` VARCHAR(50) NULL DEFAULT NULL,
  9. `unidade` SMALLINT(5) NOT NULL DEFAULT '0',
  10. `lead_time` INT(10) NOT NULL DEFAULT '0',
  11. `est_minimo` DECIMAL(24,6) NOT NULL DEFAULT '0.000000',
  12. `compramini` DECIMAL(24,6) NOT NULL DEFAULT '0.000000',
  13. `comprometido` DECIMAL(50,6) NULL DEFAULT NULL,
  14. `consumodemanda` DECIMAL(50,6) NULL DEFAULT NULL,
  15. `estoque` DECIMAL(24,6) NOT NULL DEFAULT '0.000000',
  16. `codigo` VARCHAR(16) NULL DEFAULT NULL,
  17. `descricaoProd` VARCHAR(500) NULL DEFAULT NULL,
  18. `comprado` DECIMAL(47,6) NOT NULL DEFAULT '0.000000',
  19. `atrazados` DECIMAL(23,0) NOT NULL DEFAULT '0',
  20. `entregaHoje` DECIMAL(23,0) NOT NULL DEFAULT '0',
  21. `saldo` DECIMAL(51,6) NULL DEFAULT NULL,
  22. `LoteEntrega` VARCHAR(64) NULL DEFAULT NULL,
  23. `lote_entregaid` INT(10) NULL DEFAULT '0',
  24. `custo` DECIMAL(24,6) NULL DEFAULT NULL,
  25. INDEX `materia` (`materia`),
  26. INDEX `codigoFornecedor` (`codigoFornecedor`)
  27. )
  28. SELECT
  29. m.materia,
  30. CONCAT(mp2.descricao,' - ',mp.descricao) AS descricao,
  31. cr.codigo AS codigoFornecedor,
  32. cr.FANTASIA,
  33. m.numero,
  34. mp2.unidade,
  35. mp.leadTime AS lead_time,
  36. mp.est_minimo,
  37. mp.compraMinima AS compramini,
  38. SUM(IF(m.baixada = 0, m.quantidade, ((m.quantidade - m.baixada) * m.saldo))) AS comprometido,
  39. md.consumodemanda,
  40. mp.est_atual AS estoque,
  41. c.codigo,
  42. p.descricao AS descricaoProd,
  43. IFNULL(z.quanti, 0) AS comprado,
  44. IFNULL(z.atrasados, 0) AS atrazados,
  45. IFNULL(z.entregaHoje, 0) AS entregaHoje,
  46. ((mp.est_atual + IFNULL(z.quanti, 0)) - SUM(IF(m.baixada = 0, m.quantidade, ((m.quantidade - m.baixada) * m.saldo)))) AS saldo,
  47. CONCAT(le.lote_entregaid, ' - ', le.descricao) AS LoteEntrega,
  48. le.lote_entregaid,
  49. mp.custo
  50. FROM materiaporcomando m
  51. INNER JOIN comandos c ON c.Id = m.comandoId
  52. INNER JOIN produtos p ON p.Id = c.ProdutoId
  53. INNER JOIN materias_por_cor mp ON mp.Id = m.MateriaPorCorId
  54. INNER JOIN materiaprima mp2 ON mp2.id = mp.MateriaPrimaId
  55. INNER JOIN cfrt cr ON cr.Id = mp2.FornecedorId
  56. INNER JOIN ordem_producao op ON op.Id = c.OrdemProducaoId
  57. LEFT JOIN matdemanda md ON m.materia = md.materia
  58. LEFT JOIN lote_entrega le ON le.lote_entregaId = op.lote
  59.  
  60. LEFT  JOIN
  61. (
  62. SELECT z.codigoPedidoCompra,
  63. z.codigo,
  64. SUM(z.quanti) AS quanti,
  65. MAX(atrasados) AS atrasados,
  66. MAX(entregaHoje) AS entregaHoje
  67. FROM (
  68. SELECT 
  69. cc.pedido AS codigoPedidoCompra,
  70. i.Codigo,
  71. SUM(i.quantidade-i.Quantidade_recebida) AS quanti,
  72. SUM(cc.entrega < CURDATE()) AS atrasados,
  73. SUM(cc.entrega BETWEEN CURDATE() AND DATE_ADD(CURDATE(),INTERVAL 3 DAY)) AS entregaHoje
  74. FROM itens_compra i
  75. INNER JOIN compra_insumo cc ON cc.Pedido = i.Pedido
  76. WHERE i.recebida = 0 AND cc.cancelado = 0
  77. GROUP BY i.codigo
  78.  
  79. UNION
  80.  
  81. SELECT
  82. o.ordem AS codigoPedidoCompra,
  83. m.codigocor AS codigo,
  84. SUM(i.t1 - i.v1)  AS quanti,
  85. SUM(o.data_finalizacao < CURDATE()) AS atrasados,
  86. SUM(o.data_finalizacao BETWEEN CURDATE() AND DATE_ADD(CURDATE(),INTERVAL 3 DAY)) AS entregaHoje
  87. FROM ordem_producao o
  88. INNER JOIN itens_producao i ON i.ordem = o.ordem
  89. INNER JOIN estoque e ON e.codigocor = i.cod_cor
  90. INNER JOIN materias_por_cor m ON m.id = e.materiasPorCorId
  91. WHERE o.Finalizada = 0
  92. GROUP BY m.codigocor
  93. ) AS z
  94. GROUP BY z.codigo
  95. ) AS z ON z.codigo = m.materia
  96. WHERE mp2.ativo_inativo = 1
  97. GROUP BY m.materia
  98. HAVING 1 = 1  AND comprometido > 0.01
  99. ORDER BY mp2.fornecedor, m.materia;
  100.  
  101. CREATE TEMPORARY TABLE tmpMaterias2 ENGINE=MEMORY AS
  102. SELECT * FROM tmpMaterias;
  103.  
  104. CREATE TEMPORARY TABLE tmpMaterias3 ENGINE=MEMORY AS
  105. SELECT * FROM tmpMaterias;
  106.  
  107.  
  108.  
  109.  
  110.  
  111. INSERT INTO tmpMaterias(materia, descricao, codigoFornecedor, fantasia, numero, unidade, lead_time, est_minimo, compramini,
  112. comprometido, estoque, codigo, descricaoProd, comprado, atrazados, entregaHoje, saldo, loteEntrega, lote_entregaId)
  113. SELECT
  114. m.codigocor AS codmateria,
  115. CONCAT(mm.descricao,' - ',m.descricao) AS descricao,
  116. c.codigo        AS codigoFornecedor,
  117. c.FANTASIA  AS fantasia,
  118. '',
  119. mm.unidade  AS unidade,
  120. m.leadTime  AS leadTime,
  121. m.est_minimo    AS est_minimo,
  122. m.compraMinima AS compraMinima,
  123. 0           AS comprometido,
  124. m.est_atual AS estoque,
  125. '',
  126. '',
  127. ifnull(z.quanti,0)          AS comprado,
  128. IFNULL(z.atrasados, 0)      AS atrasado,
  129. IFNULL(z.entregaHoje, 0)    AS entregaHoje,
  130. 0,
  131. '',
  132. 0
  133. FROM (
  134.  
  135. SELECT DISTINCT b.codigocor
  136. FROM tmpmaterias3 t
  137. INNER JOIN materias_por_cor m ON m.codigocor = t.materia
  138. INNER JOIN materias_por_cor b ON b.id = m.id_materiaBase   
  139. WHERE m.id_materiaBase > 0
  140.  
  141. ) AS zz
  142. INNER JOIN materias_por_cor m ON m.codigocor = zz.codigocor
  143. INNER JOIN materiaprima         mm ON mm.Codigo     = m.Codigo
  144. INNER JOIN cfrt                     c  ON c.Codigo  = mm.Fornecedor
  145. INNER JOIN grupos_mps           g   ON g.Codigo     = mm.Cod_grupo
  146. INNER JOIN grupos_mps           sg ON sg.Codigo     = mm.Cod_subgrupo
  147. LEFT JOIN (
  148. SELECT z.codigoPedidoCompra,
  149. z.codigo,
  150. SUM(z.quanti) AS quanti,
  151. MAX(atrasados) AS atrasados,
  152. MAX(entregaHoje) AS entregaHoje
  153. FROM (
  154. SELECT 
  155. cc.pedido AS codigoPedidoCompra,
  156. i.Codigo,
  157. SUM(i.quantidade-i.Quantidade_recebida) AS quanti,
  158. SUM(cc.entrega < CURDATE()) AS atrasados,
  159. SUM(cc.entrega BETWEEN CURDATE() AND DATE_ADD(CURDATE(),INTERVAL 3 DAY)) AS entregaHoje
  160. FROM itens_compra i
  161. INNER JOIN compra_insumo cc ON cc.Pedido = i.Pedido
  162. WHERE i.recebida = 0 AND cc.cancelado = 0
  163. GROUP BY i.codigo
  164.  
  165. UNION
  166.  
  167. SELECT
  168. o.ordem AS codigoPedidoCompra,
  169. m.codigocor AS codigo,
  170. SUM(i.t1 - i.v1) AS quanti,
  171. SUM(o.data_finalizacao < CURDATE()) AS atrasados,
  172. SUM(o.data_finalizacao BETWEEN CURDATE() AND DATE_ADD(CURDATE(),INTERVAL 3 DAY)) AS entregaHoje
  173. FROM ordem_producao o
  174. INNER JOIN itens_producao i ON i.ordem = o.ordem
  175. INNER JOIN estoque e ON e.codigocor = i.cod_cor
  176. INNER JOIN materias_por_cor m ON m.id = e.materiasPorCorId
  177. WHERE o.Finalizada = 0
  178. GROUP BY m.codigocor
  179. ) AS z
  180. GROUP BY z.codigo
  181. ) AS z ON z.codigo = m.Codigo
  182. WHERE  mm.Tipo = 1  AND m.est_atual > 0
  183.  
  184. AND m.codigocor NOT IN (
  185. SELECT t.materia
  186. FROM tmpmaterias2 t
  187. )
  188. GROUP BY codmateria
  189. HAVING 1 = 1
  190. ORDER BY mm.Cod_grupo, mm.Cod_subgrupo;
  191.  
  192. SELECT * FROM tmpMaterias ORDER BY codigoFornecedor, materia;
  193.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement