Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save AndyDaSilva52/b1e0667e4c03d1ad58b280c2270df8ff to your computer and use it in GitHub Desktop.
Save AndyDaSilva52/b1e0667e4c03d1ad58b280c2270df8ff to your computer and use it in GitHub Desktop.
#MegaERP - Materiais - Gerenciamento NFe - Atualizar dados dos registros nao baixados no Gerenciador de NFe com informacoes da Chave para identificar
create or replace PROCEDURE P_EST_RECEBNFE_AGUARDANDO AS
vAGN_IN_CODIGO MGADM.EST_RECEBIMENTONFE.AGN_IN_CODIGO%TYPE;
vHOST_NAME VARCHAR(250);
BEGIN
/**
AGS - 14/05/2017 -
Atualizar dados dos registros não baixados no Gerenciador de NFe com informações da Chave para identificar:
Nota Fiscal / Série / Modelo
Agente (CNPJ / UF)
*/
FOR cNF IN (
SELECT
R.RCNF_IN_SEQUENCIAL
, R.RCNF_ST_CHAVEXML
, SUBSTR(R.RCNF_ST_CHAVEXML, 0,2) cUF
, SUBSTR(R.RCNF_ST_CHAVEXML, 3,4) AAMM
, SUBSTR(R.RCNF_ST_CHAVEXML, 7,14) CNPJ
, SUBSTR(R.RCNF_ST_CHAVEXML, 21,2) modelo
, SUBSTR(R.RCNF_ST_CHAVEXML, 23,3) serie
, SUBSTR(R.RCNF_ST_CHAVEXML, 26,9) nNF
, SUBSTR(R.RCNF_ST_CHAVEXML, 35,1) tpEmis
, SUBSTR(R.RCNF_ST_CHAVEXML, 36,8) cNF
, SUBSTR(R.RCNF_ST_CHAVEXML, 44,1) DV
--, R.*
FROM MGADM.EST_RECEBIMENTONFE R
left join MGADM.EST_CABECRECEBXML C
on C.RCNF_IN_SEQUENCIAL = R.RCNF_IN_SEQUENCIAL
WHERE
(C.CAB_ST_XNOMEEMIT LIKE '%AGUARDANDO%' -- RCNF_ST_NOMERAZAO
OR
(C.CAB_ST_XNOMEEMIT IS NULL AND (C.CAB_IN_SERIE IS NULL OR C.MOD_ST_MODELO IS NULL))
)
AND (
R.RCB_DT_INCLUSAO <= (SYSDATE - (20))
OR
R.RCNF_ST_STATUSIMPORTA = 'R'
)
AND R.RCNF_IN_SEQUENCIAL IN (
SELECT T.RCNF_IN_SEQUENCIAL FROM MGADM.EST_OCORRECEBNFE T WHERE T.ORNF_ST_DESCRICAO LIKE '%[650] Rejeicao: Evento de Ciencia da Operacao para NFe cancelada ou denegada%'
--Erro no processo de manifestação: [650] Rejeicao: Evento de Ciencia da Operacao para NFe cancelada ou denegada
)
) LOOP
BEGIN
BEGIN
SELECT
A.AGN_IN_CODIGO
INTO vAGN_IN_CODIGO
FROM MGGLO.GLO_AGENTES A
WHERE TRIM(REGEXP_REPLACE(A.AGN_ST_CGC, '[^0-9]', '')) = TRIM(REGEXP_REPLACE(cNF.CNPJ, '[^0-9]', ''))
AND A.AGN_IN_CODIGO NOT IN (2,12,22,32)
;
EXCEPTION
WHEN NO_DATA_FOUND THEN
vAGN_IN_CODIGO := NULL;
DBMS_OUTPUT.PUT_LINE('CNPJ: ' || cNF.CNPJ);
mgcli.p_mail_log_generico(2,'P_EST_RECEBNFE_AGUARDANDO', 'CNPJ ['||cNF.CNPJ||'] não tem Cadastro');
WHEN TOO_MANY_ROWS THEN
RAISE_APPLICATION_ERROR(-20101, 'CNPJ com mais de um registro: ' || cNF.CNPJ);
END;
IF (vAGN_IN_CODIGO IS NOT NULL) THEN
UPDATE MGADM.EST_RECEBIMENTONFE R
SET
R.RCB_ST_NOTA = TO_NUMBER(cNF.nNF)
, R.UF_ST_SIGLA = (
SELECT U.UF_ST_SIGLA FROM MGGLO.GLO_UF U WHERE U.UF_IN_CODIGO = cNF.cUF
)
, R.AGN_IN_CODIGO = CASE WHEN vAGN_IN_CODIGO IS NULL THEN R.AGN_IN_CODIGO ELSE vAGN_IN_CODIGO END
--, R.RCNF_ST_STATUSIMPORTA = 'P' -- P;Pendente
WHERE R.RCNF_IN_SEQUENCIAL = cNF.RCNF_IN_SEQUENCIAL;
UPDATE MGADM.EST_CABECRECEBXML C
SET
C.CAB_ST_XNOMEEMIT = SUBSTR(CASE WHEN vAGN_IN_CODIGO IS NULL THEN C.CAB_ST_XNOMEEMIT ELSE (SELECT T.AGN_ST_NOME FROM MGGLO.GLO_AGENTES T WHERE T.AGN_IN_CODIGO = vAGN_IN_CODIGO) END, 0,60)
, C.CAB_ST_XFANTEMIT = SUBSTR(CASE WHEN vAGN_IN_CODIGO IS NULL THEN C.CAB_ST_XFANTEMIT ELSE (SELECT T.AGN_ST_FANTASIA FROM MGGLO.GLO_AGENTES T WHERE T.AGN_IN_CODIGO = vAGN_IN_CODIGO) END,0,60)
, C.CAB_ST_CNPJEMIT = TO_CHAR(cNF.CNPJ) -- RCNF_ST_CNPJEMITENTE
, C.CAB_IN_SERIE = TO_NUMBER(cNF.serie)--RCNF_IN_SERIE
, C.MOD_ST_MODELO = TO_CHAR(cNF.modelo)--RCNF_ST_MODELO
, C.CAB_ST_CUFEMIT = TO_NUMBER(cNF.cUF) --RCNF_IN_UFEMITENTE
WHERE C.RCNF_IN_SEQUENCIAL = cNF.RCNF_IN_SEQUENCIAL;
SELECT host_name
INTO vHOST_NAME
FROM v$instance;
MGADM.ADM_PCK_NFE.P_SetOcorrencias(
cNF.RCNF_IN_SEQUENCIAL ,
1,--MGGLO.GLO_PCK_CONTEXTO.F_GETVARIAVEL('vUSU_IN_CODIGO'),
vHOST_NAME,--'[MGCLI.P_EST_RECEBNFE_AGUARDANDO]',--MGGLO.GLO_PCK_CONTEXTO.F_GETVARIAVEL('vCOMP_ST_NOME'),
NULL,--pTipoNota
'',
'Já que não teve seu Download realizado, o registro foi atualizado por customização a partir das informações de Número de Nota/Série/Modelo/CNPJ Emitente/UF Emitente disponíveis na Chave de Acesso.',
NULL,--pCodRejeicaoOcor
NULL,--pDuplicaOcorrencia
cNF.RCNF_ST_CHAVEXML || '.xml',
'Customização [MGCLI.P_EST_RECEBNFE_AGUARDANDO]',
''
);
END IF;
END;
END LOOP;
END P_EST_RECEBNFE_AGUARDANDO;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment