quickeebooks 0.1.22 → 0.1.23
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +6 -14
- data/lib/quickeebooks/common/addressable.rb +4 -4
- data/lib/quickeebooks/common/date_time.rb +2 -2
- data/lib/quickeebooks/common/online_entity_model.rb +1 -1
- data/lib/quickeebooks/online/model/account.rb +1 -1
- data/lib/quickeebooks/online/model/account_reference.rb +1 -1
- data/lib/quickeebooks/online/model/address.rb +2 -2
- data/lib/quickeebooks/online/model/bill_line_item.rb +2 -2
- data/lib/quickeebooks/online/model/clazz.rb +6 -6
- data/lib/quickeebooks/online/model/company_meta_data.rb +1 -1
- data/lib/quickeebooks/online/model/credit_card.rb +1 -1
- data/lib/quickeebooks/online/model/credit_charge_info.rb +1 -1
- data/lib/quickeebooks/online/model/credit_charge_response.rb +1 -1
- data/lib/quickeebooks/online/model/customer_custom_field.rb +2 -2
- data/lib/quickeebooks/online/model/email.rb +2 -2
- data/lib/quickeebooks/online/model/id.rb +8 -8
- data/lib/quickeebooks/online/model/intuit_type.rb +5 -5
- data/lib/quickeebooks/online/model/invoice.rb +2 -2
- data/lib/quickeebooks/online/model/invoice_header.rb +1 -1
- data/lib/quickeebooks/online/model/invoice_line_item.rb +1 -1
- data/lib/quickeebooks/online/model/item.rb +12 -4
- data/lib/quickeebooks/online/model/job.rb +2 -2
- data/lib/quickeebooks/online/model/journal_entry.rb +1 -1
- data/lib/quickeebooks/online/model/journal_entry_line_item.rb +2 -2
- data/lib/quickeebooks/online/model/meta_data.rb +2 -2
- data/lib/quickeebooks/online/model/open_balance.rb +1 -1
- data/lib/quickeebooks/online/model/payment_detail.rb +1 -1
- data/lib/quickeebooks/online/model/payment_header.rb +1 -1
- data/lib/quickeebooks/online/model/payment_line_item.rb +3 -3
- data/lib/quickeebooks/online/model/phone.rb +1 -1
- data/lib/quickeebooks/online/model/price.rb +1 -1
- data/lib/quickeebooks/online/model/purchase_cost.rb +1 -1
- data/lib/quickeebooks/online/model/sales_receipt.rb +1 -1
- data/lib/quickeebooks/online/model/sales_receipt_line_item.rb +2 -2
- data/lib/quickeebooks/online/model/time_activity.rb +13 -0
- data/lib/quickeebooks/online/model/time_activity_employee.rb +1 -1
- data/lib/quickeebooks/online/model/time_activity_vendor.rb +1 -1
- data/lib/quickeebooks/online/model/tracking_class.rb +1 -1
- data/lib/quickeebooks/online/model/unit_price.rb +1 -1
- data/lib/quickeebooks/online/model/web_site.rb +2 -2
- data/lib/quickeebooks/online/service/account.rb +1 -1
- data/lib/quickeebooks/online/service/clazz.rb +1 -1
- data/lib/quickeebooks/online/service/employee.rb +1 -1
- data/lib/quickeebooks/online/service/entitlement.rb +1 -1
- data/lib/quickeebooks/online/service/item.rb +1 -1
- data/lib/quickeebooks/online/service/pagination.rb +1 -1
- data/lib/quickeebooks/online/service/payment_method.rb +1 -1
- data/lib/quickeebooks/online/service/sort.rb +1 -1
- data/lib/quickeebooks/online/service/tracking_class.rb +1 -1
- data/lib/quickeebooks/shared/service/filter.rb +4 -4
- data/lib/quickeebooks/shared/service/operation_node.rb +8 -8
- data/lib/quickeebooks/shared/service/sort.rb +1 -1
- data/lib/quickeebooks/version.rb +1 -1
- data/lib/quickeebooks/windows/model/account.rb +7 -7
- data/lib/quickeebooks/windows/model/account_reference.rb +2 -2
- data/lib/quickeebooks/windows/model/address.rb +4 -4
- data/lib/quickeebooks/windows/model/clazz.rb +6 -6
- data/lib/quickeebooks/windows/model/company_meta_data.rb +1 -1
- data/lib/quickeebooks/windows/model/custom_field.rb +1 -1
- data/lib/quickeebooks/windows/model/customer.rb +9 -9
- data/lib/quickeebooks/windows/model/customer_msg.rb +3 -3
- data/lib/quickeebooks/windows/model/email.rb +6 -6
- data/lib/quickeebooks/windows/model/error.rb +4 -4
- data/lib/quickeebooks/windows/model/external_key.rb +4 -4
- data/lib/quickeebooks/windows/model/id.rb +7 -7
- data/lib/quickeebooks/windows/model/id_set.rb +6 -6
- data/lib/quickeebooks/windows/model/intuit_type.rb +1 -1
- data/lib/quickeebooks/windows/model/invoice.rb +5 -5
- data/lib/quickeebooks/windows/model/invoice_header.rb +1 -1
- data/lib/quickeebooks/windows/model/invoice_line_item.rb +4 -4
- data/lib/quickeebooks/windows/model/item.rb +2 -2
- data/lib/quickeebooks/windows/model/job.rb +8 -7
- data/lib/quickeebooks/windows/model/job_job_info.rb +1 -1
- data/lib/quickeebooks/windows/model/meta_data.rb +1 -1
- data/lib/quickeebooks/windows/model/ng_id.rb +6 -6
- data/lib/quickeebooks/windows/model/ng_id_set.rb +5 -5
- data/lib/quickeebooks/windows/model/object_ref.rb +3 -3
- data/lib/quickeebooks/windows/model/open_balance.rb +1 -1
- data/lib/quickeebooks/windows/model/other_name.rb +2 -2
- data/lib/quickeebooks/windows/model/other_name_id.rb +4 -4
- data/lib/quickeebooks/windows/model/party_role_ref.rb +1 -1
- data/lib/quickeebooks/windows/model/payment_header.rb +4 -4
- data/lib/quickeebooks/windows/model/payment_line_item.rb +2 -2
- data/lib/quickeebooks/windows/model/payment_method.rb +2 -2
- data/lib/quickeebooks/windows/model/phone.rb +3 -3
- data/lib/quickeebooks/windows/model/price.rb +2 -2
- data/lib/quickeebooks/windows/model/purchase_cost.rb +1 -1
- data/lib/quickeebooks/windows/model/rest_response.rb +6 -6
- data/lib/quickeebooks/windows/model/sales_receipt.rb +2 -2
- data/lib/quickeebooks/windows/model/sales_receipt_header.rb +1 -1
- data/lib/quickeebooks/windows/model/sales_receipt_line_item.rb +4 -4
- data/lib/quickeebooks/windows/model/sales_rep.rb +5 -5
- data/lib/quickeebooks/windows/model/sales_tax.rb +4 -4
- data/lib/quickeebooks/windows/model/ship_method.rb +3 -3
- data/lib/quickeebooks/windows/model/success.rb +4 -4
- data/lib/quickeebooks/windows/model/sync_status_param.rb +5 -5
- data/lib/quickeebooks/windows/model/sync_status_request.rb +6 -6
- data/lib/quickeebooks/windows/model/sync_status_response.rb +6 -6
- data/lib/quickeebooks/windows/model/tax_line.rb +1 -1
- data/lib/quickeebooks/windows/model/time_activity_employee.rb +1 -1
- data/lib/quickeebooks/windows/model/time_activity_vendor.rb +1 -1
- data/lib/quickeebooks/windows/model/unit_price.rb +1 -1
- data/lib/quickeebooks/windows/model/vendor.rb +2 -2
- data/lib/quickeebooks/windows/model/vendor_id.rb +4 -4
- data/lib/quickeebooks/windows/model/vendor_reference.rb +2 -2
- data/lib/quickeebooks/windows/model/web_site.rb +2 -2
- data/lib/quickeebooks/windows/service/access_token.rb +1 -1
- data/lib/quickeebooks/windows/service/account.rb +7 -2
- data/lib/quickeebooks/windows/service/clazz.rb +1 -1
- data/lib/quickeebooks/windows/service/customer.rb +1 -1
- data/lib/quickeebooks/windows/service/customer_msg.rb +2 -2
- data/lib/quickeebooks/windows/service/invoice.rb +6 -6
- data/lib/quickeebooks/windows/service/item.rb +7 -2
- data/lib/quickeebooks/windows/service/job.rb +5 -5
- data/lib/quickeebooks/windows/service/payment.rb +2 -2
- data/lib/quickeebooks/windows/service/payment_method.rb +2 -2
- data/lib/quickeebooks/windows/service/sales_rep.rb +1 -1
- data/lib/quickeebooks/windows/service/sales_tax.rb +2 -2
- data/lib/quickeebooks/windows/service/service_base.rb +1 -1
- data/lib/quickeebooks/windows/service/ship_method.rb +3 -3
- data/lib/quickeebooks/windows/service/sort.rb +1 -1
- data/lib/quickeebooks/windows/service/sync_status.rb +4 -4
- metadata +27 -27
@@ -37,6 +37,8 @@ module Quickeebooks
|
|
37
37
|
xml_accessor :description, :from => 'Description'
|
38
38
|
|
39
39
|
validates_inclusion_of :name_of, :in => %w(Employee Vendor)
|
40
|
+
validate :has_vendor_node, :if => Proc.new { |c| c.name_of == 'Vendor' }
|
41
|
+
validate :has_employee_node, :if => Proc.new { |c| c.name_of == 'Employee' }
|
40
42
|
validates_presence_of :customer_id, :if => Proc.new { |c| c.billable_status == 'Billable' }
|
41
43
|
validates_presence_of :hourly_rate, :if => Proc.new { |c| c.billable_status == 'Billable' }
|
42
44
|
validates_inclusion_of :billable_status, :in => %w(Billable NotBillable HasBeenBilled),
|
@@ -52,6 +54,17 @@ module Quickeebooks
|
|
52
54
|
end
|
53
55
|
end
|
54
56
|
|
57
|
+
def has_vendor_node
|
58
|
+
unless self.vendor.is_a?(Quickeebooks::Online::Model::TimeActivityVendor)
|
59
|
+
errors.add(:vendor, "can't be blank")
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def has_employee_node
|
64
|
+
unless self.vendor.is_a?(Quickeebooks::Online::Model::TimeActivityEmployee)
|
65
|
+
errors.add(:employee, "can't be blank")
|
66
|
+
end
|
67
|
+
end
|
55
68
|
|
56
69
|
def self.resource_for_collection
|
57
70
|
'time-activities'
|
@@ -73,7 +73,7 @@ module Quickeebooks
|
|
73
73
|
end
|
74
74
|
clauses.join(" :AND: ")
|
75
75
|
end
|
76
|
-
|
76
|
+
|
77
77
|
def date_to_s
|
78
78
|
clauses = []
|
79
79
|
if @before
|
@@ -129,7 +129,7 @@ module Quickeebooks
|
|
129
129
|
def number_to_xml
|
130
130
|
"<#{@field}>#{CGI::escapeHTML(@value.to_s)}</#{@field}>"
|
131
131
|
end
|
132
|
-
|
132
|
+
|
133
133
|
def date_to_xml
|
134
134
|
"<#{@field}>#{formatted_date(@value)}</#{@field}>"
|
135
135
|
end
|
@@ -137,7 +137,7 @@ module Quickeebooks
|
|
137
137
|
def datetime_to_xml
|
138
138
|
"<#{@field}>#{formatted_datetime(@value)}</#{@field}>"
|
139
139
|
end
|
140
|
-
|
140
|
+
|
141
141
|
def formatted_date(date)
|
142
142
|
date.strftime(DATE_FORMAT)
|
143
143
|
end
|
@@ -145,7 +145,7 @@ module Quickeebooks
|
|
145
145
|
def formatted_datetime(datetime)
|
146
146
|
datetime.strftime(DATE_TIME_FORMAT)
|
147
147
|
end
|
148
|
-
|
148
|
+
|
149
149
|
def valid_datetime?(value)
|
150
150
|
value.respond_to?(:strftime)
|
151
151
|
end
|
@@ -3,13 +3,13 @@ require 'securerandom'
|
|
3
3
|
module Quickeebooks
|
4
4
|
module Shared
|
5
5
|
module Service
|
6
|
-
|
6
|
+
|
7
7
|
class OperationNode
|
8
|
-
|
8
|
+
|
9
9
|
def add(&block)
|
10
10
|
node("Add", &block)
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
def mod(&block)
|
14
14
|
node("Mod", &block)
|
15
15
|
end
|
@@ -17,9 +17,9 @@ module Quickeebooks
|
|
17
17
|
def guid
|
18
18
|
SecureRandom.hex(16)
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
private
|
22
|
-
|
22
|
+
|
23
23
|
def node(type, &block)
|
24
24
|
content = %Q{<#{type} xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"}
|
25
25
|
content << %Q{ RequestId="#{guid}" xmlns="http://www.intuit.com/sb/cdm/v2">}
|
@@ -27,9 +27,9 @@ module Quickeebooks
|
|
27
27
|
content << "</#{type}>"
|
28
28
|
content
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
end
|
32
|
-
|
32
|
+
|
33
33
|
end
|
34
34
|
end
|
35
|
-
end
|
35
|
+
end
|
data/lib/quickeebooks/version.rb
CHANGED
@@ -7,15 +7,15 @@ module Quickeebooks
|
|
7
7
|
module Model
|
8
8
|
class Account < Quickeebooks::Windows::Model::IntuitType
|
9
9
|
include ActiveModel::Validations
|
10
|
-
|
10
|
+
|
11
11
|
XML_COLLECTION_NODE = 'Accounts'
|
12
12
|
XML_NODE = 'Account'
|
13
|
-
|
13
|
+
|
14
14
|
# https://services.intuit.com/sb/account/v2/<realmID>
|
15
15
|
REST_RESOURCE = "account"
|
16
|
-
|
16
|
+
|
17
17
|
xml_convention :camelcase
|
18
|
-
xml_accessor :id, :from => 'Id'
|
18
|
+
xml_accessor :id, :from => 'Id', :as => Quickeebooks::Windows::Model::Id
|
19
19
|
xml_accessor :sync_token, :from => 'SyncToken', :as => Integer
|
20
20
|
xml_accessor :meta_data, :from => 'MetaData', :as => Quickeebooks::Windows::Model::MetaData
|
21
21
|
xml_accessor :external_key, :from => 'ExternalKey'
|
@@ -55,9 +55,9 @@ module Quickeebooks
|
|
55
55
|
return false if(id.nil? || sync_token.nil?)
|
56
56
|
id.to_i > 0 && !sync_token.to_s.empty? && sync_token.to_i >= 0
|
57
57
|
end
|
58
|
-
|
58
|
+
|
59
59
|
private
|
60
|
-
|
60
|
+
|
61
61
|
def ensure_name_is_valid
|
62
62
|
if name.nil?
|
63
63
|
errors.add(:name, "Missing required attribute: name")
|
@@ -71,4 +71,4 @@ module Quickeebooks
|
|
71
71
|
|
72
72
|
end
|
73
73
|
end
|
74
|
-
end
|
74
|
+
end
|
@@ -4,7 +4,7 @@ module Quickeebooks
|
|
4
4
|
module Windows
|
5
5
|
module Model
|
6
6
|
class AccountReference < Quickeebooks::Windows::Model::IntuitType
|
7
|
-
xml_accessor :account_id, :from => 'AccountId'
|
7
|
+
xml_accessor :account_id, :from => 'AccountId', :as => Quickeebooks::Windows::Model::Id
|
8
8
|
xml_accessor :account_name, :from => 'AccountName'
|
9
9
|
xml_accessor :account_type, :from => 'AccountType'
|
10
10
|
|
@@ -20,4 +20,4 @@ module Quickeebooks
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
end
|
23
|
-
end
|
23
|
+
end
|
@@ -25,15 +25,15 @@ module Quickeebooks
|
|
25
25
|
def to_xml_ns
|
26
26
|
to_xml
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
29
|
def default?
|
30
30
|
default == "true"
|
31
31
|
end
|
32
|
-
|
32
|
+
|
33
33
|
def state
|
34
34
|
country_sub_division_code
|
35
35
|
end
|
36
|
-
|
36
|
+
|
37
37
|
def state=(new_state)
|
38
38
|
self.country_sub_division_code = new_state
|
39
39
|
end
|
@@ -41,4 +41,4 @@ module Quickeebooks
|
|
41
41
|
end
|
42
42
|
end
|
43
43
|
end
|
44
|
-
end
|
44
|
+
end
|
@@ -12,10 +12,10 @@ module Quickeebooks
|
|
12
12
|
|
13
13
|
XML_COLLECTION_NODE = 'Classes'
|
14
14
|
XML_NODE = 'Class'
|
15
|
-
|
15
|
+
|
16
16
|
# https://services.intuit.com/sb/customer/v2/<realmID>
|
17
17
|
REST_RESOURCE = "class"
|
18
|
-
|
18
|
+
|
19
19
|
xml_convention :camelcase
|
20
20
|
xml_accessor :id, :from => 'Id', :as => Quickeebooks::Windows::Model::Id
|
21
21
|
xml_accessor :sync_token, :from => 'SyncToken', :as => Integer
|
@@ -28,20 +28,20 @@ module Quickeebooks
|
|
28
28
|
xml_accessor :active
|
29
29
|
xml_accessor :class_parent_id, :from => 'ClassParentId', :as => Quickeebooks::Windows::Model::Id
|
30
30
|
xml_accessor :class_parent_name, :from => 'ClassParentName'
|
31
|
-
|
31
|
+
|
32
32
|
validates_length_of :name, :minimum => 1, :maximum => 256
|
33
|
-
|
33
|
+
|
34
34
|
def active?
|
35
35
|
active == 'true'
|
36
36
|
end
|
37
|
-
|
37
|
+
|
38
38
|
def valid_for_update?
|
39
39
|
if sync_token.nil?
|
40
40
|
errors.add(:sync_token, "Missing required attribute SyncToken for update")
|
41
41
|
end
|
42
42
|
errors.empty?
|
43
43
|
end
|
44
|
-
|
44
|
+
|
45
45
|
def valid_for_create?
|
46
46
|
valid?
|
47
47
|
if type_of.nil?
|
@@ -18,10 +18,10 @@ module Quickeebooks
|
|
18
18
|
DEFAULT_TYPE_OF = 'Person'
|
19
19
|
XML_COLLECTION_NODE = 'Customers'
|
20
20
|
XML_NODE = 'Customer'
|
21
|
-
|
21
|
+
|
22
22
|
# https://services.intuit.com/sb/customer/v2/<realmID>
|
23
23
|
REST_RESOURCE = "customer"
|
24
|
-
|
24
|
+
|
25
25
|
xml_convention :camelcase
|
26
26
|
xml_accessor :id, :from => 'Id', :as => Quickeebooks::Windows::Model::Id
|
27
27
|
xml_accessor :sync_token, :from => 'SyncToken', :as => Integer
|
@@ -77,18 +77,18 @@ module Quickeebooks
|
|
77
77
|
validate :require_an_address
|
78
78
|
validate :name_cannot_contain_invalid_characters
|
79
79
|
validate :email_address_is_valid
|
80
|
-
|
80
|
+
|
81
81
|
def active?
|
82
82
|
active == 'true'
|
83
83
|
end
|
84
|
-
|
84
|
+
|
85
85
|
def valid_for_update?
|
86
86
|
if sync_token.nil?
|
87
87
|
errors.add(:sync_token, "Missing required attribute SyncToken for update")
|
88
88
|
end
|
89
89
|
errors.empty?
|
90
90
|
end
|
91
|
-
|
91
|
+
|
92
92
|
def valid_for_create?
|
93
93
|
valid?
|
94
94
|
if type_of.nil?
|
@@ -104,20 +104,20 @@ module Quickeebooks
|
|
104
104
|
def email_address=(email_address)
|
105
105
|
self.email = Quickeebooks::Windows::Model::Email.new(email_address)
|
106
106
|
end
|
107
|
-
|
107
|
+
|
108
108
|
|
109
109
|
# To delete an account Intuit requires we provide Id and SyncToken fields
|
110
110
|
def valid_for_deletion?
|
111
111
|
return false if(id.nil? || sync_token.nil?)
|
112
112
|
id.to_i > 0 && !sync_token.to_s.empty? && sync_token.to_i >= 0
|
113
113
|
end
|
114
|
-
|
114
|
+
|
115
115
|
def name_cannot_contain_invalid_characters
|
116
116
|
if name.to_s.index(':')
|
117
117
|
errors.add(:name, "Name cannot contain a colon (:)")
|
118
118
|
end
|
119
119
|
end
|
120
|
-
|
120
|
+
|
121
121
|
def email_address_is_valid
|
122
122
|
if email
|
123
123
|
address = email.address
|
@@ -126,7 +126,7 @@ module Quickeebooks
|
|
126
126
|
end
|
127
127
|
end
|
128
128
|
end
|
129
|
-
|
129
|
+
|
130
130
|
def require_an_address
|
131
131
|
if addresses.nil? || (addresses.is_a?(Array) && addresses.empty?)
|
132
132
|
errors.add(:addresses, "Must provide at least one address for this Customer.")
|
@@ -11,10 +11,10 @@ module Quickeebooks
|
|
11
11
|
|
12
12
|
XML_COLLECTION_NODE = 'CustomerMsgs'
|
13
13
|
XML_NODE = 'CustomerMsg'
|
14
|
-
|
14
|
+
|
15
15
|
# https://services.intuit.com/sb/customermsg/v2/<realmID>
|
16
16
|
REST_RESOURCE = "customermsg"
|
17
|
-
|
17
|
+
|
18
18
|
xml_convention :camelcase
|
19
19
|
xml_accessor :id, :as => Quickeebooks::Windows::Model::Id
|
20
20
|
xml_accessor :sync_token
|
@@ -28,4 +28,4 @@ module Quickeebooks
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
end
|
31
|
-
end
|
31
|
+
end
|