= stylesheet_link_tag "patrimonio/requisicoes/tabela_requisicao" ol.breadcrumb li = link_to "Requisições Patrimoniais", patrimonio_requisicao_patrimonial_path(@requisicao_patrimonial), class: "link_breadcrumb" li.active Itens da Requisição .widget .widget-body = simple_form_for(@requisicao_patrimonial, url: patrimonio_atualiza_itens_em_lote_da_requisicao_path(@requisicao_patrimonial), html: { class: "form-vertical" }) do |f| = f.error_notification = f.error_notification message: f.object.errors[:base].to_sentence if f.object.errors[:base].present? .hidden#unidade_gestora_id = @requisicao_patrimonial.unidade_gestora_id .hidden#centro_de_custo_id = @requisicao_patrimonial.centro_de_custo_id .hidden#por_lote = @requisicao_patrimonial.tipo != "por_tombamento" ? 1 : 0 .form-group fieldset legend strong ' Editar Itens da Requisição .row = f.fields_for :itens_da_requisicao_patrimonial, @itens_requisicao do |item_da_requisicao| = render 'item_da_requisicao_em_lote_patrimonial_fields', f: item_da_requisicao .row .col-sm-12 = link_to_add_association ' Adicionar'.html_safe, f, :itens_da_requisicao_patrimonial, partial: 'item_da_requisicao_em_lote_patrimonial_fields', :"data-association-insertion-method" => "before", class: 'btn btn-primary btn-sm', id: 'btn-add-item-da-requisicao' .form-group h6 ' (*) Campos Obrigatórios .form-actions .row .col-sm-12 = f.submit "Salvar", class: "btn btn-primary" = link_to "Cancelar", patrimonio_requisicao_patrimonial_path(@requisicao_patrimonial), class: "btn btn-default" javascript: $(document).ready(function() { iniciaBuscas(); $('form').on('cocoon:after-insert', iniciaBuscas); $('form').on('cocoon:before-remove', function (e, removedItem) { $('input[data-autonumeric]', removedItem).val('0'); $('input[type="hidden"][id$="_item_id"]', removedItem).val('0'); }); }); function buscaQuantidadePorItemId() { var id = $(this).val() var linha = $(this).closest('.referencia') if ($(this).val() != undefined && $(this).val() != '') { $.ajax({ dataType: "json", url: `${root_url}base/itens/${id}.json`, data: { unidade_gestora: $("#unid_origem").val(), centro_de_custos: $("#centro_origem").val() }, beforeSend: function () { LoadingInterface("Aguarde...") }, success: function(data) { $(".quantidade_disponivel", linha).val(data.quantidade_de_bens); }, error: function (xhr, ajaxOptions, thrownError) { console.log(xhr.status); console.log(thrownError); }, }); } else { $(".quantidade_disponivel", linha).val(''); }; } function buscaBensPorItemId(item_id, callback) { var unidade_id = $("#unid_origem").val(); var centro_id = $("#centro_origem").val(); $.ajax({ dataType: "json", url: `${root_url}pesquisas/${unidade_id}/${centro_id}/${item_id}/bens_patrimoniais_por_item.json`, beforeSend: function () { LoadingInterface("Aguarde...") }, success: function(data) { const bens = data; const valoresRetornados = bens.map(bem => { return { id: bem.id, numero_do_tombamento: bem.numero_do_tombamento, numero_do_tombamento_e_descricao: bem.numero_do_tombamento_e_descricao }; }); callback(valoresRetornados); }, error: function (xhr, ajaxOptions, thrownError) { console.log(xhr.status); console.log(thrownError); }, }); } function DefineQuantidadePorItemId(){ var linha = $(this).closest('.referencia') var quantidade = parseFloat($(this).val() || 0 ); var quantidade_disponivel = ($(".quantidade_disponivel", linha).val() || 0 ); var item_id = $('.item', linha).val(); var clique = $('#btn-add-bem-patrimonial', linha) if(quantidade > quantidade_disponivel){ $('#erro').show(); $("#campos_tabela", linha).hide(); } else { $('#erro').hide(); $("#campos_tabela", linha).show(); buscaBensPorItemId(item_id, function(bens) { botaoClicavelParaBens(clique, bens); }); } } function botaoClicavelParaBens(botao, bens){ var referencia = $(botao).closest('.referencia') var quantidade = parseFloat($('.quantidade_solicitada', referencia).val() || 0 ); var quantidade_anterior = $('.bem_por_item', referencia).length; var quantidade_real = (quantidade - quantidade_anterior); for(i = 0; i < quantidade_real; i++) { botao.click(); } preencheComboEspecifico(referencia, bens); } function preencheComboEspecifico(referencia, bens){ $(".bem_por_item", referencia).each(function (e){ if ($(this).val() != undefined && $(this).val() != ''){ }else{ limpaSelectBox($(this)); $.each(bens, function (i, bem) { option = new Option(bem.numero_do_tombamento_e_descricao, bem.id, true, true); select_box.append(option); }); populaSelectBox(select_box); } }); } function buscaPorBemId() { var linha = $(this).closest(".referencia_interna") var bemId = $("#bem_patrimonial_por_item", linha).val() var item = $("#item_da_requisicao_patrimonial_id", linha).val() var requisicao = $("#requisicao").val() if (bemId != undefined && bemId != ''){ $.getJSON(root_url + "patrimonio/bens_patrimoniais/" + bemId + ".json?requisicao=" + requisicao + "&item_id=" + item, function(dados) { $("#bem_erro", linha).show(); $(".bem_erro", linha).text(dados.unicidade_de_bem_por_item); }) }else{ $("#bem_erro", linha).hide(); } } function iniciaBuscas() { $('select.s2').select2(); $('select.s2-pesquisa').select2({ ajax: { url: `${root_url}pesquisas/itens_patrimonio`, dataType: 'json', delay: 500, data: function(params) { return { item_ou_tombamento: params.term, page: params.page || 1, por_lote: $("#por_lote").text(), unidade_gestora_id: $("#unidade_gestora_id").text(), centro_de_custo_id: $("#centro_de_custo_id").text(), }; }, processResults: function(data) { return { results: data.results, pagination: { more: data.pagination.more } }; }, cache: true }, placeholder: 'Selecione', minimumInputLength: 0, language: { errorLoading: function () { return "Carregando..."; } } }); $('.item').change(buscaQuantidadePorItemId); $('.quantidade_solicitada').change(DefineQuantidadePorItemId); $('#bem_patrimonial_por_item').change(buscaPorBemId); } function limpaSelectBox(id) { $(id).empty().trigger('change') select_box = $(id).select2({ placeholder: "Selecione", allowClear: true }) return (select_box); } function populaSelectBox(select_box) { select_box.prepend(new Option('Selecione', '', true, true)); select_box.trigger('change'); }