Files
tracksteel_app/supabase/migrations/20250622152300-b8a87625-3697-438d-9625-ec617efb146d.sql

162 lines
6.1 KiB
SQL

-- Criar tabela para ficha técnica de contratos
CREATE TABLE public.ficha_tecnica_contratos (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
of_number TEXT UNIQUE NOT NULL,
gestor TEXT,
revisao TEXT,
quantidade NUMERIC,
data_criacao DATE DEFAULT CURRENT_DATE,
-- Dados do Cliente
cliente TEXT,
cnpj TEXT,
ie TEXT,
endereco TEXT,
cidade TEXT,
estado TEXT,
cep TEXT,
contato_contrato TEXT,
fone_contrato TEXT,
cel_contrato TEXT,
email_contrato TEXT,
contato_obra TEXT,
fone_obra TEXT,
cel_obra TEXT,
email_obra TEXT,
contato_qualid TEXT,
fone_qualid TEXT,
cel_qualid TEXT,
email_qualid TEXT,
-- Dados do Projeto
descricao_resumida TEXT,
endereco_projeto TEXT,
bairro_projeto TEXT,
cep_projeto TEXT,
cidade_projeto TEXT,
estado_projeto TEXT,
horarios_trabalho TEXT,
condicoes_acesso TEXT,
-- Tipo de Projeto (checkboxes)
tipo_estrutural BOOLEAN DEFAULT FALSE,
tipo_residencial BOOLEAN DEFAULT FALSE,
tipo_espacial BOOLEAN DEFAULT FALSE,
tipo_comercial BOOLEAN DEFAULT FALSE,
tipo_grades BOOLEAN DEFAULT FALSE,
tipo_industrial BOOLEAN DEFAULT FALSE,
tipo_cobertura BOOLEAN DEFAULT FALSE,
tipo_com_montagem BOOLEAN DEFAULT FALSE,
-- Documentos fornecidos pelo cliente (checkboxes)
doc_calculo BOOLEAN DEFAULT FALSE,
doc_projeto BOOLEAN DEFAULT FALSE,
doc_detalhamento BOOLEAN DEFAULT FALSE,
doc_cronograma BOOLEAN DEFAULT FALSE,
doc_normas BOOLEAN DEFAULT FALSE,
doc_especif_tecnicas BOOLEAN DEFAULT FALSE,
doc_catalogo BOOLEAN DEFAULT FALSE,
doc_fotos BOOLEAN DEFAULT FALSE,
-- Informações do projeto (E/C/NA para cada item)
info_calculo_estrutural JSONB DEFAULT '{"e": false, "c": false, "na": false, "info": ""}',
info_projeto_basico JSONB DEFAULT '{"e": false, "c": false, "na": false, "info": ""}',
info_detalhamento JSONB DEFAULT '{"e": false, "c": false, "na": false, "info": ""}',
info_materia_prima JSONB DEFAULT '{"e": false, "c": false, "na": false, "info": ""}',
info_fabricacao JSONB DEFAULT '{"e": false, "c": false, "na": false, "info": ""}',
info_grades_piso JSONB DEFAULT '{"e": false, "c": false, "na": false, "info": ""}',
info_jateamento JSONB DEFAULT '{"e": false, "c": false, "na": false, "info": ""}',
info_pintura_base JSONB DEFAULT '{"e": false, "c": false, "na": false, "info": ""}',
info_pintura_inter JSONB DEFAULT '{"e": false, "c": false, "na": false, "info": ""}',
info_pintura_acabamento JSONB DEFAULT '{"e": false, "c": false, "na": false, "info": ""}',
info_galvanizacao JSONB DEFAULT '{"e": false, "c": false, "na": false, "info": ""}',
info_embalagem JSONB DEFAULT '{"e": false, "c": false, "na": false, "info": ""}',
info_transporte JSONB DEFAULT '{"e": false, "c": false, "na": false, "info": ""}',
info_inspecao JSONB DEFAULT '{"e": false, "c": false, "na": false, "info": ""}',
info_ensaios_lab JSONB DEFAULT '{"e": false, "c": false, "na": false, "info": ""}',
info_databook JSONB DEFAULT '{"e": false, "c": false, "na": false, "info": ""}',
info_pre_montagem JSONB DEFAULT '{"e": false, "c": false, "na": false, "info": ""}',
info_placa_engenetal JSONB DEFAULT '{"e": false, "c": false, "na": false, "info": ""}',
info_parafusos JSONB DEFAULT '{"e": false, "c": false, "na": false, "info": ""}',
info_chumbadores JSONB DEFAULT '{"e": false, "c": false, "na": false, "info": ""}',
info_stud_bolt JSONB DEFAULT '{"e": false, "c": false, "na": false, "info": ""}',
info_fornec_telhas JSONB DEFAULT '{"e": false, "c": false, "na": false, "info": ""}',
info_montagem_telhas JSONB DEFAULT '{"e": false, "c": false, "na": false, "info": ""}',
info_forn_calhas JSONB DEFAULT '{"e": false, "c": false, "na": false, "info": ""}',
info_mont_calhas JSONB DEFAULT '{"e": false, "c": false, "na": false, "info": ""}',
info_steel_deck JSONB DEFAULT '{"e": false, "c": false, "na": false, "info": ""}',
info_fornec_wall JSONB DEFAULT '{"e": false, "c": false, "na": false, "info": ""}',
info_mont_wall JSONB DEFAULT '{"e": false, "c": false, "na": false, "info": ""}',
info_outros_materiais JSONB DEFAULT '{"e": false, "c": false, "na": false, "info": ""}',
-- Validação pós detalhamento
necessita_validacao_pos_detalh BOOLEAN DEFAULT FALSE,
-- Grades de piso
grades_modelo TEXT,
grades_padrao_comercial BOOLEAN DEFAULT FALSE,
grades_padrao_sa2 BOOLEAN DEFAULT FALSE,
grades_padrao_sa2_meio BOOLEAN DEFAULT FALSE,
grades_padrao_sa3 BOOLEAN DEFAULT FALSE,
-- Requisitos ambientais
req_ambientais_existem BOOLEAN DEFAULT FALSE,
req_ambientais_quais TEXT,
req_saude_seguranca_existem BOOLEAN DEFAULT FALSE,
req_saude_seguranca_quais TEXT,
-- Alteração no contrato
alteracao_descritivo TEXT,
alteracao_motivo TEXT,
alteracao_impacto TEXT,
alteracao_custo NUMERIC,
alteracao_cronograma TEXT,
alteracao_pecas_prontas TEXT,
alteracao_detalh_projeto TEXT,
-- Cronograma (semanas)
cronograma_semanas JSONB DEFAULT '{}',
-- Visto dos responsáveis
visto_gestor TEXT,
visto_pcp TEXT,
visto_eng TEXT,
visto_fab TEXT,
visto_exp TEXT,
visto_qual TEXT,
visto_colunas JSONB DEFAULT '{"1": false, "2": false, "3": false, "4": false}',
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(),
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(),
user_id UUID REFERENCES auth.users(id)
);
-- Enable RLS
ALTER TABLE public.ficha_tecnica_contratos ENABLE ROW LEVEL SECURITY;
-- RLS Policies
CREATE POLICY "Users can view their own fichas"
ON public.ficha_tecnica_contratos
FOR SELECT
USING (auth.uid() = user_id);
CREATE POLICY "Users can create their own fichas"
ON public.ficha_tecnica_contratos
FOR INSERT
WITH CHECK (auth.uid() = user_id);
CREATE POLICY "Users can update their own fichas"
ON public.ficha_tecnica_contratos
FOR UPDATE
USING (auth.uid() = user_id);
CREATE POLICY "Users can delete their own fichas"
ON public.ficha_tecnica_contratos
FOR DELETE
USING (auth.uid() = user_id);
-- Create index for better performance
CREATE INDEX idx_ficha_tecnica_of_number ON public.ficha_tecnica_contratos(of_number);
CREATE INDEX idx_ficha_tecnica_user_id ON public.ficha_tecnica_contratos(user_id);