CREATE OR REPLACE PROCEDURE EAM_CONTABILIZAR_BAIXA(
	P_CDEMPRESA			IN EMPRESA.CDEMPRESA%TYPE,
	P_NRSEQCAPAOPEBEM	IN CAPAOPERABEM.NRSEQCAPAOPEBEM%TYPE,
	P_CDOPERADOR		IN OPERADOR.CDOPERADOR%TYPE,
	P_IDSIMULOPERABEM	IN CAPAOPERABEM.IDSIMULOPERABEM%TYPE,
	P_OPERACAO			IN VARCHAR2, -- P = PROCESSAR, C = CANCELAR
	P_RETORNO			OUT VARCHAR2)
AS
	V_RETORNO VARCHAR2(10);
BEGIN
	IF (P_OPERACAO = 'P') THEN
		FECHA_CONTABILIDADE(P_CDEMPRESA, NULL, P_NRSEQCAPAOPEBEM, P_IDSIMULOPERABEM, P_CDOPERADOR, 'P', 'TB', V_RETORNO);
		P_RETORNO := 'CONTABILIZADO';
	ELSE
		IF (P_OPERACAO = 'C') THEN
			FOR C_CAPALOTE IN (SELECT DISTINCT OPERACAOBEM.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_NRSEQCAPAOPEBEM              = CAPAOPERABEM.NRSEQCAPAOPEBEM)
			LOOP
				UPDATE OPERACAOBEM
				   SET CDLOTE 		 = NULL,
					   IDSITOPERABEM = '1'
				 WHERE P_CDEMPRESA 		 = CDEMPRESA
				   AND C_CAPALOTE.CDLOTE = CDLOTE;
				
				DELETE FROM CAPALOTE
				 WHERE P_CDEMPRESA 		 = CDEMPRESA
				   AND C_CAPALOTE.CDLOTE = CDLOTE;
			END LOOP;
			
			UPDATE CAPAOPERABEM
			   SET IDSITCAPAOPER = '2'
			 WHERE CDEMPRESA       = P_CDEMPRESA
			   AND IDSIMULOPERABEM = P_IDSIMULOPERABEM
			   AND NRSEQCAPAOPEBEM = P_NRSEQCAPAOPEBEM;
			
			P_RETORNO := 'CANCELADO';
		ELSE
			P_RETORNO := '';
		END IF;
	END IF;
END;
/