43 lines
1.1 KiB
PL/PgSQL
43 lines
1.1 KiB
PL/PgSQL
|
|
-- Corrigir a função para buscar prioridades corretamente pela configuração
|
|
CREATE OR REPLACE FUNCTION public.calcular_prioridades_pecas_bulk()
|
|
RETURNS TABLE(peca_id uuid, prioridade_mais_alta text)
|
|
LANGUAGE plpgsql
|
|
SECURITY DEFINER
|
|
AS $$
|
|
BEGIN
|
|
RETURN QUERY
|
|
WITH prioridades_hierarquia AS (
|
|
SELECT 'P1' as prioridade, 1 as ordem
|
|
UNION ALL
|
|
SELECT 'P2' as prioridade, 2 as ordem
|
|
UNION ALL
|
|
SELECT 'P3' as prioridade, 3 as ordem
|
|
UNION ALL
|
|
SELECT 'P4' as prioridade, 4 as ordem
|
|
),
|
|
pecas_com_prioridades AS (
|
|
SELECT
|
|
p.id as peca_id,
|
|
COALESCE(
|
|
(
|
|
SELECT pc.codigo
|
|
FROM itens_prioridade_fabricacao ipf
|
|
JOIN prioridades_fabricacao pf ON ipf.prioridade_fabricacao_id = pf.id
|
|
JOIN prioridades_config pc ON pf.prioridade_id = pc.id
|
|
JOIN prioridades_hierarquia ph ON pc.codigo = ph.prioridade
|
|
WHERE ipf.peca_id = p.id
|
|
ORDER BY ph.ordem ASC
|
|
LIMIT 1
|
|
),
|
|
'P4'
|
|
) as prioridade_mais_alta
|
|
FROM pecas p
|
|
)
|
|
SELECT
|
|
pcp.peca_id,
|
|
pcp.prioridade_mais_alta
|
|
FROM pecas_com_prioridades pcp;
|
|
END;
|
|
$$;
|