create or replace FUNCTION PRATOS_MYMENU
(
    P_CDFILCENTPME IN FILIAL.CDFILIAL%TYPE,
    P_CDTIPOCARD IN TIPOCARD.CDTIPOCARD%TYPE,
    P_CDFILIAL IN FILIAL.CDFILIAL%TYPE,
    P_CDSERVFILI IN SERVICO.CDSERVFILI%TYPE,
    P_IDTIPOSERV IN VARCHAR2,
    P_CDDIETPAD IN DIETPADR.CDDIETPAD%TYPE,
    P_DTCARDAPIO IN DATE,
    P_NRORG IN NUMBER,
    P_NRLOCALPESQ IN NUMBER DEFAULT NULL,
    P_RETORNAAVALIACAO IN VARCHAR2 DEFAULT 'S',
    P_RETORNAFOTOPRATO IN VARCHAR2 DEFAULT 'S',
    P_NRQRCODELOCALPESQ IN NUMBER DEFAULT NULL
)
RETURN PRATOS_MYMENU_TABLE PIPELINED IS
OUT_RECORD PRATOS_MYMENU_TYPE := PRATOS_MYMENU_TYPE
(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
V_DTMESCARD DATE;
V_NRCARDAPIO       VARCHAR2(10);
V_URL_FOTOPRATO    VARCHAR2(2000);
V_BLOB_FOTOPRATO   BLOB;
V_NRFOTOPRATOBLOB  NUMBER;
V_VRAVALIACAO      FLOAT(126);
V_QTAVALIACAO      NUMBER;
V_NMFANTASIA       VARCHAR2(80);
V_DSPRATO          VARCHAR2(250);
V_NRGLUTEN         NUMBER;
V_NRLACTOSE        NUMBER;
V_IDGLUTEN         VARCHAR2(10);
V_IDLACTOSE        VARCHAR2(10);
V_CDCALORIAS       VARCHAR2(3);
V_CALORIAS         FLOAT(126);
V_CDMEDICASE       VARCHAR2(5); 
V_NMMEDICASE       VARCHAR2(40);
V_QTMEDICASE       FLOAT(126);
V_IDEXIBEFOTOAPP  VARCHAR2(1);

BEGIN
   /*SE PASSAR O NRO DO QRCODE, JA BUSCA O PARAMETRO REFERENTE A ELE SENAO BUSCA PELO LOCAL DE PESQUISA OU POR FILIAL*/
   IF(P_NRQRCODELOCALPESQ IS NOT NULL) THEN
      BEGIN
        SELECT NVL(IDEXIBEFOTOAPP,'N')
          INTO V_IDEXIBEFOTOAPP
          FROM QRCODELOCALPESQ
         WHERE NRQRCODELOCALPESQ = P_NRQRCODELOCALPESQ;
      EXCEPTION
         WHEN NO_DATA_FOUND THEN
            V_IDEXIBEFOTOAPP := 'N';
      END;
   ELSE 
      BEGIN
         SELECT IDEXIBEFOTOAPP
           INTO V_IDEXIBEFOTOAPP
           FROM(SELECT NRLOCALPESQ, NRQRCODELOCALPESQ, NVL(IDEXIBEFOTOAPP,'N') AS IDEXIBEFOTOAPP
                  FROM QRCODELOCALPESQ 
                 WHERE CDFILIAL = P_CDFILIAL AND ( '_' || NVL(TO_CHAR(NRLOCALPESQ),'T') || '_' IN ( '_T_', '_' ||P_NRLOCALPESQ || '_') )
                ORDER BY NRLOCALPESQ, NRQRCODELOCALPESQ DESC ) 
          WHERE ROWNUM = 1;
      EXCEPTION
         WHEN NO_DATA_FOUND THEN
            V_IDEXIBEFOTOAPP := 'N';
      END;       
   END IF;

   V_DTMESCARD := TRUNC(TO_DATE(P_DTCARDAPIO),'MM');
   SELECT NRGLUTEN, NRLACTOSE, CDCALORIAS
     INTO V_NRGLUTEN, V_NRLACTOSE, V_CDCALORIAS
     FROM PARAMGERAL; 
    /*SE O SERVICO FOR DE RESTAURANTE OU HOSPITALAR ENTAO BUSCA OS DADOS DE PRATOS PARA RESTAURANTE OU HOSPITALAR*/
   IF P_CDDIETPAD IS NULL THEN      
    BEGIN
       SELECT MAX(NRCARDAPIO) INTO
          V_NRCARDAPIO
         FROM CARDADIA
        WHERE CDFILIAL   = P_CDFILIAL   AND
              CDSERVFILI = P_CDSERVFILI AND
              DTCARDAPIO = P_DTCARDAPIO AND
              NRORG      = P_NRORG;  
    EXCEPTION
       WHEN NO_DATA_FOUND THEN
          V_NRCARDAPIO := '0';
    END;
   ELSE
    BEGIN
       SELECT MAX(NRCARDAPIO) INTO
          V_NRCARDAPIO
         FROM CARDADIA
        WHERE CDFILIAL   = P_CDFILIAL   AND
              CDSERVFILI = P_CDSERVFILI AND
              DTCARDAPIO = P_DTCARDAPIO AND
              CDDIETPAD  = P_CDDIETPAD  AND
              NRORG      = P_NRORG;  
    EXCEPTION
       WHEN NO_DATA_FOUND THEN
          V_NRCARDAPIO := '0';
    END;
   END IF;
   FOR C_PRATOS IN (
      SELECT COMP.NRGRUPOPRATOPESQ,
             TP.NMGRUPOPRATOPESQ,
             TPR.CDTIPOPRAT,
             TPR.NMTIPOPRAT || CASE WHEN COMP.IDOPCCNFMES = 'S' THEN ' (Opcao)' ELSE '' END AS NMTIPOPRAT,
             COMP.CDFILAUXPRAT,
             COMP.CDPRATO,
             PR.NMPRATO,
             COMP.NRSEQPRATCAR,
             COMP.NRORDPRATCAR,
             RECEITA_UTILIZADA(COMP.CDPRATO,COMP.CDFILAUXPRAT,P_CDFILIAL,P_CDSERVFILI) AS IDTIPORECEITA,
             COMP.IDCONCNFMES, COMP.IDRESERVAMYMENU, COMP.IDOPCCNFMES,
             COMP.NRCARDAPIO
        FROM (SELECT NVL(CPP.NRSEQPRATCAR, CP.NRSEQPRATCAR) AS NRSEQPRATCAR,
                     NVL(CPP.NRORDEM, CP.NRORDPRATCAR) AS NRORDPRATCAR, 
                     NVL(CPP.CDFILAUXPRAT, CP.CDFILAUXPRAT) AS CDFILAUXPRAT, 
                     NVL(CPP.CDPRATO,CP.CDPRATO) AS CDPRATO, CPP.NRGRUPOPRATOPESQ, NVL(CPP.CDTIPOPRAT, CP.CDTIPOPRAT) AS CDTIPOPRAT, 
                     IDOPCCNFMES, IDCONCNFMES, NVL(CPP.IDRESERVAMYMENU, CNF.IDRESERVAMYMENU) AS IDRESERVAMYMENU, CP.NRCARDAPIO
                FROM COMPCARD CP INNER JOIN CNFCAMES CNF ON (CNF.CDFILIAL = CP.CDFILIAL AND CNF.NRSEQCNFMES = CP.NRSEQPRATCAR AND 
                                                             CNF.CDSERVFILI = P_CDSERVFILI AND CNF.DTREFECNFMES = V_DTMESCARD)
                                 LEFT JOIN COMPCARDPESQ CPP ON(CP.CDFILIAL = CPP.CDFILIAL AND CP.NRCARDAPIO = CPP.NRCARDAPIO AND 
                                                               CP.NRSEQPRATCAR = CPP.NRSEQPRATCAR)
               WHERE CP.NRORG = P_NRORG AND CP.CDFILIAL = P_CDFILIAL AND CP.NRCARDAPIO = V_NRCARDAPIO AND NVL(CPP.IDEXIBEPRATOPESQ, NVL(CNF.IDIMPCNFMES, 'S')) = 'S'
              UNION ALL 
              SELECT CPQ.NRSEQPRATCAR, 
                     CASE WHEN CPQ.NRORDEM IS NOT NULL THEN CPQ.NRORDEM 
                          ELSE GREATEST((SELECT MAX(CN.NRORDCNFMES) FROM CNFCAMES CN WHERE CN.CDFILIAL = P_CDFILIAL AND CN.CDSERVFILI = P_CDSERVFILI AND CN.DTREFECNFMES = V_DTMESCARD) + 0.5,
                                  (SELECT MAX(CP2.NRORDEM) FROM COMPCARDPESQ CP2 WHERE CP2.CDFILIAL = CPQ.CDFILIAL AND CP2.NRCARDAPIO = CPQ.NRCARDAPIO AND CP2.NRORDEM IS NOT NULL AND CP2.NRSEQPRATCAR IS NULL)) + ROWNUM END AS NRORDPRATCAR, 
                     CPQ.CDFILAUXPRAT, CPQ.CDPRATO, CPQ.NRGRUPOPRATOPESQ, CPQ.CDTIPOPRAT, 'N' AS IDOPCCNFMES,
                     NVL((SELECT MAX(IDCONCNFMES)
                        FROM CNFCAMES CN
                       WHERE CN.CDFILIAL = CPQ.CDFILIAL AND
                             CN.CDSERVFILI = P_CDSERVFILI AND
                             CN.CDTIPOPRAT = CPQ.CDTIPOPRAT AND 
                             CN.DTREFECNFMES = V_DTMESCARD),'N') AS IDCONCNFMES, CPQ.IDRESERVAMYMENU, CPQ.NRCARDAPIO 
                FROM COMPCARDPESQ CPQ 
               WHERE CPQ.CDFILIAL = P_CDFILIAL AND CPQ.NRCARDAPIO = V_NRCARDAPIO AND CPQ.NRSEQPRATCAR IS NULL AND IDEXIBEPRATOPESQ = 'S'
             ) COMP LEFT JOIN GRUPOPRATOPESQ TP ON TP.NRGRUPOPRATOPESQ = COMP.NRGRUPOPRATOPESQ AND TP.NRORG = P_NRORG
                    INNER JOIN PRATO PR ON PR.CDPRATO = COMP.CDPRATO AND PR.CDFILAUXPRAT = COMP.CDFILAUXPRAT AND PR.IDATIVO = 'S'
                    INNER JOIN TIPOPRAT TPR ON COMP.CDTIPOPRAT = TPR.CDTIPOPRAT
   ) LOOP
      IF C_PRATOS.IDTIPORECEITA = 'P' THEN   
          BEGIN
             SELECT MAX(PS.NMFANTASIAPR) AS NMFANTASIAPR, MAX(A.CDPRODUTO) AS LACTOSE, MAX(A2.CDPRODUTO) AS GLUTEN, MAX(DSPRATO), MAX(PS.CDMEDICASE), MAX(M.NMMEDICASE), MAX(PS.QTMEDICASEPRATPADR),
                    SUM(NP.QTNUTRPROD * 10 * NVL(DECODE(PF.VRPESOUNIDFI, 0, P.VRPESOUNID, PF.VRPESOUNIDFI),P.VRPESOUNID) * RS.QTCALCNUTRPR) AS QTCALORIAS
               INTO V_NMFANTASIA, V_IDLACTOSE, V_IDGLUTEN, V_DSPRATO, V_CDMEDICASE, V_NMMEDICASE, V_QTMEDICASE, V_CALORIAS
               FROM RECEPADR RS LEFT JOIN PRATPADR PS ON PS.CDFILAUXPRAT = RS.CDFILAUXPRAT AND PS.CDPRATO = RS.CDPRATO
                                INNER JOIN PRODUTO P ON P.CDPRODUTO = RS.CDPRODUTO
                                LEFT JOIN ALERGENICOPROD A ON RS.CDPRODUTO = A.CDPRODUTO AND A.NRALERGENICO = V_NRLACTOSE
                                LEFT JOIN ALERGENICOPROD A2 ON RS.CDPRODUTO = A2.CDPRODUTO AND A2.NRALERGENICO = V_NRGLUTEN
                                LEFT JOIN PRODFILI PF ON PF.CDFILIAL = P_CDFILIAL AND PF.CDPRODUTO = RS.CDPRODUTO
                                LEFT JOIN NUTRPROD NP ON NP.CDPRODUTO = RS.CDPRODUTO AND NP.CDNUTRIENTE = V_CDCALORIAS
                                LEFT JOIN MEDICASE M ON PS.CDMEDICASE = M.CDMEDICASE
             WHERE RS.CDFILAUXPRAT = C_PRATOS.CDFILAUXPRAT AND
                   RS.CDPRATO = C_PRATOS.CDPRATO;
           EXCEPTION
              WHEN NO_DATA_FOUND THEN
                 V_NMFANTASIA := NULL;
                 V_DSPRATO := NULL;
                 V_CDMEDICASE := NULL; 
                 V_NMMEDICASE := NULL;
                 V_QTMEDICASE := NULL;
                 V_NRLACTOSE :=  NULL;
                 V_NRGLUTEN :=  NULL; 
                 V_CALORIAS :=  NULL;
           END;
           IF P_RETORNAFOTOPRATO = 'S' THEN
              BEGIN
                 SELECT CASE WHEN V_IDEXIBEFOTOAPP = 'S' THEN FGFOTOPRATOURL_APP ELSE NVL(FGFOTOPRATOURL_APP, FGFOTOPRATOURL) END AS FGFOTOPRATOURL , FGFOTOPRATO, NRFOTOPRATOBLOB
                   INTO V_URL_FOTOPRATO, V_BLOB_FOTOPRATO, V_NRFOTOPRATOBLOB
                   FROM FOTOPRATOBLOB FG
                  WHERE FG.CDFILAUXPRAT = C_PRATOS.CDFILAUXPRAT AND 
                        FG.CDPRATO = C_PRATOS.CDPRATO AND 
                        FG.IDRECEITA = 'P' AND 
                        (FG.FGFOTOPRATO IS NOT NULL OR FG.FGFOTOPRATOURL IS NOT NULL);
              EXCEPTION
              WHEN NO_DATA_FOUND THEN
                 V_URL_FOTOPRATO   :=  NULL;
                 V_BLOB_FOTOPRATO  :=  NULL;
                 V_NRFOTOPRATOBLOB :=  NULL;
              END;   
           END IF;
      ELSIF C_PRATOS.IDTIPORECEITA = 'F' THEN
          BEGIN
             SELECT MAX(PS.NMFANTASIAPF) AS NMFANTASIAPF, MAX(A.CDPRODUTO) AS LACTOSE, MAX(A2.CDPRODUTO) AS GLUTEN, MAX(DSPRATO), MAX(PS.CDMEDICASE), MAX(M.NMMEDICASE), MAX(PS.QTMEDICASEPRATFILI),
                    SUM(NP.QTNUTRPROD * 10 * NVL(DECODE(PF.VRPESOUNIDFI, 0, P.VRPESOUNID, PF.VRPESOUNIDFI),P.VRPESOUNID) * RS.QTCALCNUTRLO) AS QTCALORIAS
               INTO V_NMFANTASIA, V_IDLACTOSE, V_IDGLUTEN, V_DSPRATO, V_CDMEDICASE, V_NMMEDICASE, V_QTMEDICASE, V_CALORIAS 
               FROM RECEFILI RS LEFT JOIN PRATFILI PS ON PS.CDFILAUXPRAT = RS.CDFILAUXPRAT AND PS.CDPRATO = RS.CDPRATO AND PS.CDFILIAL = RS.CDFILIAL
                                INNER JOIN PRODUTO P ON P.CDPRODUTO = RS.CDPRODUTO
                                LEFT JOIN ALERGENICOPROD A ON RS.CDPRODUTO = A.CDPRODUTO AND A.NRALERGENICO = V_NRLACTOSE
                                LEFT JOIN ALERGENICOPROD A2 ON RS.CDPRODUTO = A2.CDPRODUTO AND A2.NRALERGENICO = V_NRGLUTEN
                                LEFT JOIN PRODFILI PF ON PF.CDFILIAL = RS.CDFILIAL AND PF.CDPRODUTO = RS.CDPRODUTO
                                LEFT JOIN NUTRPROD NP ON NP.CDPRODUTO = RS.CDPRODUTO AND NP.CDNUTRIENTE = V_CDCALORIAS
                                LEFT JOIN MEDICASE M ON PS.CDMEDICASE = M.CDMEDICASE
             WHERE RS.CDFILAUXPRAT = C_PRATOS.CDFILAUXPRAT AND
                   RS.CDPRATO = C_PRATOS.CDPRATO AND
                   RS.CDFILIAL = P_CDFILIAL;
           EXCEPTION
              WHEN NO_DATA_FOUND THEN
                 V_NMFANTASIA := NULL;
                 V_DSPRATO := NULL;
                 V_CDMEDICASE := NULL;
                 V_NMMEDICASE := NULL;
                 V_QTMEDICASE := NULL;
                 V_NRLACTOSE :=  NULL;
                 V_NRGLUTEN :=  NULL; 
                 V_CALORIAS :=  NULL;
                 V_URL_FOTOPRATO :=  NULL;
                 V_BLOB_FOTOPRATO :=  NULL;
                 V_NRFOTOPRATOBLOB :=  NULL; 
           END;
           IF P_RETORNAFOTOPRATO = 'S' THEN
              BEGIN
                 SELECT CASE WHEN V_IDEXIBEFOTOAPP = 'S' THEN FGFOTOPRATOURL_APP ELSE NVL(FGFOTOPRATOURL_APP, FGFOTOPRATOURL) END AS FGFOTOPRATOURL , FGFOTOPRATO, NRFOTOPRATOBLOB
                   INTO V_URL_FOTOPRATO, V_BLOB_FOTOPRATO, V_NRFOTOPRATOBLOB
                   FROM FOTOPRATOBLOB FG
                  WHERE FG.CDFILAUXPRAT = C_PRATOS.CDFILAUXPRAT AND 
                        FG.CDPRATO = C_PRATOS.CDPRATO AND 
                        FG.CDFILIAL = P_CDFILIAL AND
                        FG.IDRECEITA = 'F' AND 
                        (FG.FGFOTOPRATO IS NOT NULL OR FG.FGFOTOPRATOURL IS NOT NULL);
              EXCEPTION
              WHEN NO_DATA_FOUND THEN
                 V_URL_FOTOPRATO   :=  NULL;
                 V_BLOB_FOTOPRATO  :=  NULL;
                 V_NRFOTOPRATOBLOB :=  NULL;
              END;   
           END IF;           
      ELSIF C_PRATOS.IDTIPORECEITA = 'S' THEN
          BEGIN
             SELECT MAX(PS.NMFANTASIASE) AS NMFANTASIAPF, MAX(A.CDPRODUTO) AS LACTOSE, MAX(A2.CDPRODUTO) AS GLUTEN, MAX(DSPRATO), MAX(PS.CDMEDICASE), MAX(M.NMMEDICASE), MAX(PS.QTMEDICASEPRATSERV),
                    SUM(NP.QTNUTRPROD * 10 * NVL(DECODE(PF.VRPESOUNIDFI, 0, P.VRPESOUNID, PF.VRPESOUNIDFI),P.VRPESOUNID) * RS.QTCALCNUTRSE) AS QTCALORIAS
               INTO V_NMFANTASIA, V_IDLACTOSE, V_IDGLUTEN, V_DSPRATO, V_CDMEDICASE, V_NMMEDICASE, V_QTMEDICASE, V_CALORIAS
               FROM RECESERV RS LEFT JOIN PRATSERV PS ON PS.CDFILAUXPRAT = RS.CDFILAUXPRAT AND PS.CDPRATO = RS.CDPRATO AND PS.CDFILIAL = RS.CDFILIAL AND PS.CDSERVFILI = RS.CDSERVFILI
                                INNER JOIN PRODUTO P ON P.CDPRODUTO = RS.CDPRODUTO
                                LEFT JOIN ALERGENICOPROD A ON RS.CDPRODUTO = A.CDPRODUTO AND A.NRALERGENICO = V_NRLACTOSE
                                LEFT JOIN ALERGENICOPROD A2 ON RS.CDPRODUTO = A2.CDPRODUTO AND A2.NRALERGENICO = V_NRGLUTEN
                                LEFT JOIN PRODFILI PF ON PF.CDFILIAL = RS.CDFILIAL AND PF.CDPRODUTO = RS.CDPRODUTO
                                LEFT JOIN NUTRPROD NP ON NP.CDPRODUTO = RS.CDPRODUTO AND NP.CDNUTRIENTE = V_CDCALORIAS
                                LEFT JOIN MEDICASE M ON PS.CDMEDICASE = M.CDMEDICASE
             WHERE RS.CDFILAUXPRAT = C_PRATOS.CDFILAUXPRAT AND
                   RS.CDPRATO = C_PRATOS.CDPRATO AND
                   RS.CDFILIAL = P_CDFILIAL AND
                   RS.CDSERVFILI = P_CDSERVFILI;
           EXCEPTION
              WHEN NO_DATA_FOUND THEN
                 V_NMFANTASIA := NULL;
                 V_DSPRATO := NULL;
                 V_CDMEDICASE := NULL;
                 V_NMMEDICASE := NULL;
                 V_QTMEDICASE := NULL;
                 V_NRLACTOSE :=  NULL;
                 V_NRGLUTEN :=  NULL; 
                 V_CALORIAS :=  NULL;
           END;
           IF P_RETORNAFOTOPRATO = 'S' THEN
              BEGIN
                 SELECT CASE WHEN V_IDEXIBEFOTOAPP = 'S' THEN FGFOTOPRATOURL_APP ELSE NVL(FGFOTOPRATOURL_APP, FGFOTOPRATOURL) END AS FGFOTOPRATOURL, FGFOTOPRATO, NRFOTOPRATOBLOB
                   INTO V_URL_FOTOPRATO, V_BLOB_FOTOPRATO, V_NRFOTOPRATOBLOB
                   FROM FOTOPRATOBLOB FG
                  WHERE FG.CDFILAUXPRAT = C_PRATOS.CDFILAUXPRAT AND 
                        FG.CDPRATO = C_PRATOS.CDPRATO AND 
                        FG.CDFILIAL = P_CDFILIAL AND
                        FG.CDSERVFILI = P_CDSERVFILI AND
                        FG.IDRECEITA = 'S' AND 
                        (FG.FGFOTOPRATO IS NOT NULL OR FG.FGFOTOPRATOURL IS NOT NULL);
              EXCEPTION
              WHEN NO_DATA_FOUND THEN
                 V_URL_FOTOPRATO   :=  NULL;
                 V_BLOB_FOTOPRATO  :=  NULL;
                 V_NRFOTOPRATOBLOB :=  NULL;
              END;
           END IF;   
      ELSE
         V_NMFANTASIA := C_PRATOS.NMPRATO;
         V_DSPRATO := NULL;
         V_CDMEDICASE := NULL;
         V_NMMEDICASE := NULL;
         V_QTMEDICASE := NULL;
         V_NRLACTOSE :=  NULL;
         V_NRGLUTEN :=  NULL; 
         V_CALORIAS :=  NULL;
         V_URL_FOTOPRATO :=  NULL;
         V_BLOB_FOTOPRATO :=  NULL;
         V_NRFOTOPRATOBLOB :=  NULL; 
      END IF;
      /*SELECT PARA BUSCAR QUANTIDADE DE AVALIACOES*/
      IF P_RETORNAAVALIACAO = 'S' THEN
          BEGIN
             SELECT ROUND(AVG(VRAVALIACAOPRATO),2), COUNT(VRAVALIACAOPRATO)
               INTO V_VRAVALIACAO, V_QTAVALIACAO
               FROM AVALIACAOPRATO AV
              WHERE AV.CDFILAUXPRAT = C_PRATOS.CDFILAUXPRAT AND
                    AV.CDPRATO      = C_PRATOS.CDPRATO AND
                    (AV.NRLOCALPESQ  = P_NRLOCALPESQ OR P_NRLOCALPESQ IS NULL);
          EXCEPTION
             WHEN NO_DATA_FOUND THEN
                V_VRAVALIACAO := NULL; 
                V_QTAVALIACAO := 0;
          END;
      ELSE
         V_VRAVALIACAO := NULL; 
         V_QTAVALIACAO := 0;
      END IF;
      /*INSERIR NA TABELA DE RETORNO OS DADOS DOS PRATOS*/
      OUT_RECORD.NRGRUPOPRATOPESQ := C_PRATOS.NRGRUPOPRATOPESQ; 
      OUT_RECORD.NMGRUPOPRATOPESQ := C_PRATOS.NMGRUPOPRATOPESQ;
      OUT_RECORD.NRCARDPME        := NULL;
      OUT_RECORD.NRCARDAPIO       := C_PRATOS.NRCARDAPIO;
      OUT_RECORD.CDTIPOPRAT       := C_PRATOS.CDTIPOPRAT;
      OUT_RECORD.NMTIPOPRAT       := C_PRATOS.NMTIPOPRAT;
      OUT_RECORD.CDFILAUXPRAT     := C_PRATOS.CDFILAUXPRAT;
      OUT_RECORD.CDPRATO          := C_PRATOS.CDPRATO;
      OUT_RECORD.NMPRATO          := NVL(V_NMFANTASIA, C_PRATOS.NMPRATO);
      OUT_RECORD.NRSEQPRATCAR     := C_PRATOS.NRSEQPRATCAR;
      OUT_RECORD.NRORDPRATCAR     := C_PRATOS.NRORDPRATCAR;
      OUT_RECORD.CALORIAS_KCAL    := ROUND(NVL(V_CALORIAS,0),2);
      OUT_RECORD.URL_FOTOPRATO    := V_URL_FOTOPRATO;
      OUT_RECORD.BLOB_FOTOPRATO   := V_BLOB_FOTOPRATO;
      OUT_RECORD.NRFOTOPRATOBLOB  := V_NRFOTOPRATOBLOB;
      OUT_RECORD.VRAVALIACAO      := V_VRAVALIACAO;
      OUT_RECORD.QTAVALIACAO      := V_QTAVALIACAO;
      OUT_RECORD.IDTIPORECEITA    := C_PRATOS.IDTIPORECEITA;
      OUT_RECORD.DSPRATO          := V_DSPRATO;
      OUT_RECORD.IDGLUTEN         := CASE WHEN V_IDGLUTEN IS NULL THEN 'N' ELSE 'S' END;
      OUT_RECORD.IDLACTOSE        := CASE WHEN V_IDLACTOSE IS NULL THEN 'N' ELSE 'S' END;
      OUT_RECORD.IDCONCNFMES      := C_PRATOS.IDCONCNFMES;
      OUT_RECORD.IDRESERVAMYMENU  := C_PRATOS.IDRESERVAMYMENU;
      OUT_RECORD.CDMEDICASE       := V_CDMEDICASE;
      OUT_RECORD.NMMEDICASE       := V_NMMEDICASE;
      OUT_RECORD.QTMEDICASE       := V_QTMEDICASE;
      OUT_RECORD.IDOPCCNFMES      := C_PRATOS.IDOPCCNFMES;
      PIPE ROW (OUT_RECORD);
   END LOOP;
END;