🚀 Initial commit: Versão atual do TrackSteel APP
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
|
||||
-- Adicionar colunas necessárias na tabela diario_obra_rdo
|
||||
ALTER TABLE public.diario_obra_rdo
|
||||
ADD COLUMN numero_rdo TEXT,
|
||||
ADD COLUMN usuario_nome TEXT;
|
||||
|
||||
-- Função para gerar numeração automática do RDO
|
||||
CREATE OR REPLACE FUNCTION generate_rdo_number(of_number_param TEXT)
|
||||
RETURNS TEXT AS $$
|
||||
DECLARE
|
||||
next_num INTEGER;
|
||||
new_rdo_number TEXT;
|
||||
of_digits TEXT;
|
||||
BEGIN
|
||||
-- Extrair apenas os dígitos da OF
|
||||
of_digits := regexp_replace(of_number_param, '[^0-9]', '', 'g');
|
||||
|
||||
-- Buscar próximo número sequencial para esta OF
|
||||
SELECT COALESCE(MAX(CAST(SUBSTRING(numero_rdo FROM '\-(\d+)$') AS INTEGER)), 0) + 1
|
||||
INTO next_num
|
||||
FROM public.diario_obra_rdo
|
||||
WHERE of_number = of_number_param AND numero_rdo IS NOT NULL;
|
||||
|
||||
-- Gerar número do RDO no formato RDO[digits]-[seq]
|
||||
new_rdo_number := 'RDO' || of_digits || '-' || LPAD(next_num::TEXT, 2, '0');
|
||||
RETURN new_rdo_number;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
-- Trigger para gerar automaticamente o número do RDO
|
||||
CREATE OR REPLACE FUNCTION handle_rdo_number()
|
||||
RETURNS TRIGGER AS $$
|
||||
BEGIN
|
||||
IF NEW.numero_rdo IS NULL OR NEW.numero_rdo = '' THEN
|
||||
NEW.numero_rdo := generate_rdo_number(NEW.of_number);
|
||||
END IF;
|
||||
RETURN NEW;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
CREATE TRIGGER trigger_generate_rdo_number
|
||||
BEFORE INSERT ON public.diario_obra_rdo
|
||||
FOR EACH ROW EXECUTE FUNCTION handle_rdo_number();
|
||||
Reference in New Issue
Block a user