CREATE OR REPLACE PROCEDURE VALIDA_ITEMAUTF_OL (P_CDPRODINI      IN VARCHAR2,
                                                P_CDPRODFIN      IN VARCHAR2,
                                                P_TPRODUTO       IN VARCHAR2,
                                                P_CDFILIOL       IN VARCHAR2,
                                                P_TCDFILIOL      IN VARCHAR2,
                                                P_CDFILIAL       IN VARCHAR2,
                                                P_TCDFILIAL      IN VARCHAR2,
                                                P_SUBGRUPO       IN VARCHAR2,
                                                P_CDGRUPPROD     IN VARCHAR2,
                                                P_CDOPERADOR    IN VARCHAR2,
                                                P_TROTA          IN VARCHAR2,
                                                P_ROTA           IN VARCHAR2,
                                                P_IDPEDEXTRA     IN VARCHAR2,
                                                P_TDTENTR        IN VARCHAR2,
                                                P_DTENTRINI      IN DATE,
                                                P_DTENTRFIN      IN DATE,
                                                P_ERROS          OUT VARCHAR2)
IS
   V_CONTADOR        FLOAT := 0;
   V_NRSEQRUPTURAOL  RUPTURAOL.NRSEQRUPTURAOL%TYPE;
   V_IDITEMRUPTURA   VARCHAR2(1);
   V_CDFILIOPELOG    AUTOFORNE.CDFILIOPELOG%TYPE;
BEGIN
   P_ERROS := 'T';
   FOR C_ITEMAUTF IN (SELECT CDFILDEST, CDFILLANC, NRAUTOFORN, CDPRODUTO, NMPRODUTO, CDMARCA, CDFILIOPELOG,
                             NMFILIAL, NMFILDEST, SGUNIDADE, CDARVPROD, DTPROGENTAF, DTNOVAENTRAF, CDERRO,
                             QTPROGENTAF, QTNOVAPROGAF, NRPRIORIDADE
                        FROM TABLE(VERIFICA_INCONS_ITAF_OL(P_CDPRODINI,
                                                           P_CDPRODFIN,
                                                           P_TPRODUTO,
                                                           P_CDFILIOL,
                                                           P_TCDFILIOL,
                                                           P_CDFILIAL,
                                                           P_TCDFILIAL,
                                                           P_SUBGRUPO,
                                                           P_CDGRUPPROD,
                                                           P_CDOPERADOR,
                                                           P_TROTA,
                                                           P_ROTA,
                                                           P_IDPEDEXTRA,
                                                           P_TDTENTR,
                                                           P_DTENTRINI,
                                                           P_DTENTRFIN)))
   LOOP
      V_CONTADOR := V_CONTADOR + 1;
      IF V_CONTADOR = 1 THEN
         SELECT LPAD(NVL(MAX(NRSEQRUPTURAOL), 0) + 1, 10, 0) AS NRSEQRUPTURAOL
           INTO V_NRSEQRUPTURAOL
           FROM RUPTURAOL;
         INSERT INTO RUPTURAOL(NRSEQRUPTURAOL, CDFILIAL, DTRUPTURAOL, CDOPERADOR, IDSITUACAO, IDGERARUTURA)
         VALUES (V_NRSEQRUPTURAOL, C_ITEMAUTF.CDFILIOPELOG, TRUNC(SYSDATE), P_CDOPERADOR, 'P', 'E');

         V_CDFILIOPELOG  := C_ITEMAUTF.CDFILIOPELOG;
      END IF;
      IF LENGTH(C_ITEMAUTF.CDERRO) = 0 THEN
         V_IDITEMRUPTURA := 'N';

      ELSE
         /*Existe algum item inconsistente e retorna que houve inconsistência*/
         V_IDITEMRUPTURA := 'S';
         P_ERROS         := 'S';
      END IF;
      UPDATE ITEMAUTF
         SET NRSEQRUPTURAOL   = V_NRSEQRUPTURAOL,
             IDITEMRUPTURA    = V_IDITEMRUPTURA,
             IDTPGERARUP      = NULL,
             LISTACDSUBGRPROD = SUBSTR(P_SUBGRUPO, 1, 500)
       WHERE CDFILDEST      = C_ITEMAUTF.CDFILDEST
         AND CDFILLANC      = C_ITEMAUTF.CDFILLANC
         AND NRAUTOFORN     = C_ITEMAUTF.NRAUTOFORN
         AND CDMARCA        = C_ITEMAUTF.CDMARCA
         AND CDPRODUTO      = C_ITEMAUTF.CDPRODUTO
         AND DTPROGENTAF    = C_ITEMAUTF.DTPROGENTAF;
   END LOOP;
   IF V_CONTADOR = 0 THEN
      /*Não há dados*/
      P_ERROS := 'T';
   ELSE
      IF P_ERROS = 'T' THEN
         /*Há dados e não há erros*/
         P_ERROS := 'N';
         /*Conclui a ruptura sem erros.*/
         UPDATE RUPTURAOL
            SET IDSITUACAO     = 'C'
          WHERE NRSEQRUPTURAOL = V_NRSEQRUPTURAOL
            AND CDFILIAL       = V_CDFILIOPELOG;
      END IF;
   END IF;
END;
/

-- VERSAO --
BEGIN ATUVEROBJ('VALIDA_ITEMAUTF_OL','6.39.016'); END;
/