intacctrb 0.1 → 0.2pre
Sign up to get free protection for your applications and to get access to all the features.
- 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
|