5 Commits

8 changed files with 1105 additions and 201 deletions

View File

@@ -51,6 +51,8 @@
$startDate = new DateTime(datetime: $api['start_date']); $startDate = new DateTime(datetime: $api['start_date']);
if ($api['status'] === 'active' && $startDate <= new DateTime()) { if ($api['status'] === 'active' && $startDate <= new DateTime()) {
$routeFile = MODULE_PATH . "/{$manifest['dirName']}/{$api['version']}/Routes/Routes.php"; $routeFile = MODULE_PATH . "/{$manifest['dirName']}/{$api['version']}/Routes/Routes.php";
// Carrega arquivo de rotas
if (file_exists(filename: $routeFile)) { if (file_exists(filename: $routeFile)) {
Router::group( Router::group(
prefix: "/{$manifest['slug']}", prefix: "/{$manifest['slug']}",

View File

@@ -0,0 +1,153 @@
-- ===============================================================================================================
-- Status Funcionário
-- ===============================================================================================================
CREATE TABLE IF NOT EXISTS public.funcionario_status (
id BIGINT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,
descricao VARCHAR(255) NOT NULL,
observacao TEXT DEFAULT NULL
);
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,
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,
-- 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_obito DATE DEFAULT NULL,
-- Sexo
sexo CHAR(1) DEFAULT NULL,
-- Filiação
filiacao_1 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
);

View File

@@ -7,7 +7,7 @@
"firebase/php-jwt": "v6.11.1", "firebase/php-jwt": "v6.11.1",
"vlucas/phpdotenv": "v5.6.2", "vlucas/phpdotenv": "v5.6.2",
"symfony/var-dumper": "^v6.4.26", "symfony/var-dumper": "^v6.4.26",
"claudecio/axiumphp": "dev-dev-update-initializing", "claudecio/axiumphp": "dev-feature-updated-router",
"ext-json": "*" "ext-json": "*"
}, },
"repositories": [ "repositories": [

14
composer.lock generated
View File

@@ -4,20 +4,20 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "3e440c7d7c70dfe80c1e1f3c59e6adc5", "content-hash": "f3706a4f041aac68b4feb4e9d952a8a2",
"packages": [ "packages": [
{ {
"name": "claudecio/axiumphp", "name": "claudecio/axiumphp",
"version": "dev-dev-update-initializing", "version": "dev-feature-updated-router",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/claudecio/AxiumPHP.git", "url": "https://github.com/claudecio/AxiumPHP.git",
"reference": "ccc3c7de5462371150ea8d82549701519503f9f7" "reference": "c7353947a667ea857b461f2b6251441784a4b8ef"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/claudecio/AxiumPHP/zipball/ccc3c7de5462371150ea8d82549701519503f9f7", "url": "https://api.github.com/repos/claudecio/AxiumPHP/zipball/c7353947a667ea857b461f2b6251441784a4b8ef",
"reference": "ccc3c7de5462371150ea8d82549701519503f9f7", "reference": "c7353947a667ea857b461f2b6251441784a4b8ef",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -35,10 +35,10 @@
], ],
"description": "Meu framework PHP para sistemas MVC modulares.", "description": "Meu framework PHP para sistemas MVC modulares.",
"support": { "support": {
"source": "https://github.com/claudecio/AxiumPHP/tree/dev-update-initializing", "source": "https://github.com/claudecio/AxiumPHP/tree/feature-updated-router",
"issues": "https://github.com/claudecio/AxiumPHP/issues" "issues": "https://github.com/claudecio/AxiumPHP/issues"
}, },
"time": "2025-10-18T18:31:17+00:00" "time": "2025-10-26T20:05:19+00:00"
}, },
{ {
"name": "firebase/php-jwt", "name": "firebase/php-jwt",

View File

@@ -79,14 +79,227 @@ SELECT setval(pg_get_serial_sequence('esocial.tab_02','id'), (SELECT MAX(id) FRO
-- Tabela 03 - Natureza das Rubricas da Folha de Pagamento -- Tabela 03 - Natureza das Rubricas da Folha de Pagamento
-- =============================================================================================================== -- ===============================================================================================================
CREATE TABLE IF NOT EXISTS esocial.tab_03 ( CREATE TABLE IF NOT EXISTS esocial.tab_03 (
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, id BIGINT,
nome VARCHAR(255) NOT NULL, nome VARCHAR(255) NOT NULL,
descricao TEXT DEFAULT NULL,
data_inicio DATE NOT NULL, data_inicio DATE NOT NULL,
data_fim DATE DEFAULT NULL, data_fim DATE DEFAULT NULL,
incide_cp SMALLINT DEFAULT 0 incide_cp SMALLINT DEFAULT 0
); );
INSERT INTO esocial.tab_03 (id, nome, data_inicio, data_fim, incide_cp) VALUES
(1000, 'Salário, vencimento, soldo', '2014-01-01', NULL, '0'),
(1001, 'Subsídio', '2014-01-01', NULL, '0'),
(1002, 'Descanso semanal remunerado - DSR', '2014-01-01', '2024-04-30', '0'),
(1003, 'Horas extraordinárias', '2014-01-01', NULL, '0'),
(1004, 'Horas extraordinárias - Banco de horas', '2014-01-01', NULL, '0'),
(1005, 'Direito de arena', '2014-01-01', NULL, '0'),
(1006, 'Intervalos intra e inter jornadas não concedidos', '2014-01-01', NULL, '0'),
(1007, 'Luvas e premiações', '2014-01-01', NULL, '0'),
(1009, 'Salário-família - Complemento', '2014-01-01', NULL, '0'),
(1010, 'Salário in natura - Pagos em bens ou serviços', '2014-01-01', NULL, '0'),
(1011, 'Sobreaviso e prontidão', '2014-01-01', NULL, '0'),
(1012, 'Descanso semanal remunerado - DSR e feriado', '2014-01-01', NULL, '0'),
(1015, 'Adiantamento de férias', '2014-01-01', NULL, '0'),
(1016, 'Férias', '2014-01-01', '2025-12-31', '0'),
(1016, 'Férias', '2026-01-01', NULL, '0'),
(1017, 'Terço constitucional de férias', '2014-01-01', '2025-12-31', '1'),
(1017, 'Terço constitucional de férias', '2026-01-01', NULL, '1'),
(1018, 'Férias - Abono ou gratificação de férias superior a 20 dias', '2014-01-01', NULL, '1'),
(1019, 'Terço constitucional de férias - Abono ou gratificação de férias superior a 20 dias', '2014-01-01', NULL, '1'),
(1020, 'Férias', '2014-01-01', '2023-04-30', '0'),
(1021, 'Férias - Abono ou gratificação de férias superior a 20 dias', '2014-01-01', '2023-04-30', '1'),
(1022, 'Férias - Abono ou gratificação de férias não excedente a 20 dias', '2014-01-01', NULL, '1'),
(1023, 'Férias - Abono pecuniário', '2014-01-01', NULL, '0'),
(1024, 'Férias - Dobro na vigência do contrato', '2014-01-01', NULL, '0'),
(1040, 'Licença-prêmio', '2014-01-01', NULL, '0'),
(1041, 'Licença-prêmio indenizada', '2014-01-01', NULL, '0'),
(1050, 'Remuneração de dias de afastamento', '2014-01-01', NULL, '0'),
(1080, 'Stock option', '2014-01-01', NULL, '0'),
(1099, 'Outras verbas salariais', '2014-01-01', NULL, '0'),
(1201, 'Adicional de função / cargo confiança', '2014-01-01', NULL, '0'),
(1202, 'Adicional de insalubridade', '2014-01-01', NULL, '0'),
(1203, 'Adicional de periculosidade', '2014-01-01', NULL, '0'),
(1204, 'Adicional de transferência', '2014-01-01', NULL, '0'),
(1205, 'Adicional noturno', '2014-01-01', NULL, '0'),
(1206, 'Adicional por tempo de serviço', '2014-01-01', NULL, '0'),
(1207, 'Comissões, porcentagens, produção', '2014-01-01', NULL, '0'),
(1208, 'Gueltas ou gorjetas - Repassadas por fornecedores ou clientes', '2014-01-01', NULL, '0'),
(1209, 'Gueltas ou gorjetas - Repassadas pelo empregador', '2014-01-01', NULL, '0'),
(1210, 'Gratificação por acordo ou convenção coletiva', '2014-01-01', NULL, '0'),
(1211, 'Gratificações', '2014-01-01', NULL, '0'),
(1212, 'Gratificações ou outras verbas de natureza permanente', '2014-01-01', NULL, '0'),
(1213, 'Gratificações ou outras verbas de natureza transitória', '2014-01-01', NULL, '0'),
(1214, 'Adicional de penosidade', '2014-01-01', NULL, '0'),
(1215, 'Adicional de unidocência', '2014-01-01', NULL, '0'),
(1216, 'Adicional de localidade', '2014-01-01', NULL, '0'),
(1217, 'Gratificação de curso/concurso', '2014-01-01', NULL, '0'),
(1225, 'Quebra de caixa', '2014-01-01', NULL, '0'),
(1230, 'Remuneração do dirigente sindical', '2014-01-01', NULL, '0'),
(1299, 'Outros adicionais', '2014-01-01', NULL, '0'),
(1300, 'PLR - Participação em Lucros ou Resultados', '2014-01-01', NULL, '0'),
(1350, 'Bolsa de estudo - Estagiário', '2014-01-01', NULL, '0'),
(1351, 'Bolsa de estudo - Médico residente', '2014-01-01', NULL, '0'),
(1352, 'Bolsa de estudo ou pesquisa', '2014-01-01', NULL, '0'),
(1401, 'Abono', '2014-01-01', NULL, '0'),
(1402, 'Abono PIS/PASEP', '2014-01-01', NULL, '0'),
(1403, 'Abono legal', '2014-01-01', NULL, '0'),
(1404, 'Auxílio babá', '2014-01-01', NULL, '0'),
(1405, 'Assistência médica', '2014-01-01', NULL, '0'),
(1406, 'Auxílio-creche', '2014-01-01', NULL, '0'),
(1407, 'Auxílio-educação', '2014-01-01', NULL, '0'),
(1409, 'Salário-família', '2014-01-01', NULL, '0'),
(1410, 'Auxílio - Locais de difícil acesso', '2014-01-01', NULL, '0'),
(1411, 'Auxílio-natalidade', '2014-01-01', NULL, '1'),
(1412, 'Abono permanência', '2014-01-01', NULL, '0'),
(1601, 'Ajuda de custo - Aeronauta', '2014-01-01', NULL, '0'),
(1602, 'Ajuda de custo de transferência', '2014-01-01', NULL, '0'),
(1603, 'Ajuda de custo', '2018-05-01', NULL, '0'),
(1604, 'Ajuda de custo - Acima de 50% da remuneração mensal', '2018-05-01', '2019-03-31', '0'),
(1619, 'Ajuda compensatória - Programa Emergencial de Manutenção do Emprego e da Renda', '2020-04-01', NULL, '0'),
(1620, 'Ressarcimento de despesas pelo uso de veículo próprio', '2014-01-01', NULL, '0'),
(1621, 'Ressarcimento de despesas de viagem, exceto despesas com veículos', '2014-01-01', NULL, '0'),
(1623, 'Ressarcimento de provisão', '2014-01-01', NULL, '0'),
(1629, 'Ressarcimento de outras despesas', '2014-01-01', NULL, '0'),
(1650, 'Diárias de viagem', '2018-05-01', NULL, '0'),
(1651, 'Diárias de viagem - Até 50% do salário', '2014-01-01', '2018-04-30', '0'),
(1652, 'Diárias de viagem - Acima de 50% do salário', '2014-01-01', '2018-04-30', '0'),
(1799, 'Alimentação concedida em pecúnia com caráter indenizatório', '2014-01-01', NULL, '1'),
(1800, 'Alimentação concedida em pecúnia', '2014-01-01', '2025-12-31', '1'),
(1800, 'Alimentação concedida em pecúnia com caráter salarial', '2026-01-01', NULL, '1'),
(1801, 'Alimentação', '2014-01-01', '2021-06-30', '1'),
(1802, 'Etapas (marítimos)', '2014-01-01', NULL, '1'),
(1805, 'Moradia', '2014-01-01', NULL, '1'),
(1806, 'Alimentação em ticket ou cartão, vinculada ao PAT', '2014-01-01', NULL, '1'),
(1807, 'Alimentação em ticket ou cartão, não vinculada ao PAT', '2014-01-01', NULL, '1'),
(1808, 'Cesta básica ou refeição, vinculada ao PAT', '2014-01-01', NULL, '1'),
(1809, 'Cesta básica ou refeição, não vinculada ao PAT', '2014-01-01', NULL, '1'),
(1810, 'Transporte', '2014-01-01', '2025-12-31', '1'),
(1810, 'Vale-transporte ou auxílio-transporte com caráter indenizatório', '2026-01-01', NULL, '1'),
(1811, 'Auxílio-transporte ou auxílio-combustível com caráter salarial', '2014-01-01', NULL, '1'),
(1899, 'Outros auxílios', '2014-01-01', NULL, '0'),
(1901, 'Juros e/ou atualização monetária', '2014-01-01', NULL, '0'),
(2501, 'Prêmios', '2014-01-01', NULL, '0'),
(2502, 'Liberalidades concedidas em mais de duas parcelas anuais', '2018-05-01', '2019-03-31', '0'),
(2510, 'Direitos autorais e intelectuais', '2014-01-01', NULL, '0'),
(2801, 'Quarentena remunerada', '2014-01-01', NULL, '0'),
(2901, 'Empréstimos', '2014-01-01', NULL, '0'),
(2902, 'Vestuário e equipamentos', '2014-01-01', '2021-07-31', '0'),
(2903, 'Vestuário e equipamentos', '2014-01-01', NULL, '0'),
(2920, 'Reembolsos diversos', '2014-01-01', '2021-07-31', '0'),
(2930, 'Insuficiência de saldo', '2014-01-01', NULL, '0'),
(2999, 'Arredondamentos', '2014-01-01', NULL, '0'),
(3501, 'Remuneração por prestação de serviços', '2014-01-01', NULL, '0'),
(3505, 'Retiradas (pró-labore) de diretores empregados', '2014-01-01', NULL, '0'),
(3506, 'Retiradas (pró-labore) de diretores não empregados', '2014-01-01', NULL, '0'),
(3508, 'Retiradas (pró-labore) de proprietários ou sócios', '2014-01-01', NULL, '0'),
(3509, 'Honorários a conselheiros', '2014-01-01', NULL, '0'),
(3510, 'Gratificação (jeton)', '2014-01-01', NULL, '0'),
(3511, 'Gratificação eleitoral', '2014-01-01', NULL, '0'),
(3520, 'Remuneração de cooperado', '2014-01-01', NULL, '0'),
(3525, 'Côngruas, prebendas e afins', '2018-05-01', NULL, '0'),
(4010, 'Complementação salarial de auxílio-doença', '2014-01-01', NULL, '0'),
(4011, 'Complemento de salário-mínimo - RPPS', '2014-01-01', NULL, '0'),
(4050, 'Salário-maternidade', '2014-01-01', NULL, '1'),
(4051, 'Salário-maternidade - 13° salário', '2014-01-01', NULL, '1'),
(5001, '13º salário', '2014-01-01', NULL, '0'),
(5005, '13° salário complementar', '2014-01-01', NULL, '0'),
(5501, 'Adiantamento de salário', '2014-01-01', NULL, '0'),
(5504, '13º salário - Adiantamento', '2014-01-01', NULL, '0'),
(5510, 'Adiantamento de benefícios previdenciários', '2014-01-01', NULL, '0'),
(6000, 'Saldo de salários na rescisão contratual', '2014-01-01', NULL, '0'),
(6001, '13º salário relativo ao aviso prévio indenizado', '2014-01-01', NULL, '0'),
(6002, '13° salário proporcional na rescisão', '2014-01-01', NULL, '0'),
(6003, 'Indenização compensatória do aviso prévio', '2014-01-01', NULL, '0'),
(6004, 'Férias - Dobro na rescisão', '2014-01-01', NULL, '0'),
(6006, 'Férias proporcionais', '2014-01-01', NULL, '0'),
(6007, 'Férias vencidas na rescisão', '2014-01-01', NULL, '0'),
(6101, 'Indenização compensatória - Multa rescisória 20 ou 40% (CF/88)', '2014-01-01', NULL, '0'),
(6102, 'Indenização do art. 9º da Lei 7.238/1984', '2014-01-01', NULL, '0'),
(6103, 'Indenização do art. 14 da Lei 5.889/1973', '2014-01-01', NULL, '0'),
(6104, 'Indenização do art. 479 da CLT', '2014-01-01', NULL, '0'),
(6105, 'Indenização recebida a título de incentivo a demissão', '2014-01-01', NULL, '0'),
(6106, 'Multa do art. 477 da CLT', '2014-01-01', NULL, '0'),
(6107, 'Indenização por quebra de estabilidade', '2014-01-01', NULL, '0'),
(6108, 'Tempo de espera do motorista profissional', '2014-01-01', NULL, '0'),
(6119, 'Indenização rescisória - Programa Emergencial de Manutenção do Emprego e da Renda', '2020-04-01', NULL, '0'),
(6129, 'Outras verbas não remuneratórias (indenizatórias ou multas)', '2014-01-01', NULL, '0'),
(6901, 'Desconto do aviso prévio', '2014-01-01', NULL, '0'),
(6904, 'Multa prevista no art. 480 da CLT', '2014-01-01', NULL, '0'),
(7001, 'Proventos', '2014-01-01', NULL, '0'),
(7002, 'Proventos - Pensão por morte Civil', '2014-01-01', NULL, '0'),
(7003, 'Proventos - Reserva', '2014-01-01', NULL, '0'),
(7004, 'Proventos - Reforma', '2014-01-01', NULL, '0'),
(7005, 'Pensão Militar', '2014-01-01', NULL, '0'),
(7006, 'Auxílio-reclusão', '2014-01-01', NULL, '0'),
(7007, 'Pensões especiais', '2014-01-01', NULL, '0'),
(7008, 'Complementação de aposentadoria/ pensão', '2014-01-01', NULL, '0'),
(9200, 'Desconto de adiantamentos', '2014-01-01', NULL, '0'),
(9201, 'Contribuição previdenciária', '2014-01-01', NULL, '0'),
(9202, 'Contribuição militar', '2014-01-01', NULL, '0'),
(9203, 'Imposto de Renda Retido na Fonte', '2014-01-01', NULL, '0'),
(9205, 'Provisão de contribuição previdenciária', '2014-01-01', NULL, '0'),
(9207, 'Faltas', '2014-01-01', NULL, '0'),
(9208, 'Atrasos', '2014-01-01', NULL, '0'),
(9209, 'Faltas ou atrasos', '2014-01-01', NULL, '0'),
(9210, 'DSR s/faltas e atrasos', '2014-01-01', NULL, '0'),
(9211, 'DSR sobre faltas', '2014-01-01', NULL, '0'),
(9212, 'DSR sobre atrasos', '2014-01-01', NULL, '0'),
(9213, 'Pensão alimentícia', '2014-01-01', NULL, '0'),
(9214, '13° salário - Desconto de adiantamento', '2014-01-01', NULL, '0'),
(9216, 'Desconto de vale-transporte', '2014-01-01', NULL, '0'),
(9217, 'Contribuição a Outras Entidades e Fundos', '2014-01-01', NULL, '0'),
(9218, 'Retenções judiciais', '2014-01-01', NULL, '0'),
(9219, 'Desconto de assistência médica ou odontológica - Plano coletivo empresarial', '2014-01-01', NULL, '0'),
(9220, 'Alimentação - Desconto', '2014-01-01', '2021-06-30', '0'),
(9221, 'Desconto de férias', '2014-01-01', NULL, '0'),
(9222, 'Desconto de outros impostos e contribuições', '2014-01-01', NULL, '0'),
(9223, 'Previdência complementar - Parte do empregado', '2014-01-01', NULL, '0'),
(9224, 'FAPI - Parte do empregado', '2014-01-01', NULL, '0'),
(9225, 'Previdência complementar - Parte do servidor', '2014-01-01', NULL, '0'),
(9226, 'Desconto de férias - Abono', '2014-01-01', NULL, '0'),
(9230, 'Contribuição sindical laboral', '2014-01-01', NULL, '0'),
(9231, 'Mensalidade sindical ou associativa', '2014-01-01', NULL, '0'),
(9232, 'Contribuição sindical - Assistencial', '2014-01-01', NULL, '0'),
(9233, 'Contribuição sindical - Confederativa', '2014-01-01', NULL, '0'),
(9240, 'Alimentação concedida em pecúnia - Desconto', '2014-01-01', NULL, '0'),
(9241, 'Alimentação em ticket ou cartão, vinculada ao PAT - Desconto', '2014-01-01', NULL, '0'),
(9242, 'Alimentação em ticket ou cartão, não vinculada ao PAT - Desconto', '2014-01-01', NULL, '0'),
(9243, 'Cesta básica ou refeição, vinculada ao PAT - Desconto', '2014-01-01', NULL, '0'),
(9244, 'Cesta básica ou refeição, não vinculada ao PAT - Desconto', '2014-01-01', NULL, '0'),
(9250, 'Seguro de vida - Desconto', '2014-01-01', NULL, '0'),
(9253, 'Empréstimos eConsignado - Desconto', '2024-07-01', NULL, '0'),
(9254, 'Empréstimos consignados - Desconto', '2014-01-01', NULL, '0'),
(9255, 'Empréstimos do empregador - Desconto', '2014-01-01', NULL, '0'),
(9258, 'Convênios', '2014-01-01', NULL, '0'),
(9260, 'FIES - Desconto', '2018-05-01', NULL, '0'),
(9270, 'Danos e prejuízos causados pelo trabalhador', '2014-01-01', NULL, '0'),
(9290, 'Desconto de pagamento indevido em meses anteriores', '2014-01-01', '2021-07-31', '0'),
(9291, 'Abate-teto', '2014-01-01', NULL, '0'),
(9292, 'Ressarcimento ao erário', '2014-01-01', NULL, '0'),
(9293, 'Honorários advocatícios', '2014-01-01', NULL, '0'),
(9294, 'Redutor EC 41/03', '2014-01-01', NULL, '0'),
(9299, 'Outros descontos', '2014-01-01', NULL, '0'),
(9901, 'Base de cálculo da contribuição previdenciária', '2014-01-01', NULL, '0'),
(9902, 'Total da base de cálculo do FGTS', '2014-01-01', NULL, '0'),
(9903, 'Total da base de cálculo do IRRF', '2014-01-01', NULL, '0'),
(9904, 'Total da base de cálculo do FGTS rescisório', '2014-01-01', NULL, '0'),
(9905, 'Serviço militar', '2014-01-01', NULL, '0'),
(9906, 'Remuneração no exterior', '2014-01-01', NULL, '0'),
(9907, 'Total da contribuição da previdenciária patronal - RPPS', '2014-01-01', NULL, '0'),
(9908, 'FGTS - Depósito', '2014-01-01', NULL, '0'),
(9910, 'Seguros', '2014-01-01', NULL, '0'),
(9911, 'Assistência Médica', '2014-01-01', NULL, '0'),
(9912, 'Desconto de assistência médica ou odontológica - Plano diferente de coletivo empresarial', '2014-01-01', NULL, '0'),
(9930, 'Salário-maternidade pago pela Previdência Social', '2014-01-01', NULL, '1'),
(9931, 'Salário-maternidade pago pela Previdência Social - 13° salário', '2014-01-01', NULL, '1'),
(9932, 'Auxílio-doença acidentário', '2014-01-01', NULL, '0'),
(9933, 'Auxílio-doença', '2014-01-01', NULL, '0'),
(9938, 'Isenção IRRF - 65 anos', '2014-01-01', NULL, '0'),
(9939, 'Outros valores tributáveis', '2014-01-01', NULL, '0'),
(9950, 'Horas extraordinárias - Banco de horas', '2014-01-01', '2019-10-31', '0'),
(9951, 'Horas compensadas - Banco de horas', '2014-01-01', '2019-10-31', '0'),
(9989, 'Outros valores informativos', '2014-01-01', NULL, '0');
-- =============================================================================================================== -- ===============================================================================================================
-- Tabela 04 - Códigos e Alíquotas de FPAS / Terceiros -- Tabela 04 - Códigos e Alíquotas de FPAS / Terceiros
-- =============================================================================================================== -- ===============================================================================================================
@@ -177,4 +390,562 @@ INSERT INTO esocial.tab_05 (id, descricao) VALUES
(6, 'CEI (Cadastro Específico do INSS)'); (6, 'CEI (Cadastro Específico do INSS)');
-- Atualizando a sequência depois do insert -- Atualizando a sequência depois do insert
SELECT setval(pg_get_serial_sequence('esocial.tab_05','id'), (SELECT MAX(id) FROM esocial.tab_05)); SELECT setval(pg_get_serial_sequence('esocial.tab_05','id'), (SELECT MAX(id) FROM esocial.tab_05));
-- ===============================================================================================================
-- Tabela 06 - Países
-- ===============================================================================================================
CREATE TABLE IF NOT EXISTS esocial.tab_06 (
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
descricao VARCHAR(255) NOT NULL,
data_criacao DATE DEFAULT NULL,
data_extincao DATE DEFAULT NULL
);
INSERT INTO esocial.tab_06 (id, descricao, data_criacao, data_extincao) VALUES
(008, 'Abu Dhabi', NULL, '1996-12-13'),
(009, 'Dirce', NULL, '1996-12-13'),
(013, 'Afeganistão', NULL, NULL),
(015, 'Aland, Ilhas', '2015-12-07', '2023-01-15'),
(017, 'Albânia, República da', NULL, NULL),
(020, 'Alboran-Perejil, Ilhas', NULL, '1996-12-13'),
(023, 'Alemanha', NULL, NULL),
(025, 'Alemanha, República Democrática', NULL, '1996-12-13'),
(031, 'Burkina Faso', NULL, NULL),
(037, 'Andorra', NULL, NULL),
(040, 'Angola', NULL, NULL),
(041, 'Anguilla', NULL, NULL),
(042, 'Antártica', NULL, '2023-01-15'),
(043, 'Antígua e Barbuda', NULL, NULL),
(047, 'Antilhas Holandesas', NULL, '2018-04-30'),
(053, 'Arábia Saudita', NULL, NULL),
(059, 'Argélia', NULL, NULL),
(063, 'Argentina', NULL, NULL),
(064, 'Armênia, República da', NULL, NULL),
(065, 'Aruba', NULL, NULL),
(069, 'Austrália', NULL, NULL),
(072, 'Áustria', NULL, NULL),
(073, 'Azerbaijão, República do', NULL, NULL),
(077, 'Bahamas, Ilhas', NULL, NULL),
(080, 'Bahrein, Ilhas', NULL, NULL),
(081, 'Bangladesh', NULL, NULL),
(083, 'Barbados', NULL, NULL),
(085, 'Belarus, República da', NULL, NULL),
(087, 'Bélgica', NULL, NULL),
(088, 'Belize', NULL, NULL),
(090, 'Bermudas', NULL, NULL),
(093, 'Mianmar (Birmânia)', NULL, NULL),
(097, 'Bolívia, Estado Plurinacional da', NULL, NULL),
(098, 'Bósnia-Herzegovina, República da', NULL, NULL),
(099, 'Bonaire, Saint Eustatius e Saba', '2015-12-07', NULL),
(100, 'Int. Z. F. Manaus', '1991-12-01', '1996-12-13'),
(101, 'Botsuana', NULL, NULL),
(102, 'Bouvet, Ilha', '2015-12-07', NULL),
(105, 'Brasil', NULL, NULL),
(106, 'Fretado p/ Brasil', '1991-12-01', '1996-11-14'),
(108, 'Brunei', NULL, NULL),
(111, 'Bulgária, República da', NULL, NULL),
(115, 'Burundi', NULL, NULL),
(119, 'Butão', NULL, NULL),
(127, 'Cabo Verde, República de', NULL, NULL),
(131, 'Cachemira', NULL, '1996-12-13'),
(137, 'Cayman, Ilhas', NULL, NULL),
(141, 'Camboja', NULL, NULL),
(145, 'Camarões', NULL, NULL),
(149, 'Canadá', NULL, NULL),
(150, 'Ilhas do Canal (Jersey e Guernsey)', NULL, '2018-04-30'),
(151, 'Canárias, Ilhas', NULL, '2018-04-30'),
(152, 'Canal, Ilhas', NULL, '1996-12-13'),
(153, 'Cazaquistão, República do', NULL, NULL),
(154, 'Catar', NULL, NULL),
(158, 'Chile', NULL, NULL),
(160, 'China, República Popular da', NULL, NULL),
(161, 'Formosa (Taiwan)', NULL, NULL),
(163, 'Chipre', NULL, NULL),
(165, 'Cocos (Keeling), Ilhas', NULL, NULL),
(169, 'Colômbia', NULL, NULL),
(173, 'Comores, Ilhas', NULL, NULL),
(177, 'Congo', NULL, NULL),
(183, 'Cook, Ilhas', NULL, NULL),
(187, 'Coreia (do Norte), República Popular Democrática da', NULL, NULL),
(190, 'Coreia (do Sul), República da', NULL, NULL),
(193, 'Costa do Marfim', NULL, NULL),
(195, 'Croácia, República da', NULL, NULL),
(196, 'Costa Rica', NULL, NULL),
(198, 'Kuwait', NULL, NULL),
(199, 'Cuba', NULL, NULL),
(200, 'Curaçao', '2015-12-07', NULL),
(229, 'Benim', NULL, NULL),
(232, 'Dinamarca', NULL, NULL),
(235, 'Dominica, Ilha', NULL, NULL),
(237, 'Dubai', NULL, '1996-12-13'),
(239, 'Equador', NULL, NULL),
(240, 'Egito', NULL, NULL),
(243, 'Eritreia', '2006-07-17', NULL),
(244, 'Emirados Árabes Unidos', NULL, NULL),
(245, 'Espanha', NULL, NULL),
(246, 'Eslovênia, República da', NULL, NULL),
(247, 'Eslovaca, República', NULL, NULL),
(249, 'Estados Unidos', NULL, NULL),
(251, 'Estônia, República da', NULL, NULL),
(253, 'Etiópia', NULL, NULL),
(255, 'Falkland (Ilhas Malvinas)', NULL, NULL),
(259, 'Feroe, Ilhas', NULL, NULL),
(263, 'Fezzan', NULL, '1996-12-13'),
(267, 'Filipinas', NULL, NULL),
(271, 'Finlândia', NULL, NULL),
(275, 'França', NULL, NULL),
(281, 'Gabão', NULL, NULL),
(285, 'Gâmbia', NULL, NULL),
(289, 'Gana', NULL, NULL),
(291, 'Geórgia, República da', NULL, NULL),
(292, 'Geórgia do Sul e Sandwich do Sul, Ilhas', NULL, '2023-01-15'),
(293, 'Gibraltar', NULL, NULL),
(297, 'Granada', NULL, NULL),
(301, 'Grécia', NULL, NULL),
(305, 'Groenlândia', NULL, NULL),
(309, 'Guadalupe', NULL, NULL),
(313, 'Guam', NULL, NULL),
(317, 'Guatemala', NULL, NULL),
(321, 'Guernsey, Ilha do Canal', NULL, NULL),
(325, 'Guiana Francesa', NULL, NULL),
(329, 'Guiné', NULL, NULL),
(331, 'Guiné Equatorial', NULL, NULL),
(334, 'Guiné-Bissau', NULL, NULL),
(337, 'Guiana', NULL, NULL),
(341, 'Haiti', NULL, NULL),
(343, 'Heard e Ilhas McDonald, Ilha', NULL, '2023-01-15'),
(345, 'Honduras', NULL, NULL),
(351, 'Hong Kong', NULL, NULL),
(355, 'Hungria, República da', NULL, NULL),
(357, 'Iêmen', NULL, NULL),
(358, 'Iêmen do Sul', NULL, '1996-12-13'),
(359, 'Man, Ilha de', NULL, NULL),
(361, 'Índia', NULL, NULL),
(365, 'Indonésia', NULL, NULL),
(367, 'Inglaterra', NULL, '1997-03-18'),
(369, 'Iraque', NULL, NULL),
(372, 'Irã, República Islâmica do', NULL, NULL),
(375, 'Irlanda', NULL, NULL),
(379, 'Islândia', NULL, NULL),
(383, 'Israel', NULL, NULL),
(386, 'Itália', NULL, NULL),
(388, 'Sérvia e Montenegro', NULL, '2013-11-21'),
(391, 'Jamaica', NULL, NULL),
(393, 'Jersey, Ilha do Canal', NULL, NULL),
(395, 'Jammu', NULL, '1996-12-13'),
(396, 'Johnston, Ilhas', NULL, '2018-04-30'),
(399, 'Japão', NULL, NULL),
(403, 'Jordânia', NULL, NULL),
(411, 'Kiribati', NULL, NULL),
(420, 'Laos, República Popular Democrática do', NULL, NULL),
(423, 'Lebuan, Ilhas', NULL, '2018-04-30'),
(426, 'Lesoto', NULL, NULL),
(427, 'Letônia, República da', NULL, NULL),
(431, 'Líbano', NULL, NULL),
(434, 'Libéria', NULL, NULL),
(438, 'Líbia', NULL, NULL),
(440, 'Liechtenstein', NULL, NULL),
(442, 'Lituânia, República da', NULL, NULL),
(445, 'Luxemburgo', NULL, NULL),
(447, 'Macau', NULL, NULL),
(449, 'Macedônia do Norte', NULL, NULL),
(450, 'Madagascar', NULL, NULL),
(452, 'Ilha da Madeira', NULL, '2018-04-30'),
(455, 'Malásia', NULL, NULL),
(458, 'Malavi', NULL, NULL),
(461, 'Maldivas', NULL, NULL),
(464, 'Mali', NULL, NULL),
(467, 'Malta', NULL, NULL),
(472, 'Marianas do Norte', NULL, NULL),
(474, 'Marrocos', NULL, NULL),
(476, 'Marshall, Ilhas', NULL, NULL),
(477, 'Martinica', NULL, NULL),
(485, 'Maurício', NULL, NULL),
(488, 'Mauritânia', NULL, NULL),
(489, 'Mayotte', NULL, '2023-01-15'),
(490, 'Midway, Ilhas', NULL, '2018-04-30'),
(493, 'México', NULL, NULL),
(494, 'Moldávia, República da', NULL, NULL),
(495, 'Mônaco', NULL, NULL),
(497, 'Mongólia', NULL, NULL),
(498, 'Montenegro', '2006-06-03', NULL),
(499, 'Micronésia', NULL, NULL),
(501, 'Montserrat, Ilhas', NULL, NULL),
(505, 'Moçambique', NULL, NULL),
(507, 'Namíbia', NULL, NULL),
(508, 'Nauru', NULL, NULL),
(511, 'Christmas, Ilha (Navidad)', NULL, NULL),
(517, 'Nepal', NULL, NULL),
(521, 'Nicarágua', NULL, NULL),
(525, 'Níger', NULL, NULL),
(528, 'Nigéria', NULL, NULL),
(531, 'Niue, Ilha', NULL, NULL),
(535, 'Norfolk, Ilha', NULL, NULL),
(538, 'Noruega', NULL, NULL),
(542, 'Nova Caledônia', NULL, NULL),
(545, 'Papua Nova Guiné', NULL, NULL),
(548, 'Nova Zelândia', NULL, NULL),
(551, 'Vanuatu', NULL, NULL),
(556, 'Omã', NULL, NULL),
(563, 'Pacífico, Ilhas do (Administração dos EUA)', NULL, '1996-12-13'),
(566, 'Pacífico, Ilhas do (Possessão dos EUA)', NULL, NULL),
(569, 'Pacífico, Ilhas do (Território em Fideicomisso dos)', NULL, '1996-12-13'),
(573, 'Países Baixos (Holanda)', NULL, NULL),
(575, 'Palau', NULL, NULL),
(576, 'Paquistão', NULL, NULL),
(578, 'Palestina', '2011-01-25', NULL),
(580, 'Panamá', NULL, NULL),
(583, 'Papua Nova Guiné', '1991-12-01', '1996-12-13'),
(586, 'Paraguai', NULL, NULL),
(589, 'Peru', NULL, NULL),
(593, 'Pitcairn, Ilha', NULL, NULL),
(599, 'Polinésia Francesa', NULL, NULL),
(603, 'Polônia, República da', NULL, NULL),
(607, 'Portugal', NULL, NULL),
(611, 'Porto Rico', NULL, NULL),
(623, 'Quênia', NULL, NULL),
(625, 'Quirguiz, República', NULL, NULL),
(628, 'Reino Unido', NULL, NULL),
(640, 'República Centro-Africana', NULL, NULL),
(647, 'República Dominicana', NULL, NULL),
(660, 'Reunião, Ilha', NULL, NULL),
(665, 'Zimbábue', NULL, NULL),
(670, 'Romênia', NULL, NULL),
(675, 'Ruanda', NULL, NULL),
(676, 'Rússia, Federação da', NULL, NULL),
(677, 'Salomão, Ilhas', NULL, NULL),
(678, 'Saint Kitts e Nevis', NULL, '2016-06-27'),
(685, 'Saara Ocidental', NULL, NULL),
(687, 'El Salvador', NULL, NULL),
(690, 'Samoa', NULL, NULL),
(691, 'Samoa Americana', NULL, NULL),
(693, 'São Bartolomeu', '2015-12-07', '2023-01-15'),
(695, 'São Cristóvão e Neves, Ilhas', NULL, NULL),
(697, 'San Marino', NULL, NULL),
(698, 'São Martinho, Ilha de (Parte Francesa)', NULL, NULL),
(699, 'São Martinho, Ilha de (Parte Holandesa)', '2015-12-07', NULL),
(700, 'São Pedro e Miquelon', NULL, NULL),
(705, 'São Vicente e Granadinas', NULL, NULL),
(710, 'Santa Helena', NULL, NULL),
(715, 'Santa Lúcia', NULL, NULL),
(720, 'São Tomé e Príncipe, Ilhas', NULL, NULL),
(728, 'Senegal', NULL, NULL),
(731, 'Seychelles', NULL, NULL),
(735, 'Serra Leoa', NULL, NULL),
(737, 'Sérvia', '2006-06-03', NULL),
(738, 'Sikkim', NULL, '1996-12-13'),
(741, 'Singapura', NULL, NULL),
(744, 'Síria, República Árabe da', NULL, NULL),
(748, 'Somália', NULL, NULL),
(750, 'Sri Lanka', NULL, NULL),
(754, 'eSwatini (Essuatíni, Suazilândia)', NULL, NULL),
(755, 'Svalbard e Jan Mayen', NULL, NULL),
(756, 'África do Sul', NULL, NULL),
(759, 'Sudão', NULL, NULL),
(760, 'Sudão do Sul', '2013-05-27', NULL),
(764, 'Suécia', NULL, NULL),
(767, 'Suíça', NULL, NULL),
(770, 'Suriname', NULL, NULL),
(772, 'Tadjiquistão, República do', NULL, NULL),
(776, 'Tailândia', NULL, NULL),
(780, 'Tanzânia, República Unida da', NULL, NULL),
(781, 'Terras Austrais Francesas', NULL, '2023-01-15'),
(782, 'Território Britânico Oceano Índico', NULL, NULL),
(783, 'Djibuti', NULL, NULL),
(785, 'Território da Alta Comissão do Pacífico Ocidental', NULL, '1996-12-13'),
(788, 'Chade', NULL, NULL),
(790, 'Tchecoslováquia', NULL, '1996-12-13'),
(791, 'Tcheca, República', NULL, NULL),
(795, 'Timor Leste', NULL, NULL),
(800, 'Togo', NULL, NULL),
(805, 'Toquelau, Ilhas', NULL, NULL),
(810, 'Tonga', NULL, NULL),
(815, 'Trinidad e Tobago', NULL, NULL),
(820, 'Tunísia', NULL, NULL),
(823, 'Turcas e Caicos, Ilhas', NULL, NULL),
(824, 'Turcomenistão, República do', NULL, NULL),
(827, 'Turquia', NULL, NULL),
(828, 'Tuvalu', NULL, NULL),
(831, 'Ucrânia', NULL, NULL),
(833, 'Uganda', NULL, NULL),
(840, 'Uniao das Repúblicas Socialistas Soviéticas', NULL, '1996-12-13'),
(845, 'Uruguai', NULL, NULL),
(847, 'Uzbequistão, República do', NULL, NULL),
(848, 'Vaticano, Estado da Cidade do', NULL, NULL),
(850, 'Venezuela', NULL, NULL),
(855, 'Vietname Norte', NULL, '1996-12-13'),
(858, 'Vietnã', NULL, NULL),
(863, 'Virgens, Ilhas (Britânicas)', NULL, NULL),
(866, 'Virgens, Ilhas (EUA)', NULL, NULL),
(870, 'Fiji', NULL, NULL),
(873, 'Wake, Ilha', NULL, '2018-04-30'),
(875, 'Wallis e Futuna, Ilhas', NULL, NULL),
(888, 'Congo, República Democrática do', NULL, NULL),
(890, 'Zâmbia', NULL, NULL),
(895, 'Zona do Canal do Panamá', NULL, '2016-06-27'),
(995, 'Bancos Centrais', NULL, NULL),
(997, 'Organizações Internacionais', NULL, NULL);
SELECT setval(pg_get_serial_sequence('esocial.tab_06','id'), (SELECT MAX(id) FROM esocial.tab_06));
-- ===============================================================================================================
-- Tabela 09 - Tipos de arquivos do eSocial
-- ===============================================================================================================
CREATE TABLE IF NOT EXISTS esocial.tab_09 (
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
codigo_xml VARCHAR(50) NOT NULL,
descricao VARCHAR(255) NOT NULL,
data_inicio DATE DEFAULT NULL,
data_fim DATE DEFAULT NULL
);
INSERT INTO esocial.tab_09 (id, codigo_xml, descricao, data_inicio, data_fim) VALUES
(1, 'S-1000', 'Informações do Empregador/Contribuinte/Órgão Público', '2014-01-01', NULL),
(2, 'S-1005', 'Tabela de Estabelecimentos, Obras ou Unidades de Órgãos Públicos', '2014-01-01', NULL),
(3, 'S-1010', 'Tabela de Rubricas', '2014-01-01', NULL),
(4, 'S-1020', 'Tabela de Lotações Tributárias', '2014-01-01', NULL),
(5, 'S-1070', 'Tabela de Processos Administrativos/Judiciais', '2014-01-01', NULL),
(6, 'S-1200', 'Remuneração de Trabalhador vinculado ao Regime Geral de Previd. Social', '2014-01-01', NULL),
(7, 'S-1202', 'Remuneração de Servidor vinculado ao Regime Próprio de Previd. Social', '2022-08-22', NULL),
(8, 'S-1207', 'Benefícios - Entes Públicos', '2022-08-22', NULL),
(9, 'S-1210', 'Pagamentos de Rendimentos do Trabalho', '2014-01-01', NULL),
(10, 'S-1260', 'Comercialização da Produção Rural Pessoa Física', '2014-01-01', NULL),
(11, 'S-1270', 'Contratação de Trabalhadores Avulsos Não Portuários', '2014-01-01', NULL),
(12, 'S-1280', 'Informações Complementares aos Eventos Periódicos', '2014-01-01', NULL),
(13, 'S-1298', 'Reabertura dos Eventos Periódicos', '2014-01-01', NULL),
(14, 'S-1299', 'Fechamento dos Eventos Periódicos', '2014-01-01', NULL),
(15, 'S-2190', 'Registro Preliminar de Trabalhador', '2014-01-01', NULL),
(16, 'S-2200', 'Cadastramento Inicial do Vínculo e Admissão/Ingresso de Trabalhador', '2014-01-01', NULL),
(17, 'S-2205', 'Alteração de Dados Cadastrais do Trabalhador', '2014-01-01', NULL),
(18, 'S-2206', 'Alteração de Contrato de Trabalho/Relação Estatutária', '2014-01-01', NULL),
(19, 'S-2210', 'Comunicação de Acidente de Trabalho', '2021-10-13', NULL),
(20, 'S-2220', 'Monitoramento da Saúde do Trabalhador', '2021-10-13', NULL),
(21, 'S-2221', 'Exame Toxicológico do Motorista Profissional Empregado', '2024-08-01', NULL),
(22, 'S-2230', 'Afastamento Temporário', '2014-01-01', NULL),
(23, 'S-2231', 'Cessão/Exercício em Outro Órgão', '2021-07-19', NULL),
(24, 'S-2240', 'Condições Ambientais do Trabalho - Agentes Nocivos', '2021-10-13', NULL),
(25, 'S-2298', 'Reintegração/Outros Provimentos', '2014-01-01', NULL),
(26, 'S-2299', 'Desligamento', '2014-01-01', NULL),
(27, 'S-2300', 'Trabalhador Sem Vínculo de Emprego/Estatutário - Início', '2014-01-01', NULL),
(28, 'S-2306', 'Trabalhador Sem Vínculo de Emprego/Estatutário - Alteração Contratual', '2014-01-01', NULL),
(29, 'S-2399', 'Trabalhador Sem Vínculo de Emprego/Estatutário - Término', '2014-01-01', NULL),
(30, 'S-2400', 'Cadastro de Beneficiário - Entes Públicos - Início', '2021-11-22', NULL),
(31, 'S-2405', 'Cadastro de Beneficiário - Entes Públicos - Alteração', '2021-11-22', NULL),
(32, 'S-2410', 'Cadastro de Benefício - Entes Públicos - Início', '2021-11-22', NULL),
(33, 'S-2416', 'Cadastro de Benefício - Entes Públicos - Alteração', '2021-11-22', NULL),
(34, 'S-2418', 'Reativação de Benefício - Entes Públicos', '2021-11-22', NULL),
(35, 'S-2420', 'Cadastro de Benefício - Entes Públicos - Término', '2021-11-22', NULL),
(36, 'S-2500', 'Processo Trabalhista', '2023-10-01', NULL),
(37, 'S-2501', 'Informações de Tributos Decorrentes de Processo Trabalhista', '2023-10-01', NULL),
(38, 'S-2555', 'Solicitação de Consolidação das Informações de Tributos Decorrentes de Processo Trabalhista', '2024-12-01', NULL),
(39, 'S-3000', 'Exclusão de Eventos', '2014-01-01', NULL),
(40, 'S-3500', 'Exclusão de Eventos - Processo Trabalhista', '2023-10-01', NULL),
(41, 'S-5001', 'Informações das Contribuições Sociais por Trabalhador', '2014-01-01', NULL),
(42, 'S-5002', 'Imposto de Renda Retido na Fonte por Trabalhador', '2014-01-01', NULL),
(43, 'S-5003', 'Informações do FGTS por Trabalhador', '2018-05-01', NULL),
(44, 'S-5011', 'Informações das Contribuições Sociais Consolidadas por Contribuinte', '2014-01-01', NULL),
(45, 'S-5012', 'Imposto de Renda Retido na Fonte Consolidado por Contribuinte', '2023-01-16', NULL),
(46, 'S-5013', 'Informações do FGTS Consolidadas por Contribuinte', '2018-05-01', NULL),
(47, 'S-5501', 'Informações Consolidadas de Tributos Decorrentes de Processo Trabalhista', '2023-10-01', NULL),
(48, 'S-5503', 'Informações do FGTS por Trabalhador em Processo Trabalhista', '2023-11-20', NULL),
(49, 'S-8200', 'Anotação Judicial do Vínculo', '2014-01-01', NULL),
(50, 'S-8299', 'Baixa Judicial do Vínculo', '2019-09-24', NULL);
SELECT setval(pg_get_serial_sequence('esocial.tab_09','id'), (SELECT MAX(id) FROM esocial.tab_09));
-- ===============================================================================================================
-- Tabela 20 - Tipos de Logradouros
-- ===============================================================================================================
CREATE TABLE IF NOT EXISTS esocial.tab_20 (
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
codigo_xml VARCHAR(50) NOT NULL,
descricao VARCHAR(255) NOT NULL
);
INSERT INTO esocial.tab_20 (id, codigo_xml, descricao) VALUES
(1, 'A', 'Área'),
(2, 'AC', 'Acesso'),
(3, 'ACA', 'Acampamento'),
(4, 'ACL', 'Acesso Local'),
(5, 'AD', 'Adro'),
(6, 'AE', 'Área Especial'),
(7, 'AER', 'Aeroporto'),
(8, 'AL', 'Alameda'),
(9, 'ALD', 'Aldeia'),
(10, 'AMD', 'Avenida Marginal Direita'),
(11, 'AME', 'Avenida Marginal Esquerda'),
(12, 'AN', 'Anel Viário'),
(13, 'ANT', 'Antiga Estrada'),
(14, 'ART', 'Artéria'),
(15, 'AT', 'Alto'),
(16, 'ATL', 'Atalho'),
(17, 'A V', 'Área Verde'),
(18, 'AV', 'Avenida'),
(19, 'AVC', 'Avenida Contorno'),
(20, 'AVM', 'Avenida Marginal'),
(21, 'AVV', 'Avenida Velha'),
(22, 'BAL', 'Balneário'),
(23, 'BC', 'Beco'),
(24, 'BCO', 'Buraco'),
(25, 'BEL', 'Belvedere'),
(26, 'BL', 'Bloco'),
(27, 'BLO', 'Balão'),
(28, 'BLS', 'Blocos'),
(29, 'BLV', 'Bulevar'),
(30, 'BSQ', 'Bosque'),
(31, 'BVD', 'Boulevard'),
(32, 'BX', 'Baixa'),
(33, 'C', 'Cais'),
(34, 'CAL', 'Calçada'),
(35, 'CAM', 'Caminho'),
(36, 'CAN', 'Canal'),
(37, 'CH', 'Chácara'),
(38, 'CHA', 'Chapadão'),
(39, 'CIC', 'Ciclovia'),
(40, 'CIR', 'Circular'),
(41, 'CJ', 'Conjunto'),
(42, 'CJM', 'Conjunto Mutirão'),
(43, 'CMP', 'Complexo Viário'),
(44, 'COL', 'Colônia'),
(45, 'COM', 'Comunidade'),
(46, 'CON', 'Condomínio'),
(47, 'COND', 'Condomínio'),
(48, 'COR', 'Corredor'),
(49, 'CPO', 'Campo'),
(50, 'CRG', 'Córrego'),
(51, 'CTN', 'Contorno'),
(52, 'DSC', 'Descida'),
(53, 'DSV', 'Desvio'),
(54, 'DT', 'Distrito'),
(55, 'EB', 'Entre Bloco'),
(56, 'EIM', 'Estrada Intermunicipal'),
(57, 'ENS', 'Enseada'),
(58, 'ENT', 'Entrada Particular'),
(59, 'EQ', 'Entre Quadra'),
(60, 'ESC', 'Escada'),
(61, 'ESD', 'Escadaria'),
(62, 'ESE', 'Estrada Estadual'),
(63, 'ESI', 'Estrada Vicinal'),
(64, 'ESL', 'Estrada de Ligação'),
(65, 'ESM', 'Estrada Municipal'),
(66, 'ESP', 'Esplanada'),
(67, 'ESS', 'Estrada de Servidão'),
(68, 'EST', 'Estrada'),
(69, 'ESV', 'Estrada Velha'),
(70, 'ETA', 'Estrada Antiga'),
(71, 'ETC', 'Estação'),
(72, 'ETD', 'Estádio'),
(73, 'ETN', 'Estância'),
(74, 'ETP', 'Estrada Particular'),
(75, 'ETT', 'Estacionamento'),
(76, 'EVA', 'Evangélica'),
(77, 'EVD', 'Elevada'),
(78, 'EX', 'Eixo Industrial'),
(79, 'FAV', 'Favela'),
(80, 'FAZ', 'Fazenda'),
(81, 'FER', 'Ferrovia'),
(82, 'FNT', 'Fonte'),
(83, 'FRA', 'Feira'),
(84, 'FTE', 'Forte'),
(85, 'GAL', 'Galeria'),
(86, 'GJA', 'Granja'),
(87, 'HAB', 'Núcleo Habitacional'),
(88, 'IA', 'Ilha'),
(89, 'IGP', 'Igarapé'),
(90, 'IND', 'Indeterminado'),
(91, 'IOA', 'Ilhota'),
(92, 'JD', 'Jardim'),
(93, 'JDE', 'Jardinete'),
(94, 'LD', 'Ladeira'),
(95, 'LGA', 'Lagoa'),
(96, 'LGO', 'Lago'),
(97, 'LOT', 'Loteamento'),
(98, 'LRG', 'Largo'),
(99, 'LT', 'Lote'),
(100, 'MER', 'Mercado'),
(101, 'MNA', 'Marina'),
(102, 'MOD', 'Modulo'),
(103, 'MRG', 'Projeção'),
(104, 'MRO', 'Morro'),
(105, 'MTE', 'Monte'),
(106, 'NUC', 'Núcleo'),
(107, 'NUR', 'Núcleo Rural'),
(108, 'O', 'Outros'),
(109, 'OUT', 'Outeiro'),
(110, 'PAR', 'Paralela'),
(111, 'PAS', 'Passeio'),
(112, 'PAT', 'Pátio'),
(113, 'PC', 'Praça'),
(114, 'PCE', 'Praça de Esportes'),
(115, 'PDA', 'Parada'),
(116, 'PDO', 'Paradouro'),
(117, 'PNT', 'Ponta'),
(118, 'PR', 'Praia'),
(119, 'PRL', 'Prolongamento'),
(120, 'PRM', 'Parque Municipal'),
(121, 'PRQ', 'Parque'),
(122, 'PRR', 'Parque Residencial'),
(123, 'PSA', 'Passarela'),
(124, 'PSG', 'Passagem'),
(125, 'PSP', 'Passagem de Pedestre'),
(126, 'PSS', 'Passagem Subterrânea'),
(127, 'PTE', 'Ponte'),
(128, 'PTO', 'Porto'),
(129, 'Q', 'Quadra'),
(130, 'QTA', 'Quinta'),
(131, 'QTS', 'Quintas'),
(132, 'R', 'Rua'),
(133, 'R I', 'Rua Integração'),
(134, 'R L', 'Rua de Ligação'),
(135, 'R P', 'Rua Particular'),
(136, 'R V', 'Rua Velha'),
(137, 'RAM', 'Ramal'),
(138, 'RCR', 'Recreio'),
(139, 'REC', 'Recanto'),
(140, 'RER', 'Retiro'),
(141, 'RES', 'Residencial'),
(142, 'RET', 'Reta'),
(143, 'RLA', 'Ruela'),
(144, 'RMP', 'Rampa'),
(145, 'ROA', 'Rodo Anel'),
(146, 'ROD', 'Rodovia'),
(147, 'ROT', 'Rotula'),
(148, 'RPE', 'Rua de Pedestre'),
(149, 'RPR', 'Margem'),
(150, 'RTN', 'Retorno'),
(151, 'RTT', 'Rotatória'),
(152, 'SEG', 'Segunda Avenida'),
(153, 'SIT', 'Sitio'),
(154, 'SRV', 'Servidão'),
(155, 'ST', 'Setor'),
(156, 'SUB', 'Subida'),
(157, 'TCH', 'Trincheira'),
(158, 'TER', 'Terminal'),
(159, 'TR', 'Trecho'),
(160, 'TRV', 'Trevo'),
(161, 'TUN', 'Túnel'),
(162, 'TV', 'Travessa'),
(163, 'TVP', 'Travessa Particular'),
(164, 'TVV', 'Travessa Velha'),
(165, 'UNI', 'Unidade'),
(166, 'V', 'Via'),
(167, 'V C', 'Via Coletora'),
(168, 'V L', 'Via Local'),
(169, 'VAC', 'Via de Acesso'),
(170, 'VAL', 'Vala'),
(171, 'VCO', 'Via Costeira'),
(172, 'VD', 'Viaduto'),
(173, 'V-E', 'Via Expressa'),
(174, 'VER', 'Vereda'),
(175, 'VEV', 'Via Elevado'),
(176, 'VL', 'Vila'),
(177, 'VLA', 'Viela'),
(178, 'VLE', 'Vale'),
(179, 'VLT', 'Via Litorânea'),
(180, 'VPE', 'Via de Pedestre'),
(181, 'VRT', 'Variante'),
(182, 'ZIG', 'Zigue-Zague');
SELECT setval(pg_get_serial_sequence('esocial.tab_20','id'), (SELECT MAX(id) FROM esocial.tab_20));

View File

@@ -2,27 +2,19 @@
namespace AxiumPHP\Core; namespace AxiumPHP\Core;
use Exception; use Exception;
use AxiumPHP\Helpers\RequestHelper;
class Router { class Router {
private static $routes = []; private static $routes = [];
private static $params = []; private static $params = [];
private static $ROUTER_MODE = null; private static $ROUTER_MODE = null;
private static $APP_SYS_MODE = null; private static $APP_SYS_MODE = null;
private static $ROUTER_ALLOWED_ORIGINS = ['*']; private static string $basePath = '';
private static $currentGroupPrefix = ''; private static $currentGroupPrefix = '';
private static $currentGroupMiddlewares = []; private static $currentGroupMiddlewares = [];
private static array $requiredConstants = [ private static $ROUTER_ALLOWED_ORIGINS = ['*'];
'ROUTER_MODE', private static array $requiredConstants = ['ROUTER_MODE', 'APP_SYS_MODE'];
'APP_SYS_MODE' private static array $allowedHttpRequests = ['GET','POST','PUT','PATCH','DELETE','OPTIONS'];
];
private static array $allowedHttpRequests = [
'GET',
'POST',
'PUT',
'PATCH',
'DELETE',
'OPTIONS'
];
/** /**
* Construtor que vai garantir que as constantes necessárias estejam definidas antes de * Construtor que vai garantir que as constantes necessárias estejam definidas antes de
@@ -32,6 +24,11 @@
// Verificar as constantes no momento da criação da instância // Verificar as constantes no momento da criação da instância
self::checkRequiredConstant(); self::checkRequiredConstant();
// Verifica se tem diretório base
if(defined(constant_name: 'ROUTER_BASE_PATH')) {
self::$basePath = ROUTER_BASE_PATH;
}
// Define constante // Define constante
self::$ROUTER_MODE = strtoupper(string: ROUTER_MODE); self::$ROUTER_MODE = strtoupper(string: ROUTER_MODE);
self::$APP_SYS_MODE = strtoupper(string: APP_SYS_MODE); self::$APP_SYS_MODE = strtoupper(string: APP_SYS_MODE);
@@ -74,99 +71,26 @@
} }
} }
/**
* Adiciona uma rota com método GET à lista de rotas da aplicação. // =======================
* // Métodos HTTP
* Este método é um atalho para adicionar rotas com o método HTTP GET. Ele // =======================
* chama o método `addRoute` internamente, passando os parâmetros
* fornecidos e o método 'GET'.
*
* @param string $uri O caminho da rota (ex: '/usuarios', '/produtos').
* @param array $handler Um array contendo o nome do controlador e o nome da ação
* que devem ser executados quando a rota for
* corresponder (ex: ['UsuarioController', 'index']).
* @param array $middlewares Um array opcional contendo os nomes dos middlewares que
* devem ser executados antes do handler da rota.
*
* @return void
*/
public static function GET(string $uri, array $handler, array $middlewares = []): void { public static function GET(string $uri, array $handler, array $middlewares = []): void {
self::addRoute(method: "GET", uri: $uri, handler: $handler, middlewares: $middlewares); self::addRoute(method: "GET", uri: $uri, handler: $handler, middlewares: $middlewares);
} }
/**
* Adiciona uma rota com método POST à lista de rotas da aplicação.
*
* Este método é um atalho para adicionar rotas com o método HTTP POST. Ele
* chama o método `addRoute` internamente, passando os parâmetros
* fornecidos e o método 'POST'.
*
* @param string $uri O caminho da rota (ex: '/usuarios', '/produtos').
* @param array $handler Um array contendo o nome do controlador e o nome da ação
* que devem ser executados quando a rota for
* corresponder (ex: ['UsuarioController', 'salvar']).
* @param array $middlewares Um array opcional contendo os nomes dos middlewares que
* devem ser executados antes do handler da rota.
*
* @return void
*/
public static function POST(string $uri, array $handler, array $middlewares = []): void { public static function POST(string $uri, array $handler, array $middlewares = []): void {
self::addRoute(method: "POST", uri: $uri, handler: $handler, middlewares: $middlewares); self::addRoute(method: "POST", uri: $uri, handler: $handler, middlewares: $middlewares);
} }
/**
* Adiciona uma rota com método PUT à lista de rotas da aplicação.
*
* Este método é um atalho para adicionar rotas com o método HTTP PUT. Ele
* chama o método `addRoute` internamente, passando os parâmetros
* fornecidos e o método 'PUT'.
*
* @param string $uri O caminho da rota (ex: '/usuarios', '/produtos').
* @param array $handler Um array contendo o nome do controlador e o nome da ação
* que devem ser executados quando a rota for
* corresponder (ex: ['UsuarioController', 'salvar']).
* @param array $middlewares Um array opcional contendo os nomes dos middlewares que
* devem ser executados antes do handler da rota.
*
* @return void
*/
public static function PUT(string $uri, array $handler, array $middlewares = []): void { public static function PUT(string $uri, array $handler, array $middlewares = []): void {
self::addRoute(method: "PUT", uri: $uri, handler: $handler, middlewares: $middlewares); self::addRoute(method: "PUT", uri: $uri, handler: $handler, middlewares: $middlewares);
} }
/**
* Adiciona uma nova rota que responde a requisições PATCH.
*
* Este é um método estático de conveniência que simplifica o registro de rotas
* para o método HTTP PATCH. Ele delega a tarefa principal para o método
* privado `addRoute`, passando o método HTTP, a URI, a função de manipulação
* (`handler`) e quaisquer middlewares associados.
*
* @param string $uri A URI da rota (ex: '/api/resource/{id}').
* @param array $handler Um array de dois elementos que define o manipulador da rota: o nome da classe do controlador e o nome do método a ser executado.
* @param array $middlewares Um array opcional de middlewares a serem executados antes do manipulador da rota.
* @return void
*/
public static function PATCH(string $uri, array $handler, array $middlewares = []): void { public static function PATCH(string $uri, array $handler, array $middlewares = []): void {
self::addRoute(method: "PATCH", uri: $uri, handler: $handler, middlewares: $middlewares); self::addRoute(method: "PATCH", uri: $uri, handler: $handler, middlewares: $middlewares);
} }
/**
* Adiciona uma rota com método DELETE à lista de rotas da aplicação.
*
* Este método é um atalho para adicionar rotas com o método HTTP DELETE. Ele
* chama o método `addRoute` internamente, passando os parâmetros
* fornecidos e o método 'DELETE'.
*
* @param string $uri O caminho da rota (ex: '/usuarios', '/produtos').
* @param array $handler Um array contendo o nome do controlador e o nome da ação
* que devem ser executados quando a rota for
* corresponder (ex: ['UsuarioController', 'salvar']).
* @param array $middlewares Um array opcional contendo os nomes dos middlewares que
* devem ser executados antes do handler da rota.
*
* @return void
*/
public static function DELETE(string $uri, array $handler, array $middlewares = []): void { public static function DELETE(string $uri, array $handler, array $middlewares = []): void {
self::addRoute(method: "DELETE", uri: $uri, handler: $handler, middlewares: $middlewares); self::addRoute(method: "DELETE", uri: $uri, handler: $handler, middlewares: $middlewares);
} }
@@ -189,7 +113,7 @@
* @return void * @return void
*/ */
private static function addRoute(string $method, string $uri, array $handler, array $middlewares = []): void { private static function addRoute(string $method, string $uri, array $handler, array $middlewares = []): void {
self::$routes[] = [ self::$routes[$method][] = [
'method' => strtoupper(string: $method), 'method' => strtoupper(string: $method),
'path' => '/' . trim(string: self::$currentGroupPrefix . '/' . trim(string: $uri, characters: '/'), characters: '/'), 'path' => '/' . trim(string: self::$currentGroupPrefix . '/' . trim(string: $uri, characters: '/'), characters: '/'),
'controller' => $handler[0], 'controller' => $handler[0],
@@ -198,6 +122,46 @@
]; ];
} }
/**
* Redireciona para um caminho específico.
*
* Este método estático constrói uma URL de redirecionamento com base no
* caminho fornecido e no `basePath` configurado. Ele garante que o
* `basePath` e o `path` comecem com uma barra (`/`), monta a URL
* completa, limpa quaisquer duplicações de barras e executa o
* redirecionamento HTTP.
*
* @param string|null $path O caminho para o qual redirecionar. Se nulo ou vazio,
* redireciona para o `basePath`.
*
* @return void
*/
public static function redirect(?string $path): void {
// Garante que o basePath começa com "/"
$basePath = self::$basePath ? '/' . trim(string: self::$basePath, characters: '/') : '/';
// Se não tiver caminho, redireciona pro basePath direto
if (empty($path)) {
header(header: "Location: {$basePath}/");
exit;
}
// Garante que o path começa com "/"
if (!str_starts_with(haystack: $path, needle: '/')) {
$path = "/{$path}";
}
// Monta o destino completo
$redirectPath = "{$basePath}{$path}";
// Limpa duplicações tipo "//"
$redirectPath = preg_replace(pattern: '#/+#', replacement: '/', subject: $redirectPath);
// Executa o redirecionamento
header(header: "Location: {$redirectPath}");
exit;
}
/** /**
* Verifica se um caminho de rota corresponde a um caminho de requisição. * Verifica se um caminho de rota corresponde a um caminho de requisição.
* *
@@ -497,6 +461,50 @@
return $preparedParams; return $preparedParams;
} }
/**
* Exibe a página de erro 404 (Página não encontrada).
*
* Este método estático define o código de resposta HTTP como 404 e renderiza
* a view "/Errors/404" para exibir a página de erro. Após a renderização,
* o script é encerrado.
*
* @return void
*/
private static function pageNotFound(): void {
switch (self::$ROUTER_MODE) {
case 'VIEW':
// Notifica erro em caso constante não definida
if(!defined(constant_name: 'ERROR_404_VIEW_PATH')) {
RequestHelper::sendJsonResponse(
response_code: 500,
status: 'error',
message: "Constante 'ERROR_404_VIEW_PATH' não foi definida."
);
}
// Caso o arquivo da constante não exista, notifica erro
if(!file_exists(filename: ERROR_404_VIEW_PATH)) {
RequestHelper::sendJsonResponse(
response_code: 500,
status: 'error',
message: "Arquivo da constante 'ERROR_404_VIEW_PATH' não foi encontrado."
);
}
http_response_code(response_code: 404);
require_once ERROR_404_VIEW_PATH;
break;
case 'JSON':
RequestHelper::sendJsonResponse(
response_code: 404,
status: 'error',
message: "Página não encontrada."
);
break;
}
}
/** /**
* Despacha a requisição para o controlador e ação correspondentes. * Despacha a requisição para o controlador e ação correspondentes.
* *
@@ -513,10 +521,21 @@
// Verificar as constantes necessárias antes de processar a requisição // Verificar as constantes necessárias antes de processar a requisição
self::checkRequiredConstant(); self::checkRequiredConstant();
// Inicializa dados da requisição
$requestData = null;
$method = $_SERVER['REQUEST_METHOD']; $method = $_SERVER['REQUEST_METHOD'];
$uri = parse_url(url: $_SERVER['REQUEST_URI'], component: PHP_URL_PATH); $uri = parse_url(url: $_SERVER['REQUEST_URI'], component: PHP_URL_PATH);
$uri = trim(string: rtrim(string: $uri, characters: '/'), characters: '/'); $uri = trim(string: rtrim(string: $uri, characters: '/'), characters: '/');
// Remove o basePath do início da URI (se tiver)
$basePath = rtrim(string: self::$basePath ?? '', characters: '/');
if (!empty($basePath) && str_starts_with(haystack: $uri, needle: $basePath)) {
$uri = substr(string: $uri, offset: strlen(string: $basePath));
}
// Limpa possíveis barras extras
$uri = trim(string: $uri, characters: '/');
// Suporte ao _method em POST para PUT/DELETE/PATCH // Suporte ao _method em POST para PUT/DELETE/PATCH
if ($method === 'POST' && isset($_POST['_method'])) { if ($method === 'POST' && isset($_POST['_method'])) {
$method = strtoupper(string: $_POST['_method']); $method = strtoupper(string: $_POST['_method']);
@@ -524,13 +543,11 @@
// Verifica se o método HTTP é permitido // Verifica se o método HTTP é permitido
if(!in_array(needle: $method, haystack: self::$allowedHttpRequests)) { if(!in_array(needle: $method, haystack: self::$allowedHttpRequests)) {
http_response_code(response_code: 405); RequestHelper::sendJsonResponse(
header(header: 'Content-Type: application/json; charset=utf-8'); response_code: 405,
echo json_encode(value: [ status: 'error',
"status" => 'error', message: "Método HTTP '{$method}' não permitido."
"message" => "Método HTTP '{$method}' não permitido." );
]);
exit;
} }
// ============================= // =============================
@@ -572,43 +589,54 @@
// ============================= // =============================
// EXTRAI DADOS DE PUT, DELETE, PATCH // EXTRAI DADOS DE PUT, DELETE, PATCH
// ============================= // =============================
$requestData = match($method) { if(in_array(needle: $method, haystack: ['PUT', 'DELETE', 'PATCH'])) {
'GET' => null, $requestData = self::extractRequestData(method: $method);
'POST' => null, }
default => self::extractRequestData(method: $method)
}; // Seleciona apenas as rotas do método atual
$routes = self::$routes[$method] ?? [];
// ============================= // =============================
// LOOP PARA PROCESSAR ROTAS // LOOP PARA PROCESSAR ROTAS
// ============================= // =============================
foreach (self::$routes as $route) { if(!empty($routes)) {
if (self::matchRoute(method: $method, uri: $uri, route: $route)) { foreach ($routes as $route) {
// Executa middlewares if (self::matchRoute(method: $method, uri: $uri, route: $route)) {
if (!empty($route['middlewares']) && !self::runMiddlewares(middlewares: $route['middlewares'])) { // Executa middlewares
return; // Middleware bloqueou if (!empty($route['middlewares']) && !self::runMiddlewares(middlewares: $route['middlewares'])) {
} return; // Middleware bloqueou
}
$controller = new $route['controller'](); $controller = new $route['controller']();
$action = $route['action']; $action = $route['action'];
$params = self::prepareMethodParameters(method: $method, params: [$requestData]); $params = self::prepareMethodParameters(method: $method, params: [$requestData]);
switch (self::$ROUTER_MODE) { switch (self::$ROUTER_MODE) {
case 'VIEW': case 'VIEW':
if (method_exists(object_or_class: $controller, method: $action)) { if (method_exists(object_or_class: $controller, method: $action)) {
http_response_code(response_code: 200); http_response_code(response_code: 200);
call_user_func_array(callback: [$controller, $action], args: $params); call_user_func_array(callback: [$controller, $action], args: $params);
exit; exit;
} }
break; break;
case 'JSON': case 'JSON':
if (method_exists(object_or_class: $controller, method: $action)) { if (method_exists(object_or_class: $controller, method: $action)) {
http_response_code(response_code: 200); http_response_code(response_code: 200);
header(header: 'Content-Type: application/json; charset=utf-8'); header(header: 'Content-Type: application/json; charset=utf-8');
call_user_func_array(callback: [$controller, $action], args: $params); call_user_func_array(callback: [$controller, $action], args: $params);
exit; exit;
} }
break; break;
default:
RequestHelper::sendJsonResponse(
response_code: 500,
status: 'error',
message: "Modo de roteamento inválido."
);
break;
}
} }
} }
} }
@@ -619,54 +647,4 @@
self::pageNotFound(); self::pageNotFound();
exit; exit;
} }
/**
* Exibe a página de erro 404 (Página não encontrada).
*
* Este método estático define o código de resposta HTTP como 404 e renderiza
* a view "/Errors/404" para exibir a página de erro. Após a renderização,
* o script é encerrado.
*
* @return void
*/
private static function pageNotFound(): void {
switch (self::$ROUTER_MODE) {
case 'VIEW':
// Notifica erro em caso constante não definida
if(!defined(constant_name: 'ERROR_404_VIEW_PATH')) {
http_response_code(response_code: 500);
header(header: 'Content-Type: application/json; charset=utf-8');
echo json_encode( value: [
"status" => 'error',
"message" => "Constante 'ERROR_404_VIEW_PATH' não foi definida.",
]);
exit;
}
// Caso o arquivo da constante não exista, notifica erro
if(!file_exists(filename: ERROR_404_VIEW_PATH)) {
http_response_code(response_code: 500);
header(header: 'Content-Type: application/json; charset=utf-8');
echo json_encode( value: [
"status" => 'error',
"message" => "Arquivo da constante 'ERROR_404_VIEW_PATH' não foi encontrado.",
]);
exit;
}
http_response_code(response_code: 404);
require_once ERROR_404_VIEW_PATH;
break;
case 'JSON':
http_response_code(response_code: 404);
header(header: 'Content-Type: application/json; charset=utf-8');
echo json_encode( value: [
"status" => 'error',
"message" => "Página não encontrada.",
]);
break;
}
}
} }

View File

@@ -2,24 +2,24 @@
"packages": [ "packages": [
{ {
"name": "claudecio/axiumphp", "name": "claudecio/axiumphp",
"version": "dev-dev-update-initializing", "version": "dev-feature-updated-router",
"version_normalized": "dev-dev-update-initializing", "version_normalized": "dev-feature-updated-router",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/claudecio/AxiumPHP.git", "url": "https://github.com/claudecio/AxiumPHP.git",
"reference": "ccc3c7de5462371150ea8d82549701519503f9f7" "reference": "c7353947a667ea857b461f2b6251441784a4b8ef"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/claudecio/AxiumPHP/zipball/ccc3c7de5462371150ea8d82549701519503f9f7", "url": "https://api.github.com/repos/claudecio/AxiumPHP/zipball/c7353947a667ea857b461f2b6251441784a4b8ef",
"reference": "ccc3c7de5462371150ea8d82549701519503f9f7", "reference": "c7353947a667ea857b461f2b6251441784a4b8ef",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.1", "php": ">=8.1",
"vlucas/phpdotenv": "v5.6.2" "vlucas/phpdotenv": "v5.6.2"
}, },
"time": "2025-10-18T18:31:17+00:00", "time": "2025-10-26T20:05:19+00:00",
"type": "library", "type": "library",
"installation-source": "dist", "installation-source": "dist",
"autoload": { "autoload": {
@@ -32,7 +32,7 @@
], ],
"description": "Meu framework PHP para sistemas MVC modulares.", "description": "Meu framework PHP para sistemas MVC modulares.",
"support": { "support": {
"source": "https://github.com/claudecio/AxiumPHP/tree/dev-update-initializing", "source": "https://github.com/claudecio/AxiumPHP/tree/feature-updated-router",
"issues": "https://github.com/claudecio/AxiumPHP/issues" "issues": "https://github.com/claudecio/AxiumPHP/issues"
}, },
"install-path": "../claudecio/axiumphp" "install-path": "../claudecio/axiumphp"

View File

@@ -3,7 +3,7 @@
'name' => 'cybercore/workbloom', 'name' => 'cybercore/workbloom',
'pretty_version' => 'dev-main', 'pretty_version' => 'dev-main',
'version' => 'dev-main', 'version' => 'dev-main',
'reference' => '311cadc1d12a6f269a473c6861dfc268a201ef6f', 'reference' => '9cfa79db4b2f3aca5feab04bb1212cf87d9a8565',
'type' => 'project', 'type' => 'project',
'install_path' => __DIR__ . '/../../', 'install_path' => __DIR__ . '/../../',
'aliases' => array(), 'aliases' => array(),
@@ -11,9 +11,9 @@
), ),
'versions' => array( 'versions' => array(
'claudecio/axiumphp' => array( 'claudecio/axiumphp' => array(
'pretty_version' => 'dev-dev-update-initializing', 'pretty_version' => 'dev-feature-updated-router',
'version' => 'dev-dev-update-initializing', 'version' => 'dev-feature-updated-router',
'reference' => 'ccc3c7de5462371150ea8d82549701519503f9f7', 'reference' => 'c7353947a667ea857b461f2b6251441784a4b8ef',
'type' => 'library', 'type' => 'library',
'install_path' => __DIR__ . '/../claudecio/axiumphp', 'install_path' => __DIR__ . '/../claudecio/axiumphp',
'aliases' => array(), 'aliases' => array(),
@@ -22,7 +22,7 @@
'cybercore/workbloom' => array( 'cybercore/workbloom' => array(
'pretty_version' => 'dev-main', 'pretty_version' => 'dev-main',
'version' => 'dev-main', 'version' => 'dev-main',
'reference' => '311cadc1d12a6f269a473c6861dfc268a201ef6f', 'reference' => '9cfa79db4b2f3aca5feab04bb1212cf87d9a8565',
'type' => 'project', 'type' => 'project',
'install_path' => __DIR__ . '/../../', 'install_path' => __DIR__ . '/../../',
'aliases' => array(), 'aliases' => array(),