invoicing 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|