twinfieldrb 0.3.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.
Files changed (78) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/codeql-analysis.yml +70 -0
  3. data/.github/workflows/rspec.yml +33 -0
  4. data/.gitignore +6 -0
  5. data/.rspec +1 -0
  6. data/CHANGELOG.md +15 -0
  7. data/Gemfile +4 -0
  8. data/README.md +120 -0
  9. data/Rakefile +1 -0
  10. data/lib/twinfield/abstract_model.rb +7 -0
  11. data/lib/twinfield/api/base_api.rb +50 -0
  12. data/lib/twinfield/api/finder.rb +45 -0
  13. data/lib/twinfield/api/o_auth_session.rb +58 -0
  14. data/lib/twinfield/api/process.rb +44 -0
  15. data/lib/twinfield/api/session.rb +170 -0
  16. data/lib/twinfield/browse/transaction/cost_center.rb +145 -0
  17. data/lib/twinfield/browse/transaction/customer.rb +413 -0
  18. data/lib/twinfield/browse/transaction/general_ledger.rb +144 -0
  19. data/lib/twinfield/configuration.rb +49 -0
  20. data/lib/twinfield/create/cost_center.rb +39 -0
  21. data/lib/twinfield/create/creditor.rb +88 -0
  22. data/lib/twinfield/create/debtor.rb +88 -0
  23. data/lib/twinfield/create/error.rb +30 -0
  24. data/lib/twinfield/create/general_ledger.rb +39 -0
  25. data/lib/twinfield/create/transaction.rb +97 -0
  26. data/lib/twinfield/customer.rb +612 -0
  27. data/lib/twinfield/helpers/parsers.rb +23 -0
  28. data/lib/twinfield/helpers/transaction_match.rb +40 -0
  29. data/lib/twinfield/request/find.rb +149 -0
  30. data/lib/twinfield/request/list.rb +66 -0
  31. data/lib/twinfield/request/read.rb +111 -0
  32. data/lib/twinfield/sales_invoice.rb +409 -0
  33. data/lib/twinfield/transaction.rb +112 -0
  34. data/lib/twinfield/version.rb +5 -0
  35. data/lib/twinfield.rb +89 -0
  36. data/script/boot.rb +58 -0
  37. data/script/console +2 -0
  38. data/spec/fixtures/cluster/finder/ivt.xml +1 -0
  39. data/spec/fixtures/cluster/processxml/columns/sales_transactions.xml +312 -0
  40. data/spec/fixtures/cluster/processxml/customer/create_success.xml +100 -0
  41. data/spec/fixtures/cluster/processxml/customer/read_success.xml +93 -0
  42. data/spec/fixtures/cluster/processxml/customer/update_success.xml +1 -0
  43. data/spec/fixtures/cluster/processxml/invoice/create_error.xml +8 -0
  44. data/spec/fixtures/cluster/processxml/invoice/create_final_error.xml +67 -0
  45. data/spec/fixtures/cluster/processxml/invoice/create_success.xml +64 -0
  46. data/spec/fixtures/cluster/processxml/invoice/read_not_found.xml +1 -0
  47. data/spec/fixtures/cluster/processxml/invoice/read_success.xml +106 -0
  48. data/spec/fixtures/cluster/processxml/read/deb.xml +12 -0
  49. data/spec/fixtures/cluster/processxml/response.xml +8 -0
  50. data/spec/fixtures/login/session/wsdl.xml +210 -0
  51. data/spec/spec_helper.rb +17 -0
  52. data/spec/stubs/finder_stubs.rb +19 -0
  53. data/spec/stubs/processxml_stubs.rb +41 -0
  54. data/spec/stubs/session_stubs.rb +28 -0
  55. data/spec/twinfield/api/oauth_session_spec.rb +37 -0
  56. data/spec/twinfield/api/process_spec.rb +7 -0
  57. data/spec/twinfield/browse/transaction/cost_center_spec.rb +60 -0
  58. data/spec/twinfield/browse/transaction/general_ledger_spec.rb +60 -0
  59. data/spec/twinfield/browse/transaction/transaction_spec.rb +72 -0
  60. data/spec/twinfield/config_spec.rb +60 -0
  61. data/spec/twinfield/customer_spec.rb +326 -0
  62. data/spec/twinfield/request/find_spec.rb +24 -0
  63. data/spec/twinfield/request/list_spec.rb +58 -0
  64. data/spec/twinfield/request/read_spec.rb +26 -0
  65. data/spec/twinfield/sales_invoice_spec.rb +253 -0
  66. data/spec/twinfield/session_spec.rb +77 -0
  67. data/spec/twinfield/transaction_spec.rb +149 -0
  68. data/twinfieldrb.gemspec +24 -0
  69. data/wsdls/accounting/finder.wsdl +157 -0
  70. data/wsdls/accounting/process.wsdl +199 -0
  71. data/wsdls/accounting/session.wsdl +452 -0
  72. data/wsdls/accounting2/finder.wsdl +157 -0
  73. data/wsdls/accounting2/process.wsdl +199 -0
  74. data/wsdls/api.accounting/finder.wsdl +157 -0
  75. data/wsdls/api.accounting/process.wsdl +199 -0
  76. data/wsdls/session.wsdl +210 -0
  77. data/wsdls/update +10 -0
  78. metadata +196 -0
@@ -0,0 +1,210 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <wsdl:definitions xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://www.twinfield.com/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" targetNamespace="http://www.twinfield.com/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
3
+ <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Twinfield session web service methods.</wsdl:documentation>
4
+ <wsdl:types>
5
+ <s:schema elementFormDefault="qualified" targetNamespace="http://www.twinfield.com/">
6
+ <s:element name="Logon">
7
+ <s:complexType>
8
+ <s:sequence>
9
+ <s:element minOccurs="0" maxOccurs="1" name="user" type="s:string" />
10
+ <s:element minOccurs="0" maxOccurs="1" name="password" type="s:string" />
11
+ <s:element minOccurs="0" maxOccurs="1" name="organisation" type="s:string" />
12
+ </s:sequence>
13
+ </s:complexType>
14
+ </s:element>
15
+ <s:element name="LogonResponse">
16
+ <s:complexType>
17
+ <s:sequence>
18
+ <s:element minOccurs="1" maxOccurs="1" name="LogonResult" type="tns:LogonResult" />
19
+ <s:element minOccurs="1" maxOccurs="1" name="nextAction" type="tns:LogonAction" />
20
+ <s:element minOccurs="0" maxOccurs="1" name="cluster" type="s:string" />
21
+ </s:sequence>
22
+ </s:complexType>
23
+ </s:element>
24
+ <s:simpleType name="LogonResult">
25
+ <s:restriction base="s:string">
26
+ <s:enumeration value="Ok" />
27
+ <s:enumeration value="Blocked" />
28
+ <s:enumeration value="Untrusted" />
29
+ <s:enumeration value="Invalid" />
30
+ <s:enumeration value="Deleted" />
31
+ <s:enumeration value="Disabled" />
32
+ <s:enumeration value="OrganisationInactive" />
33
+ <s:enumeration value="ClientInvalid" />
34
+ <s:enumeration value="Failed" />
35
+ <s:enumeration value="TokenInvalid" />
36
+ <s:enumeration value="NoAvailableCompanies" />
37
+ <s:enumeration value="OAuth2AuthenticationRequired" />
38
+ </s:restriction>
39
+ </s:simpleType>
40
+ <s:simpleType name="LogonAction">
41
+ <s:restriction base="s:string">
42
+ <s:enumeration value="None" />
43
+ <s:enumeration value="SMSLogon" />
44
+ <s:enumeration value="ChangePassword" />
45
+ </s:restriction>
46
+ </s:simpleType>
47
+ <s:element name="Header" type="tns:Header" />
48
+ <s:complexType name="Header">
49
+ <s:sequence>
50
+ <s:element minOccurs="0" maxOccurs="1" name="SessionID" type="s:string" />
51
+ <s:element minOccurs="0" maxOccurs="1" name="AccessToken" type="s:string" />
52
+ </s:sequence>
53
+ <s:anyAttribute />
54
+ </s:complexType>
55
+ <s:element name="OAuthLogon">
56
+ <s:complexType>
57
+ <s:sequence>
58
+ <s:element minOccurs="0" maxOccurs="1" name="clientToken" type="s:string" />
59
+ <s:element minOccurs="0" maxOccurs="1" name="clientSecret" type="s:string" />
60
+ <s:element minOccurs="0" maxOccurs="1" name="accessToken" type="s:string" />
61
+ <s:element minOccurs="0" maxOccurs="1" name="accessSecret" type="s:string" />
62
+ </s:sequence>
63
+ </s:complexType>
64
+ </s:element>
65
+ <s:element name="OAuthLogonResponse">
66
+ <s:complexType>
67
+ <s:sequence>
68
+ <s:element minOccurs="1" maxOccurs="1" name="OAuthLogonResult" type="tns:LogonResult" />
69
+ <s:element minOccurs="1" maxOccurs="1" name="nextAction" type="tns:LogonAction" />
70
+ <s:element minOccurs="0" maxOccurs="1" name="cluster" type="s:string" />
71
+ </s:sequence>
72
+ </s:complexType>
73
+ </s:element>
74
+ <s:element name="AccessTokenLogon">
75
+ <s:complexType>
76
+ <s:sequence>
77
+ <s:element minOccurs="0" maxOccurs="1" name="accessToken" type="s:string" />
78
+ </s:sequence>
79
+ </s:complexType>
80
+ </s:element>
81
+ <s:element name="AccessTokenLogonResponse">
82
+ <s:complexType>
83
+ <s:sequence>
84
+ <s:element minOccurs="1" maxOccurs="1" name="AccessTokenLogonResult" type="tns:LogonResult" />
85
+ <s:element minOccurs="0" maxOccurs="1" name="cluster" type="s:string" />
86
+ </s:sequence>
87
+ </s:complexType>
88
+ </s:element>
89
+ </s:schema>
90
+ </wsdl:types>
91
+ <wsdl:message name="LogonSoapIn">
92
+ <wsdl:part name="parameters" element="tns:Logon" />
93
+ </wsdl:message>
94
+ <wsdl:message name="LogonSoapOut">
95
+ <wsdl:part name="parameters" element="tns:LogonResponse" />
96
+ </wsdl:message>
97
+ <wsdl:message name="LogonHeader">
98
+ <wsdl:part name="Header" element="tns:Header" />
99
+ </wsdl:message>
100
+ <wsdl:message name="OAuthLogonSoapIn">
101
+ <wsdl:part name="parameters" element="tns:OAuthLogon" />
102
+ </wsdl:message>
103
+ <wsdl:message name="OAuthLogonSoapOut">
104
+ <wsdl:part name="parameters" element="tns:OAuthLogonResponse" />
105
+ </wsdl:message>
106
+ <wsdl:message name="OAuthLogonHeader">
107
+ <wsdl:part name="Header" element="tns:Header" />
108
+ </wsdl:message>
109
+ <wsdl:message name="AccessTokenLogonSoapIn">
110
+ <wsdl:part name="parameters" element="tns:AccessTokenLogon" />
111
+ </wsdl:message>
112
+ <wsdl:message name="AccessTokenLogonSoapOut">
113
+ <wsdl:part name="parameters" element="tns:AccessTokenLogonResponse" />
114
+ </wsdl:message>
115
+ <wsdl:message name="AccessTokenLogonHeader">
116
+ <wsdl:part name="Header" element="tns:Header" />
117
+ </wsdl:message>
118
+ <wsdl:portType name="SessionSoap">
119
+ <wsdl:operation name="Logon">
120
+ <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Logs on with the user credentials.</wsdl:documentation>
121
+ <wsdl:input message="tns:LogonSoapIn" />
122
+ <wsdl:output message="tns:LogonSoapOut" />
123
+ </wsdl:operation>
124
+ <wsdl:operation name="OAuthLogon">
125
+ <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Logs on with the OAuth credentials.</wsdl:documentation>
126
+ <wsdl:input message="tns:OAuthLogonSoapIn" />
127
+ <wsdl:output message="tns:OAuthLogonSoapOut" />
128
+ </wsdl:operation>
129
+ <wsdl:operation name="AccessTokenLogon">
130
+ <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Creates session based on passed access token and returns its ID and external cluster URL</wsdl:documentation>
131
+ <wsdl:input message="tns:AccessTokenLogonSoapIn" />
132
+ <wsdl:output message="tns:AccessTokenLogonSoapOut" />
133
+ </wsdl:operation>
134
+ </wsdl:portType>
135
+ <wsdl:binding name="SessionSoap" type="tns:SessionSoap">
136
+ <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
137
+ <wsdl:operation name="Logon">
138
+ <soap:operation soapAction="http://www.twinfield.com/Logon" style="document" />
139
+ <wsdl:input>
140
+ <soap:body use="literal" />
141
+ </wsdl:input>
142
+ <wsdl:output>
143
+ <soap:body use="literal" />
144
+ <soap:header message="tns:LogonHeader" part="Header" use="literal" />
145
+ </wsdl:output>
146
+ </wsdl:operation>
147
+ <wsdl:operation name="OAuthLogon">
148
+ <soap:operation soapAction="http://www.twinfield.com/OAuthLogon" style="document" />
149
+ <wsdl:input>
150
+ <soap:body use="literal" />
151
+ </wsdl:input>
152
+ <wsdl:output>
153
+ <soap:body use="literal" />
154
+ <soap:header message="tns:OAuthLogonHeader" part="Header" use="literal" />
155
+ </wsdl:output>
156
+ </wsdl:operation>
157
+ <wsdl:operation name="AccessTokenLogon">
158
+ <soap:operation soapAction="http://www.twinfield.com/AccessTokenLogon" style="document" />
159
+ <wsdl:input>
160
+ <soap:body use="literal" />
161
+ </wsdl:input>
162
+ <wsdl:output>
163
+ <soap:body use="literal" />
164
+ <soap:header message="tns:AccessTokenLogonHeader" part="Header" use="literal" />
165
+ </wsdl:output>
166
+ </wsdl:operation>
167
+ </wsdl:binding>
168
+ <wsdl:binding name="SessionSoap12" type="tns:SessionSoap">
169
+ <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
170
+ <wsdl:operation name="Logon">
171
+ <soap12:operation soapAction="http://www.twinfield.com/Logon" style="document" />
172
+ <wsdl:input>
173
+ <soap12:body use="literal" />
174
+ </wsdl:input>
175
+ <wsdl:output>
176
+ <soap12:body use="literal" />
177
+ <soap12:header message="tns:LogonHeader" part="Header" use="literal" />
178
+ </wsdl:output>
179
+ </wsdl:operation>
180
+ <wsdl:operation name="OAuthLogon">
181
+ <soap12:operation soapAction="http://www.twinfield.com/OAuthLogon" style="document" />
182
+ <wsdl:input>
183
+ <soap12:body use="literal" />
184
+ </wsdl:input>
185
+ <wsdl:output>
186
+ <soap12:body use="literal" />
187
+ <soap12:header message="tns:OAuthLogonHeader" part="Header" use="literal" />
188
+ </wsdl:output>
189
+ </wsdl:operation>
190
+ <wsdl:operation name="AccessTokenLogon">
191
+ <soap12:operation soapAction="http://www.twinfield.com/AccessTokenLogon" style="document" />
192
+ <wsdl:input>
193
+ <soap12:body use="literal" />
194
+ </wsdl:input>
195
+ <wsdl:output>
196
+ <soap12:body use="literal" />
197
+ <soap12:header message="tns:AccessTokenLogonHeader" part="Header" use="literal" />
198
+ </wsdl:output>
199
+ </wsdl:operation>
200
+ </wsdl:binding>
201
+ <wsdl:service name="Session">
202
+ <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Twinfield session web service methods.</wsdl:documentation>
203
+ <wsdl:port name="SessionSoap" binding="tns:SessionSoap">
204
+ <soap:address location="https://login.twinfield.com/webservices/session.asmx" />
205
+ </wsdl:port>
206
+ <wsdl:port name="SessionSoap12" binding="tns:SessionSoap12">
207
+ <soap12:address location="https://login.twinfield.com/webservices/session.asmx" />
208
+ </wsdl:port>
209
+ </wsdl:service>
210
+ </wsdl:definitions>
data/wsdls/update ADDED
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env bash
2
+
3
+ curl https://accounting.twinfield.com/webservices/processxml.asmx?wsdl > accounting/process.wsdl
4
+ curl https://accounting.twinfield.com/webservices/session.asmx?wsdl > accounting/session.wsdl
5
+ curl https://accounting.twinfield.com/webservices/finder.asmx?wsdl > accounting/finder.wsdl
6
+ curl https://accounting2.twinfield.com/webservices/processxml.asmx?wsdl > accounting2/process.wsdl
7
+ curl https://accounting2.twinfield.com/webservices/finder.asmx?wsdl > accounting2/finder.wsdl
8
+ curl https://api.accounting.twinfield.com/webservices/processxml.asmx?wsdl > api.accounting/process.wsdl
9
+ curl https://api.accounting.twinfield.com/webservices/finder.asmx?wsdl > api.accounting/finder.wsdl
10
+ curl https://login.twinfield.com/webservices/session.asmx?wsdl > session.wsdl
metadata ADDED
@@ -0,0 +1,196 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: twinfieldrb
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.0
5
+ platform: ruby
6
+ authors:
7
+ - Ernst Rijsdijk
8
+ - Stephan van Diepen
9
+ - Joris Reijrink
10
+ - Maarten Brouwers
11
+ autorequire:
12
+ bindir: bin
13
+ cert_chain: []
14
+ date: 2024-12-08 00:00:00.000000000 Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: savon
18
+ requirement: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - "~>"
21
+ - !ruby/object:Gem::Version
22
+ version: '2.10'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '2.10'
30
+ - !ruby/object:Gem::Dependency
31
+ name: nokogiri
32
+ requirement: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - "~>"
35
+ - !ruby/object:Gem::Version
36
+ version: '1.6'
37
+ type: :runtime
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: '1.6'
44
+ - !ruby/object:Gem::Dependency
45
+ name: rspec
46
+ requirement: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: '0'
51
+ type: :development
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: '0'
58
+ - !ruby/object:Gem::Dependency
59
+ name: standard
60
+ requirement: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: '0'
65
+ type: :development
66
+ prerelease: false
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
72
+ - !ruby/object:Gem::Dependency
73
+ name: webmock
74
+ requirement: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ type: :development
80
+ prerelease: false
81
+ version_requirements: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ description: Twinfield is an international Web service for collaborative online accounting.
87
+ The Twinfield gem is a simple client for their SOAP-based API.
88
+ email:
89
+ - ernst.rijsdijk@holder.nl
90
+ - s.vandiepen@noxa.nl
91
+ - joris@sprintict.nl
92
+ - maarten@murb.nl
93
+ executables: []
94
+ extensions: []
95
+ extra_rdoc_files: []
96
+ files:
97
+ - ".github/workflows/codeql-analysis.yml"
98
+ - ".github/workflows/rspec.yml"
99
+ - ".gitignore"
100
+ - ".rspec"
101
+ - CHANGELOG.md
102
+ - Gemfile
103
+ - README.md
104
+ - Rakefile
105
+ - lib/twinfield.rb
106
+ - lib/twinfield/abstract_model.rb
107
+ - lib/twinfield/api/base_api.rb
108
+ - lib/twinfield/api/finder.rb
109
+ - lib/twinfield/api/o_auth_session.rb
110
+ - lib/twinfield/api/process.rb
111
+ - lib/twinfield/api/session.rb
112
+ - lib/twinfield/browse/transaction/cost_center.rb
113
+ - lib/twinfield/browse/transaction/customer.rb
114
+ - lib/twinfield/browse/transaction/general_ledger.rb
115
+ - lib/twinfield/configuration.rb
116
+ - lib/twinfield/create/cost_center.rb
117
+ - lib/twinfield/create/creditor.rb
118
+ - lib/twinfield/create/debtor.rb
119
+ - lib/twinfield/create/error.rb
120
+ - lib/twinfield/create/general_ledger.rb
121
+ - lib/twinfield/create/transaction.rb
122
+ - lib/twinfield/customer.rb
123
+ - lib/twinfield/helpers/parsers.rb
124
+ - lib/twinfield/helpers/transaction_match.rb
125
+ - lib/twinfield/request/find.rb
126
+ - lib/twinfield/request/list.rb
127
+ - lib/twinfield/request/read.rb
128
+ - lib/twinfield/sales_invoice.rb
129
+ - lib/twinfield/transaction.rb
130
+ - lib/twinfield/version.rb
131
+ - script/boot.rb
132
+ - script/console
133
+ - spec/fixtures/cluster/finder/ivt.xml
134
+ - spec/fixtures/cluster/processxml/columns/sales_transactions.xml
135
+ - spec/fixtures/cluster/processxml/customer/create_success.xml
136
+ - spec/fixtures/cluster/processxml/customer/read_success.xml
137
+ - spec/fixtures/cluster/processxml/customer/update_success.xml
138
+ - spec/fixtures/cluster/processxml/invoice/create_error.xml
139
+ - spec/fixtures/cluster/processxml/invoice/create_final_error.xml
140
+ - spec/fixtures/cluster/processxml/invoice/create_success.xml
141
+ - spec/fixtures/cluster/processxml/invoice/read_not_found.xml
142
+ - spec/fixtures/cluster/processxml/invoice/read_success.xml
143
+ - spec/fixtures/cluster/processxml/read/deb.xml
144
+ - spec/fixtures/cluster/processxml/response.xml
145
+ - spec/fixtures/login/session/wsdl.xml
146
+ - spec/spec_helper.rb
147
+ - spec/stubs/finder_stubs.rb
148
+ - spec/stubs/processxml_stubs.rb
149
+ - spec/stubs/session_stubs.rb
150
+ - spec/twinfield/api/oauth_session_spec.rb
151
+ - spec/twinfield/api/process_spec.rb
152
+ - spec/twinfield/browse/transaction/cost_center_spec.rb
153
+ - spec/twinfield/browse/transaction/general_ledger_spec.rb
154
+ - spec/twinfield/browse/transaction/transaction_spec.rb
155
+ - spec/twinfield/config_spec.rb
156
+ - spec/twinfield/customer_spec.rb
157
+ - spec/twinfield/request/find_spec.rb
158
+ - spec/twinfield/request/list_spec.rb
159
+ - spec/twinfield/request/read_spec.rb
160
+ - spec/twinfield/sales_invoice_spec.rb
161
+ - spec/twinfield/session_spec.rb
162
+ - spec/twinfield/transaction_spec.rb
163
+ - twinfieldrb.gemspec
164
+ - wsdls/accounting/finder.wsdl
165
+ - wsdls/accounting/process.wsdl
166
+ - wsdls/accounting/session.wsdl
167
+ - wsdls/accounting2/finder.wsdl
168
+ - wsdls/accounting2/process.wsdl
169
+ - wsdls/api.accounting/finder.wsdl
170
+ - wsdls/api.accounting/process.wsdl
171
+ - wsdls/session.wsdl
172
+ - wsdls/update
173
+ homepage: https://github.com/murb/twinfield
174
+ licenses: []
175
+ metadata: {}
176
+ post_install_message:
177
+ rdoc_options: []
178
+ require_paths:
179
+ - lib
180
+ required_ruby_version: !ruby/object:Gem::Requirement
181
+ requirements:
182
+ - - ">="
183
+ - !ruby/object:Gem::Version
184
+ version: '0'
185
+ required_rubygems_version: !ruby/object:Gem::Requirement
186
+ requirements:
187
+ - - ">="
188
+ - !ruby/object:Gem::Version
189
+ version: '0'
190
+ requirements: []
191
+ rubygems_version: 3.5.21
192
+ signing_key:
193
+ specification_version: 4
194
+ summary: A simple client for the Twinfield SOAP-based API (continuation of the twinfield
195
+ gem)
196
+ test_files: []