Selecionar tudo
CREATE OR REPLACE PROCEDURE SP_LE_ARQUIVO_CARTA_QUITACAO(
P_NOME_ARQ IN VARCHAR2
)
AS
V_FILE_HANDLE_R UTL_FILE.FILE_TYPE;
V_PATH VARCHAR2(50);
V_REG VARCHAR2(800);
V_NR_GERAL NUMBER(1);
---------------------------VARIÁVEIS DO HEADER------------------------------
V_NR_REGISTRO_H CARTA_QUITACAO_HEADER.NR_REGISTRO%TYPE;
V_NR_SEQUENCIA_REGISTRO_H CARTA_QUITACAO_HEADER.NR_SEQUENCIA_REGISTRO%TYPE;
V_DT_PROCESSAMENTO_H CARTA_QUITACAO_HEADER.DT_PROCESSAMENTO%TYPE;
V_NR_SEQUENCIA_ARQUIVO_H CARTA_QUITACAO_HEADER.NR_SEQUENCIA_ARQUIVO%TYPE;
V_CD_PROGRAMA_H CARTA_QUITACAO_HEADER.CD_PROGRAMA%TYPE;
V_CD_EMPRESA_H CARTA_QUITACAO_HEADER.CD_EMPRESA%TYPE;
V_NR_ANO_QUITACAO_H CARTA_QUITACAO_HEADER.NR_ANO_QUITACAO%TYPE;
V_FL_PROCESSADO_H CARTA_QUITACAO_HEADER.FL_PROCESSADO%TYPE;
---------------------------VARIÁVEIS DO DETAIL---------------------------------
V_ID_CARTA_QUITACAO_HEADER_D NUMBER(10);
V_NR_REGISTRO_D CARTA_QUITACAO.NR_REGISTRO%TYPE;
V_NR_SEQUENCIA_REGISTRO_D CARTA_QUITACAO.NR_SEQUENCIA_REGISTRO%TYPE;
V_NR_PRODUTO_D CARTA_QUITACAO.NR_PRODUTO%TYPE;
V_NR_CPFCNPJ_D CARTA_QUITACAO.NR_CPFCNPJ%TYPE;
V_TP_CLIENTE_D CARTA_QUITACAO.TP_CLIENTE%TYPE;
V_NR_CONTRATO_D CARTA_QUITACAO.NR_CONTRATO%TYPE;
V_NM_NOME_D CARTA_QUITACAO.NM_NOME%TYPE;
V_NM_RUA_D CARTA_QUITACAO.NM_RUA%TYPE;
V_DS_NUMERO_D CARTA_QUITACAO.DS_NUMERO%TYPE;
V_DS_COMPLEMENTO_D CARTA_QUITACAO.DS_COMPLEMENTO%TYPE;
V_DS_BAIRRO_D CARTA_QUITACAO.DS_BAIRRO%TYPE;
V_DS_CIDADE_D CARTA_QUITACAO.DS_CIDADE%TYPE;
V_CD_ESTADO_D CARTA_QUITACAO.CD_ESTADO%TYPE;
V_NR_CEP_D CARTA_QUITACAO.NR_CEP%TYPE;
V_NR_DIG_CEP_D CARTA_QUITACAO.NR_DIG_CEP%TYPE;
V_TP_RETOMADO_D CARTA_QUITACAO.TP_RETOMADO%TYPE;
V_NR_GRUPO_D CARTA_QUITACAO.NR_GRUPO%TYPE;
V_NR_QUOTA_D CARTA_QUITACAO.NR_QUOTA%TYPE;
V_NR_SUBST_D CARTA_QUITACAO.NR_SUBST%TYPE;
V_NR_DIGITO_D CARTA_QUITACAO.NR_DIGITO%TYPE;
V_VL_VALOR_D CARTA_QUITACAO.VL_VALOR%TYPE;
---------------------------VARIÁVEIS DO TRAILLER------------------------------
V_ID_CARTA_QUITACAO_HEADER_T NUMBER(10);
V_NR_REGISTRO_T CARTA_QUITACAO_TRAILER.NR_REGISTRO%TYPE;
V_NR_SEQUENCIA_REGISTRO_T CARTA_QUITACAO_TRAILER.NR_SEQUENCIA_REGISTRO%TYPE;
V_QT_REGISTRO_T CARTA_QUITACAO_TRAILER.QT_REGISTRO%TYPE;
V_VL_VALOR_T CARTA_QUITACAO_TRAILER.VL_VALOR%TYPE;
BEGIN
BEGIN
V_PATH := FN_UTLFILE('LIQUIDACAO');
V_FILE_HANDLE_R := UTL_FILE.FOPEN (V_PATH, P_NOME_ARQ, 'R');
EXCEPTION
WHEN UTL_FILE.INVALID_PATH THEN
RAISE_APPLICATION_ERROR(-20001,SQLERRM);
WHEN UTL_FILE.INVALID_MODE THEN
RAISE_APPLICATION_ERROR(-20003,SQLERRM);
END;
BEGIN
LOOP
V_NR_REGISTRO_H := NULL;
V_NR_SEQUENCIA_REGISTRO_H := NULL;
V_DT_PROCESSAMENTO_H := NULL;
V_NR_SEQUENCIA_ARQUIVO_H := NULL;
V_CD_PROGRAMA_H := NULL;
V_CD_EMPRESA_H := NULL;
V_NR_ANO_QUITACAO_H := NULL;
V_FL_PROCESSADO_H := 'N';
V_NR_REGISTRO_D := NULL;
V_NR_SEQUENCIA_REGISTRO_D := NULL;
V_NR_PRODUTO_D := NULL;
V_NR_CPFCNPJ_D := NULL;
V_TP_CLIENTE_D := NULL;
V_NR_CONTRATO_D := NULL;
V_NM_NOME_D := NULL;
V_NM_RUA_D := NULL;
V_DS_NUMERO_D := NULL;
V_DS_COMPLEMENTO_D := NULL;
V_DS_BAIRRO_D := NULL;
V_DS_CIDADE_D := NULL;
V_CD_ESTADO_D := NULL;
V_NR_CEP_D := NULL;
V_NR_DIG_CEP_D := NULL;
V_TP_RETOMADO_D := NULL;
V_NR_GRUPO_D := NULL;
V_NR_QUOTA_D := NULL;
V_NR_SUBST_D := NULL;
V_NR_DIGITO_D := NULL;
V_VL_VALOR_D := NULL;
V_NR_REGISTRO_T := NULL;
V_NR_SEQUENCIA_REGISTRO_T := NULL;
V_QT_REGISTRO_T := NULL;
V_VL_VALOR_T := NULL;
BEGIN
UTL_FILE.GET_LINE (V_FILE_HANDLE_R, V_REG);
V_NR_GERAL := TO_NUMBER(SUBSTR(V_REG,1,1));
IF V_NR_GERAL = 0 THEN
BEGIN
V_NR_SEQUENCIA_REGISTRO_H := NVL(TO_NUMBER(SUBSTR(V_REG,2,7)),0);
V_DT_PROCESSAMENTO_H := TO_DATE(SUBSTR(V_REG, 9, 10), 'DD/MM/YYYY');
V_NR_SEQUENCIA_ARQUIVO_H := TO_NUMBER(SUBSTR(V_REG, 19, 7));
V_CD_PROGRAMA_H := SUBSTR(V_REG, 26, 6);
V_CD_EMPRESA_H := SUBSTR(V_REG, 32, 60);
V_NR_ANO_QUITACAO_H := NVL(TO_NUMBER(SUBSTR(V_REG, 92, 4)),0);
PKG_CARTA_QUITACAO_HEADER.SP_CARTA_QUITACAO_HEADER(
V_NR_GERAL,
V_NR_SEQUENCIA_REGISTRO_H,
V_DT_PROCESSAMENTO_H,
V_NR_SEQUENCIA_ARQUIVO_H,
V_CD_PROGRAMA_H,
V_CD_EMPRESA_H,
V_NR_ANO_QUITACAO_H,
V_FL_PROCESSADO_H
);
--PKG_CARTA_QUITACAO_HEADER.SP_CARTA_QUITACAO_HEADER_UPDATE;
END;
ELSIF V_NR_GERAL = 1 THEN
BEGIN
SELECT SEQ_CARTA_QUITACAO_HEADER.CURRVAL INTO V_ID_CARTA_QUITACAO_HEADER_D FROM DUAL;
V_NR_SEQUENCIA_REGISTRO_D := SUBSTR(V_REG, 2, 7);
V_NR_PRODUTO_D := SUBSTR(V_REG,9, 3);
V_NR_CPFCNPJ_D := NVL(SUBSTR(V_REG, 12, 15),0);
V_TP_CLIENTE_D := SUBSTR(V_REG, 27, 1);
V_NR_CONTRATO_D := NVL(SUBSTR(V_REG, 28, 10),0);
V_NM_NOME_D := SUBSTR(V_REG, 38, 60);
V_NM_RUA_D := SUBSTR(V_REG, 98, 60);
V_DS_NUMERO_D := SUBSTR(V_REG, 158, 11);
V_DS_COMPLEMENTO_D := SUBSTR(V_REG, 169, 40);
V_DS_BAIRRO_D := SUBSTR(V_REG, 209, 40);
V_DS_CIDADE_D := SUBSTR(V_REG, 249, 40);
V_CD_ESTADO_D := SUBSTR(V_REG, 289, 2);
V_NR_CEP_D := NVL(SUBSTR(V_REG, 291, 5),0);
V_NR_DIG_CEP_D := NVL(SUBSTR(V_REG, 296, 3),0);
V_TP_RETOMADO_D := SUBSTR(V_REG, 299, 1);
V_NR_GRUPO_D := NVL(SUBSTR(V_REG, 300, 5),0);
V_NR_QUOTA_D := NVL(SUBSTR(V_REG, 305, 3),0);
V_NR_SUBST_D := NVL(SUBSTR(V_REG, 308, 1),0);
V_NR_DIGITO_D := NVL(SUBSTR(V_REG, 309, 1),0);
V_VL_VALOR_D := NVL(SUBSTR(V_REG, 310, 13),0);
PKG_CARTA_QUITACAO.SP_CARTA_QUITACAO(
V_ID_CARTA_QUITACAO_HEADER_D,
V_NR_GERAL,
V_NR_SEQUENCIA_REGISTRO_D,
V_NR_PRODUTO_D,
V_NR_CPFCNPJ_D,
V_TP_CLIENTE_D,
V_NR_CONTRATO_D,
V_NM_NOME_D,
V_NM_RUA_D,
V_DS_NUMERO_D,
V_DS_COMPLEMENTO_D,
V_DS_BAIRRO_D,
V_DS_CIDADE_D,
V_CD_ESTADO_D,
V_NR_CEP_D,
V_NR_DIG_CEP_D,
V_TP_RETOMADO_D,
V_NR_GRUPO_D,
V_NR_QUOTA_D,
V_NR_SUBST_D,
V_NR_DIGITO_D,
V_VL_VALOR_D);
END;
ELSIF V_NR_GERAL = 9 THEN
BEGIN
SELECT SEQ_CARTA_QUITACAO_HEADER.CURRVAL INTO V_ID_CARTA_QUITACAO_HEADER_T FROM DUAL;
V_NR_SEQUENCIA_REGISTRO_T := TO_NUMBER(SUBSTR(V_REG, 2, 7));
V_QT_REGISTRO_T := NVL(SUBSTR(V_REG, 9, 7),0);
V_VL_VALOR_T := TO_NUMBER(SUBSTR(V_REG, 16, 13));
PCK_CARTA_QUITACAO_TRAILER.SP_CARTA_QUITACAO_TRAILER(
V_ID_CARTA_QUITACAO_HEADER_T,
V_NR_GERAL,
V_NR_SEQUENCIA_REGISTRO_T,
V_QT_REGISTRO_T,
V_VL_VALOR_T
);
END;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
UTL_FILE.FCLOSE(V_FILE_HANDLE_R);
END;
END LOOP;
UTL_FILE.FCLOSE_ALL;
END;
END;
/