= simple_form_for(@cronograma_do_empenho, method: :post, url: atualizar_cronograma_empenho_path(@empenho)) do |f| = f.input :empenho_id, as: :hidden, input_html: { value: @empenho.id } .widget .widget-body legend strong | #{@cronograma_do_empenho.persisted? ? 'Atualizar' : 'Cadastrar' } Cronograma .row .col-sm-4 p#saldo_do_empenho data="#{@empenho.definir_valor_do_empenho}" span.bold Valor do Empenho: span#valor_do_empenho .row .col-sm-4 p span.bold Valor Distribuído: span#valor_distribuido .row .col-sm-4 p span.bold Valor a Distribuir: span#valor_a_distribuir .row .col-sm-12 = error_for @cronograma_do_empenho, :total .row .col-sm-3 = f.input :mes_inicial, label: 'Mês Inicial', collection: Contabilidade::CronogramaDoEmpenho.meses_iniciais_i18n, include_blank: 'Selecione', input_html: { class: 's2 mes_inicial' } .col-sm-3 = f.input :dia_do_reconhecimento, label: 'Dia do Reconhecimento', as: :string .row = f.fields_for :meses_do_cronograma_do_empenho, @meses_ordenados do |mes_do_cronograma_fields| .col-sm-3 = mes_do_cronograma_fields.input :mes, as: :hidden, input_html: {value: "#{mes_do_cronograma_fields.object.mes}"} = mes_do_cronograma_fields.input :valor, as: :string, label: mes_do_cronograma_fields.object.mes_i18n, input_html: { class: 'valor_monetario', id: "#{Contabilidade::CronogramaDoEmpenho.meses_iniciais[mes_do_cronograma_fields.object.mes]}" } .row .col-sm-12 = f.submit 'Salvar', class: 'btn btn-primary' = link_to 'Voltar', empenho_path(@empenho), class: 'btn btn-default', style: 'margin-left: 10px' javascript: $(document).ready(function(){ $('.valor_monetario, #valor_do_empenho, #valor_distribuido, #valor_a_distribuir').autoNumeric('init', { 'aSep': '.', 'aDec': ',', 'aPad': true, 'vMin': 0.00, 'vMax': 999999999.99, 'aSign': 'R$ ' }); desabilitaMes(); $('#valor_do_empenho').autoNumeric('set', parseFloat($("#saldo_do_empenho").attr('data'))); $(".valor_monetario").trigger('change'); }); $('.valor_monetario').on('change', function(){ atualizaValoresDeDistribuicao(); }); function atualizaValoresDeDistribuicao(){ var totalSaldo = 0; const valorDoEmpenho = parseFloat($("#saldo_do_empenho").attr('data')); $('.valor_monetario').each(function(){ let saldoDoMes = $(this).autoNumeric('get'); if(saldoDoMes) totalSaldo += parseFloat( saldoDoMes ); }); var valorRestante = valorDoEmpenho - totalSaldo; $("#valor_distribuido").autoNumeric('set', totalSaldo); $("#valor_a_distribuir").autoNumeric('set', valorRestante > 0 ? valorRestante : 0); }; $('form').submit(function(){ var form = $(this); $('input').each(function(i){ var self = $(this); try{ var v = self.autoNumeric('get'); self.autoNumeric('destroy'); self.val(v); }catch(err){ } }); return true; }); $('.mes_inicial').on('change', function(){ desabilitaMes(); preencheMes(); }) function desabilitaMes(){ $('.valor_monetario').prop('disabled', false); let mes = $('.mes_inicial option:selected').index() let mesesParaDesabilitar = mes; while(mesesParaDesabilitar > 0){ mesesParaDesabilitar -= 1; $(`#${mesesParaDesabilitar}`).autoNumeric('set', 0); //$(`#${mesesParaDesabilitar}`).prop('disabled', true); } $('.valor_monetario').trigger('change'); } function preencheMes(){ let mes = $('.mes_inicial option:selected').index() let mesesParaPreencher = mes; let mesesRestantes = 13 - mes let saldoDoEmpenho = $('#valor_do_empenho').autoNumeric('get'); let saldoDoMes = saldoDoEmpenho/mesesRestantes while(mesesParaPreencher <= 12){ $(`#${mesesParaPreencher}`).autoNumeric('set', saldoDoMes); mesesParaPreencher += 1; } $('.valor_monetario').trigger('change'); let centavosRestantes = $('#valor_distribuido').autoNumeric('get') - $('#valor_do_empenho').autoNumeric('get') centavosRestantes = Math.round(centavosRestantes * 100) / 100 if(Math.abs(centavosRestantes) > 0){ let valorDeDezembro = $('#12').autoNumeric('get'); $('#12').autoNumeric('set', valorDeDezembro - centavosRestantes) } $('.valor_monetario').trigger('change'); }