adwords4r 0.4 → 0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog.txt +1 -0
- data/Rakefile +9 -2
- data/Readme.txt +16 -2
- data/Todo.txt +5 -1
- data/adwords.properties +5 -0
- data/examples/get_free_usage_this_month.rb +16 -0
- data/examples/report_demo.rb +42 -0
- data/examples/traffic_estimator.rb +31 -0
- data/lib/adwords4r/credentials.rb +7 -3
- data/lib/adwords4r/services.rb +4 -8
- data/lib/adwords4r/v4/AccountService.rb +709 -0
- data/lib/adwords4r/v4/AccountServiceDriver.rb +174 -0
- data/lib/adwords4r/v4/AdGroupService.rb +316 -0
- data/lib/adwords4r/v4/AdGroupServiceDriver.rb +97 -0
- data/lib/adwords4r/v4/CampaignService.rb +527 -0
- data/lib/adwords4r/v4/CampaignServiceDriver.rb +111 -0
- data/lib/adwords4r/v4/CreativeService.rb +401 -0
- data/lib/adwords4r/v4/CreativeServiceDriver.rb +104 -0
- data/lib/adwords4r/v4/CriterionService.rb +411 -0
- data/lib/adwords4r/v4/CriterionServiceDriver.rb +97 -0
- data/lib/adwords4r/v4/InfoService.rb +260 -0
- data/lib/adwords4r/v4/InfoServiceDriver.rb +90 -0
- data/lib/adwords4r/v4/KeywordService.rb +543 -0
- data/lib/adwords4r/v4/KeywordServiceDriver.rb +125 -0
- data/lib/adwords4r/v4/KeywordToolService.rb +227 -0
- data/lib/adwords4r/v4/KeywordToolServiceDriver.rb +55 -0
- data/lib/adwords4r/v4/ReportService.rb +575 -0
- data/lib/adwords4r/v4/ReportServiceDriver.rb +83 -0
- data/lib/adwords4r/v4/TrafficEstimatorService.rb +274 -0
- data/lib/adwords4r/v4/TrafficEstimatorServiceDriver.rb +62 -0
- metadata +27 -2
data/ChangeLog.txt
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
0.5 Now supports AdWords API v4. Got rid of yaml dependency. Changed properties file name for default credentials to adwords.properties. Enhanced the readme.txt a bit. Added a few samples.
|
1
2
|
0.4 Now all generated classes are within the Adwords module. Will make it easier to use that in Rails. Support for gen classes in a module is not implemented in soap4r for doc/literal style (it works for rpc/encoded). I logged a bug for soap4r. In the meantime I had to fix adwords4r from my module using module_eval to patch the Mapping class.
|
2
3
|
0.3 fixed the bug in InfoService and many others. I fix the wsdl before generation.
|
3
4
|
0.2 added packaging, made it a gem, and added a setup program, for easy installation in all configurations (gem and non gem).
|
data/Rakefile
CHANGED
@@ -20,7 +20,7 @@ end
|
|
20
20
|
|
21
21
|
CLOBBER.include('pkg')
|
22
22
|
|
23
|
-
CURRENT_VERSION = '0.
|
23
|
+
CURRENT_VERSION = '0.5'
|
24
24
|
PKG_VERSION = ENV['REL'] ? ENV['REL'] : CURRENT_VERSION
|
25
25
|
|
26
26
|
SRC_RB = FileList['lib/**/*.rb']
|
@@ -32,9 +32,15 @@ SRC_RB = FileList['lib/**/*.rb']
|
|
32
32
|
|
33
33
|
WSDLDIR = 'wsdl'
|
34
34
|
LIBDIR = 'lib'
|
35
|
+
GENDIR = LIBDIR + '/adwords4r'
|
36
|
+
|
35
37
|
logger = Logger.new(STDERR)
|
36
38
|
|
37
|
-
|
39
|
+
CLEAN.include(WSDLDIR)
|
40
|
+
AdWords::Service.getVersions.each do |v|
|
41
|
+
vname = "v#{v}"
|
42
|
+
CLEAN.include(File.join(GENDIR, vname))
|
43
|
+
end
|
38
44
|
|
39
45
|
desc "gets the wsdl and generates the classes"
|
40
46
|
task :default => [:getwsdl, :generate]
|
@@ -189,6 +195,7 @@ Currently the following AdWords API versions are supported:
|
|
189
195
|
s.email = "patrick@chanezon.com"
|
190
196
|
s.homepage = "http://rubyforge.org/projects/adwords4r/"
|
191
197
|
s.requirements << 'soap4r v 1.5.4 or greater'
|
198
|
+
s.requirements << 'http-access2 v 2.0.5 or greater'
|
192
199
|
s.rubyforge_project = 'adwords4r'
|
193
200
|
end
|
194
201
|
|
data/Readme.txt
CHANGED
@@ -25,8 +25,17 @@ Then
|
|
25
25
|
require 'adwords4r'
|
26
26
|
|
27
27
|
adwords = AdWords::API.new
|
28
|
-
creates a driver for the latest version of AdWords API using credentials provided in
|
29
|
-
|
28
|
+
creates a driver for the latest version of AdWords API using credentials provided in ~/adwords.properties
|
29
|
+
There is an example in the root adwords4r directory.
|
30
|
+
You can also pass API a manually constructed AdWordsCredentials object like:
|
31
|
+
adwords = AdWords::API.new(AdWords::AdWordsCredentials.new(
|
32
|
+
{ 'token' => 'mytoken',
|
33
|
+
'useragent' => 'P@ playing with the API from ruby',
|
34
|
+
'password' => 'mypasswd',
|
35
|
+
'email' => 'em...@example.com'}
|
36
|
+
))
|
37
|
+
|
38
|
+
If you want something more specific, use the optional parameters of the constructor
|
30
39
|
adwords = AdWords::API.new(credentials, version)
|
31
40
|
|
32
41
|
Then just use methods of the API against your driver.
|
@@ -34,6 +43,11 @@ adwords.getAllAdWordsCampaigns(123).each {|c| puts c.name}
|
|
34
43
|
|
35
44
|
See sample code in examples.
|
36
45
|
|
46
|
+
The client code will generate warnings in the console:
|
47
|
+
Many: warning: already initialized constant XXX
|
48
|
+
A few: at depth 0 - 20: unable to get local issuer certificate
|
49
|
+
These are not serious: I need to make them go but they do not affect the correctness of the program.
|
50
|
+
|
37
51
|
docs for developers
|
38
52
|
-------------------
|
39
53
|
rake getwsdl
|
data/Todo.txt
CHANGED
@@ -1,12 +1,16 @@
|
|
1
1
|
adwords4r todo list
|
2
2
|
---
|
3
3
|
- use XSD::CodeGen::GenSupport.capitalize and unCapitalize instead of my own methods
|
4
|
+
- fix the bug in reports
|
4
5
|
- handling quota management in the driver
|
5
6
|
- pass in a hash for complex objects
|
6
7
|
- comments everywhere, rdoc
|
7
8
|
- documentation
|
8
|
-
- more samples
|
9
|
+
- more samples: traffic_estimator, report,
|
9
10
|
|
11
|
+
OK- generate v4
|
12
|
+
OK- get rid of yaml dependency
|
13
|
+
OK- change the property file name to adwords.properties
|
10
14
|
OK- make it work with all generated classes in their own module
|
11
15
|
OK- fix bug in InfoService
|
12
16
|
OK- gem file
|
data/adwords.properties
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'adwords4r'
|
4
|
+
require 'pp'
|
5
|
+
|
6
|
+
begin
|
7
|
+
adwords = AdWords::API.new
|
8
|
+
puts "result = #{adwords.getFreeUsageQuotaThisMonth().getFreeUsageQuotaThisMonthReturn}"
|
9
|
+
|
10
|
+
rescue AdWords::Error::UnknownAPICall => e
|
11
|
+
puts e
|
12
|
+
rescue AdWords::Error::ApiError => e
|
13
|
+
puts e.code
|
14
|
+
puts e.message
|
15
|
+
end
|
16
|
+
|
@@ -0,0 +1,42 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'adwords4r'
|
4
|
+
require 'open-uri'
|
5
|
+
|
6
|
+
service = AdWords::API.new
|
7
|
+
|
8
|
+
job = AdWords::KeywordReportJob.new
|
9
|
+
job.aggregationType = AdWords::AggregationType::Summary
|
10
|
+
job.startDay = Date.new(2006,1,1)
|
11
|
+
job.endDay = Date.today
|
12
|
+
job.name = "Report1"
|
13
|
+
|
14
|
+
begin
|
15
|
+
myJobId = service.scheduleReportJob(job)
|
16
|
+
|
17
|
+
status = service.getReportJobStatus(myJobId);
|
18
|
+
|
19
|
+
while (status != "Completed" && status != "Failed")
|
20
|
+
sleep 15
|
21
|
+
status = service.getReportJobStatus(myJobId)
|
22
|
+
puts "Report job status is " + status
|
23
|
+
end
|
24
|
+
|
25
|
+
if(status == "Failed")
|
26
|
+
puts("Job failed!")
|
27
|
+
else
|
28
|
+
# report is ready; download it
|
29
|
+
puts "The report is ready!"
|
30
|
+
url = service.getReportDownloadUrl(myJobId)
|
31
|
+
puts "Report Url: " + url
|
32
|
+
for line in open(url)
|
33
|
+
puts line
|
34
|
+
end
|
35
|
+
end
|
36
|
+
rescue AdWords::Error::UnknownAPICall => e
|
37
|
+
puts e
|
38
|
+
rescue AdWords::Error::ApiError => e
|
39
|
+
puts e.code
|
40
|
+
puts e.message
|
41
|
+
end
|
42
|
+
|
@@ -0,0 +1,31 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'adwords4r'
|
4
|
+
require 'pp'
|
5
|
+
|
6
|
+
SEP = "---"
|
7
|
+
|
8
|
+
def dumpObj(o)
|
9
|
+
str = ""
|
10
|
+
o.instance_variables.each { |v| str << dumpAttr(o, v)}
|
11
|
+
return str << SEP
|
12
|
+
end
|
13
|
+
|
14
|
+
def dumpAttr(o, v)
|
15
|
+
name = v.sub(/@/,'')
|
16
|
+
value = eval("o.#{name}.to_s")
|
17
|
+
return "#{name}: #{value}\n"
|
18
|
+
end
|
19
|
+
|
20
|
+
begin
|
21
|
+
adwords = AdWords::API.new
|
22
|
+
|
23
|
+
res = adwords.estimateKeywordList([AdWords::KeywordRequest.new(nil, 50000, false, 'flowers', 'Broad')])
|
24
|
+
res.each {|c| puts dumpObj(c)}
|
25
|
+
|
26
|
+
rescue AdWords::Error::UnknownAPICall => e
|
27
|
+
puts e
|
28
|
+
rescue AdWords::Error::ApiError => e
|
29
|
+
puts e.code
|
30
|
+
puts e.message
|
31
|
+
end
|
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'yaml'
|
2
1
|
require 'soap/header/simplehandler'
|
3
2
|
|
4
3
|
module AdWords
|
@@ -20,8 +19,13 @@ module AdWords
|
|
20
19
|
attr_reader :handlers
|
21
20
|
|
22
21
|
def getDefaults()
|
23
|
-
|
24
|
-
|
22
|
+
cred = Hash.new
|
23
|
+
IO.foreach("#{ENV['HOME']}/adwords.properties") {|line| addCredential(cred, line.split('=')) if !(line =~ /^#/)}
|
24
|
+
return cred
|
25
|
+
end
|
26
|
+
|
27
|
+
def addCredential(cred, arr)
|
28
|
+
cred[arr[0]] = arr[1]
|
25
29
|
end
|
26
30
|
|
27
31
|
def initialize(*parm)
|
data/lib/adwords4r/services.rb
CHANGED
@@ -1,15 +1,11 @@
|
|
1
|
-
require 'yaml'
|
2
|
-
|
3
1
|
module AdWords
|
4
2
|
|
5
3
|
class Service
|
6
|
-
|
7
|
-
SERVICE_YAML = <<PAT
|
8
|
-
2: [Creative, Keyword, Criterion, AdGroup, Campaign, TrafficEstimator, Report, Info, Account]
|
9
|
-
3: [Creative, Keyword, Criterion, AdGroup, Campaign, TrafficEstimator, Report, Info, Account, KeywordTool]
|
10
|
-
PAT
|
11
4
|
|
12
|
-
@@services =
|
5
|
+
@@services = {
|
6
|
+
3 => ['Creative', 'Keyword', 'Criterion', 'AdGroup', 'Campaign', 'TrafficEstimator', 'Report', 'Info', 'Account', 'KeywordTool'],
|
7
|
+
4 => ['Creative', 'Keyword', 'Criterion', 'AdGroup', 'Campaign', 'TrafficEstimator', 'Report', 'Info', 'Account', 'KeywordTool']
|
8
|
+
}
|
13
9
|
|
14
10
|
def Service.getVersions
|
15
11
|
@@services.keys
|
@@ -0,0 +1,709 @@
|
|
1
|
+
module AdWords
|
2
|
+
require 'xsd/qname'
|
3
|
+
|
4
|
+
# {https://adwords.google.com/api/adwords/v4}createAdWordsAccount
|
5
|
+
class CreateAdWordsAccount
|
6
|
+
@@schema_type = "createAdWordsAccount"
|
7
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
8
|
+
@@schema_qualified = "true"
|
9
|
+
@@schema_element = [
|
10
|
+
["loginEmail", "SOAP::SOAPString"],
|
11
|
+
["password", "SOAP::SOAPString"],
|
12
|
+
["languagePreference", "SOAP::SOAPString"],
|
13
|
+
["emailPrefs", "EmailPromotionsPreferences"],
|
14
|
+
["currencyCode", "SOAP::SOAPString"],
|
15
|
+
["cardInfo", "CreditCard"],
|
16
|
+
["contactInfo", "Address"],
|
17
|
+
["defaultAdsCoverage", "CoverageType"]
|
18
|
+
]
|
19
|
+
|
20
|
+
attr_accessor :loginEmail
|
21
|
+
attr_accessor :password
|
22
|
+
attr_accessor :languagePreference
|
23
|
+
attr_accessor :emailPrefs
|
24
|
+
attr_accessor :currencyCode
|
25
|
+
attr_accessor :cardInfo
|
26
|
+
attr_accessor :contactInfo
|
27
|
+
attr_accessor :defaultAdsCoverage
|
28
|
+
|
29
|
+
def initialize(loginEmail = nil, password = nil, languagePreference = nil, emailPrefs = nil, currencyCode = nil, cardInfo = nil, contactInfo = nil, defaultAdsCoverage = nil)
|
30
|
+
@loginEmail = loginEmail
|
31
|
+
@password = password
|
32
|
+
@languagePreference = languagePreference
|
33
|
+
@emailPrefs = emailPrefs
|
34
|
+
@currencyCode = currencyCode
|
35
|
+
@cardInfo = cardInfo
|
36
|
+
@contactInfo = contactInfo
|
37
|
+
@defaultAdsCoverage = defaultAdsCoverage
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
# {https://adwords.google.com/api/adwords/v4}createAdWordsAccountResponse
|
42
|
+
class CreateAdWordsAccountResponse
|
43
|
+
@@schema_type = "createAdWordsAccountResponse"
|
44
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
45
|
+
@@schema_qualified = "true"
|
46
|
+
@@schema_element = []
|
47
|
+
|
48
|
+
def initialize
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
# {https://adwords.google.com/api/adwords/v4}setLoginInfo
|
53
|
+
class SetLoginInfo
|
54
|
+
@@schema_type = "setLoginInfo"
|
55
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
56
|
+
@@schema_qualified = "true"
|
57
|
+
@@schema_element = [
|
58
|
+
["login", "SOAP::SOAPString"],
|
59
|
+
["newPassword", "SOAP::SOAPString"]
|
60
|
+
]
|
61
|
+
|
62
|
+
attr_accessor :login
|
63
|
+
attr_accessor :newPassword
|
64
|
+
|
65
|
+
def initialize(login = nil, newPassword = nil)
|
66
|
+
@login = login
|
67
|
+
@newPassword = newPassword
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
# {https://adwords.google.com/api/adwords/v4}setLoginInfoResponse
|
72
|
+
class SetLoginInfoResponse
|
73
|
+
@@schema_type = "setLoginInfoResponse"
|
74
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
75
|
+
@@schema_qualified = "true"
|
76
|
+
@@schema_element = []
|
77
|
+
|
78
|
+
def initialize
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
# {https://adwords.google.com/api/adwords/v4}getAccountCurrency
|
83
|
+
class GetAccountCurrency
|
84
|
+
@@schema_type = "getAccountCurrency"
|
85
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
86
|
+
@@schema_qualified = "true"
|
87
|
+
@@schema_element = []
|
88
|
+
|
89
|
+
def initialize
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
# {https://adwords.google.com/api/adwords/v4}getAccountCurrencyResponse
|
94
|
+
class GetAccountCurrencyResponse
|
95
|
+
@@schema_type = "getAccountCurrencyResponse"
|
96
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
97
|
+
@@schema_qualified = "true"
|
98
|
+
@@schema_element = [
|
99
|
+
["getAccountCurrencyReturn", "SOAP::SOAPString"]
|
100
|
+
]
|
101
|
+
|
102
|
+
attr_accessor :getAccountCurrencyReturn
|
103
|
+
|
104
|
+
def initialize(getAccountCurrencyReturn = nil)
|
105
|
+
@getAccountCurrencyReturn = getAccountCurrencyReturn
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
# {https://adwords.google.com/api/adwords/v4}getCreditCard
|
110
|
+
class GetCreditCard
|
111
|
+
@@schema_type = "getCreditCard"
|
112
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
113
|
+
@@schema_qualified = "true"
|
114
|
+
@@schema_element = []
|
115
|
+
|
116
|
+
def initialize
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
# {https://adwords.google.com/api/adwords/v4}getCreditCardResponse
|
121
|
+
class GetCreditCardResponse
|
122
|
+
@@schema_type = "getCreditCardResponse"
|
123
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
124
|
+
@@schema_qualified = "true"
|
125
|
+
@@schema_element = [
|
126
|
+
["getCreditCardReturn", "CreditCard"]
|
127
|
+
]
|
128
|
+
|
129
|
+
attr_accessor :getCreditCardReturn
|
130
|
+
|
131
|
+
def initialize(getCreditCardReturn = nil)
|
132
|
+
@getCreditCardReturn = getCreditCardReturn
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
# {https://adwords.google.com/api/adwords/v4}getBillingAddress
|
137
|
+
class GetBillingAddress
|
138
|
+
@@schema_type = "getBillingAddress"
|
139
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
140
|
+
@@schema_qualified = "true"
|
141
|
+
@@schema_element = []
|
142
|
+
|
143
|
+
def initialize
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
# {https://adwords.google.com/api/adwords/v4}getBillingAddressResponse
|
148
|
+
class GetBillingAddressResponse
|
149
|
+
@@schema_type = "getBillingAddressResponse"
|
150
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
151
|
+
@@schema_qualified = "true"
|
152
|
+
@@schema_element = [
|
153
|
+
["getBillingAddressReturn", "Address"]
|
154
|
+
]
|
155
|
+
|
156
|
+
attr_accessor :getBillingAddressReturn
|
157
|
+
|
158
|
+
def initialize(getBillingAddressReturn = nil)
|
159
|
+
@getBillingAddressReturn = getBillingAddressReturn
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
163
|
+
# {https://adwords.google.com/api/adwords/v4}setCreditCard
|
164
|
+
class SetCreditCard
|
165
|
+
@@schema_type = "setCreditCard"
|
166
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
167
|
+
@@schema_qualified = "true"
|
168
|
+
@@schema_element = [
|
169
|
+
["cardInfo", "CreditCard"],
|
170
|
+
["contactInfo", "Address"]
|
171
|
+
]
|
172
|
+
|
173
|
+
attr_accessor :cardInfo
|
174
|
+
attr_accessor :contactInfo
|
175
|
+
|
176
|
+
def initialize(cardInfo = nil, contactInfo = nil)
|
177
|
+
@cardInfo = cardInfo
|
178
|
+
@contactInfo = contactInfo
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
182
|
+
# {https://adwords.google.com/api/adwords/v4}setCreditCardResponse
|
183
|
+
class SetCreditCardResponse
|
184
|
+
@@schema_type = "setCreditCardResponse"
|
185
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
186
|
+
@@schema_qualified = "true"
|
187
|
+
@@schema_element = []
|
188
|
+
|
189
|
+
def initialize
|
190
|
+
end
|
191
|
+
end
|
192
|
+
|
193
|
+
# {https://adwords.google.com/api/adwords/v4}getDefaultAdsCoverage
|
194
|
+
class GetDefaultAdsCoverage
|
195
|
+
@@schema_type = "getDefaultAdsCoverage"
|
196
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
197
|
+
@@schema_qualified = "true"
|
198
|
+
@@schema_element = []
|
199
|
+
|
200
|
+
def initialize
|
201
|
+
end
|
202
|
+
end
|
203
|
+
|
204
|
+
# {https://adwords.google.com/api/adwords/v4}getDefaultAdsCoverageResponse
|
205
|
+
class GetDefaultAdsCoverageResponse
|
206
|
+
@@schema_type = "getDefaultAdsCoverageResponse"
|
207
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
208
|
+
@@schema_qualified = "true"
|
209
|
+
@@schema_element = [
|
210
|
+
["getDefaultAdsCoverageReturn", "CoverageType"]
|
211
|
+
]
|
212
|
+
|
213
|
+
attr_accessor :getDefaultAdsCoverageReturn
|
214
|
+
|
215
|
+
def initialize(getDefaultAdsCoverageReturn = nil)
|
216
|
+
@getDefaultAdsCoverageReturn = getDefaultAdsCoverageReturn
|
217
|
+
end
|
218
|
+
end
|
219
|
+
|
220
|
+
# {https://adwords.google.com/api/adwords/v4}setDefaultAdsCoverage
|
221
|
+
class SetDefaultAdsCoverage
|
222
|
+
@@schema_type = "setDefaultAdsCoverage"
|
223
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
224
|
+
@@schema_qualified = "true"
|
225
|
+
@@schema_element = [
|
226
|
+
["coverage", "CoverageType"]
|
227
|
+
]
|
228
|
+
|
229
|
+
attr_accessor :coverage
|
230
|
+
|
231
|
+
def initialize(coverage = nil)
|
232
|
+
@coverage = coverage
|
233
|
+
end
|
234
|
+
end
|
235
|
+
|
236
|
+
# {https://adwords.google.com/api/adwords/v4}setDefaultAdsCoverageResponse
|
237
|
+
class SetDefaultAdsCoverageResponse
|
238
|
+
@@schema_type = "setDefaultAdsCoverageResponse"
|
239
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
240
|
+
@@schema_qualified = "true"
|
241
|
+
@@schema_element = []
|
242
|
+
|
243
|
+
def initialize
|
244
|
+
end
|
245
|
+
end
|
246
|
+
|
247
|
+
# {https://adwords.google.com/api/adwords/v4}getLanguagePreference
|
248
|
+
class GetLanguagePreference
|
249
|
+
@@schema_type = "getLanguagePreference"
|
250
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
251
|
+
@@schema_qualified = "true"
|
252
|
+
@@schema_element = []
|
253
|
+
|
254
|
+
def initialize
|
255
|
+
end
|
256
|
+
end
|
257
|
+
|
258
|
+
# {https://adwords.google.com/api/adwords/v4}getLanguagePreferenceResponse
|
259
|
+
class GetLanguagePreferenceResponse
|
260
|
+
@@schema_type = "getLanguagePreferenceResponse"
|
261
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
262
|
+
@@schema_qualified = "true"
|
263
|
+
@@schema_element = [
|
264
|
+
["getLanguagePreferenceReturn", "SOAP::SOAPString"]
|
265
|
+
]
|
266
|
+
|
267
|
+
attr_accessor :getLanguagePreferenceReturn
|
268
|
+
|
269
|
+
def initialize(getLanguagePreferenceReturn = nil)
|
270
|
+
@getLanguagePreferenceReturn = getLanguagePreferenceReturn
|
271
|
+
end
|
272
|
+
end
|
273
|
+
|
274
|
+
# {https://adwords.google.com/api/adwords/v4}setLanguagePreference
|
275
|
+
class SetLanguagePreference
|
276
|
+
@@schema_type = "setLanguagePreference"
|
277
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
278
|
+
@@schema_qualified = "true"
|
279
|
+
@@schema_element = [
|
280
|
+
["languagePref", "SOAP::SOAPString"]
|
281
|
+
]
|
282
|
+
|
283
|
+
attr_accessor :languagePref
|
284
|
+
|
285
|
+
def initialize(languagePref = nil)
|
286
|
+
@languagePref = languagePref
|
287
|
+
end
|
288
|
+
end
|
289
|
+
|
290
|
+
# {https://adwords.google.com/api/adwords/v4}setLanguagePreferenceResponse
|
291
|
+
class SetLanguagePreferenceResponse
|
292
|
+
@@schema_type = "setLanguagePreferenceResponse"
|
293
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
294
|
+
@@schema_qualified = "true"
|
295
|
+
@@schema_element = []
|
296
|
+
|
297
|
+
def initialize
|
298
|
+
end
|
299
|
+
end
|
300
|
+
|
301
|
+
# {https://adwords.google.com/api/adwords/v4}getEmailPromotionsPreferences
|
302
|
+
class GetEmailPromotionsPreferences
|
303
|
+
@@schema_type = "getEmailPromotionsPreferences"
|
304
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
305
|
+
@@schema_qualified = "true"
|
306
|
+
@@schema_element = []
|
307
|
+
|
308
|
+
def initialize
|
309
|
+
end
|
310
|
+
end
|
311
|
+
|
312
|
+
# {https://adwords.google.com/api/adwords/v4}getEmailPromotionsPreferencesResponse
|
313
|
+
class GetEmailPromotionsPreferencesResponse
|
314
|
+
@@schema_type = "getEmailPromotionsPreferencesResponse"
|
315
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
316
|
+
@@schema_qualified = "true"
|
317
|
+
@@schema_element = [
|
318
|
+
["getEmailPromotionsPreferencesReturn", "EmailPromotionsPreferences"]
|
319
|
+
]
|
320
|
+
|
321
|
+
attr_accessor :getEmailPromotionsPreferencesReturn
|
322
|
+
|
323
|
+
def initialize(getEmailPromotionsPreferencesReturn = nil)
|
324
|
+
@getEmailPromotionsPreferencesReturn = getEmailPromotionsPreferencesReturn
|
325
|
+
end
|
326
|
+
end
|
327
|
+
|
328
|
+
# {https://adwords.google.com/api/adwords/v4}setEmailPromotionsPreferences
|
329
|
+
class SetEmailPromotionsPreferences
|
330
|
+
@@schema_type = "setEmailPromotionsPreferences"
|
331
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
332
|
+
@@schema_qualified = "true"
|
333
|
+
@@schema_element = [
|
334
|
+
["prefs", "EmailPromotionsPreferences"]
|
335
|
+
]
|
336
|
+
|
337
|
+
attr_accessor :prefs
|
338
|
+
|
339
|
+
def initialize(prefs = nil)
|
340
|
+
@prefs = prefs
|
341
|
+
end
|
342
|
+
end
|
343
|
+
|
344
|
+
# {https://adwords.google.com/api/adwords/v4}setEmailPromotionsPreferencesResponse
|
345
|
+
class SetEmailPromotionsPreferencesResponse
|
346
|
+
@@schema_type = "setEmailPromotionsPreferencesResponse"
|
347
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
348
|
+
@@schema_qualified = "true"
|
349
|
+
@@schema_element = []
|
350
|
+
|
351
|
+
def initialize
|
352
|
+
end
|
353
|
+
end
|
354
|
+
|
355
|
+
# {https://adwords.google.com/api/adwords/v4}getPrimaryBusinessCategory
|
356
|
+
class GetPrimaryBusinessCategory
|
357
|
+
@@schema_type = "getPrimaryBusinessCategory"
|
358
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
359
|
+
@@schema_qualified = "true"
|
360
|
+
@@schema_element = []
|
361
|
+
|
362
|
+
def initialize
|
363
|
+
end
|
364
|
+
end
|
365
|
+
|
366
|
+
# {https://adwords.google.com/api/adwords/v4}getPrimaryBusinessCategoryResponse
|
367
|
+
class GetPrimaryBusinessCategoryResponse
|
368
|
+
@@schema_type = "getPrimaryBusinessCategoryResponse"
|
369
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
370
|
+
@@schema_qualified = "true"
|
371
|
+
@@schema_element = [
|
372
|
+
["getPrimaryBusinessCategoryReturn", "SOAP::SOAPString"]
|
373
|
+
]
|
374
|
+
|
375
|
+
attr_accessor :getPrimaryBusinessCategoryReturn
|
376
|
+
|
377
|
+
def initialize(getPrimaryBusinessCategoryReturn = nil)
|
378
|
+
@getPrimaryBusinessCategoryReturn = getPrimaryBusinessCategoryReturn
|
379
|
+
end
|
380
|
+
end
|
381
|
+
|
382
|
+
# {https://adwords.google.com/api/adwords/v4}setPrimaryBusinessCategory
|
383
|
+
class SetPrimaryBusinessCategory
|
384
|
+
@@schema_type = "setPrimaryBusinessCategory"
|
385
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
386
|
+
@@schema_qualified = "true"
|
387
|
+
@@schema_element = [
|
388
|
+
["bizType", "SOAP::SOAPString"]
|
389
|
+
]
|
390
|
+
|
391
|
+
attr_accessor :bizType
|
392
|
+
|
393
|
+
def initialize(bizType = nil)
|
394
|
+
@bizType = bizType
|
395
|
+
end
|
396
|
+
end
|
397
|
+
|
398
|
+
# {https://adwords.google.com/api/adwords/v4}setPrimaryBusinessCategoryResponse
|
399
|
+
class SetPrimaryBusinessCategoryResponse
|
400
|
+
@@schema_type = "setPrimaryBusinessCategoryResponse"
|
401
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
402
|
+
@@schema_qualified = "true"
|
403
|
+
@@schema_element = []
|
404
|
+
|
405
|
+
def initialize
|
406
|
+
end
|
407
|
+
end
|
408
|
+
|
409
|
+
# {https://adwords.google.com/api/adwords/v4}getTermsAndConditions
|
410
|
+
class GetTermsAndConditions
|
411
|
+
@@schema_type = "getTermsAndConditions"
|
412
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
413
|
+
@@schema_qualified = "true"
|
414
|
+
@@schema_element = []
|
415
|
+
|
416
|
+
def initialize
|
417
|
+
end
|
418
|
+
end
|
419
|
+
|
420
|
+
# {https://adwords.google.com/api/adwords/v4}getTermsAndConditionsResponse
|
421
|
+
class GetTermsAndConditionsResponse
|
422
|
+
@@schema_type = "getTermsAndConditionsResponse"
|
423
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
424
|
+
@@schema_qualified = "true"
|
425
|
+
@@schema_element = [
|
426
|
+
["getTermsAndConditionsReturn", "SOAP::SOAPString"]
|
427
|
+
]
|
428
|
+
|
429
|
+
attr_accessor :getTermsAndConditionsReturn
|
430
|
+
|
431
|
+
def initialize(getTermsAndConditionsReturn = nil)
|
432
|
+
@getTermsAndConditionsReturn = getTermsAndConditionsReturn
|
433
|
+
end
|
434
|
+
end
|
435
|
+
|
436
|
+
# {https://adwords.google.com/api/adwords/v4}getClientAccounts
|
437
|
+
class GetClientAccounts
|
438
|
+
@@schema_type = "getClientAccounts"
|
439
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
440
|
+
@@schema_qualified = "true"
|
441
|
+
@@schema_element = []
|
442
|
+
|
443
|
+
def initialize
|
444
|
+
end
|
445
|
+
end
|
446
|
+
|
447
|
+
# {https://adwords.google.com/api/adwords/v4}getClientAccountsResponse
|
448
|
+
class GetClientAccountsResponse < ::Array
|
449
|
+
@@schema_element = [
|
450
|
+
["getClientAccountsReturn", ["SOAP::SOAPString[]", XSD::QName.new("https://adwords.google.com/api/adwords/v4", "getClientAccountsReturn")]]
|
451
|
+
]
|
452
|
+
end
|
453
|
+
|
454
|
+
# {https://adwords.google.com/api/adwords/v4}getLocalTimezone
|
455
|
+
class GetLocalTimezone
|
456
|
+
@@schema_type = "getLocalTimezone"
|
457
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
458
|
+
@@schema_qualified = "true"
|
459
|
+
@@schema_element = []
|
460
|
+
|
461
|
+
def initialize
|
462
|
+
end
|
463
|
+
end
|
464
|
+
|
465
|
+
# {https://adwords.google.com/api/adwords/v4}getLocalTimezoneResponse
|
466
|
+
class GetLocalTimezoneResponse
|
467
|
+
@@schema_type = "getLocalTimezoneResponse"
|
468
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
469
|
+
@@schema_qualified = "true"
|
470
|
+
@@schema_element = [
|
471
|
+
["getLocalTimezoneReturn", "SOAP::SOAPString"]
|
472
|
+
]
|
473
|
+
|
474
|
+
attr_accessor :getLocalTimezoneReturn
|
475
|
+
|
476
|
+
def initialize(getLocalTimezoneReturn = nil)
|
477
|
+
@getLocalTimezoneReturn = getLocalTimezoneReturn
|
478
|
+
end
|
479
|
+
end
|
480
|
+
|
481
|
+
# {https://adwords.google.com/api/adwords/v4}setLocalTimezone
|
482
|
+
class SetLocalTimezone
|
483
|
+
@@schema_type = "setLocalTimezone"
|
484
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
485
|
+
@@schema_qualified = "true"
|
486
|
+
@@schema_element = [
|
487
|
+
["timezoneID", "SOAP::SOAPString"]
|
488
|
+
]
|
489
|
+
|
490
|
+
attr_accessor :timezoneID
|
491
|
+
|
492
|
+
def initialize(timezoneID = nil)
|
493
|
+
@timezoneID = timezoneID
|
494
|
+
end
|
495
|
+
end
|
496
|
+
|
497
|
+
# {https://adwords.google.com/api/adwords/v4}setLocalTimezoneResponse
|
498
|
+
class SetLocalTimezoneResponse
|
499
|
+
@@schema_type = "setLocalTimezoneResponse"
|
500
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
501
|
+
@@schema_qualified = "true"
|
502
|
+
@@schema_element = []
|
503
|
+
|
504
|
+
def initialize
|
505
|
+
end
|
506
|
+
end
|
507
|
+
|
508
|
+
# {https://adwords.google.com/api/adwords/v4}getTimezoneEffectiveDate
|
509
|
+
class GetTimezoneEffectiveDate
|
510
|
+
@@schema_type = "getTimezoneEffectiveDate"
|
511
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
512
|
+
@@schema_qualified = "true"
|
513
|
+
@@schema_element = []
|
514
|
+
|
515
|
+
def initialize
|
516
|
+
end
|
517
|
+
end
|
518
|
+
|
519
|
+
# {https://adwords.google.com/api/adwords/v4}getTimezoneEffectiveDateResponse
|
520
|
+
class GetTimezoneEffectiveDateResponse
|
521
|
+
@@schema_type = "getTimezoneEffectiveDateResponse"
|
522
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
523
|
+
@@schema_qualified = "true"
|
524
|
+
@@schema_element = [
|
525
|
+
["getTimezoneEffectiveDateReturn", "SOAP::SOAPLong"]
|
526
|
+
]
|
527
|
+
|
528
|
+
attr_accessor :getTimezoneEffectiveDateReturn
|
529
|
+
|
530
|
+
def initialize(getTimezoneEffectiveDateReturn = nil)
|
531
|
+
@getTimezoneEffectiveDateReturn = getTimezoneEffectiveDateReturn
|
532
|
+
end
|
533
|
+
end
|
534
|
+
|
535
|
+
# {https://adwords.google.com/api/adwords/v4}EmailPromotionsPreferences
|
536
|
+
class EmailPromotionsPreferences
|
537
|
+
@@schema_type = "EmailPromotionsPreferences"
|
538
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
539
|
+
@@schema_element = [
|
540
|
+
["marketResearchEnabled", "SOAP::SOAPBoolean"],
|
541
|
+
["newsletterEnabled", "SOAP::SOAPBoolean"],
|
542
|
+
["promotionsEnabled", "SOAP::SOAPBoolean"]
|
543
|
+
]
|
544
|
+
|
545
|
+
attr_accessor :marketResearchEnabled
|
546
|
+
attr_accessor :newsletterEnabled
|
547
|
+
attr_accessor :promotionsEnabled
|
548
|
+
|
549
|
+
def initialize(marketResearchEnabled = nil, newsletterEnabled = nil, promotionsEnabled = nil)
|
550
|
+
@marketResearchEnabled = marketResearchEnabled
|
551
|
+
@newsletterEnabled = newsletterEnabled
|
552
|
+
@promotionsEnabled = promotionsEnabled
|
553
|
+
end
|
554
|
+
end
|
555
|
+
|
556
|
+
# {https://adwords.google.com/api/adwords/v4}CreditCard
|
557
|
+
class CreditCard
|
558
|
+
@@schema_type = "CreditCard"
|
559
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
560
|
+
@@schema_element = [
|
561
|
+
["cardNumber", "SOAP::SOAPString"],
|
562
|
+
["cardType", "SOAP::SOAPString"],
|
563
|
+
["cardVerificationNumber", "SOAP::SOAPString"],
|
564
|
+
["expirationMonth", "SOAP::SOAPInt"],
|
565
|
+
["expirationYear", "SOAP::SOAPInt"],
|
566
|
+
["issueNumber", "SOAP::SOAPString"],
|
567
|
+
["startMonth", "SOAP::SOAPInt"],
|
568
|
+
["startYear", "SOAP::SOAPInt"],
|
569
|
+
["status", "SOAP::SOAPString"],
|
570
|
+
["taxNumber", "SOAP::SOAPString"]
|
571
|
+
]
|
572
|
+
|
573
|
+
attr_accessor :cardNumber
|
574
|
+
attr_accessor :cardType
|
575
|
+
attr_accessor :cardVerificationNumber
|
576
|
+
attr_accessor :expirationMonth
|
577
|
+
attr_accessor :expirationYear
|
578
|
+
attr_accessor :issueNumber
|
579
|
+
attr_accessor :startMonth
|
580
|
+
attr_accessor :startYear
|
581
|
+
attr_accessor :status
|
582
|
+
attr_accessor :taxNumber
|
583
|
+
|
584
|
+
def initialize(cardNumber = nil, cardType = nil, cardVerificationNumber = nil, expirationMonth = nil, expirationYear = nil, issueNumber = nil, startMonth = nil, startYear = nil, status = nil, taxNumber = nil)
|
585
|
+
@cardNumber = cardNumber
|
586
|
+
@cardType = cardType
|
587
|
+
@cardVerificationNumber = cardVerificationNumber
|
588
|
+
@expirationMonth = expirationMonth
|
589
|
+
@expirationYear = expirationYear
|
590
|
+
@issueNumber = issueNumber
|
591
|
+
@startMonth = startMonth
|
592
|
+
@startYear = startYear
|
593
|
+
@status = status
|
594
|
+
@taxNumber = taxNumber
|
595
|
+
end
|
596
|
+
end
|
597
|
+
|
598
|
+
# {https://adwords.google.com/api/adwords/v4}Address
|
599
|
+
class Address
|
600
|
+
@@schema_type = "Address"
|
601
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
602
|
+
@@schema_element = [
|
603
|
+
["addressLine1", "SOAP::SOAPString"],
|
604
|
+
["addressLine2", "SOAP::SOAPString"],
|
605
|
+
["city", "SOAP::SOAPString"],
|
606
|
+
["companyName", "SOAP::SOAPString"],
|
607
|
+
["countryCode", "SOAP::SOAPString"],
|
608
|
+
["faxNumber", "SOAP::SOAPString"],
|
609
|
+
["name", "SOAP::SOAPString"],
|
610
|
+
["phoneNumber", "SOAP::SOAPString"],
|
611
|
+
["postalCode", "SOAP::SOAPString"],
|
612
|
+
["state", "SOAP::SOAPString"]
|
613
|
+
]
|
614
|
+
|
615
|
+
attr_accessor :addressLine1
|
616
|
+
attr_accessor :addressLine2
|
617
|
+
attr_accessor :city
|
618
|
+
attr_accessor :companyName
|
619
|
+
attr_accessor :countryCode
|
620
|
+
attr_accessor :faxNumber
|
621
|
+
attr_accessor :name
|
622
|
+
attr_accessor :phoneNumber
|
623
|
+
attr_accessor :postalCode
|
624
|
+
attr_accessor :state
|
625
|
+
|
626
|
+
def initialize(addressLine1 = nil, addressLine2 = nil, city = nil, companyName = nil, countryCode = nil, faxNumber = nil, name = nil, phoneNumber = nil, postalCode = nil, state = nil)
|
627
|
+
@addressLine1 = addressLine1
|
628
|
+
@addressLine2 = addressLine2
|
629
|
+
@city = city
|
630
|
+
@companyName = companyName
|
631
|
+
@countryCode = countryCode
|
632
|
+
@faxNumber = faxNumber
|
633
|
+
@name = name
|
634
|
+
@phoneNumber = phoneNumber
|
635
|
+
@postalCode = postalCode
|
636
|
+
@state = state
|
637
|
+
end
|
638
|
+
end
|
639
|
+
|
640
|
+
# {https://adwords.google.com/api/adwords/v4}CoverageType
|
641
|
+
class CoverageType
|
642
|
+
@@schema_type = "CoverageType"
|
643
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
644
|
+
@@schema_element = [
|
645
|
+
["optInContentNetwork", "SOAP::SOAPBoolean"],
|
646
|
+
["optInSearchNetwork", "SOAP::SOAPBoolean"]
|
647
|
+
]
|
648
|
+
|
649
|
+
attr_accessor :optInContentNetwork
|
650
|
+
attr_accessor :optInSearchNetwork
|
651
|
+
|
652
|
+
def initialize(optInContentNetwork = nil, optInSearchNetwork = nil)
|
653
|
+
@optInContentNetwork = optInContentNetwork
|
654
|
+
@optInSearchNetwork = optInSearchNetwork
|
655
|
+
end
|
656
|
+
end
|
657
|
+
|
658
|
+
# {https://adwords.google.com/api/adwords/v4}ApiException
|
659
|
+
class ApiException
|
660
|
+
@@schema_type = "ApiException"
|
661
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
662
|
+
@@schema_element = [
|
663
|
+
["code", "SOAP::SOAPInt"],
|
664
|
+
["internal", "SOAP::SOAPBoolean"],
|
665
|
+
["message", "SOAP::SOAPString"],
|
666
|
+
["trigger", "SOAP::SOAPString"],
|
667
|
+
["violations", "SOAP::SOAPString"]
|
668
|
+
]
|
669
|
+
|
670
|
+
attr_accessor :code
|
671
|
+
attr_accessor :internal
|
672
|
+
attr_accessor :message
|
673
|
+
attr_accessor :trigger
|
674
|
+
attr_accessor :violations
|
675
|
+
|
676
|
+
def initialize(code = nil, internal = nil, message = nil, trigger = nil, violations = nil)
|
677
|
+
@code = code
|
678
|
+
@internal = internal
|
679
|
+
@message = message
|
680
|
+
@trigger = trigger
|
681
|
+
@violations = violations
|
682
|
+
end
|
683
|
+
end
|
684
|
+
|
685
|
+
# {https://adwords.google.com/api/adwords/v4}CreditCardType
|
686
|
+
class CreditCardType < ::String
|
687
|
+
@@schema_type = "CreditCardType"
|
688
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
689
|
+
|
690
|
+
AmericanExpress = CreditCardType.new("AmericanExpress")
|
691
|
+
JCB = CreditCardType.new("JCB")
|
692
|
+
MasterCard = CreditCardType.new("MasterCard")
|
693
|
+
SOLO = CreditCardType.new("SOLO")
|
694
|
+
Switch = CreditCardType.new("Switch")
|
695
|
+
VISA = CreditCardType.new("VISA")
|
696
|
+
end
|
697
|
+
|
698
|
+
# {https://adwords.google.com/api/adwords/v4}TaxStatus
|
699
|
+
class TaxStatus < ::String
|
700
|
+
@@schema_type = "TaxStatus"
|
701
|
+
@@schema_ns = "https://adwords.google.com/api/adwords/v4"
|
702
|
+
|
703
|
+
Charity = TaxStatus.new("Charity")
|
704
|
+
ExtraTerritorial = TaxStatus.new("ExtraTerritorial")
|
705
|
+
Other = TaxStatus.new("Other")
|
706
|
+
SubjectToTax = TaxStatus.new("SubjectToTax")
|
707
|
+
ZeroRated = TaxStatus.new("ZeroRated")
|
708
|
+
end
|
709
|
+
end
|