twinfieldrb 0.3.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/.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: []