CREATE OR REPLACE PROCEDURE APAGA_PREVPAXCIA_PROD
(P_CDFILIAL IN VARCHAR2,
 P_CDFILIPROC IN VARCHAR2, 
 P_NRPREVISAOPROD IN NUMBER,
 P_CDCIA IN VARCHAR2,
 P_CDOPERADOR IN VARCHAR2,
 P_NRORG IN NUMBER DEFAULT 1,
 P_NRLISTAERROS IN OUT NUMBER
)
AS
   V_CONTADOR NUMBER;
   V_SGCIA VARCHAR2(20);
   V_DATA VARCHAR2(50);
   V_IDPREVISAOPROD VARCHAR2(1);
   V_EXISTE_VOO NUMBER;
BEGIN
   SELECT MAX(CO.SGCIA),  MAX(TO_CHAR(PD.DTPREVISAOPROD, 'DD/MM/YYYY')), MAX(P.IDPREVISAOPROD), COUNT(1)
     INTO V_SGCIA, V_DATA, V_IDPREVISAOPROD, V_CONTADOR
     FROM PREVPAXCIAPRODM P
          INNER JOIN PREVPAXPRODM PD ON PD.CDFILIAL = P.CDFILIAL AND
                                        PD.NRPREVISAOPROD = P.NRPREVISAOPROD
          INNER JOIN COMPANHIA CO ON CO.CDCIA = P.CDCIA
    WHERE P.CDFILIAL = P_CDFILIAL
      AND P.NRPREVISAOPROD = P_NRPREVISAOPROD
      AND P.CDCIA = P_CDCIA;

   IF V_IDPREVISAOPROD <> 'P' THEN
      /*Previsao da companhia [0] na data $param[1] ja aprovada*/
      INSERE_LISTA_ERROS(P_CDFILIPROC, 'APPERRMSGSTR' || 'APP-00052' || '$$' || V_SGCIA || 'APPERRMSGEND',
                         P_CDOPERADOR, P_NRORG, P_NRLISTAERROS);
      RETURN;
   END IF;

   /*Apaga os voos da previsao da companhia*/
   FOR C_VOOS IN
   (
   SELECT NRVOO, CDTRECHO
     FROM PREVPAXVOOPRODM
    WHERE CDFILIAL = P_CDFILIAL
      AND NRPREVISAOPROD = P_NRPREVISAOPROD
      AND CDCIA = P_CDCIA
   ) LOOP
      APAGA_PREVPAXVOO_PROD(P_CDFILIAL, P_CDFILIPROC, P_NRPREVISAOPROD, P_CDCIA, C_VOOS.NRVOO, C_VOOS.CDTRECHO, P_CDOPERADOR, P_NRORG, P_NRLISTAERROS);
   END LOOP;

   SELECT COUNT(1)
     INTO V_EXISTE_VOO
     FROM PREVPAXVOOPRODM
    WHERE CDFILIAL = P_CDFILIAL
      AND NRPREVISAOPROD = P_NRPREVISAOPROD
      AND CDCIA = P_CDCIA;
   
   IF V_EXISTE_VOO = 0 THEN
     /*Apaga a previsao da companhia*/
     DELETE FROM PREVPAXCIAPRODM
      WHERE CDFILIAL = P_CDFILIAL
        AND NRPREVISAOPROD = P_NRPREVISAOPROD
        AND CDCIA = P_CDCIA;
   END IF;
END;
/