Skip to content

Instantly share code, notes, and snippets.

@Senhordim
Created January 22, 2014 19:25
Show Gist options
  • Save Senhordim/8565618 to your computer and use it in GitHub Desktop.
Save Senhordim/8565618 to your computer and use it in GitHub Desktop.
# encoding: utf-8
require 'csv'
class AssociadosController < ApplicationController
authorize_resource
def index
if params['filtro'].present?
session['filtro_associados'] = request.GET
elsif session['filtro_associados'].present?
params.merge!(session['filtro_associados'])
end
if current_admin_user.geral?
@associados = Associado.includes(:secao, :situacao, :estado_obj)
if params[:id].present?
params[:aba] = "ativos"
associado = Associado.find(params[:id].to_i)
if !session['carteirinha'].include?(params[:id].to_i)
if associado.ativo? && !associado.pj?
session['carteirinha'] << params[:id].to_i
flash.now[:notice] = "O associado #{associado.nome} foi incluído na lista."
else
flash.now[:alert] = "O associado #{associado.nome} não está em dia ou é PJ."
end
else
flash.now[:alert] = "O associado #{associado.nome} já está na listagem."
end
elsif params[:id_remover].present?
session['carteirinha'].delete(params[:id_remover].to_i)
associado = Associado.find(params[:id_remover].to_i)
flash.now[:notice] = "O associado #{associado.nome} foi removido da lista."
end
elsif current_admin_user.estadual?
@associados = current_admin_user.secao.associados.includes(:secao, :situacao, :estado_obj)
end
params['todos'] ||= {}
params['ativos'] ||= {}
params['inativos'] ||= {}
params['assinantes'] ||= {}
session['carteirinha'] ||= []
@todos_associados = @associados.filtro(params['todos']).page(params[:pag_todos]).per(7)
@associados_ativos = @associados.ativos_trimestre.filtro(params['ativos']).page(params[:pag_ativos]).per(7)
@associados_inativos = @associados.inativos_trimestre.filtro(params['inativos']).page(params[:pag_inativos]).per(7)
@associados_assinantes = @associados.assinantes.filtro(params['assinantes']).page(params[:pag_assinantes]).per(7)
end
def gera_carteirinhas
if session['carteirinha'].any?
@associados = Associado.find(session['carteirinha'])
session.delete('carteirinha')
@data_de_validade = params[:data_de_validade]
else
redirect_to associados_path, alert: "Nenhum associado foi selecionado."
end
end
def escolhe_boleto
@associado = Associado.find(params[:id])
end
def gera_boleto
if params[:tipo].present?
@associado = Associado.find(params[:id])
anuidade_data = AnuidadeData.find_by_ano(Date.current.year)
@boletos = []
if params[:tipo].to_i == 1
instrucoes = @associado.gera_dados_para_as_instrucoes(Date.current)
options = { :tipo => 'anual' }
boleto_dados = {:cedente => "ABES - Associação Brasileira de Engenharia Sanitária e Ambiental",
:documento_cedente => "33.945.015/0001-81",
:sacado => @associado.nome,
:sacado_documento => @associado.cpf_ou_cnpj_tratados,
:valor => "",
:agencia => "0284",
:conta_corrente => "55022",
:convenio => "12345",
:numero_documento => @associado.matric.rjust(6, '0').ljust(8, '0'),
:dias_vencimento => 5,
:data_documento => Date.current,
:instrucao1 => instrucoes[:linha1],
:instrucao2 => instrucoes[:linha2],
:instrucao3 => instrucoes[:linha3],
:instrucao4 => instrucoes[:linha4],
:instrucao5 => instrucoes[:linha5],
:instrucao6 => instrucoes[:linha6],
:sacado_endereco => @associado.endereco,
:data_cota_unica => anuidade_data.cota_unica.strftime("%d/%m/%Y"),
:data_10 => anuidade_data.unica10.strftime("%d/%m/%Y"),
:data_5 => anuidade_data.unica5.strftime("%d/%m/%Y"),
:data_parc_4x1 => anuidade_data.parc4x1.strftime("%d/%m/%Y"),
:data_parc_4x2 => anuidade_data.parc4x2.strftime("%d/%m/%Y"),
:data_parc_4x3 => anuidade_data.parc4x3.strftime("%d/%m/%Y"),
:data_parc_4x4 => anuidade_data.parc4x4.strftime("%d/%m/%Y")
}
@boleto = Brcobranca::Boleto::Itau.new(boleto_dados, options)
@boletos << @boleto
send_data Brcobranca::Boleto::Base.lote(@boletos), :filename => "boleto_anual_#{@associado.matric}.pdf"
else
anuidade = Anuidade.find_by_ano_and_id_categoria(Date.current.year, @associado.cat)
anuidade_data = AnuidadeData.find_by_ano(Date.current.year)
options = { :tipo => 'parcelado' }
(2..4).each do |parcela|
case parcela
when 2
data_de_vencimento = anuidade_data.parc4x2
when 3
data_de_vencimento = anuidade_data.parc4x3
when 4
data_de_vencimento = anuidade_data.parc4x4
end
boleto_dados = {:cedente => "ABES - Associação Brasileira de Engenharia Sanitária e Ambiental",
:documento_cedente => "33.945.015/0001-81",
:sacado => @associado.nome,
:sacado_documento => @associado.cpf_ou_cnpj_tratados,
:valor => anuidade.valor_parc_tri,
:agencia => "0284",
:conta_corrente => "55022",
:convenio => "12345",
:numero_documento => @associado.matric.rjust(6, '0').ljust(8, '0'),
:dias_vencimento => 5,
:data_documento => Date.current,
:instrucao1 => "PARCELA " + "0" + parcela.to_s + "/04",
:instrucao2 => "",
:instrucao3 => "",
:instrucao4 => "",
:instrucao5 => "",
:instrucao6 => "",
:data_vencimento => data_de_vencimento,
:sacado_endereco => @associado.endereco,
:data_cota_unica => "",
:data_10 => "",
:data_5 => "",
:data_parc_4x1 => "",
:data_parc_4x2 => "",
:data_parc_4x3 => "",
:data_parc_4x4 => ""
}
@boleto = Brcobranca::Boleto::Itau.new(boleto_dados, options)
@boletos << @boleto
end
send_data Brcobranca::Boleto::Base.lote(@boletos), :filename => "boletos_parcelados_#{@associado.matric}.pdf"
end
else
redirect_to escolhe_boleto_associado_path(:id => params[:id]), alert: "Selecione uma opção."
end
end
def edit
@associado_ativo = Associado.find(params[:id])
@associado_ativo_historico = Associado.where(:cpf_cnpj => @associado_ativo.cpf_cnpj ) if @associado_ativo.cpf_cnpj.present?
@associado_ativo_historico ||= nil
end
def update
@associado_ativo = Associado.find(params[:id])
respond_to do |format|
# if @associado.update_attributes(params[:associados_ativo])
@associado_ativo.data_atual = Date.current
if @associado_ativo.update_attributes(params[:associado])
format.html { redirect_to associados_url, notice: "O associado #{@associado_ativo.nome} foi atualizado com com sucesso." }
# format.html { redirect_to :action => 'edit', :id => @associado, notice: 'Atualizado com sucesso'}
format.json { head :no_content}
else
format.html { render action: 'edit'}
format.json { render json: @associado_ativo, status: :unprocessable_entity }
end
end
end
# def gerar_boletos
# @boletos = []
# @associados = Associado.todos_para_emissao_de_boletos.limit(50)
# @associados.each do |associado|
# socio = associado.gera_dados_para_o_boleto
# instrucoes = associado.gera_dados_para_as_instrucoes
# boleto_dados = {
# :cedente => "ABES - Associação Brasileira de Engenharia Sanitária e Ambiental",
# :documento_cedente => "333945015000181",
# :sacado => socio[:nome],
# :sacado_documento => socio[:cpf_ou_cnpj],
# :valor => associado.valor_para_pagar(associado.situacao.sitaposvirada),
# :agencia => "0284",
# :conta_corrente => "55022",
# :convenio => "12345",
# :numero_documento => socio[:numero_do_documento],
# :dias_vencimento => 5,
# :data_documento => Date.current,
# :instrucao1 => "",
# :instrucao2 => "",
# :instrucao3 => instrucoes[:linha1],
# :instrucao4 => instrucoes[:linha2],
# :instrucao5 => instrucoes[:linha3],
# :instrucao6 => instrucoes[:linha4],
# :sacado_endereco => socio[:endereco]
# }
# options = { :tipo => 'anual' }
# @boleto = Brcobranca::Boleto::Itau.new(boleto_dados, options)
# @boletos << @boleto
# end
# send_data Brcobranca::Boleto::Base.lote(@boletos), :filename => "multi_boleto.pdf"
# end
# def gera_boletos_parcelado_via_csv
# @boletos = []
# filename = Rails.root.join('public/cobranca.csv')
# filename.force_encoding('utf-8')
# options = {}
# options[:test] = 28
# CSV.foreach(filename, encoding:'iso-8859-1:utf-8', :headers => true) do |row|
# if row[0] == "353411"
# cpf = '001.389.548-60'
# else
# cpf = Associado.find_by_matric(row[0]).cpf_ou_cnpj_tratados
# end
# endereco = ""
# endereco = endereco + row[2] + " " if row[2].present?
# endereco = endereco + row[4] + " " if row[4].present?
# endereco = endereco + row[5] + " " if row[5].present?
# endereco = endereco + row[6] + " " if row[6].present?
# endereco = endereco + row[3] + " " if row[3].present?
# boleto_dados = {:cedente => "ABES - Associação Brasileira de Engenharia Sanitária e Ambiental",
# :documento_cedente => "33.945.015/0001-81",
# :sacado => row[1],
# :sacado_documento => cpf,
# :valor => row[17],
# :agencia => "0284",
# :conta_corrente => "55022",
# :convenio => "12345",
# :numero_documento => row[0].ljust(8, '0'),
# :dias_vencimento => 5,
# :data_documento => Date.today,
# :instrucao1 => "PARCELA " + row[22] + "/04",
# :instrucao2 => "",
# :instrucao3 => "",
# :instrucao4 => "",
# :instrucao5 => "",
# :instrucao6 => "",
# :data_vencimento => row[10].to_date,
# :sacado_endereco => endereco,
# :data_cota_unica => "",
# :data_10 => "",
# :data_5 => "",
# :data_parc_4x1 => "",
# :data_parc_4x2 => "",
# :data_parc_4x3 => "",
# :data_parc_4x4 => ""
# }
# options = { :tipo => 'parcelado' }
# @boleto = Brcobranca::Boleto::Itau.new(boleto_dados, options)
# @boletos << @boleto
# end
# send_data Brcobranca::Boleto::Base.lote(@boletos), :filename => "multi_boleto_EX.pdf"
# end
# def gera_boletos_anuais_via_csv
# @boletos = []
# filename = Rails.root.join('public/lista.csv')
# options = { :tipo => 'anual' }
# CSV.foreach(filename, encoding:'utf-8', :headers => true) do |row|
# associado = Associado.find_by_matric(row[0].rjust(6, '0'), select: "cpf_cnpj, matric, cat, ac")
# # next unless row[6] == "--"
# unless associado.present?
# raise "O associado oriundo do arquivo cuja matricula é #{row[0]} não foi encontrado no sistema."
# end
# instrucoes = associado.gera_dados_para_as_instrucoes
# anuidade_data = AnuidadeData.find_by_ano(Date.current.year)
# endereco = ""
# endereco = endereco + row[2] + " " if row[2].present?
# endereco = endereco + row[4] + " " if row[4].present?
# endereco = endereco + row[5] + " " if row[5].present?
# endereco = endereco + row[6] + " " if row[6].present?
# endereco = endereco + row[3] + " " if row[3].present?
# boleto_dados = {:cedente => "ABES - Associação Brasileira de Engenharia Sanitária e Ambiental",
# :documento_cedente => "33.945.015/0001-81",
# :sacado => row[1],
# :sacado_documento => associado.cpf_ou_cnpj_tratados,
# :valor => "",
# :agencia => "0284",
# :conta_corrente => "55022",
# :convenio => "12345",
# :numero_documento => row[0].rjust(6, '0').ljust(8, '0'),
# :dias_vencimento => 5,
# :data_documento => Date.current,
# :instrucao1 => instrucoes[:linha1],
# :instrucao2 => instrucoes[:linha2],
# :instrucao3 => instrucoes[:linha3],
# :instrucao4 => instrucoes[:linha4],
# :instrucao5 => instrucoes[:linha5],
# :instrucao6 => instrucoes[:linha6],
# # :data_vencimento => row[10].to_date,
# :sacado_endereco => endereco,
# :data_cota_unica => anuidade_data.cota_unica.strftime("%d/%m/%Y"),
# :data_10 => anuidade_data.unica10.strftime("%d/%m/%Y"),
# :data_5 => anuidade_data.unica5.strftime("%d/%m/%Y"),
# :data_parc_4x1 => anuidade_data.parc4x1.strftime("%d/%m/%Y"),
# :data_parc_4x2 => anuidade_data.parc4x2.strftime("%d/%m/%Y"),
# :data_parc_4x3 => anuidade_data.parc4x3.strftime("%d/%m/%Y"),
# :data_parc_4x4 => anuidade_data.parc4x4.strftime("%d/%m/%Y")
# # :codigo_barras => row[11].to_s
# }
# @boleto = Brcobranca::Boleto::Itau.new(boleto_dados, options)
# @boletos << @boleto
# end
# send_data Brcobranca::Boleto::Base.lote(@boletos), :filename => "multi_boleto_novos.pdf"
# end
def seleciona_tipo_pagamento
associado = Associado.find_by_matric(params[:matricula])
@valor = associado.valor_em_caso_de_escolha(params[:valor])
respond_to do |format|
format.js
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment