invoicing 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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]
@@ -1,7 +1,7 @@
1
1
  module Invoicing
2
2
  module Version
3
3
  MAJOR = 0
4
- MINOR = 1
4
+ MINOR = 2
5
5
  BUILD = 0
6
6
 
7
7
  def to_a
@@ -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"
@@ -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)
@@ -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)
@@ -0,0 +1,4 @@
1
+ desc "Run tests in rcov to analyse code coverage"
2
+ task :coverage do
3
+ exec "rcov -x '/Library/' -T test/*_test.rb"
4
+ end
@@ -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
@@ -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 = {:GBP => {:sales => BigDecimal('257.50'), :purchases => BigDecimal('141.97'),
272
- :sale_receipts => BigDecimal('256.50'), :purchase_payments => BigDecimal('0.00'),
273
- :balance => BigDecimal('-140.97')}}
274
- assert_equal summary, MyLedgerItem.account_summary(1, 2)
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
- assert_equal summary, MyLedgerItem.scoped(:conditions => conditions).account_summary(1, 2)
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
- 1 => {:GBP => {:balance => BigDecimal('140.97'), :sales => BigDecimal('141.97'),
288
- :purchases => BigDecimal('257.50'), :sale_receipts => BigDecimal('0.00'),
289
- :purchase_payments => BigDecimal('256.50')}
290
- },
291
- 3 => {:USD => {:balance => BigDecimal('-432.10'), :sales => BigDecimal('0.00'),
292
- :purchases => BigDecimal('0.00'), :sale_receipts => BigDecimal('432.10'),
293
- :purchase_payments => BigDecimal('0.00')}
294
- }
295
- }
296
- assert_equal summaries, MyLedgerItem.account_summaries(2)
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
- assert_equal summaries, MyLedgerItem.scoped(conditions).account_summaries(2)
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.1.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-02-10 00:00:00 +00:00
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: echoe
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: "0"
74
+ version: 1.8.0
47
75
  version:
48
- description: Provides tools for applications which need to generate invoices for customers.
49
- email: rubyforge@eptcomputing.com
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
- - CHANGELOG
56
- - lib/invoicing/cached_record.rb
57
- - lib/invoicing/class_info.rb
58
- - lib/invoicing/connection_adapter_ext.rb
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
- - CHANGELOG
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
- - lib/invoicing.rb
92
- - LICENSE
93
- - Manifest
94
- - Rakefile
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://invoicing.rubyforge.org/
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: "1.2"
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: Ruby invoicing framework
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