/* Sistemas Integrados TECNISA
   Planejamento Alimenta��o Industrial

Nome: REQUISICAO_ANALITICA_SETOR_PLA

Descri��o:
C�lculo do Consumo Planejado (Card�pio, Consumo por Servi�o Fixo ou
Percapita) atrav�s da stored procedure CONSUMO_PLANEJADO e grava��o na
tabela PREVRETI.

P_FILIAL       - Codigo da Filial
P_SERVICOS     - String contendo sequencia de Servi�os a serem calculados
P_DTINICIAL    - Data inicial
P_DTFINAL      - Data final
P_IDARQUIVO    - Identificador da tabela a ser gravada
                 "P" -> PREVRETI
                 "C" -> CONSPLAN
                 "A" -> AMBAS
P_IDPRODUTOS   - Identificador dos produtos a serem gravados.
                 Formato "XXX"
                 1� posi��o = "C" -> Card�pio
                 2� posi��o = "F" -> Consumo por Servi�o Fixo
                 3� posi��o = "P" -> Consumo por Servi�o Percapita
P_IDSEPPRATO   - Identificador de requisi��o anal�tica, ou seja, separada
                 por prato ou por setor, consumo fixo e consumo percapita.
                 Formato "S" (setor), "P" (prato) ou "N" (n/a).
P_PEACRESCIMO  - Percentual de acr�scimo
P_IDARREDOND   - Identificador de utiliza��o do arredondamento
                 para requisi��o do Produto. Formato "S" ou "N"
P_NRCONSPLAN   - N�mero sequencial a ser utilizado para grava��o dos dados
P_CDPRODUTOINI - C�digo do Produto inicial
P_CDPRODUTOFIN - C�digo do Produto final
P_CDOPERADOR   - C�digo do Operador
P_DTHRCALCPR   - Data/hora do c�lculo
P_STDTINICIAL  - Lista de data inicial em string por servi�o
P_STDTFINAL    - Lista de data final em string por servi�o

Para aplicar e debugar
-- @H:\SISTEMAS\DBA\SQL\ORACLE\7120_PLASTP_REQUISICAO_ANALITICA_SETOR_PLA.SQL
-- SET SERVEROUTPUT ON
-- DBMS_OUTPUT.PUT_LINE('xx');

Cria��o:
01/03/99 - Ederson

*/

create or replace PROCEDURE REQUISICAO_ANALITICA_SETOR_PLA
  (P_FILIAL       IN VARCHAR2,
   P_SERVICOS     IN VARCHAR2,
   P_DTINICIAL    IN DATE,
   P_DTFINAL      IN DATE,
   P_IDARQUIVO    IN VARCHAR2,
   P_IDPRODUTOS   IN VARCHAR2,
   P_IDSEPPRATO   IN VARCHAR2,
   P_PEACRESCIMO  IN NUMBER,
   P_IDARREDOND   IN VARCHAR2,
   P_NRCONSPLAN   IN VARCHAR2,
   P_CDPRODUTOINI IN VARCHAR2,
   P_CDPRODUTOFIN IN VARCHAR2,
   P_CDOPERADOR   IN VARCHAR2,
   P_DTHRCALCPR   IN DATE,
   P_STDTINICIAL  IN VARCHAR2 DEFAULT NULL,
   P_STDTFINAL    IN VARCHAR2 DEFAULT NULL) IS

   V_CDSERVFILI    VARCHAR2(5);
   V_CDSERVFILIAUX CLOB;
   V_CDPRODUTOFIN  VARCHAR2(10);
   V_CDFILIAL      VARCHAR(4);   

   V_LISTA_SERV_TRANS CLOB;   
   V_NRPRPREVRETI VARCHAR2(4);  
   V_NRLISTA VARCHAR2(20);
   V_NRCONSPLAN VARCHAR2(20);
   V_POSSUI_DIST NUMBER;

   /* - Declara��o de cursores ---------------------------------------------- */
   CURSOR C_FILIAIS IS
      SELECT DISTINCT CDFILIAL
        FROM SERVICO
       WHERE INSTR(P_FILIAL, CDFILIAL) > 0           
       UNION    
      SELECT DISTINCT SUBSTR(CDLISTA, 1, 4) AS CDFILIAL
        FROM LISTA
       WHERE NRLISTA = P_SERVICOS;  
    
BEGIN

	V_CDSERVFILIAUX := NULL;
	V_LISTA_SERV_TRANS := NULL;

    NOVO_CODIGO('LISTA', V_NRLISTA);
    V_NRLISTA := SUBSTR(V_NRLISTA, 11, 10);

   /* REGISTRA O CALCULO NA TABELA DE LOG */   
   OPEN C_FILIAIS;
   LOOP
      FETCH C_FILIAIS INTO V_CDFILIAL;
      EXIT WHEN C_FILIAIS%NOTFOUND;            
      FOR C_SERVICO IN(             
             SELECT CDSERVFILI, IDSERVTRAN  
               FROM SERVICO 
              WHERE CDFILIAL = V_CDFILIAL 
                AND (INSTR(P_SERVICOS, CDSERVFILI) > 0 OR P_SERVICOS = 'T') 
                AND NOT EXISTS (SELECT SUBSTR(CDLISTA, 5, 5) AS CDSERVFILI 
                                  FROM LISTA 
                                 WHERE NRLISTA = P_SERVICOS  
                                   AND SUBSTR(CDLISTA, 1, 4) = V_CDFILIAL) 
              UNION        
             SELECT SERVICO.CDSERVFILI, SERVICO.IDSERVTRAN
               FROM LISTA, SERVICO 
              WHERE NRLISTA = P_SERVICOS  
                AND SUBSTR(CDLISTA, 1, 4) = V_CDFILIAL
                AND SERVICO.CDFILIAL = V_CDFILIAL
                AND SERVICO.CDSERVFILI = SUBSTR(CDLISTA, 5, 5))
      LOOP 
         INSERT INTO LOGPREVRETI
           (CDFILIAL,
            CDOPERADOR,
            DTHRCALCPR,
            NRCONSPLANPR,
            CDSERVFILI,
            DTINICIALPR,
            DTFINALPR,
            CDPRODINICPR,
            CDPRODFINAPR,
            PEACRESCIMPR)
         VALUES
           (V_CDFILIAL,
            P_CDOPERADOR,
            P_DTHRCALCPR,
            P_NRCONSPLAN,
            C_SERVICO.CDSERVFILI,
            P_DTINICIAL,
            P_DTFINAL,
            P_CDPRODUTOINI,
            P_CDPRODUTOFIN,
            P_PEACRESCIMO);

         IF (C_SERVICO.IDSERVTRAN <> 'S') THEN 
            V_CDSERVFILIAUX := V_CDSERVFILIAUX || '_' || C_SERVICO.CDSERVFILI; 
         ELSE
            BEGIN 
              SELECT COUNT(*) AS DADOS 
                INTO V_POSSUI_DIST
                FROM (SELECT C.DTCARDAPIO
                        FROM CARDADIA C
                       INNER JOIN CARDDISTPROD P ON C.NRCARDAPIO = P.NRCARDAPIO AND C.CDFILIAL = P.CDFILIAL AND C.CDSERVFILI = P.CDSERVFILI
                       INNER JOIN CNFDISTCARD CC ON CC.NRDISTCARD = P.NRDISTCARD AND CC.IDEFETIVADA = 'S'
                       WHERE C.CDFILIAL = V_CDFILIAL
                         AND C.CDSERVFILI = C_SERVICO.CDSERVFILI
                         AND C.DTCARDAPIO BETWEEN P_DTINICIAL AND P_DTFINAL
                         AND INSTR(P_IDPRODUTOS, 'C') > 0

                       UNION  ALL

                      SELECT DTCARDAPIO
                        FROM PRODDISTPROD
                       WHERE CDFILIAL = V_CDFILIAL
                         AND CDSERVFILI = C_SERVICO.CDSERVFILI
                         AND DTCARDAPIO BETWEEN P_DTINICIAL AND P_DTFINAL
                         AND INSTR(P_IDPRODUTOS, IDCONSPLAN) > 0
                         AND NVL(IDEFETIVADA, 'N') = 'S');
            EXCEPTION
              WHEN NO_DATA_FOUND THEN BEGIN
                V_POSSUI_DIST := 0;
              END;
            END;

            IF (V_POSSUI_DIST = 0) THEN 
                V_CDSERVFILIAUX := V_CDSERVFILIAUX || '_' || C_SERVICO.CDSERVFILI; 
            ELSE 
                V_LISTA_SERV_TRANS := V_LISTA_SERV_TRANS || C_SERVICO.CDSERVFILI || '_';
                INSERT INTO LISTA (NRLISTA, CDLISTA) VALUES (V_NRLISTA, V_CDFILIAL||C_SERVICO.CDSERVFILI);

                 DELETE FROM PREVRETI
                  WHERE CDFILIAL   = V_CDFILIAL            
                    AND CDSERVFILI = C_SERVICO.CDSERVFILI
                    AND DTPREVRETI BETWEEN P_DTINICIAL AND P_DTFINAL
                    AND NRREQUEXTR = '0000000000'
                    AND INSTR(P_IDPRODUTOS, IDPREVRETI) > 0;
            END IF;
         END IF;
      END LOOP;        

      V_CDPRODUTOFIN := RPAD(P_CDPRODUTOFIN,10,'z');

       /*INICIO - Para servi�os transportada � verificado se houve distribui��o efetivada dos itens*/   
        IF (V_LISTA_SERV_TRANS IS NOT NULL) THEN
            /*gera consplan para buscar pratos que n�o s�o representados por um produto de produ��o*/ 
            CONSPLAN_GERAL(V_NRLISTA, P_DTINICIAL, P_DTFINAL, P_IDPRODUTOS, 'P', 0, 'N', '0', 'ZZZZZZZZZZ',
                           P_CDOPERADOR, 'GERANOVCOD', V_NRCONSPLAN); 
                
           V_NRPRPREVRETI := '0000';    

           FOR C_SERVTRANS IN 
                (SELECT
                 CDSERVFILI, HRINICATEN, IDUTRETIPRAT
              FROM
                 SERVICO
              WHERE
                 (CDFILIAL = V_CDFILIAL) AND
                 ((INSTR(V_LISTA_SERV_TRANS, CDSERVFILI) > 0)))
            LOOP                       
                
                FOR C_PRAT_EFET IN
                    (-- CARREGA PRATOS EFETIVADOS
                     SELECT C.CDFILIAL, C.CDSERVFILI, C.DTCARDAPIO AS DTPREVRETI, CC.CDPRODPRODUCAO AS CDPRODUTO,
                           SUM(CC.QTTOTPRATO) AS QTTOTAL,                            
                           CC.CDPRATO, CC.CDFILAUXPRAT, CC.CDTIPOPRAT,
                           'C' AS IDPREVRETI, DECODE(D.CDCLIENTE, NULL, 'XXX', D.CDCLIENTE) AS CDCLIENTE, 
                           DECODE(D.CDDESTFILI, NULL, 'XXX', D.CDDESTFILI) AS CDDESTFILI, D.QTCOMENSAIS,
                           NVL(VERIFICA_SETORCOZ_COZ(C.CDFILIAL, CC.CDTIPOPRAT, CC.CDPRODPRODUCAO), '  ') AS SETOR
                      FROM CARDADIA C
                     INNER JOIN DISTCARD D ON D.CDFILIAL = C.CDFILIAL AND D.NRCARDAPIO = C.NRCARDAPIO
                     INNER JOIN CARDDISTPROD P ON D.NRDISTCARD = P.NRDISTCARD AND C.NRCARDAPIO = P.NRCARDAPIO AND C.CDFILIAL = P.CDFILIAL AND C.CDSERVFILI = P.CDSERVFILI
                     INNER JOIN CNFDISTCARD CC ON CC.NRDISTCARD = P.NRDISTCARD AND CC.IDEFETIVADA = 'S'
                     WHERE C.CDFILIAL = V_CDFILIAL
                       AND C.CDSERVFILI = C_SERVTRANS.CDSERVFILI
                       AND C.DTCARDAPIO BETWEEN P_DTINICIAL AND P_DTFINAL
                       AND INSTR(P_IDPRODUTOS, 'C') > 0
                     GROUP BY C.CDFILIAL, C.CDSERVFILI, C.DTCARDAPIO, CC.CDPRODPRODUCAO, 
                           CC.CDPRATO, CC.CDFILAUXPRAT, CC.CDTIPOPRAT, D.CDCLIENTE, D.CDDESTFILI, D.QTCOMENSAIS)
                LOOP
                    INSERT INTO PREVRETI (NRPRPREVRETI, CDFILIAL, CDSERVFILI, DTPREVRETI, 
                                          DTLIMITERETI, CDPRODUTO, QTPREVRETI, 
                                          CDPRATO, CDFILAUXPRAT, CDTIPOPRAT, 
                                          NRREQUEXTR, IDPREVRETI, HRLIMITERETI, CDOPERADOR, IDPREVTPPRAT)
                    VALUES (V_NRPRPREVRETI, C_PRAT_EFET.CDFILIAL, C_PRAT_EFET.CDSERVFILI, C_PRAT_EFET.DTPREVRETI, 
                            C_PRAT_EFET.DTPREVRETI, C_PRAT_EFET.CDPRODUTO, C_PRAT_EFET.QTTOTAL, 
                            DECODE(C_SERVTRANS.IDUTRETIPRAT, 'S', C_PRAT_EFET.CDPRATO, NULL),
                            DECODE(C_SERVTRANS.IDUTRETIPRAT, 'S', C_PRAT_EFET.CDFILAUXPRAT, NULL),  
                            DECODE(C_SERVTRANS.IDUTRETIPRAT, 'S', C_PRAT_EFET.CDTIPOPRAT, NULL),
                            '0000000000', C_PRAT_EFET.IDPREVRETI, C_SERVTRANS.HRINICATEN, P_CDOPERADOR, C_SERVTRANS.IDUTRETIPRAT);     

                    INSERT INTO CONSPLAN (NRCONSPLAN, CDFILICPLA, CDSERVCPLA, DTCONSPLAN, 
                                          CDPRODCPLA, CDTPPRATCPLA, CDPRATCONSPL, CDFAPRATCPLA, 
                                          QTCONSPLAN, IDCONSPLAN, DTLIMITECPLA, HRLIMITECPLA, 
                                          CDCLIECPLA, CDDESTFICPLA, QTCOMESTCPLA, CDSETOCONSPL,
                                          VRPEFATCORCONS, QTCONSPLANT1, QTCONSPLANT2, 
                                          QTCONSPLANT3, QTCONSPLANT4)
                    VALUES (P_NRCONSPLAN, C_PRAT_EFET.CDFILIAL, C_PRAT_EFET.CDSERVFILI, C_PRAT_EFET.DTPREVRETI, 
                            C_PRAT_EFET.CDPRODUTO, C_PRAT_EFET.CDTIPOPRAT, C_PRAT_EFET.CDPRATO, C_PRAT_EFET.CDFILAUXPRAT, 
                            C_PRAT_EFET.QTTOTAL, C_PRAT_EFET.IDPREVRETI, C_PRAT_EFET.DTPREVRETI, C_SERVTRANS.HRINICATEN,
                            C_PRAT_EFET.CDCLIENTE, C_PRAT_EFET.CDDESTFILI, C_PRAT_EFET.QTCOMENSAIS, C_PRAT_EFET.SETOR,
                            0, 0, 0, 0, 0);
                            
                    DELETE FROM CONSPLAN 
                     WHERE NRCONSPLAN = V_NRCONSPLAN
                       AND DTCONSPLAN = C_PRAT_EFET.DTPREVRETI
                       AND CDFILICPLA = C_PRAT_EFET.CDFILIAL
                       AND CDSERVCPLA = C_PRAT_EFET.CDSERVFILI
                       AND CDPRATCONSPL = C_PRAT_EFET.CDPRATO
                       AND CDFAPRATCPLA = C_PRAT_EFET.CDFILAUXPRAT
                       AND NVL(IDTPREQPROD, 'P') = 'P';

                    V_NRPRPREVRETI := LPAD(V_NRPRPREVRETI + 1, 4, 0);
                END LOOP;

                FOR C_PROD_EFET IN
                    (-- CARREGA PRODUTOS EFETIVADOS
                     SELECT P.CDFILIAL, P.CDSERVFILI, P.DTCARDAPIO AS DTPREVRETI, P.CDPRODUTO, 
                           SUM(P.QTTOTPRODUTO) AS QTTOTAL, 
                           P.CDPRATO, P.CDFILAUXPRAT, P.CDTIPOPRAT,
                           P.IDCONSPLAN AS IDPREVRETI, DECODE(P.CDCLIENTE, NULL, 'XXX', P.CDCLIENTE) AS CDCLIENTE, 
                           DECODE(P.CDDESTFILI, NULL, 'XXX', P.CDDESTFILI) AS CDDESTFILI, P.QTCOMENSAIS,
                           NVL(VERIFICA_SETORCOZ_COZ(P.CDFILIAL, P.CDTIPOPRAT, P.CDPRODUTO), '  ') AS SETOR,
                           C.VRPEFATCORCONS, 
                           DECODE(SUBSTR(P.IDTIPOPROD, 1, 1), 'F', 'D', SUBSTR(P.IDTIPOPROD, 1, 1)) AS IDTIPOPROD
                      FROM PRODDISTPROD P
                     INNER JOIN CONSPLAN C ON C.NRCONSPLAN = V_NRCONSPLAN
                                          AND C.DTCONSPLAN = P.DTCARDAPIO
                                          AND C.CDFILICPLA = P.CDFILIAL
                                          AND C.CDSERVCPLA = P.CDSERVFILI
                                          AND C.CDPRATCONSPL = P.CDPRATO
                                          AND C.CDFAPRATCPLA = P.CDFILAUXPRAT
                                          AND C.CDPRODCPLA = P.CDPRODUTO
                     WHERE P.CDFILIAL = V_CDFILIAL
                       AND P.CDSERVFILI = C_SERVTRANS.CDSERVFILI
                       AND P.DTCARDAPIO BETWEEN P_DTINICIAL AND P_DTFINAL
                       AND P.IDEFETIVADA = 'S'
                       AND INSTR(P_IDPRODUTOS, P.IDCONSPLAN) > 0
                     GROUP BY P.CDFILIAL, P.CDSERVFILI, P.DTCARDAPIO, P.CDPRODUTO, 
                           P.CDPRATO, P.CDFILAUXPRAT, P.CDTIPOPRAT, P.IDCONSPLAN,
                           P.CDCLIENTE, P.CDDESTFILI, P.QTCOMENSAIS, C.VRPEFATCORCONS, P.IDTIPOPROD)
                LOOP
                    INSERT INTO PREVRETI (NRPRPREVRETI, CDFILIAL, CDSERVFILI, DTPREVRETI, 
                                          DTLIMITERETI, CDPRODUTO, QTPREVRETI, 
                                          CDPRATO, CDFILAUXPRAT, CDTIPOPRAT, 
                                          NRREQUEXTR, IDPREVRETI, HRLIMITERETI, CDOPERADOR, IDPREVTPPRAT)
                    VALUES (V_NRPRPREVRETI, C_PROD_EFET.CDFILIAL, C_PROD_EFET.CDSERVFILI, C_PROD_EFET.DTPREVRETI, 
                            C_PROD_EFET.DTPREVRETI, C_PROD_EFET.CDPRODUTO, C_PROD_EFET.QTTOTAL, 
                            DECODE(C_SERVTRANS.IDUTRETIPRAT, 'S', C_PROD_EFET.CDPRATO, NULL),
                            DECODE(C_SERVTRANS.IDUTRETIPRAT, 'S', C_PROD_EFET.CDFILAUXPRAT, NULL),  
                            DECODE(C_SERVTRANS.IDUTRETIPRAT, 'S', C_PROD_EFET.CDTIPOPRAT, NULL),
                            '0000000000', C_PROD_EFET.IDPREVRETI, C_SERVTRANS.HRINICATEN, P_CDOPERADOR, C_SERVTRANS.IDUTRETIPRAT);     

                    INSERT INTO CONSPLAN (NRCONSPLAN, CDFILICPLA, CDSERVCPLA, DTCONSPLAN, 
                                          CDPRODCPLA, CDTPPRATCPLA, CDPRATCONSPL, CDFAPRATCPLA, 
                                          QTCONSPLAN, IDCONSPLAN, DTLIMITECPLA, HRLIMITECPLA, 
                                          CDCLIECPLA, CDDESTFICPLA, QTCOMESTCPLA, CDSETOCONSPL,
                                          VRPEFATCORCONS, QTCONSPLANT1, QTCONSPLANT2, 
                                          QTCONSPLANT3, QTCONSPLANT4)
                    VALUES (P_NRCONSPLAN, C_PROD_EFET.CDFILIAL, C_PROD_EFET.CDSERVFILI, C_PROD_EFET.DTPREVRETI, 
                            C_PROD_EFET.CDPRODUTO, C_PROD_EFET.CDTIPOPRAT, C_PROD_EFET.CDPRATO, C_PROD_EFET.CDFILAUXPRAT, 
                            C_PROD_EFET.QTTOTAL, C_PROD_EFET.IDPREVRETI, C_PROD_EFET.DTPREVRETI, C_SERVTRANS.HRINICATEN,
                            C_PROD_EFET.CDCLIENTE, C_PROD_EFET.CDDESTFILI, C_PROD_EFET.QTCOMENSAIS, C_PROD_EFET.SETOR,
                            C_PROD_EFET.VRPEFATCORCONS, 0, 0, 0, 0);
                            
                    DELETE FROM CONSPLAN 
                     WHERE NRCONSPLAN = V_NRCONSPLAN
                       AND DTCONSPLAN = C_PROD_EFET.DTPREVRETI
                       AND CDFILICPLA = C_PROD_EFET.CDFILIAL
                       AND CDSERVCPLA = C_PROD_EFET.CDSERVFILI
                       AND CDPRATCONSPL = C_PROD_EFET.CDPRATO
                       AND CDFAPRATCPLA = C_PROD_EFET.CDFILAUXPRAT
                       AND CDPRODCPLA = C_PROD_EFET.CDPRODUTO
                       AND NVL(IDTPREQPROD, 'P') = C_PROD_EFET.IDTIPOPROD;

                    V_NRPRPREVRETI := LPAD(V_NRPRPREVRETI + 1, 4, 0);
                END LOOP;
                
                FOR C_ITENS_CONS IN 
                    (-- CARREGA INSUMO DOS PRATOS/PRODUTOS QUE N�O FORAM EFETIVADOS + CONSUMO
                    SELECT CP.CDFILICPLA AS CDFILIAL, CP.CDSERVCPLA AS CDSERVFILI, CP.DTCONSPLAN AS DTPREVRETI,
                           CP.CDPRODCPLA AS CDPRODUTO, CP.QTCONSPLAN AS QTTOTAL,         
                           DECODE(CP.CDPRATCONSPL, 'PPPPPPPPPP', NVL(PARAM.CDPRACONSPER, 'PPPPPPPPPP'), DECODE(CP.CDPRATCONSPL, 'FFFFFFFFFF', NVL(PARAM.CDPRACONSFIX, 'FFFFFFFFFF'), CP.CDPRATCONSPL)) AS CDPRATO,
                           DECODE(CP.CDFAPRATCPLA, 'PP', NVL(PARAM.CDTPRCONSPER, 'PP'), DECODE(CP.CDFAPRATCPLA, 'FF', NVL(PARAM.CDTPRCONSFIX, 'FF'), CP.CDFAPRATCPLA)) AS CDFILAUXPRAT, 
                           CP.CDTPPRATCPLA AS CDTIPOPRAT,
                           CP.IDCONSPLAN AS IDPREVRETI, DECODE(CP.CDCLIECPLA, NULL, 'XXX', CP.CDCLIECPLA) AS CDCLIENTE, 
                           DECODE(CP.CDDESTFICPLA, NULL, 'XXX', CP.CDDESTFICPLA) AS CDDESTFILI, CP.QTCOMESTCPLA AS QTCOMENSAIS,
                           NVL(VERIFICA_SETORCOZ_COZ(CP.CDFILICPLA, CP.CDTPPRATCPLA, CP.CDPRODCPLA), '  ') AS SETOR,
                           NVL(CP.VRPEFATCORCONS, 0) VRPEFATCORCONS, CP.QTCONSPLANT1, CP.QTCONSPLANT2, 
                           CP.QTCONSPLANT3, CP.QTCONSPLANT4
                      FROM CONSPLAN CP
                     INNER JOIN PARAMPLANEJA PARAM ON PARAM.CDFILIAL = V_CDFILIAL
                     WHERE CP.NRCONSPLAN = V_NRCONSPLAN
                       AND CP.CDFILICPLA = V_CDFILIAL
                       AND CP.CDSERVCPLA = C_SERVTRANS.CDSERVFILI
                       AND INSTR(P_IDPRODUTOS, CP.IDCONSPLAN) > 0
                       )
                LOOP     
                    INSERT INTO PREVRETI (NRPRPREVRETI, CDFILIAL, CDSERVFILI, DTPREVRETI, 
                                          DTLIMITERETI, CDPRODUTO, QTPREVRETI, 
                                          CDPRATO, CDFILAUXPRAT, CDTIPOPRAT, 
                                          NRREQUEXTR, IDPREVRETI, HRLIMITERETI, CDOPERADOR, IDPREVTPPRAT)
                    VALUES (V_NRPRPREVRETI, C_ITENS_CONS.CDFILIAL, C_ITENS_CONS.CDSERVFILI, C_ITENS_CONS.DTPREVRETI, 
                            C_ITENS_CONS.DTPREVRETI, C_ITENS_CONS.CDPRODUTO, C_ITENS_CONS.QTTOTAL, 
                            DECODE(C_SERVTRANS.IDUTRETIPRAT, 'S', C_ITENS_CONS.CDPRATO, NULL),
                            DECODE(C_SERVTRANS.IDUTRETIPRAT, 'S', C_ITENS_CONS.CDFILAUXPRAT, NULL),  
                            DECODE(C_SERVTRANS.IDUTRETIPRAT, 'S', C_ITENS_CONS.CDTIPOPRAT, NULL),
                            '0000000000', C_ITENS_CONS.IDPREVRETI, C_SERVTRANS.HRINICATEN, P_CDOPERADOR, C_SERVTRANS.IDUTRETIPRAT);     

                    INSERT INTO CONSPLAN (NRCONSPLAN, CDFILICPLA, CDSERVCPLA, DTCONSPLAN, 
                                          CDPRODCPLA, CDTPPRATCPLA, CDPRATCONSPL, CDFAPRATCPLA, 
                                          QTCONSPLAN, IDCONSPLAN, DTLIMITECPLA, HRLIMITECPLA, 
                                          CDCLIECPLA, CDDESTFICPLA, QTCOMESTCPLA, CDSETOCONSPL,
                                          VRPEFATCORCONS, QTCONSPLANT1, QTCONSPLANT2, 
                                          QTCONSPLANT3, QTCONSPLANT4)
                    VALUES (P_NRCONSPLAN, C_ITENS_CONS.CDFILIAL, C_ITENS_CONS.CDSERVFILI, C_ITENS_CONS.DTPREVRETI, 
                            C_ITENS_CONS.CDPRODUTO, C_ITENS_CONS.CDTIPOPRAT, C_ITENS_CONS.CDPRATO, C_ITENS_CONS.CDFILAUXPRAT, 
                            C_ITENS_CONS.QTTOTAL, C_ITENS_CONS.IDPREVRETI, C_ITENS_CONS.DTPREVRETI, C_SERVTRANS.HRINICATEN,
                            C_ITENS_CONS.CDCLIENTE, C_ITENS_CONS.CDDESTFILI, C_ITENS_CONS.QTCOMENSAIS, C_ITENS_CONS.SETOR,
                            C_ITENS_CONS.VRPEFATCORCONS, C_ITENS_CONS.QTCONSPLANT1, C_ITENS_CONS.QTCONSPLANT2, 
                            C_ITENS_CONS.QTCONSPLANT3, C_ITENS_CONS.QTCONSPLANT4);

                    V_NRPRPREVRETI := LPAD(V_NRPRPREVRETI + 1, 4, 0);

                END lOOP;
            END LOOP;

            DELETE FROM LISTA WHERE NRLISTA = V_NRLISTA;
            DELETE FROM CONSPLAN WHERE NRCONSPLAN = V_NRCONSPLAN;
        END IF;
       /*FIM - Para servi�os transportada � verificado se houve distribui��o efetivada dos itens*/                                       


	  IF (V_CDSERVFILIAUX IS NOT NULL) THEN
          CONSUMO_PLANEJADO_PLA(V_CDFILIAL, 
                                V_CDSERVFILIAUX, 
                                P_DTINICIAL, 
                                P_DTFINAL, 
                                P_IDARQUIVO, 
                                P_IDPRODUTOS, 
                                P_IDSEPPRATO, 
                                P_PEACRESCIMO, 
                                P_IDARREDOND, 
                                P_NRCONSPLAN, 
                                P_CDPRODUTOINI, 
                                V_CDPRODUTOFIN, 
                                P_CDOPERADOR, 
                                P_STDTINICIAL, 
                                P_STDTFINAL); 
      END IF;

   V_CDSERVFILIAUX := '';
   V_CDFILIAL := '';
   END LOOP; /* LOOP DOS SERVI�OS */
   CLOSE C_FILIAIS;
END;
/

-- VERSAO --
BEGIN ATUVEROBJ('REQUISICAO_ANALITICA_SETOR_PLA','6.35.024'); END;
/

