CREATE OR REPLACE PROCEDURE CALCULA_TAXAAEROPORTO
   (P_CDFILIAL    IN  NOTAFISCAL.CDFILIAL%TYPE,
    P_CDFILIPROC  IN  FILIAL.CDFILIAL%TYPE,
    P_NRLANCTONF  IN  NOTAFISCAL.NRLANCTONF%TYPE,
    P_IDTIPMANUALAP IN TRAB_APURAC.IDTIPMANUALAP%TYPE,
    P_VRTXAERORAP   IN  FLOAT,
    P_VRTXAERODAP   IN  FLOAT)
AS
   V_IDNACSERV     VARCHAR2(01);
   V_CDPRAEROIN    PARAMCOMIS.CDPRAEROIN%TYPE;
   V_NMPRAEROIN    PRODUTO.NMPRODUTO%TYPE;
   V_CDARVPROD     PRODUTO.CDARVPROD%TYPE;
   V_CDARVPRODINT  PRODUTO.CDARVPROD%TYPE;
   V_CDPRODUTO     PRODUTO.CDPRODUTO%TYPE;
   V_NMPRODUTO     PRODUTO.NMPRODUTO%TYPE;
   V_VRTAXAAERO    CIAFILI.VRALTXPORT%TYPE;
   V_VRTAXAAEROME  CIAFILI.VRALTXPORT%TYPE;
   V_NRSEQITPROD   ITEMPRODUTO.NRSEQITPROD%TYPE;
   V_VRTXAERODAP   TRAB_APURAC.VRTXAERODAP%TYPE;
   V_NRDECITOTANF  PARAMGERAL.NRDECITOTANF%TYPE;
   V_SEPPRDSERV    PARFATCOMIS.IDSEPPRDSERV%TYPE;

BEGIN
   SELECT MAX(PR.CDPRODUTO), MAX(PR.CDPRAEROIN), MAX(P.NMPRODUTO), MAX(I.NMPRODUTO), MAX(P.CDARVPROD), MAX(I.CDARVPROD)
   INTO V_CDPRODUTO, V_CDPRAEROIN, V_NMPRODUTO, V_NMPRAEROIN, V_CDARVPROD, V_CDARVPRODINT
   FROM PRODUTO P, PRODUTO I, PARAMCOMIS PR
   WHERE PR.CDPRODUTO  = P.CDPRODUTO    AND
         PR.CDPRAEROIN = I.CDPRODUTO(+) AND
         PR.CDFILIAL   = P_CDFILIAL;

   IF V_CDPRODUTO IS NULL THEN
      raise_application_error(-20501, 'Inf_ProTax', True);
   END IF;

   IF V_CDPRAEROIN IS NULL THEN
      raise_application_error(-20501, 'Inf_ProTax', True);
   END IF;

   V_IDNACSERV := P_IDTIPMANUALAP;

   V_VRTXAERODAP := P_VRTXAERODAP;

   IF V_IDNACSERV = '2' THEN
      V_CDPRODUTO := V_CDPRAEROIN;
      V_NMPRODUTO := V_NMPRAEROIN;
      V_CDARVPROD := V_CDARVPRODINT;
   ELSE
      V_VRTXAERODAP := 0;
   END IF;

   IF V_NRDECITOTANF = 0 THEN
      V_VRTAXAAERO   := ROUND(P_VRTXAERORAP,0);
   ELSE
      V_VRTAXAAERO   := P_VRTXAERORAP;
   END IF;
   V_VRTAXAAEROME := V_VRTXAERODAP;

   SELECT LPAD(TO_CHAR(TO_NUMBER(MAX(NVL(NRSEQITPROD, 0))) + 1),4,'0')
   INTO V_NRSEQITPROD
   FROM ITEMPRODUTO
   WHERE CDFILIAL   = P_CDFILIPROC AND
         NRLANCTONF = P_NRLANCTONF;

   IF V_NRSEQITPROD IS NULL THEN
      V_NRSEQITPROD := LPAD('1',4,'0');
   END IF;

   SELECT NVL(MAX(IDSEPPRDSERV),'N')
     INTO V_SEPPRDSERV
     FROM PARFATCOMIS;

   IF NVL(V_VRTAXAAERO,0) > 0 THEN
      IF V_SEPPRDSERV = 'N' THEN
         INSERT INTO ITEMPRODUTO (CDFILIAL, NRLANCTONF, NRSEQITPROD,
                                  CDPRODUTO, CDPRODEMIS,
                                  DSPRODEMIS, IDATUVRESTOQ, QTITEMPROD,
                                  VRUNITITEM, VRDESCITEM,
                                  VRTOTAITEM,
                                  VRCONTITEM, VRBRUTITEM, VRITMOEDESTR,
                                  IDCONFORITEM, IDERROSITEM, IDAVISOSITEM)
         VALUES (P_CDFILIPROC, P_NRLANCTONF, V_NRSEQITPROD,
                 V_CDPRODUTO, '1'||V_CDARVPROD,
                 V_NMPRODUTO, 'N', 1,
                 V_VRTAXAAERO, 0,
                 V_VRTAXAAERO,
                 V_VRTAXAAERO,
                 V_VRTAXAAERO,
                 V_VRTAXAAEROME,
                 'N', '00000','00000');
      END IF;
   END IF;
END;

/