Last active
November 16, 2020 18:47
-
-
Save AndyDaSilva52/202d8a1e6c2283147353d4b83db59642 to your computer and use it in GitHub Desktop.
#MegaERP - Trigger para não permitir lançar Nota Fiscal que está Cancelada ou que teve Manifesto de Operação Não Realizada no Gerenciamento de NFe #Mega
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
create or replace TRIGGER T_CLI_EST_RECEB_NFE_CANCELADA | |
BEFORE INSERT OR UPDATE ON MGADM.EST_RECEBIMENTO | |
REFERENCING OLD AS OLD NEW AS NEW | |
FOR EACH ROW | |
WHEN (NEW.RCB_ST_CHAVEACESSO IS NOT NULL AND SUBSTR(NEW.RCB_ST_CHAVEACESSO,21,2) IN ('55', '65')) | |
DECLARE | |
vORIGEM VARCHAR2(200) := '[MGCLI.T_CLI_EST_RECEB_NFE_CANCELADA]'; | |
--N;Nenhuma Operação Realizada | |
cStatManCienciaOp constant char(1) := 'I'; -- I;Ciência da Operação | |
cStatManConfirmaOp constant char(1) := 'C'; -- C;Confirmação da Operação | |
cStatManOpNaoRealizada constant char(1) := 'R'; -- R;Operação não Realizada | |
cStatManDesconhecimentoOp constant char(1) := 'D'; -- D;Desconhecimento da Operação | |
TYPE TAB_DescManifesto IS TABLE OF VARCHAR2(50) | |
INDEX BY VARCHAR2(1); | |
aDescMan TAB_DescManifesto; | |
BEGIN | |
aDescMan(cStatManCienciaOp) := 'Ciência da Operação'; | |
aDescMan(cStatManConfirmaOp) := 'Confirmação da Operação'; | |
aDescMan(cStatManOpNaoRealizada) := 'Operação não Realizada'; | |
aDescMan(cStatManDesconhecimentoOp) := 'Desconhecimento da Operação'; | |
FOR cR IN ( | |
SELECT | |
CASE | |
WHEN NVL((SELECT 'S' FROM MGADM.EST_OCORRECEBNFE E | |
WHERE r.RCNF_IN_SEQUENCIAL = e.RCNF_IN_SEQUENCIAL | |
AND (UPPER(e.ORNF_ST_DESCRICAO) LIKE '%[650]%' OR | |
UPPER(e.ORNF_ST_DESCRICAO) LIKE '%[653]%' OR | |
UPPER(e.ORNF_ST_DESCRICAO) LIKE '%[654]%' OR | |
UPPER(e.ORNF_ST_DESCRICAO) LIKE '%CANCELAMENTO DE NF-E HOMOLOGADO%') | |
AND ROWNUM = 1), 'N') = 'S' | |
/** Status do Documento na Sefaz N;Não Autorizada A;Autorizada C;Cancelada I;Inutilizada D;Denegada */ | |
OR NVL(R.RCNF_CH_STATUSSEFAZ,'A') IN ('C', 'D', 'I') | |
THEN 'S' ELSE 'N' | |
END RCNF_BO_CANCELADA | |
, R.RCNF_CH_STATUSSEFAZ | |
, R.RCNF_ST_STATUSMANIFESTACAO | |
, R.RCNF_IN_SEQUENCIAL | |
, R.RCNF_ST_CHAVEXML RCB_ST_CHAVEACESSO | |
FROM MGADM.EST_RECEBIMENTONFE R | |
WHERE R.RCNF_ST_CHAVEXML = :NEW.RCB_ST_CHAVEACESSO | |
) LOOP | |
IF (cR.RCNF_BO_CANCELADA = 'S') THEN | |
RAISE_APPLICATION_ERROR(-20101, | |
vORIGEM ||CHR(13) || CHR(13) | |
|| 'Nota Fiscal com Chave' | |
|| CHR(13) | |
|| '[' || cR.RCB_ST_CHAVEACESSO ||']' | |
|| CHR(13) | |
||' está Cancelada no Gerenciamento de NFe. Favor confirmar com Fiscal e em caso de dúvida entre em contato com o Suporte.'); | |
END IF; | |
IF (cR.RCNF_ST_STATUSMANIFESTACAO = 'R' OR cR.RCNF_ST_STATUSMANIFESTACAO = 'D') THEN | |
RAISE_APPLICATION_ERROR(-20101, | |
vORIGEM ||CHR(13) || CHR(13) | |
|| 'Nota Fiscal com Chave ' | |
|| CHR(13) | |
|| '['|| cR.RCB_ST_CHAVEACESSO ||'] ' | |
|| CHR(13) | |
|| 'tem Status Manifestação [' || aDescMan(cR.RCNF_ST_STATUSMANIFESTACAO) | |
|| '] no Gerenciamento de NFe. Favor confirmar com Fiscal e em caso de dúvida entre em contato com o Suporte.'); | |
END IF; | |
END LOOP; | |
END; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment