Created
January 22, 2014 19:25
-
-
Save Senhordim/8565618 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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