sistemas:suap:patrimonio:importacaoinventario

IMPORTAÇÃO DE INVENTÁRIOS PARA O SUAP - MÓDULO PATRIMÔNIO

Para o lançamento de bens cujo número de tombamento for inferior à 500000

Os bens entrarão no sistema como DOAÇÂO, pois caso sejam lançado como compra o processo de importação será muito complexo e demorado por necessitar de dados adicionados e que talvez não sejam obtidos com a celeridade necessária.

Os campi que podem receber carga possuem um "codigo_ug".
São eles:

idsetor idcodigo ugnomesigla
186158322CAMPUS ACARAUIFCE-ACARAÚ
492158323CAMPUS CANINDEIFCE-CANINDÉ
698158324CAMPUS CRATEUSIFCE-CRATEÚS
838158313CAMPUS FORTALEZAIFCE-FORTALEZA
94158133REITORIAIFCE-REITORIA
1050158320CAMPUS IGUATUIFCE-IGUATU
1262158314CAMPUS LIMOEIRO DO NORTEIFCE-LIMOEIRO
1474158315CAMPUS QUIXADAIFCE-QUIXADÁ
1580158317CAMPUS SOBRALIFCE-SOBRAL
26191158318CAMPUS CEDROIFCE-CEDRO
28192158319CAMPUS MARACANAÚIFCE-MARACANAÚ
30194158316CAMPUS JUAZEIRO DO NORTEIFCE-JUAZEIRO
32196158321CAMPUS CRATOIFCE CRATO
33112158958CAMPUS ARACATIIFCE-ARACATI
35124158951CAMPUS BATURITEIFCE-BATURITÉ
37122158961CAMPUS CAMOCIMIFCE-CAMOCIM
39321158960CAMPUS CAUCAIAIFCE-CAUCAIA
41532158955CAMPUS JAGUARIBEIFCE-JAGUARIBE
42533158954CAMPUS MORADA NOVAIFCE-MORADA
44534158953CAMPUS TABULEIROIFCE-TABULEIRO
46126158952CAMPUS TAUAIFCE-TAUÁ
48120158956CAMPUS TIANGUAIFCE-TIANGUÁ
50118158959CAMPUS UBAJARAIFCE-UBAJARA
52649158957CAMPUS UMIRIMIFCE-UMIRIM
select id, setor_id, codigo_ug, nome, sigla 
from unidadeorganizacional 
where trim(codigo_ug) != ''
order by id asc;
idnome
1consumo
2permanente
select id, nome from materialtipo;

Para cada campus, deve ser aberto um processo no módulo de Protocolo um processo. O número gerado será associado ao processo de importação dos bens do Patrimônio.


ArquivoLink para download
Planilha de importação de bens patrimoniais.
Atualizada em: 15/07/16.
planilha_importacao_bens.xls

IMPORTANTE:

  • Não devem ser alteradas a ordem das colunas da planilha.
  • Todas as colunas devem ser obrigatoriamente preenchidas. Não podem ser importados bens com dados incompletos.
  • Algumas abas e células estão protegidas contra edição. A senha de desbloqueio está no KEEPASS. Olhar o grupo “[SUAP/BENS] PLANILHA DE IMPORTAÇÃO”, opção “Senha da planilha”. Não repassar ao usuário esta planilha desbloqueada para melhor garantir o correto preenchimento da mesma.

coluna da planilhadescrição
tombamento número de tombamento.
É necessário o repasse correto desta numeração.
Não será possível a importação de bens cujo número de tombamento seja ilegível.
descrição descrição detalhada do bem
quantidade deve ser obrigatoriamente 1, pois eles serão importados individualmente.
Há um validador na planilha que impede um valor distinto seja inserido
valor valor do bem, sem o símbolo R$, e utilizando vírgula para separar as casas decimais
siape matrícula SIAPE do servidor.
nomeresponsavel nome do servidor que detém a carga.
Trata-se de uma caixa de seleção com o nome do servidor, devendo ser escolhida uma opção.
Muita atenção para informar a matrícula SIAPE do servidor corretamente.
As matrículas podem ser consultados na aba “servidor” da planilha.
cnpj do fornecedor número do CNPJ do fornecedor.
É obrigatório que o CNPJ do fornecedor este conforme cadastrado no SUAP.
Devem ser utilizadas as máscaras com ponto, barra e hífen, no formato '71.139.471/0001-23 . Para consultar os dados dos fornecedores, acesse: http://www.receita.fazenda.gov.br/pessoajuridica/cnpj/cnpjreva/cnpjreva_solicitacao.asp
nome do fornecedor É obrigatório que o nome do fornecedor esteja exatamente como cadastrado no SUAP. Para consultá-los, acesse o SUAP e clique em ADMINISTRAÇÃO → Cadastros → Pessoa Jurídica, ou através do link: http://suap.ifce.edu.br/admin/rh/pessoajuridica/ . Caso o fornecedor não exista, ele deve ser cadastrado.
número da nota fiscalnúmero da nota fiscal
data da nota fiscaldata da nota fiscal.
A data deve ser fornecida no formato dia/mes/ano (por exemplo: 01/01/2015)
estado do bem escolher uma das opções da caixa de seleção, sendo elas: bom, ocioso, recuperavel, antieconomico e irrecuperavel
categoria escolher uma das opções da caixa de seleção.
Deve-se escolher uma das opções apresentadas, sendo estas no formato “4490.XX.XX”.
As descrições da categoria podem ser consultadas aqui:

Antes de efetuar os procedimentos abaixo, recomenda-se realizar o backup do banco para se prevenir contra falhas após a execução deste processo.
Recomenda-se também que este processo seja feito em um ambiente local (computador do desenvolvedor) e, se estiver OK, reproduzir o passo-a-passo em produção.

Digitar o código abaixo no Pgadmin.

CREATE SCHEMA migracaopatrim;
COMMENT ON SCHEMA migracaopatrim IS 'Schema utilizado na importação de bens patrimoniais do SUAP';

Aperte F5 no PgAdmin para ver o schema.

Digitar o código abaixo no PgAdmin.

CREATE TABLE migracaopatrim.bens
( 
  tombamento character varying,
  descricao character varying,
  quantidade character varying,
  valor character varying,
  siape character varying,
  responsavel character varying,
  cnpjfornecedor character varying,
  fornecedor character varying,
  notafiscal character varying,
  datanotafiscal character varying,
  estadobem character varying,
  categoria character varying
);

comment on column migracaopatrim.bens.tombamento is 'numero do tombamento do bem';
comment on column migracaopatrim.bens.descricao is 'descricao do bem';
comment on column migracaopatrim.bens.quantidade is 'quantidade do bem';
comment on column migracaopatrim.bens.valor is 'valor do bem';
comment on column migracaopatrim.bens.siape is 'matricula SIAPE de quem possui a carga do bem';
comment on column migracaopatrim.bens.responsavel is 'responsavel pela carga do bem';
comment on column migracaopatrim.bens.cnpjfornecedor is 'CNPJ do fornecedor';
comment on column migracaopatrim.bens.fornecedor is 'Fornecedor do bem';
comment on column migracaopatrim.bens.notafiscal is 'Numero da nota fiscal';
comment on column migracaopatrim.bens.datanotafiscal is 'Data da nota fiscal';
comment on column migracaopatrim.bens.estadobem is 'Estado do bem: bom,ocioso,recuperavel,antieconomico,irrecuperavel';
comment on column migracaopatrim.bens.categoria is 'Categoria do bem no formato 4490.XX.XX';

- Conferir se as colunas estão na ordem necessária;
- Editar a planilha preenchida para remover a primeira linha, que é o cabeçalho. É preciso constar somente os dados;
- Salvar a planilha editada.

- O ideal é fazer este processo pelo LibreOffice (evitar usar o Word).
- No LibreOffice: clique no menu Arquivo - Salvar como. Escolher a extensão “Texto CSV (.csv)”. - Selecionar as opções conforme ilustra a imagem:

- Abra o CSV no LibreOffice e confira para ver se as colunas estão OK.

- Acessar o PGAdmin
- Localizar a tabela 'migracaopatrim.bens'
- Clicar com o botão direito do mouse sobre a tabela 'migracaopatrim.bens' e selecionar a opção Import.
- Na próxima tela: selecionar o arquivo CSV. Deixar as opções conforme ilustra a imagem.

- Checar se a tabela 'migracaopatrim.bens' foi corretamente preenchida

Criar os campos abaixo para mapear para o SUAP.
Para isso, execute o código a seguir. Deve ser exibida a mensagem: “Query returned successfully”

alter table migracaopatrim.bens add column id serial;
alter table migracaopatrim.bens add column funcionario_ptr_id integer;
alter table migracaopatrim.bens add column categoria_id character varying;
alter table migracaopatrim.bens add column fornecedor_id integer;
alter table migracaopatrim.bens add column entrada_id integer;
alter table migracaopatrim.bens add column entradapermanente_id integer;
alter table migracaopatrim.bens add column inventario_id integer;

Atualizar a coluna 'funcionario_ptr_id' por meio do script abaixo. Deve ser exibida a mensagem: “Query returned successfully”

update migracaopatrim.bens 
set funcionario_ptr_id = (
    select serv.funcionario_ptr_id 
    from servidor serv
    where serv.matricula = siape
);

Devem ser conferir se as matrículas SIAPE foram cadastradas sem erros.
Comparar com o nome da planilha original e o próprio SUAP.
O código a seguir não deve retornar nenhum resultado. Se retornar, deve-se conferir se os dados dos servidores estão corretos.

select distinct siape 
from 
    migracaopatrim.bens 
where 
    siape is not null and funcionario_ptr_id is null;

Executar o código abaixo: Deve ser exibida a mensagem: “Query returned successfully”

update migracaopatrim.bens set categoria =  replace(categoria,' ','')

Executar o código abaixo: Deve ser exibida a mensagem: “Query returned successfully”

update migracaopatrim.bens 
set categoria_id = (
    select id 
    from categoriamaterialpermanente catperm
    where catperm.codigo = categoria
);

A consulta a seguir não deve retornar nenhum item sem categoria. Verificar possíveis erros no arquivo e devolver para correção.

select * from migracaopatrim.bens where categoria_id is null;

Executar o código abaixo: Deve ser exibida a mensagem: “Query returned successfully”

update migracaopatrim.bens set fornecedor_id = (
    select pessoa_ptr_id
    from pessoa_juridica 
    where cnpj = trim(cnpjfornecedor)
);

Checar se há fornecedores com dados pendentes. Caso haja, eles devem ser incluídos no SUAP.
Não podem ser retornados dados. Executar o código abaixo:

select distinct cnpjfornecedor, fornecedor 
from 
    migracaopatrim.bens 
where
    fornecedor_id is null and cnpjfornecedor is not null and cnpjfornecedor <> ' ';

Deve-se formatar o campo valor, retirando os pontos finais e trocando a vírgula por ponto. Deve ser exibida a mensagem: “Query returned successfully”

Executar o código abaixo:

update migracaopatrim.bens set valor=replace(valor,'.','');
update migracaopatrim.bens set valor=replace(valor,',','.');

Rodar script para gerar as entradas. Deve ser exibida a mensagem: “Query returned successfully”

CREATE OR REPLACE FUNCTION migracao_bens_patrimonio() 
RETURNS VOID as
$BODY$
DECLARE
  c_notafiscal text;
  c_datanotafiscal date;
  c_fornecedor_id INTEGER;
  c_entrada_id INTEGER;
  c_categoria_id INTEGER;
  c_descricao TEXT;
  c_quantidade FLOAT;
  c_valor FLOAT;
  c_entradapermanente_id INTEGER;
  c_tombo INTEGER;
  c_busca TEXT;
  c_funcionario INTEGER;
  c_inventario_id INTEGER;
  c_estadobem text;
 
  --cursor entradas
  cursor_entradas CURSOR FOR select distinct 
                                 notafiscal,
                                 to_date(datanotafiscal,'dd/mm/yyyy') as datanotafiscal,
                                 fornecedor_id
			     from migracaopatrim.bens
                             where fornecedor_id is not null 
                             and entrada_id is null;
 
  --cursor entradas permanente
  cursor_entrada_permanente CURSOR FOR select entrada_id, 
                                              categoria_id, 
                                              descricao, 
                                              CAST(quantidade AS integer) as quantidade, 
                                              cast(valor as float) as valor
				       from migracaopatrim.bens
                                       where entrada_id is not null 
                                       and categoria_id is not null 
                                       and entradapermanente_id is null;
 --cursor inventario
  cursor_inventario CURSOR FOR select tombamento, 
                                      entradapermanente_id,
                                      tombamento||' '||descricao as busca,
                                      funcionario_ptr_id,
                                      estadobem
                               from migracaopatrim.bens
                               where entrada_id is not null 
                               and categoria_id is not null 
                               and entradapermanente_id is not null 
                               and inventario_id is null;

 --cursor movimento
  cursor_movimento CURSOR FOR select inventario_id, 
                                     funcionario_ptr_id,
                                     entradapermanente_id
                               from migracaopatrim.bens
                               where inventario_id is not null;
BEGIN
   OPEN cursor_entradas;
      --
      LOOP
        FETCH cursor_entradas INTO c_notafiscal, c_datanotafiscal, c_fornecedor_id;
        EXIT WHEN NOT FOUND;
           insert into entrada
           (data, uo_id, tipoentrada_id, tipomaterial_id, numeronotafiscal, datanotafiscal, pessoa_id)
	   values
	   (now(), 42, 2, 2, c_notafiscal, c_datanotafiscal, c_fornecedor_id);

           SELECT MAX(id) 
           INTO c_entrada_id
           FROM entrada;

           UPDATE migracaopatrim.bens 
           SET entrada_id = c_entrada_id
           WHERE notafiscal = c_notafiscal
           AND fornecedor_id = c_fornecedor_id;          
      END LOOP;
      --
  CLOSE cursor_entradas;

  OPEN cursor_entrada_permanente;
      --
      LOOP
        FETCH cursor_entrada_permanente INTO c_entrada_id, c_categoria_id, c_descricao, c_quantidade, c_valor;
        EXIT WHEN NOT FOUND;
           insert into entradapermanente
           (entrada_id, categoria_id, descricao, qtd, valor)
	   values
	   (c_entrada_id, c_categoria_id, c_descricao, c_quantidade, c_valor);

           SELECT MAX(id)
           INTO c_entradapermanente_id
           FROM entradapermanente;

           UPDATE migracaopatrim.bens SET entradapermanente_id = c_entradapermanente_id
           WHERE entrada_id = c_entrada_id;
      END LOOP;
      --
  CLOSE cursor_entrada_permanente;

  OPEN cursor_inventario;
      --
      LOOP
        FETCH cursor_inventario INTO c_tombo, c_entradapermanente_id, c_busca, c_funcionario, c_estadobem;
        EXIT WHEN NOT FOUND;
         BEGIN
	   insert into inventario
	   (numero, status_id, numeroserie, entradapermanente_id, campo_busca, responsavel_id, estado_conservacao, sala_id)
  	   values 
  	   (c_tombo, 2,'', c_entradapermanente_id, c_busca, c_funcionario, c_estadobem, null);

  	 EXCEPTION WHEN unique_violation THEN
            -- Do nothing, and loop to try the UPDATE again.
         END;            
      END LOOP;
      --
  CLOSE cursor_inventario;
  
  update migracaopatrim.bens 
  SET inventario_id = (
      select id 
      from inventario 
      where numero = cast(tombamento as integer)
  );
  
  OPEN cursor_movimento;
      --
      LOOP
        FETCH cursor_movimento INTO c_inventario_id, c_funcionario, c_entradapermanente_id;
        EXIT WHEN NOT FOUND;
	  insert into movimentopatrim
	  (usuario_id, inventario_id, tipo_id, pessoa_id, entradapermanente_id, data)
          values
          (66, c_inventario_id, 2, c_funcionario, c_entradapermanente_id, now());
      END LOOP;
            
  CLOSE cursor_movimento;
End; $BODY$
language 'plpgsql';

Para executar, digite:

select migracao_bens_patrimonio();

Checar se os bens foram importados corretamente usando a url:

/patrimonio/inventario/<numero_tombo>/

Ex:

suap.ifce.edu.br/patrimonio/inventario/331959/

  • sistemas/suap/patrimonio/importacaoinventario.txt
  • Última modificação: 2021/08/25 10:33
  • (edição externa)