CREATE OR REPLACE PROCEDURE CANCELA_CONTABILIZACAO_GPA(
	P_CDEMPRESA			  IN EMPRESA.CDEMPRESA%TYPE,
	P_NRSEQFECHABEM 	IN FECHAMENTOBEM.NRSEQFECHABEM%TYPE,
	P_IDSIMULOPERABEM	IN FECHAMENTOBEM.IDSIMULFECHABEM%TYPE,
	P_RETORNO			    OUT VARCHAR2)
AS
	V_IDLOTE CAPALOTE.IDLOTE%TYPE;
	V_CDLOTE OPERACAOBEM.CDLOTE%TYPE;
BEGIN	
	SELECT DISTINCT OPERACAOBEM.CDLOTE
	  INTO V_CDLOTE
	  FROM OPERACAOBEM, ITCAPAOPERABEM, CAPAOPERABEM
	 WHERE P_CDEMPRESA 					          = OPERACAOBEM.CDEMPRESA
	   AND ITCAPAOPERABEM.CDEMPRESA       = OPERACAOBEM.CDEMPRESA
	   AND ITCAPAOPERABEM.CDBEMATIVO      = OPERACAOBEM.CDBEMATIVO
	   AND ITCAPAOPERABEM.IDSIMULOPERABEM = OPERACAOBEM.IDSIMULOPERACAO
	   AND ITCAPAOPERABEM.NRSEQOPERABEM   = OPERACAOBEM.NRSEQOPERABEM
	   AND ITCAPAOPERABEM.CDEMPRESA       = CAPAOPERABEM.CDEMPRESA
	   AND ITCAPAOPERABEM.IDSIMULOPERABEM = CAPAOPERABEM.IDSIMULOPERABEM
	   AND ITCAPAOPERABEM.NRSEQCAPAOPEBEM = CAPAOPERABEM.NRSEQCAPAOPEBEM
	   AND P_NRSEQFECHABEM                = CAPAOPERABEM.NRSEQFECHABEM;
	
	SELECT IDLOTE
	  INTO V_IDLOTE
	  FROM CAPALOTE
	 WHERE P_CDEMPRESA	= CDEMPRESA
	   AND V_CDLOTE 	= CDLOTE;
	   
	IF (V_IDLOTE = 'L') THEN
		P_RETORNO := 'BLOQ';
	ELSE
		UPDATE OPERACAOBEM
		   SET CDLOTE      	= NULL,
			   IDSITOPERABEM	= '1'
	    WHERE P_CDEMPRESA	= CDEMPRESA
		  AND V_CDLOTE	 		= CDLOTE;
	
		DELETE FROM CAPALOTE 
			  WHERE P_CDEMPRESA	= CDEMPRESA 
				AND V_CDLOTE 	    = CDLOTE;
		
		UPDATE CAPAOPERABEM
		   SET IDSITCAPAOPER   = '2'
		 WHERE CDEMPRESA       = P_CDEMPRESA
		   AND IDSIMULOPERABEM = P_IDSIMULOPERABEM
		   AND NRSEQFECHABEM   = P_NRSEQFECHABEM;
			
		UPDATE FECHAMENTOBEM
		   SET IDSITFECHABEM	  = '2'
		 WHERE CDEMPRESA 		    = P_CDEMPRESA
		   AND IDSIMULFECHABEM 	= P_IDSIMULOPERABEM
		   AND NRSEQFECHABEM 	  = P_NRSEQFECHABEM;
		   
		P_RETORNO := 'OK';
	END IF;
END;
/