create or replace PROCEDURE DASHBOARD_VND_CARDS(P_PERIODOINI IN DATE DEFAULT NULL, 
												P_VERIFICAR_DIA_ANTERIOR IN VARCHAR2 DEFAULT 'S',
												P_FILIAL IN VARCHAR2 DEFAULT 'T'
											  )

AS 
	V_ANTERIOR DATE;
	V_HOJE DATE;
	/* Variveis para controle de commit, o commit peridico  necessrio para evitar travamentos
		no BD devido a sobrecarga no segmento de rollback */
	V_INSERTCARD NUMBER;
	/*Valida se a uniade possui cards do dia ou no*/
	V_UNIDADEDIA NUMBER;
	/*Valida se a uniade vai rodar o job no dia ou nao*/
	V_DELETELOG NUMBER;
	/*Valida se deleta ou nao*/ 
	V_QTTICKET NUMBER;
	/*Numero de tickets diarios por unidade*/
	V_TOTVEND FLOAT;
	/*Total da venda da unidade*/
	V_AVGTICKET FLOAT;
	/*Ticket medio da unidade*/
	V_CANCTICKET NUMBER;
	/*Numero de tickets cancelados diarios por unidade*/
	V_FECHACAIXAPEND NUMBER;
	/*Fechamento de caixa pendente*/
	V_APROVMOVCARD NUMBER;
	/*Cupons pendentes de aprovao ( rotina de aprovao de cupom )*/
	V_DIFAPURACARD NUMBER;
	/*Diferena de apurao valor*/
	V_QTDIFAPURACARD NUMBER;
	/*Diferena de apuracao quantidade*/
	V_CUPOMPENDCARD NUMBER;
	/*Cupons pendentes de transmio ( Rotina de transmio da nota da venda ) */
	V_ITESTPENDCARD NUMBER;
	/*Falta de consolidao de venda */
	V_PRODIRREG NUMBER;
	V_PRODIRREG2 NUMBER;
	/*Produto sem imposto ou configuracao fiscal */

	/*CURSOR C_UNIDADES IS 
		SELECT CDFILIAL, NRORG
		  FROM FILIAL
		ORDER BY CDFILIAL;*/
	
	
	/* PROCEDURE INSERT_UPDATE_VNDCARDS CHAMADA NO FINAL*/	
	PROCEDURE INSERT_UPDATE_VNDCARDS(P_CDFILIAL IN VARCHAR,
							  		P_QTTICKETCARD IN FLOAT,
							  		P_TOTVENDCARD IN FLOAT,
							  		P_AVGTICKETCARD IN FLOAT,
							  		P_CANCVENDCARD IN FLOAT,
							  		P_FECHCAIXPENDCARD IN FLOAT,
							  		P_APROVMOVCARD IN FLOAT,
							  		P_DIFAPURACARD IN FLOAT,
							  		P_QTDIFAPURACARD IN FLOAT,
							  		P_CUPOMPENDCARD IN FLOAT,
							  		P_ITESTPENDCARD IN FLOAT,
							  		P_PRODIRREG IN FLOAT)
	AS
	BEGIN
		BEGIN
			V_INSERTCARD := 0;
			SELECT COUNT(*)
			  INTO V_INSERTCARD
			  FROM VNDCARDS
			 WHERE CDFILIAL = P_CDFILIAL
			   AND DTVNDCARDS = V_HOJE; 
		    EXCEPTION
		    	WHEN NO_DATA_FOUND THEN
		    	V_INSERTCARD := 0;
	    END;
	    IF V_INSERTCARD = 0 THEN
			INSERT INTO VNDCARDS
				(CDFILIAL, DTVNDCARDS, HORAVNDCARDS, QTTICKETCARD, TOTVENDCARD, AVGTICKETCARD, CANCVENDCARD, FECHCAIXPENDCARD, APROVMOVCARD, DIFAPURACARD, 
				 QTDIFAPURACARD, CUPOMPENDCARD, ITESTPENDCARD, PRODIRREG)
			VALUES
				(P_CDFILIAL, V_HOJE, TO_CHAR(SYSDATE, 'HH24:MI'), P_QTTICKETCARD, P_TOTVENDCARD, P_AVGTICKETCARD, P_CANCVENDCARD, P_FECHCAIXPENDCARD, P_APROVMOVCARD, 
				 P_DIFAPURACARD, P_QTDIFAPURACARD, P_CUPOMPENDCARD, P_ITESTPENDCARD, P_PRODIRREG);
		ELSE
			UPDATE VNDCARDS
			   SET HORAVNDCARDS = TO_CHAR(SYSDATE, 'HH24:MI'), QTTICKETCARD = P_QTTICKETCARD, TOTVENDCARD = P_TOTVENDCARD, AVGTICKETCARD = P_AVGTICKETCARD, 
			   	   CANCVENDCARD = P_CANCVENDCARD, FECHCAIXPENDCARD = P_FECHCAIXPENDCARD, APROVMOVCARD = P_APROVMOVCARD, DIFAPURACARD = P_DIFAPURACARD, 
			   	   QTDIFAPURACARD = P_QTDIFAPURACARD, CUPOMPENDCARD = P_CUPOMPENDCARD, ITESTPENDCARD = P_ITESTPENDCARD, PRODIRREG = P_PRODIRREG
			 WHERE CDFILIAL = P_CDFILIAL 
			   AND DTVNDCARDS = V_HOJE;
		END IF;
	END;	
	/* FIM INSERT_UPDATE_VNDCARDS */
	
	
	/* PROCEDURE DELETE_LOGALTERADASH CHAMADA NO FINAL*/	
	PROCEDURE DELETE_LOGALTERADASH(P_CDFILIAL IN VARCHAR,
							  		P_DTLOGDASH IN DATE)
	AS
	BEGIN
		BEGIN
			V_DELETELOG := 0;
			SELECT COUNT(*)
			  INTO V_DELETELOG
			  FROM LOGALTERADASH
			 WHERE CDFILIAL = P_CDFILIAL
			   AND DTLOGDASH = TRUNC(P_DTLOGDASH); 
		    EXCEPTION
		    	WHEN NO_DATA_FOUND THEN
		    	V_DELETELOG := 0;
	    END;	
		
	    IF V_DELETELOG <> 0 THEN								
			DELETE LOGALTERADASH 
			 WHERE CDFILIAL = P_CDFILIAL
			   AND DTLOGDASH = TRUNC(P_DTLOGDASH);	            
            COMMIT;
		END IF;	
	END;	
	/* FIM DELETE_LOGALTERADASH */
	
	
	/* PROCEDURE FIRST_OF_THE_DAY - Insere a data atual para todas as unidades quando executado pela primeira vez no dia*/
	PROCEDURE FIRST_OF_THE_DAY
	AS
	BEGIN
		BEGIN
			FOR C_INSERE_UNIDADE IN 
				( SELECT CDFILIAL
					FROM FILIAL
				  ORDER BY 1
				) LOOP
				BEGIN
					SELECT COUNT(*)
					  INTO V_UNIDADEDIA
					  FROM LOGALTERADASH
					 WHERE CDFILIAL = C_INSERE_UNIDADE.CDFILIAL
					   AND DTLOGDASH = TRUNC(SYSDATE); 
				    EXCEPTION
				    	WHEN NO_DATA_FOUND THEN
				    	V_UNIDADEDIA := 0;
			    END;
			    IF V_UNIDADEDIA = 0 THEN
					INSERT INTO LOGALTERADASH
						(CDFILIAL, DTLOGDASH)
					VALUES
						(C_INSERE_UNIDADE.CDFILIAL, TRUNC(SYSDATE));
					COMMIT;
				END IF;
			END LOOP;
		END;
	END;
	/* FIM FIRST_OF_THE_DAY */
	
BEGIN
	/* Se a hora for menor q seis hora toda a procedure FIRST_OF_THE_DAY*/
	IF (TO_CHAR(SYSDATE, 'HH24') < 6) THEN
		FIRST_OF_THE_DAY();
		COMMIT;
	END IF;
	
	
	FOR C_UNIDADES IN
		(SELECT L.CDFILIAL, L.DTLOGDASH, PG.IDDASHBOARD
		   FROM LOGALTERADASH L, PARAMGERAL PG
		   WHERE ((INSTR(P_FILIAL , L.CDFILIAL ) <> 0) OR (P_FILIAL = 'T'))
		  ORDER BY L.DTLOGDASH DESC, L.CDFILIAL ASC) LOOP
		BEGIN
			
			V_HOJE := C_UNIDADES.DTLOGDASH;
			
			/* Verifica cliente usa Dashboard Padrao = P ou Corportativo = C*/
			IF (C_UNIDADES.IDDASHBOARD = 'P') THEN		
				BEGIN
					/*PROCEDURE RESPONSAVEL PELO RECALCULO DO DASHHBOARD PADRAO*/				
					RECALCULA_DASHBOARD_PADRAO(TO_CHAR(V_HOJE, 'DD/MM/YYYY'), TO_CHAR(V_HOJE, 'DD/MM/YYYY'), C_UNIDADES.CDFILIAL);					
				EXCEPTION
					WHEN OTHERS THEN
						DELETE_LOGALTERADASH(C_UNIDADES.CDFILIAL,V_HOJE);
				END;
				
				COMMIT;				
				
			ELSE
				/* Busca dados para contemplar Dashboard Corportativo */
				BEGIN
					V_QTTICKET := 0;
					SELECT COUNT(*)
					  INTO V_QTTICKET
					  FROM VENDA
					 WHERE CDFILIAL = C_UNIDADES.CDFILIAL
					   AND DTENTRVENDA = V_HOJE
					   AND IDSITUVENDA = 'O';
					EXCEPTION
						WHEN NO_DATA_FOUND THEN
						V_QTTICKET := 0;
				END;

				BEGIN
					V_TOTVEND := 0;
					SELECT NVL(SUM(I.QTPRODVEND * (I.VRUNITVEND + I.VRUNITVENDCL) - (I.VRDESITVEND) + I.VRACRITVEND), 0)
					  INTO V_TOTVEND
					  FROM ITEMVENDA I
					  JOIN VENDA V
						ON I.CDFILIAL = V.CDFILIAL
					   AND I.CDCAIXA = V.CDCAIXA
					   AND I.NRSEQVENDA = V.NRSEQVENDA
					 WHERE V.CDFILIAL = C_UNIDADES.CDFILIAL
					   AND V.DTENTRVENDA = V_HOJE
					   AND V.IDSITUVENDA = 'O';
					EXCEPTION
						WHEN NO_DATA_FOUND THEN
						V_TOTVEND := 0;
				END;

				BEGIN
					V_CANCTICKET := 0;
					SELECT COUNT(*)
					  INTO V_CANCTICKET
					  FROM VENDA
					 WHERE CDFILIAL = C_UNIDADES.CDFILIAL
					   AND DTENTRVENDA = V_HOJE
					   AND IDSITUVENDA = 'C';
					EXCEPTION
						WHEN NO_DATA_FOUND THEN
						V_CANCTICKET := 0;
				END;

				V_AVGTICKET :=  0;
				IF V_QTTICKET > 0 THEN
					V_AVGTICKET :=  TRUNC((V_TOTVEND/V_QTTICKET), 2);
				ELSE
					V_AVGTICKET :=  0;
				END IF;

				BEGIN
					V_FECHACAIXAPEND := 0;
					SELECT COUNT(*)
					  INTO V_FECHACAIXAPEND
					  FROM TURCAIXA
					 WHERE CDFILIAL = C_UNIDADES.CDFILIAL
					   AND DTFECHCAIX IS NULL  
					   AND DTMOVTURCAIX BETWEEN (V_HOJE-30) AND (V_HOJE-1);
					EXCEPTION
						WHEN NO_DATA_FOUND THEN
						V_FECHACAIXAPEND := 0;
				END;

				BEGIN
					V_APROVMOVCARD := 0;
					WITH FILIOPERLOJACAIX AS 
						(SELECT C.CDCAIXA, C.NMCAIXA, FILIOPERLOJA.CDFILIAL, FILIOPERLOJA.NMFILIAL, FILIOPERLOJA.CDLOJA, FILIOPERLOJA.NMLOJA
						   FROM CAIXA C
						   JOIN (SELECT L.CDLOJA, L.NMLOJA, FILIOPER.CDFILIAL, FILIOPER.NMFILIAL
								   FROM LOJA L
								   JOIN (SELECT F.CDFILIAL, F.NMFILIAL
										   FROM FILIAL F
										  WHERE F.CDFILIAL = C_UNIDADES.CDFILIAL
										)FILIOPER
									 ON FILIOPER.CDFILIAL = L.CDFILIAL
								)FILIOPERLOJA
							 ON FILIOPERLOJA.CDFILIAL = C.CDFILIAL
							AND FILIOPERLOJA.CDLOJA = C.CDLOJA
						)
					SELECT SUM(IDSTATUS) INTO V_APROVMOVCARD 
					  FROM (SELECT COUNT(RZ.IDSTATUS) AS IDSTATUS
							  FROM REDUCAOZ RZ
							  JOIN (SELECT FILIOPERLOJACAIX.CDCAIXA, FILIOPERLOJACAIX.NMCAIXA, FILIOPERLOJACAIX.CDFILIAL, FILIOPERLOJACAIX.NMFILIAL, FILIOPERLOJACAIX.CDLOJA, FILIOPERLOJACAIX.NMLOJA, T.DTFECHCAIX, T.DTMOVTURCAIX
									FROM TURCAIXA T
									JOIN FILIOPERLOJACAIX
									  ON FILIOPERLOJACAIX.CDCAIXA = T.CDCAIXA
									 AND FILIOPERLOJACAIX.CDFILIAL = T.CDFILIAL
								   WHERE T.DTFECHCAIX IS NOT NULL
									 )FILIOPERLOJACAIXTUR
								ON RZ.CDFILIAL = FILIOPERLOJACAIXTUR.CDFILIAL
							   AND RZ.CDCAIXA = FILIOPERLOJACAIXTUR.CDCAIXA
							   AND RZ.DTREDUCAOZ  = FILIOPERLOJACAIXTUR.DTMOVTURCAIX
							   WHERE (RZ.DTREDUCAOZ BETWEEN (V_HOJE-30) AND (V_HOJE))
								 AND ( INSTR('P_E', RZ.IDSTATUS) > 0 ) 
								 AND VRVENBRUREDZ <> 0
								 AND VRVENLIQREDZ <> 0

							  UNION ALL

							  SELECT COUNT(DISTINCT V.DTENTRVENDA) AS IDSTATUS
								FROM VENDA V
								JOIN (SELECT FILIOPERLOJACAIX.CDCAIXA, FILIOPERLOJACAIX.NMCAIXA, FILIOPERLOJACAIX.CDFILIAL, FILIOPERLOJACAIX.NMFILIAL, FILIOPERLOJACAIX.CDLOJA, FILIOPERLOJACAIX.NMLOJA, T.DTFECHCAIX, T.DTMOVTURCAIX
									  FROM TURCAIXA T
										JOIN FILIOPERLOJACAIX
										  ON FILIOPERLOJACAIX.CDCAIXA = T.CDCAIXA
										 AND FILIOPERLOJACAIX.CDFILIAL = T.CDFILIAL
										 AND T.DTFECHCAIX IS NOT NULL
									 )FILIOPERLOJACAIXTUR
								  ON FILIOPERLOJACAIXTUR.CDFILIAL = V.CDFILIAL
								 AND FILIOPERLOJACAIXTUR.CDLOJA = V.CDLOJA
								 AND FILIOPERLOJACAIXTUR.CDCAIXA = V.CDCAIXA
								 AND FILIOPERLOJACAIXTUR.DTMOVTURCAIX = V.DTENTRVENDA
							   WHERE V.IDTPEMISVEND IN ('N','S')
								 AND ( V.DTENTRVENDA BETWEEN (V_HOJE-30) AND (V_HOJE))
								 AND ( INSTR('P_E', V.IDAPROVACAONFCE) > 0 )
								 AND V.IDSTATUSNFCE = 'A'
								 AND V.IDTPAMBNFCE  = '1');
					EXCEPTION
						WHEN NO_DATA_FOUND THEN
						V_APROVMOVCARD := 0;
				END;

				BEGIN
					V_CUPOMPENDCARD := 0;
					SELECT COUNT(*)
					  INTO V_CUPOMPENDCARD
					  FROM VENDA
					 WHERE CDFILIAL = C_UNIDADES.CDFILIAL
					   AND ( DTENTRVENDA BETWEEN (V_HOJE-30) AND (V_HOJE))
					   AND NVL(IDSTATUSNFCE, 'A') NOT IN ( 'A', 'D', 'C')
					   AND IDTPEMISVEND IN ('N')
					   AND (NRACESSONFCE IS NOT NULL)
					   AND (NRNOTAFISCALCE IS NOT NULL)
					   AND (IDTPAMBNFCE  = '1');
					EXCEPTION
						WHEN NO_DATA_FOUND THEN
						V_CUPOMPENDCARD := 0;
				END;

				BEGIN
					V_ITESTPENDCARD := 0;
					SELECT COUNT(TOT.NOTA) INTO V_ITESTPENDCARD
					  FROM (SELECT DISTINCT V.CDFILIAL, FILIOPERLOJACAIX.NMFILIAL, V.CDLOJA, FILIOPERLOJACAIX.NMLOJA, V.CDCAIXA, FILIOPERLOJACAIX.NMCAIXA, 
								   NVL(V.NRCUPOMFIS, V.NRNOTAFISCALCE) AS NOTA
							  FROM VENDA V
							  JOIN (SELECT C.CDCAIXA, C.NMCAIXA, FILIOPERLOJA.CDFILIAL, FILIOPERLOJA.NMFILIAL, FILIOPERLOJA.CDLOJA, FILIOPERLOJA.NMLOJA
									  FROM CAIXA C
									  JOIN (SELECT L.CDLOJA, L.NMLOJA, FILIOPER.CDFILIAL, FILIOPER.NMFILIAL
											  FROM LOJA L
											  JOIN (SELECT F.CDFILIAL, F.NMFILIAL
													  FROM FILIAL F
													 WHERE F.CDFILIAL = C_UNIDADES.CDFILIAL
												   )FILIOPER
												ON FILIOPER.CDFILIAL = L.CDFILIAL
										   )FILIOPERLOJA
										ON FILIOPERLOJA.CDFILIAL = C.CDFILIAL
									   AND FILIOPERLOJA.CDLOJA = C.CDLOJA
								   )FILIOPERLOJACAIX
								ON FILIOPERLOJACAIX.CDFILIAL = V.CDFILIAL
							   AND FILIOPERLOJACAIX.CDCAIXA = V.CDCAIXA
							   AND FILIOPERLOJACAIX.CDLOJA = V.CDLOJA
							  JOIN ITEMVENDA I
								ON V.CDFILIAL = I.CDFILIAL
							   AND V.CDCAIXA = I.CDCAIXA
							   AND V.NRSEQVENDA = I.NRSEQVENDA
							 WHERE V.DTENTRVENDA BETWEEN (V_HOJE-30) AND (V_HOJE-1)
							   AND V.IDSITUVENDA IN ('O','D')
							   AND I.CDFILIALEST IS NULL
							   AND I.NRLANCESTQ IS NULL
						   ) TOT;
					EXCEPTION
						WHEN NO_DATA_FOUND THEN
						V_ITESTPENDCARD := 0;
				END;

				BEGIN
					V_QTDIFAPURACARD := 0;
					V_DIFAPURACARD := 0;
					SELECT DISTINCT COUNT(*), SUM((NVL(ML.VRCONFERIDO,A.SANGRIA) + VALORDESPESA) - A.SISTEMA)
						   INTO V_QTDIFAPURACARD, V_DIFAPURACARD
					  FROM ( SELECT TR.NMTIPORECE, TR.CDTIPORECE, MO.CDFILIAL, MO.DTMOVIMCAIXA, CX.CDLOJA, SUM(DECODE(MO.IDTIPOMOVIVE,'G',MO.VRMOVIVEND,0) ) AS SANGRIA, 
									( SUM(DECODE(MO.IDTIPOMOVIVE,'E',MO.VRMOVIVEND,0) ) + SUM(DECODE(MO.IDTIPOMOVIVE,'T',MO.VRMOVIVEND,0) ) - SUM(DECODE(MO.IDTIPOMOVIVE,'S' ,MO.VRMOVIVEND,0) ) ) AS SISTEMA,
									NVL(DESPESA.VALOR, 0) VALORDESPESA 
							   FROM TIPORECE TR 
							   JOIN MOVCAIXA MO ON MO.CDTIPORECE = TR.CDTIPORECE
							   JOIN CAIXA CX ON CX.CDCAIXA = MO.CDCAIXA AND CX.CDFILIAL = MO.CDFILIAL
							   LEFT JOIN (SELECT MO.CDTIPORECE, SUM(MO.VRMOVIVEND) AS VALOR 
											FROM MOVCAIXA MO 
											JOIN TIPORECE TPR ON MO.CDTIPORECE = TPR.CDTIPORECE
											JOIN TIPOSANGRIA TS ON MO.CDTPSANGRIA = TS.CDTPSANGRIA AND MO.CDFILIAL = TS.CDFILIAL 
											WHERE MO.IDTIPOMOVIVE = 'G' AND MO.DTMOVIMCAIXA BETWEEN (V_HOJE-1) AND (V_HOJE-1) AND (MO.CDFILIAL =  C_UNIDADES.CDFILIAL) AND (TS.IDSANGRIA = 'D') 
											GROUP BY MO.CDTIPORECE) DESPESA 
								 ON DESPESA.CDTIPORECE = TR.CDTIPORECE 
							  WHERE MO.CDFILIAL = C_UNIDADES.CDFILIAL AND MO.DTMOVIMCAIXA = (V_HOJE-1) AND MO.IDTIPOMOVIVE IN ('E', 'S', 'T', 'G') 
					  GROUP BY MO.DTMOVIMCAIXA, TR.NMTIPORECE, TR.CDTIPORECE, MO.CDFILIAL, CX.CDLOJA, NVL(DESPESA.VALOR, 0) ) A 

					  LEFT JOIN MOVLOJA ML ON ML.CDFILIAL = A.CDFILIAL AND ML.CDTIPORECE = A.CDTIPORECE AND ML.DTMOVIMENTO = A.DTMOVIMCAIXA 

					  JOIN FILIAL F ON F.CDFILIAL = A.CDFILIAL
					  WHERE ((NVL(ML.VRCONFERIDO,A.SANGRIA) + VALORDESPESA) - A.SISTEMA) <> '0';
					EXCEPTION
						WHEN NO_DATA_FOUND THEN
						V_QTDIFAPURACARD := 0;
						V_DIFAPURACARD := 0;
				END;

				BEGIN
					V_PRODIRREG := 0;
					SELECT SUM(PROD) INTO V_PRODIRREG 
					  FROM ( SELECT COUNT(DISTINCT PR.CDARVPROD) AS PROD
							  FROM FILIAL FI, PARAMEMPRESA PE, PRODUTO PR, ALIQIMPFIS AL, ITEMPRECO IT
							 WHERE FI.CDFILIAL = C_UNIDADES.CDFILIAL
							   AND FI.CDFILIAL = IT.CDFILIAL
							   AND PR.CDPRODUTO = IT.CDPRODUTO
							   AND PE.CDEMPRESA = FI.CDEMPRESA
							   AND AL.CDPRODUTO = PR.CDPRODUTO
							   AND AL.CDFILIAL = FI.CDFILIAL
							   AND ( (PR.CDCLASFISC IS NULL OR PR.CDCLASFISC = '') 
								OR (AL.CDCSTICMS IS NULL OR AL.CDCSTICMS = '') 
								OR (PR.CDCLASFISC IS NULL OR PR.CDCLASFISC = '') 
								OR (AL.CDCSTPISCOF IS NULL OR AL.CDCSTPISCOF = '') 
								OR (AL.CDCFOPPFIS IS NULL OR AL.CDCFOPPFIS = '') 
								OR (AL.VRALIQPIS IS NULL) 
								OR (AL.CDCSTICMS IS NULL OR AL.CDCSTICMS NOT IN('00', '20', '40', '41', '60', '90', '102', '103', '300', '400', '500', '900')))

							
							UNION

							SELECT COUNT(DISTINCT PR.CDARVPROD) AS PROD
							FROM FILIAL FI, PARAMEMPRESA PE, PRODUTO PR, ALIQIMPFIS AL, ITEMPRECOGER IT
						   WHERE FI.CDFILIAL = C_UNIDADES.CDFILIAL
							 AND PR.CDPRODUTO = IT.CDPRODUTO
							 AND PR.CDPRODUTO NOT IN (SELECT CDPRODUTO FROM ITEMPRECO)
							 AND PE.CDEMPRESA = FI.CDEMPRESA
							 AND AL.CDPRODUTO = PR.CDPRODUTO
							 AND AL.CDFILIAL = FI.CDFILIAL
							 AND ( (PR.CDCLASFISC IS NULL OR PR.CDCLASFISC = '') 
							  OR (AL.CDCSTICMS IS NULL OR AL.CDCSTICMS = '') 
							  OR (PR.CDCLASFISC IS NULL OR PR.CDCLASFISC = '') 
							  OR (AL.CDCSTPISCOF IS NULL OR AL.CDCSTPISCOF = '') 
							  OR (AL.CDCFOPPFIS IS NULL OR AL.CDCFOPPFIS = '') 
							  OR (AL.VRALIQPIS IS NULL) 
							  OR (AL.CDCSTICMS IS NULL OR AL.CDCSTICMS NOT IN('00', '20', '40', '41', '60', '90', '102', '103', '300', '400', '500', '900')))
							
							UNION

							SELECT DISTINCT COUNT( P.CDARVPROD ) AS PROD
							  FROM PRODUTO P, ITEMPRECO I, FILIAL FI
							WHERE P.CDPRODUTO = I.CDPRODUTO
							   AND I.CDFILIAL = FI.CDFILIAL
							   AND FI.CDFILIAL = C_UNIDADES.CDFILIAL
							   AND P.CDPRODUTO NOT IN (SELECT CDPRODUTO FROM ALIQIMPFIS WHERE FI.CDFILIAL = C_UNIDADES.CDFILIAL)

							UNION

							SELECT DISTINCT COUNT( P.CDARVPROD ) AS PROD
							  FROM PRODUTO P, ITEMPRECOGER G, FILIAL FI, FILITABGER FT
							 WHERE P.CDPRODUTO NOT IN (SELECT CDPRODUTO FROM ALIQIMPFIS WHERE FI.CDFILIAL = C_UNIDADES.CDFILIAL)
							   AND P.CDPRODUTO NOT IN (SELECT CDPRODUTO FROM ITEMPRECO WHERE FI.CDFILIAL = C_UNIDADES.CDFILIAL)
							   AND P.CDPRODUTO = G.CDPRODUTO
							   AND FI.CDFILIAL = FT.CDFILIAL
							   AND G.CDTABEPREC = FT.CDTABEPREC
							   AND FI.CDFILIAL = C_UNIDADES.CDFILIAL
						   );
					EXCEPTION
						WHEN NO_DATA_FOUND THEN
						V_PRODIRREG := 0;
				END;


				INSERT_UPDATE_VNDCARDS(C_UNIDADES.CDFILIAL,
										  V_QTTICKET,
										  V_TOTVEND,
										  V_AVGTICKET,
										  V_CANCTICKET,
										  V_FECHACAIXAPEND,
										  V_APROVMOVCARD,
										  V_DIFAPURACARD,
										  V_QTDIFAPURACARD,
										  V_CUPOMPENDCARD,
										  V_ITESTPENDCARD,
										  V_PRODIRREG);
										  
				DELETE_LOGALTERADASH(C_UNIDADES.CDFILIAL,C_UNIDADES.DTLOGDASH);
				COMMIT;
			END IF;
			/* FIM Dashboard Corportativo */			
		END;
	END LOOP;	
END;