Last active
June 14, 2019 16:34
-
-
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.
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 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