intacctrb 0.1 → 0.2pre
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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/Gemfile.lock +1 -1
- data/lib/intacctrb/base.rb +9 -21
- data/lib/intacctrb/journal_entry.rb +110 -87
- data/lib/intacctrb/version.rb +1 -1
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7b907457bb9c38a786dc11039cfe95cbbc3866d9
|
4
|
+
data.tar.gz: 1bac18e1a52376b34b634c3eedadb67cd1fcf6be
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 86af4bdd45ff5e41850300a35551f50fdeed91f58bab0eeebdf127ac2cbfe90418e0c7727eb99fb33ac138adf59233d5ac90084dc31d8239767934e9e0308118
|
7
|
+
data.tar.gz: bfdd573f465fa321000ec80406e118ab350a143834020ac55faf3025d8b5a3d3516dac5d9689e22e87e964d48870258a51c1cc11a1b87cf048dbf81c24705b1d
|
data/.gitignore
CHANGED
data/Gemfile.lock
CHANGED
data/lib/intacctrb/base.rb
CHANGED
@@ -31,7 +31,7 @@ module IntacctRB
|
|
31
31
|
xml.password IntacctRB.xml_password
|
32
32
|
xml.controlid "INVOICE XML"
|
33
33
|
xml.uniqueid "false"
|
34
|
-
xml.dtdversion "
|
34
|
+
xml.dtdversion "3.0"
|
35
35
|
}
|
36
36
|
xml.operation(transaction: "false") {
|
37
37
|
xml.authentication {
|
@@ -59,8 +59,8 @@ module IntacctRB
|
|
59
59
|
@response = Nokogiri::XML(res.body)
|
60
60
|
puts res.body
|
61
61
|
if successful?
|
62
|
-
if key = response.at('//result//
|
63
|
-
|
62
|
+
if key = response.at('//result//recordno')
|
63
|
+
set_intacct_id key.content if object
|
64
64
|
end
|
65
65
|
|
66
66
|
if intacct_action
|
@@ -82,30 +82,18 @@ module IntacctRB
|
|
82
82
|
end
|
83
83
|
end
|
84
84
|
|
85
|
-
%w(invoice bill vendor customer).each do |type|
|
85
|
+
%w(invoice bill vendor customer journal_entry).each do |type|
|
86
86
|
define_method "intacct_#{type}_prefix" do
|
87
|
-
|
87
|
+
IntacctRB.send("#{type}_prefix")
|
88
88
|
end
|
89
89
|
end
|
90
90
|
|
91
|
-
def
|
92
|
-
|
91
|
+
def set_intacct_id id
|
92
|
+
object.intacct_id = id
|
93
93
|
end
|
94
94
|
|
95
|
-
def
|
96
|
-
object.
|
97
|
-
end
|
98
|
-
|
99
|
-
def delete_intacct_system_id
|
100
|
-
object.intacct_system_id = nil
|
101
|
-
end
|
102
|
-
|
103
|
-
def set_intacct_key key
|
104
|
-
object.intacct_key = key if object.respond_to? :intacct_key
|
105
|
-
end
|
106
|
-
|
107
|
-
def delete_intacct_key
|
108
|
-
object.intacct_key = nil if object.respond_to? :intacct_key
|
95
|
+
def delete_intacct_id
|
96
|
+
object.intacct_id = nil if object.respond_to? :intacct_id
|
109
97
|
end
|
110
98
|
|
111
99
|
def set_date_time type
|
@@ -2,11 +2,28 @@ module IntacctRB
|
|
2
2
|
class JournalEntry < IntacctRB::Base
|
3
3
|
|
4
4
|
def create
|
5
|
-
return false if object.
|
5
|
+
return false if object.intacct_id.present?
|
6
6
|
send_xml('create') do |xml|
|
7
7
|
xml.function(controlid: "f1") {
|
8
|
-
xml.send("
|
9
|
-
|
8
|
+
xml.send("create") {
|
9
|
+
xml.glbatch {
|
10
|
+
je_xml xml
|
11
|
+
}
|
12
|
+
}
|
13
|
+
}
|
14
|
+
end
|
15
|
+
|
16
|
+
successful?
|
17
|
+
end
|
18
|
+
|
19
|
+
def update
|
20
|
+
return false unless object.intacct_id.present?
|
21
|
+
send_xml('update') do |xml|
|
22
|
+
xml.function(controlid: "f1") {
|
23
|
+
xml.send("update") {
|
24
|
+
xml.glbatch {
|
25
|
+
je_xml xml
|
26
|
+
}
|
10
27
|
}
|
11
28
|
}
|
12
29
|
end
|
@@ -26,21 +43,48 @@ module IntacctRB
|
|
26
43
|
end
|
27
44
|
|
28
45
|
def get_list(options = {})
|
29
|
-
send_xml('
|
46
|
+
send_xml('readByQuery') do |xml|
|
30
47
|
xml.function(controlid: "f4") {
|
31
|
-
xml.
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
end
|
40
|
-
end
|
48
|
+
xml.readByQuery {
|
49
|
+
xml.object "glbatch"
|
50
|
+
xml.pagesize (options[:max_items] || 0)
|
51
|
+
xml.query options[:filter]
|
52
|
+
if options[:fields]
|
53
|
+
xml.fields {
|
54
|
+
fields.each do |field|
|
55
|
+
xml.field field.to_s
|
41
56
|
end
|
42
57
|
}
|
43
58
|
end
|
59
|
+
}
|
60
|
+
}
|
61
|
+
end
|
62
|
+
|
63
|
+
if successful?
|
64
|
+
@data = []
|
65
|
+
@response.xpath('//glbatch').each do |invoice|
|
66
|
+
@data << OpenStruct.new({
|
67
|
+
id: invoice.at("RECORDNO").content,
|
68
|
+
batch_number: invoice.at("BATCHNO").content,
|
69
|
+
journal_id: invoice.at("JOURNAL").content,
|
70
|
+
date: Date.strptime(invoice.at("BATCH_DATE").content,'%m/%d/%Y'),
|
71
|
+
modified_at: DateTime.strptime(invoice.at("MODIFIED").content, '%m/%d/%Y %H:%H:%S'),
|
72
|
+
description: invoice.at("description").content,
|
73
|
+
state: invoice.at("STATE").content
|
74
|
+
})
|
75
|
+
end
|
76
|
+
@data
|
77
|
+
else
|
78
|
+
false
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def get(options = {})
|
83
|
+
send_xml('read') do |xml|
|
84
|
+
xml.function(controlid: "f4") {
|
85
|
+
xml.read {
|
86
|
+
xml.object "glbatch"
|
87
|
+
xml.keys object.intacct_id || options[:intact_id]
|
44
88
|
if options[:fields]
|
45
89
|
xml.fields {
|
46
90
|
fields.each do |field|
|
@@ -54,23 +98,47 @@ module IntacctRB
|
|
54
98
|
|
55
99
|
if successful?
|
56
100
|
@data = []
|
57
|
-
@response.xpath('//
|
101
|
+
@response.xpath('//glbatch').each do |je|
|
58
102
|
@data << OpenStruct.new({
|
59
|
-
id:
|
60
|
-
batch_number:
|
61
|
-
journal_id:
|
62
|
-
|
63
|
-
|
64
|
-
description:
|
65
|
-
state:
|
103
|
+
id: je.at("RECORDNO").content,
|
104
|
+
batch_number: je.at("BATCHNO").content,
|
105
|
+
journal_id: je.at("JOURNAL").content,
|
106
|
+
date: Date.strptime(je.at("BATCH_DATE").content,'%Y-%m-%d'),
|
107
|
+
modified_at: DateTime.strptime(je.at("WHENMODIFIED").content, '%Y-%m-%dT%H:%M:%S'),
|
108
|
+
description: je.at("BATCH_TITLE").content,
|
109
|
+
state: je.at("STATE").content,
|
110
|
+
rows: get_rows(je)
|
66
111
|
})
|
67
112
|
end
|
68
|
-
@data
|
113
|
+
if @data.empty?
|
114
|
+
false
|
115
|
+
else
|
116
|
+
@data
|
117
|
+
end
|
69
118
|
else
|
70
119
|
false
|
71
120
|
end
|
72
121
|
end
|
73
122
|
|
123
|
+
def get_rows(je)
|
124
|
+
rows = []
|
125
|
+
je.xpath('//glentry').each do |row|
|
126
|
+
rows << {
|
127
|
+
type: row.at('TR_TYPE').content,
|
128
|
+
amount: row.at('AMOUNT').content,
|
129
|
+
account_number: (row.at('ACCOUNTNO') ? row.at('ACCOUNTNO').content : nil),
|
130
|
+
memo: (row.at('DESCRIPTION') ? row.at('DESCRIPTION').content : nil),
|
131
|
+
location_id: (row.at('LOCATION') ? row.at('LOCATION').content : nil),
|
132
|
+
department_id: (row.at('DEPARTMENT') ? row.at('DEPARTMENT').content : nil),
|
133
|
+
customer_id: (row.at('CUSTOMER') ? row.at('CUSTOMER').content : nil),
|
134
|
+
employee_id: (row.at('EMPLOYEE') ? row.at('EMPLOYEE').content : nil),
|
135
|
+
project_id: (row.at('PROJECT') ? row.at('PROJECT').content : nil),
|
136
|
+
item_id: (row.at('ITEM') ? row.at('ITEM').content : nil)
|
137
|
+
}
|
138
|
+
end
|
139
|
+
rows
|
140
|
+
end
|
141
|
+
|
74
142
|
def get_date_at(xpath, object)
|
75
143
|
year = object.at("#{xpath}/year").content
|
76
144
|
month = object.at("#{xpath}/month").content
|
@@ -83,84 +151,39 @@ module IntacctRB
|
|
83
151
|
end
|
84
152
|
|
85
153
|
def intacct_object_id
|
86
|
-
|
154
|
+
object.intacct_key
|
87
155
|
end
|
88
156
|
|
89
157
|
def je_xml xml
|
90
|
-
xml.
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
xml.day object.date.strftime("%d")
|
96
|
-
}
|
97
|
-
end
|
98
|
-
if object.reverse_date
|
99
|
-
xml.reversedate {
|
100
|
-
xml.year object.reverse_date.strftime("%Y")
|
101
|
-
xml.month object.reverse_date.strftime("%m")
|
102
|
-
xml.day object.reverse_date.strftime("%d")
|
103
|
-
}
|
104
|
-
end
|
105
|
-
xml.description object.description
|
158
|
+
xml.recordno object.intacct_id if object.intacct_id
|
159
|
+
xml.journal object.journal_id
|
160
|
+
xml.batch_date object.date.strftime('%Y-%m-%d') if object.date
|
161
|
+
xml.reverse_date object.reverse_date.strftime('%Y-%m-%d') if object.reverse_date
|
162
|
+
xml.batch_title object.description
|
106
163
|
xml.referenceno object.reference_number
|
107
164
|
je_item_fields(xml)
|
108
165
|
end
|
109
166
|
|
110
|
-
def set_intacct_system_id
|
111
|
-
object.payment.intacct_system_id = intacct_object_id
|
112
|
-
end
|
113
|
-
|
114
|
-
def delete_intacct_system_id
|
115
|
-
object.payment.intacct_system_id = nil
|
116
|
-
end
|
117
|
-
|
118
|
-
def delete_intacct_key
|
119
|
-
object.payment.intacct_key = nil
|
120
|
-
end
|
121
|
-
|
122
|
-
def set_date_time type
|
123
|
-
if %w(create update delete).include? type
|
124
|
-
if object.payment.respond_to? :"intacct_#{type}d_at"
|
125
|
-
object.payment.send("intacct_#{type}d_at=", DateTime.now)
|
126
|
-
end
|
127
|
-
end
|
128
|
-
end
|
129
|
-
|
130
167
|
def je_item_fields xml
|
131
|
-
|
132
|
-
xml.gltransactionentries {
|
168
|
+
xml.entries {
|
133
169
|
object.rows.each do |row|
|
134
170
|
xml.glentry {
|
135
|
-
|
171
|
+
puts "row[:specialty_id]: #{row[:specialty_id]}"
|
172
|
+
xml.tr_type row[:type]
|
136
173
|
xml.amount row[:amount]
|
137
|
-
xml.
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
xml.
|
146
|
-
xml.
|
147
|
-
xml.departmentid row[:department_id] if row[:department_id]
|
148
|
-
xml.customerid row[:customer_id] if row[:customer_id]
|
149
|
-
xml.employeeid row[:employee_id] if row[:employee_id]
|
150
|
-
xml.projectid row[:project_id] if row[:project_id]
|
151
|
-
xml.itemid row[:item_id] if row[:itemid]
|
152
|
-
xml.classid row[:class_id] if row[:class_id]
|
174
|
+
xml.accountno row[:account_number]
|
175
|
+
xml.description row[:memo]
|
176
|
+
xml.location row[:location_id] if row[:location_id]
|
177
|
+
xml.department row[:department_id] if row[:department_id]
|
178
|
+
xml.customer row[:customer_id] if row[:customer_id]
|
179
|
+
xml.employee row[:employee_id] if row[:employee_id]
|
180
|
+
xml.project row[:project_id] if row[:project_id]
|
181
|
+
xml.specialty row[:specialty_id] if row[:specialty_id]
|
182
|
+
xml.item row[:item_id] if row[:itemid]
|
183
|
+
xml.class row[:class_id] if row[:class_id]
|
153
184
|
}
|
154
185
|
end
|
155
186
|
}
|
156
187
|
end
|
157
|
-
|
158
|
-
def to_date_xml xml, field_name, date
|
159
|
-
xml.send(field_name) {
|
160
|
-
xml.year date.strftime("%Y")
|
161
|
-
xml.month date.strftime("%m")
|
162
|
-
xml.day date.strftime("%d")
|
163
|
-
}
|
164
|
-
end
|
165
188
|
end
|
166
189
|
end
|
data/lib/intacctrb/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: intacctrb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 0.2pre
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Hale
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-11-
|
11
|
+
date: 2016-11-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -176,6 +176,7 @@ files:
|
|
176
176
|
- lib/intacctrb/journal_entry.rb
|
177
177
|
- lib/intacctrb/vendor.rb
|
178
178
|
- lib/intacctrb/version.rb
|
179
|
+
- pkg/intacctrb-0.1.gem
|
179
180
|
- spec/features/intacct_bill.feature
|
180
181
|
- spec/features/intacct_customer.feature
|
181
182
|
- spec/features/intacct_invoice.feature
|
@@ -201,9 +202,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
201
202
|
version: '0'
|
202
203
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
203
204
|
requirements:
|
204
|
-
- - "
|
205
|
+
- - ">"
|
205
206
|
- !ruby/object:Gem::Version
|
206
|
-
version:
|
207
|
+
version: 1.3.1
|
207
208
|
requirements: []
|
208
209
|
rubyforge_project:
|
209
210
|
rubygems_version: 2.5.1
|