Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE or replace FUNCTION public.f_pessoa_tbiu()
- RETURNS trigger
- LANGUAGE 'plpgsql'
- COST 100
- VOLATILE NOT LEAKPROOF
- AS $BODY$
- DECLARE
- VIdContaContabil INTEGER;
- VCodigoContaContabil TEXT;
- BEGIN
- IF (TG_OP = 'UPDATE') THEN
- /*IF (f_obtem_parametro_alfanumerico('interno.base_integrada_adaptivego', 1, 0, 'S') = 'S'
- AND (OLD.cnpj_cpf != NEW.cnpj_cpf)
- AND MD5(CURRENT_SETTING('petros.conta_usuario')) != f_ago_obtem_hash_validacao_conta_usuario()
- 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
- RAISE EXCEPTION '[%] Alteração do CNPJ de uma Pessoa vinculada a uma Empresa só pode ser realizada pelo AdaptiveGO.', TG_NAME;
- END IF;*/
- IF ((OLD.situacao <> NEW.situacao) AND (NEW.situacao = 2)) THEN
- IF (EXISTS(SELECT 1
- FROM public.abastecimento AS a
- WHERE id_atendente = OLD.id_pessoa
- AND situacao = 1)) THEN
- RAISE EXCEPTION '[%] A pessoa não pode ser inativada, pois existem abastecimentos pendentes para a pessoa.', TG_NAME;
- END IF;
- END IF;
- IF ((OLD.data_expedicao_rg <> NEW.data_expedicao_rg) AND (NEW.data_expedicao_rg NOT BETWEEN CURRENT_DATE - 730000 AND CURRENT_DATE + 730000)) THEN
- RAISE EXCEPTION '[%] A data de expedição do RG é inválida. Favor verificar o cadastro desse campo.', TG_NAME;
- END IF;
- IF ((OLD.nascimento <> NEW.nascimento) AND (NEW.nascimento NOT BETWEEN CURRENT_DATE - 730000 AND CURRENT_DATE + 730000)) THEN
- RAISE EXCEPTION '[%] A data de nascimento é inválida. Favor verificar o cadastro desse campo.', TG_NAME;
- END IF;
- IF (OLD.guid_pessoa != NEW.guid_pessoa) THEN
- INSERT INTO public.historico_registro_excluido
- (id_historico_registro_excluido,
- guid,
- entidade,
- data_exclusao,
- versao_registro)
- VALUES (NEXTVAL('seq_chave_primaria'),
- OLD.guid_pessoa,
- 2,
- CURRENT_TIMESTAMP,
- NEXTVAL('seq_versao_registro'));
- INSERT INTO public.historico_registro_excluido
- (id_historico_registro_excluido,
- guid,
- entidade,
- data_exclusao,
- versao_registro)
- VALUES (NEXTVAL('seq_chave_primaria'),
- OLD.guid_pessoa,
- 3,
- CURRENT_TIMESTAMP,
- NEXTVAL('seq_versao_registro'));
- END IF;
- IF((OLD.cnpj_cpf != '') AND (OLD.cnpj_cpf != NEW.cnpj_cpf)
- AND EXISTS (SELECT 1
- FROM public.nota_fiscal_saida AS nfs
- WHERE nfs.situacao = 1
- AND nfs.id_cliente = OLD.id_pessoa)) THEN
- 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;
- END IF;
- END IF;
- IF (TG_OP = 'INSERT') THEN
- IF (NEW.data_expedicao_rg NOT BETWEEN CURRENT_DATE - 730000 AND CURRENT_DATE + 730000) THEN
- RAISE EXCEPTION '[%] A data de expedição do RG é inválida. Favor verificar o cadastro desse campo.', TG_NAME;
- END IF;
- IF (NEW.nascimento NOT BETWEEN CURRENT_DATE - 730000 AND CURRENT_DATE + 730000) THEN
- RAISE EXCEPTION '[%] A data de nascimento é inválida. Favor verificar o cadastro desse campo.', TG_NAME;
- END IF;
- END IF;
- /*
- IF (NEW.id_conta_contabil IS NULL AND
- (SELECT f_obtem_parametro_alfanumerico('contabilizacao.habilita_criacao_automatica_conta_contabil_pessoa', NULL /*PIdEmpresa*/, NULL /*PIdUsuario*/, 'S') = 'S')) THEN
- VCodigoContaContabil = (SELECT f_obtem_parametro_inteiro('interno.sequencia_codigo_conta_contabil_pessoa', NULL /*PIdEmpresa*/, NULL /*PIdUsuario*/, 'S')) + 1;
- WITH sub_conta_contabil AS (
- INSERT INTO public.conta_contabil(
- id_conta_contabil,
- codigo,
- codigo_reduzido,
- denominacao,
- data_inclusao,
- natureza,
- tipo,
- id_conta_contabil_pai,
- registro_ativo
- )
- SELECT NEXTVAL('SEQ_CHAVE_PRIMARIA') AS id_conta_contabil,
- VCodigoContaContabil AS codigo,
- VCodigoContaContabil AS codigo_reduzido,
- NEW.nome AS denominacao,
- CLOCK_TIMESTAMP() AS data_inclusao,
- 6 /*outras*/ AS natureza,
- 2 /*analítica*/ AS tipo,
- NULL AS id_conta_contabil_pai,
- 'S' AS registro_ativo
- RETURNING id_conta_contabil
- )
- SELECT id_conta_contabil
- FROM sub_conta_contabil
- INTO VIdContaContabil;
- NEW.id_conta_contabil = VIdContaContabil;
- UPDATE public.sis_parametro SET valor_numerico = valor_numerico + 1 WHERE id_parametro = 'interno.sequencia_codigo_conta_contabil_pessoa';
- END IF;*/
- NEW.versao_registro := NEXTVAL('SEQ_VERSAO_REGISTRO');
- RETURN NEW;
- END;
- $BODY$;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement