ALTER TABLE  VERSAOPRODANA ADD IDSTATUSVER VARCHAR2(1)  DEFAULT 'L' NOT NULL 
/

ALTER TABLE VERSAOPRODANA ADD CONSTRAINT CKC_IDSTATUSVER_VERSAOPRODANA  CHECK (IDSTATUSVER IN ('L','B'))
/

ALTER TABLE  VERSAOPRODANA ADD IDVERATIVA VARCHAR2(1)  DEFAULT 'I' NOT NULL 
/

ALTER TABLE VERSAOPRODANA ADD CONSTRAINT CKC_IDVERATIVA_VERSAOPRODANA  CHECK (IDVERATIVA IN ('A','I'))
/

ALTER TABLE PARAMETROQPR ADD IDUTILVERSANA VARCHAR2(1) DEFAULT 'N' NOT NULL
/

ALTER TABLE PARAMETROQPR ADD CONSTRAINT CKC_IDUTILVERSANA_PARAMETROQPR  CHECK (IDUTILVERSANA IN ('N','S'))
/

DROP INDEX MAN02268_FK  
/

ALTER TABLE INSPECPROD DROP CONSTRAINT FKMAN02268INSPECPROD 
/

DROP INDEX MAN02269_FK
/

ALTER TABLE RESPOSINSPEC DROP CONSTRAINT FKMAN02269RESPOSINSPEC 
/

DROP INDEX MAN02270_FK 
/

ALTER TABLE INSUMOANA DROP CONSTRAINT FKMAN02270INSUMOANA 
/

DROP INDEX MAN02271_FK
/

ALTER TABLE RECURSOANA DROP CONSTRAINT FKMAN02271RECURSOANA 
/

ALTER TABLE VERSAOPRODANA DROP CONSTRAINT PK_VERSAOPRODANA
/

DROP INDEX PK_VERSAOPRODANA
/

UPDATE
VERSAOPRODANA V 
SET IDPROCPROD = (SELECT MAX(IDPROCPROD) 
                    FROM INSPECPROD I
                    WHERE V.CDPRODUTO = I.CDPRODUTO)
WHERE V.IDPROCPROD IS NULL
/

DELETE 
FROM VERSAOPRODANA V
WHERE NOT EXISTS (SELECT 1 
                    FROM INSPECPROD I
                   WHERE V.CDPRODUTO = I.CDPRODUTO)
/

ALTER TABLE VERSAOPRODANA MODIFY IDPROCPROD NOT NULL
/

ALTER TABLE VERSAOPRODANA ADD CONSTRAINT PK_VERSAOPRODANA PRIMARY KEY (CDVERSAO, CDPRODUTO, IDPROCPROD)
/

CREATE INDEX MAN02268_FK ON INSPECPROD (CDVERSAO ASC, CDPRODUTO ASC, IDPROCPROD ASC)
/

DECLARE V_COUNT FLOAT;
BEGIN 
FOR C_INSPECPROD IN (SELECT CDPRODUTO, CDVERSAO, IDPROCPROD
                      FROM INSPECPROD)LOOP     
     
     SELECT COUNT(*) 
       INTO V_COUNT
      FROM VERSAOPRODANA V
     WHERE V.CDPRODUTO = C_INSPECPROD.CDPRODUTO  
       AND V.CDVERSAO = nvl(C_INSPECPROD.CDVERSAO,'x')
       AND V.IDPROCPROD = C_INSPECPROD.IDPROCPROD;
       
       IF (V_COUNT = 0) THEN
         INSERT INTO VERSAOPRODANA
           (CDVERSAO, DSVERSAO, CDPRODUTO, IDPROCPROD)
         VALUES
           (NVL(C_INSPECPROD.CDVERSAO,'x'), 'x', C_INSPECPROD.CDPRODUTO, C_INSPECPROD.IDPROCPROD);      
       END IF;
END LOOP;
END;
/

ALTER TABLE INSPECPROD
    ADD CONSTRAINT FKMAN02268INSPECPROD FOREIGN KEY  (CDVERSAO, CDPRODUTO,IDPROCPROD)
       REFERENCES VERSAOPRODANA (CDVERSAO, CDPRODUTO,IDPROCPROD)
/


ALTER TABLE RESPOSINSPEC
    ADD CONSTRAINT FKMAN02269RESPOSINSPEC FOREIGN KEY  (CDVERSAO, CDPRODUTO,IDRESPPROC)
       REFERENCES VERSAOPRODANA (CDVERSAO, CDPRODUTO,IDPROCPROD)
/

CREATE INDEX MAN02269_FK ON RESPOSINSPEC (CDVERSAO ASC, CDPRODUTO ASC, IDRESPPROC ASC)
/

ALTER TABLE INSUMOANA
    ADD CONSTRAINT FKMAN02270INSUMOANA FOREIGN KEY  (CDVERSAO, CDPRODUTO, IDPROCPROD)
       REFERENCES VERSAOPRODANA (CDVERSAO, CDPRODUTO,IDPROCPROD)
/

CREATE INDEX MAN02270_FK ON INSUMOANA  (CDVERSAO ASC, CDPRODUTO ASC, IDPROCPROD ASC)
/

ALTER TABLE RECURSOANA
    ADD CONSTRAINT FKMAN02271RECURSOANA FOREIGN KEY  (CDVERSAO, CDPRODUTO, IDPROCPROD)
       REFERENCES VERSAOPRODANA (CDVERSAO, CDPRODUTO, IDPROCPROD)
/

CREATE INDEX MAN02271_FK ON RECURSOANA (CDVERSAO ASC, CDPRODUTO ASC, IDPROCPROD ASC)
/