1) Criar schema [nome_esquema], que no caso deixei neila e tabela materiasgestao: CREATE TABLE neila.materiaisgestao ( descricao character varying, codigo_contabil character varying, unidade character varying, quantidade numeric(12,2), valor numeric(12,2) ) WITH ( OIDS=FALSE ); ALTER TABLE neila.materiaisgestao OWNER TO postgres; 2) Ajustar planilha enviada deixando colunas na ordem: DESCRICAO, COD_CONTABIL, UNIDADE, QUANTIDADE, VALOR * Limpar formatação coluna VALOR, caso esta venha com símbolo moeda R$ * Formatar colunas quantidade e valor para Número-> Geral -> Idioma Inglês(EUA) (para trocar o decimal , por .) * Remover cabeçalhos deixar só as colunas * Salvar planilha como CSV 3) No Postgres, vá no schema e em cima do nome da tabela criada clicar com botão direito ->Importar-> Indicar o filename e o formato mudar para CSV, clicar em done 4) Incluir as colunas alter table neila.materiaisgestao add column id serial; alter table neila.materiaisgestao add column categoria_id character varying; alter table neila.materiaisgestao add column unidade_id integer; alter table neila.materiaisgestao add column material_id integer; 4) Atualizar campo categoria_id na tabela materiaisgestao: * Rodar script abaixo: update neila.materiaisgestao set categoria_id = (select id from categoriamaterialconsumo where codigo_contabil = codigo ) where codigo_contabil like '3390.30%'; select * from neila.materiaisgestao where categoria_id is null; Essa consulta não deve retornar nenhum item sem categoria, verificar possíveis erros no arquivo. 5) Atualizar campo unidade_id na tabela materiaisgestao: 5.1) update neila.materiaisgestao set unidade_id = (select id from unidademedida where nome = unidade ); 5.2) select distinct unidade from neila.materiaisgestao where unidade_id is null; Verificar se esse último select retorna alguma coisa, caso sim, é porque o arquivo tem alguma unidade com descrição diferente das unidades de medida do SUAP. Atualizar a tabela neila.materiaisgestao para a unidade de medida correspondente, no caso mudar de UND para UN, conforme abaixo: 5.3) update neila.materiaisgestao set unidade = 'UN' where unidade = 'UND'; Rodar os scripts 5.1 e 5.2 6) Verificar materiais update neila.materiaisgestao set material_id = (select id from materialconsumo where nome = descricao); Rodar script p/ criar função migracao_materiais : Create or Replace FUNCTION migracao_materiais() RETURNS VOID as $BODY$ DECLARE c_id INTEGER; c_categoria_id INTEGER; c_material_id INTEGER; c_unidade_id INTEGER; c_descricao TEXT; --cursor cursor_materiais CURSOR FOR select id,categoria_id, unidade_id, descricao from neila.materiaisgestao where material_id is null and codigo_contabil like '3390.30%'; Begin OPEN cursor_materiais; -- LOOP FETCH cursor_materiais INTO c_id, c_categoria_id, c_unidade_id,c_descricao; EXIT WHEN NOT FOUND; SELECT id into c_material_id FROM materialconsumo WHERE nome = c_descricao; IF c_material_id IS NULL THEN insert into materialconsumo(categoria_id, unidade_id, nome, codigo) VALUES (c_categoria_id, c_unidade_id, c_descricao, 'IMPORT'); SELECT MAX(id) INTO c_material_id FROM materialconsumo; UPDATE materialconsumo SET codigo = lpad(cast(c_material_id as text),6,'0'), search = lpad(cast(c_material_id as text),6,'0')||' '||c_descricao WHERE id = c_material_id; END IF; UPDATE neila.materiaisgestao SET material_id = c_material_id WHERE id = c_id; END LOOP; -- CLOSE cursor_materiais; End; $BODY$ language 'plpgsql'; Rodar script no Postgres: 6.2) select migracao_materiais(); 7) No SUAP criar processo (Requerimento), informando que será o processo de Migração, finalizar o mesmo. 8) Com usuário de Acaraú, incluir uma Entrada de Doação no Almoxarifado, Fornecedor: IFCE - Reitoria, Processo: número do processo criado. Guardar o id da entrada. (75) Pegar o id da uo e fazer as substituições: (1) 8.1) update neila.materiaisgestao set valor = 0 where valor is null; 8.2) insert into movimentoalmoxentrada(tipo_id, data, entrada_id, qtd, estoque, valor, uo_id, material_id) select 1 as tipo_id, '2014-03-17', as entrada_id, quantidade, quantidade, valor, , m.id from neila.materiaisgestao n, materialconsumo m where n.material_id = cast(m.codigo as integer)