Created
April 2, 2024 13:14
-
-
Save gustavoleo/2ebc88e438f3d8dd5d72243abb723725 to your computer and use it in GitHub Desktop.
Estoque
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
USE [CIGAM] | |
GO | |
/****** Object: UserDefinedFunction [dbo].[CGFC_EST_ESTOQUE] Script Date: 4/2/2024 10:14:13 AM ******/ | |
SET ANSI_NULLS ON | |
GO | |
SET QUOTED_IDENTIFIER ON | |
GO | |
CREATE FUNCTION [dbo].[CGFC_EST_ESTOQUE](@p_data DATETIME,@p_unidadeNegocio VARCHAR(3)) | |
RETURNS TABLE AS | |
RETURN SELECT Estoque.unidadeNegocio AS unidade_negocio, | |
Estoque.material AS material, | |
Estoque.centroArmazenagem AS centro_armazenagem, | |
Estoque.especif1 AS especif1, | |
Estoque.especif2 AS especif2, | |
Estoque.especif3 AS especif3, | |
Estoque.numeracao AS numeracao, | |
Estoque.lote AS lote, | |
MAX(Estoque.validadeLote) AS validade_lote, | |
SUM(Estoque.quantidade) AS quantidade, | |
MAX(Estoque.Dt_fabricacao) AS Data_fabricacao, | |
--Ainda n�o contempla nenhum tipo de pre�o e pe�as | |
0 AS pecas, | |
0 AS preco_medio, | |
0 AS preco_custo | |
FROM | |
(SELECT I.cd_uni_neg AS unidadeNegocio, | |
I.cd_material AS material, | |
I.cd_centro_armaz AS centroArmazenagem, | |
CASE WHEN grp.ctrl_especif1 = 'E' THEN I.Cd_especif1 ELSE ' ' END AS especif1, | |
CASE WHEN grp.ctrl_especif2 = 'E' THEN I.Cd_especif2 ELSE ' ' END AS especif2, | |
CASE WHEN grp.ctrl_especif3 = 'E' THEN I.Cd_especif3 ELSE ' ' END AS especif3, | |
I.Cd_numeracao as numeracao, | |
I.lote AS lote, | |
E.Dt_De_Validade AS validadeLote, | |
I.Quantidade AS quantidade, | |
E.Campo44 as Dt_fabricacao | |
FROM ESITEMINVENT I with (NOLOCK) | |
INNER JOIN ESMATERI mat with (NOLOCK) ON(mat.Cd_material = I.Cd_material) | |
INNER JOIN ESGRUPO grp with (NOLOCK) ON(GRP.Cd_grupo = mat.Cd_grupo) | |
LEFT JOIN ESESTOQU E with (NOLOCK) ON(E.cd_unidade_de_n = I.Cd_Uni_Neg | |
AND E.Cd_Material = I.Cd_Material | |
AND E.Cd_Centro_Armaz = I.Cd_Centro_Armaz | |
AND E.Cd_Especif1 = I.Cd_Especif1 | |
AND E.Especif2 = I.Cd_Especif2 | |
AND E.Especif3 = I.Cd_Especif3 | |
AND E.Numeracao = I.Cd_Numeracao | |
AND E.Lote = I.Lote) | |
--Busca data do �ltimo invent�rio, caso n�o exista, busca do dia do saldo incial | |
WHERE I.Cd_uni_neg = @p_unidadeNegocio | |
AND I.Dt_inventario= ISNULL(dbo.CGFC_EST_BUSCA_ULT_INVENT(@p_unidadeNegocio, @p_data,'N'), | |
dbo.CGFC_DATETIMESTAMP_TO_DATE(CAST(dbo.CGFC_BUSCA_CONFIGURACAO(644,null) AS DATETIME))-1) | |
UNION ALL | |
SELECT mo.uni_neg AS unidadeNegocio, | |
mo.cd_material AS material, | |
mo.cd_centro_armaz AS centroArmazenagem, | |
CASE WHEN grp.ctrl_especif1 = 'E' THEN mo.cd_especif1 ELSE ' ' END AS especif1, | |
CASE WHEN grp.ctrl_especif2 = 'E' THEN mo.especif2 ELSE ' ' END AS especif2, | |
CASE WHEN grp.ctrl_especif3 = 'E' THEN ISNULL(g.especif3,' ') ELSE ' ' END AS especif3, | |
ISNULL(g.numeracao,' ') AS numeracao, | |
ISNULL(g.lote,' ') AS lote, | |
e.dt_de_validade AS validadeLote, | |
ROUND(COALESCE(g.quantidade,CASE WHEN mat.Campo85 = ' ' THEN mo.quantidade ELSE 0 END),6) * CASE mo.tipo_movimento WHEN 'S' THEN -1 ELSE 1 END AS quantidade, | |
E.Campo44 as Dt_fabricacao | |
FROM ESMOVIME mo with (NOLOCK) | |
LEFT JOIN ESGMOVIM g with (NOLOCK) ON g.movimento=mo.movimento | |
INNER JOIN ESESPECI es with (NOLOCK) ON (es.cd_especie_esto=mo.cd_esp_estoque and es.tipo<>'N') | |
INNER JOIN ESMATERI mat with (NOLOCK) ON (mo.Cd_material = mat.Cd_material AND mat.Tipo <> 'S' AND mat.Tipo <> 'N' AND mat.Campo94 <> 1) | |
INNER JOIN ESGRUPO grp with (NOLOCK) ON (GRP.Cd_grupo = mat.Cd_grupo) | |
LEFT JOIN ESESTOQU E with (NOLOCK) ON(E.cd_unidade_de_n = mo.uni_neg | |
AND E.Cd_Material = mo.cd_material | |
AND E.Cd_Centro_Armaz = mo.cd_centro_armaz | |
AND E.Cd_Especif1 = mo.cd_especif1 | |
AND E.Especif2 = mo.especif2 | |
AND E.Especif3 = g.especif3 | |
AND E.Numeracao = g.numeracao | |
AND E.Lote = g.lote) | |
WHERE MO.uni_neg = @p_unidadeNegocio | |
AND MO.Dt_movimento > ISNULL(dbo.CGFC_EST_BUSCA_ULT_INVENT(@p_unidadeNegocio, @p_data,'N'), | |
dbo.CGFC_DATETIMESTAMP_TO_DATE(CAST(dbo.CGFC_BUSCA_CONFIGURACAO(644,null) AS DATETIME))-1) | |
AND MO.DT_MOVIMENTO <= @p_data | |
AND COALESCE(g.atualiza,mo.atualiza) = 'A' | |
) Estoque | |
GROUP BY Estoque.unidadeNegocio, | |
Estoque.material, | |
Estoque.centroArmazenagem, | |
Estoque.especif1, | |
Estoque.especif2, | |
Estoque.especif3, | |
Estoque.numeracao, | |
Estoque.lote | |
GO | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment