DROP TYPE CAD_GER_RESULT_OPER_TABLE
/

DROP TYPE CAD_GER_RESULT_OPER_TYPE
/

CREATE TYPE CAD_GER_RESULT_OPER_TYPE AS
OBJECT(NMITEMRECEITA		   VARCHAR2(250),
		 VRTOTITEMREC    	   FLOAT,
		 VRTOTRECEITAS       FLOAT,
		 QTITEMRECEITA			FLOAT,
		 NMITEMCUSTO     	   VARCHAR2(250),		 
		 VRTOTITEMCUSTO 	 	FLOAT,
		 VRTOTCUSTOPROP	 	FLOAT,       
		 VRTOTCUSTOTERC   	FLOAT,
		 VRTOTCTCTBCUSTOPER  FLOAT,
		 VRTOTCTCTBINVEST 	FLOAT,		 
		 VRTOTCTCTBRETI   	FLOAT,
		 SECAO					VARCHAR2(50),
		 IDORDEMEXIB         INTEGER,
		 QTCONVPERIODO 		FLOAT,
		 QTFESTASREALI		   INTEGER
		)
/
			
CREATE TYPE CAD_GER_RESULT_OPER_TABLE AS TABLE OF CAD_GER_RESULT_OPER_TYPE
/

CREATE OR REPLACE FUNCTION CAD_GER_RESULT_OPER (P_CDFILIAL		IN VARCHAR2,
																P_DTINICIAL		DATE,
																P_DTFINAL		DATE,
																P_IDSITUORCEVE IN VARCHAR2,
																P_CDVENDEDOR	IN VARCHAR2,
																P_TCDVENDEDOR	IN VARCHAR2,
																P_CDTPEVENTO	IN VARCHAR2,
																P_TCDTPEVENTO	IN VARCHAR2,
																P_CDCLIENTE		IN VARCHAR2,
																P_TCDCLIENTE	IN VARCHAR2,
																P_CDSALAOEVEN	IN VARCHAR2,
																P_TCDSALAOEVEN	IN VARCHAR2,
																P_CDEMPRESA		IN VARCHAR2,
																P_TCDEMPRESA	IN VARCHAR2,	
																P_CDCENTCUST	IN VARCHAR2,
																P_TCDCENTCUST	IN VARCHAR2,
																P_GERACONTA		IN VARCHAR2,
																P_TIPOCUSTO		IN NUMBER,
																P_IDRELATORIO  IN VARCHAR2) RETURN CAD_GER_RESULT_OPER_TABLE PIPELINED
IS
	V_CUSTOOPERACIONAL DOUBLE PRECISION; -- Armazena o total do custo operacional do período
	V_TOTRECEORCA DOUBLE PRECISION; 		 -- Armazena o total das receitas de cada orçamento
	V_SOMARECEITAS DOUBLE PRECISION; 	 -- Armazena a soma de todas as receitas de todos os orçamentos
	V_TOTCUSTOSORCA DOUBLE PRECISION; 	 -- Armazena o total dos custos de cada orçamento
	V_SOMACUSTOS DOUBLE PRECISION; 	    -- Armazena a soma de todos os custos de todos os orçamentos
	V_TOTCUSTITEM DOUBLE PRECISION; 		 -- Armazena o total do custo por item
	V_ORDEMEXIB VARCHAR2(1); 				 -- Armazena a ordem de exibição dos itens
	V_TOTCUSTOTERC DOUBLE PRECISION;		 -- Armazena a soma de todos os custos de terceiros de todos os orçamentos
	V_TOTCUSTERCORCA DOUBLE PRECISION;	 -- Armazena o total de custos de terceiros por orçamento
	V_TOTCONVPERIODO DOUBLE PRECISION;   -- Armazena o total de pessoas atendidas no período
	V_QTORCAMENTOS INTEGER;					 -- Conta quantas festas foram feitas no período
	V_SOMARECETERC DOUBLE PRECISION;     -- Armazena a soma de todas as receitas de terceiros
	
	OUT_RECORD CAD_GER_RESULT_OPER_TYPE := CAD_GER_RESULT_OPER_TYPE (NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);																						  
BEGIN

	-- ********************** INICIALIZANDO VARIÁVEIS **********************
	V_CUSTOOPERACIONAL := 0;
	V_SOMARECEITAS     := 0;
	V_SOMACUSTOS 		 := 0;
	V_TOTCUSTOSORCA 	 := 0;
	V_TOTRECEORCA      := 0;
	V_TOTCUSTITEM      := 0;
	V_TOTCUSTERCORCA   := 0;
	V_TOTCUSTOTERC	    := 0;
	V_TOTCONVPERIODO   := 0;
	V_QTORCAMENTOS 	 := 0;
	V_SOMARECETERC     := 0;
	V_ORDEMEXIB			 := '';
	-- *********************************************************************
	
	FOR C_CUSTO_OPERACIONAL IN (	
		SELECT DEBITO * -1 DEBITO, CREDITO, NMCONTCTBL, GRUPO, IDGRUPTOTCADGER,
				 ABS(SUM(DEBITO + CREDITO) OVER (PARTITION BY IDGRUPTOTCADGER)) AS VRTOTTIPOCTCTBL
		  FROM (SELECT NMCONTCTBL, SUM(VRLANCCUST) DEBITO, 0 CREDITO, 'DEBITO' GRUPO, IDGRUPTOTCADGER
					 FROM LANCCONT
					INNER JOIN CONTCTBL
							 ON (LANCCONT.CDCONTCTBL = CONTCTBL.CDCONTCTBL)
					INNER JOIN LANCCCUSTO
						ON (LANCCONT.NRSEQLANC  = LANCCCUSTO.NRSEQLANC  AND
							 LANCCONT.NRLANCCONT = LANCCCUSTO.NRLANCCONT AND
							 LANCCONT.CDEMPRESA  = LANCCCUSTO.CDEMPRESA)
					 WHERE VRLANCCUST < 0
						AND (TRUNC(LANCCONT.DTLANCCONT) BETWEEN P_DTINICIAL AND P_DTFINAL)
						AND CONTCTBL.IDGRUPTOTCADGER IN ('CUSTOPER', 'INVESTIMENTO', 'RETIRADA')
						AND ((INSTR(P_CDEMPRESA, LANCCONT.CDEMPRESA) > 0) OR (P_TCDEMPRESA = 'T'))
						AND ((INSTR(P_CDCENTCUST, LANCCCUSTO.CDCENTCUST) > 0) OR (P_TCDCENTCUST = 'T'))
					 GROUP BY 'DEBITO', NMCONTCTBL, 0, IDGRUPTOTCADGER
					 UNION ALL
					SELECT NMCONTCTBL, 0 DEBITO, SUM(VRLANCCUST) CREDITO, 'CREDITO' GRUPO, IDGRUPTOTCADGER
					  FROM LANCCONT
					 INNER JOIN CONTCTBL
						 ON (LANCCONT.CDCONTCTBL = CONTCTBL.CDCONTCTBL)
					 INNER JOIN LANCCCUSTO
						 ON (LANCCONT.NRSEQLANC  = LANCCCUSTO.NRSEQLANC  AND
							  LANCCONT.NRLANCCONT = LANCCCUSTO.NRLANCCONT AND
							  LANCCONT.CDEMPRESA  = LANCCCUSTO.CDEMPRESA)
					  WHERE VRLANCCUST > 0
						 AND (TRUNC(LANCCONT.DTLANCCONT) BETWEEN P_DTINICIAL AND P_DTFINAL)
						 AND CONTCTBL.IDGRUPTOTCADGER IN ('CUSTOPER', 'INVESTIMENTO', 'RETIRADA')
						 AND ((INSTR(P_CDEMPRESA, LANCCONT.CDEMPRESA) > 0) OR (P_TCDEMPRESA = 'T'))
						 AND ((INSTR(P_CDCENTCUST, LANCCCUSTO.CDCENTCUST) > 0) OR (P_TCDCENTCUST = 'T'))
					  GROUP BY 'CREDITO', NMCONTCTBL, 0, IDGRUPTOTCADGER
					  ORDER BY GRUPO ASC, NMCONTCTBL
		) CUSTOPER
		 ORDER BY CASE WHEN IDGRUPTOTCADGER = 'CUSTOPER' THEN '1'
							WHEN IDGRUPTOTCADGER = 'INVESTIMENTO' THEN '2'
							WHEN IDGRUPTOTCADGER = 'RETIRADA' THEN '3'
							ELSE '4' END ASC, CUSTOPER.GRUPO ASC, CUSTOPER.NMCONTCTBL ASC)LOOP
							
		-- CUSTO OPERACIONAL
		IF C_CUSTO_OPERACIONAL.IDGRUPTOTCADGER = 'CUSTOPER' THEN
			OUT_RECORD.VRTOTCTCTBCUSTOPER := C_CUSTO_OPERACIONAL.VRTOTTIPOCTCTBL;			
			OUT_RECORD.NMITEMCUSTO	  		:= C_CUSTO_OPERACIONAL.NMCONTCTBL;
			OUT_RECORD.VRTOTITEMCUSTO 		:= C_CUSTO_OPERACIONAL.DEBITO + C_CUSTO_OPERACIONAL.CREDITO;
			OUT_RECORD.SECAO          		:= 'CUSTOOPERACIONAL';
		END IF;
		
		-- INVESTIMENTO
		IF C_CUSTO_OPERACIONAL.IDGRUPTOTCADGER = 'INVESTIMENTO' THEN
			OUT_RECORD.VRTOTCTCTBINVEST := C_CUSTO_OPERACIONAL.VRTOTTIPOCTCTBL;
			OUT_RECORD.NMITEMCUSTO	  	 := 'INVESTIMENTO';
			OUT_RECORD.VRTOTITEMCUSTO 	 := NULL;
			OUT_RECORD.SECAO          	 := NULL;
		END IF;
		
		--RETIRADA
		IF C_CUSTO_OPERACIONAL.IDGRUPTOTCADGER = 'RETIRADA' THEN
			OUT_RECORD.VRTOTCTCTBRETI := C_CUSTO_OPERACIONAL.VRTOTTIPOCTCTBL;
			OUT_RECORD.NMITEMCUSTO	  := 'RETIRADA';
			OUT_RECORD.VRTOTITEMCUSTO := NULL;
			OUT_RECORD.SECAO          := NULL;
		END IF;
		PIPE ROW (OUT_RECORD);							
	END LOOP;
	
	--CURSOR QUE ARMAZENA OS ORÇAMENTOS, APÓS CONSIDERAR O FILTRO REALIZADO
	FOR C_ORCA IN (
		SELECT DISTINCT OE.NRORCAEVENTO, OE.CDFILIAL, OE.DTEVENTO, C.NMFANTCLIE,
							 E.NRCELULARCLI, E.NRTELRESICLI, TE.NMTIPOEVENTO
		  FROM ORCAEVENTO OE
		 INNER JOIN (SELECT CL.CDCLIENTE, CL.NMFANTCLIE NMFANTCLIE, OE.CDFILIAL, OE.NRORCAEVENTO, OE.NRSEQORCAEVE
							FROM CLIENTE CL, ORCAEVENTO OE
						  WHERE (OE.CDCLIENTE    = CL.CDCLIENTE)
							 AND (CL.NMFANTCLIE IS NOT NULL     )
						  UNION
						 SELECT OE.CDCLIENTE, OE.NMCLIEORCEVE NMFANTCLIE, OE.CDFILIAL, OE.NRORCAEVENTO, OE.NRSEQORCAEVE
							FROM ORCAEVENTO OE
						  WHERE (OE.NMCLIEORCEVE IS NOT NULL)
						) C
			 ON (C.CDFILIAL     = OE.CDFILIAL AND
				  C.NRORCAEVENTO = OE.NRORCAEVENTO AND
				  C.NRSEQORCAEVE = OE.NRSEQORCAEVE)
		 INNER JOIN TIPOEVENTO TE
			 ON OE.CDTIPOEVENTO = TE.CDTIPOEVENTO
		  LEFT JOIN ENDECLIE E
			 ON (C.CDCLIENTE = E.CDCLIENTE)
		 WHERE (OE.CDFILIAL = P_CDFILIAL )
			AND ((OE.NRORCAEVENTO BETWEEN '' AND '') OR ('T' = 'T'))
			AND (TO_DATE(OE.DTEVENTO) BETWEEN TO_DATE(P_DTINICIAL) AND TO_DATE(P_DTFINAL))
			AND ((INSTR(P_CDTPEVENTO, OE.CDTIPOEVENTO) > 0) OR (P_TCDTPEVENTO = 'T'))
			AND ((INSTR(P_CDCLIENTE, OE.CDCLIENTE) > 0    ) OR (P_TCDCLIENTE =  'T'))
			AND ((INSTR(P_CDVENDEDOR, OE.CDVENDEDOR) > 0  ) OR (P_TCDVENDEDOR = 'T'))
			AND (INSTR(P_IDSITUORCEVE, OE.IDSITUORCEVE) <> 0)
			--AND (OE.CDTPRECEOREV NOT IN ('98','04','97'))
			AND (OE.IDTPORCAEVEN = 'O')
			AND (E.IDTPENDECLIE  = 'P')
			AND EXISTS (
							SELECT 1
							  FROM DUAL
							 WHERE P_TCDSALAOEVEN = 'T'
							 UNION
							SELECT 1
							  FROM AGENDASALAO AG
							 WHERE ((INSTR(P_CDSALAOEVEN, AG.CDSALAOEVEN) > 0 ) OR (P_TCDSALAOEVEN = 'T'))
								AND OE.CDFILIAL     = AG.CDFILIAL
								AND OE.NRORCAEVENTO = AG.NRORCAEVENTO
								AND OE.NRSEQORCAEVE = AG.NRSEQORCAEVE
						  )
		 ORDER BY OE.NRORCAEVENTO)LOOP

			-- TRAZ O TOTAL DO CUSTOS NO PERÍODO. ESTA QUERY CONSIDERA APENAS OS CUSTOS PRÓPRIOS
			FOR C_CUSTOS_PROPRIOS IN (			
				SELECT NMDSCUSTO, VRCUSTO, IDORDEMEXIB
				  FROM (
							SELECT NMDSCUSTO, SUM(VRCUSTO) VRCUSTO, IDORDEMEXIB
							  FROM (
										 --DEPARTAMENTO
										 SELECT DP.NMDEPTO NMDSCUSTO, ROUND(SUM(IT.VRTOTLANCTO), 2) AS VRCUSTO, 1 IDORDEMEXIB
											FROM RETIRADAESTO RE, ITLANCTOEST IT, PRODUTO PO, DEPARTAMENTO DP
										  WHERE RE.CDFILIAL     = C_ORCA.CDFILIAL
											 AND RE.NRORCAEVENTO = C_ORCA.NRORCAEVENTO
											 AND RE.CDFILIAL     = IT.CDFILIAL
											 AND IT.NRLANCESTQ   = RE.NRLANCESTQ
											 AND PO.CDPRODUTO    = IT.CDPRODUTO
											 AND PO.CDDEPTPEDORC = DP.CDDEPTO
										  GROUP BY DP.NMDEPTO, 1										 
										 /*SELECT DP.NMDEPTO NMDSCUSTO, 
												  NVL(ROUND(SUM((IT.QTLANCTOEST * (CUSTO_PRODUTO_LCEST(IT.CDFILIAL, IT.CDPRODUTO, P_TIPOCUSTO, SYSDATE + 1, SYSDATE, A.CDALMOX, A.CDLOCAL )))), 2),0) AS VRCUSTO,
												  1 IDORDEMEXIB
											FROM RETIRADAESTO RE
										  INNER JOIN ITLANCTOEST IT
											  ON RE.CDFILIAL   = IT.CDFILIAL AND
												  RE.NRLANCESTQ = IT.NRLANCESTQ
										  INNER JOIN PRODUTO PO
											  ON PO.CDPRODUTO = IT.CDPRODUTO
										  INNER JOIN DEPARTAMENTO DP
											  ON PO.CDDEPTPEDORC = DP.CDDEPTO
										  INNER JOIN (SELECT DISTINCT PA.CDFILIAL, PF.CDPRODUTO, 
																	CASE PA.IDUTILALMOX WHEN 'S' THEN NVL(PF.CDALMOXPRCLI, PA.CDALMOXARIFE) ELSE ' ' END CDALMOX,
																	CASE PA.IDUTILLCESTQ WHEN 'S' THEN NVL(PF.CDLOCALPRCLI, PA.CDLOCALESTOQ) ELSE ' ' END CDLOCAL
															 FROM PRODFILI PF, PARAMFILIAL PA, PRODUTO PR, DEPARTAMENTO DE
															WHERE PA.CDFILIAL     = PF.CDFILIAL
															  AND PR.CDPRODUTO    = PF.CDPRODUTO
															  AND PR.CDDEPTPEDORC = DE.CDDEPTO
															  AND PA.CDFILIAL     = DE.CDFILIPEDORC
														 ) A
											  ON IT.CDFILIAL  = A.CDFILIAL AND
												  IT.CDPRODUTO = A.CDPRODUTO
										  WHERE RE.CDFILIAL     = C_ORCA.CDFILIAL
											 AND RE.NRORCAEVENTO = C_ORCA.NRORCAEVENTO
										  GROUP BY DP.NMDEPTO, 1*/
										  UNION ALL
										 --QUEBRAS
										 SELECT 'QUEBRAS' NMDSCUSTO, 
												  NVL(ROUND(SUM(DE.QTQUEBRAOREV * PED.VRPREUNITPED), 2),0) AS VRCUSTO,
												  2 IDORDEMEXIB
											FROM DEVOLORCAEVEN DE
										  INNER JOIN PRODUTO PR
											  ON DE.CDPRODUTO = PR.CDPRODUTO
										   LEFT JOIN (SELECT PE.NRORCAEVENTO, PE.CDFILIALORC, IP.CDPRODUTO, IP.VRPREUNITPED
                                              FROM PEDIDO PE
                                             INNER JOIN ITEMPEDIDO IP
                                               ON PE.CDFILIAL = IP.CDFILIAL AND
                                                  PE.NRPEDIDO = IP.NRPEDIDO
                                            WHERE PE.CDFILIAL     = C_ORCA.CDFILIAL
                                              AND PE.NRORCAEVENTO = C_ORCA.NRORCAEVENTO
                                              AND PE.IDORIGPED IN ('5','8')
                                           ) PED
                                   ON DE.CDPRODUTO    = PED.CDPRODUTO AND
                                      DE.CDFILIAL     = PED.CDFILIALORC AND
                                      DE.NRORCAEVENTO = PED.NRORCAEVENTO
                                WHERE DE.QTQUEBRAOREV IS NOT NULL
										    AND DE.CDFILIAL     = C_ORCA.CDFILIAL
                                  AND DE.NRORCAEVENTO = C_ORCA.NRORCAEVENTO
										  UNION ALL
										 --PROFISSIONAIS REGISTRADOS
										 SELECT 'PROFISSIONAIS REGISTRADOS' NMDSCUSTO, NVL(SUM(MO.VRPAGOFORNORC), 0) VRCUSTO,  3 IDORDEMEXIB
											FROM ORCAEVENTO OE
										  INNER JOIN MOBRAORCFORN MO
											  ON (OE.CDFILIAL     = MO.CDFILIAL AND
													OE.NRORCAEVENTO = MO.NRORCAEVENTO AND
													OE.NRSEQORCAEVE = MO.NRSEQORCAEVE)
										  WHERE MO.CDFILIAL       = C_ORCA.CDFILIAL
											 AND MO.NRORCAEVENTO   = C_ORCA.NRORCAEVENTO
											 AND MO.IDTIPOPAGAFORN = 'FOLHAPAGA'
											 AND (TO_DATE(OE.DTEVENTO) BETWEEN TO_DATE(P_DTINICIAL) AND TO_DATE(P_DTFINAL))
											 AND (INSTR(P_IDSITUORCEVE, OE.IDSITUORCEVE) <> 0)             
										  UNION ALL
										 --FREELANCES
										 SELECT 'FREELANCES' NMDSCUSTO, NVL(ROUND(SUM(MF.VRPAGOFORNORC), 2), 0) VRCUSTO,  4 IDORDEMEXIB 
											FROM ORCAEVENTO OE
										  INNER JOIN MOBRAORCFORN MF
											  ON (OE.CDFILIAL     = MF.CDFILIAL AND
													OE.NRORCAEVENTO = MF.NRORCAEVENTO AND
													OE.NRSEQORCAEVE = MF.NRSEQORCAEVE)
										  WHERE MF.CDFILIAL        = C_ORCA.CDFILIAL
											 AND MF.NRORCAEVENTO    = C_ORCA.NRORCAEVENTO
											 AND MF.IDTIPOPAGAFORN  = 'CONTAPAGAR'
											 AND (TO_DATE(OE.DTEVENTO) BETWEEN TO_DATE(P_DTINICIAL) AND TO_DATE(P_DTFINAL))
											 AND (INSTR(P_IDSITUORCEVE, OE.IDSITUORCEVE) <> 0)
										  UNION ALL
										 --COMISSAO DO VENDEDOR
											SELECT 'COMISSAO VENDEDOR' NMDSCUSTO, NVL(ROUND(SUM(CP.VRATUAPAG), 2), 0) VRCUSTO, 5 IDORDEMEXIB
											  FROM ORCAEVENTO OE
											 INNER JOIN NFRELACORC NF
												 ON (OE.CDFILIAL     = NF.CDFILIAL AND
													  OE.NRORCAEVENTO = NF.NRORCAEVENTO AND
													  OE.NRSEQORCAEVE = NF.NRSEQORCAEVE)
											 INNER JOIN CONTAPAGAR CP
												 ON (NF.CDFILIAL     = CP.CDFILIAL AND
													  NF.NRLANCTONF   = CP.NRLANCTONF)
											 WHERE NF.CDFILIAL     = C_ORCA.CDFILIAL
												AND NF.NRORCAEVENTO = C_ORCA.NRORCAEVENTO
												AND NF.IDORIGNFORCA = 'V'
												AND 'S' = P_GERACONTA
												AND (TO_DATE(OE.DTEVENTO) BETWEEN TO_DATE(P_DTINICIAL) AND TO_DATE(P_DTFINAL))
												AND (INSTR(P_IDSITUORCEVE, OE.IDSITUORCEVE) <> 0)
											 UNION ALL
											SELECT 'COMISSAO VENDEDOR' NMDSCUSTO, NVL(ROUND(SUM(VRCOMISGERADA), 2),0) VRCUSTO, 5 IDORDEMEXIB
											  FROM ORCAEVENTO OE
											 INNER JOIN PERCENTCOMISGERADA P
												 ON (OE.CDFILIAL     = P.CDFILIAL AND
													  OE.NRORCAEVENTO = P.NRORCAEVENTO AND
													  OE.NRSEQORCAEVE = P.NRSEQORCAEVE)
											 WHERE P.CDFILIAL     = C_ORCA.CDFILIAL
												AND P.NRORCAEVENTO = C_ORCA.NRORCAEVENTO
												AND 'N' = P_GERACONTA
												AND (TO_DATE(OE.DTEVENTO) BETWEEN TO_DATE(P_DTINICIAL) AND TO_DATE(P_DTFINAL))
												AND (INSTR(P_IDSITUORCEVE, OE.IDSITUORCEVE) <> 0)
									 ) CUSTO
							 WHERE VRCUSTO <> 0
							 GROUP BY NMDSCUSTO, IDORDEMEXIB
							 ORDER BY IDORDEMEXIB
							 )
				 ) LOOP

				V_SOMACUSTOS 				  := V_SOMACUSTOS + C_CUSTOS_PROPRIOS.VRCUSTO;
				OUT_RECORD.VRTOTCUSTOPROP := V_SOMACUSTOS;
				OUT_RECORD.NMITEMCUSTO    := C_CUSTOS_PROPRIOS.NMDSCUSTO;			
				OUT_RECORD.VRTOTITEMCUSTO := C_CUSTOS_PROPRIOS.VRCUSTO;
				OUT_RECORD.SECAO          := 'CUSTOPROPRIO';				
				OUT_RECORD.IDORDEMEXIB    := C_CUSTOS_PROPRIOS.IDORDEMEXIB;
				
				OUT_RECORD.NMITEMRECEITA 		:= NULL;
				OUT_RECORD.VRTOTITEMREC  		:= NULL;				
				OUT_RECORD.VRTOTRECEITAS  		:= NULL;
				OUT_RECORD.VRTOTCUSTOTERC   	:= NULL;
				OUT_RECORD.VRTOTCTCTBCUSTOPER := NULL;
				OUT_RECORD.VRTOTCTCTBINVEST 	:= NULL;
				OUT_RECORD.VRTOTCTCTBRETI   	:= NULL;
				OUT_RECORD.QTITEMRECEITA   	:= NULL;
								
            PIPE ROW (OUT_RECORD);
			END LOOP;
			
			IF P_IDRELATORIO = 'RESULT_OPERAC' THEN
				-- RETORNA APENAS OS CUSTOS DE TERCEIROS DE CADA ORÇAMENTO
				BEGIN
					SELECT NVL(VRCUSTO,0) VRCUSTO
					  INTO V_TOTCUSTERCORCA
					  FROM (
								SELECT ROUND(SUM(VRCUSTO),2) VRCUSTO
								  FROM ( SELECT PR.NMPRODUTO, N.VRNOTAFISC VRCUSTO
											  FROM NOTAFISCAL N 
											 INNER JOIN NFRELACORC NF
												 ON NF.NRLANCTONF = N.NRLANCTONF AND
													 NF.CDFILIALNF = N.CDFILIAL
											 INNER JOIN FORNECEDOR FO
												 ON FO.CDFORNECED   = N.CDFORNECED
											 INNER JOIN ORCAEVENTO OE
												 ON OE.CDFILIAL     = NF.CDFILIAL AND
													 OE.NRORCAEVENTO = NF.NRORCAEVENTO AND
													 OE.NRSEQORCAEVE = NF.NRSEQORCAEVE
											 INNER JOIN ITEMORCAEVEN IO
												 ON OE.CDFILIAL     = IO.CDFILIAL AND
													 OE.NRORCAEVENTO = IO.NRORCAEVENTO AND
													 OE.NRSEQORCAEVE = IO.NRSEQORCAEVE AND
													 FO.CDFORNECED   = IO.CDFORNECED
											 INNER JOIN PRODUTO PR
												 ON IO.CDPRODUTO = PR.CDPRODUTO
											 WHERE N.IDENTRSAIDOP  = 'E'
												AND N.IDSISTEMA     <> 'ORE'
												AND NF.CDFILIAL     = C_ORCA.CDFILIAL
												AND NF.NRORCAEVENTO = C_ORCA.NRORCAEVENTO
												AND (INSTR(P_IDSITUORCEVE, OE.IDSITUORCEVE) <> 0)
												AND (TO_DATE(OE.DTEVENTO) BETWEEN TO_DATE(P_DTINICIAL) AND TO_DATE(P_DTFINAL))
											 ORDER BY PR.NMPRODUTO
										) AA
							 )EEE;
					V_TOTCUSTOTERC 			  := V_TOTCUSTOTERC + V_TOTCUSTERCORCA;
					OUT_RECORD.VRTOTCUSTOTERC := V_TOTCUSTOTERC;
					OUT_RECORD.SECAO          := 'CUSTOTERCEIRO';
					
					OUT_RECORD.IDORDEMEXIB        := NULL; 
					OUT_RECORD.VRTOTCUSTOPROP 		:= NULL;
					OUT_RECORD.NMITEMCUSTO    		:= NULL;
					OUT_RECORD.VRTOTITEMCUSTO 		:= NULL;
					OUT_RECORD.VRTOTRECEITAS  		:= NULL;
					OUT_RECORD.VRTOTCTCTBCUSTOPER := NULL;
					OUT_RECORD.VRTOTCTCTBINVEST 	:= NULL;
					OUT_RECORD.VRTOTCTCTBRETI   	:= NULL;
					OUT_RECORD.QTITEMRECEITA   	:= NULL;
					PIPE ROW(OUT_RECORD);
				EXCEPTION
					WHEN NO_DATA_FOUND THEN
						V_TOTCUSTERCORCA := 0;
				END;
				
				-- TRAZ O TOTAL DE RECEITAS NO PERÍODO. ESTA QUERY CONSIDERA TANTO AS RECEITAS PRÓPRIAS QUANTO RECEITAS DE TERCEIROS.
				BEGIN
					SELECT NVL(SUM(TOTRECEPERIODO.VRTOTALITEM),0) VRTOTALRECEITAS
					  INTO V_TOTRECEORCA
					  FROM (
							  SELECT NVL(ROUND(SUM((IT.VRITEMORCEVE*IT.QTITEMORCEVE) + NVL(IT.VRACREITOREV,0) - NVL(IT.VRDESCITOREV,0)), 2),0) VRTOTALITEM
								 FROM SUBGRUPPROD SG, ITEMORCAEVEN IT, PRODUTO PR, ORCAEVENTO OE
								WHERE OE.CDFILIAL       = C_ORCA.CDFILIAL
								  AND IT.NRORCAEVENTO   = C_ORCA.NRORCAEVENTO
								  AND IT.CDGRUPPRODREL  = SG.CDGRUPPROD
								  AND IT.CDSUBGRPRODREL = SG.CDSUBGRPROD
								  AND IT.CDPRODUTO      = PR.CDPRODUTO 
								  AND IT.NRORCAEVENTO   = OE.NRORCAEVENTO
								  AND IT.NRSEQORCAEVE   = OE.NRSEQORCAEVE
								  AND IT.CDFILIAL       = OE.CDFILIAL
								  AND IT.IDFATUITEMOREV = 'S'
								  AND OE.CDTPRECEOREV NOT IN ('98','04','97')
								  AND (TO_DATE(OE.DTEVENTO) BETWEEN TO_DATE(P_DTINICIAL) AND TO_DATE(P_DTFINAL))
								  AND (INSTR(P_IDSITUORCEVE, OE.IDSITUORCEVE) <> 0)
								UNION ALL
								SELECT NVL(ROUND(SUM(AG.VRCOBAGENSALAO), 2),0) VRTOTALITEM
								 FROM AGENDASALAO AG, ORCAEVENTO OE, SALAOEVENTO SE
								WHERE AG.CDFILIAL     = OE.CDFILIAL
								  AND AG.NRORCAEVENTO = OE.NRORCAEVENTO
								  AND AG.NRSEQORCAEVE = OE.NRSEQORCAEVE
								  AND AG.CDSALAOEVEN  = SE.CDSALAOEVEN
								  AND AG.NRORCAEVENTO = C_ORCA.NRORCAEVENTO
								  AND AG.CDFILIAL     = C_ORCA.CDFILIAL
								  AND OE.CDTPRECEOREV NOT IN ('98','04','97')
								  AND (TO_DATE(OE.DTEVENTO) BETWEEN TO_DATE(P_DTINICIAL) AND TO_DATE(P_DTFINAL))
								  AND (INSTR(P_IDSITUORCEVE, OE.IDSITUORCEVE) <> 0)
								UNION ALL
							  SELECT ROUND(HB.VRMULTADISTRATO, 2) AS VRTOTALITEM
								 FROM HISTBOLEMITDIST HB, CLIENTE CL, ORCAEVENTO OE
								WHERE HB.CDFILIAL     = C_ORCA.CDFILIAL
								  AND HB.NRORCAEVENTO = C_ORCA.NRORCAEVENTO
								  AND HB.CDCLIENTE    = CL.CDCLIENTE
								  AND HB.VRMULTADISTRATO > 0
								  AND HB.CDFILIAL     = OE.CDFILIAL
								  AND HB.NRORCAEVENTO = OE.NRORCAEVENTO
								  AND HB.NRSEQORCAEVE = OE.NRSEQORCAEVE
								  AND OE.CDTPRECEOREV NOT IN ('98','04','97')
								  AND (TO_DATE(OE.DTEVENTO) BETWEEN TO_DATE(P_DTINICIAL) AND TO_DATE(P_DTFINAL))
								  AND (INSTR(P_IDSITUORCEVE, OE.IDSITUORCEVE) <> 0)
								UNION ALL  
							  SELECT ROUND(SUM(IB.VRCOBRMOBRA*IB.QTPRODMOBRA),2) VRTOTALITEM
								 FROM ITMAOOBRAORCA IB, PRODUTO PR, ORCAEVENTO OE
								WHERE IB.CDFILIAL     = C_ORCA.CDFILIAL
								  AND IB.NRORCAEVENTO = C_ORCA.NRORCAEVENTO
								  AND IB.CDPRODUTO    = PR.CDPRODUTO
								  AND IB.CDFILIAL     = OE.CDFILIAL
								  AND IB.NRORCAEVENTO = OE.NRORCAEVENTO
								  AND IB.NRSEQORCAEVE = OE.NRSEQORCAEVE
								  AND OE.CDTPRECEOREV NOT IN ('98','04','97')
								  AND (TO_DATE(OE.DTEVENTO) BETWEEN TO_DATE(P_DTINICIAL) AND TO_DATE(P_DTFINAL))
								  AND (INSTR(P_IDSITUORCEVE, OE.IDSITUORCEVE) <> 0)          
						  ) TOTRECEPERIODO;
					V_SOMARECEITAS 			 := V_SOMARECEITAS + V_TOTRECEORCA;				
					OUT_RECORD.VRTOTRECEITAS := V_SOMARECEITAS;
					OUT_RECORD.SECAO         := 'RECEITAS';					
					
					OUT_RECORD.IDORDEMEXIB        := NULL;
					OUT_RECORD.VRTOTCUSTOPROP 		:= NULL;
					OUT_RECORD.NMITEMCUSTO   		:= NULL;
					OUT_RECORD.VRTOTITEMCUSTO 		:= NULL;
					OUT_RECORD.VRTOTCTCTBCUSTOPER := NULL;
					OUT_RECORD.VRTOTCTCTBINVEST 	:= NULL;
					OUT_RECORD.VRTOTCTCTBRETI   	:= NULL;
					OUT_RECORD.QTITEMRECEITA   	:= NULL;
					PIPE ROW (OUT_RECORD);
				EXCEPTION
					WHEN NO_DATA_FOUND THEN
						V_TOTRECEORCA := 0;
				END;				
			ELSE
				-- RETORNA OS CUSTOS DE TERCEIROS
				FOR C_CUST_TERC IN (
					SELECT NMPRODUTO, NVL(VRCUSTO,0) VRCUSTO
					  FROM (
								SELECT NMPRODUTO, ROUND(SUM(VRCUSTO),2) VRCUSTO
								  FROM ( SELECT PR.NMPRODUTO, N.VRNOTAFISC VRCUSTO
											  FROM NOTAFISCAL N 
											 INNER JOIN NFRELACORC NF
												 ON NF.NRLANCTONF = N.NRLANCTONF AND
													 NF.CDFILIALNF = N.CDFILIAL
											 INNER JOIN FORNECEDOR FO
												 ON FO.CDFORNECED   = N.CDFORNECED
											 INNER JOIN ORCAEVENTO OE
												 ON OE.CDFILIAL     = NF.CDFILIAL AND
													 OE.NRORCAEVENTO = NF.NRORCAEVENTO AND
													 OE.NRSEQORCAEVE = NF.NRSEQORCAEVE
											 INNER JOIN ITEMORCAEVEN IO
												 ON OE.CDFILIAL     = IO.CDFILIAL AND
													 OE.NRORCAEVENTO = IO.NRORCAEVENTO AND
													 OE.NRSEQORCAEVE = IO.NRSEQORCAEVE AND
													 FO.CDFORNECED   = IO.CDFORNECED
											 INNER JOIN PRODUTO PR
												 ON IO.CDPRODUTO = PR.CDPRODUTO
											 WHERE N.IDENTRSAIDOP  = 'E'
												AND N.IDSISTEMA     <> 'ORE'
												AND NF.CDFILIAL     = C_ORCA.CDFILIAL
												AND NF.NRORCAEVENTO = C_ORCA.NRORCAEVENTO
												AND (INSTR(P_IDSITUORCEVE, OE.IDSITUORCEVE) <> 0)
												AND (TO_DATE(OE.DTEVENTO) BETWEEN TO_DATE(P_DTINICIAL) AND TO_DATE(P_DTFINAL))
											 ORDER BY PR.NMPRODUTO
								) AA
								 GROUP BY NMPRODUTO
							 )EEE) LOOP
					V_TOTCUSTOTERC 			  		:= C_CUST_TERC.VRCUSTO + V_TOTCUSTOTERC;
					OUT_RECORD.VRTOTCUSTOTERC 		:= V_TOTCUSTOTERC;
					OUT_RECORD.SECAO          		:= 'CUSTOTERCEIRO';					
					OUT_RECORD.NMITEMCUSTO    		:= C_CUST_TERC.NMPRODUTO;
					OUT_RECORD.VRTOTITEMCUSTO 		:= C_CUST_TERC.VRCUSTO;

					OUT_RECORD.IDORDEMEXIB        := NULL;
					OUT_RECORD.VRTOTCUSTOPROP 		:= NULL;
					OUT_RECORD.VRTOTRECEITAS  		:= NULL;
					OUT_RECORD.VRTOTCTCTBCUSTOPER := NULL;
					OUT_RECORD.VRTOTCTCTBINVEST 	:= NULL;
					OUT_RECORD.VRTOTCTCTBRETI   	:= NULL;
					OUT_RECORD.NMITEMRECEITA 		:= NULL;
					OUT_RECORD.VRTOTITEMREC  		:= NULL;
					OUT_RECORD.QTITEMRECEITA   	:= NULL;
					PIPE ROW(OUT_RECORD);
				END LOOP;
				
				-- TRAZ O TOTAL DE RECEITAS PRÓPRIAS NO PERÍODO.
				FOR C_RECE_PROP IN (
					SELECT NMITRECE, NVL(SUM(QTRECEITEM),0) QTRECEITEM, NVL(SUM(VRTOTALITEM),0) VRTOTALITEM, IDORDEMEXIB			  
					  FROM (
							  SELECT PR.NMPRODUTO NMITRECE, ROUND(SUM(IT.QTITEMORCEVE),2) QTRECEITEM, 
										NVL(ROUND(SUM((IT.VRITEMORCEVE*IT.QTITEMORCEVE) + NVL(IT.VRACREITOREV,0) - NVL(IT.VRDESCITOREV,0)), 2),0) VRTOTALITEM, 1 IDORDEMEXIB
								 FROM SUBGRUPPROD SG, ITEMORCAEVEN IT, PRODUTO PR, ORCAEVENTO OE
								WHERE OE.CDFILIAL       = C_ORCA.CDFILIAL
								  AND IT.NRORCAEVENTO   = C_ORCA.NRORCAEVENTO
								  AND IT.CDGRUPPRODREL  = SG.CDGRUPPROD
								  AND IT.CDSUBGRPRODREL = SG.CDSUBGRPROD
								  AND IT.CDPRODUTO      = PR.CDPRODUTO 
								  AND IT.NRORCAEVENTO   = OE.NRORCAEVENTO
								  AND IT.NRSEQORCAEVE   = OE.NRSEQORCAEVE
								  AND IT.CDFILIAL       = OE.CDFILIAL
								  AND IT.CDFORNECED IS NULL
								  AND IT.IDFATUITEMOREV = 'S'
								  AND OE.CDTPRECEOREV NOT IN ('98','04','97')
								  AND (TO_DATE(OE.DTEVENTO) BETWEEN TO_DATE(P_DTINICIAL) AND TO_DATE(P_DTFINAL))
								  AND (INSTR(P_IDSITUORCEVE, OE.IDSITUORCEVE) <> 0)
								GROUP BY PR.NMPRODUTO
								UNION ALL
								SELECT SE.NMSALAOEVEN NMITRECE, 0 QTRECEITEM, NVL(ROUND(SUM(AG.VRCOBAGENSALAO), 2),0) VRTOTALITEM, 2 IDORDEMEXIB
								 FROM AGENDASALAO AG, ORCAEVENTO OE, SALAOEVENTO SE
								WHERE AG.CDFILIAL     = OE.CDFILIAL
								  AND AG.NRORCAEVENTO = OE.NRORCAEVENTO
								  AND AG.NRSEQORCAEVE = OE.NRSEQORCAEVE
								  AND AG.CDSALAOEVEN  = SE.CDSALAOEVEN
								  AND AG.NRORCAEVENTO = C_ORCA.NRORCAEVENTO
								  AND AG.CDFILIAL     = C_ORCA.CDFILIAL
								  AND OE.CDTPRECEOREV NOT IN ('98','04','97')
								  AND (TO_DATE(OE.DTEVENTO) BETWEEN TO_DATE(P_DTINICIAL) AND TO_DATE(P_DTFINAL))
								  AND (INSTR(P_IDSITUORCEVE, OE.IDSITUORCEVE) <> 0)
								GROUP BY SE.NMSALAOEVEN
								UNION ALL
							  SELECT 'MULTA DISTRATO' NMITRECE, 0 QTRECEITEM, ROUND(HB.VRMULTADISTRATO, 2) AS VRTOTALITEM, 3 IDORDEMEXIB
								 FROM HISTBOLEMITDIST HB, CLIENTE CL, ORCAEVENTO OE
								WHERE HB.CDFILIAL     = C_ORCA.CDFILIAL
								  AND HB.NRORCAEVENTO = C_ORCA.NRORCAEVENTO
								  AND HB.CDCLIENTE    = CL.CDCLIENTE
								  AND HB.VRMULTADISTRATO > 0
								  AND HB.CDFILIAL     = OE.CDFILIAL
								  AND HB.NRORCAEVENTO = OE.NRORCAEVENTO
								  AND HB.NRSEQORCAEVE = OE.NRSEQORCAEVE
								  AND OE.CDTPRECEOREV NOT IN ('98','04','97')
								  AND (TO_DATE(OE.DTEVENTO) BETWEEN TO_DATE(P_DTINICIAL) AND TO_DATE(P_DTFINAL))
								  AND (INSTR(P_IDSITUORCEVE, OE.IDSITUORCEVE) <> 0)
							   ORDER BY IDORDEMEXIB
						  ) 
					  GROUP BY NMITRECE, IDORDEMEXIB
					  ORDER BY IDORDEMEXIB, NMITRECE) LOOP
					V_SOMARECEITAS 			 := V_SOMARECEITAS + C_RECE_PROP.VRTOTALITEM;
					OUT_RECORD.VRTOTRECEITAS := V_SOMARECEITAS;
					OUT_RECORD.SECAO         := 'RECEITASPROP';
					OUT_RECORD.NMITEMRECEITA := C_RECE_PROP.NMITRECE;
					OUT_RECORD.VRTOTITEMREC  := C_RECE_PROP.VRTOTALITEM;
					OUT_RECORD.QTITEMRECEITA := C_RECE_PROP.QTRECEITEM;
					OUT_RECORD.IDORDEMEXIB   := C_RECE_PROP.IDORDEMEXIB;
					
					OUT_RECORD.VRTOTCUSTOPROP 		:= NULL;
					OUT_RECORD.NMITEMCUSTO   		:= NULL;
					OUT_RECORD.VRTOTITEMCUSTO 		:= NULL;
					OUT_RECORD.VRTOTCTCTBCUSTOPER := NULL;
					OUT_RECORD.VRTOTCTCTBINVEST 	:= NULL;
					OUT_RECORD.VRTOTCTCTBRETI   	:= NULL;
					
					PIPE ROW (OUT_RECORD);
				END LOOP;
				
				-- TRAZ O TOTAL DE RECEITAS DE TERCEIROS NO PERÍODO.
				FOR C_RECE_TERC IN (
					SELECT NMITRECE, NVL(SUM(QTRECEITEM), 0) QTRECEITEM, NVL(SUM(VRTOTALITEM),0) VRTOTALITEM, IDORDEMEXIB	  
					  FROM (
							  SELECT PR.NMPRODUTO NMITRECE, ROUND(SUM(IT.QTITEMORCEVE),2) QTRECEITEM, 
							         NVL(ROUND(SUM((IT.VRITEMORCEVE*IT.QTITEMORCEVE) + NVL(IT.VRACREITOREV,0) - NVL(IT.VRDESCITOREV,0)), 2),0) VRTOTALITEM, 1 IDORDEMEXIB
								 FROM SUBGRUPPROD SG, ITEMORCAEVEN IT, PRODUTO PR, ORCAEVENTO OE
								WHERE OE.CDFILIAL       = C_ORCA.CDFILIAL
								  AND IT.NRORCAEVENTO   = C_ORCA.NRORCAEVENTO
								  AND IT.CDGRUPPRODREL  = SG.CDGRUPPROD
								  AND IT.CDSUBGRPRODREL = SG.CDSUBGRPROD
								  AND IT.CDPRODUTO      = PR.CDPRODUTO 
								  AND IT.NRORCAEVENTO   = OE.NRORCAEVENTO
								  AND IT.NRSEQORCAEVE   = OE.NRSEQORCAEVE
								  AND IT.CDFILIAL       = OE.CDFILIAL
								  AND IT.CDFORNECED IS NOT NULL
								  AND IT.IDFATUITEMOREV = 'S'
								  AND OE.CDTPRECEOREV NOT IN ('98','04','97')
								  AND (TO_DATE(OE.DTEVENTO) BETWEEN TO_DATE(P_DTINICIAL) AND TO_DATE(P_DTFINAL))
								  AND (INSTR(P_IDSITUORCEVE, OE.IDSITUORCEVE) <> 0)
								GROUP BY PR.NMPRODUTO
							   UNION ALL
							  SELECT PR.NMPRODUTO NMITRECE, ROUND(SUM(NVL(IB.QTPRODMOBRA, 0)), 2) QTRECEITEM, ROUND(SUM(IB.VRCOBRMOBRA*IB.QTPRODMOBRA),2) VRTOTALITEM, 2 IDORDEMEXIB
								 FROM ITMAOOBRAORCA IB, PRODUTO PR, ORCAEVENTO OE
								WHERE IB.CDFILIAL     = C_ORCA.CDFILIAL
								  AND IB.NRORCAEVENTO = C_ORCA.NRORCAEVENTO
								  AND IB.CDPRODUTO    = PR.CDPRODUTO
								  AND IB.CDFILIAL     = OE.CDFILIAL
								  AND IB.NRORCAEVENTO = OE.NRORCAEVENTO
								  AND IB.NRSEQORCAEVE = OE.NRSEQORCAEVE
								  AND OE.CDTPRECEOREV NOT IN ('98','04','97')
								  AND (TO_DATE(OE.DTEVENTO) BETWEEN TO_DATE(P_DTINICIAL) AND TO_DATE(P_DTFINAL))
								  AND (INSTR(P_IDSITUORCEVE, OE.IDSITUORCEVE) <> 0)
								GROUP BY PR.NMPRODUTO
							)
					 GROUP BY NMITRECE, IDORDEMEXIB
					 ORDER BY IDORDEMEXIB, NMITRECE
				)LOOP
					V_SOMARECETERC 			 := V_SOMARECETERC + C_RECE_TERC.VRTOTALITEM;
					OUT_RECORD.VRTOTRECEITAS := V_SOMARECETERC;
					OUT_RECORD.SECAO         := 'RECEITASTERC';
					OUT_RECORD.NMITEMRECEITA := C_RECE_TERC.NMITRECE;
					OUT_RECORD.VRTOTITEMREC  := C_RECE_TERC.VRTOTALITEM;
					OUT_RECORD.QTITEMRECEITA := C_RECE_TERC.QTRECEITEM;
					OUT_RECORD.IDORDEMEXIB   := C_RECE_TERC.IDORDEMEXIB;
					
					OUT_RECORD.VRTOTCUSTOPROP 		:= NULL;
					OUT_RECORD.NMITEMCUSTO   		:= NULL;
					OUT_RECORD.VRTOTITEMCUSTO 		:= NULL;
					OUT_RECORD.VRTOTCTCTBCUSTOPER := NULL;
					OUT_RECORD.VRTOTCTCTBINVEST 	:= NULL;
					OUT_RECORD.VRTOTCTCTBRETI   	:= NULL;
					
					PIPE ROW (OUT_RECORD);				
				END LOOP;
			END IF;
			V_QTORCAMENTOS := V_QTORCAMENTOS + 1;
	END LOOP;
	
	/* A contagem de quantos convidados foram atendidos no período necessariamente deveria ser feita fora da query principal que retorna os orçamentos, pois na query principal existem
		cláusulas no where que não devem ser consideradas na contagem dos convidados.
	*/
	BEGIN
		SELECT SUM(NVL(OE.QTCONVORCEVE,0))
		  INTO V_TOTCONVPERIODO
		  FROM ORCAEVENTO  OE
		 INNER JOIN (SELECT CL.CDCLIENTE, CL.NMFANTCLIE NMFANTCLIE, OE.CDFILIAL, OE.NRORCAEVENTO, OE.NRSEQORCAEVE
							FROM CLIENTE CL, ORCAEVENTO OE
						  WHERE (OE.CDCLIENTE    = CL.CDCLIENTE)
							 AND (CL.NMFANTCLIE IS NOT NULL     )
						 UNION
						 SELECT OE.CDCLIENTE, OE.NMCLIEORCEVE NMFANTCLIE, OE.CDFILIAL, OE.NRORCAEVENTO, OE.NRSEQORCAEVE
							FROM ORCAEVENTO OE
						  WHERE (OE.NMCLIEORCEVE IS NOT NULL)
						) C
			 ON (C.CDFILIAL     = OE.CDFILIAL AND
				  C.NRORCAEVENTO = OE.NRORCAEVENTO AND
				  C.NRSEQORCAEVE = OE.NRSEQORCAEVE)
		  LEFT JOIN (SELECT DISTINCT AG.CDFILIAL, AG.NRORCAEVENTO, AG.NRSEQORCAEVE
							FROM AGENDASALAO AG
						  WHERE ((INSTR(P_CDSALAOEVEN, AG.CDSALAOEVEN) > 0 ) OR (P_TCDSALAOEVEN = 'T'))
						 ) AG
			 ON (AG.CDFILIAL     = OE.CDFILIAL AND
				  AG.NRORCAEVENTO = OE.NRORCAEVENTO AND
				  AG.NRSEQORCAEVE = OE.NRSEQORCAEVE)
		 WHERE OE.CDFILIAL = P_CDFILIAL
			AND OE.IDTPORCAEVEN = 'O'
			AND (TRUNC(OE.DTEVENTO) BETWEEN P_DTINICIAL  AND P_DTFINAL)
			AND ((OE.NRORCAEVENTO BETWEEN '' AND '') OR ('T'  = 'T'))
			AND ((INSTR(P_CDCLIENTE, OE.CDCLIENTE) > 0    ) OR (P_TCDCLIENTE =  'T'))
			AND ((INSTR(P_CDVENDEDOR, OE.CDVENDEDOR) > 0  ) OR (P_TCDVENDEDOR = 'T'))
			AND ((INSTR(P_CDTPEVENTO, OE.CDTIPOEVENTO) > 0) OR (P_TCDTPEVENTO = 'T'))
			AND (INSTR(P_IDSITUORCEVE, OE.IDSITUORCEVE) <> 0);
	EXCEPTION
		WHEN NO_DATA_FOUND THEN
			V_TOTCONVPERIODO := 0;
	END;	
	
	OUT_RECORD.QTCONVPERIODO 	   := V_TOTCONVPERIODO;	
	OUT_RECORD.QTFESTASREALI 		:= V_QTORCAMENTOS;
	OUT_RECORD.IDORDEMEXIB   		:= NULL;
	OUT_RECORD.VRTOTRECEITAS 		:= NULL;
	OUT_RECORD.SECAO         		:= NULL;
	OUT_RECORD.VRTOTCUSTOPROP 		:= NULL;
	OUT_RECORD.NMITEMCUSTO    		:= NULL;
	OUT_RECORD.VRTOTITEMCUSTO 		:= NULL;
	OUT_RECORD.VRTOTCTCTBCUSTOPER := NULL;
	OUT_RECORD.VRTOTCTCTBINVEST 	:= NULL;
	OUT_RECORD.VRTOTCTCTBRETI   	:= NULL;
	OUT_RECORD.VRTOTCUSTOTERC   	:= NULL;
	OUT_RECORD.NMITEMRECEITA 		:= NULL;
	OUT_RECORD.VRTOTITEMREC  		:= NULL;	
	OUT_RECORD.QTITEMRECEITA 		:= NULL;
	PIPE ROW (OUT_RECORD);
END;
/

-- VERSAO --
BEGIN ATUVEROBJ('CADERNO_GERENCIAL','0.00.000'); END;
/
