Advertisement
Guest User

Untitled

a guest
Dec 11th, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.60 KB | None | 0 0
  1.  
  2. CREATE or replace FUNCTION public.f_pessoa_tbiu()
  3. RETURNS trigger
  4. LANGUAGE 'plpgsql'
  5. COST 100
  6. VOLATILE NOT LEAKPROOF
  7. AS $BODY$
  8. DECLARE
  9. VIdContaContabil INTEGER;
  10. VCodigoContaContabil TEXT;
  11. BEGIN
  12. IF (TG_OP = 'UPDATE') THEN
  13. /*IF (f_obtem_parametro_alfanumerico('interno.base_integrada_adaptivego', 1, 0, 'S') = 'S'
  14. AND (OLD.cnpj_cpf != NEW.cnpj_cpf)
  15. AND MD5(CURRENT_SETTING('petros.conta_usuario')) != f_ago_obtem_hash_validacao_conta_usuario()
  16. AND EXISTS (SELECT 1 FROM sis_parametro_empresa WHERE id_parametro = 'sistema.id_pessoa_empresa' AND valor_numerico IN (NEW.id_pessoa, OLD.id_pessoa))) THEN
  17. RAISE EXCEPTION '[%] Alteração do CNPJ de uma Pessoa vinculada a uma Empresa só pode ser realizada pelo AdaptiveGO.', TG_NAME;
  18. END IF;*/
  19.  
  20. IF ((OLD.situacao <> NEW.situacao) AND (NEW.situacao = 2)) THEN
  21. IF (EXISTS(SELECT 1
  22. FROM public.abastecimento AS a
  23. WHERE id_atendente = OLD.id_pessoa
  24. AND situacao = 1)) THEN
  25. RAISE EXCEPTION '[%] A pessoa não pode ser inativada, pois existem abastecimentos pendentes para a pessoa.', TG_NAME;
  26. END IF;
  27. END IF;
  28.  
  29. IF ((OLD.data_expedicao_rg <> NEW.data_expedicao_rg) AND (NEW.data_expedicao_rg NOT BETWEEN CURRENT_DATE - 730000 AND CURRENT_DATE + 730000)) THEN
  30. RAISE EXCEPTION '[%] A data de expedição do RG é inválida. Favor verificar o cadastro desse campo.', TG_NAME;
  31. END IF;
  32.  
  33. IF ((OLD.nascimento <> NEW.nascimento) AND (NEW.nascimento NOT BETWEEN CURRENT_DATE - 730000 AND CURRENT_DATE + 730000)) THEN
  34. RAISE EXCEPTION '[%] A data de nascimento é inválida. Favor verificar o cadastro desse campo.', TG_NAME;
  35. END IF;
  36.  
  37. IF (OLD.guid_pessoa != NEW.guid_pessoa) THEN
  38. INSERT INTO public.historico_registro_excluido
  39. (id_historico_registro_excluido,
  40. guid,
  41. entidade,
  42. data_exclusao,
  43. versao_registro)
  44. VALUES (NEXTVAL('seq_chave_primaria'),
  45. OLD.guid_pessoa,
  46. 2,
  47. CURRENT_TIMESTAMP,
  48. NEXTVAL('seq_versao_registro'));
  49.  
  50. INSERT INTO public.historico_registro_excluido
  51. (id_historico_registro_excluido,
  52. guid,
  53. entidade,
  54. data_exclusao,
  55. versao_registro)
  56. VALUES (NEXTVAL('seq_chave_primaria'),
  57. OLD.guid_pessoa,
  58. 3,
  59. CURRENT_TIMESTAMP,
  60. NEXTVAL('seq_versao_registro'));
  61. END IF;
  62. IF((OLD.cnpj_cpf != '') AND (OLD.cnpj_cpf != NEW.cnpj_cpf)
  63. AND EXISTS (SELECT 1
  64. FROM public.nota_fiscal_saida AS nfs
  65. WHERE nfs.situacao = 1
  66. AND nfs.id_cliente = OLD.id_pessoa)) THEN
  67. RAISE EXCEPTION '[%] Não é permitido alterar o CNPJ/CPF do cliente pois já existe uma Nota Fiscal Eletrônica emitida para esse cliente.', TG_NAME;
  68. END IF;
  69. END IF;
  70.  
  71. IF (TG_OP = 'INSERT') THEN
  72. IF (NEW.data_expedicao_rg NOT BETWEEN CURRENT_DATE - 730000 AND CURRENT_DATE + 730000) THEN
  73. RAISE EXCEPTION '[%] A data de expedição do RG é inválida. Favor verificar o cadastro desse campo.', TG_NAME;
  74. END IF;
  75.  
  76. IF (NEW.nascimento NOT BETWEEN CURRENT_DATE - 730000 AND CURRENT_DATE + 730000) THEN
  77. RAISE EXCEPTION '[%] A data de nascimento é inválida. Favor verificar o cadastro desse campo.', TG_NAME;
  78. END IF;
  79. END IF;
  80.  
  81. /*
  82. IF (NEW.id_conta_contabil IS NULL AND
  83. (SELECT f_obtem_parametro_alfanumerico('contabilizacao.habilita_criacao_automatica_conta_contabil_pessoa', NULL /*PIdEmpresa*/, NULL /*PIdUsuario*/, 'S') = 'S')) THEN
  84.  
  85. VCodigoContaContabil = (SELECT f_obtem_parametro_inteiro('interno.sequencia_codigo_conta_contabil_pessoa', NULL /*PIdEmpresa*/, NULL /*PIdUsuario*/, 'S')) + 1;
  86.  
  87. WITH sub_conta_contabil AS (
  88. INSERT INTO public.conta_contabil(
  89. id_conta_contabil,
  90. codigo,
  91. codigo_reduzido,
  92. denominacao,
  93. data_inclusao,
  94. natureza,
  95. tipo,
  96. id_conta_contabil_pai,
  97. registro_ativo
  98. )
  99. SELECT NEXTVAL('SEQ_CHAVE_PRIMARIA') AS id_conta_contabil,
  100. VCodigoContaContabil AS codigo,
  101. VCodigoContaContabil AS codigo_reduzido,
  102. NEW.nome AS denominacao,
  103. CLOCK_TIMESTAMP() AS data_inclusao,
  104. 6 /*outras*/ AS natureza,
  105. 2 /*analítica*/ AS tipo,
  106. NULL AS id_conta_contabil_pai,
  107. 'S' AS registro_ativo
  108. RETURNING id_conta_contabil
  109. )
  110. SELECT id_conta_contabil
  111. FROM sub_conta_contabil
  112. INTO VIdContaContabil;
  113.  
  114. NEW.id_conta_contabil = VIdContaContabil;
  115.  
  116. UPDATE public.sis_parametro SET valor_numerico = valor_numerico + 1 WHERE id_parametro = 'interno.sequencia_codigo_conta_contabil_pessoa';
  117. END IF;*/
  118.  
  119. NEW.versao_registro := NEXTVAL('SEQ_VERSAO_REGISTRO');
  120.  
  121. RETURN NEW;
  122. END;
  123. $BODY$;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement