acts_as_isdoc 0.0.1 → 0.0.2
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/acts_as_isdoc.gemspec +0 -1
- data/lib/acts_as_isdoc/version.rb +1 -1
- data/lib/isdoc_output_builder.rb +22 -0
- data/schema/czreg-all-1.0.xsd +34 -0
- data/schema/czreg-dispatch-1.0.xsd +41 -0
- data/schema/czreg-domain-1.0.xsd +42 -0
- data/test/acts_as_isdoc_test.rb +11 -0
- data/test/fixtures/basic_invoice.isdoc +1 -1
- data/test/fixtures/dispatched_invoice.isdoc +115 -0
- data/test/fixtures/dispatched_invoice.rb +7 -0
- data/test/fixtures/extended_invoice.isdoc +1 -1
- data/test/fixtures/sample_invoice.isdoc +1 -1
- data/test/test_helper.rb +1 -1
- metadata +11 -18
data/acts_as_isdoc.gemspec
CHANGED
data/lib/isdoc_output_builder.rb
CHANGED
@@ -34,6 +34,8 @@ class ISDOCOutputBuilder
|
|
34
34
|
invoice.encoded_tag! :CurrRate, 1
|
35
35
|
invoice.encoded_tag! :RefCurrRate, 1
|
36
36
|
|
37
|
+
build_dispatches(invoice)
|
38
|
+
|
37
39
|
invoice.encoded_tag! :AccountingSupplierParty do |supplier|
|
38
40
|
build_party supplier, seller_details
|
39
41
|
end
|
@@ -209,6 +211,26 @@ class ISDOCOutputBuilder
|
|
209
211
|
end
|
210
212
|
end
|
211
213
|
|
214
|
+
def build_dispatches(xml)
|
215
|
+
if ledger_item.respond_to?(:dispatches) && dispatches
|
216
|
+
xml.tag! :Extensions do |extensions|
|
217
|
+
extensions.tag! :Dispatches, :xmlns => "http://czreg.cz/isdoc/namespace/dispatch-1.0" do |disps|
|
218
|
+
dispatches.each_key do |dispatch|
|
219
|
+
disps.encoded_tag! "Dispatch" do |disp|
|
220
|
+
if dispatch == :emails
|
221
|
+
Array(dispatches[dispatch]).each do |email|
|
222
|
+
disp.encoded_tag! "Email", email
|
223
|
+
end
|
224
|
+
else
|
225
|
+
disp.encoded_tag! dispatch.to_s.capitalize, dispatches[dispatch]
|
226
|
+
end
|
227
|
+
end
|
228
|
+
end
|
229
|
+
end
|
230
|
+
end
|
231
|
+
end
|
232
|
+
end
|
233
|
+
|
212
234
|
def method_missing(method_id, *args, &block)
|
213
235
|
# method renaming if requested in options
|
214
236
|
if options.has_key?(method_id.to_sym)
|
@@ -0,0 +1,34 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
|
3
|
+
<!--
|
4
|
+
This schema does not define anything, it just imports other schemas
|
5
|
+
and makes the usage of ISDOC schemas more convenient.
|
6
|
+
-->
|
7
|
+
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
8
|
+
targetNamespace="http://www.czreg.cz/xml/isdoc/all-1.0"
|
9
|
+
xmlns:all="http://www.czreg.cz/xml/isdoc/all-1.0"
|
10
|
+
elementFormDefault="qualified"
|
11
|
+
version="1.0">
|
12
|
+
|
13
|
+
<!--
|
14
|
+
Import all schemas related to ISDOC protocol.
|
15
|
+
Anytime the version of any imported schema is raised, the version of
|
16
|
+
'all' schema must be raised too.
|
17
|
+
-->
|
18
|
+
|
19
|
+
<xs:import namespace="http://isdoc.cz/namespace/invoice"
|
20
|
+
schemaLocation="isdoc-invoice-dsig-5.2.xsd"/>
|
21
|
+
<!-- ISDOC extensions -->
|
22
|
+
<xs:import namespace="http://czreg.cz/isdoc/namespace/domain-1.0"
|
23
|
+
schemaLocation="czreg-domain-1.0.xsd"/>
|
24
|
+
<xs:import namespace="http://czreg.cz/isdoc/namespace/dispatch-1.0"
|
25
|
+
schemaLocation="czreg-domain-1.0.xsd"/>
|
26
|
+
|
27
|
+
<xs:annotation>
|
28
|
+
<xs:documentation>
|
29
|
+
ISDOC (Information System Document) v5.2
|
30
|
+
with domain schema and dispatch grouped together
|
31
|
+
</xs:documentation>
|
32
|
+
</xs:annotation>
|
33
|
+
|
34
|
+
</xs:schema>
|
@@ -0,0 +1,41 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
|
3
|
+
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
4
|
+
targetNamespace="http://czreg.cz/isdoc/namespace/dispatch-1.0"
|
5
|
+
xmlns:domain="http://czreg.cz/isdoc/namespace/dispatch-1.0"
|
6
|
+
xmlns:invoice="http://isdoc.cz/namespace/invoice"
|
7
|
+
elementFormDefault="qualified"
|
8
|
+
version="1.0">
|
9
|
+
|
10
|
+
<xs:annotation>
|
11
|
+
<xs:documentation>
|
12
|
+
Extension for distributing invoice to parties. It includes type of dispatch
|
13
|
+
and optionall email address for EmailDelivery type.
|
14
|
+
</xs:documentation>
|
15
|
+
</xs:annotation>
|
16
|
+
|
17
|
+
<!--
|
18
|
+
Object identifier type.
|
19
|
+
-->
|
20
|
+
<xs:element name="Dispatches">
|
21
|
+
<xs:annotation>
|
22
|
+
<xs:documentation xml:lang="cs">Kolekce způsobů doručení</xs:documentation>
|
23
|
+
<xs:documentation xml:lang="en">Collection of dispatch methods</xs:documentation>
|
24
|
+
</xs:annotation>
|
25
|
+
<xs:complexType>
|
26
|
+
<xs:sequence>
|
27
|
+
<xs:element name="Dispatch" type="DispatchType" minOccurs="1" maxOccurs="unbounded" />
|
28
|
+
</xs:sequence>
|
29
|
+
</xs:complexType>
|
30
|
+
</xs:element>
|
31
|
+
|
32
|
+
<xs:complexType name="DispatchType">
|
33
|
+
<xs:sequence>
|
34
|
+
<!-- normal, recorder delivery, proof of delivery -->
|
35
|
+
<xs:element name="Postage" minOccurs="0" maxOccurs="1" />
|
36
|
+
<xs:element name="Email" minOccurs="0" maxOccurs="1" />
|
37
|
+
</xs:sequence>
|
38
|
+
</xs:complexType>
|
39
|
+
|
40
|
+
</xs:schema>
|
41
|
+
|
@@ -0,0 +1,42 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
|
3
|
+
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
4
|
+
targetNamespace="http://czreg.cz/isdoc/namespace/domain-1.0"
|
5
|
+
xmlns:domain="http://czreg.cz/isdoc/namespace/domain-1.0"
|
6
|
+
xmlns:invoice="http://isdoc.cz/namespace/invoice"
|
7
|
+
elementFormDefault="qualified"
|
8
|
+
version="1.0">
|
9
|
+
|
10
|
+
<xs:annotation>
|
11
|
+
<xs:documentation>
|
12
|
+
Extension for domains to ISDOC. There is Domains sequence in Extension element.
|
13
|
+
Sequence is made of Domain elements, each of them having required name and optional
|
14
|
+
Since and Till elements.
|
15
|
+
</xs:documentation>
|
16
|
+
</xs:annotation>
|
17
|
+
|
18
|
+
<!--
|
19
|
+
Object identifier type.
|
20
|
+
-->
|
21
|
+
<xs:element name="Domains">
|
22
|
+
<xs:annotation>
|
23
|
+
<xs:documentation xml:lang="cs">Jména domén s délkou jejich platností</xs:documentation>
|
24
|
+
<xs:documentation xml:lang="en">Domains with name and its validity </xs:documentation>
|
25
|
+
</xs:annotation>
|
26
|
+
<xs:complexType>
|
27
|
+
<xs:sequence>
|
28
|
+
<xs:element name="Domain" type="domain:domainType" minOccurs="1" maxOccurs="unbounded" />
|
29
|
+
</xs:sequence>
|
30
|
+
</xs:complexType>
|
31
|
+
</xs:element>
|
32
|
+
|
33
|
+
<xs:complexType name="domainType">
|
34
|
+
<xs:sequence>
|
35
|
+
<xs:element name="Name" minOccurs="1" maxOccurs="1" />
|
36
|
+
<xs:element name="Since" minOccurs="0" maxOccurs="1" />
|
37
|
+
<xs:element name="Till" minOccurs="0" maxOccurs="1" />
|
38
|
+
</xs:sequence>
|
39
|
+
</xs:complexType>
|
40
|
+
|
41
|
+
</xs:schema>
|
42
|
+
|
data/test/acts_as_isdoc_test.rb
CHANGED
@@ -3,6 +3,7 @@ require File.dirname(__FILE__) + '/test_helper.rb'
|
|
3
3
|
require File.dirname(__FILE__) + '/fixtures/sample_invoice.rb'
|
4
4
|
require File.dirname(__FILE__) + '/fixtures/basic_invoice.rb'
|
5
5
|
require File.dirname(__FILE__) + '/fixtures/extended_invoice.rb'
|
6
|
+
require File.dirname(__FILE__) + '/fixtures/dispatched_invoice.rb'
|
6
7
|
|
7
8
|
class ActsAsIsdocTest < ActiveSupport::TestCase
|
8
9
|
|
@@ -42,4 +43,14 @@ class ActsAsIsdocTest < ActiveSupport::TestCase
|
|
42
43
|
assert_file_equals(isdoc_file, fixture_file)
|
43
44
|
end
|
44
45
|
|
46
|
+
test "returned dispatched isdoc is valid" do
|
47
|
+
assert valid_isdoc?(DispatchedInvoice.new.render_isdoc)
|
48
|
+
end
|
49
|
+
|
50
|
+
test "returned dispatched isdoc is correct" do
|
51
|
+
isdoc_file = create_tmp_file("isdoc", DispatchedInvoice.new.render_isdoc)
|
52
|
+
fixture_file = File.join(File.dirname(__FILE__), "..", "test", "fixtures", "dispatched_invoice.isdoc")
|
53
|
+
assert_file_equals(isdoc_file, fixture_file)
|
54
|
+
end
|
55
|
+
|
45
56
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<Invoice xmlns="http://isdoc.cz/namespace/invoice"
|
2
|
+
<Invoice version="5.2" xmlns="http://isdoc.cz/namespace/invoice">
|
3
3
|
<DocumentType>1</DocumentType>
|
4
4
|
<ID>1234</ID>
|
5
5
|
<UUID>2D6D6400-D922-4DF5-8A76-EB68350B02AF</UUID>
|
@@ -0,0 +1,115 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<Invoice version="5.2" xmlns="http://isdoc.cz/namespace/invoice">
|
3
|
+
<DocumentType>1</DocumentType>
|
4
|
+
<ID>1234</ID>
|
5
|
+
<UUID>2D6D6400-D922-4DF5-8A76-EB68350B02AF</UUID>
|
6
|
+
<IssueDate>2009-07-01</IssueDate>
|
7
|
+
<OrderReferences>
|
8
|
+
<OrderReference>
|
9
|
+
<SalesOrderID/>
|
10
|
+
<ExternalOrderID>ABC1234</ExternalOrderID>
|
11
|
+
<IssueDate>2009-07-01</IssueDate>
|
12
|
+
</OrderReference>
|
13
|
+
</OrderReferences>
|
14
|
+
<LocalCurrencyCode>CZK</LocalCurrencyCode>
|
15
|
+
<CurrRate>1</CurrRate>
|
16
|
+
<RefCurrRate>1</RefCurrRate>
|
17
|
+
<Extensions>
|
18
|
+
<Dispatches xmlns="http://czreg.cz/isdoc/namespace/dispatch-1.0">
|
19
|
+
<Dispatch>
|
20
|
+
<Email>joska@koska.cz</Email>
|
21
|
+
<Email>koska@koska.cz</Email>
|
22
|
+
</Dispatch>
|
23
|
+
<Dispatch>
|
24
|
+
<Postage>common</Postage>
|
25
|
+
</Dispatch>
|
26
|
+
</Dispatches>
|
27
|
+
</Extensions>
|
28
|
+
<AccountingSupplierParty>
|
29
|
+
<Party>
|
30
|
+
<PartyIdentification>
|
31
|
+
<ID></ID>
|
32
|
+
</PartyIdentification>
|
33
|
+
<PartyName>
|
34
|
+
<Name>Pepicek</Name>
|
35
|
+
</PartyName>
|
36
|
+
<PostalAddress>
|
37
|
+
<StreetName>Ulicni</StreetName>
|
38
|
+
<BuildingNumber>230/9</BuildingNumber>
|
39
|
+
<CityName>Praha</CityName>
|
40
|
+
<PostalZone>17000</PostalZone>
|
41
|
+
<Country>
|
42
|
+
<IdentificationCode>cz</IdentificationCode>
|
43
|
+
<Name>Czech Republic</Name>
|
44
|
+
</Country>
|
45
|
+
</PostalAddress>
|
46
|
+
<PartyTaxScheme>
|
47
|
+
<CompanyID>CZ12345678</CompanyID>
|
48
|
+
<TaxScheme>VAT</TaxScheme>
|
49
|
+
</PartyTaxScheme>
|
50
|
+
</Party>
|
51
|
+
</AccountingSupplierParty>
|
52
|
+
<AccountingCustomerParty>
|
53
|
+
<Party>
|
54
|
+
<PartyIdentification>
|
55
|
+
<ID></ID>
|
56
|
+
</PartyIdentification>
|
57
|
+
<PartyName>
|
58
|
+
<Name>Frantisek</Name>
|
59
|
+
</PartyName>
|
60
|
+
<PostalAddress>
|
61
|
+
<StreetName></StreetName>
|
62
|
+
<BuildingNumber></BuildingNumber>
|
63
|
+
<CityName></CityName>
|
64
|
+
<PostalZone></PostalZone>
|
65
|
+
<Country>
|
66
|
+
<IdentificationCode></IdentificationCode>
|
67
|
+
<Name></Name>
|
68
|
+
</Country>
|
69
|
+
</PostalAddress>
|
70
|
+
</Party>
|
71
|
+
</AccountingCustomerParty>
|
72
|
+
<InvoiceLines>
|
73
|
+
<InvoiceLine>
|
74
|
+
<ID>1</ID>
|
75
|
+
<LineExtensionAmount>0</LineExtensionAmount>
|
76
|
+
<LineExtensionAmountTaxInclusive>0</LineExtensionAmountTaxInclusive>
|
77
|
+
<LineExtensionTaxAmount>0</LineExtensionTaxAmount>
|
78
|
+
<UnitPrice>0</UnitPrice>
|
79
|
+
<UnitPriceTaxInclusive>0</UnitPriceTaxInclusive>
|
80
|
+
<ClassifiedTaxCategory>
|
81
|
+
<Percent>0</Percent>
|
82
|
+
<VATCalculationMethod>0</VATCalculationMethod>
|
83
|
+
</ClassifiedTaxCategory>
|
84
|
+
<Item>
|
85
|
+
</Item>
|
86
|
+
</InvoiceLine>
|
87
|
+
</InvoiceLines>
|
88
|
+
<TaxTotal>
|
89
|
+
<TaxSubTotal>
|
90
|
+
<TaxableAmount>0</TaxableAmount>
|
91
|
+
<TaxInclusiveAmount>0</TaxInclusiveAmount>
|
92
|
+
<TaxAmount>0</TaxAmount>
|
93
|
+
<AlreadyClaimedTaxableAmount>0</AlreadyClaimedTaxableAmount>
|
94
|
+
<AlreadyClaimedTaxAmount>0</AlreadyClaimedTaxAmount>
|
95
|
+
<AlreadyClaimedTaxInclusiveAmount>0</AlreadyClaimedTaxInclusiveAmount>
|
96
|
+
<DifferenceTaxableAmount>0</DifferenceTaxableAmount>
|
97
|
+
<DifferenceTaxAmount>0</DifferenceTaxAmount>
|
98
|
+
<DifferenceTaxInclusiveAmount>0</DifferenceTaxInclusiveAmount>
|
99
|
+
<TaxCategory>
|
100
|
+
<Percent>0</Percent>
|
101
|
+
</TaxCategory>
|
102
|
+
</TaxSubTotal>
|
103
|
+
<TaxAmount>0</TaxAmount>
|
104
|
+
</TaxTotal>
|
105
|
+
<LegalMonetaryTotal>
|
106
|
+
<TaxExclusiveAmount>0</TaxExclusiveAmount>
|
107
|
+
<TaxInclusiveAmount>0</TaxInclusiveAmount>
|
108
|
+
<AlreadyClaimedTaxExclusiveAmount>0</AlreadyClaimedTaxExclusiveAmount>
|
109
|
+
<AlreadyClaimedTaxInclusiveAmount>0</AlreadyClaimedTaxInclusiveAmount>
|
110
|
+
<DifferenceTaxExclusiveAmount>0</DifferenceTaxExclusiveAmount>
|
111
|
+
<DifferenceTaxInclusiveAmount>0</DifferenceTaxInclusiveAmount>
|
112
|
+
<PaidDepositsAmount>300</PaidDepositsAmount>
|
113
|
+
<PayableAmount>0</PayableAmount>
|
114
|
+
</LegalMonetaryTotal>
|
115
|
+
</Invoice>
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<Invoice xmlns="http://isdoc.cz/namespace/invoice"
|
2
|
+
<Invoice version="5.2" xmlns="http://isdoc.cz/namespace/invoice">
|
3
3
|
<DocumentType>1</DocumentType>
|
4
4
|
<ID>1234</ID>
|
5
5
|
<UUID>2D6D6400-D922-4DF5-8A76-EB68350B02AF</UUID>
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<Invoice xmlns="http://isdoc.cz/namespace/invoice"
|
2
|
+
<Invoice version="5.2" xmlns="http://isdoc.cz/namespace/invoice">
|
3
3
|
<DocumentType>1</DocumentType>
|
4
4
|
<ID>123</ID>
|
5
5
|
<UUID>2D6D6400-D922-4DF5-8A76-EB68350B02AF</UUID>
|
data/test/test_helper.rb
CHANGED
@@ -40,7 +40,7 @@ end
|
|
40
40
|
|
41
41
|
# validation code taken from http://htmltest.googlecode.com/svn/trunk/html_test/lib/validator.rb
|
42
42
|
def valid_isdoc?(body)
|
43
|
-
schema = File.join(File.dirname(__FILE__), "..", "schema", "
|
43
|
+
schema = File.join(File.dirname(__FILE__), "..", "schema", "czreg-all-1.0.xsd")
|
44
44
|
error_file = create_tmp_file("xmllint_error")
|
45
45
|
doc_file = command = nil
|
46
46
|
doc_file = create_tmp_file("xmllint", body)
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acts_as_isdoc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 2
|
10
|
+
version: 0.0.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jiri Kubicek
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2013-06-12 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: builder
|
@@ -73,20 +73,6 @@ dependencies:
|
|
73
73
|
version: "0"
|
74
74
|
type: :runtime
|
75
75
|
version_requirements: *id004
|
76
|
-
- !ruby/object:Gem::Dependency
|
77
|
-
name: htmlentities
|
78
|
-
prerelease: false
|
79
|
-
requirement: &id005 !ruby/object:Gem::Requirement
|
80
|
-
none: false
|
81
|
-
requirements:
|
82
|
-
- - ">="
|
83
|
-
- !ruby/object:Gem::Version
|
84
|
-
hash: 3
|
85
|
-
segments:
|
86
|
-
- 0
|
87
|
-
version: "0"
|
88
|
-
type: :runtime
|
89
|
-
version_requirements: *id005
|
90
76
|
description: Rendering business objects in ISDOC format
|
91
77
|
email:
|
92
78
|
- jiri.kubicek@kraxnet.cz
|
@@ -109,6 +95,9 @@ files:
|
|
109
95
|
- lib/acts_as_isdoc/version.rb
|
110
96
|
- lib/isdoc_output_builder.rb
|
111
97
|
- lib/tasks/acts_as_isdoc_tasks.rake
|
98
|
+
- schema/czreg-all-1.0.xsd
|
99
|
+
- schema/czreg-dispatch-1.0.xsd
|
100
|
+
- schema/czreg-domain-1.0.xsd
|
112
101
|
- schema/isdoc-invoice-5.2.xsd
|
113
102
|
- schema/isdoc-invoice-dsig-5.2.xsd
|
114
103
|
- schema/xmldsig-core-schema.xsd
|
@@ -116,6 +105,8 @@ files:
|
|
116
105
|
- test/database.yml
|
117
106
|
- test/fixtures/basic_invoice.isdoc
|
118
107
|
- test/fixtures/basic_invoice.rb
|
108
|
+
- test/fixtures/dispatched_invoice.isdoc
|
109
|
+
- test/fixtures/dispatched_invoice.rb
|
119
110
|
- test/fixtures/extended_invoice.isdoc
|
120
111
|
- test/fixtures/extended_invoice.rb
|
121
112
|
- test/fixtures/sample_invoice.isdoc
|
@@ -161,6 +152,8 @@ test_files:
|
|
161
152
|
- test/database.yml
|
162
153
|
- test/fixtures/basic_invoice.isdoc
|
163
154
|
- test/fixtures/basic_invoice.rb
|
155
|
+
- test/fixtures/dispatched_invoice.isdoc
|
156
|
+
- test/fixtures/dispatched_invoice.rb
|
164
157
|
- test/fixtures/extended_invoice.isdoc
|
165
158
|
- test/fixtures/extended_invoice.rb
|
166
159
|
- test/fixtures/sample_invoice.isdoc
|