intacct_ruby 1.8.2 → 2.0.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 (31) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -0
  3. data/README.md +8 -7
  4. data/intacct_ruby.gemspec +3 -3
  5. data/lib/intacct_ruby.rb +0 -22
  6. data/lib/intacct_ruby/function.rb +16 -16
  7. data/lib/intacct_ruby/response.rb +3 -3
  8. data/lib/intacct_ruby/version.rb +1 -1
  9. metadata +5 -25
  10. data/lib/intacct_ruby/functions/base_function.rb +0 -48
  11. data/lib/intacct_ruby/functions/create_aradjustment.rb +0 -48
  12. data/lib/intacct_ruby/functions/create_customer.rb +0 -23
  13. data/lib/intacct_ruby/functions/create_employee.rb +0 -21
  14. data/lib/intacct_ruby/functions/create_gltransaction.rb +0 -28
  15. data/lib/intacct_ruby/functions/create_item.rb +0 -21
  16. data/lib/intacct_ruby/functions/create_location.rb +0 -21
  17. data/lib/intacct_ruby/functions/create_project.rb +0 -20
  18. data/lib/intacct_ruby/functions/create_statgltransaction.rb +0 -28
  19. data/lib/intacct_ruby/functions/customer_base_function.rb +0 -27
  20. data/lib/intacct_ruby/functions/employee_base_function.rb +0 -36
  21. data/lib/intacct_ruby/functions/gltransaction_base_function.rb +0 -64
  22. data/lib/intacct_ruby/functions/item_base_function.rb +0 -29
  23. data/lib/intacct_ruby/functions/location_base_function.rb +0 -24
  24. data/lib/intacct_ruby/functions/project_base_function.rb +0 -22
  25. data/lib/intacct_ruby/functions/update_customer.rb +0 -22
  26. data/lib/intacct_ruby/functions/update_employee.rb +0 -20
  27. data/lib/intacct_ruby/functions/update_item.rb +0 -20
  28. data/lib/intacct_ruby/functions/update_location.rb +0 -20
  29. data/lib/intacct_ruby/functions/update_project.rb +0 -20
  30. data/lib/intacct_ruby/helpers/contacts_helper.rb +0 -32
  31. data/lib/intacct_ruby/helpers/date_helper.rb +0 -22
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9401cfe3ebceac0d987f583317b7b04768d335f6
4
- data.tar.gz: 73f9317a4d6a0e33a4ab2fa5a927d41ca93f2c43
3
+ metadata.gz: 4d37404ab1cd29e71d19ff93958db3d09ba2f811
4
+ data.tar.gz: 403b879bfc5645a921779e0c10344befea433a0e
5
5
  SHA512:
6
- metadata.gz: d4fb23f7ea378c6bab86b1779a1bbfb626e71e6fa9a17f18bb57d7adcaf4e3960c56bc56eae2acb84b86f00268ebd30960a3d676876f42306da92d00137365e5
7
- data.tar.gz: ef4dd4440e388f809fa31bf455197e5449ec30f99af8dd6f2ac7607799ab3840aeb9ed4111d0c721bdd503a3269a2b74dafc412e3514f2b3747541bff1cf9f52
6
+ metadata.gz: f54943581d44599a57b68d0b4bd46a10cd194733a66d14c7fabfb542ef150f682fdb33ec2933bd7154f34686995adfc8fc1e7496a9984570ab545ed7c4b079cf
7
+ data.tar.gz: 59baae1a3c747df587619ad0bb46f94840647a756f0317e090086b26466a1ff4fd1c634062232330c849969ae91ab80615666bf595e7a97fa0aca261a2917eb2
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ # 2.0.0 (May 18, 2018)
2
+
3
+ * Use keyword-args ([@bezoar17](https://github.com/bezoar17) in [#20](https://github.com/privateprep/intacct-ruby/pull/20))
4
+ * Renames param to reflect true nature ([@toddsiegel](https://github.com/toddsiegel) in [#21](https://github.com/privateprep/intacct-ruby/pull/21))
5
+ * Cleans up dead code ([@danielpowell4](https://github.com/danielpowell4) in [#22](https://github.com/privateprep/intacct-ruby/pull/22))
6
+
1
7
  # 1.8.2 (March 20, 2018)
2
8
 
3
9
  * Fixup object_type nil bug for read requests ([@bezoar17](https://github.com/bezoar17) in [#16](https://github.com/privateprep/intacct-ruby/pull/16))
data/README.md CHANGED
@@ -1,3 +1,4 @@
1
+
1
2
  [![Build Status](https://travis-ci.org/privateprep/intacct-ruby.svg?branch=master)](https://travis-ci.org/privateprep/intacct-ruby)
2
3
 
3
4
  # IntacctRuby
@@ -21,7 +22,7 @@ Let's say you want to create a project and a customer associated with that proje
21
22
  # for more information.
22
23
  request = IntacctRuby::Request.new(REQUEST_OPTS)
23
24
 
24
- request.create :CUSTOMER, {
25
+ request.create object_type: :CUSTOMER, parameters: {
25
26
  CUSTOMERID: '1',
26
27
  FIRST_NAME: 'Han',
27
28
  LAST_NAME: 'Solo',
@@ -30,7 +31,7 @@ request.create :CUSTOMER, {
30
31
  STATUS: 'active'
31
32
  }
32
33
 
33
- request.create :PROJECT, {
34
+ request.create object_type: :PROJECT, parameters: {
34
35
  PROJECTID: '1',
35
36
  NAME: 'Get Chewie a Haircut',
36
37
  PROJECTCATEGORY: 'Improve Wookie Hygene',
@@ -84,15 +85,15 @@ This will fire off a request that looks something like this:
84
85
 
85
86
  ### Read Requests
86
87
 
87
- The read requests follow a slightly different pattern. The object-type is mentioned inside the object tag as seen here [Intacct List Journal Entries](https://developer.intacct.com/api/general-ledger/journal-entries/#list-journal-entry-lines). The following code will read all GLENTRY objects in a specific interval
88
+ The read requests follow a slightly different pattern. The object-type is mentioned inside the `object` tag as seen here [Intacct List Journal Entries](https://developer.intacct.com/api/general-ledger/journal-entries/#list-journal-entry-lines). Hence, read requests don't accept a `object_type:` argument directly, the object type is passed through the parameters argument. The following code will read all GLENTRY objects in a specific interval
88
89
 
89
90
  **Note:** The gem encodes the queries to a valid XML so that you don't have to. You can query using the `&, >, <` operators as seen below.
90
91
 
91
92
  ```ruby
92
93
  request = IntacctRuby::Request.new(REQUEST_OPTS)
93
94
 
94
- # Object-Type GLENTRY is sent through extra-parameters and not as the first argument.
95
- request.readByQuery nil, {
95
+ # Object-Type GLENTRY is sent through the parameters arguments
96
+ request.readByQuery parameters: {
96
97
  object: 'GLENTRY',
97
98
  query: "BATCH_DATE >= '03-01-2018' AND BATCH_DATE <= '03-15-2018'",
98
99
  fields: '*',
@@ -129,7 +130,7 @@ Similarly, for pagination use the `readMore` function as mentioned here [Intacct
129
130
  ```ruby
130
131
  request = IntacctRuby::Request.new(REQUEST_OPTS)
131
132
 
132
- request.readMore nil, {
133
+ request.readMore parameters: {
133
134
  resultId: '7765623332WU1hh8CoA4QAAHxI9i8AAAAA5'
134
135
  }
135
136
 
@@ -257,7 +258,7 @@ Or install it yourself as:
257
258
 
258
259
  ## Contributing
259
260
 
260
- Bug reports and pull requests are welcome on GitHub at https://github.com/jzornow/intacct-ruby/.
261
+ Bug reports and pull requests are welcome on GitHub at https://github.com/privateprep/intacct-ruby/.
261
262
 
262
263
  This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
263
264
 
data/intacct_ruby.gemspec CHANGED
@@ -7,14 +7,14 @@ require 'intacct_ruby/version'
7
7
  Gem::Specification.new do |spec|
8
8
  spec.name = 'intacct_ruby'
9
9
  spec.version = IntacctRuby::VERSION
10
- spec.authors = ['Jeremy Zornow']
11
- spec.email = ['jeremy@zornow.com']
10
+ spec.authors = ['Jeremy Zornow', 'Dan Powell']
11
+ spec.email = ['jeremy@zornow.com', 'dan.powell@privateprep.com']
12
12
  spec.required_ruby_version = '>= 2.2.0'
13
13
  spec.summary = 'A Ruby wrapper for the Intacct API'
14
14
  spec.description = 'Allows for multi-function API calls, the ' \
15
15
  'addition of custom fields, and more. All in ' \
16
16
  'an easy-to-use package!'
17
- spec.homepage = 'https://github.com/jzornow/intacct-ruby'
17
+ spec.homepage = 'https://github.com/privateprep/intacct-ruby'
18
18
  spec.license = 'MIT'
19
19
 
20
20
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
data/lib/intacct_ruby.rb CHANGED
@@ -3,25 +3,3 @@ require 'intacct_ruby/version'
3
3
 
4
4
  require 'intacct_ruby/request'
5
5
  require 'intacct_ruby/response'
6
-
7
- require 'intacct_ruby/functions/base_function'
8
-
9
- require 'intacct_ruby/functions/create_customer'
10
- require 'intacct_ruby/functions/update_customer'
11
-
12
- require 'intacct_ruby/functions/create_project'
13
- require 'intacct_ruby/functions/update_project'
14
-
15
- require 'intacct_ruby/functions/create_employee'
16
- require 'intacct_ruby/functions/update_employee'
17
-
18
- require 'intacct_ruby/functions/create_location'
19
- require 'intacct_ruby/functions/update_location'
20
-
21
- require 'intacct_ruby/functions/create_item'
22
- require 'intacct_ruby/functions/update_item'
23
-
24
- require 'intacct_ruby/functions/create_aradjustment'
25
-
26
- require 'intacct_ruby/functions/create_gltransaction'
27
- require 'intacct_ruby/functions/create_statgltransaction'
@@ -3,7 +3,7 @@ require 'intacct_ruby/exceptions/unknown_function_type'
3
3
 
4
4
  module IntacctRuby
5
5
  # a function to be sent to Intacct. Defined by a function type (e.g. :create),
6
- # an object type, (e.g. :customer), and arguments.
6
+ # an object type, (e.g. :customer), and parameters.
7
7
  class Function
8
8
  ALLOWED_TYPES = %w(
9
9
  readByQuery
@@ -17,10 +17,10 @@ module IntacctRuby
17
17
 
18
18
  CU_TYPES = %w(create update).freeze
19
19
 
20
- def initialize(function_type, object_type, arguments = {})
20
+ def initialize(function_type, object_type: nil, parameters: )
21
21
  @function_type = function_type.to_s
22
22
  @object_type = object_type.to_s
23
- @arguments = arguments
23
+ @parameters = parameters
24
24
 
25
25
  validate_type!
26
26
  end
@@ -32,10 +32,10 @@ module IntacctRuby
32
32
  xml.tag!(@function_type) do
33
33
  if CU_TYPES.include?(@function_type)
34
34
  xml.tag!(@object_type) do
35
- xml << argument_xml(@arguments)
35
+ xml << parameter_xml(@parameters)
36
36
  end
37
37
  else
38
- xml << argument_xml(@arguments)
38
+ xml << parameter_xml(@parameters)
39
39
  end
40
40
  end
41
41
  end
@@ -53,36 +53,36 @@ module IntacctRuby
53
53
  "#{@function_type}-#{@object_type}-#{timestamp}"
54
54
  end
55
55
 
56
- def argument_xml(arguments_to_convert)
56
+ def parameter_xml(parameters_to_convert)
57
57
  xml = Builder::XmlMarkup.new
58
58
 
59
- arguments_to_convert.each do |key, value|
60
- argument_key = key.to_s
59
+ parameters_to_convert.each do |key, value|
60
+ parameter_key = key.to_s
61
61
 
62
- xml.tag!(argument_key) do
63
- xml << argument_value_as_xml(value)
62
+ xml.tag!(parameter_key) do
63
+ xml << parameter_value_as_xml(value)
64
64
  end
65
65
  end
66
66
 
67
67
  xml.target!
68
68
  end
69
69
 
70
- def argument_value_as_xml(value)
70
+ def parameter_value_as_xml(value)
71
71
  case value
72
72
  when Hash
73
- argument_xml(value) # recursive case
73
+ parameter_xml(value) # recursive case
74
74
  when Array
75
- argument_value_list_xml(value) # recursive case
75
+ parameter_value_list_xml(value) # recursive case
76
76
  else
77
77
  value.to_s.encode(xml: :text) # end case
78
78
  end
79
79
  end
80
80
 
81
- def argument_value_list_xml(array_of_hashes)
81
+ def parameter_value_list_xml(array_of_hashes)
82
82
  xml = Builder::XmlMarkup.new
83
83
 
84
- array_of_hashes.each do |argument_hash|
85
- xml << argument_xml(argument_hash)
84
+ array_of_hashes.each do |parameter_hash|
85
+ xml << parameter_xml(parameter_hash)
86
86
  end
87
87
 
88
88
  xml.target!
@@ -13,11 +13,11 @@ module IntacctRuby
13
13
  class Response
14
14
  attr_reader :response_body
15
15
 
16
- def initialize(xml_response)
17
- @response_body = Nokogiri::XML(xml_response.body)
16
+ def initialize(http_response)
17
+ @response_body = Nokogiri::XML(http_response.body)
18
18
 
19
19
  # raises an error unless the response is in the 2xx range.
20
- xml_response.value
20
+ http_response.value
21
21
 
22
22
  # in case the response is a success, but one of the included functions
23
23
  # failed and the transaction was rolled back
@@ -1,3 +1,3 @@
1
1
  module IntacctRuby
2
- VERSION = '1.8.2'.freeze
2
+ VERSION = '2.0.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: intacct_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.2
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Zornow
8
+ - Dan Powell
8
9
  autorequire:
9
10
  bindir: exe
10
11
  cert_chain: []
11
- date: 2018-03-20 00:00:00.000000000 Z
12
+ date: 2018-05-21 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: bundler
@@ -150,6 +151,7 @@ description: Allows for multi-function API calls, the addition of custom fields,
150
151
  more. All in an easy-to-use package!
151
152
  email:
152
153
  - jeremy@zornow.com
154
+ - dan.powell@privateprep.com
153
155
  executables: []
154
156
  extensions: []
155
157
  extra_rdoc_files: []
@@ -175,32 +177,10 @@ files:
175
177
  - lib/intacct_ruby/exceptions/insufficient_credentials_exception.rb
176
178
  - lib/intacct_ruby/exceptions/unknown_function_type.rb
177
179
  - lib/intacct_ruby/function.rb
178
- - lib/intacct_ruby/functions/base_function.rb
179
- - lib/intacct_ruby/functions/create_aradjustment.rb
180
- - lib/intacct_ruby/functions/create_customer.rb
181
- - lib/intacct_ruby/functions/create_employee.rb
182
- - lib/intacct_ruby/functions/create_gltransaction.rb
183
- - lib/intacct_ruby/functions/create_item.rb
184
- - lib/intacct_ruby/functions/create_location.rb
185
- - lib/intacct_ruby/functions/create_project.rb
186
- - lib/intacct_ruby/functions/create_statgltransaction.rb
187
- - lib/intacct_ruby/functions/customer_base_function.rb
188
- - lib/intacct_ruby/functions/employee_base_function.rb
189
- - lib/intacct_ruby/functions/gltransaction_base_function.rb
190
- - lib/intacct_ruby/functions/item_base_function.rb
191
- - lib/intacct_ruby/functions/location_base_function.rb
192
- - lib/intacct_ruby/functions/project_base_function.rb
193
- - lib/intacct_ruby/functions/update_customer.rb
194
- - lib/intacct_ruby/functions/update_employee.rb
195
- - lib/intacct_ruby/functions/update_item.rb
196
- - lib/intacct_ruby/functions/update_location.rb
197
- - lib/intacct_ruby/functions/update_project.rb
198
- - lib/intacct_ruby/helpers/contacts_helper.rb
199
- - lib/intacct_ruby/helpers/date_helper.rb
200
180
  - lib/intacct_ruby/request.rb
201
181
  - lib/intacct_ruby/response.rb
202
182
  - lib/intacct_ruby/version.rb
203
- homepage: https://github.com/jzornow/intacct-ruby
183
+ homepage: https://github.com/privateprep/intacct-ruby
204
184
  licenses:
205
185
  - MIT
206
186
  metadata: {}
@@ -1,48 +0,0 @@
1
- require 'builder'
2
-
3
- module IntacctRuby
4
- module Functions
5
- # Creates the basic structure for all functions.
6
- # Meant to be an interface: this should not be implemented on its own.
7
- class BaseFunction
8
- def initialize(controlid, attrs = {})
9
- @controlid = controlid
10
- @attrs = attrs
11
-
12
- @xml = Builder::XmlMarkup.new
13
- end
14
-
15
- def to_xml
16
- @to_xml ||= begin
17
- @xml.function controlid: @controlid do
18
- yield(@xml)
19
- end
20
-
21
- # converts xml to string
22
- @xml.target!
23
- end
24
- end
25
-
26
- private
27
-
28
- def timestamp
29
- @timestamp ||= Time.now.utc.to_s
30
- end
31
-
32
- def custom_field_params(custom_fields)
33
- xml = Builder::XmlMarkup.new
34
-
35
- xml.customfields do
36
- custom_fields.each do |name, value|
37
- xml.customfield do
38
- xml.customfieldname name.to_s
39
- xml.customfieldvalue value.to_s
40
- end
41
- end
42
- end
43
-
44
- xml.target!
45
- end
46
- end
47
- end
48
- end
@@ -1,48 +0,0 @@
1
- require 'intacct_ruby/functions/base_function'
2
- require 'intacct_ruby/helpers/date_helper'
3
-
4
- module IntacctRuby
5
- module Functions
6
- # creates ar adjustment instance in Intacct
7
- class CreateARAdjustment < BaseFunction
8
- include DateHelper
9
-
10
- def initialize(attrs = {})
11
- super "create_aradjustment (Customer \##{attrs[:customerid]}, " \
12
- "(#{timestamp})", attrs
13
- end
14
-
15
- def to_xml
16
- super do |xml|
17
- xml.create_aradjustment do
18
- xml.customerid @attrs[:customerid]
19
-
20
- xml << date_params(:datecreated, @attrs[:datecreated])
21
-
22
- xml.description @attrs[:description]
23
-
24
- xml.aradjustmentitems do
25
- xml << line_item_params(@attrs[:aradjustmentitems])
26
- end
27
- end
28
- end
29
- end
30
-
31
- private
32
-
33
- def line_item_params(adjustment_item_attrs)
34
- xml = Builder::XmlMarkup.new
35
-
36
- adjustment_item_attrs.each do |item_params|
37
- xml.lineitem do
38
- [:glaccountno, :amount, :memo, :locationid].each do |param_key|
39
- xml.tag!(param_key) { xml << item_params[param_key].to_s }
40
- end
41
- end
42
- end
43
-
44
- xml.target!
45
- end
46
- end
47
- end
48
- end
@@ -1,23 +0,0 @@
1
- require 'intacct_ruby/helpers/contacts_helper'
2
- require 'intacct_ruby/functions/customer_base_function'
3
-
4
- module IntacctRuby
5
- module Functions
6
- # function that creates customer instance
7
- class CreateCustomer < CustomerBaseFunction
8
- def initialize(attrs = {})
9
- super "create_customer_#{attrs[:customerid]}", attrs
10
- end
11
-
12
- def to_xml
13
- super do |xml|
14
- xml.create_customer do
15
- xml.customerid @attrs[:customerid]
16
-
17
- xml << customer_params
18
- end
19
- end
20
- end
21
- end
22
- end
23
- end
@@ -1,21 +0,0 @@
1
- require 'intacct_ruby/functions/employee_base_function'
2
-
3
- module IntacctRuby
4
- module Functions
5
- # Function that creates an employee instance in Intacct
6
- class CreateEmployee < EmployeeBaseFunction
7
- def initialize(attrs = {})
8
- super("create_employee_#{attrs[:employeeid]}", attrs)
9
- end
10
-
11
- def to_xml
12
- super do |xml|
13
- xml.create_employee do
14
- xml.employeeid @attrs[:employeeid]
15
- xml << employee_params
16
- end
17
- end
18
- end
19
- end
20
- end
21
- end
@@ -1,28 +0,0 @@
1
- require 'intacct_ruby/functions/gltransaction_base_function'
2
- require 'intacct_ruby/helpers/date_helper'
3
-
4
- module IntacctRuby
5
- module Functions
6
- # creates gltransaction instance in Intacct
7
- class CreateGLTransaction < GLTransactionBaseFunction
8
- include DateHelper
9
-
10
- def initialize(attrs = {})
11
- super "create_gltransaction (#{attrs[:description]} #{timestamp})",
12
- attrs
13
- end
14
-
15
- def to_xml
16
- super do |xml|
17
- xml.create_gltransaction do
18
- xml << gltransaction_header_params(@attrs)
19
-
20
- xml.gltransactionentries do
21
- xml << gltransactionentry_params(@attrs[:gltransactionentries])
22
- end
23
- end
24
- end
25
- end
26
- end
27
- end
28
- end
@@ -1,21 +0,0 @@
1
- require 'intacct_ruby/functions/item_base_function'
2
-
3
- module IntacctRuby
4
- module Functions
5
- # creates an item instance in Intacct
6
- class CreateItem < ItemBaseFunction
7
- def initialize(attrs = {})
8
- super "create_item_#{attrs[:itemid]}", attrs
9
- end
10
-
11
- def to_xml
12
- super do |xml|
13
- xml.create_item do
14
- xml.itemid @attrs[:itemid]
15
- xml << item_params
16
- end
17
- end
18
- end
19
- end
20
- end
21
- end
@@ -1,21 +0,0 @@
1
- require 'intacct_ruby/functions/location_base_function'
2
-
3
- module IntacctRuby
4
- module Functions
5
- # Function that creates a location instance in Intacct
6
- class CreateLocation < LocationBaseFunction
7
- def initialize(attrs = {})
8
- super("create_location_#{attrs[:locationid]}", attrs)
9
- end
10
-
11
- def to_xml
12
- super do |xml|
13
- xml.create_location do
14
- xml.locationid @attrs[:locationid]
15
- xml << location_params
16
- end
17
- end
18
- end
19
- end
20
- end
21
- end
@@ -1,20 +0,0 @@
1
- require 'intacct_ruby/functions/project_base_function'
2
-
3
- module IntacctRuby
4
- module Functions
5
- # creates a project instance in Intacct
6
- class CreateProject < ProjectBaseFunction
7
- def initialize(attrs = {})
8
- super("create_project_#{attrs[:projectid]}", attrs)
9
- end
10
-
11
- def to_xml
12
- super do |xml|
13
- xml.create_project do
14
- xml << project_params
15
- end
16
- end
17
- end
18
- end
19
- end
20
- end
@@ -1,28 +0,0 @@
1
- require 'intacct_ruby/functions/gltransaction_base_function'
2
- require 'intacct_ruby/helpers/date_helper'
3
-
4
- module IntacctRuby
5
- module Functions
6
- # creates gltransaction instance in Intacct
7
- class CreateStatGLTransaction < GLTransactionBaseFunction
8
- include DateHelper
9
-
10
- def initialize(attrs = {})
11
- super "create_statgltransaction (#{attrs[:description]} #{timestamp})",
12
- attrs
13
- end
14
-
15
- def to_xml
16
- super do |xml|
17
- xml.create_statgltransaction do
18
- xml << gltransaction_header_params(@attrs)
19
-
20
- xml.statgltransactionentries do
21
- xml << gltransactionentry_params(@attrs[:statgltransactionentries])
22
- end
23
- end
24
- end
25
- end
26
- end
27
- end
28
- end
@@ -1,27 +0,0 @@
1
- require 'intacct_ruby/functions/base_function'
2
- require 'intacct_ruby/helpers/contacts_helper'
3
-
4
- module IntacctRuby
5
- module Functions
6
- # the parent for all customer-related functions. Includes methods that
7
- # cut down on duplicate code
8
- class CustomerBaseFunction < BaseFunction
9
- include ContactsHelper
10
-
11
- private
12
-
13
- def customer_params
14
- xml = Builder::XmlMarkup.new
15
-
16
- xml.name full_name(@attrs)
17
- xml.custrepid @attrs[:custrepid]
18
- xml.status @attrs[:status]
19
- xml.contactinfo do
20
- xml << contact_params(@attrs, @attrs[:customerid], 'Customer')
21
- end
22
-
23
- xml.target!
24
- end
25
- end
26
- end
27
- end
@@ -1,36 +0,0 @@
1
- require 'intacct_ruby/helpers/contacts_helper'
2
- require 'intacct_ruby/helpers/date_helper'
3
- require 'intacct_ruby/functions/base_function'
4
-
5
- module IntacctRuby
6
- module Functions
7
- # contains code shared by all employee functions
8
- class EmployeeBaseFunction < BaseFunction
9
- include IntacctRuby::ContactsHelper
10
- include IntacctRuby::DateHelper
11
-
12
- private
13
-
14
- def employee_params
15
- xml = Builder::XmlMarkup.new
16
-
17
- xml.locationid @attrs[:locationid]
18
- xml.supervisorid @attrs[:supervisorid]
19
-
20
- xml << start_date_params
21
-
22
- xml.status @attrs[:status]
23
-
24
- xml.personalinfo do
25
- xml << employee_contact_params
26
- end
27
-
28
- xml.target!
29
- end
30
-
31
- def employee_contact_params
32
- contact_params(@attrs, @attrs[:employeeid], 'Employee')
33
- end
34
- end
35
- end
36
- end
@@ -1,64 +0,0 @@
1
- require 'intacct_ruby/functions/base_function'
2
- require 'intacct_ruby/helpers/date_helper'
3
-
4
- module IntacctRuby
5
- module Functions
6
- # creates gltransaction instance in Intacct
7
- class GLTransactionBaseFunction < BaseFunction
8
- include DateHelper
9
-
10
- private
11
-
12
- def gltransaction_header_params(attributes)
13
- xml = Builder::XmlMarkup.new
14
-
15
- xml << extract_from_attrs(attributes, :journalid)
16
- xml << date_params(:datecreated, attributes[:datecreated])
17
- xml << extract_from_attrs(attributes, :description)
18
-
19
- xml.target!
20
- end
21
-
22
- def gltransactionentry_params(transaction_entries)
23
- xml = Builder::XmlMarkup.new
24
-
25
- transaction_entries.each do |entry_attrs|
26
- xml << glentry_params(entry_attrs)
27
- end
28
-
29
- xml.target!
30
- end
31
-
32
- def glentry_params(attrs)
33
- xml = Builder::XmlMarkup.new
34
-
35
- xml.glentry do
36
- xml << extract_from_attrs(attrs, :trtype, :amount, :glaccountno)
37
- xml << date_params(:datecreated, attrs[:datecreated])
38
- xml << extract_from_attrs(
39
- attrs,
40
- :memo,
41
- :locationid,
42
- :customerid,
43
- :employeeid,
44
- :projectid,
45
- :itemid
46
- )
47
- end
48
-
49
- xml.target!
50
- end
51
-
52
- def extract_from_attrs(attributes_hash, *keys)
53
- xml = Builder::XmlMarkup.new
54
-
55
- keys.each do |key|
56
- value = attributes_hash[key]
57
- xml.tag!(key) { xml << value.to_s } if value
58
- end
59
-
60
- xml.target!
61
- end
62
- end
63
- end
64
- end
@@ -1,29 +0,0 @@
1
- require 'intacct_ruby/functions/base_function'
2
-
3
- module IntacctRuby
4
- module Functions
5
- # function that all item functions are built off of, to decreate dupe code
6
- class ItemBaseFunction < BaseFunction
7
- ALL_PARAMS = [
8
- :name,
9
- :itemtype,
10
- :extended_description,
11
- :productlineid,
12
- :standard_cost,
13
- :glgroup,
14
- :uomgrp
15
- ].freeze
16
-
17
- def item_params
18
- xml = Builder::XmlMarkup.new
19
-
20
- ALL_PARAMS.each do |param_name|
21
- param_value = @attrs[param_name]
22
- xml.tag!(param_name) { xml << param_value } if param_value
23
- end
24
-
25
- xml.target!
26
- end
27
- end
28
- end
29
- end
@@ -1,24 +0,0 @@
1
- require 'intacct_ruby/functions/base_function'
2
- require 'intacct_ruby/helpers/date_helper'
3
-
4
- module IntacctRuby
5
- module Functions
6
- # base for all location-related functions, to cut down on duplicate code
7
- class LocationBaseFunction < BaseFunction
8
- include IntacctRuby::DateHelper
9
-
10
- private
11
-
12
- def location_params
13
- xml = Builder::XmlMarkup.new
14
-
15
- xml.name @attrs[:name]
16
- xml.parentid @attrs[:parentid]
17
-
18
- xml << start_date_params
19
-
20
- xml.target!
21
- end
22
- end
23
- end
24
- end
@@ -1,22 +0,0 @@
1
- require 'intacct_ruby/functions/base_function'
2
-
3
- module IntacctRuby
4
- module Functions
5
- # contains shared code for creating and updating projects
6
- class ProjectBaseFunction < BaseFunction
7
- private
8
-
9
- def project_params
10
- xml = Builder::XmlMarkup.new
11
-
12
- [:projectid, :name, :projectcategory, :customerid].each do |key|
13
- xml.tag!(key.to_s) { xml << @attrs[key].to_s }
14
- end
15
-
16
- xml << custom_field_params(@attrs[:customfields])
17
-
18
- xml.target!
19
- end
20
- end
21
- end
22
- end
@@ -1,22 +0,0 @@
1
- require 'intacct_ruby/functions/customer_base_function'
2
-
3
- module IntacctRuby
4
- module Functions
5
- # update customer instance
6
- class UpdateCustomer < CustomerBaseFunction
7
- include ContactsHelper
8
-
9
- def initialize(attrs = {})
10
- super "update_customer_#{attrs[:customerid]} (#{timestamp})", attrs
11
- end
12
-
13
- def to_xml
14
- super do |xml|
15
- xml.update_customer customerid: @attrs[:customerid] do
16
- xml << customer_params
17
- end
18
- end
19
- end
20
- end
21
- end
22
- end
@@ -1,20 +0,0 @@
1
- require 'intacct_ruby/functions/employee_base_function'
2
-
3
- module IntacctRuby
4
- module Functions
5
- # function used to update employee instances
6
- class UpdateEmployee < EmployeeBaseFunction
7
- def initialize(attrs = {})
8
- super("update_employee_#{attrs[:employeeid]} (#{timestamp})", attrs)
9
- end
10
-
11
- def to_xml
12
- super do |xml|
13
- xml.update_employee employeeid: @attrs[:employeeid] do
14
- xml << employee_params
15
- end
16
- end
17
- end
18
- end
19
- end
20
- end
@@ -1,20 +0,0 @@
1
- require 'intacct_ruby/functions/item_base_function'
2
-
3
- module IntacctRuby
4
- module Functions
5
- # updates item instance in Intacct
6
- class UpdateItem < ItemBaseFunction
7
- def initialize(attrs = {})
8
- super "update_item_#{attrs[:itemid]} (#{timestamp})", attrs
9
- end
10
-
11
- def to_xml
12
- super do |xml|
13
- xml.update_item itemid: @attrs[:itemid] do
14
- xml << item_params
15
- end
16
- end
17
- end
18
- end
19
- end
20
- end
@@ -1,20 +0,0 @@
1
- require 'intacct_ruby/functions/location_base_function'
2
-
3
- module IntacctRuby
4
- module Functions
5
- # used to update location instances in Intacct
6
- class UpdateLocation < LocationBaseFunction
7
- def initialize(attrs = {})
8
- super("update_location_#{attrs[:locationid]} (#{timestamp})", attrs)
9
- end
10
-
11
- def to_xml
12
- super do |xml|
13
- xml.update_location locationid: @attrs[:locationid] do
14
- xml << location_params
15
- end
16
- end
17
- end
18
- end
19
- end
20
- end
@@ -1,20 +0,0 @@
1
- require 'intacct_ruby/functions/project_base_function'
2
-
3
- module IntacctRuby
4
- module Functions
5
- # creates a project instance in Intacct
6
- class UpdateProject < ProjectBaseFunction
7
- def initialize(attrs = {})
8
- super("update_project_#{attrs[:projectid]} (#{timestamp})", attrs)
9
- end
10
-
11
- def to_xml
12
- super do |xml|
13
- xml.update_project key: @attrs[:projectid] do
14
- xml << project_params
15
- end
16
- end
17
- end
18
- end
19
- end
20
- end
@@ -1,32 +0,0 @@
1
- module IntacctRuby
2
- # methods to avoid duplication when creating and updating contact records
3
- module ContactsHelper
4
- def contact_params(attributes, id, person_type)
5
- xml = Builder::XmlMarkup.new
6
-
7
- name = full_name(attributes)
8
-
9
- xml.contact do
10
- xml.contactname contactname(name, id, person_type)
11
- xml.printas full_name(attributes)
12
- xml.firstname attributes[:first_name]
13
- xml.lastname attributes[:last_name]
14
- xml.email1 attributes[:email1]
15
- end
16
-
17
- xml.target!
18
- end
19
-
20
- def contactname(name, id, person_type)
21
- # a unique identifier for a contact, to be used for Intacct's
22
- # contactname field. Person Type required to ensure that there aren't
23
- # duplicates (e.g. a customer and employee w/ ID 1 both named
24
- # 'John Smith')
25
- "#{name} (#{person_type} \##{id})"
26
- end
27
-
28
- def full_name(attrs = {})
29
- "#{attrs[:first_name]} #{attrs[:last_name]}"
30
- end
31
- end
32
- end
@@ -1,22 +0,0 @@
1
- require 'builder'
2
-
3
- module IntacctRuby
4
- # methods to help generate date XML for calls
5
- module DateHelper
6
- def date_params(block_name, attrs = {})
7
- xml = Builder::XmlMarkup.new
8
-
9
- xml.tag!(block_name) do
10
- xml.year attrs[:year]
11
- xml.month attrs[:month]
12
- xml.day attrs[:day]
13
- end
14
- end
15
-
16
- # Note: @attrs[:startdate] MUST be defined in the invoking context for this
17
- # bad boy to work
18
- def start_date_params
19
- date_params :startdate, @attrs[:startdate]
20
- end
21
- end
22
- end