Skip to content

Instantly share code, notes, and snippets.

@telagraphic
Last active August 29, 2015 14:18
Show Gist options
  • Save telagraphic/17d49ebc6ff51a1db3b3 to your computer and use it in GitHub Desktop.
Save telagraphic/17d49ebc6ff51a1db3b3 to your computer and use it in GitHub Desktop.
Accounter
require 'roo'
require 'spreadsheet'
namespace :finance do
task :import, [:sheet] => [:environment] do |t, args|
excel = File.join Rails.root, 'lib', 'assets', 'Ledger.xlsx'
book = Roo::Excelx.new(excel)
worksheet = book.sheet args[:sheet].to_i
(2..worksheet.last_row).each do |i|
next if worksheet.row(i)[1].nil?
debit = Debit.new
debit.trans_date = worksheet.row(i)[0]
debit.payment_type = worksheet.row(i)[1]
debit.description = worksheet.row(i)[2]
debit.amount = worksheet.row(i)[4].to_i
debit.notes = worksheet.row(i)[5]
category = FinancialCategory.find_or_create_by(name: worksheet.row(i)[3])
debit.financial_categories << category
debit.save
end
end
task :batch, :arg1 do |t, args|
puts args[:arg1]
end
end
require 'roo'
require 'spreadsheet'
namespace :goals do
desc "Import goals from excel"
task populate: :environment do
excelfile = File.join Rails.root, 'lib', 'assets', 'goals2.xlsx'
worksheet = Roo::Excelx.new(excelfile)
(2..worksheet.last_row).each do |i|
goal = Goal.new(
name: worksheet.row(i)[0],
priority: worksheet.row(i)[1].to_i,
intent: worksheet.row(i)[7],
start_date: worksheet.row(i)[4],
done_date: worksheet.row(i)[5]
)
goal.save
if worksheet.row(i)[8].nil?
puts "No specific example for " + worksheet.row(i)[0].to_s
else
worksheet.row(i)[8].strip!
worksheet.row(i)[8].split(". ").each do |ex|
goal.examples.create(description: ex.gsub(".", ""))
end
end
end
end
task expenses: :environment do
excelfile = File.join Rails.root, 'lib', 'assets', 'expense2.xlsx'
worksheet = Roo::Excelx.new(excelfile)
(2..worksheet.last_row).each do |i|
next if worksheet.row(i)[1].nil?
#puts worksheet.row(i).inspect
expense = Expense.new(
date: worksheet.row(i)[0],
expense_type: worksheet.row(i)[1],
description: worksheet.row(i)[2],
category: worksheet.row(i)[3],
amount: worksheet.row(i)[4],
notes: worksheet.row(i)[5]
)
puts expense.inspect
expense.save
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment