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', <id entrada> as entrada_id, quantidade, quantidade, valor, <id da uo>, m.id from neila.materiaisgestao n, materialconsumo m where n.material_id = cast(m.codigo as integer)