insertRegistroEventoAutomaticoDecimo.plsql 4.91 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.       *
    *                                                                                *
    **********************************************************************************
*/
--/**
--    * Função PLSQL
--    * Data de Criação: 12/09/2006
--
--
--    * @author Analista: Vandré Miguel Ramos
--    * @author Desenvolvedor: Diego Lemos de Souza
--
--    * @package URBEM
--    * @subpackage
--
--    $Revision: 23177 $
--    $Name$
--    $Author: souzadl $
--    $Date: 2007-06-12 11:45:22 -0300 (Ter, 12 Jun 2007) $
--
--    * Casos de uso: uc-04.05.11
--*/

CREATE OR REPLACE FUNCTION insertRegistroEventoAutomaticoDecimo(INTEGER,INTEGER,INTEGER,VARCHAR) RETURNS BOOLEAN as '

DECLARE
    inCodContrato               ALIAS FOR $1;
    inCodPeriodoMovimentacao    ALIAS FOR $2;
    inCodEvento                 ALIAS FOR $3;
    stDesdobramento             ALIAS FOR $4;
    inCodRegistro               INTEGER;
    inContador                  INTEGER;
    stTimestamp                 TIMESTAMP;
    stSql                       VARCHAR := '''';
    stEntidade VARCHAR := recuperarBufferTexto(''stEntidade'');
BEGIN
    inContador := selectIntoInteger(''SELECT COUNT(ultimo_registro_evento_decimo.*) AS contador
                              FROM folhapagamento''||stEntidade||''.ultimo_registro_evento_decimo
                                 , folhapagamento''||stEntidade||''.registro_evento_decimo
                             WHERE ultimo_registro_evento_decimo.cod_registro = registro_evento_decimo.cod_registro
                               AND ultimo_registro_evento_decimo.cod_evento   = registro_evento_decimo.cod_evento
                               AND ultimo_registro_evento_decimo.timestamp    = registro_evento_decimo.timestamp
                               AND ultimo_registro_evento_decimo.desdobramento= registro_evento_decimo.desdobramento
                               AND registro_evento_decimo.cod_contrato = ''||inCodContrato||''
                               AND registro_evento_decimo.cod_periodo_movimentacao = ''||inCodPeriodoMovimentacao||''
                               AND ultimo_registro_evento_decimo.cod_evento = ''||inCodEvento||''
                               AND ultimo_registro_evento_decimo.desdobramento = ''''''||stDesdobramento||'''''' '');
    IF inContador = 0 THEN
        inCodRegistro := selectIntoInteger('' SELECT max(cod_registro)+1 as cod_registro
                                     FROM folhapagamento''||stEntidade||''.registro_evento_decimo '');
        stTimestamp = now();
        EXECUTE stSql;
        stSql := ''INSERT INTO folhapagamento''||stEntidade||''.registro_evento_decimo (cod_registro,timestamp,cod_evento,cod_contrato,cod_periodo_movimentacao,automatico,desdobramento)
                        VALUES (''||inCodRegistro||'',TO_TIMESTAMP(''''''||stTimestamp||'''''',''''yyyy-mm-dd hh24:mi:ss.us''''),''||inCodEvento||'',''||inCodContrato||'',''||inCodPeriodoMovimentacao||'',true,''''''||stDesdobramento||'''''')'';
        EXECUTE stSql;
        stSql := ''INSERT INTO folhapagamento''||stEntidade||''.ultimo_registro_evento_decimo (timestamp,cod_registro,cod_evento,desdobramento)
                        VALUES (TO_TIMESTAMP(''''''||stTimestamp||'''''',''''yyyy-mm-dd hh24:mi:ss.us''''),''||inCodRegistro||'',''||inCodEvento||'',''''''||stDesdobramento||'''''')'';
        EXECUTE stSql;
    END IF;
    RETURN true;
END;
'LANGUAGE 'plpgsql';