/*
    **********************************************************************************
    *                                                                                *
    * @package URBEM CNM - Soluções em Gestão Pública                                *
    * @copyright (c) 2013 Confederação Nacional de Municípos                         *
    * @author Confederação Nacional de Municípios                                    *
    *                                                                                *
    * O URBEM CNM é um software livre; você pode redistribuí-lo e/ou modificá-lo sob *
    * os  termos  da Licença Pública Geral GNU conforme  publicada  pela Fundação do *
    * Software Livre (FSF - Free Software Foundation); na versão 2 da Licença.       *
    *                                                                                *
    * Este  programa  é  distribuído  na  expectativa  de  que  seja  útil,   porém, *
    * SEM NENHUMA GARANTIA; nem mesmo a garantia implícita  de  COMERCIABILIDADE  OU *
    * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral do GNU *
    * para mais detalhes.                                                            *
    *                                                                                *
    * Você deve ter recebido uma cópia da Licença Pública Geral do GNU "LICENCA.txt" *
    * com  este  programa; se não, escreva para  a  Free  Software Foundation  Inc., *
    * no endereço 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.       *
    *                                                                                *
    **********************************************************************************
*/
/*
* Script de DDL e DML
*
* URBEM Soluções de Gestão Pública Ltda
* www.urbem.cnm.org.br
*
* $Id: GRH_1910.sql 59820 2014-09-12 18:17:20Z luciana $
*
* Versão 008.
*/

----------------
-- Ticket #12932     
----------------
INSERT INTO administracao.funcionalidade
         ( cod_funcionalidade
         , cod_modulo
         , nom_funcionalidade
         , nom_diretorio
         , ordem )
    VALUES ( 414
         , 27
         , 'Bases'
         , 'instancias/bases/'
         , 15
         );
                                
INSERT INTO administracao.acao
          ( cod_acao
          , cod_funcionalidade
          , nom_arquivo
          , parametro
          , ordem
          , complemento_acao
          , nom_acao )
     VALUES ( 2268
          , 414
          , 'FMBaseCalculo.php'
          , 'incluir'
          , 1
          , ''
          , 'Incluir Base'
          );

INSERT INTO administracao.acao
          ( cod_acao
          , cod_funcionalidade
          , nom_arquivo
          , parametro
          , ordem
          , complemento_acao
          , nom_acao )
     VALUES ( 2269
          , 414
          , 'FLBaseCalculo.php'
          , 'alterar'
          , 2
          , ''
          , 'Alterar Base'
          );

INSERT INTO administracao.acao
          ( cod_acao
          , cod_funcionalidade
          , nom_arquivo
          , parametro
          , ordem
          , complemento_acao
          , nom_acao )
     VALUES ( 2270
          , 414
          , 'FLBaseCalculo.php'
          , 'excluir'
          , 3
          , ''
          , 'Excluir Base'
          );


----------------
-- Ticket #12934
----------------

INSERT INTO administracao.modulo
         ( cod_modulo
         , cod_responsavel
         , nom_modulo
         , nom_diretorio
         , ordem
         , cod_gestao
         )
    VALUES ( 50
         , 0
         , 'Diárias'
         , 'diarias/'
         , 50
         , 4
         );

INSERT INTO administracao.funcionalidade
         ( cod_funcionalidade
         , cod_modulo
         , nom_funcionalidade
         , nom_diretorio
         , ordem )
    VALUES ( 415
         , 50
         , 'Configuração'
         , 'instancias/configuracao/'
         , 1
         );

INSERT INTO administracao.acao
          ( cod_acao
          , cod_funcionalidade
          , nom_arquivo
          , parametro
          , ordem
          , complemento_acao
          , nom_acao )
     VALUES ( 2271
          , 415
          , 'FMTipoDiarias.php'
          , 'incluir'
          , 1
          , ''
          , 'Tipos de Diárias'
          );

----------------
-- Ticket #12935
----------------

INSERT INTO administracao.funcionalidade
         ( cod_funcionalidade
         , cod_modulo
         , nom_funcionalidade
         , nom_diretorio
         , ordem )
    VALUES ( 416
         , 50
         , 'Concessão'
         , 'instancias/concessao/'
         , 2
         );

INSERT INTO administracao.acao
          ( cod_acao
          , cod_funcionalidade
          , nom_arquivo
          , parametro
          , ordem
          , complemento_acao
          , nom_acao )
     VALUES ( 2272
          , 416
          , 'FLConcederDiarias.php'
          , 'conceder'
          , 1
          , ''
          , 'Conceder Diárias'
          );

INSERT INTO administracao.acao
          ( cod_acao
          , cod_funcionalidade
          , nom_arquivo
          , parametro
          , ordem
          , complemento_acao
          , nom_acao )
     VALUES ( 2273
          , 416
          , 'FLConcederDiarias.php'
          , 'consultar'
          , 2
          , ''
          , 'Consultar Diárias'
          );


----------------
-- Ticket #12936
----------------

INSERT INTO administracao.funcionalidade
         ( cod_funcionalidade
         , cod_modulo
         , nom_funcionalidade
         , nom_diretorio
         , ordem )
    VALUES ( 417
         , 50
         , 'Relatórios'
         , 'instancias/relatorios/'
         , 50
         );

INSERT INTO administracao.acao
          ( cod_acao
          , cod_funcionalidade
          , nom_arquivo
          , parametro
          , ordem
          , complemento_acao
          , nom_acao )
     VALUES ( 2274
          , 417
          , 'FLRelacaoDiarias.php'
          , 'incluir'
          , 1
          , ''
          , 'Relação de Diárias'
          );


----------------
-- Ticket #12937
----------------

INSERT INTO administracao.relatorio
         ( cod_gestao
         , cod_modulo
         , cod_relatorio
         , nom_relatorio
         , arquivo )
    VALUES ( 4
         , 50
         , 1
         , 'Relação de Diárias'
         , 'relacaoDiarias.rptdesign'
         );


----------------
-- Ticket #12933
----------------

select atualizarBanco('
CREATE TABLE folhapagamento.bases(
    cod_base                INTEGER         NOT NULL,
    nom_base                VARCHAR(30)     NOT NULL,
    tipo_base               CHAR(1)         NOT NULL,
    apresentacao_valor      BOOLEAN         NOT NULL,
    insercao_automatica     BOOLEAN         NOT NULL,
    cod_modulo              INTEGER         NOT NULL,
    cod_biblioteca          INTEGER         NOT NULL,
    cod_funcao              INTEGER         NOT NULL,
    CONSTRAINT pk_bases                     PRIMARY KEY                         (cod_base),
    CONSTRAINT fk_bases_1                   FOREIGN KEY                         (cod_modulo, cod_biblioteca, cod_funcao)
                                            REFERENCES administracao.funcao     (cod_modulo, cod_biblioteca, cod_funcao),
    CONSTRAINT chk_bases                    CHECK                               (tipo_base in (\'V\',\'Q\'))
);
');

select atualizarBanco('
CREATE TABLE folhapagamento.bases_evento(
    cod_base                INTEGER         NOT NULL,
    cod_evento              INTEGER         NOT NULL,
    timestamp               TIMESTAMP       NOT NULL DEFAULT (\'now\'::text)::timestamp(3) with time zone,
    CONSTRAINT pk_bases_evento              PRIMARY KEY                         (cod_base,cod_evento,timestamp),
    CONSTRAINT fk_bases_evento_1            FOREIGN KEY                         (cod_base)
                                            REFERENCES folhapagamento.bases     (cod_base),
    CONSTRAINT fk_bases_evento_2            FOREIGN KEY                         (cod_evento)
                                            REFERENCES folhapagamento.evento    (cod_evento)
);
');

select atualizarBanco('
CREATE TABLE folhapagamento.bases_evento_criado(
    cod_base                INTEGER         NOT NULL,
    cod_evento              INTEGER         NOT NULL,
    CONSTRAINT [REDACTED]      PRIMARY KEY                         (cod_base,cod_evento),
    CONSTRAINT fk_bases_evento_criado_1     FOREIGN KEY                         (cod_base)
                                            REFERENCES folhapagamento.bases     (cod_base),
    CONSTRAINT fk_bases_evento_criado_2     FOREIGN KEY                         (cod_evento)
                                            REFERENCES folhapagamento.evento    (cod_evento)
);
');

select atualizarBanco('
GRANT ALL ON folhapagamento.bases                   TO GROUP urbem;
');

select atualizarBanco('
GRANT ALL ON folhapagamento.bases_evento            TO GROUP urbem;
');

select atualizarBanco('
GRANT ALL ON folhapagamento.bases_evento_criado     TO GROUP urbem;
');


----------------
-- Ticket #12938
----------------
select atualizarBanco('CREATE SCHEMA diarias;');

select atualizarBanco('
CREATE TABLE diarias.tipo_diaria(
    cod_tipo                INTEGER         NOT NULL,
    timestamp               TIMESTAMP       NOT NULL    DEFAULT (\'now\'::text)::timestamp(3) with time zone,
    nom_tipo                VARCHAR(50)     NOT NULL,
    valor                   NUMERIC(14,2)   NOT NULL,
    cod_norma               INTEGER         NOT NULL,
    CONSTRAINT pk_tipo_diaria               PRIMARY KEY                         (cod_tipo, timestamp),
    CONSTRAINT fk_tipo_diaria_1             FOREIGN KEY                         (cod_norma)
                                            REFERENCES normas.norma             (cod_norma)
);
');

select atualizarBanco('
CREATE TABLE diarias.tipo_diaria_despesa(
    cod_tipo                INTEGER         NOT NULL,
    timestamp               TIMESTAMP       NOT NULL,
    cod_conta               INTEGER         NOT NULL,
    exercicio               CHAR(4)         NOT NULL,
    CONSTRAINT [REDACTED]      PRIMARY KEY                         (cod_tipo, timestamp),
    CONSTRAINT fk_tipo_diaria_despesa_1     FOREIGN KEY                         (cod_tipo, timestamp)
                                            REFERENCES diarias.tipo_diaria      (cod_tipo, timestamp),
    CONSTRAINT fk_tipo_diaria_despesa_2     FOREIGN KEY                         (cod_conta, exercicio)
                                            REFERENCES orcamento.conta_despesa  (cod_conta, exercicio)
);
');

select atualizarBanco('
GRANT ALL ON diarias.tipo_diaria            TO GROUP urbem;
');

select atualizarBanco('
GRANT ALL ON diarias.tipo_diaria_despesa    TO GROUP urbem;
');


----------------
-- Ticket #12940
----------------

select atualizarBanco('
CREATE TABLE diarias.diaria(
    cod_diaria              INTEGER         NOT NULL,
    cod_contrato            INTEGER         NOT NULL,
    timestamp               TIMESTAMP       NOT NULL    DEFAULT (\'now\'::text)::timestamp(3) with time zone,
    cod_tipo                INTEGER         NOT NULL,
    timestamp_tipo          TIMESTAMP       NOT NULL,
    cod_municipio           INTEGER         NOT NULL,
    cod_uf                  INTEGER         NOT NULL,
    cod_norma               INTEGER         NOT NULL,
    numcgm                  INTEGER         NOT NULL,
    dt_inicio               DATE            NOT NULL,
    dt_termino              DATE            NOT NULL,
    quantidade              NUMERIC(14,2)   NOT NULL,
    vl_total                NUMERIC(14,2)   NOT NULL,
    motivo                  TEXT            NOT NULL,
    CONSTRAINT pk_diaria                    PRIMARY KEY                         (cod_diaria, cod_contrato, timestamp),
    CONSTRAINT fk_diaria_1                  FOREIGN KEY                         (cod_contrato)
                                            REFERENCES pessoal.contrato         (cod_contrato),
    CONSTRAINT fk_diaria_2                  FOREIGN KEY                         (cod_tipo, timestamp_tipo)
                                            REFERENCES diarias.tipo_diaria      (cod_tipo, timestamp),
    CONSTRAINT fk_diaria_3                  FOREIGN KEY                         (cod_municipio, cod_uf)
                                            REFERENCES sw_municipio             (cod_municipio, cod_uf),
    CONSTRAINT fk_diaria_4                  FOREIGN KEY                         (cod_norma)
                                            REFERENCES normas.norma             (cod_norma),
    CONSTRAINT fk_diaria_5                  FOREIGN KEY                         (numcgm)
                                            REFERENCES administracao.usuario    (numcgm)
);
');

select atualizarBanco('
GRANT ALL ON diarias.diaria                 TO GROUP urbem;
');


----------------
-- Ticket #12951
----------------

select atualizarBanco('
CREATE TABLE estagio.estagiario_vale_refeicao(
    cgm_instituicao_ensino      INTEGER         NOT NULL, 
    cgm_estagiario              INTEGER         NOT NULL,
    cod_curso                   INTEGER         NOT NULL,
    cod_estagio                 INTEGER         NOT NULL,
    timestamp                   TIMESTAMP       NOT NULL,
    quantidade                  INTEGER         NOT NULL,
    vl_vale                     NUMERIC(14,2)   NOT NULL,
    vl_desconto                 NUMERIC(14,2)   NOT NULL,
    CONSTRAINT [REDACTED]     PRIMARY KEY                                     (cgm_instituicao_ensino, cgm_estagiario, cod_curso, cod_estagio, timestamp),
    CONSTRAINT fk_estagiario_vale_refeicao_1    FOREIGN KEY                                     (cgm_instituicao_ensino, cgm_estagiario, cod_curso, cod_estagio, timestamp)
                                                REFERENCES  estagio.estagiario_estagio_bolsa    (cgm_instituicao_ensino, cgm_estagiario, cod_curso, cod_estagio, timestamp)
 );
');

select atualizarBanco('
GRANT ALL ON estagio.estagiario_vale_refeicao   TO GROUP urbem;
');


----------------
-- Ticket #12953
----------------

INSERT INTO administracao.relatorio
         ( cod_gestao
         , cod_modulo
         , cod_relatorio
         , nom_relatorio
         , arquivo )
    VALUES ( 4
         , 39
         , 2
         , 'Pagamento de Estagiários'
         , 'pagamentoEstagiarios.rptdesign'
         );

INSERT INTO administracao.relatorio
         ( cod_gestao
         , cod_modulo
         , cod_relatorio
         , nom_relatorio
         , arquivo )
    VALUES ( 4
         , 39
         , 3
         , 'Cadastro de Estagiários'
         , 'cadastroEstagiarios.rptdesign'
         );

INSERT INTO administracao.relatorio
         ( cod_gestao
         , cod_modulo
         , cod_relatorio
         , nom_relatorio
         , arquivo )
    VALUES ( 4
         , 27
         , 18
         , 'Eventos Por Contrato'
         , 'eventosPorContrato.rptdesign'
         );


----------------
-- Ticket #13048
----------------

select atualizarBanco('
CREATE TABLE pessoal.atributo_cargo_valor(
    cod_modulo          INTEGER             NOT NULL,
    cod_cadastro        INTEGER             NOT NULL,
    cod_atributo        INTEGER             NOT NULL,
    cod_cargo           INTEGER             NOT NULL,
    timestamp           TIMESTAMP           NOT NULL DEFAULT (\'now\'::text)::timestamp(3) with time zone,
    valor               TEXT                NOT NULL,
    CONSTRAINT [REDACTED]     PRIMARY KEY                                 (cod_modulo, cod_cadastro, cod_atributo, cod_cargo, timestamp),
    CONSTRAINT fk_atributo_cargo_valor_1    FOREIGN KEY                                 (cod_modulo, cod_cadastro, cod_atributo)
                                            REFERENCES administracao.atributo_dinamico  (cod_modulo, cod_cadastro, cod_atributo)
);
');

select atualizarBanco('
GRANT ALL ON pessoal.atributo_cargo_valor TO GROUP urbem;
');

UPDATE administracao.cadastro 
   SET mapeamento   = 'TPessoalAtributoCargoValor' 
 WHERE cod_modulo   = 22 
   AND cod_cadastro = 4;


---------------------------------------------------------------
-- INSERCAO DA FUNCAO pegaListaEventoDaBase COMO FUNCAO EXTERNA - 20080820 - Rafael Garbin
---------------------------------------------------------------


   --
   -- Insere a função.
   --
   CREATE OR REPLACE function public.manutencao_funcao( intCodmodulo       INTEGER
                                                      , intCodBiblioteca   INTEGER
                                                      , varNomeFunc        VARCHAR
                                                      , intCodTiporetorno INTEGER)
   RETURNS integer as $$
   DECLARE
      intCodFuncao INTEGER := 0;
      varAux       VARCHAR;
   BEGIN

      SELECT cod_funcao
        INTO intCodFuncao
        FROM administracao.funcao
       WHERE cod_modulo                = intCodmodulo
         AND cod_biblioteca            = intCodBiblioteca
         AND Lower(Btrim(nom_funcao))  = Lower(Btrim(varNomeFunc))
      ;

      IF FOUND THEN
         DELETE FROM administracao.corpo_funcao_externa  WHERE cod_modulo = intCodmodulo AND cod_biblioteca = intCodBiblioteca AND cod_funcao = intCodFuncao;
         DELETE FROM administracao.funcao_externa        WHERE cod_modulo = intCodmodulo AND cod_biblioteca = intCodBiblioteca AND cod_funcao = intCodFuncao;
         DELETE FROM administracao.funcao_referencia     WHERE cod_modulo = intCodmodulo AND cod_biblioteca = intCodBiblioteca AND cod_funcao = intCodFuncao;
         DELETE FROM administracao.parametro             WHERE cod_modulo = intCodmodulo AND cod_biblioteca = intCodBiblioteca AND cod_funcao = intCodFuncao;
         DELETE FROM administracao.variavel              WHERE cod_modulo = intCodmodulo AND cod_biblioteca = intCodBiblioteca AND cod_funcao = intCodFuncao;
         DELETE FROM administracao.funcao                WHERE cod_modulo = intCodmodulo AND cod_biblioteca = intCodBiblioteca AND cod_funcao = intCodFuncao;
      END IF;

     -- Raise Notice ' Entrou 1 ';

     SELECT (max(cod_funcao)+1)
       INTO intCodFuncao
       FROM administracao.funcao
      WHERE cod_modulo       = intCodmodulo
        AND cod_biblioteca   = intCodBiblioteca
     ;

     --varAux := varNomeFunc || '  -   ' || To_Char( intCodFuncao, '999999') ;
     --RAise Notice '=> % ', varAux;

     IF intCodFuncao IS NULL OR intCodFuncao = 0 THEN
        intCodFuncao := 1;
     END IF;

     INSERT INTO administracao.funcao  ( cod_modulo
                                       , cod_biblioteca
                                       , cod_funcao
                                       , cod_tipo_retorno
                                       , nom_funcao)
                                VALUES ( intCodmodulo
                                       , intCodBiblioteca
                                       , intCodFuncao
                                       , intCodTiporetorno
                                       , varNomeFunc);

      RETURN intCodFuncao;

   END;
   $$ LANGUAGE 'plpgsql';

   --
   -- Inclusão de Váriaveis.
   --
   CREATE OR REPLACE function public.manutencao_variavel( intCodmodulo       INTEGER
                                                        , intCodBiblioteca   INTEGER
                                                        , intCodFuncao       INTEGER
                                                        , varNomVariavel     VARCHAR
                                                        , intTipoVariavel    INTEGER)
   RETURNS integer as $$
   DECLARE
      intCodVariavel INTEGER := 0;
   BEGIN

      If intCodFuncao != 0 THEN
         SELECT COALESCE((max(cod_variavel)+1),1)
           INTO intCodVariavel
           FROM administracao.variavel
          WHERE cod_modulo       = intCodmodulo
            AND cod_biblioteca   = intCodBiblioteca
            AND cod_funcao       = intCodFuncao
         ;

         INSERT INTO administracao.variavel ( cod_modulo
                                            , cod_biblioteca
                                            , cod_funcao
                                            , cod_variavel
                                            , nom_variavel
                                            , cod_tipo )
                                     VALUES ( intCodmodulo
                                            , intCodBiblioteca
                                            , intCodFuncao
                                            , intCodVariavel
                                            , varNomVariavel
                                            , intTipoVariavel
                                            );
      END IF;

      RETURN intCodVariavel;
   END;
   $$ LANGUAGE 'plpgsql';


   --
   -- Inclusão de parametro.
   --
   CREATE OR REPLACE function public.manutencao_parametro( intCodmodulo       INTEGER
                                                         , intCodBiblioteca   INTEGER
                                                         , intCodFuncao       INTEGER
                                                         , intCodVariavel     INTEGER)
   RETURNS VOID as $$
   DECLARE
      intOrdem INTEGER := 0;
   BEGIN
      If intCodFuncao != 0 THEN
         SELECT COALESCE((max(ordem)+1),1)
           INTO intOrdem
           FROM administracao.parametro
          WHERE cod_modulo       = intCodmodulo
            AND cod_biblioteca   = intCodBiblioteca
            AND cod_funcao       = intCodFuncao
         ;

         INSERT INTO administracao.parametro ( cod_modulo
                                             , cod_biblioteca
                                             , cod_funcao
                                             , cod_variavel
                                             , ordem)
                                      VALUES ( intCodmodulo
                                             , intCodBiblioteca
                                             , intCodFuncao
                                             , intCodVariavel
                                             , intOrdem );
      End If;

      RETURN;
   END;
   $$ LANGUAGE 'plpgsql';


   --
   -- Inclusão de parametro.
   --
   CREATE OR REPLACE function public.manutencao_funcao_externa( intCodmodulo       INTEGER
                                                              , intCodBiblioteca   INTEGER
                                                              , intCodFuncao       INTEGER )
   RETURNS VOID as $$
   DECLARE
      --intCodFuncao INTEGER;
   BEGIN

      -- RAise Notice ' =====> % ', intCodFuncao;

      If intCodFuncao != 0 THEN
         INSERT INTO administracao.funcao_externa ( cod_modulo
                                                  , cod_biblioteca
                                                  , cod_funcao
                                                  , comentario
                                                  )
                                           VALUES ( intCodmodulo
                                                  , intCodBiblioteca
                                                  , intCodFuncao
                                                  , ''
                                                  );
      END IF;
      RETURN;
   END;
   $$ LANGUAGE 'plpgsql';

   --
   -- Função principal.
   --
   CREATE OR REPLACE function public.manutencao() RETURNS VOID as $$
   DECLARE
      intCodFuncao   INTEGER;
      intCodVariavel INTEGER;
   BEGIN

      -- 1 | INTEIRO
      -- 2 | TEXTO
      -- 3 | BOOLEANO
      -- 4 | NUMERICO
      -- 5 | DATA

    --Inclusão de função interna arrecadacao/fn_acrescimo_indice.plsql

      intCodFuncao   := public.manutencao_funcao   (  27, 1, 'pegaListaEventosDaBase'      , 2);
                                                 --( intCodmodulo , intCodBiblioteca , varNomeFunc , intCodTiporetorno )
      intCodVariavel := public.manutencao_variavel (  27, 1, intCodFuncao, 'stNomBase'    , 2 );
      PERFORM           public.manutencao_parametro(  27, 1, intCodFuncao, intCodVariavel     );

      RETURN;
   END;
   $$ LANGUAGE 'plpgsql';

   --
   -- Execuçao  função.
   --
   Select public.manutencao();
   Drop Function public.manutencao();
   Drop Function public.manutencao_funcao(integer, integer, varchar, integer );
   Drop Function public.manutencao_variavel( integer, integer, integer, varchar, integer );
   Drop Function public.manutencao_parametro( integer, integer, integer, integer );
   Drop Function public.manutencao_funcao_externa( integer, integer, integer ) ;


----------------
-- Ticket #13200
----------------


----------------
-- Ticket #13198
----------------

INSERT INTO administracao.relatorio
         ( cod_gestao
         , cod_modulo
         , cod_relatorio
         , nom_relatorio
         , arquivo )
    VALUES ( 4
         , 50
         , 2
         , 'Recibo de Diárias'
         , 'reciboDiarias.rptdesign'
         );


CREATE TYPE colunasReciboPensaoJudicial AS (
    numcgm                      INTEGER,
    numcgm_servidor             INTEGER,
    registro                    INTEGER,
    nom_cgm_servidor            VARCHAR(200),
    nom_cgm                     VARCHAR(200),
    cpf                         VARCHAR,
    rg                          VARCHAR,
    dt_nascimento               VARCHAR,    
    nom_cgm_responsavel         VARCHAR(200),
    orgao                       VARCHAR,
    local                       VARCHAR,
    num_agencia                 VARCHAR,
    num_banco                   VARCHAR,
    conta_corrente              VARCHAR,
    dt_inclusao                 VARCHAR,
    desconto_fixado             VARCHAR,
    percentual                  NUMERIC(5,2),   
    dt_limite                   VARCHAR,   
    observacao                  VARCHAR,                                                                        
    valor                       VARCHAR,                                                                        
    valor_calculado             VARCHAR,
    valor_calculado_extenso     VARCHAR
);

CREATE TYPE colunasValoresAcumuladosRescisao AS (
    codigo                    varchar,
    descricao                 varchar,
    valor                     numeric(15,2),    
    folhas                    varchar
);

CREATE TYPE colunasValoresAcumulados AS (
    codigo                    varchar,
    descricao                 varchar,
    valor                     numeric(15,2),    
    folhas                    varchar
);

CREATE TYPE colunasValoresAcumuladosFerias AS (
    codigo                    varchar,
    descricao                 varchar,
    valor                     numeric(15,2),    
    folhas                    varchar
);

CREATE TYPE colunasValoresAcumuladosDecimo AS (
    codigo                    varchar,
    descricao                 varchar,
    valor                     numeric(15,2),    
    folhas                    varchar
);

CREATE TYPE colunasValoresAcumuladosComplementar AS (
    codigo                    varchar,
    descricao                 varchar,
    valor                     numeric(15,2),    
    folhas                    varchar
);
