- movimentacoes_atuais_debito = @movimentacoes_do_plano_de_contas_exercicio_atual.where("contabilidade_movimentacoes_do_plano_de_contas.tipo_de_lancamento = 0 AND codigo_da_conta like any (array[#{contas}]) and data_de_lancamento between ? and ?", @inicio_do_ano_atual, @fim_do_periodo) - movimentacoes_atuais_credito = @movimentacoes_do_plano_de_contas_exercicio_atual.where("contabilidade_movimentacoes_do_plano_de_contas.tipo_de_lancamento = 1 AND codigo_da_conta like any (array[#{contas}]) and data_de_lancamento between ? and ?", @inicio_do_ano_atual, @fim_do_periodo) - movimentacoes_ano_anterior_debito = @movimentacao_do_plano_de_contas_exercicio_anterior.where("contabilidade_movimentacoes_do_plano_de_contas.tipo_de_lancamento = 0 AND codigo_da_conta like any (array[#{contas}]) and data_de_lancamento between ? and ?", @inicio_do_ano_anterior, @fim_do_ano_anterior) - movimentacoes_ano_anterior_credito = @movimentacao_do_plano_de_contas_exercicio_anterior.where("contabilidade_movimentacoes_do_plano_de_contas.tipo_de_lancamento = 1 AND codigo_da_conta like any (array[#{contas}]) and data_de_lancamento between ? and ?", @inicio_do_ano_anterior, @fim_do_ano_anterior) - dados = [] - dados_alternativos = [] - lista_de_contas = (movimentacoes_atuais_debito + movimentacoes_atuais_credito + movimentacoes_ano_anterior_debito + movimentacoes_ano_anterior_credito).map { |i| i.codigo_da_conta }.sort.uniq - (movimentacoes_atuais_debito + movimentacoes_atuais_credito + movimentacoes_ano_anterior_debito + movimentacoes_ano_anterior_credito).sort_by { |i| i.codigo_da_conta }.group_by { |i| i.codigo_da_conta }.each do |grupo, movimentacoes| - conta_pcasp = Contabilidade::Conta.where(codigo: grupo, orcamento: @exercicio_atual).first - if formula == :ativo - saldo_ano_atual = (movimentacoes.select { |i| i.codigo_da_conta == grupo && i.tipo_de_lancamento == "debito" && i.data_de_lancamento >= @inicio_do_ano_atual && i.data_de_lancamento <= @fim_do_periodo }.sum(&:valor) - movimentacoes.select { |i| i.codigo_da_conta == grupo && i.tipo_de_lancamento == "credito" && i.data_de_lancamento >= @inicio_do_ano_atual && i.data_de_lancamento <= @fim_do_periodo }.sum(&:valor)) - saldo_ano_anterior = (movimentacoes.select { |i| i.codigo_da_conta == grupo && i.tipo_de_lancamento == "debito" && i.data_de_lancamento >= @inicio_do_ano_anterior && i.data_de_lancamento <= @fim_do_ano_anterior }.sum(&:valor) - movimentacoes.select { |i| i.codigo_da_conta == grupo && i.tipo_de_lancamento == "credito" && i.data_de_lancamento >= @inicio_do_ano_anterior && i.data_de_lancamento <= @fim_do_ano_anterior }.sum(&:valor)) - elsif formula == :passivo - saldo_ano_atual = (movimentacoes.select { |i| i.codigo_da_conta == grupo && i.tipo_de_lancamento == "credito" && i.data_de_lancamento >= @inicio_do_ano_atual && i.data_de_lancamento <= @fim_do_periodo }.sum(&:valor) - movimentacoes.select { |i| i.codigo_da_conta == grupo && i.tipo_de_lancamento == "debito" && i.data_de_lancamento >= @inicio_do_ano_atual && i.data_de_lancamento <= @fim_do_periodo }.sum(&:valor)) - saldo_ano_anterior = (movimentacoes.select { |i| i.codigo_da_conta == grupo && i.tipo_de_lancamento == "credito" && i.data_de_lancamento >= @inicio_do_ano_anterior && i.data_de_lancamento <= @fim_do_ano_anterior }.sum(&:valor) - movimentacoes.select { |i| i.codigo_da_conta == grupo && i.tipo_de_lancamento == "debito" && i.data_de_lancamento >= @inicio_do_ano_anterior && i.data_de_lancamento <= @fim_do_ano_anterior }.sum(&:valor)) - dados_da_conta = [] - dados_alternativos << { \ conta: "#{conta_pcasp.codigo_formatado_e_nome}", \ saldo_ano_atual: saldo_ano_atual, \ saldo_ano_anterior: saldo_ano_anterior, \ dados_da_conta: [], \ } - contas_excluidas = defined?(exceto) ? exceto : [] - deve_exibir_conta_extra = defined?(exibir_conta_extra) ? exibir_conta_extra : [] - if exibir_detalhes == true && !contas_excluidas.include?(grupo) - if deve_exibir_conta_extra.include?(grupo[0..3]) || deve_exibir_conta_extra.include?(grupo[0..4]) || deve_exibir_conta_extra.include?(grupo[0..5]) - movimentacoes.select { |i| i.codigo_da_conta == grupo }.sort_by{ |i| [i.conta_extra_orcamentaria&.codigo ? 1 : 0, i.conta_extra_orcamentaria&.codigo] }.group_by { |i| i.conta_extra_orcamentaria&.codigo }.each do |conta_extra_orcamentaria, movimentacoes| - if conta_extra_orcamentaria.nil? - if formula == :ativo - saldo_ano_atual_conta_extra = (movimentacoes.select { |i| i.tipo_de_lancamento == "debito" && i.conta_extra_orcamentaria&.codigo.to_s == "" && i.data_de_lancamento >= @inicio_do_ano_atual && i.data_de_lancamento <= @fim_do_periodo }.sum(&:valor) - movimentacoes.select { |i| i.tipo_de_lancamento == "credito" && i.conta_extra_orcamentaria&.codigo.to_s == "" && i.data_de_lancamento >= @inicio_do_ano_atual && i.data_de_lancamento <= @fim_do_periodo}.sum(&:valor)) - saldo_ano_anterior_conta_extra = (movimentacoes.select { |i| i.tipo_de_lancamento == "debito" && i.conta_extra_orcamentaria&.codigo.to_s == "" && i.data_de_lancamento >= @inicio_do_ano_anterior && i.data_de_lancamento <= @fim_do_ano_anterior}.sum(&:valor) - movimentacoes.select { |i| i.tipo_de_lancamento == "credito" && i.conta_extra_orcamentaria&.codigo.to_s == "" && i.data_de_lancamento >= @inicio_do_ano_anterior && i.data_de_lancamento <= @fim_do_ano_anterior}.sum(&:valor)) - elsif formula == :passivo - saldo_ano_atual_conta_extra = (movimentacoes.select { |i| i.tipo_de_lancamento == "credito" && i.conta_extra_orcamentaria&.codigo.to_s == "" && i.data_de_lancamento >= @inicio_do_ano_atual && i.data_de_lancamento <= @fim_do_periodo }.sum(&:valor) - movimentacoes.select { |i| i.tipo_de_lancamento == "debito" && i.conta_extra_orcamentaria&.codigo.to_s == "" && i.data_de_lancamento >= @inicio_do_ano_atual && i.data_de_lancamento <= @fim_do_periodo}.sum(&:valor)) - saldo_ano_anterior_conta_extra = (movimentacoes.select { |i| i.tipo_de_lancamento == "credito" && i.conta_extra_orcamentaria&.codigo.to_s == "" && i.data_de_lancamento >= @inicio_do_ano_anterior && i.data_de_lancamento <= @fim_do_ano_anterior}.sum(&:valor) - movimentacoes.select { |i| i.tipo_de_lancamento == "debito" && i.conta_extra_orcamentaria&.codigo.to_s == "" && i.data_de_lancamento >= @inicio_do_ano_anterior && i.data_de_lancamento <= @fim_do_ano_anterior}.sum(&:valor)) - else - conta_extra_orcamentaria_do_orcamento = Contabilidade::ContaExtraOrcamentaria.where(codigo: conta_extra_orcamentaria, orcamento: @exercicio_atual).first - conta_extra_orcamentaria_do_orcamento_anterior = Contabilidade::ContaExtraOrcamentaria.where(codigo: conta_extra_orcamentaria, orcamento: @exercicio_anterior).first - conta_extra_orcamentaria_texto = conta_extra_orcamentaria_do_orcamento || conta_extra_orcamentaria_do_orcamento_anterior - if formula == :ativo - saldo_ano_atual_conta_extra = (movimentacoes.select { |i| i.tipo_de_lancamento == "debito" && i.conta_extra_orcamentaria&.codigo == conta_extra_orcamentaria && i.data_de_lancamento >= @inicio_do_ano_atual && i.data_de_lancamento <= @fim_do_periodo }.sum(&:valor) - movimentacoes.select { |i| i.tipo_de_lancamento == "credito" && i.conta_extra_orcamentaria&.codigo == conta_extra_orcamentaria && i.data_de_lancamento >= @inicio_do_ano_atual && i.data_de_lancamento <= @fim_do_periodo}.sum(&:valor)) - saldo_ano_anterior_conta_extra = (movimentacoes.select { |i| i.tipo_de_lancamento == "debito" && i.conta_extra_orcamentaria&.codigo == conta_extra_orcamentaria && i.data_de_lancamento >= @inicio_do_ano_anterior && i.data_de_lancamento <= @fim_do_ano_anterior}.sum(&:valor) - movimentacoes.select { |i| i.tipo_de_lancamento == "credito" && i.conta_extra_orcamentaria&.codigo == conta_extra_orcamentaria && i.data_de_lancamento >= @inicio_do_ano_anterior && i.data_de_lancamento <= @fim_do_ano_anterior}.sum(&:valor)) - elsif formula == :passivo - saldo_ano_atual_conta_extra = (movimentacoes.select { |i| i.tipo_de_lancamento == "credito" && i.conta_extra_orcamentaria&.codigo == conta_extra_orcamentaria && i.data_de_lancamento >= @inicio_do_ano_atual && i.data_de_lancamento <= @fim_do_periodo }.sum(&:valor) - movimentacoes.select { |i| i.tipo_de_lancamento == "debito" && i.conta_extra_orcamentaria&.codigo == conta_extra_orcamentaria && i.data_de_lancamento >= @inicio_do_ano_atual && i.data_de_lancamento <= @fim_do_periodo}.sum(&:valor)) - saldo_ano_anterior_conta_extra = (movimentacoes.select { |i| i.tipo_de_lancamento == "credito" && i.conta_extra_orcamentaria&.codigo == conta_extra_orcamentaria && i.data_de_lancamento >= @inicio_do_ano_anterior && i.data_de_lancamento <= @fim_do_ano_anterior}.sum(&:valor) - movimentacoes.select { |i| i.tipo_de_lancamento == "debito" && i.conta_extra_orcamentaria&.codigo == conta_extra_orcamentaria && i.data_de_lancamento >= @inicio_do_ano_anterior && i.data_de_lancamento <= @fim_do_ano_anterior}.sum(&:valor)) - if saldo_ano_atual_conta_extra != 0 || saldo_ano_anterior_conta_extra != 0 - dados_da_conta << { \ descricao: "#{conta_extra_orcamentaria_texto.present? ? conta_extra_orcamentaria_texto&.codigo_completo_e_descricao.to_s.upcase : "NÃO INFORMADO"}", \ saldo_ano_atual: saldo_ano_atual_conta_extra, \ saldo_ano_anterior: saldo_ano_anterior_conta_extra, \ } - else - sub_contas = movimentacoes.select { |i| i.codigo_da_conta == grupo }.sort_by{ |i| [i.sub_conta_pcasp&.codigo ? 1 : 0, i.sub_conta_pcasp&.codigo] }.group_by { |i| [i.sub_conta_pcasp&.topico_da_conta, i.sub_conta_pcasp&.codigo] } - if movimentacoes.map { |i| i.sub_conta_pcasp_id }.compact.size > 0 - sub_contas.each do |sub_conta_pcasp, movimentacoes| - sub_conta_pcasp_do_orcamento = Contabilidade::SubContaPcasp.where(topico_da_conta: sub_conta_pcasp[0], codigo: sub_conta_pcasp[1], orcamento: @exercicio_atual).first - if formula == :ativo - saldo_ano_atual_sub_conta = (movimentacoes.select { |i| i.tipo_de_lancamento == "debito" && i.sub_conta_pcasp&.topico_da_conta == sub_conta_pcasp[0] && i.sub_conta_pcasp&.codigo == sub_conta_pcasp[1] && i.data_de_lancamento >= @inicio_do_ano_atual && i.data_de_lancamento <= @fim_do_periodo }.sum(&:valor) - movimentacoes.select { |i| i.tipo_de_lancamento == "credito" && i.sub_conta_pcasp&.topico_da_conta == sub_conta_pcasp[0] && i.sub_conta_pcasp&.codigo == sub_conta_pcasp[1] && i.data_de_lancamento >= @inicio_do_ano_atual && i.data_de_lancamento <= @fim_do_periodo}.sum(&:valor)) - saldo_ano_anterior_sub_conta = (movimentacoes.select { |i| i.tipo_de_lancamento == "debito" && i.sub_conta_pcasp&.topico_da_conta == sub_conta_pcasp[0] && i.sub_conta_pcasp&.codigo == sub_conta_pcasp[1] && i.data_de_lancamento >= @inicio_do_ano_anterior && i.data_de_lancamento <= @fim_do_ano_anterior}.sum(&:valor) - movimentacoes.select { |i| i.tipo_de_lancamento == "credito" && i.sub_conta_pcasp&.topico_da_conta == sub_conta_pcasp[0] && i.sub_conta_pcasp&.codigo == sub_conta_pcasp[1] && i.data_de_lancamento >= @inicio_do_ano_anterior && i.data_de_lancamento <= @fim_do_ano_anterior}.sum(&:valor)) - elsif formula == :passivo - saldo_ano_atual_sub_conta = (movimentacoes.select { |i| i.tipo_de_lancamento == "credito" && i.sub_conta_pcasp&.topico_da_conta == sub_conta_pcasp[0] && i.sub_conta_pcasp&.codigo == sub_conta_pcasp[1] && i.data_de_lancamento >= @inicio_do_ano_atual && i.data_de_lancamento <= @fim_do_periodo }.sum(&:valor) - movimentacoes.select { |i| i.tipo_de_lancamento == "debito" && i.sub_conta_pcasp&.topico_da_conta == sub_conta_pcasp[0] && i.sub_conta_pcasp&.codigo == sub_conta_pcasp[1] && i.data_de_lancamento >= @inicio_do_ano_atual && i.data_de_lancamento <= @fim_do_periodo}.sum(&:valor)) - saldo_ano_anterior_sub_conta = (movimentacoes.select { |i| i.tipo_de_lancamento == "credito" && i.sub_conta_pcasp&.topico_da_conta == sub_conta_pcasp[0] && i.sub_conta_pcasp&.codigo == sub_conta_pcasp[1] && i.data_de_lancamento >= @inicio_do_ano_anterior && i.data_de_lancamento <= @fim_do_ano_anterior}.sum(&:valor) - movimentacoes.select { |i| i.tipo_de_lancamento == "debito" && i.sub_conta_pcasp&.topico_da_conta == sub_conta_pcasp[0] && i.sub_conta_pcasp&.codigo == sub_conta_pcasp[1] && i.data_de_lancamento >= @inicio_do_ano_anterior && i.data_de_lancamento <= @fim_do_ano_anterior}.sum(&:valor)) - if saldo_ano_atual_sub_conta != 0 || saldo_ano_anterior_sub_conta != 0 - dados_da_conta << { \ descricao: "#{Contabilidade::SubContaPcasp.topico_da_contas[sub_conta_pcasp_do_orcamento&.topico_da_conta]}.#{sub_conta_pcasp_do_orcamento&.codigo} - #{sub_conta_pcasp_do_orcamento&.descricao.try(:upcase)}", \ saldo_ano_atual: saldo_ano_atual_sub_conta, \ saldo_ano_anterior: saldo_ano_anterior_sub_conta, \ } - if dados_da_conta.count > 0 - dados << { \ conta: "#{conta_pcasp.codigo_formatado_e_nome}", \ saldo_ano_atual: saldo_ano_atual, \ saldo_ano_anterior: saldo_ano_anterior, \ dados_da_conta: dados_da_conta, \ } - unless dados.count > 0 - dados = dados_alternativos - if defined?(exibir_contas_maes) && exibir_contas_maes == true - contas_nivel_3 = [] - dados.group_by { |i| i[:conta][0..6] }.each do |conta_nivel_3, itens| - conta_pcasp_nivel_3 = Contabilidade::Conta.where(codigo: conta_nivel_3.gsub(".", "").ljust(9, "0"), orcamento: @exercicio_atual).first - contas_nivel_4 = [] - dados.select { |i| i[:conta][0..6] == conta_nivel_3 }.group_by { |i| i[:conta][0..8] }.each do |conta_nivel_4, itens| - conta_pcasp_nivel_4 = Contabilidade::Conta.where(codigo: conta_nivel_4.gsub(".", "").ljust(9, "0"), orcamento: @exercicio_atual).first - contas_nivel_5 = [] - dados.select { |i| i[:conta][0..8] == conta_nivel_4 }.group_by { |i| i[:conta][0..11] }.each do |conta_nivel_5, itens| - conta_pcasp = Contabilidade::Conta.where(codigo: conta_nivel_5.gsub(".", "").ljust(9, "0"), orcamento: @exercicio_atual).first - contas_nivel_6 = [] - dados.select { |i| i[:conta][0..11] == conta_nivel_5 }.group_by { |i| i[:conta][0..14] }.each do |conta_nivel_6, itens| - conta_pcasp = Contabilidade::Conta.where(codigo: conta_nivel_6.gsub(".", "").ljust(9, "0"), orcamento: @exercicio_atual).first - contas_nivel_6 << { conta: "#{conta_pcasp.codigo_formatado_e_nome}", saldo_ano_atual: itens.select { |i| i[:conta][0..14] }.map { |i| i[:saldo_ano_atual] }.sum, saldo_ano_anterior: itens.select { |i| i[:conta][0..14] }.map { |i| i[:saldo_ano_anterior] }.sum } - contas_nivel_5 << { conta: "#{conta_pcasp.codigo_formatado_e_nome}", saldo_ano_atual: itens.select { |i| i[:conta][0..11] }.map { |i| i[:saldo_ano_atual] }.sum, saldo_ano_anterior: itens.select { |i| i[:conta][0..11] }.map { |i| i[:saldo_ano_anterior] }.sum, contas_nivel_6: contas_nivel_6 } - contas_nivel_4 << { conta: "#{conta_pcasp_nivel_4.codigo_formatado_e_nome}", saldo_ano_atual: itens.select { |i| i[:conta][0..8] }.map { |i| i[:saldo_ano_atual] }.sum, saldo_ano_anterior: itens.select { |i| i[:conta][0..8] }.map { |i| i[:saldo_ano_anterior] }.sum, contas_nivel_5: contas_nivel_5 } - contas_nivel_3 << { conta: "#{conta_pcasp_nivel_3.codigo_formatado_e_nome}", saldo_ano_atual: itens.select { |i| i[:conta][0..6] }.map { |i| i[:saldo_ano_atual] }.sum, saldo_ano_anterior: itens.select { |i| i[:conta][0..6] }.map { |i| i[:saldo_ano_anterior] }.sum, contas_nivel_4: contas_nivel_4 } - contas_nivel_3.each do |conta_nivel_3| tr td style="border: none; text-transform: none; padding-left: 10px;" #{conta_nivel_3[:conta]} td align="right" style="border: none;" td align="right" style="border: none;" #{conta_nivel_3[:saldo_ano_atual].contabil} td align="right" style="border: none;" #{conta_nivel_3[:saldo_ano_anterior].contabil} - conta_nivel_3[:contas_nivel_4].each do |conta_nivel_4| tr td style="border: none; text-transform: none; padding-left: 20px;" #{conta_nivel_4[:conta]} td align="right" style="border: none;" td align="right" style="border: none;" #{conta_nivel_4[:saldo_ano_atual].contabil} td align="right" style="border: none;" #{conta_nivel_4[:saldo_ano_anterior].contabil} - conta_nivel_4[:contas_nivel_5].each do |conta_nivel_5| tr td style="border: none; text-transform: none; padding-left: 30px;" #{conta_nivel_5[:conta]} td align="right" style="border: none;" td align="right" style="border: none;" #{conta_nivel_5[:saldo_ano_atual].contabil} td align="right" style="border: none;" #{conta_nivel_5[:saldo_ano_anterior].contabil} - conta_nivel_5[:contas_nivel_6].each do |conta_nivel_6| tr td style="border: none; text-transform: none; padding-left: 40px;" #{conta_nivel_6[:conta]} td align="right" style="border: none;" td align="right" style="border: none;" #{conta_nivel_6[:saldo_ano_atual].contabil} td align="right" style="border: none;" #{conta_nivel_6[:saldo_ano_anterior].contabil} - else - dados.each do |dado| tr td style="border: none; text-transform: none; padding-left: 10px;" #{dado[:conta]} td align="right" style="border: none;" td align="right" style="border: none;" #{dado[:saldo_ano_atual].contabil} td align="right" style="border: none;" #{dado[:saldo_ano_anterior].contabil} - dado[:dados_da_conta].each do |conta| tr td style="border: none; text-transform: none; padding-left: 20px;" #{conta[:descricao]} td align="right" style="border: none;" td align="right" style="border: none;" #{conta[:saldo_ano_atual].contabil} td align="right" style="border: none;" #{conta[:saldo_ano_anterior].contabil}