DROP TYPE NATUREZA_GUIARJ_TABLE
/

create or replace TYPE NATUREZA_GUIARJ_TYPE AS
OBJECT (CDNATUREZAREC VARCHAR2(20),
        DSNATUREZAREC VARCHAR2(500),
        CDQUALIFICAO  VARCHAR2(2),
        DSQUALIFICAO  VARCHAR2(500),
        DSRECEITA     VARCHAR2(100))
/


create or replace TYPE NATUREZA_GUIARJ_TABLE AS TABLE OF NATUREZA_GUIARJ_TYPE
/

create or replace FUNCTION RETORNA_NATUREZA_GUIARJ( P_CDRECEITA IN VARCHAR2 )
RETURN NATUREZA_GUIARJ_TABLE PIPELINED
IS
  V_RETURN VARCHAR2(1) := 'S'; /*Apenas retorna se V_RETURN for 'S'. Ver ELSE do CASE abaixo.*/
  OUT_RECORD NATUREZA_GUIARJ_TYPE := NATUREZA_GUIARJ_TYPE ( NULL, NULL, NULL, NULL, NULL);
BEGIN
  OUT_RECORD.DSRECEITA := 'ICMS'; /*Padrao para a maioria*/
  CASE P_CDRECEITA
    /*Operacoes proprias  Apuracao (Debitos/Creditos)  Normal  ICMS*/
    WHEN '0213' THEN OUT_RECORD.CDNATUREZAREC := '1';
                     OUT_RECORD.DSNATUREZAREC := 'Regime de confronto (debitos e creditos)';
                     OUT_RECORD.CDQUALIFICAO  := '1';
                     OUT_RECORD.DSQUALIFICAO  := 'Normal';
    /*Fundo Estadual de Combate a Pobreza - FECP*/
    WHEN '7501' THEN OUT_RECORD.CDNATUREZAREC := '1';
                     OUT_RECORD.DSNATUREZAREC := 'Regime de confronto (debitos e creditos)';
                     OUT_RECORD.CDQUALIFICAO  := '1';
                     OUT_RECORD.DSQUALIFICAO  := 'Normal';
    /*Operacoes proprias  Apuracao (Debitos/Creditos)  Petroleo  ICMS*/
    WHEN '0329' THEN OUT_RECORD.CDNATUREZAREC := '1';
                     OUT_RECORD.DSNATUREZAREC := 'Regime de confronto (debitos e creditos)';
                     OUT_RECORD.CDQUALIFICAO  := '2';
                     OUT_RECORD.DSQUALIFICAO  := 'Petroleo';
    /*Operacoes proprias  Apuracao (Debitos/Creditos)  Energia eletrica  ICMS*/
    WHEN '0337' THEN OUT_RECORD.CDNATUREZAREC := '1';
                     OUT_RECORD.DSNATUREZAREC := 'Regime de confronto (debitos e creditos)';
                     OUT_RECORD.CDQUALIFICAO  := '3';
                     OUT_RECORD.DSQUALIFICAO  := 'Energia Eletrica';
    /*Operacoes proprias  Apuracao (Debitos/Creditos)  Comunicacoes  ICMS*/
    WHEN '0345' THEN OUT_RECORD.CDNATUREZAREC := '1';
                     OUT_RECORD.DSNATUREZAREC := 'Regime de confronto (debitos e creditos)';
                     OUT_RECORD.CDQUALIFICAO  := '4';
                     OUT_RECORD.DSQUALIFICAO  := 'Comunicacoes';
    /*Operacoes proprias  Apuracao (Debitos/Creditos)  Transporte  ICMS*/
    WHEN '0361' THEN OUT_RECORD.CDNATUREZAREC := '1';
                     OUT_RECORD.DSNATUREZAREC := 'Regime de confronto (debitos e creditos)';
                     OUT_RECORD.CDQUALIFICAO  := '5';
                     OUT_RECORD.DSQUALIFICAO  := 'Transporte';
    /*Substituicao Tributaria - ICMS*/
    WHEN '0230' THEN OUT_RECORD.CDNATUREZAREC := '2';
                     OUT_RECORD.DSNATUREZAREC := 'Substituicao tributaria por Operacao propria';
                     out_RECORD.DSRECEITA     := 'ICMS ST';
    /*Diferencial de aliquota  ICMS*/
    WHEN '0272' THEN OUT_RECORD.CDNATUREZAREC := '3';
                     OUT_RECORD.DSNATUREZAREC := 'Diferencial de aliquota';
    /*Importacao  ICMS*/
    WHEN '0248' THEN OUT_RECORD.CDNATUREZAREC := '5';
                     OUT_RECORD.DSNATUREZAREC := 'Importacao';
    /*Importacao  FECP*/
    WHEN '7544' THEN OUT_RECORD.CDNATUREZAREC := '5';
                     OUT_RECORD.DSNATUREZAREC := 'Importacao';
    /*Regime de Estimativa  ICMS*/
    WHEN '0221' THEN OUT_RECORD.CDNATUREZAREC := '6';
                     OUT_RECORD.DSNATUREZAREC := 'Regime de estimativa';
    /*Outras (Fato gerador)  ICMS*/
    WHEN '0370' THEN OUT_RECORD.CDNATUREZAREC := '7';
                     OUT_RECORD.DSNATUREZAREC := 'Outras (Fato Gerador)';
    /*ICMS Consumidor Final nao Contribuinte outra UF por Apuracao (DARJ)*/
    WHEN '0620' THEN OUT_RECORD.CDNATUREZAREC := '56';
                     OUT_RECORD.DSNATUREZAREC := 'ICMS Cons Final nao Contrib. Outra UF por Apuracao';
    /*ICMS Consumidor Final nao Contribuinte outra UF por Apuracao (GNRE)*/
    WHEN '0604' THEN OUT_RECORD.CDNATUREZAREC := '56';
                     OUT_RECORD.DSNATUREZAREC := 'ICMS Cons Final nao Contrib. Outra UF por Apuracao';
    /*ICMS Consumidor Final nao Contribuinte outra UF por Operacao (DARJ)*/
    WHEN '0639' THEN OUT_RECORD.CDNATUREZAREC := '58';
                     OUT_RECORD.DSNATUREZAREC := 'ICMS Cons Final nao Contrib. Outra UF por Operacao';
    /*ICMS Consumidor Final nao Contribuinte outra UF por Operacao (GNRE)*/
    WHEN '0612' THEN OUT_RECORD.CDNATUREZAREC := '58';
                     OUT_RECORD.DSNATUREZAREC := 'ICMS Cons Final nao Contrib. Outra UF por Operacao';
    /*Operacoes Proprias  ICMS Compensado  Normal  ICMS*/
    WHEN '0710' THEN OUT_RECORD.CDNATUREZAREC := '60';
                     OUT_RECORD.DSNATUREZAREC := 'Operacoes Proprias - ICMS Compensado';
    /*Operacoes Proprias  ICMS apos Compensacao  Normal  ICMS*/
    WHEN '0663' THEN OUT_RECORD.CDNATUREZAREC := '60';
                     OUT_RECORD.DSNATUREZAREC := 'Operacoes Proprias - ICMS Compensado';
    /*Operacoes Proprias  ICMS Compensado  Comunicacoes  ICMS*/
    WHEN '0698' THEN OUT_RECORD.CDNATUREZAREC := '60';
                     OUT_RECORD.DSNATUREZAREC := 'Operacoes Proprias - ICMS Compensado';
    /*Operacoes Proprias  ICMS apos Compensacao  Comunicacoes  ICMS*/
    WHEN '0647' THEN OUT_RECORD.CDNATUREZAREC := '60';
                     OUT_RECORD.DSNATUREZAREC := 'Operacoes Proprias - ICMS Compensado';
    /*Operacoes Proprias  ICMS Compensado  Energia Eletrica  ICMS*/
    WHEN '0701' THEN OUT_RECORD.CDNATUREZAREC := '60';
                     OUT_RECORD.DSNATUREZAREC := 'Operacoes Proprias - ICMS Compensado';
    /*Operacoes Proprias  ICMS apos Compensacao  Energia Eletrica  ICMS*/
    WHEN '0655' THEN OUT_RECORD.CDNATUREZAREC := '60';
                     OUT_RECORD.DSNATUREZAREC := 'Operacoes Proprias - ICMS Compensado';
    /*Operacoes Proprias  ICMS Compensado  Transportes  ICMS*/
    WHEN '0736' THEN OUT_RECORD.CDNATUREZAREC := '60';
                     OUT_RECORD.DSNATUREZAREC := 'Operacoes Proprias - ICMS Compensado';
    /*Operacoes Proprias  ICMS apos Compensacao  Transportes  ICMS*/
    WHEN '0680' THEN OUT_RECORD.CDNATUREZAREC := '60';
                     OUT_RECORD.DSNATUREZAREC := 'Operacoes Proprias - ICMS Compensado';
    /*OPERACOES PROPRIAS  ICMS COMPENSADO  PETROLEO E DERIVADOS, COMBUSTIVEIS E LUBRIFICANTES  ICMS*/
    WHEN '0728' THEN OUT_RECORD.CDNATUREZAREC := '60';
                     OUT_RECORD.DSNATUREZAREC := 'Operacoes Proprias - ICMS Compensado';
    /*Operacoes Proprias  ICMS apos Compensacao  Petroleo e Derivados, Combustiveis e Lubrificantes  ICMS*/
    WHEN '0671' THEN OUT_RECORD.CDNATUREZAREC := '60';
                     OUT_RECORD.DSNATUREZAREC := 'Operacoes Proprias - ICMS Compensado';
    /*Fundo Estadual de Equilibrio Fiscal  FEEF*/
    WHEN '0744' THEN OUT_RECORD.CDNATUREZAREC := '61';
                     OUT_RECORD.DSNATUREZAREC := 'Fundo Estadual de Equilibrio Fiscal - FEEF';
    ELSE V_RETURN := 'N'; /*Nao ha cod de receita correspondente, nao retorna registro.*/
  END CASE;
  /*grava registro*/
  IF V_RETURN = 'S' THEN
    PIPE ROW (OUT_RECORD);
  END IF;
END;