
/*------ ATD 378572 ------*/
DECLARE v_count NUMBER:=0;

BEGIN
	SELECT Count(1) INTO v_count FROM USER_TABLES WHERE UPPER(table_name) = 'SUV_CORES_COLORANTES';
	IF v_count = 0 THEN
		EXECUTE IMMEDIATE 'CREATE TABLE SUV_CORES_COLORANTES (
			COD_GRUPO DECIMAL(4,0),
			COD_PRODUTO DECIMAL(8,0),
			COD_BASE DECIMAL(4,0),
			COD_EMBALAGEM DECIMAL(2,0),
			COD_COR DECIMAL(8,0),
			COD_COLORANTE DECIMAL(4,0),
			QTDE DECIMAL (10,2) )';
	END IF;
	SELECT Count(1) INTO v_count FROM USER_TABLES WHERE UPPER(table_name) = 'SUV_BASES';
	IF v_count = 0 THEN
		EXECUTE IMMEDIATE 'CREATE TABLE SUV_BASES (
			COD_PRODUTO DECIMAL(8,0),
			COD_BASE DECIMAL(4,0),
			COD_EMBALAGEM DECIMAL(2,0) )';
	END IF;
	SELECT Count(1) INTO v_count FROM USER_TABLES WHERE UPPER(table_name) = 'SUV_EMBALAGENS';
	IF v_count = 0 THEN
		EXECUTE IMMEDIATE 'CREATE TABLE SUV_EMBALAGENS (
			COD_EMBALAGEM DECIMAL(2,0),
			VOLUME DECIMAL(16,5) )';
	END IF;
	SELECT Count(1) INTO v_count FROM USER_TABLES WHERE UPPER(table_name) = 'SUV_CORES';
	IF v_count = 0 THEN
		EXECUTE IMMEDIATE 'CREATE TABLE SUV_CORES (
			COD_GRUPO DECIMAL(4,0),
			COD_PRODUTO DECIMAL(8,0),
			COD_COR DECIMAL(8,0),
			NOM_COR	VARCHAR(100),
			SITUACAO VARCHAR(1) )';
	END IF;
END;
/

 CREATE OR REPLACE PROCEDURE IMPORTACAOTINTOMETRICO (pInativo IN CHAR, pListaProdutos IN VARCHAR2)
  IS              
  cFiltroInativo varchar2(50); cFiltroProdutos varchar2(4000); cComando varchar2(4000); nCount INT;
  BEGIN
  IF pInativo = 'S' THEN
    cFiltroInativo := '';
  ELSE
    cFiltroInativo := ' AND C.SITUACAO = ''A''';
  END IF;
  IF rtrim(ltrim(pListaProdutos)) <> '' THEN
    cFiltroProdutos := 'AND CP.CODPRO IN (' || pListaProdutos || ') ';
  ELSE
    cFiltroProdutos := '';
  END IF;

  cComando := 'CREATE TABLE TMPCURFORMULAS AS SELECT F.COD_GRUPO AS Id_Colecao, F.COD_COR AS Id_Cor, C.NOM_COR AS Nome_Cor,
  LTRIM(RTRIM(CAST(F.COD_PRODUTO AS VARCHAR2(100)))) || ''.'' || LTRIM(RTRIM(CAST(F.COD_BASE AS VARCHAR2(100)))) AS Id_Base,
  B.COD_EMBALAGEM AS Id_Emb, F.COD_PRODUTO AS Id_Linha, 0 AS ExigeFundoLoc, F.COD_COLORANTE AS Cod_Corante,
  F.QTDE AS Qtd_Corante, EMB.VOLUME AS Nominal, EMB_BASE.VOLUME AS NominalBase, C.Situacao
  FROM  SUV_CORES_COLORANTES F
  RIGHT JOIN SUV_BASES B ON  F.COD_PRODUTO = B.COD_PRODUTO AND F.COD_BASE = B.COD_BASE
  INNER JOIN SUV_EMBALAGENS EMB ON B.COD_EMBALAGEM = EMB.COD_EMBALAGEM
  INNER JOIN SUV_EMBALAGENS EMB_BASE ON F.COD_EMBALAGEM = EMB_BASE.COD_EMBALAGEM
  INNER JOIN SUV_CORES  C ON F.COD_GRUPO = C.COD_GRUPO AND F.COD_PRODUTO = C.COD_PRODUTO AND F.COD_COR = C.COD_COR  
  join EmbalagemFormula ef1 on cast(ef1.CodEmbalagemExterno as int) = B.COD_EMBALAGEM
  join componenteformula cf11 on cf11.codcomponenteexterno = cast(F.COD_PRODUTO as char(40))
  join componenteformula cf12 on cf12.codcomponenteexterno = cast(F.COD_GRUPO as char(40))
  join ComplementoProduto cp on cp.codembalagem = ef1.codembalagem AND cp.codcomponente = cf11.codcomponente AND cp.codcolecao = cf12.codcomponente
  WHERE ef1.sistematintometrico = 31983  AND cf11.sistematintometrico = 31983
  AND cf12.sistematintometrico = 31983 AND cp.tipocomponente = ''P'' ' || cFiltroInativo || cFiltroProdutos ||
  'ORDER BY F.COD_GRUPO, F.COD_PRODUTO, F.COD_COR, B.COD_EMBALAGEM';

  SELECT COUNT(1) INTO nCount FROM USER_TABLES WHERE Upper(TABLE_NAME) = 'TMPCURFORMULAS';
  IF nCount > 0 THEN
    EXECUTE IMMEDIATE 'DROP TABLE TMPCURFORMULAS';  
  END IF;

  EXECUTE IMMEDIATE cComando;

  END IMPORTACAOTINTOMETRICO;
/

/*------ ATD 378572 ------*/
DECLARE v_count NUMBER:=0;

BEGIN
	SELECT Count(1) INTO v_count FROM USER_TABLES WHERE UPPER(table_name) = 'SUV_CORES_COLORANTES';
	IF v_count = 0 THEN
		EXECUTE IMMEDIATE 'CREATE TABLE SUV_CORES_COLORANTES (
			COD_GRUPO DECIMAL(4,0),
			COD_PRODUTO DECIMAL(8,0),
			COD_BASE DECIMAL(4,0),
			COD_EMBALAGEM DECIMAL(2,0),
			COD_COR DECIMAL(8,0),
			COD_COLORANTE DECIMAL(4,0),
			QTDE DECIMAL (10,2) )';
	END IF;
	SELECT Count(1) INTO v_count FROM USER_TABLES WHERE UPPER(table_name) = 'SUV_BASES';
	IF v_count = 0 THEN
		EXECUTE IMMEDIATE 'CREATE TABLE SUV_BASES (
			COD_PRODUTO DECIMAL(8,0),
			COD_BASE DECIMAL(4,0),
			COD_EMBALAGEM DECIMAL(2,0) )';
	END IF;
	SELECT Count(1) INTO v_count FROM USER_TABLES WHERE UPPER(table_name) = 'SUV_EMBALAGENS';
	IF v_count = 0 THEN
		EXECUTE IMMEDIATE 'CREATE TABLE SUV_EMBALAGENS (
			COD_EMBALAGEM DECIMAL(2,0),
			VOLUME DECIMAL(16,5) )';
	END IF;
	SELECT Count(1) INTO v_count FROM USER_TABLES WHERE UPPER(table_name) = 'SUV_CORES';
	IF v_count = 0 THEN
		EXECUTE IMMEDIATE 'CREATE TABLE SUV_CORES (
			COD_GRUPO DECIMAL(4,0),
			COD_PRODUTO DECIMAL(8,0),
			COD_COR DECIMAL(8,0),
			NOM_COR	VARCHAR(100),
			SITUACAO VARCHAR(1) )';
	END IF;
END;
/

 CREATE OR REPLACE PROCEDURE IMPORTACAOTINTOMETRICO (pInativo IN CHAR, pListaProdutos IN VARCHAR2)
  IS              
  cFiltroInativo varchar2(50); cFiltroProdutos varchar2(4000); cComando varchar2(4000); nCount INT;
  BEGIN
  IF pInativo = 'S' THEN
    cFiltroInativo := '';
  ELSE
    cFiltroInativo := ' AND C.SITUACAO = ''A''';
  END IF;
  IF rtrim(ltrim(pListaProdutos)) <> '' THEN
    cFiltroProdutos := 'AND CP.CODPRO IN (' || pListaProdutos || ') ';
  ELSE
    cFiltroProdutos := '';
  END IF;

  cComando := 'CREATE TABLE TMPCURFORMULAS AS SELECT F.COD_GRUPO AS Id_Colecao, F.COD_COR AS Id_Cor, C.NOM_COR AS Nome_Cor,
  LTRIM(RTRIM(CAST(F.COD_PRODUTO AS VARCHAR2(100)))) || ''.'' || LTRIM(RTRIM(CAST(F.COD_BASE AS VARCHAR2(100)))) AS Id_Base,
  B.COD_EMBALAGEM AS Id_Emb, F.COD_PRODUTO AS Id_Linha, 0 AS ExigeFundoLoc, F.COD_COLORANTE AS Cod_Corante,
  F.QTDE AS Qtd_Corante, EMB.VOLUME AS Nominal, EMB_BASE.VOLUME AS NominalBase, C.Situacao
  FROM  SUV_CORES_COLORANTES F
  RIGHT JOIN SUV_BASES B ON  F.COD_PRODUTO = B.COD_PRODUTO AND F.COD_BASE = B.COD_BASE
  INNER JOIN SUV_EMBALAGENS EMB ON B.COD_EMBALAGEM = EMB.COD_EMBALAGEM
  INNER JOIN SUV_EMBALAGENS EMB_BASE ON F.COD_EMBALAGEM = EMB_BASE.COD_EMBALAGEM
  INNER JOIN SUV_CORES  C ON F.COD_GRUPO = C.COD_GRUPO AND F.COD_PRODUTO = C.COD_PRODUTO AND F.COD_COR = C.COD_COR  
  join EmbalagemFormula ef1 on cast(ef1.CodEmbalagemExterno as int) = B.COD_EMBALAGEM
  join componenteformula cf11 on cf11.codcomponenteexterno = cast(F.COD_PRODUTO as char(40))
  join componenteformula cf12 on cf12.codcomponenteexterno = cast(F.COD_GRUPO as char(40))
  join ComplementoProduto cp on cp.codembalagem = ef1.codembalagem AND cp.codcomponente = cf11.codcomponente AND cp.codcolecao = cf12.codcomponente
  WHERE ef1.sistematintometrico = 31983  AND cf11.sistematintometrico = 31983
  AND cf12.sistematintometrico = 31983 AND cp.tipocomponente = ''P'' ' || cFiltroInativo || cFiltroProdutos ||
  'ORDER BY F.COD_GRUPO, F.COD_PRODUTO, F.COD_COR, B.COD_EMBALAGEM';

  SELECT COUNT(1) INTO nCount FROM USER_TABLES WHERE Upper(TABLE_NAME) = 'TMPCURFORMULAS';
  IF nCount > 0 THEN
    EXECUTE IMMEDIATE 'DROP TABLE TMPCURFORMULAS';  
  END IF;

  EXECUTE IMMEDIATE cComando;

  END IMPORTACAOTINTOMETRICO;
/
