GA_006.sql 4.12 KB
/*
    **********************************************************************************
    *                                                                                *
    * @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
*
* $Revision: 29583 $
* $Name$
* $Author: gris $
* $Date: 2008-03-27 14:37:38 -0300 (Qui, 27 Mar 2008) $
*
* Versão 006.
*/

CREATE TABLE sw_processo_interessado (
  ano_exercicio char(04) NOT NULL,
  cod_processo  integer  NOT NULL,
  numcgm        integer  NOT NULL,
  CONSTRAINT pk_processo_interessado PRIMARY KEY(ano_exercicio, cod_processo, numcgm),
  CONSTRAINT fk_processo_interessado_1 FOREIGN KEY(cod_processo, ano_exercicio) REFERENCES sw_processo(cod_processo, ano_exercicio),
  CONSTRAINT fk_processo_interessado_2 FOREIGN KEY(numcgm) REFERENCES sw_cgm(numcgm)
);

GRANT INSERT, DELETE, UPDATE, SELECT ON sw_processo_interessado TO GROUP urbem;

INSERT INTO sw_processo_interessado
            (ano_exercicio
          , cod_processo
          , numcgm)
     SELECT ano_exercicio
          , cod_processo
          , numcgm
       FROM sw_processo;

-------------------
-- Ticket 12633
-------------------

CREATE OR REPLACE FUNCTION cgmArquivador() RETURNS VOID AS $$

DECLARE

   recProcesso      RECORD;

   varProcesso      VARCHAR;

BEGIN

   ALTER TABLE sw_processo_arquivado ADD COLUMN cgm_arquivador INTEGER;

   FOR recProcesso IN SELECT objeto
                           , numcgm
                        FROM administracao.auditoria
                       WHERE extract(YEAR from timestamp)  = '2008'
                         AND (cod_acao = 127 OR cod_acao = 2162)

   LOOP

      IF recProcesso.objeto ilike 'Processo%' THEN

         varProcesso := substr(recProcesso.objeto,11, (position ('/' IN recProcesso.objeto)) -1);

      ELSE

         varProcesso := recProcesso.objeto;

      END IF;

      RAISE NOTICE 'Processo-campo %', recProcesso.objeto;
      RAISE NOTICE 'Processo %', varProcesso;

      UPDATE sw_processo_arquivado
         SET cgm_arquivador = recProcesso.numcgm
       WHERE TO_NUMBER(BTRIM(varProcesso),'999999999') = cod_processo
         AND ano_exercicio = '2008';

   END LOOP;

   UPDATE sw_processo_arquivado
      SET cgm_arquivador = 0
    WHERE cgm_arquivador IS NULL;

   ALTER TABLE sw_processo_arquivado ALTER COLUMN cgm_arquivador SET NOT NULL;
   ALTER TABLE sw_processo_arquivado ADD CONSTRAINT fk_processo_arquivado_3 FOREIGN KEY (cgm_arquivador) REFERENCES sw_cgm_pessoa_fisica(numcgm);

END;

$$ LANGUAGE 'plpgsql';

SELECT cgmArquivador();
DROP FUNCTION cgmArquivador();