invoicing 0.2.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (78) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +1 -0
  3. data/README.md +57 -0
  4. data/Rakefile +16 -37
  5. data/lib/invoicing.rb +20 -10
  6. data/lib/invoicing/cached_record.rb +9 -6
  7. data/lib/invoicing/class_info.rb +34 -34
  8. data/lib/invoicing/connection_adapter_ext.rb +4 -4
  9. data/lib/invoicing/countries/uk.rb +6 -6
  10. data/lib/invoicing/currency_value.rb +39 -32
  11. data/lib/invoicing/find_subclasses.rb +40 -15
  12. data/lib/invoicing/ledger_item.rb +166 -145
  13. data/lib/invoicing/ledger_item/pdf_generator.rb +108 -0
  14. data/lib/invoicing/ledger_item/render_html.rb +76 -73
  15. data/lib/invoicing/ledger_item/render_ubl.rb +37 -35
  16. data/lib/invoicing/line_item.rb +43 -38
  17. data/lib/invoicing/price.rb +1 -1
  18. data/lib/invoicing/tax_rate.rb +3 -6
  19. data/lib/invoicing/taxable.rb +37 -32
  20. data/lib/invoicing/time_dependent.rb +40 -40
  21. data/lib/invoicing/version.rb +4 -4
  22. data/lib/rails/generators/invoicing/invoicing_generator.rb +14 -0
  23. data/lib/rails/generators/invoicing/ledger_item/ledger_item_generator.rb +17 -0
  24. data/lib/rails/generators/invoicing/ledger_item/templates/migration.rb +25 -0
  25. data/lib/rails/generators/invoicing/ledger_item/templates/model.rb +5 -0
  26. data/lib/rails/generators/invoicing/line_item/line_item_generator.rb +17 -0
  27. data/lib/rails/generators/invoicing/line_item/templates/migration.rb +20 -0
  28. data/lib/rails/generators/invoicing/line_item/templates/model.rb +5 -0
  29. data/lib/rails/generators/invoicing/tax_rate/tax_rate_generator.rb +17 -0
  30. data/lib/rails/generators/invoicing/tax_rate/templates/migration.rb +14 -0
  31. data/lib/rails/generators/invoicing/tax_rate/templates/model.rb +3 -0
  32. metadata +110 -153
  33. data.tar.gz.sig +0 -1
  34. data/History.txt +0 -31
  35. data/Manifest.txt +0 -62
  36. data/PostInstall.txt +0 -10
  37. data/README.rdoc +0 -58
  38. data/script/console +0 -10
  39. data/script/destroy +0 -14
  40. data/script/generate +0 -14
  41. data/tasks/rcov.rake +0 -4
  42. data/test/cached_record_test.rb +0 -100
  43. data/test/class_info_test.rb +0 -253
  44. data/test/connection_adapter_ext_test.rb +0 -79
  45. data/test/currency_value_test.rb +0 -209
  46. data/test/find_subclasses_test.rb +0 -120
  47. data/test/fixtures/README +0 -7
  48. data/test/fixtures/cached_record.sql +0 -22
  49. data/test/fixtures/class_info.sql +0 -28
  50. data/test/fixtures/currency_value.sql +0 -29
  51. data/test/fixtures/find_subclasses.sql +0 -43
  52. data/test/fixtures/ledger_item.sql +0 -39
  53. data/test/fixtures/line_item.sql +0 -33
  54. data/test/fixtures/price.sql +0 -4
  55. data/test/fixtures/tax_rate.sql +0 -4
  56. data/test/fixtures/taxable.sql +0 -14
  57. data/test/fixtures/time_dependent.sql +0 -35
  58. data/test/ledger_item_test.rb +0 -444
  59. data/test/line_item_test.rb +0 -139
  60. data/test/models/README +0 -4
  61. data/test/models/test_subclass_in_another_file.rb +0 -3
  62. data/test/models/test_subclass_not_in_database.rb +0 -6
  63. data/test/price_test.rb +0 -9
  64. data/test/ref-output/creditnote3.html +0 -82
  65. data/test/ref-output/creditnote3.xml +0 -89
  66. data/test/ref-output/invoice1.html +0 -93
  67. data/test/ref-output/invoice1.xml +0 -111
  68. data/test/ref-output/invoice2.html +0 -86
  69. data/test/ref-output/invoice2.xml +0 -98
  70. data/test/ref-output/invoice_null.html +0 -36
  71. data/test/render_html_test.rb +0 -70
  72. data/test/render_ubl_test.rb +0 -44
  73. data/test/setup.rb +0 -37
  74. data/test/tax_rate_test.rb +0 -9
  75. data/test/taxable_test.rb +0 -180
  76. data/test/test_helper.rb +0 -72
  77. data/test/time_dependent_test.rb +0 -180
  78. metadata.gz.sig +0 -4
@@ -1,139 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require File.join(File.dirname(__FILE__), 'test_helper.rb')
4
-
5
- ####### Helper stuff
6
-
7
- module LineItemMethods
8
- RENAMED_METHODS = {
9
- :id => :id2, :type => :type2, :ledger_item_id => :ledger_item_id2,
10
- :net_amount => :net_amount2, :tax_amount => :tax_amount2,
11
- :description => :description2, :uuid => :uuid2, :tax_point => :tax_point2,
12
- :tax_rate_id => :tax_rate_id2, :price_id => :price_id2,
13
- :quantity => :quantity2, :creator_id => :creator_id2, :ledger_item => :ledger_item2
14
- }
15
-
16
- def description2
17
- "moo"
18
- end
19
- end
20
-
21
-
22
- ####### Classes for use in the tests (also used by LedgerItemTest)
23
-
24
- class SuperLineItem < ActiveRecord::Base
25
- set_primary_key 'id2'
26
- set_inheritance_column 'type2'
27
- set_table_name 'line_item_records'
28
- include LineItemMethods
29
- acts_as_line_item RENAMED_METHODS
30
- belongs_to :ledger_item2, :class_name => 'MyLedgerItem', :foreign_key => 'ledger_item_id2'
31
- end
32
-
33
- class SubLineItem < SuperLineItem
34
- def description2
35
- "this is the SubLineItem"
36
- end
37
- end
38
-
39
- class OtherLineItem < SuperLineItem
40
- end
41
-
42
- class UntaxedLineItem < SuperLineItem
43
- end
44
-
45
- class UUIDNotPresentLineItem < ActiveRecord::Base
46
- set_primary_key 'id2'
47
- set_inheritance_column 'type2'
48
- set_table_name 'line_item_records'
49
- include LineItemMethods
50
-
51
- def get_class_info
52
- line_item_class_info
53
- end
54
- end
55
-
56
- class OverwrittenMethodsNotPresentLineItem < ActiveRecord::Base
57
- set_primary_key 'id2'
58
- set_inheritance_column 'type2'
59
- set_table_name 'line_item_records'
60
- acts_as_line_item LineItemMethods::RENAMED_METHODS
61
- end
62
-
63
-
64
- ####### The actual tests
65
-
66
- class LineItemTest < Test::Unit::TestCase
67
-
68
- def test_net_amount_is_currency_value
69
- assert_equal '$432.10', UntaxedLineItem.find(4).net_amount2_formatted
70
- end
71
-
72
- def test_tax_amount_is_currency_value
73
- assert_equal '£15.00', SuperLineItem.find(1).tax_amount2_formatted
74
- end
75
-
76
- def test_gross_amount
77
- assert_equal BigDecimal('115'), SuperLineItem.find(1).gross_amount
78
- end
79
-
80
- def test_gross_amount_formatted
81
- assert_equal '£115.00', SuperLineItem.find(1).gross_amount_formatted
82
- end
83
-
84
- def test_assign_uuid_to_new_record
85
- record = SuperLineItem.new
86
- begin
87
- UUID
88
- uuid_gem_available = true
89
- rescue NameError
90
- uuid_gem_available = false
91
- end
92
- if uuid_gem_available
93
- assert_match /^[0-9a-f]{8}\-[0-9a-f]{4}\-[0-9a-f]{4}\-[0-9a-f]{4}\-[0-9a-f]{12}$/, record.uuid2
94
- else
95
- assert record.uuid2.blank?
96
- puts "Warning: uuid gem not installed -- not testing UUID generation"
97
- end
98
- end
99
-
100
- def test_uuid_gem_not_present
101
- begin
102
- real_uuid = Object.send(:remove_const, :UUID) rescue nil
103
- UUIDNotPresentLineItem.acts_as_line_item(LineItemMethods::RENAMED_METHODS)
104
- assert_nil UUIDNotPresentLineItem.new.get_class_info.uuid_generator
105
- ensure
106
- Object.send(:const_set, :UUID, real_uuid) unless real_uuid.nil?
107
- end
108
- end
109
-
110
- def test_must_provide_ledger_item_association
111
- assert_raise RuntimeError do
112
- OverwrittenMethodsNotPresentLineItem.new.ledger_item
113
- end
114
- end
115
-
116
- def test_ledger_item_error
117
- assert_raise RuntimeError do
118
- SuperLineItem.find(1).ledger_item # not ledger_item2
119
- end
120
- end
121
-
122
- def test_currency
123
- assert_equal 'GBP', SubLineItem.find(2).currency
124
- end
125
-
126
- def test_in_effect_scope
127
- assert_equal [1,2,3,4,5,6,7,8], SuperLineItem.all.map{|i| i.id}.sort
128
- assert_equal [1,2,3,4,5,6], SuperLineItem.in_effect.map{|i| i.id}.sort
129
- end
130
-
131
- def test_sorted_scope
132
- assert_equal [4,2,1,5,3,6,7,8], SuperLineItem.sorted(:tax_point).map{|i| i.id}
133
- end
134
-
135
- def test_sorted_scope_with_non_existent_column
136
- assert_equal [1,2,3,4,5,6,7,8], SuperLineItem.sorted(:this_column_does_not_exist).map{|i| i.id}
137
- end
138
-
139
- end
@@ -1,4 +0,0 @@
1
- This folder contains model object definitions used by the tests in the 'test' folder;
2
- it is included in ActiveSupport::Dependencies.load_paths but not 'require'd directly,
3
- so that we can test the effect which the ActiveSupport dependency resolution has on
4
- our code.
@@ -1,3 +0,0 @@
1
- # Used by find_subclasses_test.rb
2
- class TestSubclassInAnotherFile < TestBaseclass
3
- end
@@ -1,6 +0,0 @@
1
- # Please do not require this file or the class name TestSubclassNotInDatabase
2
- # anywhere. The whole point of it is that it is a subclass of TestBaseclass
3
- # which exists, but is never loaded, because it isn't mentioned anywhere.
4
- # FindSubclassesTest#test_known_subclasses tests this.
5
- class TestSubclassNotInDatabase < TestBaseclass
6
- end
@@ -1,9 +0,0 @@
1
- require File.join(File.dirname(__FILE__), 'test_helper.rb')
2
-
3
- class PriceTest < Test::Unit::TestCase
4
-
5
- def test_should_be_true
6
- assert_equal(1,1)
7
- end
8
-
9
- end
@@ -1,82 +0,0 @@
1
- <h1 class="invoice">Credit Note</h1>
2
- <table class="invoice addresses">
3
- <tr>
4
- <th class="recipient">Recipient</th>
5
- <th class="sender">Sender</th>
6
- </tr>
7
- <tr>
8
- <td class="recipient vcard">
9
- <div class="fn org">Lovely Customer Inc.</div>
10
- <div class="contact">Fred</div>
11
- <div class="adr">
12
- <span class="street-address">The pasture</span><br />
13
- <span class="locality">Mootown</span><br />
14
- <span class="region">Cow Kingdom</span><br />
15
- <span class="postal-code">MOOO</span><br />
16
- <span class="country-name">Scotland</span>
17
- </div>
18
- </td>
19
- <td class="sender vcard">
20
- <div class="fn org">Unlimited Limited</div>
21
- <div class="contact">Mr B. Badger</div>
22
- <div class="adr">
23
- <span class="street-address">The Sett<br />5 Badger Lane</span><br />
24
- <span class="locality">Badgertown</span><br />
25
- <span class="postal-code">Badger999</span><br />
26
- <span class="country-name">England</span>
27
- </div>
28
- </td>
29
- </tr>
30
- <tr>
31
- <td class="recipient">
32
- VAT number:<br /><span class="tax-number">987654321</span>
33
- </td>
34
- <td class="sender">
35
- VAT number:<br /><span class="tax-number">123456789</span>
36
- </td>
37
- </tr>
38
- </table>
39
- <table class="invoice metadata">
40
- <tr class="identifier">
41
- <th>Credit Note no.:</th>
42
- <td>putain!</td>
43
- </tr>
44
- <tr class="issue-date">
45
- <th>Issue date:</th>
46
- <td>2008-07-13</td>
47
- </tr>
48
- <tr class="period-start">
49
- <th>Period from:</th>
50
- <td>2008-06-01</td>
51
- </tr>
52
- <tr class="period-end">
53
- <th>Period until:</th>
54
- <td>2008-07-01</td>
55
- </tr>
56
- </table>
57
- <p class="invoice description">MyCreditNote 3</p>
58
- <table class="invoice line-items">
59
- <tr>
60
- <th class="tax-point">Tax point</th>
61
- <th class="quantity">Quantity</th>
62
- <th class="description">Description</th>
63
- <th class="net-amount">Net price</th>
64
- <th class="tax-amount">VAT</th>
65
- </tr>
66
- <tr>
67
- <td class="tax-point">2008-07-13</td>
68
- <td class="quantity">0.5</td>
69
- <td class="description">moo</td>
70
- <td class="net-amount">£50.00</td>
71
- <td class="tax-amount">£7.50</td>
72
- </tr>
73
- <tr class="subtotal">
74
- <th colspan="3">Subtotal</th>
75
- <td class="net-amount">Net: £50.00</td>
76
- <td class="tax-amount">VAT: £7.50</td>
77
- </tr>
78
- <tr class="total">
79
- <th colspan="4">Total</th>
80
- <td class="total-amount">£57.50</td>
81
- </tr>
82
- </table>
@@ -1,89 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <ubl:CreditNote xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:ubl="urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
3
- <cbc:ID>putain!</cbc:ID>
4
- <cbc:UUID>671a05d0-d1ba-012b-48a5-0017f22d32c0</cbc:UUID>
5
- <cbc:IssueDate>2008-07-13</cbc:IssueDate>
6
- <cbc:IssueTime>00:00:00+00:00</cbc:IssueTime>
7
- <cbc:TaxPointDate>2008-07-13</cbc:TaxPointDate>
8
- <cbc:Note>MyCreditNote 3</cbc:Note>
9
- <cac:InvoicePeriod>
10
- <cbc:StartDate>2008-06-01</cbc:StartDate>
11
- <cbc:StartTime>00:00:00+00:00</cbc:StartTime>
12
- <cbc:EndDate>2008-07-01</cbc:EndDate>
13
- <cbc:EndTime>00:00:00+00:00</cbc:EndTime>
14
- </cac:InvoicePeriod>
15
- <cac:AccountingSupplierParty>
16
- <cac:Party>
17
- <cac:PartyName>
18
- <cbc:Name>Unlimited Limited</cbc:Name>
19
- </cac:PartyName>
20
- <cac:PostalAddress>
21
- <cbc:StreetName>The Sett</cbc:StreetName>
22
- <cbc:AdditionalStreetName>5 Badger Lane</cbc:AdditionalStreetName>
23
- <cbc:CityName>Badgertown</cbc:CityName>
24
- <cbc:PostalZone>Badger999</cbc:PostalZone>
25
- <cbc:CountrySubentity></cbc:CountrySubentity>
26
- <cac:Country>
27
- <cbc:IdentificationCode>GB</cbc:IdentificationCode>
28
- <cbc:Name>England</cbc:Name>
29
- </cac:Country>
30
- </cac:PostalAddress>
31
- <cac:PartyTaxScheme>
32
- <cbc:CompanyID>123456789</cbc:CompanyID>
33
- <cac:TaxScheme>
34
- <cbc:ID>VAT</cbc:ID>
35
- </cac:TaxScheme>
36
- </cac:PartyTaxScheme>
37
- <cac:Contact>
38
- <cbc:Name>Mr B. Badger</cbc:Name>
39
- </cac:Contact>
40
- </cac:Party>
41
- </cac:AccountingSupplierParty>
42
- <cac:AccountingCustomerParty>
43
- <cbc:SupplierAssignedAccountID>2</cbc:SupplierAssignedAccountID>
44
- <cac:Party>
45
- <cac:PartyName>
46
- <cbc:Name>Lovely Customer Inc.</cbc:Name>
47
- </cac:PartyName>
48
- <cac:PostalAddress>
49
- <cbc:StreetName>The pasture</cbc:StreetName>
50
- <cbc:CityName>Mootown</cbc:CityName>
51
- <cbc:PostalZone>MOOO</cbc:PostalZone>
52
- <cbc:CountrySubentity>Cow Kingdom</cbc:CountrySubentity>
53
- <cac:Country>
54
- <cbc:IdentificationCode>GB</cbc:IdentificationCode>
55
- <cbc:Name>Scotland</cbc:Name>
56
- </cac:Country>
57
- </cac:PostalAddress>
58
- <cac:PartyTaxScheme>
59
- <cbc:CompanyID>987654321</cbc:CompanyID>
60
- <cac:TaxScheme>
61
- <cbc:ID>VAT</cbc:ID>
62
- </cac:TaxScheme>
63
- </cac:PartyTaxScheme>
64
- <cac:Contact>
65
- <cbc:Name>Fred</cbc:Name>
66
- </cac:Contact>
67
- </cac:Party>
68
- </cac:AccountingCustomerParty>
69
- <cac:TaxTotal>
70
- <cbc:TaxAmount currencyID="GBP">7.5</cbc:TaxAmount>
71
- </cac:TaxTotal>
72
- <cac:LegalMonetaryTotal>
73
- <cbc:TaxExclusiveAmount currencyID="GBP">50.0</cbc:TaxExclusiveAmount>
74
- <cbc:PayableAmount currencyID="GBP">57.5</cbc:PayableAmount>
75
- </cac:LegalMonetaryTotal>
76
- <cac:CreditNoteLine>
77
- <cbc:ID>5</cbc:ID>
78
- <cbc:UUID>eab28cf0-d1b4-012b-48a5-0017f22d32c0</cbc:UUID>
79
- <cbc:CreditedQuantity>0.5</cbc:CreditedQuantity>
80
- <cbc:LineExtensionAmount currencyID="GBP">50.0</cbc:LineExtensionAmount>
81
- <cbc:TaxPointDate>2008-07-13</cbc:TaxPointDate>
82
- <cac:TaxTotal>
83
- <cbc:TaxAmount currencyID="GBP">7.5</cbc:TaxAmount>
84
- </cac:TaxTotal>
85
- <cac:Item>
86
- <cbc:Description>moo</cbc:Description>
87
- </cac:Item>
88
- </cac:CreditNoteLine>
89
- </ubl:CreditNote>
@@ -1,93 +0,0 @@
1
- <h1 class="invoice">Invoice</h1>
2
- <table class="invoice addresses">
3
- <tr>
4
- <th class="recipient">Recipient</th>
5
- <th class="sender">Sender</th>
6
- </tr>
7
- <tr>
8
- <td class="recipient vcard">
9
- <div class="fn org">Lovely Customer Inc.</div>
10
- <div class="contact">Fred</div>
11
- <div class="adr">
12
- <span class="street-address">The pasture</span><br />
13
- <span class="locality">Mootown</span><br />
14
- <span class="region">Cow Kingdom</span><br />
15
- <span class="postal-code">MOOO</span><br />
16
- <span class="country-name">Scotland</span>
17
- </div>
18
- </td>
19
- <td class="sender vcard">
20
- <div class="fn org">Unlimited Limited</div>
21
- <div class="contact">Mr B. Badger</div>
22
- <div class="adr">
23
- <span class="street-address">The Sett<br />5 Badger Lane</span><br />
24
- <span class="locality">Badgertown</span><br />
25
- <span class="postal-code">Badger999</span><br />
26
- <span class="country-name">England</span>
27
- </div>
28
- </td>
29
- </tr>
30
- <tr>
31
- <td class="recipient">
32
- VAT number:<br /><span class="tax-number">987654321</span>
33
- </td>
34
- <td class="sender">
35
- VAT number:<br /><span class="tax-number">123456789</span>
36
- </td>
37
- </tr>
38
- </table>
39
- <table class="invoice metadata">
40
- <tr class="identifier">
41
- <th>Invoice no.:</th>
42
- <td>1</td>
43
- </tr>
44
- <tr class="issue-date">
45
- <th>Issue date:</th>
46
- <td>2008-06-30</td>
47
- </tr>
48
- <tr class="period-start">
49
- <th>Period from:</th>
50
- <td>2008-06-01</td>
51
- </tr>
52
- <tr class="period-end">
53
- <th>Period until:</th>
54
- <td>2008-07-01</td>
55
- </tr>
56
- <tr class="due-date">
57
- <th>Payment due:</th>
58
- <td>2008-07-30</td>
59
- </tr>
60
- </table>
61
- <p class="invoice description">MyInvoice 1</p>
62
- <table class="invoice line-items">
63
- <tr>
64
- <th class="tax-point">Tax point</th>
65
- <th class="quantity">Quantity</th>
66
- <th class="description">Description</th>
67
- <th class="net-amount">Net price</th>
68
- <th class="tax-amount">VAT</th>
69
- </tr>
70
- <tr>
71
- <td class="tax-point">2008-06-25</td>
72
- <td class="quantity">4.0</td>
73
- <td class="description">this is the SubLineItem</td>
74
- <td class="net-amount">£200.00</td>
75
- <td class="tax-amount">£0.00</td>
76
- </tr>
77
- <tr>
78
- <td class="tax-point">2008-06-30</td>
79
- <td class="quantity">1.0</td>
80
- <td class="description">moo</td>
81
- <td class="net-amount">£100.00</td>
82
- <td class="tax-amount">£15.00</td>
83
- </tr>
84
- <tr class="subtotal">
85
- <th colspan="3">Subtotal</th>
86
- <td class="net-amount">Net: £300.00</td>
87
- <td class="tax-amount">VAT: £15.00</td>
88
- </tr>
89
- <tr class="total">
90
- <th colspan="4">Total</th>
91
- <td class="total-amount">£315.00</td>
92
- </tr>
93
- </table>
@@ -1,111 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <ubl:Invoice xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:ubl="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
3
- <cbc:ID>1</cbc:ID>
4
- <cbc:UUID>30f4f680-d1b9-012b-48a5-0017f22d32c0</cbc:UUID>
5
- <cbc:IssueDate>2008-06-30</cbc:IssueDate>
6
- <cbc:IssueTime>00:00:00+00:00</cbc:IssueTime>
7
- <cbc:InvoiceTypeCode>MyInvoice</cbc:InvoiceTypeCode>
8
- <cbc:Note>MyInvoice 1</cbc:Note>
9
- <cbc:TaxPointDate>2008-06-30</cbc:TaxPointDate>
10
- <cac:InvoicePeriod>
11
- <cbc:StartDate>2008-06-01</cbc:StartDate>
12
- <cbc:StartTime>00:00:00+00:00</cbc:StartTime>
13
- <cbc:EndDate>2008-07-01</cbc:EndDate>
14
- <cbc:EndTime>00:00:00+00:00</cbc:EndTime>
15
- </cac:InvoicePeriod>
16
- <cac:AccountingSupplierParty>
17
- <cac:Party>
18
- <cac:PartyName>
19
- <cbc:Name>Unlimited Limited</cbc:Name>
20
- </cac:PartyName>
21
- <cac:PostalAddress>
22
- <cbc:StreetName>The Sett</cbc:StreetName>
23
- <cbc:AdditionalStreetName>5 Badger Lane</cbc:AdditionalStreetName>
24
- <cbc:CityName>Badgertown</cbc:CityName>
25
- <cbc:PostalZone>Badger999</cbc:PostalZone>
26
- <cbc:CountrySubentity></cbc:CountrySubentity>
27
- <cac:Country>
28
- <cbc:IdentificationCode>GB</cbc:IdentificationCode>
29
- <cbc:Name>England</cbc:Name>
30
- </cac:Country>
31
- </cac:PostalAddress>
32
- <cac:PartyTaxScheme>
33
- <cbc:CompanyID>123456789</cbc:CompanyID>
34
- <cac:TaxScheme>
35
- <cbc:ID>VAT</cbc:ID>
36
- </cac:TaxScheme>
37
- </cac:PartyTaxScheme>
38
- <cac:Contact>
39
- <cbc:Name>Mr B. Badger</cbc:Name>
40
- </cac:Contact>
41
- </cac:Party>
42
- </cac:AccountingSupplierParty>
43
- <cac:AccountingCustomerParty>
44
- <cbc:SupplierAssignedAccountID>2</cbc:SupplierAssignedAccountID>
45
- <cac:Party>
46
- <cac:PartyName>
47
- <cbc:Name>Lovely Customer Inc.</cbc:Name>
48
- </cac:PartyName>
49
- <cac:PostalAddress>
50
- <cbc:StreetName>The pasture</cbc:StreetName>
51
- <cbc:CityName>Mootown</cbc:CityName>
52
- <cbc:PostalZone>MOOO</cbc:PostalZone>
53
- <cbc:CountrySubentity>Cow Kingdom</cbc:CountrySubentity>
54
- <cac:Country>
55
- <cbc:IdentificationCode>GB</cbc:IdentificationCode>
56
- <cbc:Name>Scotland</cbc:Name>
57
- </cac:Country>
58
- </cac:PostalAddress>
59
- <cac:PartyTaxScheme>
60
- <cbc:CompanyID>987654321</cbc:CompanyID>
61
- <cac:TaxScheme>
62
- <cbc:ID>VAT</cbc:ID>
63
- </cac:TaxScheme>
64
- </cac:PartyTaxScheme>
65
- <cac:Contact>
66
- <cbc:Name>Fred</cbc:Name>
67
- </cac:Contact>
68
- </cac:Party>
69
- </cac:AccountingCustomerParty>
70
- <cac:PaymentTerms>
71
- <cac:SettlementPeriod>
72
- <cbc:StartDate>2008-06-30</cbc:StartDate>
73
- <cbc:StartTime>00:00:00+00:00</cbc:StartTime>
74
- <cbc:EndDate>2008-07-30</cbc:EndDate>
75
- <cbc:EndTime>00:00:00+00:00</cbc:EndTime>
76
- </cac:SettlementPeriod>
77
- </cac:PaymentTerms>
78
- <cac:TaxTotal>
79
- <cbc:TaxAmount currencyID="GBP">15.0</cbc:TaxAmount>
80
- </cac:TaxTotal>
81
- <cac:LegalMonetaryTotal>
82
- <cbc:TaxExclusiveAmount currencyID="GBP">300.0</cbc:TaxExclusiveAmount>
83
- <cbc:PayableAmount currencyID="GBP">315.0</cbc:PayableAmount>
84
- </cac:LegalMonetaryTotal>
85
- <cac:InvoiceLine>
86
- <cbc:ID>2</cbc:ID>
87
- <cbc:UUID>0cc65e20-cfac-012b-481d-0017f22d32c0</cbc:UUID>
88
- <cbc:InvoicedQuantity>4.0</cbc:InvoicedQuantity>
89
- <cbc:LineExtensionAmount currencyID="GBP">200.0</cbc:LineExtensionAmount>
90
- <cbc:TaxPointDate>2008-06-25</cbc:TaxPointDate>
91
- <cac:TaxTotal>
92
- <cbc:TaxAmount currencyID="GBP">0.0</cbc:TaxAmount>
93
- </cac:TaxTotal>
94
- <cac:Item>
95
- <cbc:Description>this is the SubLineItem</cbc:Description>
96
- </cac:Item>
97
- </cac:InvoiceLine>
98
- <cac:InvoiceLine>
99
- <cbc:ID>1</cbc:ID>
100
- <cbc:UUID>0cc659f0-cfac-012b-481d-0017f22d32c0</cbc:UUID>
101
- <cbc:InvoicedQuantity>1.0</cbc:InvoicedQuantity>
102
- <cbc:LineExtensionAmount currencyID="GBP">100.0</cbc:LineExtensionAmount>
103
- <cbc:TaxPointDate>2008-06-30</cbc:TaxPointDate>
104
- <cac:TaxTotal>
105
- <cbc:TaxAmount currencyID="GBP">15.0</cbc:TaxAmount>
106
- </cac:TaxTotal>
107
- <cac:Item>
108
- <cbc:Description>moo</cbc:Description>
109
- </cac:Item>
110
- </cac:InvoiceLine>
111
- </ubl:Invoice>