CREATE OR REPLACE FUNCTION ORIGEM_LANCAMENTO(
   P_CDEMPRESA  VARCHAR2,
   P_NRLANCCONT VARCHAR2) RETURN VARCHAR2
AS
   V_IDORIGEM VARCHAR2(20);
BEGIN
   V_IDORIGEM := NULL;
   
   BEGIN
		SELECT MAX('MANUAL')
		  INTO V_IDORIGEM
        FROM LANCCONT L
       WHERE L.IDLANCINTE <> 'I'
         AND L.NRLANCCONT = P_NRLANCCONT
         AND L.CDEMPRESA  = P_CDEMPRESA;
   EXCEPTION
      WHEN NO_DATA_FOUND THEN
		V_IDORIGEM := NULL;
   END;
   
   IF V_IDORIGEM IS NULL THEN
	   BEGIN
			SELECT MAX('BAIXAPAGA')
			  INTO V_IDORIGEM
			  FROM BAIXAPAGA B
			 WHERE B.CDEMPRESA  = P_CDEMPRESA
			   AND B.NRLCTBBPAG = P_NRLANCCONT;
	   EXCEPTION
		  WHEN NO_DATA_FOUND THEN
			V_IDORIGEM := NULL;
	   END;
	END IF;
    IF V_IDORIGEM IS NULL THEN      
	   BEGIN
			SELECT MAX('BAIXARECEBIDA')
			  INTO V_IDORIGEM
			  FROM BAIXARECEBIDA B
			 WHERE B.CDEMPRESA  = P_CDEMPRESA 
			   AND B.NRLCTBBREC = P_NRLANCCONT;
	   EXCEPTION
	      WHEN NO_DATA_FOUND THEN
			V_IDORIGEM := NULL;
	   END;
	END IF;
    IF V_IDORIGEM IS NULL THEN   
	   BEGIN
			SELECT MAX('NOTAFISCAL')
			  INTO V_IDORIGEM
			  FROM NOTAFISCAL N
			 WHERE N.CDEMPRESA   = P_CDEMPRESA 
			   AND N.NRLANCTBDOC = P_NRLANCCONT;
	   EXCEPTION
	      WHEN NO_DATA_FOUND THEN
			V_IDORIGEM := NULL;
	   END;
	END IF;   
    IF V_IDORIGEM IS NULL THEN   
	   BEGIN
			SELECT MAX('AJCTPAGAR')
			  INTO V_IDORIGEM
			  FROM AJCTPAGAR A
			 WHERE NVL(A.CDECTBAJPAG, A.CDEMMFAJCNTP) = P_CDEMPRESA 
			   AND A.NRLCTBAJPAG = P_NRLANCCONT;
	   EXCEPTION
	      WHEN NO_DATA_FOUND THEN
			V_IDORIGEM := NULL;
	   END;	
	END IF;
    IF V_IDORIGEM IS NULL THEN   
	   BEGIN
			SELECT MAX('AJCTRECEBER')
			  INTO V_IDORIGEM
			  FROM AJCTRECEBER A
			 WHERE NVL(A.CDECTBAJREC, A.CDEMMFAJCNTR) = P_CDEMPRESA 
			   AND A.NRLCTBAJREC = P_NRLANCCONT;
	   EXCEPTION
	      WHEN NO_DATA_FOUND THEN
			V_IDORIGEM := NULL;
	   END;		  
	END IF;
    IF V_IDORIGEM IS NULL THEN   
	   BEGIN
			SELECT MAX('MOVCREDBANC')
			  INTO V_IDORIGEM
			  FROM MOVCREDBANC M
			 WHERE NVL(M.CDEMPRESA, M.CDECTBMCRED)  = P_CDEMPRESA 
			   AND M.NRLCTBMCRED = P_NRLANCCONT;
	   EXCEPTION
	      WHEN NO_DATA_FOUND THEN
			V_IDORIGEM := NULL;
	   END;		
	END IF;
	IF V_IDORIGEM IS NULL THEN   
	   BEGIN
			SELECT MAX('MOVDEBBANC')
			  INTO V_IDORIGEM
			  FROM MOVDEBBANC M
			 WHERE NVL(M.CDEMPRESA, M.CDECTBMDEB)  = P_CDEMPRESA 
			   AND M.NRLCTBMDEB = P_NRLANCCONT;
	   EXCEPTION
	      WHEN NO_DATA_FOUND THEN
			V_IDORIGEM := NULL;
	   END;	
    END IF;	   
	IF V_IDORIGEM IS NULL THEN   
	   BEGIN
			SELECT MAX('TRANSFBANC')
			  INTO V_IDORIGEM
			  FROM TRANSFBANC T
			 WHERE T.CDEMPRESA  = P_CDEMPRESA 
			   AND T.NRLCTBTRAN = P_NRLANCCONT;
	   EXCEPTION
	      WHEN NO_DATA_FOUND THEN
			V_IDORIGEM := NULL;
	   END;		   	
	END IF; 
	IF V_IDORIGEM IS NULL THEN   
	   BEGIN
			SELECT MAX('LANCLOTE')
			  INTO V_IDORIGEM
			  FROM LANCLOTE LC
			 WHERE LC.CDEMPRESA  = P_CDEMPRESA 
			   AND LC.NRLANCDEFI = P_NRLANCCONT;
	   EXCEPTION 
		WHEN NO_DATA_FOUND THEN
			V_IDORIGEM := NULL;
	   END;		   	
   END IF;
   IF V_IDORIGEM IS NULL THEN
      RETURN('N');
   ELSE
      RETURN(V_IDORIGEM);
   END IF;
END;
/