/
name_entity.rb
85 lines (73 loc) · 2.43 KB
/
name_entity.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
module NameEntity
module Quality
def email_address=(email_address)
self.primary_email_address = Quickbooks::Model::EmailAddress.new(email_address)
end
def email_address
primary_email_address
end
def names_cannot_contain_invalid_characters
[:name, :display_name, :given_name, :middle_name, :family_name, :print_on_check_name].each do |property|
next unless respond_to? property
value = send(property).to_s
if value.index(':')
errors.add(property, ":#{property} cannot contain a colon (:).")
end
end
end
def email_address_is_valid
if primary_email_address
address = primary_email_address.address.to_s
return false if address.length == 0
unless address.index('@') && address.index('.')
errors.add(:primary_email_address, "Email address must contain @ and . (dot)")
end
end
end
def posting_type_is_valid
if posting_type
unless %w(Debit Credit).include?(posting_type)
errors.add(:posting_type, "Posting Type must be either 'Debit' or 'Credit'")
end
end
end
def billable_status_is_valid
if billable_status
unless %w(Billable NotBillable HasBeenBilled).include?(billable_status)
errors.add(:posting_type, "Posting Type must be either 'Debit' or 'Credit'")
end
end
end
def entity_type_is_valid
if entity_type
unless %w(Customer Vendor).include?(entity_type)
errors.add(:entity_type, "Entity Type must be either 'Customer' or 'Vendor'")
end
end
end
def journal_line_entry_tax
if tax_code_ref
# tax_applicable_on must be set
errors.add(:tax_applicable_on, "TaxApplicableOn must be set when TaxCodeRef is set") if tax_applicable_on.nil?
errors.add(:tax_amount, "TaxAmount must be set when TaxCodeRef is set") if tax_amount.nil?
end
end
end
module PermitAlterations
def valid_for_update?
if sync_token.nil?
errors.add(:sync_token, "Missing required attribute SyncToken for update")
end
errors.empty?
end
def valid_for_create?
valid?
errors.empty?
end
# To delete an account Intuit requires we provide Id and SyncToken fields
def valid_for_deletion?
return false if(id.nil? || sync_token.nil?)
id.to_i > 0 && !sync_token.to_s.empty? && sync_token.to_i >= 0
end
end
end