Skip to content

Instantly share code, notes, and snippets.

@AndyDaSilva52
Last active June 14, 2019 16:34
Show Gist options
  • Save AndyDaSilva52/60e2835780fbf5b21ae822a05247b7e9 to your computer and use it in GitHub Desktop.
Save AndyDaSilva52/60e2835780fbf5b21ae822a05247b7e9 to your computer and use it in GitHub Desktop.
#MegaERP - Gerenciamento de NFe - Utilidade para tratar alguns pontos não padrões no erp. Ex: Gravar ocorrência para quando é realizado Manifestação de Operação / Impedir alterar o status do Registro quando o Download do XML não for sido concluído.
create or replace TRIGGER MGCLI."T_CLI_EST_RECEBNFE_MANIF"
BEFORE UPDATE OF RCNF_ST_STATUSMANIFESTACAO, RCNF_ST_STATUSIMPORTA
ON MGADM.EST_RECEBIMENTONFE
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
BEGIN
/**
Status Arquivo NF-e
Indica o status da importação do arquivo NF-e
P;Pendente
A;Aviso de Recebimento
R;Recebimento
C;Recusado
I;Inválido
E;Download pendente
D;Download efetuado
O;Empreiteiros
*/
/**
Status Manifestação
Status da Manifestação do Recebimento NF-e
N;Nenhuma Operação Realizada
C;Confirmação da Operação
R;Operação não Realizada
D;Desconhecimento da Operação
I;Ciência da Operação
*/
IF (:NEW.RCNF_ST_STATUSMANIFESTACAO IN ('C')) THEN
-- FORK - Incluir ocorrência da Manifestação
MGADM.ADM_PCK_NFE.P_GeraOcorrencia(
MGGLO.GLO_PCK_CONTEXTO.F_GETVARIAVEL('vUSU_IN_CODIGO'),
MGGLO.GLO_PCK_CONTEXTO.F_GETVARIAVEL('vCOMP_ST_NOME'),
'',
'Evento de Confirmação da Operação enviado.',
:NEW.RCNF_ST_CHAVEXML || '.xml',
'NF-e',
:NEW.RCNF_IN_SEQUENCIAL ,
'');
ELSIF (:NEW.RCNF_ST_STATUSMANIFESTACAO IN ('R')) THEN
MGADM.ADM_PCK_NFE.P_GeraOcorrencia(
MGGLO.GLO_PCK_CONTEXTO.F_GETVARIAVEL('vUSU_IN_CODIGO'),
MGGLO.GLO_PCK_CONTEXTO.F_GETVARIAVEL('vCOMP_ST_NOME'),
'',
'Evento de Operação não Realizada enviado.',
:NEW.RCNF_ST_CHAVEXML || '.xml',
'NF-e',
:NEW.RCNF_IN_SEQUENCIAL ,
'');
ELSIF (:NEW.RCNF_ST_STATUSMANIFESTACAO IN ('D')) THEN
MGADM.ADM_PCK_NFE.P_GeraOcorrencia(
MGGLO.GLO_PCK_CONTEXTO.F_GETVARIAVEL('vUSU_IN_CODIGO'),
MGGLO.GLO_PCK_CONTEXTO.F_GETVARIAVEL('vCOMP_ST_NOME'),
'',
'Evento de Desconhecimento da Operação enviado.',
:NEW.RCNF_ST_CHAVEXML || '.xml',
'NF-e',
:NEW.RCNF_IN_SEQUENCIAL ,
'');
END IF;
/**
Para quando registro estiver com AGUARDANDO, não pode ser alterado para Aviso ou Recebimento.
Indica que é necessário o Download ainda.
*/
IF (
:OLD.RCNF_ST_STATUSIMPORTA IN ('E', 'I', 'D')
AND :NEW.RCNF_ST_NOMERAZAO LIKE '%AGUARDANDO LIB%'
AND :NEW.RCNF_ST_STATUSIMPORTA IN ('R', 'A')
) THEN
MGADM.ADM_PCK_NFE.P_GeraOcorrencia(
MGGLO.GLO_PCK_CONTEXTO.F_GETVARIAVEL('vUSU_IN_CODIGO'),
MGGLO.GLO_PCK_CONTEXTO.F_GETVARIAVEL('vCOMP_ST_NOME'),
'',
'Status do Registro não pode ser atualizado de ['|| :OLD.RCNF_ST_STATUSIMPORTA ||'] para ['|| :NEW.RCNF_ST_STATUSIMPORTA ||'], pois o mesmo não se encontra P-Pendente.',
:NEW.RCNF_ST_CHAVEXML || '.xml',
'NF-e - Status do Registro',
:NEW.RCNF_IN_SEQUENCIAL ,
'');
:NEW.RCNF_ST_STATUSIMPORTA := :OLD.RCNF_ST_STATUSIMPORTA;
END IF;
/**
Data: 29/12/2017
Para quando registro já ter sido efetuado alguam Manifestaçao do Destinatário, diferente de:
N;Nenhuma Operação Realizada
I;Ciência da Operação
Nao permitir alterar o status do registro.
*/
IF (
:OLD.RCNF_ST_STATUSMANIFESTACAO IN ('R', 'D') -- 'C' -- Removido para permitir alterar registro que já tenha confirmação de operação.
AND :NEW.RCNF_ST_STATUSIMPORTA IN ('E', 'D') -- 'P' - Removido para permitir excluir nota fiscal
) THEN
MGADM.ADM_PCK_NFE.P_GeraOcorrencia(
MGGLO.GLO_PCK_CONTEXTO.F_GETVARIAVEL('vUSU_IN_CODIGO'),
MGGLO.GLO_PCK_CONTEXTO.F_GETVARIAVEL('vCOMP_ST_NOME'),
'',
'"Status" não pode ser alterado de ['|| :OLD.RCNF_ST_STATUSIMPORTA ||'] para ['|| :NEW.RCNF_ST_STATUSIMPORTA ||'], pois o mesmo já foi Manifestado['|| :OLD.RCNF_ST_STATUSMANIFESTACAO ||'], não sendo permitido para os seguintes: C;Confirmação da Operação/R;Operação não Realizada/D;Desconhecimento da Operação.',
:NEW.RCNF_ST_CHAVEXML || '.xml',
'NF-e - Status do Registro [MGCLI.T_CLI_EST_RECEBNFE_MANIF]',
:NEW.RCNF_IN_SEQUENCIAL ,
'');
:NEW.RCNF_ST_STATUSIMPORTA := :OLD.RCNF_ST_STATUSIMPORTA;
END IF;
IF (
:OLD.RCNF_ST_STATUSIMPORTA IN ('R', 'A')
AND
:NEW.RCNF_ST_STATUSIMPORTA IN ('P')
) THEN
MGADM.ADM_PCK_NFE.P_GeraOcorrencia(
MGGLO.GLO_PCK_CONTEXTO.F_GETVARIAVEL('vUSU_IN_CODIGO'),
MGGLO.GLO_PCK_CONTEXTO.F_GETVARIAVEL('vCOMP_ST_NOME'),
'',
'Status alterado de ['|| :OLD.RCNF_ST_STATUSIMPORTA ||'] para ['|| :NEW.RCNF_ST_STATUSIMPORTA ||'].',
:NEW.RCNF_ST_CHAVEXML || '.xml',
'NF-e - Status do Registro [MGCLI.T_CLI_EST_RECEBNFE_MANIF]',
:NEW.RCNF_IN_SEQUENCIAL ,
'');
END IF;
END;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment