solucaoonlinedelicitacao / sol-api Goto Github PK
View Code? Open in Web Editor NEWLicense: GNU Affero General Public License v3.0
License: GNU Affero General Public License v3.0
Olá,
A fim de usar o padrão de códigos de cidades do SOL da Bahia e do Rio Grande do Norte, gostaria de ter acesso ao arquivo AR_BR_MUN_2018.csv
que não está no repositório mas é requisitado na task setup:cities:load
como informado no Manual Técnico Ruby on Rails, página 8 ou que informem se não seguem um padrão e que podemos adotar qualquer lista de cidades (no nosso caso, usamos a lista de municípios do IBGE).
sol-api/lib/tasks/setup/cities.rake
Line 10 in a4430c6
Luiz Nery
Analista de Sistemas - SDA-Ceará
Foi percebido hoje um problema na geração dos contratos de obras que impacatam na celabração do contrato entre as partes. Alguns textos não foram substituídos corretamente e o contrato gerado precisará ser gerado novamente.
Arquivo de configuração com informações de desnevolvimento:
Line 39 in a4430c6
Creio que o certo serianão versionar o arquivo config/sol.yml, pois o mesmo será utilizado com conteúdos diferentes pelos entes usuários do sol (atualmente BA e RN). @dpedoneze @herculesaquino qual a opnião dos senhores?
Exibição do número do convêncio ou invés do número do CNPJ:
Exemplo de contrato gerado:
Há a necessidade de alterar também a listagem das empresas que enviaram proposta, pois empresas com proposta em rascunho não devem aparecer na lista de empresas que enviaram proposta.
Originally posted by @yusser in #6 (comment)
Conforme demonstrado nos vídeos enviados préviamente foi identificado um problema na utilização da funcionalidade que envolve o cadastro/atualização via planilha.
Ao entrar no módulo admin com a senha de administrador, acessar o menu Convênios, selecionar qualquer convênio, clicar em qualquer grupo do plano de trabalho o sistema deveria exibir a lista de itens. Porém, a tela não abre, percebi que a api retorna o JSON com dados e que o console não reporta nenhum erro.
A biblioteca externa (gem) que formata um valor inteiro para extenso, por exemplo "99" para "noventa e nove reais" está dando o erro indicado na imagem acima.
=> valor deve ser um inteiro entre 1 e 999999999 (recebido: '6066666668940125')
Uma das propostas realmente está com o valor bem alto, acima de 999999999.
Ao recusar uma licitação ela não volta para associação como rascunho. Ela continua aguardando liberação.
Obs.: As imagens abaixo estão em ordem cronológica.
A imagem acima mostra que o status foi para rascunho após realização a ação de recusar.
Ao recarregar a página a licitação permance como aguardando liberação.
Para o tipo de modalidade "Convite Fechado" não deverá ser mais enviado Notificação para os fornecedores e as licitações criadas com essa modalidade não deverão ser visualizadas para quem não recebeu convite.
Ou seja, as licitações do tipo de modalidade "Convite Fechado" só deverão ser visualizadas para os fornecedores que foram convidados.
Atualmente não é possível salvar um item mesmo que o mesmo não tenha sido modificado, por causa da validação abaixo:
class Item < ApplicationRecord
validate :item_modification, if: :lot_group_items_in_use?
private
def lot_group_items_in_use?
bidding_by_lot_group_items.not_draft.any?
end
end
O correto é que o item que esteja em utilização só não possa ser salvo caso o atributo title
, description
ou unit_id
tenha sido alterado, uma vez que essas alterações podem gerar inconsistências nas licitações as quais eles estão inseridos.
Foi percebido que ao excluir (cancelar) uma licitação os itens incluídos nela não ficavam disponíveis novamente.
No dia 23/03/2020 foi reportado um erro ao tentar concluir uma licitação conforme vídeo a seguir.
video.zip
Aproveitei para capturar o log do entorno, pois pode nos ajudar a descobrir o que aconteceu. Suspeito que o problema seja na massa de dados, porém não consegui identificar.
Erro de comunicação com a blockchain:
Log do entorno:
1168.log
A licitação 3469/2020 foi criada com 4 lotes. Dois deles foram adjudicados (estão OK) e dois a empresa recusou a assinatura do contrato.
Após essa recusa esses contratos voltaram para a entidade. No lugar dela abriram uma nova licitação, ela aceitou a recusa e automaticamente os dois lotes foram para o status de "Em análise" e a licitação passou do status de "Concluída" para "Reaberta".
Como o preço das demais propostas estão acima do plano de trabalho a entidade resolveu recusar todas as propostas e o revisor aceitou a recusa.
Dessa forma, o processo está com a entidade, com um único botão disponível que é o de "Cancelar a licitação". O problema é que temos dois lotes ok e com os contratos assinados aguardando só a entrega.
Nesse caso o que fazer? Pois, acredito que se cancelar a licitação o status ficará "Cancelado", sendo que temos dois lotes OK. E dois que precisam de fato serem fracassados para que os itens voltem para o SOL e a entidade possa abrir uma nova licitação.
Ao tentar criar o lote contendo o item "Tablet" com id 647, o sistema retorna a seguinte mensagem de erro "Não foi possível criar o lote". Esta mensagem ocorre quando utilizamos o convênio 054718 para criar uma licitação, conforme imagem a seguir:
Verificamos o convênio e o item possui quantidade disponível e com isso deveria ser possível utilizá-lo para criar uma licitação, conforme imagem a seguir:
O que tem de diferente que pode está provando o erro mencionado acima? Verificamos que existem duas licitações deste convênio que utilizaram o item 647, são elas: [[461, "canceled"], [1045, "finnished"]], a seguir segue a query executada que retornou estas licitações:
Bidding.where('id in (?)', Lot.where('id in (?)', LotGroupItem.where('group_item_id in (?)', GroupItem.where('item_id in (?)', Item.where('title like ?', '%Tablet%').pluck(:id)).pluck(:id)).pluck(:lot_id)).pluck(:bidding_id)).where('covenant_id = ?', 392).pluck(:id, :status)
Verificamos que a licitação 1045 teve o lote adjudicado, a proposta foi aceita, porém o contrato foi dado como executado parcialmente, provavelmente foi um erro humano e o usuário deveria ter selecionado a opção inexecução total. Foi gerado o contrato 329/2020 e a empresa vencedora não teve interesse na venda o item Tablet.
Verificamos também licitação 461 com o status de cancelada e não acreditamos que ela seja a origem do problema, pois já tivemos vários exemplos que o cancelamento funcionou.
Sendo assim, temos dois pontos para discussão. O primeiro é se faz sentido um lote que tenha apenas um item com quantidade não divisível a exemplo do tablet, poder usar a opção "executado parcialmente"? No caso, deste lote, como só tem um item que a quantidade total é 1 (um) e depois de chamar a função de "execução parcial" o valor passou a ser 0 (zero), isso não significa que passou a ser uma inexecução total?
O segundo ponto a discutirmos é o erro apresentado. Acredito que a função de recálculo não tenha previsto este cenário e com isso não esteja permitindo adicionar este item novamente a licitação.
Log do erro capturado
log-erro-ao-criar-lote.txt
Banco de dados
Fiz um dump do banco e encaminhei por e-mail
Foi identificado que após a atualização de cadas decimais um erro passou a ocorrer no sistema que tem impedido alterar lotes de licitações.
Inicialmente foi verificado um possível bug na lista 51 deste arquivo.
Para mais detalhes do erro, favor verificar vídeo a seguir:
erro-ao-editar-lote.zip
Com o app da associação clicamos em um contrato assinado...
Depois em "ATUALIZAR CONTRATO"...
Depois selecionamos a opção "Executado Parcialmente" e clicamos em "Próximo"...
No formulário para informar a quantidade entregue colocamos a quantidade máxima em todos os itens...
Ao clicar clicar em "DEFINIR NOVA SITUAÇÃO" o app aceita.
Ao selecionar "Executado Parcialmente" o sistema permite o usuário informar que recebeu tudo, no exemplo acima se informar 5 de 5 no primeiro item, 5 de 5 no segundo item e clicarmos em "DEFINIR NOVA SITUAÇÃO" o sistema permite que a operação seja registrada. Porém, por mais que a situação mude para "Executado Parcialmente", na verdade, este contrato foi "Executado integralmente". Provavelmente, temos hoje no sistema contratos nesta situação.
Verificar se 100% dos itens que estão disponíveis para ser entregues foram informados como entregues e se verdade exibir mensagem para o usuário explicando o motivo da ação não ser permitida.
Licitação 3332/2020 está com alguns processos inconsistentes.
Existem alguns lotes em análise, quando todas as propostas já foram recusadas.
Segue perfil da Associação:
Vejamos algumas situações:
Propostas lote 3.
Todas recusadas.
Não deveria estar com o status Fracassado igual ao Lote 2?
Segue propostas Lote 2:
Lotes 4, 5, 6 na mesma situação. Lotes Em Análise sendo que todas as propostas estão Recusadas.
Diante disso o botão Concluir Licitação não está disponível, para seguir com a conclusão do Lote 1 adjudicado.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.