ALTER TABLE FCT_CAPAPARAMFATESC ADD IDTPCALCDTSAIDANF NUMBER
/ 
ALTER TABLE FCT_CAPAPARAMFATESC ADD CONSTRAINT CKC_TPCALCDTSAIDA_CAPAPARAMFAT CHECK(IDTPCALCDTSAIDANF IN (1, 2, 3, 4, 5))
/
ALTER TABLE FCT_CAPAPARAMFATESC ADD NRCALCULODTSAIDANF NUMBER
/
 
CREATE TABLE FCT_RELACESCOPOAGRUPAMENTO (
	NRRELACESCAGRUP  NUMBER NOT NULL,
	NRTIPOORCAMENTO  NUMBER NOT NULL,
	NRAGRUPAMENTO	 NUMBER NOT NULL,
	NRORG             NUMBER 	     DEFAULT         SYS_CONTEXT('nrorg_ctx','nrorg') NOT NULL,
   IDATIVO           VARCHAR2(1)     DEFAULT 'S' NOT NULL
      CONSTRAINT CKC_IDATIVO_FCT_RELESCAGRUP CHECK (IDATIVO IN ('S','N')),
   DTINCLUSAO        DATE                  			NULL,
   DTULTATU          DATE                  			NULL,
   NRORGINCLUSAO     NUMBER          DEFAULT SYS_CONTEXT('nrorg_ctx','nrorg')		NULL,
   CDOPERINCLUSAO    VARCHAR2(12)    DEFAULT '1' 		NULL,
   NRORGULTATU       NUMBER          DEFAULT SYS_CONTEXT('nrorg_ctx','nrorg')		NULL,
   CDOPERULTATU      VARCHAR2(12)    DEFAULT '1'
)
/

ALTER TABLE FCT_RELACESCOPOAGRUPAMENTO ADD CONSTRAINT PK_ESCAGRUP_ESCAGRUPAMENTO PRIMARY KEY (NRRELACESCAGRUP)
/

ALTER TABLE FCT_RELACESCOPOAGRUPAMENTO ADD CONSTRAINT FK_ESCOPO_ESCAGRUPAMENTO 
	FOREIGN KEY (NRTIPOORCAMENTO) REFERENCES FCT_TIPOORCAMENTO(NRTIPOORCAMENTO) ON DELETE CASCADE
/

ALTER TABLE FCT_RELACESCOPOAGRUPAMENTO ADD CONSTRAINT FK_AGRUPAMENTO_ESCAGRUPAMENTO 
	FOREIGN KEY (NRAGRUPAMENTO) REFERENCES FCT_AGRUPAMENTO(NRAGRUPAMENTO) ON DELETE CASCADE
/

DECLARE
	V_NRRELACESCAGRUP FCT_RELACESCOPOAGRUPAMENTO.NRRELACESCAGRUP%TYPE;
BEGIN
	FOR C_CONTAGRUP IN (
		SELECT DISTINCT NEGO.NRTIPOORCAMENTO, 
			   AGRUP.NRAGRUPAMENTO,
			   AGRUP.NRORG,
			   AGRUP.CDOPERINCLUSAO
		FROM FCT_NEGOCIACAOCONTRATO NEGO
		JOIN FCT_RELACAGRUPAMENTOCONT AGRUPCONT
		  ON NEGO.NRSEQCONTRATO = AGRUPCONT.NRSEQCONTRATO
		  AND NEGO.NRORG        = AGRUPCONT.NRORG
		JOIN FCT_AGRUPAMENTO AGRUP
		  ON AGRUPCONT.NRAGRUPAMENTO = AGRUP.NRAGRUPAMENTO
		  AND AGRUPCONT.NRORG        = AGRUP.NRORG
		JOIN FCT_CAPAPARAMFATESC PARAM
		  ON NEGO.NRTIPOORCAMENTO    = PARAM.NRTIPOORCAMENTO
		  AND PARAM.CDTIPOOPERFATURA = PARAM.CDTIPOOPERFATURA
		  AND PARAM.CDSERIENF        = PARAM.CDSERIENF
		  AND PARAM.CDEMPRESA        = PARAM.CDEMPRESA
		  AND PARAM.CDINSCESTA       = PARAM.CDINSCESTA
		  AND AGRUP.CDINSCMUNI       = PARAM.CDINSCMUNI
		  AND PARAM.NRPARCFATURA IS NULL
	) LOOP

		NOVO_CODIGO_NT('FCT_RELACESCOPOAGRUPAMENTO', V_NRRELACESCAGRUP, 1, C_CONTAGRUP.NRORG);
		INSERT INTO FCT_RELACESCOPOAGRUPAMENTO (
            NRRELACESCAGRUP, NRTIPOORCAMENTO, NRAGRUPAMENTO, 
            NRORG,           NRORGINCLUSAO,   CDOPERINCLUSAO, 
            IDATIVO,         DTINCLUSAO
        ) VALUES (
            V_NRRELACESCAGRUP, C_CONTAGRUP.NRTIPOORCAMENTO, C_CONTAGRUP.NRAGRUPAMENTO, 
            C_CONTAGRUP.NRORG, C_CONTAGRUP.NRORG,           C_CONTAGRUP.NRORG, 
            'S',               SYSDATE
        );
	END LOOP; 
END;
/