create or replace TRIGGER GERA_PEDIDO_ANA AFTER INSERT ON ITEMPRODUTO
FOR EACH ROW
declare
  V_AUDITORIA          VARCHAR2(10);
  V_CDOPERADOR         VARCHAR2(12);
  V_CDFORNECED         VARCHAR2(21);
  V_NEWNRINSPECAUDI    VARCHAR2(3);
  V_TIPOANA            VARCHAR2(1);
  V_NRLOTEFORN         VARCHAR2(20);
  V_SEQUENCIAL         VARCHAR2(20);
  V_SETORANT           VARCHAR2(4);
  V_IDTPRESPINSPRSP    varchar2(4);
  V_CDINSPECEXIST      VARCHAR2(10);
  V_CDRESPINSPEC       VARCHAR2(5);
  V_NMRESPINSPEC       VARCHAR2(50);
  V_VRPONTRESINS       FLOAT;
  V_IDFAIXRESINS       VARCHAR2(1);
  V_VRINIFAIXRES       FLOAT;
  V_VRFINFAIXRES       FLOAT;
  V_DSLIMIINSP         VARCHAR2(50);
  VN_CDRESPINSPEC      VARCHAR2(5);
  VN_NMRESPINSPEC      VARCHAR2(50);
  VN_VRPONTRESINS      FLOAT;
  VN_IDFAIXRESINS      VARCHAR2(1);
  VN_VRINIFAIXRES      FLOAT;
  VN_VRFINFAIXRES      FLOAT;
  VX_CDINSPECAO        VARCHAR2(10);
  VL_CDRESPINSPEC      VARCHAR2(5);
  VL_NMRESPINSPEC      VARCHAR2(50);
  VL_VRPONTRESINS      FLOAT;
  VL_IDFAIXRESINS      VARCHAR2(1);
  VL_VRINIFAIXRES      FLOAT;
  VL_VRFINFAIXRES      FLOAT;
  VNU_CDRESPINSPEC     VARCHAR2(5);
  VNU_NMRESPINSPEC     VARCHAR2(50);
  VNU_VRPONTRESINS     FLOAT;
  VNU_IDFAIXRESINS     VARCHAR2(1);
  VNU_VRINIFAIXRES     FLOAT;
  VNU_VRFINFAIXRES     FLOAT;
  V_TOTAL1             VARCHAR(5);
  V_TOTAL2             VARCHAR(5);
  V_CTINSPECPROD       VARCHAR(5);
  V_CDSETOR            VARCHAR2(4);
  V_INSPECPROD         VARCHAR2(3);
  V_IDORIGINSPEC       VARCHAR2(5);
  V_INSPECRESP         VARCHAR2(3);
  V_VEZES              VARCHAR2(4);
  V_CDPRODESTO         VARCHAR2(10);
  V_IDENTRSAIDOP       VARCHAR2(1);
  V_IDATUESTTPOP       VARCHAR2(1);
  V_CDTIPOOPER         VARCHAR2(2);
  V_EXISTITEM          FLOAT;
  V_IDAUDIIL           VARCHAR2(1);
  V_TPOPERANA          VARCHAR2(2);
  V_DTVALANA           DATE;
  V_CDFILIRECE         VARCHAR2(04);
  V_COUNTCORRETO       VARCHAR2(01);
  V_NRSEQINSUMOANA     NUMBER;
  V_NRSEQRECURANA      NUMBER;
  V_RECURSOHAB         VARCHAR2(3);
  V_RECURSOEQUIP       VARCHAR2(10);
  V_SEQINSUMOANA       VARCHAR2(20);
  V_SEQRECURSOANA      VARCHAR2(20);
  V_IDVDANALISE        VARCHAR2(1);
  V_DSVALIDADE         VARCHAR2(4000);
  V_CTRLVERSAO         NUMBER;
  V_CDVERSAO           VARCHAR2(10);
  V_DTVIGINICIO        DATE;
  V_DTVIFGFINAL        DATE;
  V_NRFERE             NUMBER;
  V_DSREFERENCIA       BLOB;
  V_DSINSPROD          LONG RAW;
  V_CDVERSAOREF        VARCHAR2(10);
  V_CDPRODFERE         VARCHAR2(10);
  VX_REF               VARCHAR2(10);
  VX_ORDEM             VARCHAR2(10);
  V_DSREFBIBIO         BLOB;
  V_CDVERSAOBIO        VARCHAR2(10);
  V_IDPROCPROD         VARCHAR2(01);
  V_CDRESPINSPECDS     VARCHAR2(05);
BEGIN

   BEGIN
      SELECT NF.IDENTRSAIDOP, T.IDATUESTTPOP, T.CDTIPOOPER, NF.CDFILIRECE
        INTO V_IDENTRSAIDOP,  V_IDATUESTTPOP, V_CDTIPOOPER, V_CDFILIRECE
        FROM NOTAFISCAL NF,TIPOOPERAC T
       WHERE CDFILIAL       = :NEW.CDFILIAL
         AND NRLANCTONF     = :NEW.NRLANCTONF
         AND T.IDENTRSAIDOP = NF.IDENTRSAIDOP
         AND T.CDTIPOOPER   = NF.CDTIPOOPER
         AND IDSISTEMA      = 'DFE';
   EXCEPTION
      WHEN NO_DATA_FOUND THEN
         V_IDENTRSAIDOP := ''; V_IDATUESTTPOP := ''; V_CDTIPOOPER   := ''; V_CDFILIRECE   := '';
   END;

   BEGIN
      SELECT CDTIPOOPER
        INTO V_TPOPERANA
        FROM TIPOOPERANA
       WHERE CDFILIAL = V_CDFILIRECE
         AND CDTIPOOPER = V_CDTIPOOPER;
   EXCEPTION
      when NO_DATA_FOUND then
         V_TPOPERANA := '';
   END;

   IF ((V_IDENTRSAIDOP = 'E' )AND(V_IDATUESTTPOP = 'S') AND (V_TPOPERANA IS NOT NULL)) THEN

     V_TIPOANA  := 'A';
     V_DTVALANA := '';
     
     BEGIN
        SELECT CDPRODESTO
          INTO V_CDPRODESTO
          FROM PRODUTO
         WHERE CDPRODUTO = :NEW.CDPRODUTO;
     EXCEPTION
        WHEN NO_DATA_FOUND THEN
           V_CDPRODESTO  := :NEW.CDPRODUTO;
     END;
  
     BEGIN
        SELECT COUNT(CDVERSAO)
          INTO V_CTRLVERSAO
          FROM VERSAOPRODANA
         WHERE CDPRODUTO = V_CDPRODESTO
   		      AND IDPROCPROD IN ('E', 'M', 'A')
           AND CDVERSAO <> 'x';
     EXCEPTION
        WHEN NO_DATA_FOUND THEN
           V_CTRLVERSAO := 0;
     END; 
  
     BEGIN
        SELECT IDVDANALISE
          INTO V_IDVDANALISE
          FROM PRODUTO
         WHERE CDPRODUTO = V_CDPRODESTO;
     EXCEPTION
        WHEN NO_DATA_FOUND THEN
           V_IDVDANALISE := '0';
     END;
  
  
     IF (V_IDVDANALISE = '0') THEN
        BEGIN
           SELECT NVL(IDVDANALISE, 1)
             INTO V_IDVDANALISE
             FROM PRODUTO
            WHERE CDPRODUTO = V_CDPRODESTO;
        EXCEPTION
           WHEN NO_DATA_FOUND THEN
              V_IDVDANALISE := '1';
        END;
     END IF;
  
     BEGIN
        SELECT DECODE(IDVDANALISE, '1', 'Meses: ' || NVL(NRDIASVALANA, 0), 'Formula: ' || NVL(DSFORMULAVDANA, 'Vazia'))
          INTO V_DSVALIDADE
          FROM PRODUTO
         WHERE CDPRODUTO = V_CDPRODESTO;
     EXCEPTION
        WHEN NO_DATA_FOUND THEN
           V_DSVALIDADE := '';
     END;
		
		   BEGIN
		      SELECT COUNT(*)
		        INTO V_AUDITORIA
		        FROM AUDITORIA
		       WHERE (CDFILIAL     = :NEW.CDFILIAL)
		      	  AND (NRLANCTONF   = :NEW.NRLANCTONF)
		      	  AND (NRSEQITPROD  = :NEW.NRSEQITPROD)
		      	  AND (IDORIGAUDIT  = V_IDORIGINSPEC)
		      	  AND (IDSTATUSAUDI <> '4');
		   EXCEPTION
		   	WHEN NO_DATA_FOUND THEN
		   		V_AUDITORIA := 0;
		   END;
		
		   IF V_AUDITORIA = 0 THEN
		   
		        IF(V_CTRLVERSAO <> 0) THEN
		        
		           FOR C_VERSOES IN (SELECT CDPRODUTO, IDPROCPROD, CDVERSAO, DTVIGINICIO, DTVIFGFINAL
                                 FROM(SELECT CDPRODUTO, IDPROCPROD, CDVERSAO, DTVIGINICIO, DTVIFGFINAL, 
                                             DENSE_RANK() OVER (PARTITION BY CDPRODUTO ORDER BY IDPROCPROD DESC) PRIORITY
                                        FROM(SELECT  CDPRODUTO, IDPROCPROD, CDVERSAO, DTVIGINICIO, DTVIFGFINAL
                                               FROM VERSAOPRODANA 
                                              WHERE CDPRODUTO = V_CDPRODESTO 
                                                AND IDPROCPROD IN ('E', 'M', 'A')
                                                AND TRUNC(SYSDATE) BETWEEN TRUNC(DTVIGINICIO) AND TRUNC(DTVIFGFINAL)
                                                AND IDVERATIVA = 'A'
                                              ORDER BY 2 DESC))
                                WHERE PRIORITY = 1)LOOP
                                  
		           	
		              BEGIN
		                 SELECT COUNT(*)
		                   INTO V_INSPECPROD
		                   FROM INSPECAO ICAO, INSPECPROD IPRO
		                  WHERE (IPRO.CDPRODUTO    = V_CDPRODESTO)
		                 	  AND (IPRO.CDINSPECAO   = ICAO.CDINSPECAO)
		                 	  AND (IPRO.IDPROCPROD  = C_VERSOES.IDPROCPROD)
		                 	  AND (ICAO.IDORIGINSPEC = 'ANA')
		                 	  AND (ICAO.IDSITINSPEC  = 'A')
		                 	  AND (IPRO.IDSTATUSINSPEC = 'A')
		                 	  AND (IPRO.CDVERSAO = C_VERSOES.CDVERSAO) ;
		              EXCEPTION
		              	WHEN NO_DATA_FOUND THEN
		              		V_INSPECPROD  := 0;
		              END;
      
				            IF V_INSPECPROD > 0 THEN
      
				  	            SELECT NVL(CDFORNECED, NULL)
				  	              INTO V_CDFORNECED
				  	              FROM NOTAFISCAL
				  	             WHERE CDFILIAL   = :NEW.CDFILIAL
				  	            	  AND NRLANCTONF = :NEW.NRLANCTONF;
      
				  	            BEGIN
				  	               SELECT MAX(ICAO.IDORIGINSPEC)
				  	                 INTO V_IDORIGINSPEC
				  	                 FROM INSPECAO ICAO, INSPECPROD IPRO
				  	                WHERE (IPRO.CDPRODUTO    = V_CDPRODESTO)
				  	               	  AND (IPRO.CDINSPECAO   = ICAO.CDINSPECAO)
				  	               	  AND (IPRO.IDPROCPROD  = C_VERSOES.IDPROCPROD) 
				  	               	  AND (ICAO.IDORIGINSPEC = 'ANA')
				  	               	  AND (ICAO.IDSITINSPEC  = 'A')
				  	               	  AND (IPRO.IDSTATUSINSPEC = 'A')
				  	               	  AND (IPRO.CDVERSAO = C_VERSOES.CDVERSAO);
				  	            EXCEPTION
				  	            	WHEN NO_DATA_FOUND THEN
				  	            		V_IDORIGINSPEC := NULL;
				  	            END;				
      
				  	            BEGIN
				  	               SELECT IPRO.CDSETOR
				  	                 INTO V_SETORANT
				  	                 FROM INSPECAO ICAO, INSPECPROD IPRO
				  	                WHERE (IPRO.CDPRODUTO    = V_CDPRODESTO)
				  	               	  AND (IPRO.CDINSPECAO   = ICAO.CDINSPECAO)
				  	               	  AND (IPRO.IDPROCPROD  = C_VERSOES.IDPROCPROD) 
				  	               	  AND (ICAO.IDORIGINSPEC = 'ANA')
				  	               	  AND (ICAO.IDSITINSPEC  = 'A')
				  	               	  AND (IPRO.IDSTATUSINSPEC = 'A')
				  	               	  AND (ROWNUM = '1')
				  	               	  AND (IPRO.CDVERSAO = C_VERSOES.CDVERSAO);							
				  	            EXCEPTION
				  	            	WHEN NO_DATA_FOUND THEN
				  	            		V_SETORANT  := 'AAAA';
				  	            END;
                   
				  	            IF (V_IDVDANALISE = '1') THEN
                   
				  		              -- VERIFICAR A DATA DE VALIDADE DA ANALISE COM BASE NA PARAMETRIZACAO DA TELA DE PRODUTO
				  		              BEGIN
				  		              	SELECT (SYSDATE + NVL(NRDIASVALANA, 0)*30) AS VALANA
				  		              	  INTO V_DTVALANA
				  		              	  FROM PRODUTO
				  		              	 WHERE CDPRODUTO = V_CDPRODESTO
				  		              		  AND NRDIASVALANA IS NOT NULL;
				  		              EXCEPTION
				  		              	when NO_DATA_FOUND then
				  		              		V_DTVALANA := '';
				  		              END;
				  	            ELSE
				  	               V_DTVALANA := VALIDADE_ANA(:NEW.CDFILIAL, V_CDFILIRECE, 'DFE', :NEW.NRLOTEESTQ, :NEW.NRSUBLOTE, 'A', V_CDPRODESTO);
				  	            END IF;
      
				  	            V_VEZES := '0';
				  	
				  	            FOR C_InspecProd IN (SELECT IPRO.CDSETOR, ICAO.IDORIGINSPEC,   ICAO.CDNVINSPECAO, IPRO.IDPROCPROD, IPRO.CDORDEMINSPEC,
				  	            									                   ICAO.CDINSPECAO, ICAO.CDARVINSPEC, IPRO.CDPRODUTO, IPRO.CDINSPECAO CDINSPECAOPRO,
				  	            									                   ICAO.NMINSPECAO, IPRO.NRSEQINSPRO, IPRO.IDEXIBCERTFICA
				  	            							                FROM INSPECAO ICAO, INSPECPROD IPRO
				  	            							               WHERE (IPRO.CDPRODUTO    = V_CDPRODESTO)
				  	            								                AND (IPRO.CDINSPECAO   = ICAO.CDINSPECAO)
				  	            								                AND (IPRO.IDPROCPROD  = C_VERSOES.IDPROCPROD) 
				  	            								                AND (ICAO.IDORIGINSPEC = 'ANA')
				  	            								                AND (ICAO.IDSITINSPEC  = 'A')
				  	            								                AND (IPRO.IDSTATUSINSPEC = 'A')
				  	            								                AND (IPRO.CDVERSAO = C_VERSOES.CDVERSAO)
				  	            							               ORDER BY IPRO.CDSETOR)LOOP
                   
				  	               V_VEZES := V_VEZES + '1';
				  		              
                      --Verifica se a AF que deu origem a nota e Piloto
				  		              BEGIN
				  		                 SELECT A.IDAFDESTALMOXPIL
				  		                   INTO  V_IDAUDIIL
				  		                   FROM AUTOFORNE A, ITEMAUTF I,NFRELACAF N
				  		                  WHERE N.NRLANCTONF  = :NEW.NRLANCTONF
				  		                 	  AND N.CDFILIAL    = :NEW.CDFILIAL
				  		                 	  AND I.NRLANCTONF  = N.NRLANCTONF
				  		                 	  AND I.CDFILDEST   = N.CDFILDEST
				  		                 	  AND I.CDFILLANC   = N.CDFILLANC
				  		                 	  AND I.CDMARCA     = N.CDMARCA
				  		                 	  AND I.CDPRODUTO   = N.CDPRODUTO
				  		                 	  AND I.DTPROGENTAF = N.DTPROGENTAF
				  		                 	  AND I.CDFILDEST   = A.CDFILDEST
				  		                 	  AND I.CDFILLANC   = A.CDFILLANC
				  		                 	  AND I.NRAUTOFORN  = A.NRAUTOFORN
				  		                 	  AND A.IDAFDESTALMOXPIL = 'S';
				  		              EXCEPTION
				  		              	WHEN NO_DATA_FOUND THEN
				  		              		V_IDAUDIIL := 'N';
				  		              END;
      
				  		              IF (V_VEZES > '1') THEN
        
				  			                IF (V_SETORANT <> NVL(C_InspecProd.CDSETOR, 'AAAA')) THEN
                         
				  			                   NOVO_CODIGO_SC('AUDITORIA'||:NEW.CDFILIAL, V_SEQUENCIAL);
				  			                   V_SEQUENCIAL := SUBSTR(V_SEQUENCIAL, 11,10);
                            
				  			                   insert into AUDITORIA
				  			                   (NRLOTEESTQ,   NRSUBLOTE,    CDPRODUTO,
				  			                    IDSTATUSAUDI, CDOPEINCAUDI, CDFILIAL,  CDFILIALNF, DTINCLAUDIT,
				  			                    NRAUDITORIA,  IDORIGAUDIT,  CDSETEXECAUD,  DSREFEAUDIT,
				  			                    NRLANCTONF,   NRSEQITPROD, IDLIBERAUDIT,   IDTPAUDITADO,
				  			                    CDFORNECED,IDAUDIPIL, DTVALANA, DSVALIDADE)
				  			                   values
				  			                   (:NEW.NRLOTEESTQ,   :NEW.NRSUBLOTE, V_CDPRODESTO,
				  			                    '1', :NEW.CDOPERADOR, :NEW.CDFILIAL, :NEW.CDFILIMOVI,  SYSDATE,
				  			                    V_SEQUENCIAL,  'ANA',  DECODE(C_InspecProd.CDSETOR, 'AAAA', NULL, C_InspecProd.CDSETOR), 'Gerado pelo lancamento de Nota Fiscal.',
				  			                    :NEW.NRLANCTONF,   :NEW.NRSEQITPROD, 'S', C_InspecProd.IDPROCPROD,
				  			                    V_CDFORNECED,V_IDAUDIIL, V_DTVALANA, V_DSVALIDADE);
                            
				  			                   V_AUDITORIA := V_SEQUENCIAL;
                            
				  			                   V_CDPRODFERE := '';
				  			                    
                            --VERIFICA SE JA EXISTE REFERENCIA PARA A ANALISE
				  			                   BEGIN
				  			                      SELECT COUNT(NRAUDITORIA)
				  			                        INTO V_NRFERE
				  			                        FROM REFEBAUDIT
				  			                       WHERE NRAUDITORIA = V_SEQUENCIAL
				  			                         AND CDFILIAL    = :NEW.CDFILIAL;
				  			                   EXCEPTION
				  			                    WHEN NO_DATA_FOUND THEN
				  			                   	 V_NRFERE := 0;
				  			                   END;
      
				  				                  IF V_NRFERE = 0 THEN
      
				  					                    BEGIN
				  					                        SELECT CDVERSAO, DSREFERENCIA, CDPRODUTO
				  					                          INTO V_CDVERSAOREF, V_DSREFERENCIA, V_CDPRODFERE
				  					                          FROM REFEBIBIO
				  					                         WHERE (CDVERSAO = C_VERSOES.CDVERSAO) 
				  					                        	  AND (CDPRODUTO = V_CDPRODESTO);
				  					                    EXCEPTION
				  					                    	WHEN NO_DATA_FOUND THEN
				  					                    		V_CDVERSAOREF  := NULL;
				  					                    		V_DSREFERENCIA := NULL;
				  					                    		V_CDPRODFERE   := NULL;
				  					                    END;
      
				  					                    IF NOT(V_CDPRODFERE IS NULL) THEN
      
				  						                      INSERT INTO REFEBAUDIT
				  						                      (CDFILIAL, CDVERSAO, NRAUDITORIA, DSREFERENCIA, CDPRODUTO)
				  						                      VALUES
				  						                      (:NEW.CDFILIAL, V_CDVERSAOREF, V_SEQUENCIAL, V_DSREFERENCIA, V_CDPRODFERE);
      
				  					                    END IF;
                               
				  				                  END IF;
				  			                 
                         END IF;
				  		              
                      ELSE
				  			                NOVO_CODIGO_SC('AUDITORIA'||:NEW.CDFILIAL, V_SEQUENCIAL);
				  			                V_SEQUENCIAL := SUBSTR(V_SEQUENCIAL, 11,10);
      
				  			                insert into AUDITORIA
				  			                (NRLOTEESTQ,   NRSUBLOTE,    CDPRODUTO,
				  			                 IDSTATUSAUDI, CDOPEINCAUDI, CDFILIAL,  CDFILIALNF, DTINCLAUDIT,
				  			                 NRAUDITORIA,  IDORIGAUDIT,  CDSETEXECAUD,  DSREFEAUDIT,
				  			                 NRLANCTONF,   NRSEQITPROD, IDLIBERAUDIT,   IDTPAUDITADO,
				  			                 CDFORNECED,IDAUDIPIL, DTVALANA, DSVALIDADE)
				  			                values
				  			                (:NEW.NRLOTEESTQ,   :NEW.NRSUBLOTE, V_CDPRODESTO,
				  			                 '1', :NEW.CDOPERADOR, :NEW.CDFILIAL, :NEW.CDFILIMOVI,  SYSDATE,
				  			                 V_SEQUENCIAL,  'ANA',  DECODE(C_InspecProd.CDSETOR, 'AAAA', NULL, C_InspecProd.CDSETOR), 'Gerado pelo lancamento de Nota Fiscal.',
				  			                 :NEW.NRLANCTONF,   :NEW.NRSEQITPROD, 'S', C_InspecProd.IDPROCPROD,
				  			                 V_CDFORNECED,V_IDAUDIIL, V_DTVALANA, V_DSVALIDADE);
                         
				  			                V_AUDITORIA := V_SEQUENCIAL;
                         
                         
				  			                V_CDPRODFERE := '';
                         
				  			                --VERIFICA SE JA EXISTE REFERENCIA PARA A ANALISE
				  			                BEGIN
				  			                   SELECT COUNT(NRAUDITORIA)
				  				                    INTO V_NRFERE
				  				                    FROM REFEBAUDIT
				  			                 WHERE NRAUDITORIA = V_SEQUENCIAL
				  				                  AND CDFILIAL    = :NEW.CDFILIAL;
				  			                EXCEPTION
				  				                WHEN NO_DATA_FOUND THEN
				  				               	 V_NRFERE := 0;
				  			                END;
      
				  			                IF V_NRFERE = 0 THEN
      
				  				                  BEGIN
				  				                     SELECT CDVERSAO, DSREFERENCIA, CDPRODUTO
				  				                       INTO V_CDVERSAOREF, V_DSREFERENCIA, V_CDPRODFERE
				  				                       FROM REFEBIBIO
				  				                      WHERE (CDVERSAO = C_VERSOES.CDVERSAO) 
				  				                     	  AND (CDPRODUTO = V_CDPRODESTO);
				  				                  EXCEPTION
				  				                  	WHEN NO_DATA_FOUND THEN
				  				                  		V_CDVERSAOREF  := NULL;
				  				                  		V_DSREFERENCIA := NULL;
				  				                  		V_CDPRODFERE   := NULL;
				  				                  END;
      
				  				                  IF NOT(V_CDPRODFERE IS NULL) THEN
      
				  					                    INSERT INTO REFEBAUDIT
				  					                    (CDFILIAL, CDVERSAO, NRAUDITORIA, DSREFERENCIA, CDPRODUTO)
				  					                    VALUES
				  					                    (:NEW.CDFILIAL, V_CDVERSAOREF, V_SEQUENCIAL, V_DSREFERENCIA, V_CDPRODFERE);
      
				  				                  END IF;
                            
				  			                END IF;
          
				  		              END IF;
      
				  		              BEGIN
				  		                 SELECT LPAD((NVL(MAX(NRINSPECAUDI), '0') + 1), 3, '0')
				  		                   INTO V_NEWNRINSPECAUDI
				  		                   FROM INSPECAUDIT
				  		                  WHERE CDFILIAL    = :NEW.CDFILIAL
				  		                 	  AND NRAUDITORIA = V_SEQUENCIAL;
				  		              EXCEPTION
				  		              	WHEN NO_DATA_FOUND THEN
				  		              		V_NEWNRINSPECAUDI := NULL;
				  		              END;
      
				  		              insert into INSPECAUDIT
				  		              (CDFILIAL, NRAUDITORIA,  NRINSPECAUDI, IDINSPCONC,
				  		               CDOPERADOR, CDINSPECAO, DSINSPECAUDI, IDNOVAAMOSTR,
				  		               IDTIPOINSAUD, CDORDEMAUDIT, DSANALISE, IDEXIBCERTFICA)
				  		              values
				  		              (:NEW.CDFILIAL,    V_AUDITORIA,  V_NEWNRINSPECAUDI, 'P',
				  		               :NEW.CDOPERADOR,  C_InspecProd.CDINSPECAO, '',   'N',
				  		               'A', C_InspecProd.CDORDEMINSPEC, C_InspecProd.NMINSPECAO,
				  		               C_InspecProd.IDEXIBCERTFICA);
      
				  		               SELECT COUNT(*)
				  		                 INTO V_INSPECRESP
				  		                 FROM RESPOSINSPEC R, INSPECAO I
				  		                WHERE (I.CDARVINSPEC LIKE (C_InspecProd.CDARVINSPEC || '%'))
				  		               	  AND (I.IDSITINSPEC = 'A')
				  		               	  AND (R.CDINSPECAO  = I.CDINSPECAO)
				  		               	  AND (R.CDPRODUTO   = V_CDPRODESTO)
				  		               	  AND (R.IDRESPPROC  = C_InspecProd.IDPROCPROD)
				  		               	  AND (R.CDVERSAO   = C_VERSOES.CDVERSAO);
				  			
      
				  		               IF V_INSPECRESP > 0 THEN
				  		                  V_RECURSOHAB   := '';
				  		                  V_RECURSOEQUIP := '';
      
				  			                 FOR C_InspecResp IN (SELECT I.CDINSPECAO, I.CDTIPOAMOS, I.IDTPRESPINSP, R.CDRESPINSPEC, I.NMINSPECAO, I.SGUNIDADE, R.CDREFERENCIA, R.CDORDEM
				  			                 							                FROM RESPOSINSPEC R, INSPECAO I
				  			                 							  WHERE (I.CDARVINSPEC LIKE (C_InspecProd.CDARVINSPEC || '%'))
				  			                 								   AND (I.IDSITINSPEC  = 'A')
				  			                 								   AND (R.CDINSPECAO   = I.CDINSPECAO)
				  			                 								   AND (R.CDPRODUTO    = V_CDPRODESTO)
				  			                 								   AND (R.IDSTATUSRESP = 'A')
				  			                 								   AND (R.IDRESPPROC   = C_InspecProd.IDPROCPROD)
				  			                 								   AND (R.CDVERSAO    = C_VERSOES.CDVERSAO)
				  			                 							ORDER BY I.CDINSPECAO, R.VRPONTRESINS) LOOP
                                 
				  				                   V_DSLIMIINSP := '';
      
				  				                   IF (C_InspecResp.IDTPRESPINSP = 'VALR') THEN
      
				  					                     BEGIN
				  					                        SELECT COUNT(*)
				  					                          INTO VX_CDINSPECAO
				  					                          FROM RESPOSINSPEC
				  					                         WHERE (CDINSPECAO   = C_InspecResp.CDINSPECAO)
				  					                        	  AND (CDPRODUTO    = V_CDPRODESTO )
				  					                        	  AND (IDRESPPROC   = C_InspecProd.IDPROCPROD)
				  					                        	  AND (CDRESPINSPEC = C_InspecResp.CDRESPINSPEC)
				  					                        	  AND (IDSTATUSRESP = 'A')
				  					                        	  and (CDVERSAO = C_VERSOES.CDVERSAO);
				  					                     EXCEPTION
				  					                     	WHEN NO_DATA_FOUND THEN
				  					                     		VX_CDINSPECAO := NULL;
				  					                     END;
      
				  					                     IF VX_CDINSPECAO > 0 THEN
				  					                        BEGIN
				  					                           SELECT CDRESPINSPEC, NMRESPINSPEC, VRPONTRESINS, IDFAIXRESINS, VRINIFAIXRES, VRFINFAIXRES
				  					                             INTO V_CDRESPINSPEC, V_NMRESPINSPEC, V_VRPONTRESINS, V_IDFAIXRESINS, V_VRINIFAIXRES, V_VRFINFAIXRES
				  					                             FROM RESPOSINSPEC
				  					                            WHERE (CDINSPECAO   = C_InspecResp.CDINSPECAO)
				  					                           	  AND (CDPRODUTO    = V_CDPRODESTO )
				  					                           	  AND (IDRESPPROC   = C_InspecProd.IDPROCPROD)
				  					                           	  AND (VRPONTRESINS = '0')
				  					                           	  AND (CDRESPINSPEC = C_InspecResp.CDRESPINSPEC)
				  					                           	  and (IDSTATUSRESP = 'A')
				  					                           	  AND (CDVERSAO = C_VERSOES.CDVERSAO);
				  					                        EXCEPTION
				  					                        	WHEN NO_DATA_FOUND THEN
				  					                        		V_CDRESPINSPEC := NULL; V_NMRESPINSPEC := NULL; V_VRPONTRESINS := NULL; V_IDFAIXRESINS := NULL;
				  					                        		V_VRINIFAIXRES := NULL; V_VRFINFAIXRES := NULL;
				  					                        END;
                                   
				  						                       IF NOT (V_CDRESPINSPEC IS NULL) THEN
				  						                          IF V_IDFAIXRESINS = '>' THEN
				  						                             V_DSLIMIINSP := SUBSTR('Maior que '||CASE SUBSTR(TO_CHAR(V_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(V_VRINIFAIXRES) ELSE TO_CHAR(V_VRINIFAIXRES) END, 1, 50);
				  						                          END IF;
				  						                          IF V_IDFAIXRESINS = '<' THEN
				  						                          	  V_DSLIMIINSP := SUBSTR('Menor que '||CASE SUBSTR(TO_CHAR(V_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(V_VRINIFAIXRES) ELSE TO_CHAR(V_VRINIFAIXRES) END,1,50);
				  						                          END IF;
				  						                          IF V_IDFAIXRESINS = '=' THEN
				  						                          	  V_DSLIMIINSP := SUBSTR('Entre '||CASE SUBSTR(TO_CHAR(V_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(V_VRINIFAIXRES) ELSE TO_CHAR(V_VRINIFAIXRES) END||' e '||CASE SUBSTR(TO_CHAR(V_VRFINFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(V_VRFINFAIXRES) ELSE TO_CHAR(V_VRFINFAIXRES) END, 1, 50);
				  						                          END IF;
				  						                          IF V_IDFAIXRESINS = 'M' THEN
				  						                          	  V_DSLIMIINSP := SUBSTR('Maior ou Igual a '||CASE SUBSTR(TO_CHAR(V_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(V_VRINIFAIXRES) ELSE TO_CHAR(V_VRINIFAIXRES) END,1,50);
				  						                          END IF;
				  						                          IF V_IDFAIXRESINS = 'N' THEN
				  						                          	  V_DSLIMIINSP := SUBSTR('Menor ou Igual a '||CASE SUBSTR(TO_CHAR(V_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(V_VRINIFAIXRES) ELSE TO_CHAR(V_VRINIFAIXRES) END,1,50);
				  						                          END IF;
				  						                          IF V_IDFAIXRESINS = 'D' THEN
				  						                          	  V_DSLIMIINSP := ('Indetectavel');
				  						                          END IF;
				  						                          IF V_IDFAIXRESINS = 'T' THEN
				  						                          	  V_DSLIMIINSP := ('Incontavel');
				  						                          END IF;
				  						                       ELSE
				  						                       	  V_DSLIMIINSP := '';
				  						                       END IF;

				  					                     ELSE

				  						                       BEGIN
				  						                          SELECT CDRESPINSPEC, NMRESPINSPEC, VRPONTRESINS, IDFAIXRESINS, VRINIFAIXRES, VRFINFAIXRES
				  						                            INTO VN_CDRESPINSPEC, VN_NMRESPINSPEC, VN_VRPONTRESINS, VN_IDFAIXRESINS, VN_VRINIFAIXRES, VN_VRFINFAIXRES
				  						                            FROM RESPOSINSPEC
				  						                           WHERE (CDINSPECAO = C_InspecResp.CDINSPECAO)
				  						                          	  AND (CDPRODUTO IS NULL )
				  						                          	  AND (VRPONTRESINS = '0')
				  						                          	  AND (IDRESPPROC  = C_InspecProd.IDPROCPROD)
				  						                          	  AND (CDRESPINSPEC = C_InspecResp.CDRESPINSPEC)
				  						                          	  AND (IDSTATUSRESP = 'A')
				  						                          	  AND (CDVERSAO = C_VERSOES.CDVERSAO);
				  						                       EXCEPTION
				  						                       	WHEN NO_DATA_FOUND THEN
				  						                       		VN_CDRESPINSPEC := NULL; VN_NMRESPINSPEC := NULL; VN_VRPONTRESINS := NULL; VN_IDFAIXRESINS := NULL;
				  						                       		VN_VRINIFAIXRES := NULL; VN_VRFINFAIXRES := NULL;
				  						                       END;

				  						                       IF NOT (VN_CDRESPINSPEC IS NULL) THEN
				  						                          IF V_IDFAIXRESINS = '>' THEN
				  						                          	  V_DSLIMIINSP := SUBSTR('Maior que '||CASE SUBSTR(TO_CHAR(V_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(V_VRINIFAIXRES) ELSE TO_CHAR(V_VRINIFAIXRES) END,1,50);
				  						                          END IF;
				  						                          IF V_IDFAIXRESINS = '<' THEN
				  						                          	  V_DSLIMIINSP := SUBSTR('Menor que '||CASE SUBSTR(TO_CHAR(V_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(V_VRINIFAIXRES) ELSE TO_CHAR(V_VRINIFAIXRES) END,1,50);
				  						                          END IF;
				  						                          IF V_IDFAIXRESINS = '=' THEN
				  						                          	  V_DSLIMIINSP := SUBSTR('Entre '||CASE SUBSTR(TO_CHAR(V_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(V_VRINIFAIXRES) ELSE TO_CHAR(V_VRINIFAIXRES) END||' e '||CASE SUBSTR(TO_CHAR(VN_VRFINFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(VN_VRFINFAIXRES) ELSE TO_CHAR(VN_VRFINFAIXRES) END,1,50);
				  						                          END IF;
				  						                          IF V_IDFAIXRESINS = 'M' THEN
				  						                          	  V_DSLIMIINSP := SUBSTR('Maior ou Igual a '||CASE SUBSTR(TO_CHAR(V_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(V_VRINIFAIXRES) ELSE TO_CHAR(V_VRINIFAIXRES) END,1,50);
				  						                          END IF;
				  						                          IF V_IDFAIXRESINS = 'N' THEN
				  						                          	  V_DSLIMIINSP := SUBSTR('Menor ou Igual a '||CASE SUBSTR(TO_CHAR(V_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(V_VRINIFAIXRES) ELSE TO_CHAR(V_VRINIFAIXRES) END,1,50);
				  						                          END IF;
				  						                          IF V_IDFAIXRESINS = 'D' THEN
				  						                          	  V_DSLIMIINSP := ('Indetectavel');
				  						                          END IF;
				  						                          IF V_IDFAIXRESINS = 'T' THEN
				  						                          	  V_DSLIMIINSP := ('incontavel');
				  						                          END IF;
				  						                       ELSE
				  						                          V_DSLIMIINSP := '';
				  						                       END IF;

				  					                     END IF;

				  				                   END IF;

				  				                   SELECT COUNT(*)
				  				                     INTO V_EXISTITEM
				  				                     FROM ITEMINSAUDIT
				  				                    WHERE CDFILIAL     = :NEW.CDFILIAL
				  				                   	  AND NRAUDITORIA  = V_AUDITORIA
				  				                   	  AND NRINSPECAUDI = V_NEWNRINSPECAUDI
				  				                   	  AND CDINSPECAO   = C_InspecResp.CDINSPECAO;


				  				                   IF V_EXISTITEM = 0 THEN
				  				                      insert into ITEMINSAUDIT
				  				                      (CDFILIAL,      NRAUDITORIA,   NRINSPECAUDI,    CDINSPECAO,
				  				                       CDOPERADOR,    IDOPCACEITIN,  DSOBSINSAUDI, DSLIMIINSP, DSANALISE, CDREFERENCIA, CDORDEM,SGUNRESPOSTA)
				  				                      values
				  				                      (:NEW.CDFILIAL,  V_AUDITORIA,  V_NEWNRINSPECAUDI,  C_InspecResp.CDINSPECAO,
				  				                       :NEW.CDOPERADOR,    'P',  '', V_DSLIMIINSP, C_InspecResp.NMINSPECAO, C_InspecResp.CDREFERENCIA, C_InspecResp.CDORDEM,C_InspecResp.SGUNIDADE);

				  					                     BEGIN
				  					                        SELECT DSINSPROD
				  					                          INTO V_DSINSPROD
				  					                          FROM DSINSPECPROD
				  					                         WHERE CDINSPECAO = C_InspecResp.CDINSPECAO
				  					                        	  AND CDPRODUTO  = V_CDPRODESTO
				  					                        	  AND IDRESPPROC = C_InspecProd.IDPROCPROD;
				  					                     	EXCEPTION
				  					                     		WHEN NO_DATA_FOUND THEN
				  					                     			V_DSINSPROD := '';
				  					                     END;

				  					                     IF (V_DSINSPROD IS NOT NULL) THEN
                                   SELECT MAX(CDRESPINSPEC)
                                     INTO V_CDRESPINSPECDS
                                     FROM RESPOSINSPEC
                                    WHERE CDPRODUTO  = V_CDPRODESTO
                                      AND CDINSPECAO = C_InspecResp.CDINSPECAO
                                      AND IDRESPPROC = C_InspecProd.IDPROCPROD;

                                   SELECT COUNT(*)
				  				                           INTO V_EXISTITEM
        				  				                   FROM DSINSPECAUDIT
                                    WHERE CDFILIAL = :NEW.CDFILIAL
                                      AND NRAUDITORIA = V_AUDITORIA
                                      AND CDPRODUTO = V_CDPRODESTO
                                      AND CDINSPECAO = C_InspecResp.CDINSPECAO
                                      AND CDRESPINSPEC = V_CDRESPINSPECDS;
                                   
                                   IF V_EXISTITEM = 0 THEN
                                                  
				  					                           INSERT INTO DSINSPECAUDIT
   				  					                        (CDFILIAL, NRAUDITORIA, CDPRODUTO, CDINSPECAO, DSINSPROD, CDRESPINSPEC)
	   			  					                        VALUES
		   		  					                        (:NEW.CDFILIAL, V_AUDITORIA, V_CDPRODESTO, C_InspecResp.CDINSPECAO, V_DSINSPROD, V_CDRESPINSPECDS);
                                   END IF;   
				  					                     END IF;
				  					                     -- INSERE OS REAGENTES NECESSARIOS PARA REALIZAR A ANALISE
				  					                     FOR C_INSUMOANA IN (SELECT IA.CDPRODINSU, NVL(IA.QTDEBRUTANA, 0) AS QTRETIRADA
				  					                     							               FROM INSUMOANA IA, INSPECAO I
				  					                     							              WHERE IA.CDPRODUTO  = V_CDPRODESTO
				  					                     							                AND IA.CDINSPECAO = C_InspecResp.CDINSPECAO
				  					                     							                AND IA.IDPROCPROD = C_InspecProd.IDPROCPROD
				  					                     							                AND IA.CDINSPECAO = I.CDINSPECAO
				  					                     							                AND I.IDSITINSPEC = 'A'
				  					                     							                AND IA.CDVERSAO = C_VERSOES.CDVERSAO) LOOP

				  						                       NOVO_CODIGO_SC('FORMULAUDITANA'||:NEW.CDFILIAL, V_SEQINSUMOANA);
				  						                       V_SEQINSUMOANA := SUBSTR(V_SEQINSUMOANA,11,10);
				  						                       V_NRSEQINSUMOANA := TO_NUMBER(V_SEQINSUMOANA);

				  						                       INSERT INTO FORMULAUDITANA
				  						                       (NRSEQFORMULA, CDFILIAL, NRAUDITORIA, CDPRODUTO,
				  						                        CDINSPECAO, IDSITAMOSTRA, QTRETIRADA, DTINCFORMULANA)
				  						                       VALUES
				  						                       (V_NRSEQINSUMOANA, :NEW.CDFILIAL, V_SEQUENCIAL, C_INSUMOANA.CDPRODINSU,
				  						                        C_InspecResp.CDINSPECAO, '1', C_INSUMOANA.QTRETIRADA, SYSDATE);
             
				  					                     END LOOP;
                                
				  					                     -- BUSCA E INSERE OS REAGENTES MARCADOS COMO 'COMPATIBILIDADE' NO PROCESSO DE FABRICACAO, CASO O PRODUTO SEJA PRODUTO ACABADO
				  					                     IF C_InspecProd.IDPROCPROD = 'A' THEN
                                
				  					                        FOR C_COMPATIBILIDADE IN (SELECT I.CDPRODINSUMO
				  					                        									                   FROM INSUMETAPA I, PROCFABRICA P
				  					                        									                  WHERE P.CDFILIAL     = :NEW.CDFILIAL
				  					                        									                    AND P.CDFILIAL     = I.CDFILIAL
				  					                        									                    AND I.CDPRODUTO    = V_CDPRODESTO
				  					                        									                    AND P.CDPRODUTO    = I.CDPRODUTO
				  					                        									                    AND P.CDPROCFABRIC = I.CDPROCFABRIC
				  					                        									                    AND P.IDPROFABPADR = 'S'
				  					                        									                    AND I.IDCOMPATI    = 'S')LOOP
      
				  							                         NOVO_CODIGO_SC('FORMULAUDITANA'||:NEW.CDFILIAL, V_SEQINSUMOANA);
				  							                         V_SEQINSUMOANA := SUBSTR(V_SEQINSUMOANA,11,10);
				  							                         V_NRSEQINSUMOANA := TO_NUMBER(V_SEQINSUMOANA);
                                      
				  							                         INSERT INTO FORMULAUDITANA
				  							                         (NRSEQFORMULA, CDFILIAL, NRAUDITORIA, CDPRODUTO,
				  							                          CDINSPECAO, IDSITAMOSTRA, DTINCFORMULANA)
				  							                         VALUES
				  							                         (V_NRSEQINSUMOANA, :NEW.CDFILIAL, V_SEQUENCIAL, C_COMPATIBILIDADE.CDPRODINSUMO,
				  							                          C_InspecResp.CDINSPECAO, '1', SYSDATE);
                                       
				  						                       END LOOP;
                                   
				  					                     END IF;
                                
				  					                     -- INSERE OS RECURSOS NECESSARIOS PARA REALIZAR A ANALISE
				  					                     FOR C_RECURSOANA IN (SELECT R.IDTPRECURSO, DECODE(R.IDTPRECURSO, 'E', R.CDEQUIPPRO, CDHABILIDADE) AS CDRECURSO
				  					                     							                FROM RECURSOANA R
				  					                     							               WHERE R.CDPRODUTO  = V_CDPRODESTO
				  					                     								                AND R.IDPROCPROD = C_InspecProd.IDPROCPROD
				  					                     								                AND R.CDINSPECAO = C_InspecResp.CDINSPECAO
				  					                     								                AND R.CDVERSAO   = C_VERSOES.CDVERSAO)LOOP

				  						                       IF (C_RECURSOANA.IDTPRECURSO = 'E') THEN
				  						                          V_RECURSOHAB   := '';
				  						                          V_RECURSOEQUIP := C_RECURSOANA.CDRECURSO;
				  						                       ELSE
				  						                          V_RECURSOHAB   := C_RECURSOANA.CDRECURSO;
				  						                          V_RECURSOEQUIP := '';
				  						                       END IF;

				  						                       NOVO_CODIGO_SC('RECURAUDITANA'||:NEW.CDFILIAL, V_SEQRECURSOANA);
				  						                       V_SEQRECURSOANA := SUBSTR(V_SEQRECURSOANA,11,10);
				  						                       V_NRSEQRECURANA := TO_NUMBER(V_SEQRECURSOANA);

				  						                       INSERT INTO RECURAUDITANA
				  						                       (NRSEQRECURANA, CDFILIAL, NRAUDITORIA, IDTPRECURSO,
				  						                        CDHABILIDADE, CDEQUIPPRO, CDINSPECAO)
				  						                       VALUES
				  						                       (V_NRSEQRECURANA, :NEW.CDFILIAL, V_SEQUENCIAL, C_RECURSOANA.IDTPRECURSO,
				  						                        V_RECURSOHAB, V_RECURSOEQUIP, C_InspecResp.CDINSPECAO);

				  					                     END LOOP;

				  				                   END IF;

                          END LOOP;

				  		               ELSE

				  			                 FOR  C_Inspecao IN(SELECT CDINSPECAO, CDTIPOAMOS, IDTPRESPINSP, NMINSPECAO, SGUNIDADE
				  			                 							              FROM INSPECAO
				  			                 						              WHERE (CDARVINSPEC  LIKE (C_InspecProd.CDARVINSPEC || '%'))
				  			                 							               AND (IDSITINSPEC  = 'A')) LOOP

				  				                   IF (C_Inspecao.IDTPRESPINSP = 'VALR') THEN
				  				                      BEGIN
				  				                         SELECT CDINSPECAO, CDREFERENCIA, CDORDEM
				  				                         	 INTO VX_CDINSPECAO, VX_REF, VX_ORDEM
				  				                         	 FROM RESPOSINSPEC
				  				                         	WHERE (CDINSPECAO   = C_Inspecao.CDINSPECAO)
				  				                         	  AND (CDPRODUTO    = V_CDPRODESTO )
				  				                         	  AND (IDRESPPROC   = C_InspecProd.IDPROCPROD)
				  				                         	  AND (IDSTATUSRESP = 'A')
				  				                         	  AND (CDVERSAO = C_VERSOES.CDVERSAO);
				  				                      EXCEPTION
				  				                        WHEN NO_DATA_FOUND THEN
				  				                      	  VX_CDINSPECAO := NULL;
				  				                      END;

                                              IF NOT (VX_CDINSPECAO IS NULL) THEN
				  						                   BEGIN
				  						                      SELECT CDRESPINSPEC, NMRESPINSPEC, VRPONTRESINS, IDFAIXRESINS, VRINIFAIXRES, VRFINFAIXRES, CDREFERENCIA, CDORDEM
				  						                        INTO V_CDRESPINSPEC, V_NMRESPINSPEC, V_VRPONTRESINS, V_IDFAIXRESINS, V_VRINIFAIXRES, V_VRFINFAIXRES, VX_REF, VX_ORDEM
				  						                        FROM RESPOSINSPEC
				  						                       WHERE (CDINSPECAO = C_Inspecao.CDINSPECAO)
				  						                      	 AND (CDPRODUTO  = V_CDPRODESTO )
				  						                         AND (IDRESPPROC = C_InspecProd.IDPROCPROD)
				  						                         AND (VRPONTRESINS = '0')
				  						                         AND (IDSTATUSRESP  = 'A')
				  						                         AND (CDVERSAO = C_VERSOES.CDVERSAO);
				  						                   EXCEPTION
				  						                      WHEN NO_DATA_FOUND THEN
				  						                      	 V_CDRESPINSPEC := NULL; V_NMRESPINSPEC := NULL; V_VRPONTRESINS := NULL; V_IDFAIXRESINS := NULL;
				  						                       	 V_VRINIFAIXRES := NULL; V_VRFINFAIXRES := NULL;
				  						                   END;

				  						                   IF VNU_CDRESPINSPEC <> NULL THEN
				  						                      IF VNU_IDFAIXRESINS = '>' THEN
				  						                         V_DSLIMIINSP := SUBSTR('Maior que '||CASE SUBSTR(TO_CHAR(VL_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(VL_VRINIFAIXRES) ELSE TO_CHAR(VL_VRINIFAIXRES) END,1,50);
				  						                      END IF;
				  						                      IF VL_IDFAIXRESINS = '<' THEN
				  						                         V_DSLIMIINSP := SUBSTR('Menor que '||CASE SUBSTR(TO_CHAR(VL_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(VL_VRINIFAIXRES) ELSE TO_CHAR(VL_VRINIFAIXRES) END,1,50);
				  						                      END IF;
				  						                      IF VL_IDFAIXRESINS = '=' THEN
				  						                         V_DSLIMIINSP := SUBSTR('Entre '||CASE SUBSTR(TO_CHAR(VL_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(VL_VRINIFAIXRES) ELSE TO_CHAR(VL_VRINIFAIXRES) END||' e '||CASE SUBSTR(TO_CHAR(VL_VRFINFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(VL_VRFINFAIXRES) ELSE TO_CHAR(VL_VRFINFAIXRES) END,1,50);
				  						                      END IF;
				  						                      IF V_IDFAIXRESINS = 'M' THEN
				  						                         V_DSLIMIINSP := SUBSTR('Maior ou Igual a '||CASE SUBSTR(TO_CHAR(VL_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(VL_VRINIFAIXRES) ELSE TO_CHAR(VL_VRINIFAIXRES) END,1,50);
				  						                      END IF;
				  						                      IF V_IDFAIXRESINS = 'N' THEN
				  						                         V_DSLIMIINSP := SUBSTR('Menor ou Igual a '||CASE SUBSTR(TO_CHAR(VL_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(VL_VRINIFAIXRES) ELSE TO_CHAR(VL_VRINIFAIXRES) END,1,50);
				  						                      END IF;
				  						                      IF V_IDFAIXRESINS = 'D' THEN
				  						                         V_DSLIMIINSP := ('Indetectavel');
				  						                      END IF;
				  						                      IF V_IDFAIXRESINS = 'T' THEN
				  						                         V_DSLIMIINSP := ('incontavel');
				  						                      END IF;
				  						                   END IF;

				  					                   ELSE

				  					                      BEGIN
				  					                         SELECT CDRESPINSPEC, NMRESPINSPEC, VRPONTRESINS, IDFAIXRESINS, VRINIFAIXRES, VRFINFAIXRES, CDREFERENCIA, CDORDEM
				  					                           INTO VN_CDRESPINSPEC, VN_NMRESPINSPEC, VN_VRPONTRESINS, VN_IDFAIXRESINS, VN_VRINIFAIXRES, VN_VRFINFAIXRES, VX_REF, VX_ORDEM
				  					                           FROM RESPOSINSPEC
				  					                          WHERE (CDINSPECAO = C_Inspecao.CDINSPECAO)
				  					                            AND (CDPRODUTO IS NULL )
				  					                            AND (VRPONTRESINS = '0')
				  					                            AND (IDSTATUSRESP  = 'A')
				  					                            AND (IDRESPPROC  = C_InspecProd.IDPROCPROD)
				  					                            AND (CDVERSAO = C_VERSOES.CDVERSAO);
				  					                      EXCEPTION
				  					                       	 WHEN NO_DATA_FOUND THEN
				  					                         	 VN_CDRESPINSPEC := NULL; VN_NMRESPINSPEC := NULL; VN_VRPONTRESINS := NULL; VN_IDFAIXRESINS := NULL;
				  					                        	 VN_VRINIFAIXRES := NULL; VN_VRFINFAIXRES := NULL; VX_REF := NULL; VX_ORDEM:= NULL;
				  					                      END;

				  						                   IF VNU_CDRESPINSPEC <> NULL THEN
				  						                      IF VNU_IDFAIXRESINS = '>' THEN
				  						                         V_DSLIMIINSP := SUBSTR('Maior que '||CASE SUBSTR(TO_CHAR(VL_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(VL_VRINIFAIXRES) ELSE TO_CHAR(VL_VRINIFAIXRES) END,1,50);
				  						                      END IF;
				  						                      IF VL_IDFAIXRESINS = '<' THEN
				  						                         V_DSLIMIINSP := SUBSTR('Menor que '||CASE SUBSTR(TO_CHAR(VL_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(VL_VRINIFAIXRES) ELSE TO_CHAR(VL_VRINIFAIXRES) END,1,50);
				  						                      END IF;
				  						                      IF VL_IDFAIXRESINS = '=' THEN
				  						                         V_DSLIMIINSP := SUBSTR('Entre '||CASE SUBSTR(TO_CHAR(VL_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(VL_VRINIFAIXRES) ELSE TO_CHAR(VL_VRINIFAIXRES) END||' e '||CASE SUBSTR(TO_CHAR(VL_VRFINFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(VL_VRFINFAIXRES) ELSE TO_CHAR(VL_VRFINFAIXRES) END,1,50);
				  						                      END IF;
				  						                      IF V_IDFAIXRESINS = 'M' THEN
				  						                         V_DSLIMIINSP := SUBSTR('Maior ou Igual a '||CASE SUBSTR(TO_CHAR(VL_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(VL_VRINIFAIXRES) ELSE TO_CHAR(VL_VRINIFAIXRES) END,1,50);
				  						                      END IF;
				  						                      IF V_IDFAIXRESINS = 'N' THEN
				  						                         V_DSLIMIINSP := SUBSTR('Menor ou Igual a '||CASE SUBSTR(TO_CHAR(VL_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(VL_VRINIFAIXRES) ELSE TO_CHAR(VL_VRINIFAIXRES) END,1,50);
				  						                      END IF;
				  						                      IF V_IDFAIXRESINS = 'D' THEN
				  						                         V_DSLIMIINSP := ('Indetectavel');
				  						                      END IF;
				  						                      IF V_IDFAIXRESINS = 'T' THEN
				  						                         V_DSLIMIINSP := ('Incontavel');
				  						                      END IF;
				  						                   END IF;

				  					                   END IF;

				  				                   END IF;
                       
                             SELECT COUNT(*)
				  				                     INTO V_EXISTITEM
				  				                     FROM ITEMINSAUDIT
				  				                    WHERE CDFILIAL     = :NEW.CDFILIAL
				  				                   	  AND NRAUDITORIA  = V_AUDITORIA
				  				                   	  AND NRINSPECAUDI = V_NEWNRINSPECAUDI
				  				                   	  AND CDINSPECAO   = C_Inspecao.CDINSPECAO;

				  				                   IF V_EXISTITEM = 0 THEN

				  				                      insert into ITEMINSAUDIT
				  				                      (CDFILIAL,   NRAUDITORIA,  NRINSPECAUDI, CDINSPECAO,
				  				                       CDOPERADOR, IDOPCACEITIN, DSOBSINSAUDI, DSLIMIINSP, DSANALISE, CDREFERENCIA, CDORDEM,SGUNRESPOSTA)
				  				                       values
				  				                      (:NEW.CDFILIAL,  V_AUDITORIA,  V_NEWNRINSPECAUDI, C_Inspecao.CDINSPECAO,
				  				                       :NEW.CDOPERADOR,    'P',  '', V_DSLIMIINSP, C_Inspecao.NMINSPECAO, VX_REF, VX_ORDEM,C_Inspecao.SGUNIDADE);

				  					                     BEGIN
				  					                        SELECT DSINSPROD
				  					                          INTO V_DSINSPROD
				  					                          FROM DSINSPECPROD
				  					                         WHERE CDINSPECAO = C_Inspecao.CDINSPECAO
				  					                           AND CDPRODUTO  = V_CDPRODESTO
				  					                           AND IDRESPPROC = C_InspecProd.IDPROCPROD;
				  					                     EXCEPTION
				  					                        WHEN NO_DATA_FOUND THEN
				  					                  	        V_DSINSPROD := '';
				  					                     END;

				  					                     IF (V_DSINSPROD IS NOT NULL) THEN

                                   SELECT MAX(CDRESPINSPEC)
                                     INTO V_CDRESPINSPECDS
                                     FROM RESPOSINSPEC
                                    WHERE CDPRODUTO  = V_CDPRODESTO
                                      AND CDINSPECAO = C_Inspecao.CDINSPECAO
                                      AND IDRESPPROC = C_InspecProd.IDPROCPROD;

                                   IF (V_CDRESPINSPECDS IS NOT NULL) THEN
                                      SELECT COUNT(*)
				  				                              INTO V_EXISTITEM
        				  				                      FROM DSINSPECAUDIT
                                       WHERE CDFILIAL = :NEW.CDFILIAL
                                         AND NRAUDITORIA = V_AUDITORIA
                                         AND CDPRODUTO = V_CDPRODESTO
                                         AND CDINSPECAO = C_Inspecao.CDINSPECAO
                                         AND CDRESPINSPEC = V_CDRESPINSPECDS;
                                      IF V_EXISTITEM = 0 THEN                                  
                                         INSERT INTO DSINSPECAUDIT
                                         (CDFILIAL, NRAUDITORIA, CDPRODUTO, CDINSPECAO, DSINSPROD, CDRESPINSPEC)
                                         VALUES
                                         (:NEW.CDFILIAL, V_AUDITORIA, V_CDPRODESTO, C_Inspecao.CDINSPECAO, V_DSINSPROD, V_CDRESPINSPECDS);
                                      END IF;
                                   END IF;
                                END IF;  
                             END IF;   
                          END LOOP;

				  		               END IF;

				  		               V_SETORANT := C_InspecProd.CDSETOR;

				  	             END LOOP;

				                UPDATE LOTE
				                	  SET IDSTANALISE = 'A',
				                		     DTVALANALOTE = V_DTVALANA
				                 WHERE (CDFILIAL   = :NEW.CDFILIAL)
				                	  AND (NRLOTEESTQ = :NEW.NRLOTEESTQ)
				                	  AND (NRSUBLOTE  = :NEW.NRSUBLOTE)
				                	  AND (CDPRODUTO  = V_CDPRODESTO);
			   
				             END IF;
                 
			           END LOOP;
      
		         ELSE
      
			           BEGIN
			              SELECT COUNT(*) 
                   INTO V_INSPECPROD
                   FROM(SELECT DISTINCT CDPRODUTO, IDPROCPROD,
                               DENSE_RANK() OVER (PARTITION BY CDPRODUTO ORDER BY IDPROCPROD DESC) PRIORITY
			                       FROM INSPECAO ICAO, INSPECPROD IPRO
			                      WHERE (IPRO.CDPRODUTO    = V_CDPRODESTO)
			              	         AND (IPRO.CDINSPECAO   = ICAO.CDINSPECAO)
			              	         AND (IPRO.IDPROCPROD IN ('E', 'M', 'A'))
			              	         AND (ICAO.IDORIGINSPEC = 'ANA')
			              	         AND (ICAO.IDSITINSPEC  = 'A')
			              	         AND (IPRO.IDSTATUSINSPEC = 'A')
                         ORDER BY 2 DESC)
                  WHERE PRIORITY = 1;
			           EXCEPTION
			           	WHEN NO_DATA_FOUND THEN
			           		V_INSPECPROD  := 0;
			           END;
      
			           IF V_INSPECPROD > 0 THEN
      
				             SELECT NVL(CDFORNECED, NULL)
				               INTO V_CDFORNECED
				               FROM NOTAFISCAL
				              WHERE CDFILIAL   = :NEW.CDFILIAL
				             	  AND NRLANCTONF = :NEW.NRLANCTONF;
      
				             BEGIN
				                SELECT MAX(IDORIGINSPEC)
                      INTO V_IDORIGINSPEC
                      FROM(SELECT IPRO.CDPRODUTO, IPRO.IDPROCPROD, ICAO.IDORIGINSPEC, 
                                  DENSE_RANK() OVER (PARTITION BY IPRO.CDPRODUTO ORDER BY IPRO.IDPROCPROD DESC) PRIORITY
				                         FROM INSPECAO ICAO, INSPECPROD IPRO
				                        WHERE (IPRO.CDPRODUTO    = V_CDPRODESTO)
				                	         AND (IPRO.CDINSPECAO   = ICAO.CDINSPECAO)
				                	         AND (IPRO.IDPROCPROD IN ('E', 'M','A'))
				                	         AND (ICAO.IDORIGINSPEC = 'ANA')
				                	         AND (ICAO.IDSITINSPEC  = 'A')
				                	         AND (IPRO.IDSTATUSINSPEC = 'A')
                              ORDER BY 2 DESC)
                     WHERE PRIORITY = 1;
				             EXCEPTION
				             	WHEN NO_DATA_FOUND THEN
				             		V_IDORIGINSPEC := NULL;
				             END;
      
				             BEGIN
				                SELECT COUNT(*)
				                  INTO V_AUDITORIA
				                  FROM AUDITORIA
				                 WHERE (CDFILIAL     = :NEW.CDFILIAL)
				                	  AND (NRLANCTONF   = :NEW.NRLANCTONF)
				                	  AND (NRSEQITPROD  = :NEW.NRSEQITPROD)
				                	  AND (IDORIGAUDIT  = V_IDORIGINSPEC)
				                	  AND (IDSTATUSAUDI <> '4');
				             EXCEPTION
				             	WHEN NO_DATA_FOUND THEN
				             		V_AUDITORIA := 0;
				             END;
      
				             BEGIN
				                SELECT MAX(CDSETOR)
                      INTO V_SETORANT
                      FROM (SELECT IPRO.CDSETOR, IPRO.CDPRODUTO, IPRO.IDPROCPROD,
                                   DENSE_RANK() OVER (PARTITION BY IPRO.CDPRODUTO ORDER BY IPRO.IDPROCPROD DESC) PRIORITY
				                          FROM INSPECAO ICAO, INSPECPROD IPRO
				                         WHERE (IPRO.CDPRODUTO    = V_CDPRODESTO)
				                	          AND (IPRO.CDINSPECAO   = ICAO.CDINSPECAO)
				                	          AND (IPRO.IDPROCPROD IN ('E', 'M','A'))
				                	          AND (ICAO.IDORIGINSPEC = 'ANA')
				                	          AND (ICAO.IDSITINSPEC  = 'A')
				                	          AND (IPRO.IDSTATUSINSPEC = 'A')
                             ORDER BY 3 DESC)
                      WHERE PRIORITY = '1';
				             EXCEPTION
                    WHEN NO_DATA_FOUND THEN
                    V_SETORANT  := 'AAAA';
				             END;
      
				             IF (V_IDVDANALISE = '1') THEN
				             	
                    -- VERIFICAR A DATA DE VALIDADE DA ANALISE COM BASE NA PARAMETRIZACAO DA TELA DE PRODUTO
				                BEGIN
				                   SELECT (SYSDATE + NVL(NRDIASVALANA, 0)*30) AS VALANA
				                     INTO V_DTVALANA
				                     FROM PRODUTO
				                    WHERE CDPRODUTO = V_CDPRODESTO
				                   	  AND NRDIASVALANA IS NOT NULL;
				                EXCEPTION
				                	when NO_DATA_FOUND then
				                		V_DTVALANA := '';
				                END;
                    
				             ELSE
				                V_DTVALANA := VALIDADE_ANA(:NEW.CDFILIAL, V_CDFILIRECE, 'DFE', :NEW.NRLOTEESTQ, :NEW.NRSUBLOTE, 'A', V_CDPRODESTO);
				             END IF;
      
				             V_VEZES := '0';
				  
				             FOR C_InspecProd IN (SELECT CDSETOR, IDORIGINSPEC, CDNVINSPECAO, IDPROCPROD, CDORDEMINSPEC, CDINSPECAO, CDARVINSPEC, CDPRODUTO, CDINSPECAOPRO, NMINSPECAO, NRSEQINSPRO, IDEXIBCERTFICA
                                        FROM(SELECT CDSETOR, IDORIGINSPEC, CDNVINSPECAO, IDPROCPROD, CDORDEMINSPEC, CDINSPECAO, CDARVINSPEC, CDPRODUTO, CDINSPECAOPRO, NMINSPECAO, NRSEQINSPRO, IDEXIBCERTFICA, 
                                                    DENSE_RANK() OVER (PARTITION BY CDPRODUTO ORDER BY IDPROCPROD DESC) PRIORITY 
                                               FROM (SELECT IPRO.CDSETOR, ICAO.IDORIGINSPEC,   ICAO.CDNVINSPECAO, IPRO.IDPROCPROD, IPRO.CDORDEMINSPEC,
				             									                                  ICAO.CDINSPECAO, ICAO.CDARVINSPEC, IPRO.CDPRODUTO, IPRO.CDINSPECAO CDINSPECAOPRO,
				             									                                  ICAO.NMINSPECAO, IPRO.NRSEQINSPRO, IPRO.IDEXIBCERTFICA
				             							                               FROM INSPECAO ICAO, INSPECPROD IPRO
				             							                              WHERE (IPRO.CDPRODUTO    = V_CDPRODESTO)
				             								                               AND (IPRO.CDINSPECAO   = ICAO.CDINSPECAO)
				             								                               AND (IPRO.IDPROCPROD IN ('E', 'M', 'A'))
				             								                               AND (ICAO.IDORIGINSPEC = 'ANA')
				             								                               AND (ICAO.IDSITINSPEC  = 'A')
				             								                               AND (IPRO.IDSTATUSINSPEC = 'A')
                                                        ORDER BY IPRO.IDPROCPROD DESC
                                                    )
                                            )
                                       WHERE PRIORITY = 1
				             							               ORDER BY CDSETOR)LOOP
                                       
      
				  	             V_VEZES := V_VEZES + '1';
       
				  	             --Verifica se a AF que deu origem a nota e Piloto
				  	             BEGIN
				  	                SELECT A.IDAFDESTALMOXPIL
				  	                  INTO  V_IDAUDIIL
				  	                  FROM AUTOFORNE A, ITEMAUTF I,NFRELACAF N
				  	                 WHERE N.NRLANCTONF  = :NEW.NRLANCTONF
				  	                	  AND N.CDFILIAL    = :NEW.CDFILIAL
				  	                	  AND I.NRLANCTONF  = N.NRLANCTONF
				  	                	  AND I.CDFILDEST   = N.CDFILDEST
				  	                	  AND I.CDFILLANC   = N.CDFILLANC
				  	                	  AND I.CDMARCA     = N.CDMARCA
				  	                	  AND I.CDPRODUTO   = N.CDPRODUTO
				  	                	  AND I.DTPROGENTAF = N.DTPROGENTAF
				  	                	  AND I.CDFILDEST   = A.CDFILDEST
				  	                	  AND I.CDFILLANC   = A.CDFILLANC
				  	                	  AND I.NRAUTOFORN  = A.NRAUTOFORN
				  	                	  AND A.IDAFDESTALMOXPIL = 'S';
				  	             EXCEPTION
				  	             	WHEN NO_DATA_FOUND THEN
				  	             		V_IDAUDIIL := 'N';
				  	             END;
      
				  	             IF (V_VEZES > '1') THEN
       
				  		               IF (V_SETORANT <> NVL(C_InspecProd.CDSETOR, 'AAAA')) THEN
				  		                  NOVO_CODIGO_SC('AUDITORIA'||:NEW.CDFILIAL, V_SEQUENCIAL);
				  		                  V_SEQUENCIAL := SUBSTR(V_SEQUENCIAL, 11,10);
                          
				  		                  insert into AUDITORIA
				  		                  (NRLOTEESTQ,   NRSUBLOTE,    CDPRODUTO,
				  		                   IDSTATUSAUDI, CDOPEINCAUDI, CDFILIAL,  CDFILIALNF, DTINCLAUDIT,
				  		                   NRAUDITORIA,  IDORIGAUDIT,  CDSETEXECAUD,  DSREFEAUDIT,
				  		                   NRLANCTONF,   NRSEQITPROD, IDLIBERAUDIT,   IDTPAUDITADO,
				  		                   CDFORNECED,IDAUDIPIL, DTVALANA, DSVALIDADE)
				  		                  values
				  		                  (:NEW.NRLOTEESTQ,   :NEW.NRSUBLOTE, V_CDPRODESTO,
				  		                   '1', :NEW.CDOPERADOR, :NEW.CDFILIAL, :NEW.CDFILIMOVI,  SYSDATE,
				  		                   V_SEQUENCIAL,  'ANA',  DECODE(C_InspecProd.CDSETOR, 'AAAA', NULL, C_InspecProd.CDSETOR), 'Gerado pelo lancamento de Nota Fiscal.',
				  		                   :NEW.NRLANCTONF,   :NEW.NRSEQITPROD, 'S', C_InspecProd.IDPROCPROD,
				  		                   V_CDFORNECED,V_IDAUDIIL, V_DTVALANA, V_DSVALIDADE);
                       
				  		               	   V_AUDITORIA := V_SEQUENCIAL;
                           
				  		               	   V_CDPRODFERE := '';
                           
				  		               	   --VERIFICA SE JA EXISTE REFERENCIA PARA A ANALISE
				  		               	   BEGIN
				  		               	      SELECT COUNT(NRAUDITORIA)
				  		               		       INTO V_NRFERE
				  		               		       FROM REFEBAUDIT
				  		               	       WHERE NRAUDITORIA = V_SEQUENCIAL
				  		               		        AND CDFILIAL    = :NEW.CDFILIAL
                                 AND NVL(CDVERSAO, 'x') = 'x';
				  		               	   EXCEPTION
				  		               		   WHEN NO_DATA_FOUND THEN
				  		               		  	 V_NRFERE := 0;
				  		               	   END;
                       
				  		               	   IF V_NRFERE = 0 THEN
                           
				  		               		     BEGIN
				  		               		        SELECT CDVERSAO, DSREFERENCIA, CDPRODUTO
				  		               		          INTO V_CDVERSAOREF, V_DSREFERENCIA, V_CDPRODFERE
				  		               		          FROM REFEBIBIO
				  		               		         WHERE (CDPRODUTO = V_CDPRODESTO)
                                    AND NVL(CDVERSAO, 'x') = 'x';
				  		               		     EXCEPTION
				  		               		     	WHEN NO_DATA_FOUND THEN
				  		               		     		V_CDVERSAOREF  := NULL;
				  		               		     		V_DSREFERENCIA := NULL;
				  		               		     		V_CDPRODFERE   := NULL;
				  		               		     END;
                       
				  		               		     IF NOT(V_CDPRODFERE IS NULL) THEN
                              
				  		               		        INSERT INTO REFEBAUDIT
				  		               		        (CDFILIAL, CDVERSAO, NRAUDITORIA, DSREFERENCIA, CDPRODUTO)
				  		               		        VALUES
				  		               		        (:NEW.CDFILIAL, V_CDVERSAOREF, V_SEQUENCIAL, V_DSREFERENCIA, V_CDPRODFERE);
                       
				  		               		     END IF;
                              
				  		               	   END IF;
                         
				  		               END IF;
        
				                ELSE
      
				  		               NOVO_CODIGO_SC('AUDITORIA'||:NEW.CDFILIAL, V_SEQUENCIAL);
				  		               V_SEQUENCIAL := SUBSTR(V_SEQUENCIAL, 11,10);
                       
				  		               insert into AUDITORIA
				  		               (NRLOTEESTQ,   NRSUBLOTE,    CDPRODUTO,
				  		                IDSTATUSAUDI, CDOPEINCAUDI, CDFILIAL,  CDFILIALNF, DTINCLAUDIT,
				  		                NRAUDITORIA,  IDORIGAUDIT,  CDSETEXECAUD,  DSREFEAUDIT,
				  		                NRLANCTONF,   NRSEQITPROD, IDLIBERAUDIT,   IDTPAUDITADO,
				  		                CDFORNECED,IDAUDIPIL, DTVALANA, DSVALIDADE)
				  		               values
				  		               (:NEW.NRLOTEESTQ,   :NEW.NRSUBLOTE, V_CDPRODESTO,
				  		                '1', :NEW.CDOPERADOR, :NEW.CDFILIAL, :NEW.CDFILIMOVI,  SYSDATE,
				  		                V_SEQUENCIAL,  'ANA',  DECODE(C_InspecProd.CDSETOR, 'AAAA', NULL, C_InspecProd.CDSETOR), 'Gerado pelo lancamento de Nota Fiscal.',
				  		                :NEW.NRLANCTONF,   :NEW.NRSEQITPROD, 'S', C_InspecProd.IDPROCPROD,
				  		                V_CDFORNECED,V_IDAUDIIL, V_DTVALANA, V_DSVALIDADE);
                       
				  		               V_AUDITORIA := V_SEQUENCIAL;
                       
                       
				  		               V_CDPRODFERE := '';
         
				  		               --VERIFICA SE JA EXISTE REFERENCIA PARA A ANALISE
				  		               BEGIN
				  		                  SELECT COUNT(NRAUDITORIA)
				  			                   INTO V_NRFERE
				  			                   FROM REFEBAUDIT
				  		                   WHERE NRAUDITORIA = V_SEQUENCIAL
				  			                    AND CDFILIAL    = :NEW.CDFILIAL
                             AND NVL(CDVERSAO, 'x') = 'x';
				  		               EXCEPTION
				  			               WHEN NO_DATA_FOUND THEN
				  			              	 V_NRFERE := 0;
				  		               END;
      
				  		               IF V_NRFERE = 0 THEN
      
				  			                 BEGIN
				  			                    SELECT CDVERSAO, DSREFERENCIA, CDPRODUTO
				  			                      INTO V_CDVERSAOREF, V_DSREFERENCIA, V_CDPRODFERE
				  			                      FROM REFEBIBIO
				  			                     WHERE (CDPRODUTO = V_CDPRODESTO)
                                AND NVL(CDVERSAO, 'x') = 'x';
				  			                 EXCEPTION
				  			                 	WHEN NO_DATA_FOUND THEN
				  			                 		V_CDVERSAOREF  := NULL;
				  			                 		V_DSREFERENCIA := NULL;
				  			                 		V_CDPRODFERE   := NULL;
				  			                 END;
      
				  			                 IF NOT(V_CDPRODFERE IS NULL) THEN
      
				  				                   INSERT INTO REFEBAUDIT
				  				                   (CDFILIAL, CDVERSAO, NRAUDITORIA, DSREFERENCIA, CDPRODUTO)
				  				                   VALUES
				  				                   (:NEW.CDFILIAL, V_CDVERSAOREF, V_SEQUENCIAL, V_DSREFERENCIA, V_CDPRODFERE);
      
				  			                 END IF;
				  		                  
                       END IF;
				  	             
                    END IF;
      
				  	             BEGIN
				  	                SELECT LPAD((NVL(MAX(NRINSPECAUDI), '0') + 1), 3, '0')
				  	                  INTO V_NEWNRINSPECAUDI
				  	                  FROM INSPECAUDIT
				  	                 WHERE CDFILIAL    = :NEW.CDFILIAL
				  	                	  AND NRAUDITORIA = V_SEQUENCIAL;
				  	             EXCEPTION
				  	             	WHEN NO_DATA_FOUND THEN
				  	             		V_NEWNRINSPECAUDI := NULL;
				  	             END;
      
				  	             insert into INSPECAUDIT
				  	             (CDFILIAL, NRAUDITORIA,  NRINSPECAUDI, IDINSPCONC,
				  	              CDOPERADOR, CDINSPECAO, DSINSPECAUDI, IDNOVAAMOSTR,
				  	              IDTIPOINSAUD, CDORDEMAUDIT, DSANALISE, IDEXIBCERTFICA)
				  	             values
				  	             (:NEW.CDFILIAL,    V_AUDITORIA,  V_NEWNRINSPECAUDI, 'P',
				  	              :NEW.CDOPERADOR,  C_InspecProd.CDINSPECAO, '',   'N',
				  	              'A', C_InspecProd.CDORDEMINSPEC, C_InspecProd.NMINSPECAO,
				  	              C_InspecProd.IDEXIBCERTFICA);
      
				  	              SELECT COUNT(*)
				  	                INTO V_INSPECRESP
				  	                FROM RESPOSINSPEC R, INSPECAO I
				  	               WHERE (I.CDARVINSPEC LIKE (C_InspecProd.CDARVINSPEC || '%'))
				  	              	  AND (I.IDSITINSPEC = 'A')
				  	              	  AND (R.CDINSPECAO  = I.CDINSPECAO)
				  	              	  AND (R.CDPRODUTO   = V_CDPRODESTO)
				  	              	  AND (R.IDRESPPROC   = C_InspecProd.IDPROCPROD);

				  	              IF V_INSPECRESP > 0 THEN
				  	                 V_RECURSOHAB   := '';
				  	                 V_RECURSOEQUIP := '';

				  		             FOR C_InspecResp IN (SELECT I.CDINSPECAO, I.CDTIPOAMOS, I.IDTPRESPINSP, R.CDRESPINSPEC, I.NMINSPECAO, I.SGUNIDADE, R.CDREFERENCIA, R.CDORDEM
				  		             							                FROM RESPOSINSPEC R, INSPECAO I
				  		             							               WHERE (I.CDARVINSPEC LIKE (C_InspecProd.CDARVINSPEC || '%'))
				  		             								                AND (I.IDSITINSPEC  = 'A')
				  		             								                AND (R.CDINSPECAO   = I.CDINSPECAO)
				  		             								                AND (R.CDPRODUTO    = V_CDPRODESTO)
				  		             								                AND (R.IDSTATUSRESP = 'A')
				  		             								                AND (R.IDRESPPROC   = C_InspecProd.IDPROCPROD)
				  		             							               ORDER BY I.CDINSPECAO, R.VRPONTRESINS) LOOP

				  		                V_DSLIMIINSP := '';

				  			               IF (C_InspecResp.IDTPRESPINSP = 'VALR') THEN

				  				                 BEGIN
				  				                    SELECT COUNT(*)
				  				                      INTO VX_CDINSPECAO
				  				                      FROM RESPOSINSPEC
				  				                     WHERE (CDINSPECAO   = C_InspecResp.CDINSPECAO)
				  				                    	  AND (CDPRODUTO    = V_CDPRODESTO )
				  				                    	  AND (IDRESPPROC   = C_InspecProd.IDPROCPROD)
				  				                    	  AND (CDRESPINSPEC = C_InspecResp.CDRESPINSPEC)
				  				                    	  AND (IDSTATUSRESP = 'A');
				  				                 EXCEPTION
				  				                 	WHEN NO_DATA_FOUND THEN
				  				                 		VX_CDINSPECAO := NULL;
				  				                 END;

				  				                 IF VX_CDINSPECAO > 0 THEN
				  				                    BEGIN
				  				                       SELECT CDRESPINSPEC, NMRESPINSPEC, VRPONTRESINS, IDFAIXRESINS, VRINIFAIXRES, VRFINFAIXRES
				  				                         INTO V_CDRESPINSPEC, V_NMRESPINSPEC, V_VRPONTRESINS, V_IDFAIXRESINS, V_VRINIFAIXRES, V_VRFINFAIXRES
				  				                         FROM RESPOSINSPEC
				  				                        WHERE (CDINSPECAO   = C_InspecResp.CDINSPECAO)
				  				                       	  AND (CDPRODUTO    = V_CDPRODESTO )
				  				                       	  AND (IDRESPPROC   = C_InspecProd.IDPROCPROD)
				  				                       	  AND (VRPONTRESINS = '0')
				  				                       	  AND (CDRESPINSPEC = C_InspecResp.CDRESPINSPEC)
				  				                       	  and (IDSTATUSRESP = 'A');
				  				                    EXCEPTION
				  				                    	WHEN NO_DATA_FOUND THEN
				  				                    		V_CDRESPINSPEC := NULL; V_NMRESPINSPEC := NULL; V_VRPONTRESINS := NULL; V_IDFAIXRESINS := NULL;
				  				                    		V_VRINIFAIXRES := NULL; V_VRFINFAIXRES := NULL;
				  				                    END;

				  					                   IF NOT (V_CDRESPINSPEC IS NULL) THEN
				  					                      IF V_IDFAIXRESINS = '>' THEN
				  					                      	  V_DSLIMIINSP := SUBSTR('Maior que '||CASE SUBSTR(TO_CHAR(V_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(V_VRINIFAIXRES) ELSE TO_CHAR(V_VRINIFAIXRES) END, 1, 50);
				  					                      END IF;
				  					                      IF V_IDFAIXRESINS = '<' THEN
				  					                      	  V_DSLIMIINSP := SUBSTR('Menor que '||CASE SUBSTR(TO_CHAR(V_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(V_VRINIFAIXRES) ELSE TO_CHAR(V_VRINIFAIXRES) END,1,50);
				  					                      END IF;
				  					                      IF V_IDFAIXRESINS = '=' THEN
				  					                      	  V_DSLIMIINSP := SUBSTR('Entre '||CASE SUBSTR(TO_CHAR(V_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(V_VRINIFAIXRES) ELSE TO_CHAR(V_VRINIFAIXRES) END||' e '||CASE SUBSTR(TO_CHAR(V_VRFINFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(V_VRFINFAIXRES) ELSE TO_CHAR(V_VRFINFAIXRES) END, 1, 50);
				  					                      END IF;
				  					                      IF V_IDFAIXRESINS = 'M' THEN
				  					                      	  V_DSLIMIINSP := SUBSTR('Maior ou Igual a '||CASE SUBSTR(TO_CHAR(V_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(V_VRINIFAIXRES) ELSE TO_CHAR(V_VRINIFAIXRES) END,1,50);
				  					                      END IF;
				  					                      IF V_IDFAIXRESINS = 'N' THEN
				  					                      	  V_DSLIMIINSP := SUBSTR('Menor ou Igual a '||CASE SUBSTR(TO_CHAR(V_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(V_VRINIFAIXRES) ELSE TO_CHAR(V_VRINIFAIXRES) END,1,50);
				  					                      END IF;
				  					                      IF V_IDFAIXRESINS = 'D' THEN
				  					                      	  V_DSLIMIINSP := ('Indetectavel');
				  					                      END IF;
				  					                      IF V_IDFAIXRESINS = 'T' THEN
				  					                      	  V_DSLIMIINSP := ('Incontavel');
				  					                      END IF;
				  					                   ELSE
				  					                      V_DSLIMIINSP := '';
				  					                   END IF;

				  				                 ELSE

				  					                   BEGIN
				  					                      SELECT CDRESPINSPEC, NMRESPINSPEC, VRPONTRESINS, IDFAIXRESINS, VRINIFAIXRES, VRFINFAIXRES
				  					                        INTO VN_CDRESPINSPEC, VN_NMRESPINSPEC, VN_VRPONTRESINS, VN_IDFAIXRESINS, VN_VRINIFAIXRES, VN_VRFINFAIXRES
				  					                        FROM RESPOSINSPEC
				  					                       WHERE (CDINSPECAO = C_InspecResp.CDINSPECAO)
				  					                      	  AND (CDPRODUTO IS NULL )
				  					                      	  AND (VRPONTRESINS = '0')
				  					                      	  AND (CDRESPINSPEC = C_InspecResp.CDRESPINSPEC)
				  					                      	  AND (IDSTATUSRESP = 'A');
				  					                   EXCEPTION
				  					                   	WHEN NO_DATA_FOUND THEN
				  					                   		VN_CDRESPINSPEC := NULL; VN_NMRESPINSPEC := NULL; VN_VRPONTRESINS := NULL; VN_IDFAIXRESINS := NULL;
				  					                   		VN_VRINIFAIXRES := NULL; VN_VRFINFAIXRES := NULL;
				  					                   END;

				  					                   IF NOT (VN_CDRESPINSPEC IS NULL) THEN
				  					                      IF V_IDFAIXRESINS = '>' THEN
				  					                      	  V_DSLIMIINSP := SUBSTR('Maior que '||CASE SUBSTR(TO_CHAR(VN_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(VN_VRINIFAIXRES) ELSE TO_CHAR(VN_VRINIFAIXRES) END,1,50);
				  					                      END IF;
				  					                      IF V_IDFAIXRESINS = '<' THEN
				  					                      	  V_DSLIMIINSP := SUBSTR('Menor que '||CASE SUBSTR(TO_CHAR(VN_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(VN_VRINIFAIXRES) ELSE TO_CHAR(VN_VRINIFAIXRES) END,1,50);
				  					                      END IF;
				  					                      IF V_IDFAIXRESINS = '=' THEN
				  					                      	  V_DSLIMIINSP := SUBSTR('Entre '||CASE SUBSTR(TO_CHAR(VN_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(VN_VRINIFAIXRES) ELSE TO_CHAR(VN_VRINIFAIXRES) END||' e '||CASE SUBSTR(TO_CHAR(VN_VRFINFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(VN_VRFINFAIXRES) ELSE TO_CHAR(VN_VRFINFAIXRES) END,1,50);
				  					                      END IF;
				  					                      IF V_IDFAIXRESINS = 'M' THEN
				  					                      	  V_DSLIMIINSP := SUBSTR('Maior ou Igual a '||CASE SUBSTR(TO_CHAR(VN_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(VN_VRINIFAIXRES) ELSE TO_CHAR(VN_VRINIFAIXRES) END,1,50);
				  					                      END IF;
				  					                      IF V_IDFAIXRESINS = 'N' THEN
				  					                      	  V_DSLIMIINSP := SUBSTR('Menor ou Igual a '||CASE SUBSTR(TO_CHAR(VN_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(VN_VRINIFAIXRES) ELSE TO_CHAR(VN_VRINIFAIXRES) END,1,50);
				  					                      END IF;
				  					                      IF V_IDFAIXRESINS = 'D' THEN
				  					                      	  V_DSLIMIINSP := ('Indetectavel');
				  					                      END IF;
				  					                      IF V_IDFAIXRESINS = 'T' THEN
				  					                      	  V_DSLIMIINSP := ('incontavel');
				  					                      END IF;
				  					                   ELSE
				  					                      V_DSLIMIINSP := '';
				  					                   END IF;

				  				                 END IF;

				  			               END IF;

				  			               SELECT COUNT(*)
				  			                 INTO V_EXISTITEM
				  			                 FROM ITEMINSAUDIT
				  			                WHERE CDFILIAL     = :NEW.CDFILIAL
				  			               	  AND NRAUDITORIA  = V_AUDITORIA
				  			               	  AND NRINSPECAUDI = V_NEWNRINSPECAUDI
				  			               	  AND CDINSPECAO   = C_InspecResp.CDINSPECAO;


				  			               IF V_EXISTITEM = 0 THEN

				  			                  insert into ITEMINSAUDIT
				  			                  (CDFILIAL,      NRAUDITORIA,   NRINSPECAUDI,    CDINSPECAO,
				  			                   CDOPERADOR,    IDOPCACEITIN,  DSOBSINSAUDI, DSLIMIINSP, DSANALISE, CDREFERENCIA, CDORDEM, SGUNRESPOSTA)
				  			                  values
				  			                  (:NEW.CDFILIAL,  V_AUDITORIA,  V_NEWNRINSPECAUDI,  C_InspecResp.CDINSPECAO,
				  			                   :NEW.CDOPERADOR,    'P',  '', V_DSLIMIINSP, C_InspecResp.NMINSPECAO, C_InspecResp.CDREFERENCIA, C_InspecResp.CDORDEM,C_InspecResp.SGUNIDADE);

				  				                 BEGIN
				  				                    SELECT DSINSPROD
				  				                      INTO V_DSINSPROD
				  				                      FROM DSINSPECPROD
				  				                     WHERE CDINSPECAO = C_InspecResp.CDINSPECAO
				  				                    	  AND CDPRODUTO  = V_CDPRODESTO
				  				                    	  AND IDRESPPROC = C_InspecProd.IDPROCPROD;
				  				                 EXCEPTION
				  				                 		WHEN NO_DATA_FOUND THEN
				  				                 			V_DSINSPROD := '';
				  				                 END;

                           IF (V_DSINSPROD IS NOT NULL) THEN
                              SELECT MAX(CDRESPINSPEC)
                                INTO V_CDRESPINSPECDS
                                FROM RESPOSINSPEC
                               WHERE CDPRODUTO  = V_CDPRODESTO
                                 AND CDINSPECAO = C_InspecResp.CDINSPECAO
                                 AND IDRESPPROC = C_InspecProd.IDPROCPROD;

                              SELECT COUNT(*)
                                INTO V_EXISTITEM
                                FROM DSINSPECAUDIT
                               WHERE CDFILIAL = :NEW.CDFILIAL
                                 AND NRAUDITORIA = V_AUDITORIA
                                 AND CDPRODUTO = V_CDPRODESTO
                                 AND CDINSPECAO = C_InspecResp.CDINSPECAO
                                 AND CDRESPINSPEC = V_CDRESPINSPECDS;
                              
                              IF V_EXISTITEM = 0 THEN
   				  				                    INSERT INTO DSINSPECAUDIT
	   			  				                    (CDFILIAL, NRAUDITORIA, CDPRODUTO, CDINSPECAO, DSINSPROD, CDRESPINSPEC)
		   		  				                    VALUES
			   	  				                   (:NEW.CDFILIAL, V_AUDITORIA, V_CDPRODESTO, C_InspecResp.CDINSPECAO, V_DSINSPROD, V_CDRESPINSPECDS);
                              END IF; 

				  				                 END IF;
				  				                 -- INSERE OS REAGENTES NECESSARIOS PARA REALIZAR A ANALISE
				  				                 FOR C_INSUMOANA IN (SELECT IA.CDPRODINSU, NVL(IA.QTDEBRUTANA, 0) AS QTRETIRADA
				  				                 							               FROM INSUMOANA IA, INSPECAO I
				  				                 							              WHERE IA.CDPRODUTO  = V_CDPRODESTO
				  				                 							                AND IA.CDINSPECAO = C_InspecResp.CDINSPECAO
				  				                 							                AND IA.IDPROCPROD = C_InspecProd.IDPROCPROD
				  				                 							                AND IA.CDINSPECAO = I.CDINSPECAO
				  				                 							                AND I.IDSITINSPEC = 'A')LOOP
      
				  					                   NOVO_CODIGO_SC('FORMULAUDITANA'||:NEW.CDFILIAL, V_SEQINSUMOANA);
				  					                   V_SEQINSUMOANA := SUBSTR(V_SEQINSUMOANA,11,10);
				  					                   V_NRSEQINSUMOANA := TO_NUMBER(V_SEQINSUMOANA);
                              
				  					                   INSERT INTO FORMULAUDITANA
				  					                   (NRSEQFORMULA, CDFILIAL, NRAUDITORIA, CDPRODUTO,
				  					                    CDINSPECAO, IDSITAMOSTRA, QTRETIRADA, DTINCFORMULANA)
				  					                   VALUES
				  					                   (V_NRSEQINSUMOANA, :NEW.CDFILIAL, V_SEQUENCIAL, C_INSUMOANA.CDPRODINSU,
				  					                    C_InspecResp.CDINSPECAO, '1', C_INSUMOANA.QTRETIRADA, SYSDATE);
            
				  				                 END LOOP;
          
				  				                 -- BUSCA E INSERE OS REAGENTES MARCADOS COMO 'COMPATIBILIDADE' NO PROCESSO DE FABRICACAO, CASO O PRODUTO SEJA PRODUTO ACABADO
				  				                 IF C_InspecProd.IDPROCPROD = 'A' THEN
				  				                 
                              FOR C_COMPATIBILIDADE IN (SELECT I.CDPRODINSUMO
				  				                    										                  FROM INSUMETAPA I, PROCFABRICA P
				  				                    										                 WHERE P.CDFILIAL     = :NEW.CDFILIAL
				  				                    										                   AND P.CDFILIAL     = I.CDFILIAL
				  				                    										                   AND I.CDPRODUTO    = V_CDPRODESTO
				  				                    										                   AND P.CDPRODUTO    = I.CDPRODUTO
				  				                    										                   AND P.CDPROCFABRIC = I.CDPROCFABRIC
				  				                    										                   AND P.IDPROFABPADR = 'S'
				  				                    										                   AND I.IDCOMPATI    = 'S')LOOP
                              
				  				                       NOVO_CODIGO_SC('FORMULAUDITANA'||:NEW.CDFILIAL, V_SEQINSUMOANA);
				  				                       V_SEQINSUMOANA := SUBSTR(V_SEQINSUMOANA,11,10);
				  				                       V_NRSEQINSUMOANA := TO_NUMBER(V_SEQINSUMOANA);
      
				  						                     INSERT INTO FORMULAUDITANA
				  						                     (NRSEQFORMULA, CDFILIAL, NRAUDITORIA, CDPRODUTO,
				  						                      CDINSPECAO, IDSITAMOSTRA, DTINCFORMULANA)
				  						                     VALUES
				  						                     (V_NRSEQINSUMOANA, :NEW.CDFILIAL, V_SEQUENCIAL, C_COMPATIBILIDADE.CDPRODINSUMO,
				  						                      C_InspecResp.CDINSPECAO, '1', SYSDATE);
             
				  					                   END LOOP;
           
				  				                 END IF;
          
				  				                 -- INSERE OS RECURSOS NECESSARIOS PARA REALIZAR A ANALISE
				  				                 FOR C_RECURSOANA IN (SELECT R.IDTPRECURSO, DECODE(R.IDTPRECURSO, 'E', R.CDEQUIPPRO, CDHABILIDADE) AS CDRECURSO
				  				                 							                FROM RECURSOANA R
				  				                 							               WHERE R.CDPRODUTO  = V_CDPRODESTO
				  				                 								                AND R.IDPROCPROD = C_InspecProd.IDPROCPROD
				  				                 								                AND R.CDINSPECAO = C_InspecResp.CDINSPECAO)LOOP
      
				  					                   IF (C_RECURSOANA.IDTPRECURSO = 'E') THEN
				  					                      V_RECURSOHAB   := '';
				  					                      V_RECURSOEQUIP := C_RECURSOANA.CDRECURSO;
				  					                   ELSE
				  					                      V_RECURSOHAB   := C_RECURSOANA.CDRECURSO;
				  					                      V_RECURSOEQUIP := '';
				  					                   END IF;
      
				  					                   NOVO_CODIGO_SC('RECURAUDITANA'||:NEW.CDFILIAL, V_SEQRECURSOANA);
				  					                   V_SEQRECURSOANA := SUBSTR(V_SEQRECURSOANA,11,10);
				  					                   V_NRSEQRECURANA := TO_NUMBER(V_SEQRECURSOANA);
                              
				  					                   INSERT INTO RECURAUDITANA
				  					                   (NRSEQRECURANA, CDFILIAL, NRAUDITORIA, IDTPRECURSO,
				  					                    CDHABILIDADE, CDEQUIPPRO, CDINSPECAO)
				  					                   VALUES
				  					                   (V_NRSEQRECURANA, :NEW.CDFILIAL, V_SEQUENCIAL, C_RECURSOANA.IDTPRECURSO,
				  					                    V_RECURSOHAB, V_RECURSOEQUIP, C_InspecResp.CDINSPECAO);

				  				                 END LOOP;

				  			               END IF;

				  		             END LOOP;

				  	           ELSE

				  		             FOR  C_Inspecao IN(SELECT CDINSPECAO, CDTIPOAMOS, IDTPRESPINSP, NMINSPECAO, SGUNIDADE
				  		             							              FROM INSPECAO
				  		             						              WHERE (CDARVINSPEC  LIKE (C_InspecProd.CDARVINSPEC || '%'))
				  		             							               AND (IDSITINSPEC  = 'A')) LOOP

				  			               IF (C_Inspecao.IDTPRESPINSP = 'VALR') THEN

				  				                 BEGIN
				  				                    SELECT CDINSPECAO, CDREFERENCIA, CDORDEM
				  				                    	 INTO VX_CDINSPECAO, VX_REF, VX_ORDEM
				  				                    	 FROM RESPOSINSPEC
				  				                    	WHERE (CDINSPECAO   = C_Inspecao.CDINSPECAO)
				  				                    	  AND (CDPRODUTO    = V_CDPRODESTO )
				  				                    	  AND (IDRESPPROC   = C_InspecProd.IDPROCPROD)
				  				                    	  AND (IDSTATUSRESP = 'A');
				  				                 EXCEPTION
				  				                   WHEN NO_DATA_FOUND THEN
				  				                 	  VX_CDINSPECAO := NULL;
				  				                 END;

				  				                 IF NOT (VX_CDINSPECAO IS NULL) THEN

				  				                    BEGIN
				  				                       SELECT CDRESPINSPEC, NMRESPINSPEC, VRPONTRESINS, IDFAIXRESINS, VRINIFAIXRES, VRFINFAIXRES, CDREFERENCIA, CDORDEM
				  				                         INTO V_CDRESPINSPEC, V_NMRESPINSPEC, V_VRPONTRESINS, V_IDFAIXRESINS, V_VRINIFAIXRES, V_VRFINFAIXRES, VX_REF, VX_ORDEM
				  				                         FROM RESPOSINSPEC
				  				                        WHERE (CDINSPECAO = C_Inspecao.CDINSPECAO)
				  				                       	  AND (CDPRODUTO  = V_CDPRODESTO )
				  				                       	  AND (IDRESPPROC = C_InspecProd.IDPROCPROD)
				  				                       	  AND (VRPONTRESINS = '0')
				  				                       	  AND (IDSTATUSRESP  = 'A');
				  				                    EXCEPTION
				  				                    	WHEN NO_DATA_FOUND THEN
				  				                    		V_CDRESPINSPEC := NULL; V_NMRESPINSPEC := NULL; V_VRPONTRESINS := NULL; V_IDFAIXRESINS := NULL;
				  				                    		V_VRINIFAIXRES := NULL; V_VRFINFAIXRES := NULL;
				  				                    END;

				  					                   IF VNU_CDRESPINSPEC <> NULL THEN
				  					                      IF VNU_IDFAIXRESINS = '>' THEN
				  					                      	  V_DSLIMIINSP := SUBSTR('Maior que '||CASE SUBSTR(TO_CHAR(VL_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(VL_VRINIFAIXRES) ELSE TO_CHAR(VL_VRINIFAIXRES) END,1,50);
				  					                      END IF;
				  					                      IF VL_IDFAIXRESINS = '<' THEN
				  					                      	  V_DSLIMIINSP := SUBSTR('Menor que '||CASE SUBSTR(TO_CHAR(VL_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(VL_VRINIFAIXRES) ELSE TO_CHAR(VL_VRINIFAIXRES) END,1,50);
				  					                      END IF;
				  					                      IF VL_IDFAIXRESINS = '=' THEN
				  					                      	  V_DSLIMIINSP := SUBSTR('Entre '||CASE SUBSTR(TO_CHAR(VL_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(VL_VRINIFAIXRES) ELSE TO_CHAR(VL_VRINIFAIXRES) END||' e '||CASE SUBSTR(TO_CHAR(VL_VRFINFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(VL_VRFINFAIXRES) ELSE TO_CHAR(VL_VRFINFAIXRES) END,1,50);
				  					                      END IF;
				  					                      IF V_IDFAIXRESINS = 'M' THEN
				  					                      	  V_DSLIMIINSP := SUBSTR('Maior ou Igual a '||CASE SUBSTR(TO_CHAR(VL_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(VL_VRINIFAIXRES) ELSE TO_CHAR(VL_VRINIFAIXRES) END,1,50);
				  					                      END IF;
				  					                      IF V_IDFAIXRESINS = 'N' THEN
				  					                      	  V_DSLIMIINSP := SUBSTR('Menor ou Igual a '||CASE SUBSTR(TO_CHAR(VL_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(VL_VRINIFAIXRES) ELSE TO_CHAR(VL_VRINIFAIXRES) END,1,50);
				  					                      END IF;
				  					                      IF V_IDFAIXRESINS = 'D' THEN
				  					                      	  V_DSLIMIINSP := ('Indetectavel');
				  					                      END IF;
				  					                      IF V_IDFAIXRESINS = 'T' THEN
				  					                      	  V_DSLIMIINSP := ('incontavel');
				  					                      END IF;
				  					                   END IF;

				  				                 ELSE

				  					                   BEGIN
				  					                      SELECT CDRESPINSPEC, NMRESPINSPEC, VRPONTRESINS, IDFAIXRESINS, VRINIFAIXRES, VRFINFAIXRES, CDREFERENCIA, CDORDEM
				  					                        INTO VN_CDRESPINSPEC, VN_NMRESPINSPEC, VN_VRPONTRESINS, VN_IDFAIXRESINS, VN_VRINIFAIXRES, VN_VRFINFAIXRES, VX_REF, VX_ORDEM
				  					                        FROM RESPOSINSPEC
				  					                       WHERE (CDINSPECAO = C_Inspecao.CDINSPECAO)
				  					                      	  AND (CDPRODUTO IS NULL )
				  					                      	  AND (VRPONTRESINS = '0')
				  					                      	  AND (IDSTATUSRESP  = 'A');
				  					                   EXCEPTION
				  					                   	WHEN NO_DATA_FOUND THEN
				  					                   		VN_CDRESPINSPEC := NULL; VN_NMRESPINSPEC := NULL; VN_VRPONTRESINS := NULL; VN_IDFAIXRESINS := NULL;
				  					                   		VN_VRINIFAIXRES := NULL; VN_VRFINFAIXRES := NULL; VX_REF := NULL; VX_ORDEM:= NULL;
				  					                   END;

				  					                   IF VNU_CDRESPINSPEC <> NULL THEN

				  						                     IF VNU_IDFAIXRESINS = '>' THEN
				  						                     	  V_DSLIMIINSP := SUBSTR('Maior que '||CASE SUBSTR(TO_CHAR(VL_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(VL_VRINIFAIXRES) ELSE TO_CHAR(VL_VRINIFAIXRES) END,1,50);
				  						                     END IF;
				  						                     IF VL_IDFAIXRESINS = '<' THEN
				  						                     	  V_DSLIMIINSP := SUBSTR('Menor que '||CASE SUBSTR(TO_CHAR(VL_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(VL_VRINIFAIXRES) ELSE TO_CHAR(VL_VRINIFAIXRES) END,1,50);
				  						                     END IF;
				  						                     IF VL_IDFAIXRESINS = '=' THEN
				  						                     	  V_DSLIMIINSP := SUBSTR('Entre '||CASE SUBSTR(TO_CHAR(VL_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(VL_VRINIFAIXRES) ELSE TO_CHAR(VL_VRINIFAIXRES) END||' e '||CASE SUBSTR(TO_CHAR(VL_VRFINFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(VL_VRFINFAIXRES) ELSE TO_CHAR(VL_VRFINFAIXRES) END,1,50);
				  						                     END IF;
				  						                     IF V_IDFAIXRESINS = 'M' THEN
				  						                     	  V_DSLIMIINSP := SUBSTR('Maior ou Igual a '||CASE SUBSTR(TO_CHAR(VL_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(VL_VRINIFAIXRES) ELSE TO_CHAR(VL_VRINIFAIXRES) END,1,50);
				  						                     END IF;
				  						                     IF V_IDFAIXRESINS = 'N' THEN
				  						                     	  V_DSLIMIINSP := SUBSTR('Menor ou Igual a '||CASE SUBSTR(TO_CHAR(VL_VRINIFAIXRES),1,1) WHEN ',' THEN '0'||TO_CHAR(VL_VRINIFAIXRES) ELSE TO_CHAR(VL_VRINIFAIXRES) END,1,50);
				  						                     END IF;
				  						                     IF V_IDFAIXRESINS = 'D' THEN
				  						                     	  V_DSLIMIINSP := ('Indetectavel');
				  						                     END IF;
				  						                     IF V_IDFAIXRESINS = 'T' THEN
				  						                     	  V_DSLIMIINSP := ('Incontavel');
				  						                     END IF;

				  					                   END IF;

                           END IF;

                        END IF;
                        
                        SELECT COUNT(*)
                          INTO V_EXISTITEM
                          FROM ITEMINSAUDIT
                         WHERE CDFILIAL     = :NEW.CDFILIAL
                           AND NRAUDITORIA  = V_AUDITORIA
                           AND NRINSPECAUDI = V_NEWNRINSPECAUDI
                           AND CDINSPECAO   = C_Inspecao.CDINSPECAO;


                        IF V_EXISTITEM = 0 THEN
				  			                  insert into ITEMINSAUDIT
				  			                  (CDFILIAL,   NRAUDITORIA,  NRINSPECAUDI, CDINSPECAO,
				  			                   CDOPERADOR, IDOPCACEITIN, DSOBSINSAUDI, DSLIMIINSP, DSANALISE, CDREFERENCIA, CDORDEM, SGUNRESPOSTA)
				  			                  values
				  			                  (:NEW.CDFILIAL,  V_AUDITORIA,  V_NEWNRINSPECAUDI, C_Inspecao.CDINSPECAO,
				  			                  :NEW.CDOPERADOR,    'P',  '', V_DSLIMIINSP, C_Inspecao.NMINSPECAO, VX_REF, VX_ORDEM,C_Inspecao.SGUNIDADE);

				  			                  BEGIN
				  			                     SELECT DSINSPROD
				  			                       INTO V_DSINSPROD
				  			                       FROM DSINSPECPROD
				  			                      WHERE CDINSPECAO = C_Inspecao.CDINSPECAO
				  			                  	     AND CDPRODUTO  = V_CDPRODESTO
				  			                  	     AND IDRESPPROC = C_InspecProd.IDPROCPROD;
				  			               	  EXCEPTION
				  			               		    WHEN NO_DATA_FOUND THEN
				  			               			      V_DSINSPROD := '';
				  			                  END;

                           IF (V_DSINSPROD IS NOT NULL) THEN
                              SELECT MAX(CDRESPINSPEC)
                                INTO V_CDRESPINSPECDS
                                FROM RESPOSINSPEC
                               WHERE CDPRODUTO  = V_CDPRODESTO
                                 AND CDINSPECAO = C_Inspecao.CDINSPECAO
                                 AND IDRESPPROC = C_InspecProd.IDPROCPROD;

                              IF (V_CDRESPINSPECDS IS NOT NULL) THEN
                                 SELECT COUNT(*)
                                   INTO V_EXISTITEM
                                   FROM DSINSPECAUDIT
                                  WHERE CDFILIAL = :NEW.CDFILIAL
                                    AND NRAUDITORIA = V_AUDITORIA
                                    AND CDPRODUTO = V_CDPRODESTO
                                    AND CDINSPECAO = C_Inspecao.CDINSPECAO
                                    AND CDRESPINSPEC = V_CDRESPINSPECDS;
                                 IF V_EXISTITEM = 0 THEN
                                    INSERT INTO DSINSPECAUDIT
                                    (CDFILIAL, NRAUDITORIA, CDPRODUTO, CDINSPECAO, DSINSPROD, CDRESPINSPEC)
                                    VALUES
                                    (:NEW.CDFILIAL, V_AUDITORIA, V_CDPRODESTO, C_Inspecao.CDINSPECAO, V_DSINSPROD, V_CDRESPINSPECDS);
                                 END IF;   
                              END IF;    
                           END IF;
                        END IF;


				  		             END LOOP;

				  	           END IF;

				  	           V_SETORANT := C_InspecProd.CDSETOR;

				           END LOOP;

				           UPDATE LOTE
				           	  SET IDSTANALISE = 'A',
				           		     DTVALANALOTE = V_DTVALANA
				            WHERE (CDFILIAL   = :NEW.CDFILIAL)
				           	  AND (NRLOTEESTQ = :NEW.NRLOTEESTQ)
				           	  AND (NRSUBLOTE  = :NEW.NRSUBLOTE)
				           	  AND (CDPRODUTO  = V_CDPRODESTO);
      
			         END IF;
      
		       END IF; -- FIM ELSE V_CTRLVERSAO <> 0
      
		    END IF; --FIM V_AUDITORIA = 0 
  
   END IF; -- FIM ((V_IDENTRSAIDOP = 'E' )AND(V_IDATUESTTPOP = 'S') AND (V_TPOPERANA IS NOT NULL))
  
END;
/