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.
@@ -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