Skip to content

Instantly share code, notes, and snippets.

@nicolasmarcal
Last active August 29, 2015 14:20
Show Gist options
  • Save nicolasmarcal/e35f64c8bdd57c2106d1 to your computer and use it in GitHub Desktop.
Save nicolasmarcal/e35f64c8bdd57c2106d1 to your computer and use it in GitHub Desktop.
Arruma data de pagamento da porto seguro
File.open("log/change_bill_at_of_membership_recurrency.log", "w") do |file|
Membership.transaction do
location = Location.find_by_acronym("POR")
membership_recurrencies = MembershipRecurrency.find(location.active_memberships.map(&:membership_recurrency_id).uniq).select{ |mr| mr.bill_day != 1 }
membership_recurrencies.each do |membership_recurrency|
membership = membership_recurrency.memberships.active.first
file.puts "#{membership.person.id};#{membership.person.name};"
old_bill_day = membership_recurrency.bill_day
changer = BillAtChanger.new(membership, 1)
if changer.change!
file.puts "Atualizando pagamentos do dia #{old_bill_day} para o dia 1. Próximo pagamento ocorre em #{I18n.l(changer.change_begins_at, :format => '%B')} Membership: #{membership.id} Pagamentos: #{changer.send(:payments_to_change).map(&:id)}"
else
file.puts "Não foi possível atualizar data de pagamento."
end
end
end
end
@americodls
Copy link

  1. Acho que é bom fazer log do id da membership ou do pagamento específico que foi mudado.
  2. Imagino que deixar tudo dentro de uma transaction pode ser ruim pela quantidade de operações dentro da transaction. Você testou localmente na própria Porto?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment