invoicing 0.1.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/CHANGELOG +3 -0
- data/LICENSE +20 -0
- data/Manifest +60 -0
- data/README +48 -0
- data/Rakefile +75 -0
- data/invoicing.gemspec +41 -0
- data/lib/invoicing.rb +9 -0
- data/lib/invoicing/cached_record.rb +107 -0
- data/lib/invoicing/class_info.rb +187 -0
- data/lib/invoicing/connection_adapter_ext.rb +44 -0
- data/lib/invoicing/countries/uk.rb +24 -0
- data/lib/invoicing/currency_value.rb +212 -0
- data/lib/invoicing/find_subclasses.rb +193 -0
- data/lib/invoicing/ledger_item.rb +718 -0
- data/lib/invoicing/ledger_item/render_html.rb +515 -0
- data/lib/invoicing/ledger_item/render_ubl.rb +268 -0
- data/lib/invoicing/line_item.rb +246 -0
- data/lib/invoicing/price.rb +9 -0
- data/lib/invoicing/tax_rate.rb +9 -0
- data/lib/invoicing/taxable.rb +355 -0
- data/lib/invoicing/time_dependent.rb +388 -0
- data/lib/invoicing/version.rb +21 -0
- data/test/cached_record_test.rb +100 -0
- data/test/class_info_test.rb +253 -0
- data/test/connection_adapter_ext_test.rb +71 -0
- data/test/currency_value_test.rb +184 -0
- data/test/find_subclasses_test.rb +120 -0
- data/test/fixtures/README +7 -0
- data/test/fixtures/cached_record.sql +22 -0
- data/test/fixtures/class_info.sql +28 -0
- data/test/fixtures/currency_value.sql +29 -0
- data/test/fixtures/find_subclasses.sql +43 -0
- data/test/fixtures/ledger_item.sql +39 -0
- data/test/fixtures/line_item.sql +33 -0
- data/test/fixtures/price.sql +4 -0
- data/test/fixtures/tax_rate.sql +4 -0
- data/test/fixtures/taxable.sql +14 -0
- data/test/fixtures/time_dependent.sql +35 -0
- data/test/ledger_item_test.rb +352 -0
- data/test/line_item_test.rb +139 -0
- data/test/models/README +4 -0
- data/test/models/test_subclass_in_another_file.rb +3 -0
- data/test/models/test_subclass_not_in_database.rb +6 -0
- data/test/price_test.rb +9 -0
- data/test/ref-output/creditnote3.html +82 -0
- data/test/ref-output/creditnote3.xml +89 -0
- data/test/ref-output/invoice1.html +93 -0
- data/test/ref-output/invoice1.xml +111 -0
- data/test/ref-output/invoice2.html +86 -0
- data/test/ref-output/invoice2.xml +98 -0
- data/test/ref-output/invoice_null.html +36 -0
- data/test/render_html_test.rb +69 -0
- data/test/render_ubl_test.rb +32 -0
- data/test/setup.rb +37 -0
- data/test/tax_rate_test.rb +9 -0
- data/test/taxable_test.rb +180 -0
- data/test/test_helper.rb +48 -0
- data/test/time_dependent_test.rb +180 -0
- data/website/curvycorners.js +1 -0
- data/website/screen.css +149 -0
- data/website/template.html.erb +43 -0
- metadata +180 -0
@@ -0,0 +1,139 @@
|
|
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)
|
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)
|
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
|
data/test/models/README
ADDED
@@ -0,0 +1,6 @@
|
|
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
|
data/test/price_test.rb
ADDED
@@ -0,0 +1,82 @@
|
|
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>Invoice 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>
|
@@ -0,0 +1,89 @@
|
|
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>
|
@@ -0,0 +1,93 @@
|
|
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>
|
@@ -0,0 +1,111 @@
|
|
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>
|