162 lines
6.1 KiB
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);
|