Financial
- A simple way to organize your money and costs, dates. Is just a table information to you know the exactly money you will have in your account.
Why?
- Solve my problems. Maybe this will solve yours problems.
Install
gem install financial
Usage
require 'financial'
include Financial::DSL
include Financial::PerCent
account :my_bank_account do
total 10 # current total
costs do
a_cost(400).in_date('7/30/2011')
other_cost(500).in_date('7/31/2011')
other_other_cost(100) # will use current date if dont pass a date option
credit_card(1000)
end
revenues do # or billing do
a_revenue(300).tax(200).in_date('09/20/2011') # the profit here will be 100 and the date of the a_revenue will be today and the tax date will be '09/20/2011'
other_revenue(500).in_date('07/15/2011').tax(6.per_cent).in_date('08/20/2011')
bill(2000).tax(12.per_cent)
developing_the_site_y 1000
developing_the_other_site 900
end
end
Obs:
- You can pass ANY NAME in the #revenues block and #costs block because is used method_missing feature.
- The tax method is a cost that will be a multiplication, and the profit will be calculate like the following: 500 * 0.06 == Profit! :)
- If you wanna subtract the revenue use the tax(:decreases => 200) option, and the profit will be calculate like that: 10 - 200
Print information in the terminal
And to print the information of bank account:
print_account :my_bank_account do
from('04/30/2011').to('07/16/2011')
end
Work with more than one bank account
account :other_bank do
total 30
deposits do
deposit(500).in_account(:my_bank_account) # The bank account above!
end
costs do
some_cost(500).in_date('07/20/2011')
end
end
OBS.:
- You can deposit in yours accounts objects or in accounts that don't exist
- If you deposit in a existent accountant then will decreases from this account and increase in that account that exists.
If you just like to get/find the object of bank account just do:
other_bank_account = Financial::Account.where account: :other_bank
:)
Print information of all accounts
Just pass :all option:
print_account :all do
from('04/30/2011').to('07/16/2011')
end
More Examples
See examples folder
Portuguese
Is possible to have a portuguese DSL with dates, and the language itself.
Then:
require 'financial'
Financial.locale = :pt
include Financial::DSL
include Financial::PerCent
conta :minha_conta do
total 215.0
depositos do
deposite(500).na_conta(:outra_conta).na_data('20/07/2011') # will add 500 in outra_conta in the 20 July 2011
end
despesas do
contador 100
end
faturamento do
nota_fiscal(1000).na_data('25/07/2011').imposto(6.por_cento).na_data('17/08/2011') # Will have a revenue of 1000 in 25 July 2011 BUT will have a tax cost of 6 per cent in 17 august 2011
end
end
# imprima_conta :minha_conta do
# de('20/03/2011').até('16/07/2011')
# end
imprima_conta :todos do
de('20/03/2011').até('16/07/2011')
end
# imprima_conta :todos do
# de('20/06/2011').até('16/07/2011')
# end
OUTPUT EXAMPLE
This is an output example from two_accounts.rb