
-- StoreProcedure {produto_integra()} Versao {1} Esquema {padrao} Descricao {Grava integracao do produto}
-- ------------------------------------------------------------

CREATE OR REPLACE FUNCTION padrao.produto_integra()
  RETURNS trigger AS

 $BODY$

DECLARE
 --Variaveis
   count_precos                   bigint;
   lista                     integer;
   tabela1                   integer;
   tabela2                   integer;
   produtoId                     integer;
   r_parameters     RECORD; -- Parametros padrao do sistema
BEGIN



-- SE FOR UMA EXCLUSAO
   IF TG_OP = 'DELETE'  THEN
   -- DELETE  CONTAS A RECEBE/PAGAR
      --EXECUTE 'DELETE FROM ' || getesquema('pagar')||'.pagar WHERE cad_cadastro_id = '|| OLD.cad_cadastro_id ||'AND fatura = '|| OLD.fat_docto_c_controle ;
      RETURN NULL;
   END IF;



   SELECT *
   INTO r_parameters
   FROM fat_parameters
  LIMIT 1 ;



	     lista = CASE WHEN r_parameters.fatlistaprecopadrao IS NULL THEN 0 ELSE 1 END;
	     tabela1     = CASE WHEN r_parameters.fattabelavendapadrao     IS NULL THEN 0 ELSE 1     END;
	     tabela2 = CASE WHEN r_parameters.fattabelavendapadrao2 IS NULL THEN 0 ELSE 2 END;
		produtoId = CASE WHEN TG_OP = 'INSERT' THEN NEW.id ELSE OLD.id END;


   -- conta total de precos
   SELECT count(*)
     INTO count_precos
     FROM fat_produto_preco
    WHERE fat_produto_preco.fat_produto_id = produtoId;

	--RAISE NOTICE 'TOTAL PRECOS ENCONTRADOS:%', count_precos;
    IF count_precos = 0 THEN
		 --LOOP LISTA
    	 --RAISE NOTICE 'SALVANDO PRECO PADRAO PARA:%', produtoId;
	      EXECUTE 'INSERT INTO fat_produto_preco(fat_produto_id, fat_listapre_tabela_tabela_id
   	      , fat_listapre_tabela_fat_listapre_id, preco, filial_id) VALUES('|| produtoId || ',' || tabela1 || ','
   	       || lista || ',' || 0 || ',' || r_parameters.fatfilialpadrao||')';
   	         EXECUTE 'INSERT INTO fat_produto_preco(fat_produto_id, fat_listapre_tabela_tabela_id
   	      , fat_listapre_tabela_fat_listapre_id, preco, filial_id) VALUES('|| produtoId || ',' || tabela2 || ','
   	       || lista || ',' || 0 || ',' || r_parameters.fatfilialpadrao||')';
    END IF;


   RETURN NULL;
END;

$BODY$

LANGUAGE 'plpgsql' VOLATILE;

-- Gatilho {produto_integra()} Versao {001} Esquema {empresa} Descricao {Grava integracao do produto }
-- ------------------------------------------------------------

CREATE TRIGGER produto_integra AFTER INSERT OR UPDATE OR DELETE ON fat_produto
       FOR EACH ROW EXECUTE PROCEDURE padrao.produto_integra();
              
