From 9cfa79db4b2f3aca5feab04bb1212cf87d9a8565 Mon Sep 17 00:00:00 2001 From: Claudecio Martins Date: Thu, 23 Oct 2025 19:51:27 +0200 Subject: [PATCH] =?UTF-8?q?feat(funcionario):=20adicionar=20tabelas=20de?= =?UTF-8?q?=20estado=20civil,=20n=C3=ADvel=20de=20instru=C3=A7=C3=A3o=20e?= =?UTF-8?q?=20ra=C3=A7a/cor,=20al=C3=A9m=20de=20ajustes=20na=20tabela=20de?= =?UTF-8?q?=20status?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Migrations/000_public.funcionario.sql | 138 ++++++++++++++++-- 1 file changed, 129 insertions(+), 9 deletions(-) diff --git a/app/Module/Funcionario/v0/Database/Migrations/000_public.funcionario.sql b/app/Module/Funcionario/v0/Database/Migrations/000_public.funcionario.sql index 84c1e47..5d2bf63 100644 --- a/app/Module/Funcionario/v0/Database/Migrations/000_public.funcionario.sql +++ b/app/Module/Funcionario/v0/Database/Migrations/000_public.funcionario.sql @@ -3,31 +3,151 @@ -- =============================================================================================================== CREATE TABLE IF NOT EXISTS public.funcionario_status ( 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 -(1, 'Ativo'), -(3, 'Inativo'); +INSERT INTO public.funcionario_status (id, descricao, observacao) VALUES +(1, 'Ativo', 'Funcionário ativo'), +(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)); +-- =============================================================================================================== +-- 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 -- =============================================================================================================== CREATE TABLE IF NOT EXISTS public.funcionario ( + -- Identificadores id BIGINT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY, 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, + + -- Dados Funcionário + status_id BIGINT NOT NULL REFERENCES public.funcionario_status(id) ON UPDATE CASCADE ON DELETE RESTRICT, nome VARCHAR(255) NOT NULL, have_nome_social SMALLINT NOT NULL DEFAULT 0, 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, - 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, - tipo_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 ); \ No newline at end of file