feat(funcionario): adicionar tabelas de estado civil, nível de instrução e raça/cor, além de ajustes na tabela de status

This commit is contained in:
Claudecio Martins
2025-10-23 19:51:27 +02:00
parent 263d513198
commit 9cfa79db4b

View File

@@ -3,31 +3,151 @@
-- =============================================================================================================== -- ===============================================================================================================
CREATE TABLE IF NOT EXISTS public.funcionario_status ( CREATE TABLE IF NOT EXISTS public.funcionario_status (
id BIGINT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY, id BIGINT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,
descricao VARCHAR(255) NOT NULL UNIQUE descricao VARCHAR(255) NOT NULL,
observacao TEXT DEFAULT NULL
); );
INSERT INTO public.funcionario_status (id, descricao) VALUES INSERT INTO public.funcionario_status (id, descricao, observacao) VALUES
(1, 'Ativo'), (1, 'Ativo', 'Funcionário ativo'),
(3, 'Inativo'); (2, 'Inativo', 'Funcionário inativo recebendo benefício do INSS'),
(3, 'Inativo', 'Funcionário aposentado'),
(4, 'Inativo', 'Funcionário desligado da empresa');
SELECT setval(pg_get_serial_sequence('public.funcionario_status','id'), (SELECT MAX(id) FROM public.funcionario_status)); SELECT setval(pg_get_serial_sequence('public.funcionario_status','id'), (SELECT MAX(id) FROM public.funcionario_status));
-- ===============================================================================================================
-- Estado Civil Funcionário
-- ===============================================================================================================
CREATE TABLE IF NOT EXISTS public.funcionario_estado_civil (
id BIGINT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,
descricao VARCHAR(255) NOT NULL
);
INSERT INTO public.funcionario_estado_civil (id, descricao) VALUES
(1, 'Solteiro(a)'),
(2, 'Casado(a)'),
(3, 'Divorciado(a)'),
(4, 'Separado(a)'),
(5, 'Viúvo(a)');
SELECT setval(pg_get_serial_sequence('public.funcionario_estado_civil','id'), (SELECT MAX(id) FROM public.funcionario_estado_civil));
-- ===============================================================================================================
-- Nível de Instrução Funcionário
-- ===============================================================================================================
CREATE TABLE IF NOT EXISTS public.funcionario_nivel_instrucao (
id BIGINT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,
codigo_xml VARCHAR(50) NOT NULL,
descricao VARCHAR(255) NOT NULL
);
INSERT INTO public.funcionario_nivel_instrucao (id, codigo_xml, descricao) VALUES
(1, '01', 'Analfabeto, inclusive o que, embora tenha recebido instrução, não se alfabetizou'),
(2, '02', 'Até o 5º ano incompleto do ensino fundamental (antiga 4ª série) ou que se tenha alfabetizado sem ter frequentado escola regular'),
(3, '03', '5º ano completo do ensino fundamental'),
(4, '04', 'Do 6º ao 9º ano do ensino fundamental incompleto (antiga 5ª a 8ª série)'),
(5, '05', 'Ensino fundamental completo'),
(6, '06', 'Ensino médio incompleto'),
(7, '07', 'Ensino médio completo'),
(8, '08', 'Educação superior incompleta'),
(9, '09', 'Educação superior completa'),
(10, '10', 'Pós-graduação completa'),
(11, '11', 'Mestrado completo'),
(12, '12', 'Doutorado completo');
SELECT setval(pg_get_serial_sequence('public.funcionario_nivel_instrucao','id'), (SELECT MAX(id) FROM public.funcionario_nivel_instrucao));
-- ===============================================================================================================
-- Raça/Cor Funcionário
-- ===============================================================================================================
CREATE TABLE IF NOT EXISTS public.funcionario_raca_cor (
id BIGINT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,
codigo_xml VARCHAR(50) NOT NULL,
descricao VARCHAR(255) NOT NULL
);
INSERT INTO public.funcionario_raca_cor (id, codigo_xml, descricao) VALUES
(1, '1', 'Branca'),
(2, '2', 'Preta'),
(3, '3', 'Parda'),
(4, '4', 'Amarela'),
(5, '5', 'Indígena'),
(6, '6', 'Não informado');
SELECT setval(pg_get_serial_sequence('public.funcionario_raca_cor','id'), (SELECT MAX(id) FROM public.funcionario_raca_cor));
-- =============================================================================================================== -- ===============================================================================================================
-- Funcionário -- Funcionário
-- =============================================================================================================== -- ===============================================================================================================
CREATE TABLE IF NOT EXISTS public.funcionario ( CREATE TABLE IF NOT EXISTS public.funcionario (
-- Identificadores
id BIGINT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY, id BIGINT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,
uuid UUID NOT NULL UNIQUE, uuid UUID NOT NULL UNIQUE,
status_id BIGINT NOT NULL REFERENCES public.funcionario_status(id) ON UPDATE CASCADE ON DELETE RESTRICT,
empresa_id BIGINT NOT NULL REFERENCES public.empresa(id) ON UPDATE CASCADE ON DELETE RESTRICT, empresa_id BIGINT NOT NULL REFERENCES public.empresa(id) ON UPDATE CASCADE ON DELETE RESTRICT,
-- Dados Funcionário
status_id BIGINT NOT NULL REFERENCES public.funcionario_status(id) ON UPDATE CASCADE ON DELETE RESTRICT,
nome VARCHAR(255) NOT NULL, nome VARCHAR(255) NOT NULL,
have_nome_social SMALLINT NOT NULL DEFAULT 0, have_nome_social SMALLINT NOT NULL DEFAULT 0,
nome_social VARCHAR(255) DEFAULT NULL, nome_social VARCHAR(255) DEFAULT NULL,
documentCpf VARCHAR(11) NOT NULL,
documentPis VARCHAR(11) DEFAULT NULL, -- Documentos
document_cpf VARCHAR(11) NOT NULL,
document_pis VARCHAR(11) DEFAULT NULL,
-- Nível de Instrução
nivel_instrucao_id BIGINT DEFAULT NULL REFERENCES public.funcionario_nivel_instrucao(id) ON UPDATE CASCADE ON DELETE RESTRICT,
-- Estado Civil
estado_civil_id BIGINT NOT NULL DEFAULT 1 REFERENCES public.funcionario_estado_civil(id) ON UPDATE CASCADE ON DELETE RESTRICT,
-- Raça/Cor
raca_cor_id BIGINT DEFAULT NULL REFERENCES public.funcionario_raca_cor(id) ON UPDATE CASCADE ON DELETE RESTRICT,
-- Data de Nascimento e Óbito
data_nascimento DATE NOT NULL, data_nascimento DATE NOT NULL,
tipo_filiacao_1 VARCHAR(255) DEFAULT NULL, data_obito DATE DEFAULT NULL,
-- Sexo
sexo CHAR(1) DEFAULT NULL,
-- Filiação
filiacao_1 VARCHAR(255) DEFAULT NULL, filiacao_1 VARCHAR(255) DEFAULT NULL,
tipo_filiacao_2 VARCHAR(255) DEFAULT NULL,
filiacao_2 VARCHAR(255) DEFAULT NULL, filiacao_2 VARCHAR(255) DEFAULT NULL,
-- Naturalidade
naturalidade_pais BIGINT DEFAULT 115 REFERENCES esocial.tab_06(id) ON UPDATE CASCADE ON DELETE RESTRICT,
naturalidade_uf CHAR(2) DEFAULT NULL REFERENCES esocial.tab_07(id) ON UPDATE CASCADE ON DELETE RESTRICT,
naturalidade_municipio VARCHAR(255) DEFAULT NULL,
naturalidade_municipio_codigo_ibge VARCHAR(7) DEFAULT NULL,
-- Residência
endereco_tipo_logradouro BIGINT DEFAULT NULL REFERENCES esocial.tab_20(id) ON UPDATE CASCADE ON DELETE RESTRICT,
endereco_descricao_logradouro VARCHAR(100) DEFAULT NULL,
endereco_numero_logradouro VARCHAR(10) DEFAULT NULL,
endereco_complemento_logradouro VARCHAR(30) DEFAULT NULL,
endereco_bairro VARCHAR(90) DEFAULT NULL,
endereco_cep VARCHAR(8) DEFAULT NULL,
endereco_codigo_municipio_ibge VARCHAR(7) DEFAULT NULL,
endereco_uf CHAR(2) DEFAULT NULL,
-- Endereço no Exterior
endereco_exterior_pais_id BIGINT DEFAULT NULL REFERENCES esocial.tab_06(id) ON UPDATE CASCADE ON DELETE RESTRICT,
endereco_exterior_descricao_logradouro VARCHAR(100) DEFAULT NULL,
endereco_exterior_numero_logradouro VARCHAR(10) DEFAULT NULL,
endereco_exterior_complemento_logradouro VARCHAR(30) DEFAULT NULL,
endereco_exterior_bairro VARCHAR(90) DEFAULT NULL,
endereco_exterior_nome_cidade VARCHAR(50) DEFAULT NULL,
endereco_exterior_cep VARCHAR(12) DEFAULT NULL,
-- Contato
email VARCHAR(255) DEFAULT NULL,
telefone VARCHAR(20) DEFAULT NULL,
celular VARCHAR(20) DEFAULT NULL,
-- Controle de Registros
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT NULL,
deleted_at TIMESTAMP DEFAULT NULL
); );