.alert.alert-warning[role="alert" id="alert-content" style="display: none;"] span#alert-message .widget .widget-body = simple_form_for(@movimentacao_do_plano_de_contas) do |f| legend strong = "#{f.object.persisted? ? "Editar" : "Cadastrar" } Movimentação" = f.input :lancamento_manual, as: :hidden, input_html: { value: session[:lancamento_manual], class: 'lancamento_manual' } = f.input :exercicio, as: :hidden, input_html: { value: contexto_atual.exercicio, class: 'exercicio' } .row .col-sm-4 = f.input :data_de_lancamento, label: 'Data de Lançamento *', as: :string, wrapper: :calendar_field, input_html: { class: "date-picker", autocomplete: "off" } = error_for f.object, :sim .col-sm-4 = f.input :unidade_orcamentaria_id, label: 'Unidade Orçamentária *', collection: @unidades_orcamentarias, label_method: :codigo_e_nome, include_blank: 'Selecione', input_html: { class: "s2 unidade_orcamentaria" } .row .col-sm-4 = f.label :categoria_de_lancamento, "Categoria de Lançamento *", class: "control-label" == f.select :categoria_de_lancamento, options_for_select(@categorias_de_lancamento.invert, selected: @movimentacao_do_plano_de_contas.categoria_de_lancamento_before_type_cast.to_s), { include_blank: "Selecione" },class: 'form-control s2 categoria_de_lancamento' - if session[:lancamento_manual] == 'divida_ativa' .col-sm-4 = f.label :titulo, "Titulo *", class: "control-label" = f.select :titulo, options_for_select(Contabilidade::GrupoDeEventoContabil.titulos_i18n.transform_keys{|key| Contabilidade::GrupoDeEventoContabil.titulos[key]}.invert, selected: @movimentacao_do_plano_de_contas.titulo_before_type_cast.to_s), { include_blank: "Selecione" },class: 'form-control s2 titulo' = error_for f.object, :titulo - elsif session[:lancamento_manual] == 'almoxarifado' || session[:lancamento_manual] == 'imobilizado' .col-sm-4 = f.input :centro_de_custo_id, label: 'Centro de Custo', collection: @centros_de_custo, label_method: :descricao, include_blank: "Selecione", input_html: { class: 'centro_de_custo s2'} .col-sm-4 = f.input :grupo_de_evento_id, label: 'Grupo de Evento *',collection: @grupos_de_eventos, include_blank: 'Selecione', label_method: :nome_do_grupo, input_html: { class: "s2 grupos_de_eventos" } .col-sm-4 = f.input :evento_contabil_id, label: 'Evento Contábil *', collection: @eventos_contabeis, label_method: :nome, include_blank: 'Selecione', input_html: { class: "s2 evento_contabil" } .col-sm-4 = f.input :valor, label: 'Valor', as: :string, input_html: {data: { autonumeric: true, 'a-sep'=> '.', 'a-dec'=>',', 'a-sign'=> 'R$ ', 'v-min'=> '0.00', 'v-max'=> '9999999999.99' }} - if session[:lancamento_manual] == 'abertura' .col-sm-4 = f.label :conta_bancaria_id, "Conta Bancária *", class: "control-label" = f.select :conta_bancaria_id, options_from_collection_for_select(@contas_bancarias, :id, :to_s, @movimentacao_do_plano_de_contas.conta_bancaria_id), { include_blank: 'Selecione' }, class: 'form-control s2' = error_for f.object, :categoria_de_lancamento .row - unless session[:lancamento_manual] == 'almoxarifado' .col-sm-4#subconta-pcasp = f.input :sub_conta_pcasp_id, label: 'Sub Conta PCASP', collection: @subcontas_pcasp, include_blank: 'Selecione', label_method: :codigo_e_descricao, input_html: { class: "s2 subconta" } .col-sm-4 = f.input :criar_nova_subconta, label: '  Criar Nova Sub Conta'.html_safe, as: :boolean, input_html: { class: "checkbox-circle cria_subconta", style: "margin-top: 30px;" } .col-sm-4#descricao-subconta = f.input :descricao_subconta, label: 'Descrição da Sub Conta PCASP', input_html: { class: "form-control" } .row .col-sm-12 = f.input :historico, label: 'Histórico *', as: :text, input_html: { rows: 12 } .form-actions = f.submit "Salvar", class: "btn btn-primary" = link_to "Cancelar", contabilidade_index_movimentacoes_manuais_path(lancamento_manual: session[:lancamento_manual]),class: "btn btn-default" javascript: $(document).ready(function(){ $('abbr').remove(); $('#alerta_evento_contabil').hide(); cria_ou_nao_subconta(); }) $('.cria_subconta').on('change', function(){ cria_ou_nao_subconta(); }); function cria_ou_nao_subconta(){ if ($('.cria_subconta').is(":checked")){ $("#subconta-pcasp").hide(); $("#descricao-subconta").show(); } else { $("#subconta-pcasp").show(); $("#descricao-subconta").hide(); } } $('.categoria_de_lancamento').on('change', function(){ if(podeRealizarPesquisaDeGrupo()){ pesquisarGruposDosEventos(); } }) $('.titulo').on('change', function(){ if(podeRealizarPesquisaDeGrupo()){ pesquisarGruposDosEventos(); } }) $('.grupos_de_eventos').on('change', function(){ if($(this).val() != null && $(this).val() != ''){ pesquisaEventosContabeis(); } }) $('.codigo_subconta').on('change', function(){ $('.evento_contabil').trigger('change'); }) $('.unidade_orcamentaria').on('change', function(){ pesquisaCentrosDeCusto(); }) $('.centro_de_custo').on('change', function(){ $('.evento_contabil').trigger('change'); }) function podeRealizarPesquisaDeGrupo(){ let categoriaDeLancamentoPossuiValor = $('.categoria_de_lancamento').val() != ''; let tituloPossuiValor = $('.titulo').val() != ''; let naoExigeTitulo = $('.lancamento_manual').val() != 'divida_ativa'; return categoriaDeLancamentoPossuiValor && (tituloPossuiValor || naoExigeTitulo) ; } function pesquisarGruposDosEventos(){ limpaSelectBox(".evento_contabil"); limpaSelectBox(".grupos_de_eventos"); var categoriaDeLancamento = $('.categoria_de_lancamento').val(); var titulo = $('.titulo').val() if(titulo != undefined){ var url = root_url + `contabilidade/index_grupos_dos_eventos/?q%5Bcategoria_de_lancamento_eq%5D=${categoriaDeLancamento}&q%5Btitulo_eq%5D=${titulo}` }else { var url = root_url + `contabilidade/index_grupos_dos_eventos/?q%5Bcategoria_de_lancamento_eq%5D=${categoriaDeLancamento}` } $.ajax({ type: 'GET', dataType: 'json', url: url, beforeSend: function(){ LoadingInterface("Carregando Grupos..."); }, success: function(data, stauts, xhr){ if($.trim(data) != ""){ $.each(data, function (i, item) { option = new Option(item.nome_do_grupo, item.id, true, true); select_box.append(option); }); populaSelectBox(select_box); } } }) } function pesquisaEventosContabeis(){ limpaSelectBox(".evento_contabil"); $.ajax({ type: 'GET', dataType: 'json', url: root_url + `contabilidade/${$('.exercicio').val()}/eventos_contabeis?q%5Bgrupo_de_evento_contabil_id_eq%5D=${$('.grupos_de_eventos').val()}`, beforeSend: function(){ LoadingInterface("Carregando Eventos..."); }, success: function(data, status,xhr){ if($.trim(data) != ""){ $.each(data, function (i, item) { option = new Option(item.nome, item.id, true, true); select_box.append(option); }); populaSelectBox(select_box); } } }) } function linkParaPesquisarContas(){ var idDoEvento = $('.evento_contabil').val(); var contaDebito = 0; var url = new URL(`${root_url}contabilidade/${$('.exercicio').val()}/contas`); url.searchParams.append('q[detalhamento_extra_blank]', ''); url.searchParams.append('q[contas_por_eventos_contabeis_evento_contabil_id_eq]', idDoEvento); url.searchParams.append('q[contas_por_eventos_contabeis_tipo_de_lancamento_eq]', contaDebito); url.searchParams.append('q[contas_filhas_detalhamento_extra_not_eq]', numeroSubconta()); return url.href; } function linkParaCriarSubconta(contaDebito){ var idDoEvento = $('.evento_contabil').val(); var url = new URL(`${root_url}contabilidade/${$('.exercicio').val()}/contas/new`); url.searchParams.append('conta_pai_id', contaDebito); url.searchParams.append('detalhamento_extra', numeroSubconta()); url.searchParams.append('evento_contabil_id', idDoEvento); url.searchParams.append('tipo', $('.lancamento_manual').val()); return url.href; } 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'); } function numeroSubconta(){ if($(".centro_de_custo").val() != "" && $(".centro_de_custo").val() != undefined){ return $(".centro_de_custo option:selected").text(); } return $('.codigo_subconta').val(); } function pesquisaCentrosDeCusto(){ limpaSelectBox(".centro_de_custo"); $.getJSON(urlPesquisaCentrosDeCusto(), function(centrosDeCusto){ if($.trim(centrosDeCusto) != ""){ $.each(centrosDeCusto, function (i, item) { option = new Option(item.descricao, item.id, true, true); select_box.append(option); }); populaSelectBox(select_box); } }) } function urlPesquisaCentrosDeCusto(){ var url = new URL(`${root_url}controladoria/centro_de_custos`); url.searchParams.append('q[unidade_gestora_unidades_orcamentarias_id_eq]', $('.unidade_orcamentaria').val()); url.searchParams.append('com_filhas', true); return url.href; }