// Essa tela tem alguns problemas de performance, o cód abaixo foi colocado aqui no intuito de não repetir a mesma lógica // para cada item da lista. Devido a esse problema as consultas estavão demorando muito - if @pedido.projeto && @pedido.projeto.global? - fornecedores_com_todos_os_itens_cotados = @pedido.fornecedores_com_todos_os_itens_cotados - pessoa_do_pedido_menor_cotacao = fornecedores_com_todos_os_itens_cotados.sort_by { |fornecedor| fornecedor.total_da_cotacao }.first if !fornecedores_com_todos_os_itens_cotados.nil? && !fornecedores_com_todos_os_itens_cotados.empty? - soma_do_valor_total_global = 0 - if item_ativo == true - if @pedido.itens_do_pedido.por_preco.por_unidade_com_quantidade.where(valido: true).any? && ( @pedido.contem_itens_por_preco_e_desconto_ao_mesmo_tempo? || @pedido.contem_itens_por_quantidade_e_por_valor? ) legend strong Itens por Preço e por Quantidade .table-responsive table.table.table-hover.font-small thead tr th width="#{@pedido.projeto_simplificado.present? ? '60%' : '40%'}" Item th width="80px" Qtd. - if @pedido.possui_periodicidade_nos_itens? th Periodicidade th width="80px" Qtd. Geral (Consolidada) - if item_ativo && @pedido.projeto_simplificado.blank? th width="120px" Menor Preço th width="120px" Valor Total (Menor Preço) th width="120px" Preço Médio th width="120px" Valor Total (Preço Médio) - if @pedido.coleta_de_preco? - if esta_autorizado?(:anular_item) th width="70px" Anular - elsif @pedido.projeto_simplificado.present? th width="120px" Preço Estimativo th width="80px" Marca - unless @pedido.fechado? || @pedido.projeto_gerado? - if esta_autorizado?(:anular_item) th width="70px" Anular tbody - @pedido.itens_do_pedido.por_preco.quantidade_maior_que_zero.where(valido: true).order(:id).each do |item_do_pedido| tr td = item_do_pedido.item.try(:codigo_descricao_unidade_codigo_da_prefeitura) td = item_do_pedido.quantidade_por_unidade_orcamentaria_sem_periodicidade(@pedido.unidade_orcamentaria_id).try(:valor, precision: 2) - if @pedido.possui_periodicidade_nos_itens? td = item_do_pedido.periodicidade_e_unidade_de_medida td.bold = item_do_pedido.quantidade_total_requisitada_sem_periodicidade.try(:valor, precision: 2) - if item_ativo & @pedido.projeto_simplificado.blank? td align="left" = item_do_pedido.menor_preco.to_f.valor_financeiro td align="left" = item_do_pedido.menor_total.to_f.valor_financeiro - soma_do_valor_total_global = soma_do_valor_total_global.to_d + item_do_pedido.menor_total.to_d td align="left" = item_do_pedido.preco_medio.to_f.valor_financeiro td align="left" = item_do_pedido.total_medio.to_f.valor_financeiro - elsif @pedido.projeto_simplificado.present? td align="left" = item_do_pedido.preco_estimativo.to_f.valor_financeiro td align="left" = item_do_pedido.try(:marca) - if item_do_pedido.valido && esta_autorizado?(:anular_item) && item_do_pedido.pode_ser_anulado? td = link_to motivo_anular_item_licitacao_pedido_path(@pedido.id, item_do_pedido), class: "btn btn-danger btn-sm icone-anular" do span Anular - if item_ativo && @pedido.projeto_simplificado.blank? tr td colspan="4" b TOTAL td align="left" b - if @pedido.projeto && @pedido.projeto.global? = soma_do_valor_total_global.to_d.valor_financeiro - else = @pedido.total_menor_cotacao_itens_por_quantidade.to_f.real_contabil td td align="left" b = @pedido.cotacao_media_dos_itens_por_quantidade.to_f.real_contabil - unless @pedido.fechado? || @pedido.projeto_gerado? td - elsif @pedido.projeto_simplificado.present? tr td colspan="3" b TOTAL td align="left" -if @pedido.projeto_simplificado? && item_ativo b = @pedido.total_de_cotacao_projeto_simplificado.to_f.real_contabil - elsif item_ativo b = @pedido.total_menor_cotacao_itens_por_quantidade.to_f.real_contabil - else b = @pedido.total_itens_anulados.to_f.real_contabil td - if item_ativo == false && @pedido.itens_do_pedido.por_preco.where(valido: false).count != 0 - if @pedido.contem_itens_por_preco_e_desconto_ao_mesmo_tempo? || @pedido.contem_itens_por_quantidade_e_por_valor? legend strong Itens por Preço .table-responsive table.table.table-hover.font-small thead tr th width="#{@pedido.projeto_simplificado.present? ? '60%' : '40%'}" Item th width="80px" Qtd. - if @pedido.possui_periodicidade_nos_itens? th Periodicidade th width="80px" Qtd. Geral (Consolidada) - if item_ativo && @pedido.projeto_simplificado.blank? th width="120px" Menor Preço th width="120px" Valor Total (Menor Preço) th width="120px" Preço Médio th width="120px" Valor Total (Preço Médio) - if @pedido.coleta_de_preco? - if esta_autorizado?(:anular_item) th width="70px" Anular - elsif @pedido.projeto_simplificado.present? th width="120px" Preço Estimativo th width="80px" Marca tbody - @pedido.itens_do_pedido.por_preco.por_unidade_com_quantidade.where(valido: false).order(:id).each do |item_do_pedido| tr td = item_do_pedido.item.try(:codigo_descricao_unidade_codigo_da_prefeitura) td = item_do_pedido.quantidade_por_unidade_orcamentaria_sem_periodicidade(@pedido.unidade_orcamentaria_id).try(:valor, precision: 2) - if @pedido.possui_periodicidade_nos_itens? td = item_do_pedido.periodicidade_e_unidade_de_medida td.bold = item_do_pedido.quantidade_total_requisitada_sem_periodicidade.try(:valor, precision: 2) - if item_ativo & @pedido.projeto_simplificado.blank? td align="left" = item_do_pedido.menor_preco.to_f.valor_financeiro td align="left" = item_do_pedido.menor_total.to_f.valor_financeiro td align="left" = item_do_pedido.preco_medio.to_f.valor_financeiro td align="left" = item_do_pedido.total_medio.to_f.valor_financeiro - elsif @pedido.projeto_simplificado.present? td align="left" = item_do_pedido.preco_estimativo.to_f.valor_financeiro td align="left" = item_do_pedido.try(:marca) - unless item_do_pedido.valido? td align="left" = "Item Anulado".html_safe - if item_ativo && @pedido.projeto_simplificado.blank? tr td colspan="4" b TOTAL td align="left" b - if @pedido.projeto && @pedido.projeto.global? = soma_do_valor_total_global.to_d.valor_financeiro - else = @pedido.menor_cotacao_dos_itens.to_f.real_contabil td td align="left" b = @pedido.cotacao_media_dos_itens_por_quantidade.to_f.real_contabil - unless @pedido.fechado? || @pedido.projeto_gerado? td - elsif @pedido.projeto_simplificado.present? tr td colspan="3" b TOTAL td align="left" - if item_ativo b = @pedido.menor_cotacao_dos_itens.to_f.real_contabil - else b = @pedido.total_itens_anulados.to_f.real_contabil td