Files
sigrhapf/Documents/sigfip/sigefp/sigefp-database/insert_test_data.sql
T

221 lines
12 KiB
SQL
Raw Normal View History

-- Script Complementar de Dados de Teste
-- Usa o ministerio existente e adiciona dados adicionais
DO $$
DECLARE
v_min_financas UUID;
v_min_saude UUID;
v_min_educacao UUID;
v_cat_ts UUID;
v_grade_a UUID;
v_step_1 UUID;
v_fy_2025 UUID;
BEGIN
-- Obter ministerio existente
SELECT id INTO v_min_financas FROM ministry WHERE code = 'MIN-001';
-- Inserir ministerios adicionais (se nao existirem)
INSERT INTO ministry (id, code, name, created_at, updated_at)
VALUES ('22222222-2222-2222-2222-222222222222', 'MINSAUDE', 'Ministerio da Saude Publica', now(), now())
ON CONFLICT (code) DO NOTHING
RETURNING id INTO v_min_saude;
IF v_min_saude IS NULL THEN
SELECT id INTO v_min_saude FROM ministry WHERE code = 'MINSAUDE';
END IF;
INSERT INTO ministry (id, code, name, created_at, updated_at)
VALUES ('33333333-3333-3333-3333-333333333333', 'MINEDU', 'Ministerio da Educacao Nacional', now(), now())
ON CONFLICT (code) DO NOTHING
RETURNING id INTO v_min_educacao;
IF v_min_educacao IS NULL THEN
SELECT id INTO v_min_educacao FROM ministry WHERE code = 'MINEDU';
END IF;
-- Inserir Unidades Organicas
INSERT INTO org_unit (id, code, name, ministry_id, parent_id, created_at, updated_at)
VALUES ('44444444-4444-4444-4444-444444444444', 'DGT', 'Direcao-Geral do Tesouro', v_min_financas, NULL, now(), now())
ON CONFLICT (code) DO NOTHING;
INSERT INTO org_unit (id, code, name, ministry_id, parent_id, created_at, updated_at)
VALUES ('55555555-5555-5555-5555-555555555555', 'DGO', 'Direcao-Geral do Orcamento', v_min_financas, NULL, now(), now())
ON CONFLICT (code) DO NOTHING;
INSERT INTO org_unit (id, code, name, ministry_id, parent_id, created_at, updated_at)
VALUES ('66666666-6666-6666-6666-666666666666', 'HOSP-CENTRAL', 'Hospital Nacional Simao Mendes', v_min_saude, NULL, now(), now())
ON CONFLICT (code) DO NOTHING;
INSERT INTO org_unit (id, code, name, ministry_id, parent_id, created_at, updated_at)
VALUES ('77777777-7777-7777-7777-777777777777', 'ESC-SEC-BISSAU', 'Escola Secundaria de Bissau', v_min_educacao, NULL, now(), now())
ON CONFLICT (code) DO NOTHING;
-- Inserir Cargos
INSERT INTO position (id, code, title, description, created_at, updated_at)
VALUES ('88888888-8888-8888-8888-888888888888', 'DIR-GERAL', 'Diretor-Geral', 'Cargo de direcao superior', now(), now())
ON CONFLICT (code) DO NOTHING;
INSERT INTO position (id, code, title, description, created_at, updated_at)
VALUES ('99999999-9999-9999-9999-999999999999', 'TEC-SUP', 'Tecnico Superior', 'Tecnico de nivel superior', now(), now())
ON CONFLICT (code) DO NOTHING;
INSERT INTO position (id, code, title, description, created_at, updated_at)
VALUES ('aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', 'MEDICO', 'Medico Especialista', 'Medico com especializacao', now(), now())
ON CONFLICT (code) DO NOTHING;
INSERT INTO position (id, code, title, description, created_at, updated_at)
VALUES ('bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb', 'PROF', 'Professor do Ensino Secundario', 'Professor licenciado', now(), now())
ON CONFLICT (code) DO NOTHING;
-- Inserir Bancos
INSERT INTO bank (id, code, name, swift_code, created_at, updated_at)
VALUES ('cccccccc-cccc-cccc-cccc-cccccccccccc', 'BCEAO', 'Banco Central dos Estados da Africa Ocidental', 'BCAOXXXX', now(), now())
ON CONFLICT (code) DO NOTHING;
INSERT INTO bank (id, code, name, swift_code, created_at, updated_at)
VALUES ('dddddddd-dddd-dddd-dddd-dddddddddddd', 'BRS', 'Banco Regional de Solidariedade', 'BRSXGWGW', now(), now())
ON CONFLICT (code) DO NOTHING;
-- Obter estrutura salarial existente
SELECT id INTO v_cat_ts FROM salary_category WHERE code = 'TS';
SELECT id INTO v_grade_a FROM salary_grade WHERE code = 'A' AND category_id = v_cat_ts;
SELECT id INTO v_step_1 FROM salary_step WHERE grade_id = v_grade_a AND step_number = 1;
SELECT id INTO v_fy_2025 FROM fiscal_year WHERE year = 2025;
-- Adicionar escaloes (se nao existirem)
INSERT INTO salary_step (id, grade_id, step_number, created_at, updated_at)
VALUES ('eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee', v_grade_a, 2, now(), now())
ON CONFLICT (grade_id, step_number) DO NOTHING;
INSERT INTO salary_step (id, grade_id, step_number, created_at, updated_at)
VALUES ('ffffffff-ffff-ffff-ffff-ffffffffffff', v_grade_a, 3, now(), now())
ON CONFLICT (grade_id, step_number) DO NOTHING;
-- Valores da grelha
INSERT INTO salary_grid (id, step_id, base_amount, valid_from, created_at, updated_at)
SELECT '10101010-1010-1010-1010-101010101010', id, 550000.00, '2024-01-01', now(), now()
FROM salary_step WHERE grade_id = v_grade_a AND step_number = 2
ON CONFLICT DO NOTHING;
INSERT INTO salary_grid (id, step_id, base_amount, valid_from, created_at, updated_at)
SELECT '20202020-2020-2020-2020-202020202020', id, 600000.00, '2024-01-01', now(), now()
FROM salary_step WHERE grade_id = v_grade_a AND step_number = 3
ON CONFLICT DO NOTHING;
-- Inserir Agentes (se nao existirem)
INSERT INTO agents (
id, matricula, nif, full_name, birth_date, nationality, bi_number,
email, phone, address, hire_date, posse_date, appointment_type,
functional_situation, literary_qualification, status,
org_unit_id, position_id, salary_category_id, salary_grade_id, salary_step_id,
eligible_dependents_count, created_at, updated_at
)
SELECT
'a1a1a1a1-a1a1-a1a1-a1a1-a1a1a1a1a1a1', '2020/001', '100123456', 'Amilcar Cabral Silva', '1975-03-15', 'Guineense', 'BI123456',
'amilcar.silva@minfin.gov.gw', '+245 955 123 456', 'Bairro de Penha, Bissau',
'2020-01-15', '2020-02-01', 'NOMEACAO_DEFINITIVA', 'ACTIVE', 'LICENCIATURA', 'ACTIVE',
ou.id, p.id, v_cat_ts, v_grade_a, ss.id, 2, now(), now()
FROM org_unit ou, position p, salary_step ss
WHERE ou.code = 'DGT' AND p.code = 'DIR-GERAL' AND ss.grade_id = v_grade_a AND ss.step_number = 3
ON CONFLICT (matricula) DO NOTHING;
INSERT INTO agents (
id, matricula, nif, full_name, birth_date, nationality, bi_number,
email, phone, address, hire_date, posse_date, appointment_type,
functional_situation, literary_qualification, status,
org_unit_id, position_id, salary_category_id, salary_grade_id, salary_step_id,
eligible_dependents_count, created_at, updated_at
)
SELECT
'b2b2b2b2-b2b2-b2b2-b2b2-b2b2b2b2b2b2', '2021/045', '100234567', 'Francisca Pereira Gomes', '1988-07-22', 'Guineense', 'BI234567',
'francisca.gomes@minfin.gov.gw', '+245 955 234 567', 'Bairro Militar, Bissau',
'2021-03-10', '2021-04-01', 'NOMEACAO_DEFINITIVA', 'ACTIVE', 'MESTRADO', 'ACTIVE',
ou.id, p.id, v_cat_ts, v_grade_a, ss.id, 1, now(), now()
FROM org_unit ou, position p, salary_step ss
WHERE ou.code = 'DGO' AND p.code = 'TEC-SUP' AND ss.grade_id = v_grade_a AND ss.step_number = 2
ON CONFLICT (matricula) DO NOTHING;
INSERT INTO agents (
id, matricula, nif, full_name, birth_date, nationality, bi_number,
email, phone, address, hire_date, posse_date, appointment_type,
functional_situation, literary_qualification, status,
org_unit_id, position_id, salary_category_id, salary_grade_id, salary_step_id,
eligible_dependents_count, created_at, updated_at
)
SELECT
'c3c3c3c3-c3c3-c3c3-c3c3-c3c3c3c3c3c3', '2019/089', '100345678', 'Dr. Joao Vieira Mendes', '1982-11-30', 'Guineense', 'BI345678',
'joao.mendes@minsaude.gov.gw', '+245 955 345 678', 'Bairro de Antula, Bissau',
'2019-06-01', '2019-07-01', 'NOMEACAO_DEFINITIVA', 'ACTIVE', 'DOUTORAMENTO', 'ACTIVE',
ou.id, p.id, v_cat_ts, v_grade_a, ss.id, 3, now(), now()
FROM org_unit ou, position p, salary_step ss
WHERE ou.code = 'HOSP-CENTRAL' AND p.code = 'MEDICO' AND ss.grade_id = v_grade_a AND ss.step_number = 3
ON CONFLICT (matricula) DO NOTHING;
INSERT INTO agents (
id, matricula, nif, full_name, birth_date, nationality, bi_number,
email, phone, address, hire_date, posse_date, appointment_type,
functional_situation, literary_qualification, status,
org_unit_id, position_id, salary_category_id, salary_grade_id, salary_step_id,
eligible_dependents_count, created_at, updated_at
)
SELECT
'd4d4d4d4-d4d4-d4d4-d4d4-d4d4d4d4d4d4', '2022/112', '100456789', 'Maria da Luz Correia', '1990-05-18', 'Guineense', 'BI456789',
'maria.correia@minedu.gov.gw', '+245 955 456 789', 'Bairro de Quelele, Bissau',
'2022-09-01', '2022-10-01', 'NOMEACAO_PROVISORIA', 'ACTIVE', 'LICENCIATURA', 'ACTIVE',
ou.id, p.id, v_cat_ts, v_grade_a, v_step_1, 0, now(), now()
FROM org_unit ou, position p
WHERE ou.code = 'ESC-SEC-BISSAU' AND p.code = 'PROF'
ON CONFLICT (matricula) DO NOTHING;
INSERT INTO agents (
id, matricula, nif, full_name, birth_date, nationality, bi_number,
email, phone, address, hire_date, posse_date, appointment_type,
functional_situation, literary_qualification, status,
org_unit_id, position_id, salary_category_id, salary_grade_id, salary_step_id,
eligible_dependents_count, created_at, updated_at
)
SELECT
'e5e5e5e5-e5e5-e5e5-e5e5-e5e5e5e5e5e5', '2024/201', '100567890', 'Samba Djalo', '1995-09-12', 'Guineense', 'BI567890',
'samba.djalo@minfin.gov.gw', '+245 955 567 890', 'Bairro de Chao de Papel, Bissau',
'2024-11-01', '2024-12-01', 'NOMEACAO_PROVISORIA', 'ACTIVE', 'LICENCIATURA', 'ACTIVE',
ou.id, p.id, v_cat_ts, v_grade_a, v_step_1, 0, now(), now()
FROM org_unit ou, position p
WHERE ou.code = 'DGT' AND p.code = 'TEC-SUP'
ON CONFLICT (matricula) DO NOTHING;
-- Linhas orcamentais
INSERT INTO budget_line (id, fiscal_year_id, code, description, ministry_id, org_unit_id, economic_class, created_at, updated_at)
SELECT 'f1f1f1f1-f1f1-f1f1-f1f1-f1f1f1f1f1f1', v_fy_2025, '2025-MINFIN-311100', 'Vencimentos Base - Financas',
v_min_financas, ou.id, '311100', now(), now()
FROM org_unit ou WHERE ou.code = 'DGT'
ON CONFLICT (code) DO NOTHING;
INSERT INTO budget_line (id, fiscal_year_id, code, description, ministry_id, org_unit_id, economic_class, created_at, updated_at)
SELECT 'f2f2f2f2-f2f2-f2f2-f2f2-f2f2f2f2f2f2', v_fy_2025, '2025-MINSAUDE-311100', 'Vencimentos Base - Saude',
v_min_saude, ou.id, '311100', now(), now()
FROM org_unit ou WHERE ou.code = 'HOSP-CENTRAL'
ON CONFLICT (code) DO NOTHING;
INSERT INTO budget_line (id, fiscal_year_id, code, description, ministry_id, org_unit_id, economic_class, created_at, updated_at)
SELECT 'f3f3f3f3-f3f3-f3f3-f3f3-f3f3f3f3f3f3', v_fy_2025, '2025-MINEDU-311100', 'Vencimentos Base - Educacao',
v_min_educacao, ou.id, '311100', now(), now()
FROM org_unit ou WHERE ou.code = 'ESC-SEC-BISSAU'
ON CONFLICT (code) DO NOTHING;
RAISE NOTICE '=== DADOS DE TESTE INSERIDOS/ATUALIZADOS COM SUCESSO ===';
RAISE NOTICE 'Script executado usando ministerio existente MIN-001';
END $$;
-- Verificar resultados
SELECT 'MINISTERIOS' as tipo, COUNT(*)::text as total FROM ministry
UNION ALL
SELECT 'UNIDADES ORGANICAS', COUNT(*)::text FROM org_unit
UNION ALL
SELECT 'CARGOS', COUNT(*)::text FROM position
UNION ALL
SELECT 'BANCOS', COUNT(*)::text FROM bank
UNION ALL
SELECT 'AGENTES', COUNT(*)::text FROM agents
UNION ALL
SELECT 'LINHAS ORCAMENTAIS', COUNT(*)::text FROM budget_line;