CREATE OR REPLACE PROCEDURE EAM_CARREGAR_IMPOSTO_DFE (
  P_CDEMPRESA			  IN EMPRESA.CDEMPRESA%TYPE,
  P_CDBEMATIVO		  IN BEMATIVO.CDBEMATIVO%TYPE,
  P_VRAQUIBEMATIVO	IN BEMATIVO.VRAQUIBEMATIVO%TYPE,
  P_DTAQUIBEMATIVO	IN BEMATIVO.DTAQUIBEMATIVO%TYPE,
  P_NRORG				    IN BEMATIVO.NRORG%TYPE,
  P_CDOPERADOR		  IN OPERADOR.CDOPERADOR%TYPE,
  P_IDTPAPROP			  IN BEMATIVO.IDTPAPROPPISCOF%TYPE,
  P_IDIDENTBEM		  IN BEMATIVO.IDIDENTBEMPISCOF%TYPE,
  P_IDINDICUTL		  IN BEMATIVO.IDINDICUTLPISCOF%TYPE,
  P_IDNRPARC			  IN BEMATIVO.IDNRPARCPISCOF%TYPE,
  P_RETORNO			    OUT INTEGER)
AS
	V_CDIMPOSTONFE	IMPOSTO.CDIMPOSTONFE%TYPE;
	V_CONT 			    INTEGER;
	V_CONT_FOR		  INTEGER;
BEGIN
	V_CONT_FOR := 0;
	P_RETORNO := 0;
	FOR C_IMPOSTODFE IN (SELECT ITEMPROIMPOS.CDIMPOSTO, ITEMPROIMPOS.NRLANCTONF, ITEMPROIMPOS.VRIMPOSTOIT
                         FROM ITEMPROIMPOS, BEMATIVO, ITEMPRODUTO
                        WHERE BEMATIVO.CDEMPRESA     	= P_CDEMPRESA
                          AND BEMATIVO.CDBEMATIVO    		= P_CDBEMATIVO 
                          AND ITEMPROIMPOS.CDFILIAL  		= ITEMPRODUTO.CDFILIAL
                          AND ITEMPROIMPOS.NRLANCTONF 	= BEMATIVO.NRLANCTONF
                          AND ITEMPROIMPOS.NRSEQITPROD 	= ITEMPRODUTO.NRSEQITPROD
                          AND ITEMPRODUTO.CDFILIMOVI 		= BEMATIVO.CDFILIAL
                          AND ITEMPRODUTO.NRLANCTONF 		= BEMATIVO.NRLANCTONF
                          AND ITEMPRODUTO.CDPRODUTO 		= BEMATIVO.CDPRODUTO)
	LOOP
		SELECT NVL(CDIMPOSTONFE, 'X') AS CDIMPOSTONFE
			  INTO V_CDIMPOSTONFE
			  FROM IMPOSTO
			 WHERE CDIMPOSTO = C_IMPOSTODFE.CDIMPOSTO;
		
		IF (V_CDIMPOSTONFE <> 'X') THEN
			SELECT COUNT(*)
			  INTO V_CONT
			  FROM
			(SELECT CDIMPOSTO, NMIMPOSTO
			  FROM IMPOSTO
			 WHERE C_IMPOSTODFE.CDIMPOSTO = CDIMPOSTO
			 UNION ALL
			SELECT IMPOSTOBEM.CDIMPOSTO, IMPOSTO.NMIMPOSTO
			  FROM IMPOSTOBEM, IMPOSTO
			 WHERE P_CDEMPRESA 		        = IMPOSTOBEM.CDEMPRESA
			   AND P_CDBEMATIVO 		      = IMPOSTOBEM.CDBEMATIVO
			   AND C_IMPOSTODFE.CDIMPOSTO = IMPOSTOBEM.CDIMPOSTO
			   AND IMPOSTOBEM.CDIMPOSTO   = IMPOSTO.CDIMPOSTO);
			
			IF (V_CONT = 1) THEN
				INSERT INTO IMPOSTOBEM (CDEMPRESA, 			            CDBEMATIVO, 		  CDIMPOSTO, 
                                VRIMPOSTPAGOBEM, 			      IDATIVO,				  NRORG,
                                DTINCLUSAO,					        CDOPERINCLUSAO,	  NRORGINCLUSAO)
                        VALUES (P_CDEMPRESA, 				        P_CDBEMATIVO, 	  C_IMPOSTODFE.CDIMPOSTO, 
                                C_IMPOSTODFE.VRIMPOSTOIT,   'S', 					    P_NRORG,
                                SYSDATE,					          P_CDOPERADOR,		  P_NRORG);
				
				GERA_PARCELAS_EAM(P_CDEMPRESA, P_CDBEMATIVO, C_IMPOSTODFE.CDIMPOSTO, TO_NUMBER(P_VRAQUIBEMATIVO), TO_DATE(P_DTAQUIBEMATIVO), P_IDNRPARC, C_IMPOSTODFE.VRIMPOSTOIT, P_NRORG, P_CDOPERADOR, P_IDTPAPROP);
			END IF;
		ELSE
			P_RETORNO := 1;
		END IF;
		V_CONT_FOR := V_CONT_FOR + 1;
	END LOOP;
	IF (V_CONT_FOR = 0) THEN
		P_RETORNO := 2;
	END IF;
END;
/