invoicing 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data.tar.gz.sig +0 -0
- data/History.txt +21 -0
- data/{Manifest → Manifest.txt} +13 -11
- data/PostInstall.txt +10 -0
- data/README.rdoc +55 -0
- data/Rakefile +30 -68
- data/lib/invoicing/currency_value.rb +113 -37
- data/lib/invoicing/ledger_item.rb +147 -28
- data/lib/invoicing/ledger_item/render_html.rb +3 -2
- data/lib/invoicing/ledger_item/render_ubl.rb +3 -2
- data/lib/invoicing/version.rb +1 -1
- data/script/console +10 -0
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/tasks/rcov.rake +4 -0
- data/test/currency_value_test.rb +25 -0
- data/test/ledger_item_test.rb +112 -30
- metadata +61 -50
- metadata.gz.sig +3 -0
- data/CHANGELOG +0 -3
- data/README +0 -48
- data/invoicing.gemspec +0 -41
- data/website/curvycorners.js +0 -1
- data/website/screen.css +0 -149
- data/website/template.html.erb +0 -43
@@ -262,6 +262,7 @@ module Invoicing
|
|
262
262
|
end
|
263
263
|
|
264
264
|
def default_address(details)
|
265
|
+
details = details.symbolize_keys
|
265
266
|
html = "#{indent*3}<div class=\"fn org\">#{ h(details[:name]) }</div>\n"
|
266
267
|
html << "#{indent*3}<div class=\"contact\">#{ h(details[:contact_name])}</div>\n" unless details[:contact_name].blank?
|
267
268
|
html << "#{indent*3}<div class=\"adr\">\n"
|
@@ -282,12 +283,12 @@ module Invoicing
|
|
282
283
|
end
|
283
284
|
|
284
285
|
def default_sender_tax_number(params)
|
285
|
-
sender_tax_number = get(:sender_details)[:tax_number]
|
286
|
+
sender_tax_number = get(:sender_details).symbolize_keys[:tax_number]
|
286
287
|
"#{params[:tax_number_label]}<span class=\"tax-number\">#{h(sender_tax_number)}</span>"
|
287
288
|
end
|
288
289
|
|
289
290
|
def default_recipient_tax_number(params)
|
290
|
-
recipient_tax_number = get(:recipient_details)[:tax_number]
|
291
|
+
recipient_tax_number = get(:recipient_details).symbolize_keys[:tax_number]
|
291
292
|
"#{params[:tax_number_label]}<span class=\"tax-number\">#{h(recipient_tax_number)}</span>"
|
292
293
|
end
|
293
294
|
|
@@ -56,10 +56,10 @@ module Invoicing
|
|
56
56
|
if [:invoice, :credit_note].include? subtype
|
57
57
|
if total_amount >= BigDecimal('0')
|
58
58
|
@factor = BigDecimal('1')
|
59
|
-
sender_details[:is_self] ? :Invoice : :SelfBilledInvoice
|
59
|
+
sender_details.symbolize_keys[:is_self] ? :Invoice : :SelfBilledInvoice
|
60
60
|
else
|
61
61
|
@factor = BigDecimal('-1')
|
62
|
-
sender_details[:is_self] ? :CreditNote : :SelfBilledCreditNote
|
62
|
+
sender_details.symbolize_keys[:is_self] ? :CreditNote : :SelfBilledCreditNote
|
63
63
|
end
|
64
64
|
else
|
65
65
|
raise RuntimeError, "render_ubl not implemented for ledger item subtype #{subtype.inspect}"
|
@@ -198,6 +198,7 @@ module Invoicing
|
|
198
198
|
# </cac:PostalAddress>
|
199
199
|
# </cac:Party>
|
200
200
|
def build_party(xml, details)
|
201
|
+
details = details.symbolize_keys
|
201
202
|
xml.cac :Party do |party|
|
202
203
|
party.cac :PartyName do |party_name|
|
203
204
|
party_name.cbc :Name, details[:name]
|
data/lib/invoicing/version.rb
CHANGED
data/script/console
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# File: script/console
|
3
|
+
irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
|
4
|
+
|
5
|
+
libs = " -r irb/completion"
|
6
|
+
# Perhaps use a console_lib to store any extra methods I may want available in the cosole
|
7
|
+
# libs << " -r #{File.dirname(__FILE__) + '/../lib/console_lib/console_logger.rb'}"
|
8
|
+
libs << " -r #{File.dirname(__FILE__) + '/../lib/invoicing.rb'}"
|
9
|
+
puts "Loading invoicing gem"
|
10
|
+
exec "#{irb} #{libs} --simple-prompt"
|
data/script/destroy
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
3
|
+
|
4
|
+
begin
|
5
|
+
require 'rubigen'
|
6
|
+
rescue LoadError
|
7
|
+
require 'rubygems'
|
8
|
+
require 'rubigen'
|
9
|
+
end
|
10
|
+
require 'rubigen/scripts/destroy'
|
11
|
+
|
12
|
+
ARGV.shift if ['--help', '-h'].include?(ARGV[0])
|
13
|
+
RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
|
14
|
+
RubiGen::Scripts::Destroy.new.run(ARGV)
|
data/script/generate
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
3
|
+
|
4
|
+
begin
|
5
|
+
require 'rubigen'
|
6
|
+
rescue LoadError
|
7
|
+
require 'rubygems'
|
8
|
+
require 'rubigen'
|
9
|
+
end
|
10
|
+
require 'rubigen/scripts/generate'
|
11
|
+
|
12
|
+
ARGV.shift if ['--help', '-h'].include?(ARGV[0])
|
13
|
+
RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
|
14
|
+
RubiGen::Scripts::Generate.new.run(ARGV)
|
data/tasks/rcov.rake
ADDED
data/test/currency_value_test.rb
CHANGED
@@ -49,10 +49,26 @@ class CurrencyValueTest < Test::Unit::TestCase
|
|
49
49
|
assert_equal "€ 95.15", EurosInFinlandRecord.find(1).amount_formatted
|
50
50
|
end
|
51
51
|
|
52
|
+
def test_format_with_options
|
53
|
+
assert_equal "0.02 €", CurrencyValueRecord.find(2).tax_amount_formatted(:suffix => true)
|
54
|
+
end
|
55
|
+
|
52
56
|
def test_format_custom_value
|
53
57
|
assert_equal "€1,357.90", CurrencyValueRecord.find(2).format_currency_value(BigDecimal('1357.9'))
|
54
58
|
end
|
55
59
|
|
60
|
+
def test_format_negative_value_with_minus
|
61
|
+
assert_equal "−€1,357.90", CurrencyValueRecord.find(2).format_currency_value(BigDecimal('-1357.9'))
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_format_negative_value_with_hyphen
|
65
|
+
assert_equal "-€1,357.90", CurrencyValueRecord.find(2).format_currency_value(BigDecimal('-1357.9'), :negative => :hyphen)
|
66
|
+
end
|
67
|
+
|
68
|
+
def test_format_negative_value_with_brackets
|
69
|
+
assert_equal "(€1,357.90)", CurrencyValueRecord.find(2).format_currency_value(BigDecimal('-1357.9'), :negative => :brackets)
|
70
|
+
end
|
71
|
+
|
56
72
|
def test_load_from_database_and_format
|
57
73
|
assert_equal BigDecimal('123.45'), CurrencyValueRecord.find(1).amount
|
58
74
|
assert_equal "£123.45", CurrencyValueRecord.find(1).amount_formatted
|
@@ -70,6 +86,15 @@ class CurrencyValueTest < Test::Unit::TestCase
|
|
70
86
|
assert_equal "$3.33", record.amount_formatted
|
71
87
|
end
|
72
88
|
|
89
|
+
def test_standalone_formatting
|
90
|
+
assert_equal "12.00 €", Invoicing::CurrencyValue::Formatter.format_value(:eur, 12, :suffix => true)
|
91
|
+
end
|
92
|
+
|
93
|
+
def test_standalone_currency_info
|
94
|
+
assert_equal({:code => 'USD', :symbol => '$', :round => 0.01, :suffix => false,
|
95
|
+
:space => false, :digits => 2}, Invoicing::CurrencyValue::Formatter.currency_info(:USD))
|
96
|
+
end
|
97
|
+
|
73
98
|
def test_assign_float_to_new_record_and_format
|
74
99
|
record = CurrencyValueRecord.new
|
75
100
|
record.amount = 44.44
|
data/test/ledger_item_test.rb
CHANGED
@@ -116,6 +116,18 @@ class LedgerItemTest < Test::Unit::TestCase
|
|
116
116
|
assert_equal '£15.00', record.tax_amount2_formatted
|
117
117
|
end
|
118
118
|
|
119
|
+
def test_total_amount_negative_debit
|
120
|
+
record = MyLedgerItem.find(5)
|
121
|
+
assert_equal '−$432.10', record.total_amount2_formatted(:debit => :negative, :self_id => record.recipient_id2)
|
122
|
+
assert_equal '$432.10', record.total_amount2_formatted(:debit => :negative, :self_id => record.sender_id2)
|
123
|
+
end
|
124
|
+
|
125
|
+
def test_total_amount_negative_credit
|
126
|
+
record = MyLedgerItem.find(5)
|
127
|
+
assert_equal '−$432.10', record.total_amount2_formatted(:credit => :negative, :self_id => record.sender_id2)
|
128
|
+
assert_equal '$432.10', record.total_amount2_formatted(:credit => :negative, :self_id => record.recipient_id2)
|
129
|
+
end
|
130
|
+
|
119
131
|
def test_net_amount
|
120
132
|
assert_equal BigDecimal('300'), MyInvoice.find(1).net_amount
|
121
133
|
end
|
@@ -249,6 +261,25 @@ class LedgerItemTest < Test::Unit::TestCase
|
|
249
261
|
ActiveRecord::Base.connection.select_all("SELECT total_amount2, tax_amount2 FROM ledger_item_records WHERE id2=9"))
|
250
262
|
end
|
251
263
|
|
264
|
+
def test_calculate_total_amount_for_updated_line_item
|
265
|
+
# This might occur while an invoice is still open
|
266
|
+
invoice = MyInvoice.find(9)
|
267
|
+
invoice.line_items2[0].net_amount2 = '20'
|
268
|
+
invoice.line_items2[0].tax_amount2 = 3
|
269
|
+
invoice.save!
|
270
|
+
assert_equal([{'total_amount2' => '23.0000', 'tax_amount2' => '3.0000'}],
|
271
|
+
ActiveRecord::Base.connection.select_all("SELECT total_amount2, tax_amount2 FROM ledger_item_records WHERE id2=9"))
|
272
|
+
assert_equal BigDecimal('23'), invoice.total_amount2
|
273
|
+
assert_equal BigDecimal('3'), invoice.tax_amount2
|
274
|
+
end
|
275
|
+
|
276
|
+
def test_do_not_overwrite_total_amount_for_payment_without_line_items
|
277
|
+
payment = MyPayment.new :total_amount2 => 23.45
|
278
|
+
payment.save!
|
279
|
+
assert_equal([{'total_amount2' => '23.4500'}],
|
280
|
+
ActiveRecord::Base.connection.select_all("SELECT total_amount2 FROM ledger_item_records WHERE id2=#{payment.id}"))
|
281
|
+
end
|
282
|
+
|
252
283
|
def test_line_items_error
|
253
284
|
assert_raise RuntimeError do
|
254
285
|
MyInvoice.find(1).line_items # not line_items2
|
@@ -268,49 +299,100 @@ class LedgerItemTest < Test::Unit::TestCase
|
|
268
299
|
end
|
269
300
|
|
270
301
|
def test_account_summary
|
271
|
-
summary =
|
272
|
-
|
273
|
-
|
274
|
-
assert_equal summary
|
302
|
+
summary = MyLedgerItem.account_summary(1, 2)
|
303
|
+
assert_equal [:GBP], summary.keys
|
304
|
+
assert_equal BigDecimal('257.50'), summary[:GBP].sales
|
305
|
+
assert_equal BigDecimal('141.97'), summary[:GBP].purchases
|
306
|
+
assert_equal BigDecimal('256.50'), summary[:GBP].sale_receipts
|
307
|
+
assert_equal BigDecimal('0.00'), summary[:GBP].purchase_payments
|
308
|
+
assert_equal BigDecimal('-140.97'), summary[:GBP].balance
|
275
309
|
end
|
276
310
|
|
277
311
|
def test_account_summary_with_scope
|
278
|
-
summary = {:GBP => {:sales => BigDecimal('257.50'), :purchases => BigDecimal('0.00'),
|
279
|
-
:sale_receipts => BigDecimal('256.50'), :purchase_payments => BigDecimal('0.00'),
|
280
|
-
:balance => BigDecimal('1.00')}}
|
281
312
|
conditions = ['issue_date2 >= ? AND issue_date2 < ?', DateTime.parse('2008-01-01'), DateTime.parse('2009-01-01')]
|
282
|
-
|
313
|
+
summary = MyLedgerItem.scoped(:conditions => conditions).account_summary(1, 2)
|
314
|
+
assert_equal BigDecimal('257.50'), summary[:GBP].sales
|
315
|
+
assert_equal BigDecimal('0.00'), summary[:GBP].purchases
|
316
|
+
assert_equal BigDecimal('256.50'), summary[:GBP].sale_receipts
|
317
|
+
assert_equal BigDecimal('0.00'), summary[:GBP].purchase_payments
|
318
|
+
assert_equal BigDecimal('1.00'), summary[:GBP].balance
|
283
319
|
end
|
284
320
|
|
285
321
|
def test_account_summaries
|
286
|
-
summaries =
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
assert_equal summaries
|
322
|
+
summaries = MyLedgerItem.account_summaries(2)
|
323
|
+
assert_equal [1, 3], summaries.keys
|
324
|
+
assert_equal [:GBP], summaries[1].keys
|
325
|
+
assert_equal BigDecimal('257.50'), summaries[1][:GBP].purchases
|
326
|
+
assert_equal BigDecimal('141.97'), summaries[1][:GBP].sales
|
327
|
+
assert_equal BigDecimal('256.50'), summaries[1][:GBP].purchase_payments
|
328
|
+
assert_equal BigDecimal('0.00'), summaries[1][:GBP].sale_receipts
|
329
|
+
assert_equal BigDecimal('140.97'), summaries[1][:GBP].balance
|
330
|
+
assert_equal [:USD], summaries[3].keys
|
331
|
+
assert_equal BigDecimal('0.00'), summaries[3][:USD].purchases
|
332
|
+
assert_equal BigDecimal('0.00'), summaries[3][:USD].sales
|
333
|
+
assert_equal BigDecimal('0.00'), summaries[3][:USD].purchase_payments
|
334
|
+
assert_equal BigDecimal('432.10'), summaries[3][:USD].sale_receipts
|
335
|
+
assert_equal BigDecimal('-432.10'), summaries[3][:USD].balance
|
297
336
|
end
|
298
337
|
|
299
338
|
def test_account_summaries_with_scope
|
300
|
-
summaries = {
|
301
|
-
1 => {:GBP => {:balance => BigDecimal('-315.00'), :sales => BigDecimal('0.00'),
|
302
|
-
:purchases => BigDecimal('315.00'), :sale_receipts => BigDecimal('0.00'),
|
303
|
-
:purchase_payments => BigDecimal('0.00')}
|
304
|
-
},
|
305
|
-
3 => {:USD => {:balance => BigDecimal('-432.10'), :sales => BigDecimal('0.00'),
|
306
|
-
:purchases => BigDecimal('0.00'), :sale_receipts => BigDecimal('432.10'),
|
307
|
-
:purchase_payments => BigDecimal('0.00')}
|
308
|
-
}
|
309
|
-
}
|
310
339
|
conditions = {:conditions => ['issue_date2 < ?', DateTime.parse('2008-07-01')]}
|
311
|
-
|
340
|
+
summaries = MyLedgerItem.scoped(conditions).account_summaries(2)
|
341
|
+
assert_equal [1, 3], summaries.keys
|
342
|
+
assert_equal [:GBP], summaries[1].keys
|
343
|
+
assert_equal BigDecimal('315.00'), summaries[1][:GBP].purchases
|
344
|
+
assert_equal BigDecimal('0.00'), summaries[1][:GBP].sales
|
345
|
+
assert_equal BigDecimal('0.00'), summaries[1][:GBP].purchase_payments
|
346
|
+
assert_equal BigDecimal('0.00'), summaries[1][:GBP].sale_receipts
|
347
|
+
assert_equal BigDecimal('-315.00'), summaries[1][:GBP].balance
|
348
|
+
assert_equal [:USD], summaries[3].keys
|
349
|
+
assert_equal BigDecimal('0.00'), summaries[3][:USD].purchases
|
350
|
+
assert_equal BigDecimal('0.00'), summaries[3][:USD].sales
|
351
|
+
assert_equal BigDecimal('0.00'), summaries[3][:USD].purchase_payments
|
352
|
+
assert_equal BigDecimal('432.10'), summaries[3][:USD].sale_receipts
|
353
|
+
assert_equal BigDecimal('-432.10'), summaries[3][:USD].balance
|
354
|
+
end
|
355
|
+
|
356
|
+
def test_account_summary_over_all_others
|
357
|
+
summary = MyLedgerItem.account_summary(1)
|
358
|
+
assert_equal [:GBP], summary.keys
|
359
|
+
assert_equal BigDecimal('257.50'), summary[:GBP].sales
|
360
|
+
assert_equal BigDecimal('666808.63'), summary[:GBP].purchases
|
361
|
+
assert_equal BigDecimal('256.50'), summary[:GBP].sale_receipts
|
362
|
+
assert_equal BigDecimal('0.00'), summary[:GBP].purchase_payments
|
363
|
+
assert_equal BigDecimal('-666807.63'), summary[:GBP].balance
|
364
|
+
end
|
365
|
+
|
366
|
+
def test_account_summary_to_s
|
367
|
+
assert_equal "sales = £257.50; purchases = £666,808.63; sale_receipts = £256.50; " +
|
368
|
+
"purchase_payments = £0.00; balance = −£666,807.63", MyLedgerItem.account_summary(1)[:GBP].to_s
|
369
|
+
end
|
370
|
+
|
371
|
+
def test_account_summary_formatting
|
372
|
+
summary = MyLedgerItem.account_summary(1, 2)
|
373
|
+
assert_equal [:GBP], summary.keys
|
374
|
+
assert_equal '£257.50', summary[:GBP].sales_formatted
|
375
|
+
assert_equal '£141.97', summary[:GBP].purchases_formatted
|
376
|
+
assert_equal '£256.50', summary[:GBP].sale_receipts_formatted
|
377
|
+
assert_equal '£0.00', summary[:GBP].purchase_payments_formatted
|
378
|
+
assert_equal '−£140.97', summary[:GBP].balance_formatted
|
379
|
+
end
|
380
|
+
|
381
|
+
def test_account_summary_object_call_unknown_method
|
382
|
+
assert_raise NoMethodError do
|
383
|
+
MyLedgerItem.account_summary(1, 2)[:GBP].this_method_does_not_exist
|
384
|
+
end
|
312
385
|
end
|
313
386
|
|
387
|
+
def test_sender_recipient_name_map_all
|
388
|
+
assert_equal({1 => 'Unlimited Limited', 2 => 'Lovely Customer Inc.', 3 => 'I drink milk',
|
389
|
+
4 => 'The taxman'}, MyLedgerItem.sender_recipient_name_map([1,2,3,4]))
|
390
|
+
end
|
391
|
+
|
392
|
+
def test_sender_recipient_name_map_subset
|
393
|
+
assert_equal({1 => 'Unlimited Limited', 3 => 'I drink milk'}, MyLedgerItem.sender_recipient_name_map([1,3]))
|
394
|
+
end
|
395
|
+
|
314
396
|
def test_sent_by_scope
|
315
397
|
assert_equal [2,5], MyLedgerItem.sent_by(2).map{|i| i.id}.sort
|
316
398
|
end
|
metadata
CHANGED
@@ -1,15 +1,36 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: invoicing
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martin Kleppmann
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
|
-
cert_chain:
|
10
|
+
cert_chain:
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
MIIDQjCCAiqgAwIBAgIBADANBgkqhkiG9w0BAQUFADBHMRIwEAYDVQQDDAlydWJ5
|
14
|
+
Zm9yZ2UxHDAaBgoJkiaJk/IsZAEZFgxlcHRjb21wdXRpbmcxEzARBgoJkiaJk/Is
|
15
|
+
ZAEZFgNjb20wHhcNMDkwNDE0MTkwMTIwWhcNMTAwNDE0MTkwMTIwWjBHMRIwEAYD
|
16
|
+
VQQDDAlydWJ5Zm9yZ2UxHDAaBgoJkiaJk/IsZAEZFgxlcHRjb21wdXRpbmcxEzAR
|
17
|
+
BgoJkiaJk/IsZAEZFgNjb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
|
18
|
+
AQDTglrdKabHepgLjgzM1Z52ABCZZ/xsBbn+4pE2jm7aGj2c0fZ+5Uhg0/MfyKsz
|
19
|
+
g3jEFjj0GeNFW7l1sHJYf8mTrdCyAuaymyB2LcLwPtte7/3daAWcs6wAJR8nm9xa
|
20
|
+
CzoeAFjCLcbhZazNBURMizj1z9eTArxhpfpNw4uSIExxNRoykeiFGZ4iq5Getj5x
|
21
|
+
B/JNTdxM7m2KLx+3YKp2LsV0NLL7hRp6zZ6KW1NTWt1mQ58SjDUiRhThfxPfVpCA
|
22
|
+
NI3O+ikDERJWo+nLMUNAZXiB6iMimgUNIUm462tbrumloEjQ/wJE6veGyCRS4jfq
|
23
|
+
Ldnuf6CKFRIxhb9QaN+cu0lLAgMBAAGjOTA3MAkGA1UdEwQCMAAwCwYDVR0PBAQD
|
24
|
+
AgSwMB0GA1UdDgQWBBRR5pYhCiPVxI3rYNDwFcCSqOUGOTANBgkqhkiG9w0BAQUF
|
25
|
+
AAOCAQEAnrM8+tf8f5y8icgcWErHTZZ6oInZxbH8DbAbJ9zIdD/u2o8agzykc/ub
|
26
|
+
Kza0RLJoINt0f1Bb6hzIja82EPeEEQKgR6BJAwPZlxZLGYBTyZeZRy3PJ8IjQ9Zk
|
27
|
+
Fl6OOjmxFfjgF0UGvFHPYUJaNtN8kPs2lyZYmmUrf7qF0n6nwShnVkYePUlvyW0i
|
28
|
+
kqloUNEB5PbHhEwmSTSYOseqm2l2rOAgN3aKVzNFWiMjzZn8OwYaETtD83yB9zlK
|
29
|
+
hqnkWqtTW1V1mEZRyNIx71QdrsaovPQhIKp0bMFUwntYXklVKqxYGHebwt//Gb++
|
30
|
+
jT4Qh3sYJbvqWGFAQcuOIf4spvpNiA==
|
31
|
+
-----END CERTIFICATE-----
|
11
32
|
|
12
|
-
date: 2009-
|
33
|
+
date: 2009-04-20 00:00:00 +01:00
|
13
34
|
default_executable:
|
14
35
|
dependencies:
|
15
36
|
- !ruby/object:Gem::Dependency
|
@@ -29,75 +50,74 @@ dependencies:
|
|
29
50
|
version_requirements: !ruby/object:Gem::Requirement
|
30
51
|
requirements:
|
31
52
|
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: "0"
|
34
|
-
- - "="
|
35
53
|
- !ruby/object:Gem::Version
|
36
54
|
version: "2.0"
|
37
55
|
version:
|
38
56
|
- !ruby/object:Gem::Dependency
|
39
|
-
name:
|
57
|
+
name: newgem
|
58
|
+
type: :development
|
59
|
+
version_requirement:
|
60
|
+
version_requirements: !ruby/object:Gem::Requirement
|
61
|
+
requirements:
|
62
|
+
- - ">="
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: 1.3.0
|
65
|
+
version:
|
66
|
+
- !ruby/object:Gem::Dependency
|
67
|
+
name: hoe
|
40
68
|
type: :development
|
41
69
|
version_requirement:
|
42
70
|
version_requirements: !ruby/object:Gem::Requirement
|
43
71
|
requirements:
|
44
72
|
- - ">="
|
45
73
|
- !ruby/object:Gem::Version
|
46
|
-
version:
|
74
|
+
version: 1.8.0
|
47
75
|
version:
|
48
|
-
description:
|
49
|
-
email:
|
76
|
+
description: This is a framework for generating and displaying invoices (ideal for commercial Rails apps). It allows for flexible business logic; provides tools for tax handling, commission calculation etc. It aims to be both developer-friendly and accountant-friendly. The Ruby Invoicing Framework is based on {ActiveRecord}[http://api.rubyonrails.org/classes/ActiveRecord/Base.html]. Please see {the website}[http://ept.github.com/invoicing/] for an introduction to using Invoicing, and check the {API reference}[http://invoicing.rubyforge.org/doc/] for in-depth details.
|
77
|
+
email:
|
78
|
+
- rubyforge@eptcomputing.com
|
50
79
|
executables: []
|
51
80
|
|
52
81
|
extensions: []
|
53
82
|
|
54
83
|
extra_rdoc_files:
|
55
|
-
-
|
56
|
-
-
|
57
|
-
-
|
58
|
-
-
|
59
|
-
- lib/invoicing/countries/uk.rb
|
60
|
-
- lib/invoicing/currency_value.rb
|
61
|
-
- lib/invoicing/find_subclasses.rb
|
62
|
-
- lib/invoicing/ledger_item/render_html.rb
|
63
|
-
- lib/invoicing/ledger_item/render_ubl.rb
|
64
|
-
- lib/invoicing/ledger_item.rb
|
65
|
-
- lib/invoicing/line_item.rb
|
66
|
-
- lib/invoicing/price.rb
|
67
|
-
- lib/invoicing/tax_rate.rb
|
68
|
-
- lib/invoicing/taxable.rb
|
69
|
-
- lib/invoicing/time_dependent.rb
|
70
|
-
- lib/invoicing/version.rb
|
71
|
-
- lib/invoicing.rb
|
72
|
-
- LICENSE
|
73
|
-
- README
|
84
|
+
- History.txt
|
85
|
+
- Manifest.txt
|
86
|
+
- PostInstall.txt
|
87
|
+
- README.rdoc
|
74
88
|
files:
|
75
|
-
-
|
89
|
+
- History.txt
|
90
|
+
- LICENSE
|
91
|
+
- Manifest.txt
|
92
|
+
- PostInstall.txt
|
93
|
+
- README.rdoc
|
94
|
+
- Rakefile
|
95
|
+
- lib/invoicing.rb
|
76
96
|
- lib/invoicing/cached_record.rb
|
77
97
|
- lib/invoicing/class_info.rb
|
78
98
|
- lib/invoicing/connection_adapter_ext.rb
|
79
99
|
- lib/invoicing/countries/uk.rb
|
80
100
|
- lib/invoicing/currency_value.rb
|
81
101
|
- lib/invoicing/find_subclasses.rb
|
102
|
+
- lib/invoicing/ledger_item.rb
|
82
103
|
- lib/invoicing/ledger_item/render_html.rb
|
83
104
|
- lib/invoicing/ledger_item/render_ubl.rb
|
84
|
-
- lib/invoicing/ledger_item.rb
|
85
105
|
- lib/invoicing/line_item.rb
|
86
106
|
- lib/invoicing/price.rb
|
87
107
|
- lib/invoicing/tax_rate.rb
|
88
108
|
- lib/invoicing/taxable.rb
|
89
109
|
- lib/invoicing/time_dependent.rb
|
90
110
|
- lib/invoicing/version.rb
|
91
|
-
-
|
92
|
-
-
|
93
|
-
-
|
94
|
-
-
|
95
|
-
- README
|
111
|
+
- script/console
|
112
|
+
- script/destroy
|
113
|
+
- script/generate
|
114
|
+
- tasks/rcov.rake
|
96
115
|
- test/cached_record_test.rb
|
97
116
|
- test/class_info_test.rb
|
98
117
|
- test/connection_adapter_ext_test.rb
|
99
118
|
- test/currency_value_test.rb
|
100
119
|
- test/find_subclasses_test.rb
|
120
|
+
- test/fixtures/README
|
101
121
|
- test/fixtures/cached_record.sql
|
102
122
|
- test/fixtures/class_info.sql
|
103
123
|
- test/fixtures/currency_value.sql
|
@@ -105,7 +125,6 @@ files:
|
|
105
125
|
- test/fixtures/ledger_item.sql
|
106
126
|
- test/fixtures/line_item.sql
|
107
127
|
- test/fixtures/price.sql
|
108
|
-
- test/fixtures/README
|
109
128
|
- test/fixtures/tax_rate.sql
|
110
129
|
- test/fixtures/taxable.sql
|
111
130
|
- test/fixtures/time_dependent.sql
|
@@ -129,20 +148,12 @@ files:
|
|
129
148
|
- test/taxable_test.rb
|
130
149
|
- test/test_helper.rb
|
131
150
|
- test/time_dependent_test.rb
|
132
|
-
- website/curvycorners.js
|
133
|
-
- website/screen.css
|
134
|
-
- website/template.html.erb
|
135
|
-
- invoicing.gemspec
|
136
151
|
has_rdoc: true
|
137
|
-
homepage: http://
|
138
|
-
post_install_message:
|
152
|
+
homepage: "{Ruby Invoicing Framework website}[http://ept.github.com/invoicing/]"
|
153
|
+
post_install_message: PostInstall.txt
|
139
154
|
rdoc_options:
|
140
|
-
- --line-numbers
|
141
|
-
- --inline-source
|
142
|
-
- --title
|
143
|
-
- Invoicing
|
144
155
|
- --main
|
145
|
-
- README
|
156
|
+
- README.rdoc
|
146
157
|
require_paths:
|
147
158
|
- lib
|
148
159
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -155,7 +166,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
155
166
|
requirements:
|
156
167
|
- - ">="
|
157
168
|
- !ruby/object:Gem::Version
|
158
|
-
version: "
|
169
|
+
version: "0"
|
159
170
|
version:
|
160
171
|
requirements: []
|
161
172
|
|
@@ -163,7 +174,7 @@ rubyforge_project: invoicing
|
|
163
174
|
rubygems_version: 1.3.1
|
164
175
|
signing_key:
|
165
176
|
specification_version: 2
|
166
|
-
summary:
|
177
|
+
summary: This is a framework for generating and displaying invoices (ideal for commercial Rails apps)
|
167
178
|
test_files:
|
168
179
|
- test/cached_record_test.rb
|
169
180
|
- test/class_info_test.rb
|