CREATE OR REPLACE PROCEDURE APAGA_PREVPAXDATA_PROD
(P_CDFILIAL IN VARCHAR2,
 P_CDFILIPROC IN VARCHAR2,
 P_NRPREVISAOPROD IN NUMBER,
 P_CDOPERADOR IN VARCHAR2,
 P_NRORG IN NUMBER DEFAULT 1,
 P_NRLISTAERROS IN OUT NUMBER
)
AS
   V_CONTADOR NUMBER;
   V_DTPREVISAO DATE;
   V_IDPREVISAOPROD VARCHAR2(1);
   V_EXISTE_CIA NUMBER;
BEGIN
   /*Verifica se ha geracoes para o periodo que ja estejam aprovadas ou com checklist gerados. Se sim, bloqueia a operacao.*/
   SELECT MAX(DTPREVISAOPROD), MAX(P.IDPREVISAOPROD), COUNT(1)
     INTO V_DTPREVISAO, V_IDPREVISAOPROD, V_CONTADOR
     FROM PREVPAXPRODM P
    WHERE P.CDFILIAL = P_CDFILIAL
      AND P.NRPREVISAOPROD = P_NRPREVISAOPROD;
   IF V_IDPREVISAOPROD <> 'P' THEN
      /*Previsao da data [0] ja aprovada*/
      INSERE_LISTA_ERROS(P_CDFILIPROC, 'APPERRMSGSTR' || 'APP-00053' || '$$' || TO_CHAR(V_DTPREVISAO, 'DD/MM/YYYY') || 'APPERRMSGEND',
                         P_CDOPERADOR, P_NRORG, P_NRLISTAERROS);
      RETURN;
   END IF;

   
   FOR C_CIAS IN
   (
   SELECT CDCIA
     FROM PREVPAXCIAPRODM
    WHERE CDFILIAL = P_CDFILIAL
      AND NRPREVISAOPROD = P_NRPREVISAOPROD
   ) LOOP
      APAGA_PREVPAXCIA_PROD(P_CDFILIAL, P_CDFILIPROC, P_NRPREVISAOPROD, C_CIAS.CDCIA, P_CDOPERADOR, P_NRORG, P_NRLISTAERROS);
   END LOOP;

   SELECT COUNT(1)
     INTO V_EXISTE_CIA
     FROM PREVPAXCIAPRODM
    WHERE CDFILIAL = P_CDFILIAL
      AND NRPREVISAOPROD = P_NRPREVISAOPROD;

        
   IF V_EXISTE_CIA = 0 THEN
     DELETE FROM PREVPAXPRODM
      WHERE CDFILIAL = P_CDFILIAL
        AND NRPREVISAOPROD = P_NRPREVISAOPROD;
   END IF;
     
END;
/