/* PROCEDURE PARA CHAMAR REPLICA_VENDAS_RM (Dashboard Padrao)*/
create or replace PROCEDURE RECALCULA_DASHBOARD_PADRAO
(
P_DTCALCULO1 IN VARCHAR2 DEFAULT NULL, P_DTCALCULO2 IN VARCHAR2 DEFAULT NULL, P_FILIAL IN VARCHAR2 DEFAULT 'T'
) 

AS 

V_DTVENDAINI  DATE; 
V_DTVENDAFIN DATE;
V_DTVENDACONT DATE;
V_DTHOJE DATE;

BEGIN

V_DTVENDAINI := TO_DATE(P_DTCALCULO1, 'DD/MM/YYYY');
V_DTVENDACONT := TO_DATE(P_DTCALCULO1, 'DD/MM/YYYY');
V_DTVENDAFIN := TO_DATE(P_DTCALCULO2, 'DD/MM/YYYY');	
V_DTHOJE     := TO_DATE(SYSDATE, 'DD/MM/YYYY');

WHILE V_DTVENDACONT <= V_DTVENDAFIN LOOP

/* VERIFICA SE ESTA ROODANDO PARA O DIA ATUAL*/
IF (V_DTVENDACONT = V_DTHOJE) THEN		
	/* CASO FOR O DIA ATUAL NAO DELETA OS REGISTROS ANTERIORES APENAS RODA O CALCULO */
	
	/* VERIFICA SE SERA TODAS AS FILIAIS PARA RODAR DIA ANTERIOR*/
	IF (P_FILIAL = 'T') THEN		
		REPLICA_VENDAS_RM(V_DTVENDACONT, P_FILIAL, 'S');
	ELSE
		REPLICA_VENDAS_RM(V_DTVENDACONT, P_FILIAL, 'N');
	END IF;
	
ELSE
	/* CASO NAO FOR O DIA ATUAL UPDATA E RODA NOVAMENTE O RECALCULO*/
	
	/* UPDATE VENDAS que alimenta do Dashboard */
	UPDATE VENDA
	SET IDCONTVEND    = 'N'
	WHERE IDSITUVENDA IN ('O', 'C')
	AND DTENTRVENDA  = V_DTVENDACONT
	AND ((INSTR(P_FILIAL , CDFILIAL ) <> 0) OR (P_FILIAL = 'T'));

	/* DELETE VENDAS DIA alimenta do Dashboard */	
	DELETE FROM VENDAHORATOTAL WHERE TRUNC(DTVENDA)  = V_DTVENDACONT AND ((INSTR(P_FILIAL , CDFILIAL ) <> 0) OR (P_FILIAL = 'T'));
	DELETE FROM VENDADIATOTAL WHERE TRUNC(DTVENDA)  = V_DTVENDACONT AND ((INSTR(P_FILIAL , CDFILIAL ) <> 0) OR (P_FILIAL = 'T'));
	DELETE FROM VENDADIAMODALIDADE WHERE TRUNC(DTVENDA)  = V_DTVENDACONT AND ((INSTR(P_FILIAL , CDFILIAL ) <> 0) OR (P_FILIAL = 'T'));	

	/* RECALCULA VENDAS DOS DIAS que alimenta do Dashboard Padrao */
	REPLICA_VENDAS_RM(V_DTVENDACONT, P_FILIAL, 'N');	

END IF;

/*DELETA REGISTROS NA TABELA LOGALTERADASH*/
DELETE LOGALTERADASH WHERE ((INSTR(P_FILIAL , CDFILIAL ) <> 0) OR (P_FILIAL = 'T')) AND DTLOGDASH = TRUNC(V_DTVENDACONT);	 

V_DTVENDACONT := V_DTVENDACONT + 1; 
COMMIT;

END LOOP;

END;