-- Execute no banco minierp antes de criar os templates de importação RH
-- sqlite3 /var/www/html/madbuilder/testes_fw5/web/mad-framework/app/database/sqlite/minierp.db < 00-criar-tabelas-rh.sql

CREATE TABLE IF NOT EXISTS rh_cargo (
    id          INTEGER PRIMARY KEY AUTOINCREMENT,
    nome        VARCHAR(200) NOT NULL,
    nivel       VARCHAR(20)  NOT NULL CHECK(nivel IN ('JUNIOR','PLENO','SENIOR','ESPECIALISTA','GERENTE')),
    salario_base DECIMAL(10,2) NOT NULL,
    carga_horaria_mensal INTEGER NOT NULL DEFAULT 220,
    ativo       CHAR(1) NOT NULL DEFAULT 'Y' CHECK(ativo IN ('Y','N')),
    created_at  DATETIME DEFAULT (datetime('now'))
);

CREATE TABLE IF NOT EXISTS rh_departamento (
    id              INTEGER PRIMARY KEY AUTOINCREMENT,
    nome            VARCHAR(200) NOT NULL,
    sigla           VARCHAR(10)  NOT NULL UNIQUE,
    centro_custo    VARCHAR(20),
    responsavel_id  INT REFERENCES pessoa(id),
    ativo           CHAR(1) NOT NULL DEFAULT 'Y',
    created_at      DATETIME DEFAULT (datetime('now'))
);

CREATE TABLE IF NOT EXISTS rh_funcionario (
    id              INTEGER PRIMARY KEY AUTOINCREMENT,
    pessoa_id       INT NOT NULL REFERENCES pessoa(id),
    cargo_id        INT NOT NULL REFERENCES rh_cargo(id),
    departamento_id INT NOT NULL REFERENCES rh_departamento(id),
    matricula       VARCHAR(20) NOT NULL UNIQUE,
    data_admissao   DATE NOT NULL,
    salario         DECIMAL(10,2) NOT NULL,
    regime          VARCHAR(10) NOT NULL CHECK(regime IN ('CLT','PJ','ESTAGIO','TEMPORARIO')),
    status          VARCHAR(10) NOT NULL DEFAULT 'ATIVO' CHECK(status IN ('ATIVO','AFASTADO','DEMITIDO')),
    created_at      DATETIME DEFAULT (datetime('now'))
);

CREATE TABLE IF NOT EXISTS rh_folha_lancamento (
    id              INTEGER PRIMARY KEY AUTOINCREMENT,
    funcionario_id  INT NOT NULL REFERENCES rh_funcionario(id),
    competencia     CHAR(7) NOT NULL,   -- formato YYYY-MM
    tipo            VARCHAR(10) NOT NULL CHECK(tipo IN ('PROVENTO','DESCONTO')),
    descricao       VARCHAR(200) NOT NULL,
    valor           DECIMAL(10,2) NOT NULL,
    referencia      VARCHAR(50),        -- horas, percentual ou NULL
    created_at      DATETIME DEFAULT (datetime('now'))
);
