create or replace PROCEDURE LIMPEZA_DADOS_JOB
IS

V_CDSEQUENCIAL    VARCHAR2(20);
V_TOT_PROC        NUMBER;
V_TO_PROC_CONC    NUMBER;

BEGIN
   FOR C_DADOS_LIMPEZA IN (SELECT 'S' IDCHECK, SISTLIMPEZA.IDLIMPEZA, TRUNC(TRABLIMPEZA.DTLIMPDADOSATE) DTLIMPDADOSATE,
                                  TRABLIMPEZA.IDSTATUSLIMPEZA, SISTLIMPEZA.NMSISTEMALIMP,
                                  TRABLIMPEZA.IDTHREADLIMPEZA, TRABLIMPEZA.CDOPERADOR,
                                  TRABLIMPEZA.HRINILIMPEZA, TRABLIMPEZA.HRFINLIMPEZA,
                                  TO_DATE(TO_CHAR(SYSDATE,'DDMMYYYY') || HRINILIMPEZA||'00','DDMMYYYYHH24MISS') DTHRINILIMPEZA ,  RPAD(' ' , 40 , ' ') NMOPERADOR,
                                  TRABLIMPEZA.IDLIMPEZACONCERRO
                             FROM TRABLIMPEZA, SISTLIMPEZA
                            WHERE SISTLIMPEZA.IDLIMPEZA = TRABLIMPEZA.IDLIMPEZA(+)
                              AND TRABLIMPEZA.IDSTATUSLIMPEZA in ('E','P','A')
                            ORDER BY SISTLIMPEZA.IDORDLIMPEZA) LOOP

      IF C_DADOS_LIMPEZA.IDLIMPEZA = 'CMP/SUP' THEN
         LIMPEZA_CMPSUP(V_CDSEQUENCIAL, C_DADOS_LIMPEZA.DTLIMPDADOSATE, C_DADOS_LIMPEZA.NMSISTEMALIMP, C_DADOS_LIMPEZA.NMOPERADOR, C_DADOS_LIMPEZA.IDLIMPEZA);
      ELSE
         IF C_DADOS_LIMPEZA.IDLIMPEZA = 'CTB' THEN
            BEGIN
               SELECT A.TOT_PROC, B.TO_PROC_CONC
                 INTO V_TOT_PROC, V_TO_PROC_CONC
                 FROM (SELECT count(*) AS TOT_PROC
                         FROM TRABLIMPEZA
                        WHERE IDLIMPEZA = 'CMP/SUP') A,
                      (SELECT count(*) AS TO_PROC_CONC
                         FROM TRABLIMPEZA
                        WHERE IDLIMPEZA = 'CMP/SUP'
                          AND IDSTATUSLIMPEZA = 'C'
                          AND IDLIMPEZACONCERRO <> 'S') B;
            EXCEPTION
               WHEN NO_DATA_FOUND THEN
                   V_TOT_PROC := 0; V_TO_PROC_CONC := 0;
            END;

            IF ((V_TOT_PROC = 0) OR (V_TOT_PROC = V_TO_PROC_CONC)) THEN
               LIMPEZA_LANCCONT(V_CDSEQUENCIAL, C_DADOS_LIMPEZA.DTLIMPDADOSATE, C_DADOS_LIMPEZA.NMSISTEMALIMP, C_DADOS_LIMPEZA.NMOPERADOR, C_DADOS_LIMPEZA.IDLIMPEZA);
            END IF;
         ELSE
            IF C_DADOS_LIMPEZA.IDLIMPEZA = 'CUS/PLA' THEN
               BEGIN
                  SELECT A.TOT_PROC, B.TO_PROC_CONC
                    INTO V_TOT_PROC, V_TO_PROC_CONC
                    FROM (SELECT count(*) AS TOT_PROC
                            FROM TRABLIMPEZA
                           WHERE IDLIMPEZA IN ('CMP/SUP', 'CTB')) A,
                         (SELECT count(*) AS TO_PROC_CONC
                            FROM TRABLIMPEZA
                           WHERE IDLIMPEZA IN ('CMP/SUP', 'CTB')
                             AND IDSTATUSLIMPEZA = 'C'
                             AND IDLIMPEZACONCERRO <> 'S') B;
               EXCEPTION
                  WHEN NO_DATA_FOUND THEN
                      V_TOT_PROC := 0; V_TO_PROC_CONC := 0;
               END;

               IF ((V_TOT_PROC = 0) OR (V_TOT_PROC = V_TO_PROC_CONC)) THEN
                  LIMPA_TABELAS_PLA(V_CDSEQUENCIAL, C_DADOS_LIMPEZA.DTLIMPDADOSATE, C_DADOS_LIMPEZA.NMSISTEMALIMP, C_DADOS_LIMPEZA.NMOPERADOR, C_DADOS_LIMPEZA.IDLIMPEZA);
               END IF;
            ELSE
               IF C_DADOS_LIMPEZA.IDLIMPEZA = 'EST' THEN
                  BEGIN
                     SELECT A.TOT_PROC, B.TO_PROC_CONC
                       INTO V_TOT_PROC, V_TO_PROC_CONC
                       FROM (SELECT count(*) AS TOT_PROC
                               FROM TRABLIMPEZA
                              WHERE IDLIMPEZA IN ('CMP/SUP', 'CTB', 'CUS/PLA')) A,
                            (SELECT count(*) AS TO_PROC_CONC
                               FROM TRABLIMPEZA
                              WHERE IDLIMPEZA IN ('CMP/SUP', 'CTB', 'CUS/PLA')
                                AND IDSTATUSLIMPEZA = 'C'
                                AND IDLIMPEZACONCERRO <> 'S') B;
                  EXCEPTION
                     WHEN NO_DATA_FOUND THEN
                         V_TOT_PROC := 0; V_TO_PROC_CONC := 0;
                  END;

                  IF ((V_TOT_PROC = 0) OR (V_TOT_PROC = V_TO_PROC_CONC)) THEN
                     LIMPEZA_DADOEST(V_CDSEQUENCIAL, C_DADOS_LIMPEZA.DTLIMPDADOSATE, C_DADOS_LIMPEZA.NMSISTEMALIMP, C_DADOS_LIMPEZA.NMOPERADOR, C_DADOS_LIMPEZA.IDLIMPEZA);
                  END IF;
               ELSE
                  IF C_DADOS_LIMPEZA.IDLIMPEZA = 'VND' THEN
                     BEGIN
                        SELECT A.TOT_PROC, B.TO_PROC_CONC
                          INTO V_TOT_PROC, V_TO_PROC_CONC
                          FROM (SELECT count(*) AS TOT_PROC
                                  FROM TRABLIMPEZA
                                 WHERE IDLIMPEZA IN ('CMP/SUP', 'CTB', 'CUS/PLA', 'EST')) A,
                               (SELECT count(*) AS TO_PROC_CONC
                                  FROM TRABLIMPEZA
                                 WHERE IDLIMPEZA IN ('CMP/SUP', 'CTB', 'CUS/PLA', 'EST')
                                   AND IDSTATUSLIMPEZA = 'C'
                                   AND IDLIMPEZACONCERRO <> 'S') B;
                     EXCEPTION
                        WHEN NO_DATA_FOUND THEN
                            V_TOT_PROC := 0; V_TO_PROC_CONC := 0;
                     END;

                     IF ((V_TOT_PROC = 0) OR (V_TOT_PROC = V_TO_PROC_CONC)) THEN
                        LIMPEZA_VENDAS(V_CDSEQUENCIAL, C_DADOS_LIMPEZA.DTLIMPDADOSATE, C_DADOS_LIMPEZA.NMSISTEMALIMP, C_DADOS_LIMPEZA.NMOPERADOR, C_DADOS_LIMPEZA.IDLIMPEZA);
                     END IF;
                  ELSE
                     IF C_DADOS_LIMPEZA.IDLIMPEZA = 'DFE/DFS' THEN
                        BEGIN
                           SELECT A.TOT_PROC, B.TO_PROC_CONC
                             INTO V_TOT_PROC, V_TO_PROC_CONC
                             FROM (SELECT count(*) AS TOT_PROC
                                     FROM TRABLIMPEZA
                                    WHERE IDLIMPEZA IN ('CMP/SUP', 'CTB', 'CUS/PLA', 'EST', 'VND')) A,
                                  (SELECT count(*) AS TO_PROC_CONC
                                     FROM TRABLIMPEZA
                                    WHERE IDLIMPEZA IN ('CMP/SUP', 'CTB', 'CUS/PLA', 'EST', 'VND')
                                      AND IDSTATUSLIMPEZA = 'C'
                                      AND IDLIMPEZACONCERRO <> 'S') B;
                        EXCEPTION
                           WHEN NO_DATA_FOUND THEN
                               V_TOT_PROC := 0; V_TO_PROC_CONC := 0;
                        END;

                        IF ((V_TOT_PROC = 0) OR (V_TOT_PROC = V_TO_PROC_CONC)) THEN
                            LIMPEZA_NOTAFISCAL(V_CDSEQUENCIAL, C_DADOS_LIMPEZA.DTLIMPDADOSATE, C_DADOS_LIMPEZA.NMSISTEMALIMP, C_DADOS_LIMPEZA.NMOPERADOR, C_DADOS_LIMPEZA.IDLIMPEZA);
                        END IF;
                     ELSE
                        IF C_DADOS_LIMPEZA.IDLIMPEZA = 'GER' THEN
                           BEGIN
                              SELECT A.TOT_PROC, B.TO_PROC_CONC
                                INTO V_TOT_PROC, V_TO_PROC_CONC
                                FROM (SELECT count(*) AS TOT_PROC
                                        FROM TRABLIMPEZA
                                       WHERE IDLIMPEZA IN ('CMP/SUP', 'CTB', 'CUS/PLA', 'EST', 'VND', 'DFE/DFS')) A,
                                     (SELECT count(*) AS TO_PROC_CONC
                                        FROM TRABLIMPEZA
                                       WHERE IDLIMPEZA IN ('CMP/SUP', 'CTB', 'CUS/PLA', 'EST', 'VND', 'DFE/DFS')
                                         AND IDSTATUSLIMPEZA = 'C'
                                         AND IDLIMPEZACONCERRO <> 'S') B;
                           EXCEPTION
                              WHEN NO_DATA_FOUND THEN
                                  V_TOT_PROC := 0; V_TO_PROC_CONC := 0;
                           END;

                           IF ((V_TOT_PROC = 0) OR (V_TOT_PROC = V_TO_PROC_CONC)) THEN
                               LIMPEZA_DADOGER(V_CDSEQUENCIAL, C_DADOS_LIMPEZA.DTLIMPDADOSATE, C_DADOS_LIMPEZA.NMSISTEMALIMP, C_DADOS_LIMPEZA.NMOPERADOR, C_DADOS_LIMPEZA.IDLIMPEZA);
                           END IF;
                        END IF;
                     END IF;
                  END IF;
               END IF;
            END IF;
         END IF;
      END IF;
   END LOOP;
END;
/

-- VERSAO --
BEGIN ATUVEROBJ('LIMPEZA_DADOS_JOB','6.49.012'); END;
/

