From 8360f8f02c1ed93f3f3489b80ea468caff8f941a Mon Sep 17 00:00:00 2001 From: Caroline Salib Date: Fri, 21 Apr 2017 22:17:28 -0300 Subject: [PATCH] Ajustado para salvar corretamente pessoa física; portabilis/ieducar#167 --- ieducar/misc/database/migrations/20170422011034_ajusta_function_fisica_historico_campo.php | 310 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ieducar/misc/database/migrations/20170422011405_ajusta_function_aft_documento.php | 24 ++++++++++++++++++++++++ ieducar/misc/database/migrations/20170422011557_ajusta_function_documento_historico_campo.php | 373 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 707 insertions(+), 0 deletions(-) create mode 100644 ieducar/misc/database/migrations/20170422011034_ajusta_function_fisica_historico_campo.php create mode 100644 ieducar/misc/database/migrations/20170422011405_ajusta_function_aft_documento.php create mode 100644 ieducar/misc/database/migrations/20170422011557_ajusta_function_documento_historico_campo.php diff --git a/ieducar/misc/database/migrations/20170422011034_ajusta_function_fisica_historico_campo.php b/ieducar/misc/database/migrations/20170422011034_ajusta_function_fisica_historico_campo.php new file mode 100644 index 0000000..6d05279 --- /dev/null +++ b/ieducar/misc/database/migrations/20170422011034_ajusta_function_fisica_historico_campo.php @@ -0,0 +1,310 @@ +execute("-- Function: consistenciacao.fcn_fisica_historico_campo() + + -- DROP FUNCTION consistenciacao.fcn_fisica_historico_campo(); + + CREATE OR REPLACE FUNCTION consistenciacao.fcn_fisica_historico_campo() + RETURNS trigger AS + $$ + DECLARE + v_idpes numeric; + v_data_nasc_nova date; + v_data_nasc_antiga date; + v_sexo_novo text; + v_sexo_antigo text; + v_nome_mae_novo text; + v_nome_mae_antigo text; + v_nome_pai_novo text; + v_nome_pai_antigo text; + v_nome_conjuge_novo text; + v_nome_conjuge_antigo text; + v_nome_responsavel_novo text; + v_nome_responsavel_antigo text; + v_nome_ultima_empresa_novo text; + v_nome_ultima_empresa_antigo text; + v_id_ocupacao_novo numeric; + v_id_ocupacao_antigo numeric; + v_id_escolaridade_novo numeric; + v_id_escolaridade_antigo numeric; + v_id_estado_civil_novo numeric; + v_id_estado_civil_antigo numeric; + v_id_pais_origem_novo numeric; + v_id_pais_origem_antigo numeric; + v_data_chegada_brasil_nova date; + v_data_chegada_brasil_antiga date; + v_data_obito_nova date; + v_data_obito_antiga date; + v_data_uniao_nova date; + v_data_uniao_antiga date; + + v_comando text; + v_origem_gravacao text; + + v_credibilidade_maxima numeric; + v_credibilidade_alta numeric; + v_sem_credibilidade numeric; + + v_nova_credibilidade numeric; + + v_registro record; + v_aux_data_nova text; + v_aux_data_antiga text; + + -- ID dos campos + v_idcam_data_nasc numeric; + v_idcam_sexo numeric; + v_idcam_nome_mae numeric; + v_idcam_nome_pai numeric; + v_idcam_nome_conjuge numeric; + v_idcam_nome_responsavel numeric; + v_idcam_nome_ultima_empresa numeric; + v_idcam_ocupacao numeric; + v_idcam_escolaridade numeric; + v_idcam_estado_civil numeric; + v_idcam_pais_origem numeric; + v_idcam_data_chegada_brasil numeric; + v_idcam_data_obito numeric; + v_idcam_data_uniao numeric; + + /* + consistenciacao.historico_campo.credibilidade: 1 = Máxima, 2 = Alta, 3 = Média, 4 = Baixa, 5 = Sem credibilidade + cadastro.pessoa.origem_gravacao: M = Migração, U = Usuário, C = Rotina de confrontação, O = Oscar + */ + BEGIN + v_idpes := NEW.idpes; + v_data_nasc_nova := NEW.data_nasc; + v_sexo_novo := NEW.sexo; + v_nome_mae_novo := NEW.nome_mae; + v_nome_pai_novo := NEW.nome_pai; + v_nome_conjuge_novo := NEW.nome_conjuge; + v_nome_responsavel_novo := NEW.nome_responsavel; + v_nome_ultima_empresa_novo := NEW.ultima_empresa; + v_id_ocupacao_novo := NEW.idocup; + v_id_escolaridade_novo := NEW.idesco; + v_id_estado_civil_novo := NEW.ideciv; + v_id_pais_origem_novo := NEW.idpais_estrangeiro; + v_data_chegada_brasil_nova := NEW.data_chegada_brasil; + v_data_obito_nova := NEW.data_obito; + v_data_uniao_nova := NEW.data_uniao; + + IF TG_OP <> 'UPDATE' THEN + v_data_nasc_antiga := NULL; + v_sexo_antigo := ''; + v_nome_mae_antigo := ''; + v_nome_pai_antigo := ''; + v_nome_conjuge_antigo := ''; + v_nome_responsavel_antigo := ''; + v_nome_ultima_empresa_antigo := ''; + v_id_ocupacao_antigo := 0; + v_id_escolaridade_antigo := 0; + v_id_estado_civil_antigo := 0; + v_id_pais_origem_antigo := 0; + v_data_chegada_brasil_antiga := NULL; + v_data_obito_antiga := NULL; + v_data_uniao_antiga := NULL; + ELSE + v_data_nasc_antiga := OLD.data_nasc; + v_sexo_antigo := COALESCE(OLD.sexo, ''); + v_nome_mae_antigo := COALESCE(OLD.nome_mae, ''); + v_nome_pai_antigo := COALESCE(OLD.nome_pai, ''); + v_nome_conjuge_antigo := COALESCE(OLD.nome_conjuge, ''); + v_nome_responsavel_antigo := COALESCE(OLD.nome_responsavel, ''); + v_nome_ultima_empresa_antigo := COALESCE(OLD.ultima_empresa, ''); + v_id_ocupacao_antigo := COALESCE(OLD.idocup, 0); + v_id_escolaridade_antigo := COALESCE(OLD.idesco, 0); + v_id_estado_civil_antigo := COALESCE(OLD.ideciv, 0); + v_id_pais_origem_antigo := COALESCE(OLD.idpais_estrangeiro, 0); + v_data_chegada_brasil_antiga := OLD.data_chegada_brasil; + v_data_obito_antiga := OLD.data_obito; + v_data_uniao_antiga := OLD.data_uniao; + END IF; + + v_idcam_data_nasc := 5; + v_idcam_sexo := 26; + v_idcam_nome_mae := 27; + v_idcam_nome_pai := 28; + v_idcam_nome_conjuge := 29; + v_idcam_nome_responsavel := 30; + v_idcam_nome_ultima_empresa := 31; + v_idcam_ocupacao := 32; + v_idcam_escolaridade := 33; + v_idcam_estado_civil := 34; + v_idcam_pais_origem := 35; + v_idcam_data_chegada_brasil := 36; + v_idcam_data_obito := 37; + v_idcam_data_uniao := 38; + + v_nova_credibilidade := 0; + v_credibilidade_maxima := 1; + v_credibilidade_alta := 2; + v_sem_credibilidade := 5; + v_comando := 'SELECT origem_gravacao FROM cadastro.pessoa WHERE idpes='||quote_literal(v_idpes)||';'; + + FOR v_registro IN EXECUTE v_comando LOOP + v_origem_gravacao := v_registro.origem_gravacao; + END LOOP; + + IF v_origem_gravacao = 'U' OR v_origem_gravacao = 'O' THEN -- os dados foram editados pelo usuário ou pelo usuário do Oscar + v_nova_credibilidade := v_credibilidade_maxima; + ELSIF v_origem_gravacao = 'M' THEN -- os dados foram originados por migração + v_nova_credibilidade := v_credibilidade_alta; + END IF; + + IF v_nova_credibilidade > 0 THEN + + -- DATA DE NASCIMENTO + v_aux_data_nova := COALESCE(TO_CHAR (v_data_nasc_nova, 'DD/MM/YYYY'), ''); + v_aux_data_antiga := COALESCE(TO_CHAR (v_data_nasc_antiga, 'DD/MM/YYYY'), ''); + + IF v_aux_data_nova <> v_aux_data_antiga THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_data_nasc||','||v_nova_credibilidade||');'; + END IF; + + -- DATA DE UNIÃO + v_aux_data_nova := COALESCE(TO_CHAR (v_data_uniao_nova, 'DD/MM/YYYY'), ''); + v_aux_data_antiga := COALESCE(TO_CHAR (v_data_uniao_antiga, 'DD/MM/YYYY'), ''); + + IF v_aux_data_nova <> v_aux_data_antiga THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_data_uniao||','||v_nova_credibilidade||');'; + END IF; + + -- DATA DE ÓBITO + v_aux_data_nova := COALESCE(TO_CHAR (v_data_obito_nova, 'DD/MM/YYYY'), ''); + v_aux_data_antiga := COALESCE(TO_CHAR (v_data_obito_antiga, 'DD/MM/YYYY'), ''); + + IF v_aux_data_nova <> v_aux_data_antiga THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_data_obito||','||v_nova_credibilidade||');'; + END IF; + + -- DATA DE CHEGADA AO BRASIL + v_aux_data_nova := COALESCE(TO_CHAR (v_data_chegada_brasil_nova, 'DD/MM/YYYY'), ''); + v_aux_data_antiga := COALESCE(TO_CHAR (v_data_chegada_brasil_antiga, 'DD/MM/YYYY'), ''); + + IF v_aux_data_nova <> v_aux_data_antiga THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_data_chegada_brasil||','||v_nova_credibilidade||');'; + END IF; + + -- NOME DA MÃE + IF v_nome_mae_novo <> v_nome_mae_antigo THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_nome_mae||','||v_nova_credibilidade||');'; + END IF; + + -- NOME DO PAI + IF v_nome_pai_novo <> v_nome_pai_antigo THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_nome_pai||','||v_nova_credibilidade||');'; + END IF; + + -- NOME DO CONJUGE + IF v_nome_conjuge_novo <> v_nome_conjuge_antigo THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_nome_conjuge||','||v_nova_credibilidade||');'; + END IF; + + -- NOME DO RESPONSAVEL + IF v_nome_responsavel_novo <> v_nome_responsavel_antigo THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_nome_responsavel||','||v_nova_credibilidade||');'; + END IF; + + -- NOME ÚLTIMA EMPRESA + IF v_nome_ultima_empresa_novo <> v_nome_ultima_empresa_antigo THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_nome_ultima_empresa||','||v_nova_credibilidade||');'; + END IF; + + -- SEXO + IF v_sexo_novo <> v_sexo_antigo THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_sexo||','||v_nova_credibilidade||');'; + END IF; + + -- ID OCUPAÇÃO PROFISSIONAL + IF v_id_ocupacao_novo <> v_id_ocupacao_antigo THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_ocupacao||','||v_nova_credibilidade||');'; + END IF; + + -- ID ESCOLARIDADE + IF v_id_escolaridade_novo <> v_id_escolaridade_antigo THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_escolaridade||','||v_nova_credibilidade||');'; + END IF; + + -- ID ESTADO CIVIL + IF v_id_estado_civil_novo <> v_id_estado_civil_antigo THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_estado_civil||','||v_nova_credibilidade||');'; + END IF; + + -- ID PAIS ORIGEM + IF v_id_pais_origem_novo <> v_id_pais_origem_antigo THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_pais_origem||','||v_nova_credibilidade||');'; + END IF; + + END IF; + + -- Verificar os campos Vazios ou Nulos + -- DATA DE NASCIMENTO + IF TRIM(v_data_nasc_nova::varchar)='' OR v_data_nasc_nova IS NULL THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_data_nasc||','||v_sem_credibilidade||');'; + END IF; + -- DATA DE UNIÃO + IF TRIM(v_data_uniao_nova::varchar)='' OR v_data_uniao_nova IS NULL THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_data_uniao||','||v_sem_credibilidade||');'; + END IF; + -- DATA DE ÓBITO + IF TRIM(v_data_obito_nova::varchar)='' OR v_data_obito_nova IS NULL THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_data_obito||','||v_sem_credibilidade||');'; + END IF; + -- DATA DE CHEGADA AO BRASIL + IF TRIM(v_data_chegada_brasil_nova::varchar)='' OR v_data_chegada_brasil_nova IS NULL THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_data_chegada_brasil||','||v_sem_credibilidade||');'; + END IF; + -- NOME DA MÃE + IF TRIM(v_nome_mae_novo)='' OR v_nome_mae_novo IS NULL THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_nome_mae||','||v_sem_credibilidade||');'; + END IF; + -- NOME DO PAI + IF TRIM(v_nome_pai_novo)='' OR v_nome_pai_novo IS NULL THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_nome_pai||','||v_sem_credibilidade||');'; + END IF; + -- NOME DO CONJUGE + IF TRIM(v_nome_conjuge_novo)='' OR v_nome_conjuge_novo IS NULL THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_nome_conjuge||','||v_sem_credibilidade||');'; + END IF; + -- NOME DO RESPONSAVEL + IF TRIM(v_nome_responsavel_novo)='' OR v_nome_responsavel_novo IS NULL THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_nome_responsavel||','||v_sem_credibilidade||');'; + END IF; + -- NOME ÚLTIMA EMPRESA + IF TRIM(v_nome_ultima_empresa_novo)='' OR v_nome_ultima_empresa_novo IS NULL THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_nome_ultima_empresa||','||v_sem_credibilidade||');'; + END IF; + -- SEXO + IF TRIM(v_sexo_novo)='' OR v_sexo_novo IS NULL THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_sexo||','||v_sem_credibilidade||');'; + END IF; + -- ID OCUPAÇÃO PROFISSIONAL + IF v_id_ocupacao_novo <= 0 OR v_id_ocupacao_novo IS NULL THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_ocupacao||','||v_sem_credibilidade||');'; + END IF; + -- ID ESCOLARIDADE + IF v_id_escolaridade_novo <= 0 OR v_id_escolaridade_novo IS NULL THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_escolaridade||','||v_sem_credibilidade||');'; + END IF; + -- ID ESTADO CIVIL + IF v_id_estado_civil_novo <= 0 OR v_id_estado_civil_novo IS NULL THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_estado_civil||','||v_sem_credibilidade||');'; + END IF; + -- ID PAIS ORIGEM + IF v_id_pais_origem_novo <= 0 OR v_id_pais_origem_novo IS NULL THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_pais_origem||','||v_sem_credibilidade||');'; + END IF; + RETURN NEW; + END; $$ + LANGUAGE plpgsql VOLATILE + COST 100; + ALTER FUNCTION consistenciacao.fcn_fisica_historico_campo() + OWNER TO postgres;"); + } +} diff --git a/ieducar/misc/database/migrations/20170422011405_ajusta_function_aft_documento.php b/ieducar/misc/database/migrations/20170422011405_ajusta_function_aft_documento.php new file mode 100644 index 0000000..679843f --- /dev/null +++ b/ieducar/misc/database/migrations/20170422011405_ajusta_function_aft_documento.php @@ -0,0 +1,24 @@ +execute("CREATE OR REPLACE FUNCTION cadastro.fcn_aft_documento() + RETURNS trigger AS + $$ + DECLARE + v_idpes numeric; + BEGIN + v_idpes := NEW.idpes; + EXECUTE 'DELETE FROM cadastro.documento WHERE ( (rg = 0 OR rg IS NULL) AND (idorg_exp_rg IS NULL) AND data_exp_rg IS NULL AND (sigla_uf_exp_rg IS NULL OR length(trim(sigla_uf_exp_rg))=0) AND (tipo_cert_civil = 0 OR tipo_cert_civil IS NULL) AND (num_termo = 0 OR num_termo IS NULL) AND (num_livro = '' OR num_livro IS NULL) AND (num_livro = '' OR num_livro IS NULL) AND (num_folha = 0 OR num_folha IS NULL) AND data_emissao_cert_civil IS NULL AND (sigla_uf_cert_civil IS NULL OR length(trim(sigla_uf_cert_civil))=0) AND (sigla_uf_cart_trabalho IS NULL OR length(trim(sigla_uf_cart_trabalho))=0) AND (cartorio_cert_civil IS NULL OR length(trim(cartorio_cert_civil))=0) AND (num_cart_trabalho = 0 OR num_cart_trabalho IS NULL) AND (serie_cart_trabalho = 0 OR serie_cart_trabalho IS NULL) AND data_emissao_cart_trabalho IS NULL AND (num_tit_eleitor = 0 OR num_tit_eleitor IS NULL) AND (zona_tit_eleitor = 0 OR zona_tit_eleitor IS NULL) AND (secao_tit_eleitor = 0 OR secao_tit_eleitor IS NULL) ) AND idpes='||quote_literal(v_idpes)||' AND certidao_nascimento is null'; + RETURN NEW; + END; $$ + LANGUAGE plpgsql VOLATILE + COST 100; + ALTER FUNCTION cadastro.fcn_aft_documento() + OWNER TO postgres;"); + } +} diff --git a/ieducar/misc/database/migrations/20170422011557_ajusta_function_documento_historico_campo.php b/ieducar/misc/database/migrations/20170422011557_ajusta_function_documento_historico_campo.php new file mode 100644 index 0000000..c0e000a --- /dev/null +++ b/ieducar/misc/database/migrations/20170422011557_ajusta_function_documento_historico_campo.php @@ -0,0 +1,373 @@ +execute("-- Function: consistenciacao.fcn_documento_historico_campo() + + -- DROP FUNCTION consistenciacao.fcn_documento_historico_campo(); + + CREATE OR REPLACE FUNCTION consistenciacao.fcn_documento_historico_campo() + RETURNS trigger AS + $$ + DECLARE + v_idpes numeric; + + v_data_expedicao_rg_nova date; + v_data_expedicao_rg_antiga date; + v_data_emissao_cert_civil_nova date; + v_data_emissao_cert_civil_antiga date; + v_data_emissao_cart_trabalho_nova date; + v_data_emissao_cart_trabalho_antiga date; + v_orgao_expedicao_rg_novo numeric; + v_orgao_expedicao_rg_antigo numeric; + v_numero_rg_novo numeric; + v_numero_rg_antigo numeric; + v_numero_titulo_eleitor_novo numeric; + v_numero_titulo_eleitor_antigo numeric; + v_numero_zona_titulo_novo numeric; + v_numero_zona_titulo_antigo numeric; + v_numero_secao_titulo_novo numeric; + v_numero_secao_titulo_antigo numeric; + v_numero_cart_trabalho_novo numeric; + v_numero_cart_trabalho_antigo numeric; + v_numero_serie_cart_trabalho_novo numeric; + v_numero_serie_cart_trabalho_antigo numeric; + v_tipo_certidao_civil_novo numeric; + v_tipo_certidao_civil_antigo numeric; + v_numero_termo_certidao_civil_novo numeric; + v_numero_termo_certidao_civil_antigo numeric; + v_numero_livro_certidao_civil_novo varchar; + v_numero_livro_certidao_civil_antigo varchar; + v_numero_folha_certidao_civil_novo numeric; + v_numero_folha_certidao_civil_antigo numeric; + v_cartorio_certidao_civil_novo text; + v_cartorio_certidao_civil_antigo text; + v_uf_expedicao_rg_novo text; + v_uf_expedicao_rg_antigo text; + v_uf_emissao_certidao_civil_novo text; + v_uf_emissao_certidao_civil_antigo text; + v_uf_emissao_carteira_trabalho_novo text; + v_uf_emissao_carteira_trabalho_antigo text; + + v_comando text; + v_origem_gravacao text; + + v_credibilidade_maxima numeric; + v_credibilidade_alta numeric; + v_sem_credibilidade numeric; + + v_nova_credibilidade numeric; + + v_registro record; + v_aux_data_nova text; + v_aux_data_antiga text; + + -- ID dos campos + v_idcam_numero_rg numeric; + v_idcam_orgao_expedidor_rg numeric; + v_idcam_data_expedicao_rg numeric; + v_idcam_uf_expedicao_rg numeric; + v_idcam_tipo_certidao_civil numeric; + v_idcam_numero_termo_certidao_civil numeric; + v_idcam_numero_livro_certidao_civil numeric; + v_idcam_numero_folha_certidao_civil numeric; + v_idcam_data_emissao_certidao_civil numeric; + v_idcam_cartorio_certidao_civil numeric; + v_idcam_uf_emissao_certidao_civil numeric; + v_idcam_numero_carteira_trabalho numeric; + v_idcam_numero_serie_carteira_trabalho numeric; + v_idcam_data_emissao_carteira_trabalho numeric; + v_idcam_uf_emissao_carteira_trabalho numeric; + v_idcam_numero_titulo_eleitor numeric; + v_idcam_numero_zona_titulo_eleitor numeric; + v_idcam_numero_secao_titulo_eleitor numeric; + + /* + consistenciacao.historico_campo.credibilidade: 1 = Maxima, 2 = Alta, 3 = Media, 4 = Baixa, 5 = Sem credibilidade + cadastro.pessoa.origem_gravacao: M = Migracao, U = Usuario, C = Rotina de confrontacao, O = Oscar + */ + BEGIN + v_idpes := NEW.idpes; + + v_data_expedicao_rg_nova := NEW.data_exp_rg; + v_data_emissao_cert_civil_nova := NEW.data_emissao_cert_civil; + v_data_emissao_cart_trabalho_nova := NEW.data_emissao_cart_trabalho; + v_orgao_expedicao_rg_novo := NEW.idorg_exp_rg; + v_numero_rg_novo := NEW.rg; + v_numero_titulo_eleitor_novo := NEW.num_tit_eleitor; + v_numero_zona_titulo_novo := NEW.zona_tit_eleitor; + v_numero_secao_titulo_novo := NEW.secao_tit_eleitor; + v_numero_cart_trabalho_novo := NEW.num_cart_trabalho; + v_numero_serie_cart_trabalho_novo := NEW.serie_cart_trabalho; + v_tipo_certidao_civil_novo := NEW.tipo_cert_civil; + v_numero_termo_certidao_civil_novo := NEW.num_termo; + v_numero_livro_certidao_civil_novo := NEW.num_livro; + v_numero_folha_certidao_civil_novo := NEW.num_folha; + v_cartorio_certidao_civil_novo := NEW.cartorio_cert_civil; + v_uf_expedicao_rg_novo := NEW.sigla_uf_exp_rg; + v_uf_emissao_certidao_civil_novo := NEW.sigla_uf_cert_civil; + v_uf_emissao_carteira_trabalho_novo := NEW.sigla_uf_cart_trabalho; + + IF TG_OP <> 'UPDATE' THEN + v_data_expedicao_rg_antiga := NULL; + v_data_emissao_cert_civil_antiga := NULL; + v_data_emissao_cart_trabalho_antiga := NULL; + v_orgao_expedicao_rg_antigo := 0; + v_numero_rg_antigo := 0; + v_numero_titulo_eleitor_antigo := 0; + v_numero_zona_titulo_antigo := 0; + v_numero_secao_titulo_antigo := 0; + v_numero_cart_trabalho_antigo := 0; + v_numero_serie_cart_trabalho_antigo := 0; + v_tipo_certidao_civil_antigo := 0; + v_numero_termo_certidao_civil_antigo := 0; + v_numero_livro_certidao_civil_antigo := ''; + v_numero_folha_certidao_civil_antigo := 0; + v_cartorio_certidao_civil_antigo := ''; + v_uf_expedicao_rg_antigo := ''; + v_uf_emissao_certidao_civil_antigo := ''; + v_uf_emissao_carteira_trabalho_antigo := ''; + ELSE + v_data_expedicao_rg_antiga := OLD.data_exp_rg; + v_data_emissao_cert_civil_antiga := OLD.data_emissao_cert_civil; + v_data_emissao_cart_trabalho_antiga := OLD.data_emissao_cart_trabalho; + v_orgao_expedicao_rg_antigo := COALESCE(OLD.idorg_exp_rg, 0); + v_numero_rg_antigo := COALESCE(OLD.rg, 0); + v_numero_titulo_eleitor_antigo := COALESCE(OLD.num_tit_eleitor, 0); + v_numero_zona_titulo_antigo := COALESCE(OLD.zona_tit_eleitor, 0); + v_numero_secao_titulo_antigo := COALESCE(OLD.secao_tit_eleitor, 0); + v_numero_cart_trabalho_antigo := COALESCE(OLD.num_cart_trabalho, 0); + v_numero_serie_cart_trabalho_antigo := COALESCE(OLD.serie_cart_trabalho, 0); + v_tipo_certidao_civil_antigo := COALESCE(OLD.tipo_cert_civil, 0); + v_numero_termo_certidao_civil_antigo := COALESCE(OLD.num_termo, 0); + v_numero_livro_certidao_civil_antigo := OLD.num_livro; + v_numero_folha_certidao_civil_antigo := COALESCE(OLD.num_folha, 0); + v_cartorio_certidao_civil_antigo := COALESCE(OLD.cartorio_cert_civil, ''); + v_uf_expedicao_rg_antigo := COALESCE(OLD.sigla_uf_exp_rg, ''); + v_uf_emissao_certidao_civil_antigo := COALESCE(OLD.sigla_uf_cert_civil, ''); + v_uf_emissao_carteira_trabalho_antigo := COALESCE(OLD.sigla_uf_cart_trabalho, ''); + END IF; + + v_idcam_numero_rg := 6; + v_idcam_orgao_expedidor_rg := 7; + v_idcam_data_expedicao_rg := 8; + v_idcam_uf_expedicao_rg := 9; + v_idcam_tipo_certidao_civil := 10; + v_idcam_numero_termo_certidao_civil := 11; + v_idcam_numero_livro_certidao_civil := 12; + v_idcam_numero_folha_certidao_civil := 13; + v_idcam_data_emissao_certidao_civil := 14; + v_idcam_cartorio_certidao_civil := 15; + v_idcam_uf_emissao_certidao_civil := 16; + v_idcam_numero_carteira_trabalho := 17; + v_idcam_numero_serie_carteira_trabalho := 18; + v_idcam_data_emissao_carteira_trabalho := 19; + v_idcam_uf_emissao_carteira_trabalho := 20; + v_idcam_numero_titulo_eleitor := 21; + v_idcam_numero_zona_titulo_eleitor := 22; + v_idcam_numero_secao_titulo_eleitor := 23; + + v_nova_credibilidade := 0; + v_credibilidade_maxima := 1; + v_credibilidade_alta := 2; + v_sem_credibilidade := 5; + v_comando := 'SELECT origem_gravacao FROM cadastro.pessoa WHERE idpes='||quote_literal(v_idpes)||';'; + + FOR v_registro IN EXECUTE v_comando LOOP + v_origem_gravacao := v_registro.origem_gravacao; + END LOOP; + + IF v_origem_gravacao = 'U' OR v_origem_gravacao = 'O' THEN -- os dados foram editados pelo usuario ou pelo usuario do Oscar + v_nova_credibilidade := v_credibilidade_maxima; + ELSIF v_origem_gravacao = 'M' THEN -- os dados foram originados por migracao + v_nova_credibilidade := v_credibilidade_alta; + END IF; + + IF v_nova_credibilidade > 0 THEN + + -- DATA DE EXPEDICAO DO RG + v_aux_data_nova := COALESCE(TO_CHAR (v_data_expedicao_rg_nova, 'DD/MM/YYYY'), ''); + v_aux_data_antiga := COALESCE(TO_CHAR (v_data_expedicao_rg_antiga, 'DD/MM/YYYY'), ''); + + IF v_aux_data_nova <> v_aux_data_antiga THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_data_expedicao_rg||','||v_nova_credibilidade||');'; + END IF; + + -- DATA DE EMISSAO CERTIDAO CIVIL + v_aux_data_nova := COALESCE(TO_CHAR (v_data_emissao_cert_civil_nova, 'DD/MM/YYYY'), ''); + v_aux_data_antiga := COALESCE(TO_CHAR (v_data_emissao_cert_civil_antiga, 'DD/MM/YYYY'), ''); + + IF v_aux_data_nova <> v_aux_data_antiga THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_data_emissao_certidao_civil||','||v_nova_credibilidade||');'; + END IF; + + -- DATA DE EMISSAO CARTEIRA DE TRABALHO + v_aux_data_nova := COALESCE(TO_CHAR (v_data_emissao_cart_trabalho_nova, 'DD/MM/YYYY'), ''); + v_aux_data_antiga := COALESCE(TO_CHAR (v_data_emissao_cart_trabalho_antiga, 'DD/MM/YYYY'), ''); + + IF v_aux_data_nova <> v_aux_data_antiga THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_data_emissao_carteira_trabalho||','||v_nova_credibilidade||');'; + END IF; + + -- ORGAO EXPEDIDOR DO RG + IF v_orgao_expedicao_rg_novo <> v_orgao_expedicao_rg_antigo THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_orgao_expedidor_rg||','||v_nova_credibilidade||');'; + END IF; + + -- RG + IF v_numero_rg_novo <> v_numero_rg_antigo THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_numero_rg||','||v_nova_credibilidade||');'; + END IF; + + -- TITULO ELEITOR + IF v_numero_titulo_eleitor_novo <> v_numero_titulo_eleitor_antigo THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_numero_titulo_eleitor||','||v_nova_credibilidade||');'; + END IF; + + -- ZONA TITULO ELEITOR + IF v_numero_zona_titulo_novo <> v_numero_zona_titulo_antigo THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_numero_zona_titulo_eleitor||','||v_nova_credibilidade||');'; + END IF; + + -- SECAO TITULO ELEITOR + IF v_numero_secao_titulo_novo <> v_numero_secao_titulo_antigo THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_numero_secao_titulo_eleitor||','||v_nova_credibilidade||');'; + END IF; + + -- CARTEIRA DE TRABALHO + IF v_numero_cart_trabalho_novo <> v_numero_cart_trabalho_antigo THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_numero_carteira_trabalho||','||v_nova_credibilidade||');'; + END IF; + + -- SERIE CARTEIRA DE TRABALHO + IF v_numero_serie_cart_trabalho_novo <> v_numero_serie_cart_trabalho_antigo THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_numero_serie_carteira_trabalho||','||v_nova_credibilidade||');'; + END IF; + + -- TIPO CERTIDAO CIVIL + IF v_tipo_certidao_civil_novo <> v_tipo_certidao_civil_antigo THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_tipo_certidao_civil||','||v_nova_credibilidade||');'; + END IF; + + -- NUMERO TERMO CERTIDAO CIVIL + IF v_numero_termo_certidao_civil_novo <> v_numero_termo_certidao_civil_antigo THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_numero_termo_certidao_civil||','||v_nova_credibilidade||');'; + END IF; + + -- NUMERO LIVRO CERTIDAO CIVIL + IF v_numero_livro_certidao_civil_novo <> v_numero_livro_certidao_civil_antigo THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_numero_livro_certidao_civil||','||v_nova_credibilidade||');'; + END IF; + + -- NUMERO FOLHA CERTIDAO CIVIL + IF v_numero_folha_certidao_civil_novo <> v_numero_folha_certidao_civil_antigo THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_numero_folha_certidao_civil||','||v_nova_credibilidade||');'; + END IF; + + -- CARTORIO CERTIDAO CIVIL + IF v_cartorio_certidao_civil_novo <> v_cartorio_certidao_civil_antigo THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_cartorio_certidao_civil||','||v_nova_credibilidade||');'; + END IF; + + -- UF EXPEDICAO RG + IF v_uf_expedicao_rg_novo <> v_uf_expedicao_rg_antigo THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_uf_expedicao_rg||','||v_nova_credibilidade||');'; + END IF; + + -- UF EMISSAO CERTIDAO CIVIL + IF v_uf_emissao_certidao_civil_novo <> v_uf_emissao_certidao_civil_antigo THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_uf_emissao_certidao_civil||','||v_nova_credibilidade||');'; + END IF; + + -- UF EMISSAO CARTEIRA DE TRABALHO + IF v_uf_emissao_carteira_trabalho_novo <> v_uf_emissao_carteira_trabalho_antigo THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_uf_emissao_carteira_trabalho||','||v_nova_credibilidade||');'; + END IF; + + END IF; + -- Verificar os campos Vazios ou Nulos + -- DATA DE EXPEDICAO DO RG + IF TRIM(v_data_expedicao_rg_nova::varchar)='' OR v_data_expedicao_rg_nova IS NULL THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_data_expedicao_rg||','||v_sem_credibilidade||');'; + END IF; + -- DATA DE EMISSAO CERTIDAO CIVIL + IF TRIM(v_data_emissao_cert_civil_nova::varchar)='' OR v_data_emissao_cert_civil_nova IS NULL THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_data_emissao_certidao_civil||','||v_sem_credibilidade||');'; + END IF; + -- DATA DE EMISSAO CARTEIRA DE TRABALHO + IF TRIM(v_data_emissao_cart_trabalho_nova::varchar)='' OR v_data_emissao_cart_trabalho_nova IS NULL THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_data_emissao_carteira_trabalho||','||v_sem_credibilidade||');'; + END IF; + -- ORGAO EXPEDIDOR DO RG + IF v_orgao_expedicao_rg_novo <= 0 OR v_orgao_expedicao_rg_novo IS NULL THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_orgao_expedidor_rg||','||v_sem_credibilidade||');'; + END IF; + -- RG + IF v_numero_rg_novo <= 0 OR v_numero_rg_novo IS NULL THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_numero_rg||','||v_sem_credibilidade||');'; + END IF; + -- TITULO ELEITOR + IF v_numero_titulo_eleitor_novo <= 0 OR v_numero_titulo_eleitor_novo IS NULL THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_numero_titulo_eleitor||','||v_sem_credibilidade||');'; + END IF; + -- ZONA TITULO ELEITOR + IF v_numero_zona_titulo_novo <= 0 OR v_numero_zona_titulo_novo IS NULL THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_numero_zona_titulo_eleitor||','||v_sem_credibilidade||');'; + END IF; + -- SECAO TITULO ELEITOR + IF v_numero_secao_titulo_novo <= 0 OR v_numero_secao_titulo_novo IS NULL THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_numero_secao_titulo_eleitor||','||v_sem_credibilidade||');'; + END IF; + -- CARTEIRA DE TRABALHO + IF v_numero_cart_trabalho_novo <= 0 OR v_numero_cart_trabalho_novo IS NULL THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_numero_carteira_trabalho||','||v_sem_credibilidade||');'; + END IF; + -- SERIE CARTEIRA DE TRABALHO + IF v_numero_serie_cart_trabalho_novo <= 0 OR v_numero_serie_cart_trabalho_novo IS NULL THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_numero_serie_carteira_trabalho||','||v_sem_credibilidade||');'; + END IF; + -- TIPO CERTIDAO CIVIL + IF v_tipo_certidao_civil_novo <= 0 OR v_tipo_certidao_civil_novo IS NULL THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_tipo_certidao_civil||','||v_sem_credibilidade||');'; + END IF; + -- NUMERO TERMO CERTIDAO CIVIL + IF v_numero_termo_certidao_civil_novo <= 0 OR v_numero_termo_certidao_civil_novo IS NULL THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_numero_termo_certidao_civil||','||v_sem_credibilidade||');'; + END IF; + -- NUMERO LIVRO CERTIDAO CIVIL + IF v_numero_livro_certidao_civil_novo = '' OR v_numero_livro_certidao_civil_novo IS NULL THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_numero_livro_certidao_civil||','||v_sem_credibilidade||');'; + END IF; + -- NUMERO FOLHA CERTIDAO CIVIL + IF v_numero_folha_certidao_civil_novo <= 0 OR v_numero_folha_certidao_civil_novo IS NULL THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_numero_folha_certidao_civil||','||v_sem_credibilidade||');'; + END IF; + -- CARTORIO CERTIDAO CIVIL + IF TRIM(v_cartorio_certidao_civil_novo)='' OR v_cartorio_certidao_civil_novo IS NULL THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_cartorio_certidao_civil||','||v_sem_credibilidade||');'; + END IF; + -- UF EXPEDICAO RG + IF TRIM(v_uf_expedicao_rg_novo)='' OR v_uf_expedicao_rg_novo IS NULL THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_uf_expedicao_rg||','||v_sem_credibilidade||');'; + END IF; + -- UF EMISSAO CERTIDAO CIVIL + IF TRIM(v_uf_emissao_certidao_civil_novo)='' OR v_uf_emissao_certidao_civil_novo IS NULL THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_uf_emissao_certidao_civil||','||v_sem_credibilidade||');'; + END IF; + -- UF EMISSAO CARTEIRA DE TRABALHO + IF TRIM(v_uf_emissao_carteira_trabalho_novo)='' OR v_uf_emissao_carteira_trabalho_novo IS NULL THEN + EXECUTE 'SELECT consistenciacao.fcn_gravar_historico_campo('||v_idpes||','||v_idcam_uf_emissao_carteira_trabalho||','||v_sem_credibilidade||');'; + END IF; + + RETURN NEW; + END;$$ + LANGUAGE plpgsql VOLATILE + COST 100; + ALTER FUNCTION consistenciacao.fcn_documento_historico_campo() + OWNER TO postgres;"); + } +} -- libgit2 0.21.2