activesalesforce 0.3.3 → 0.3.4

Sign up to get free protection for your applications and to get access to all the features.
data/lib/asf_adapter.rb CHANGED
@@ -17,14 +17,15 @@
17
17
 
18
18
  require 'rubygems'
19
19
  require_gem 'rails', ">= 1.0.0"
20
-
21
- require 'thread'
20
+
21
+ require 'thread'
22
22
  require 'benchmark'
23
23
 
24
24
  require File.dirname(__FILE__) + '/rforce'
25
25
  require File.dirname(__FILE__) + '/column_definition'
26
26
  require File.dirname(__FILE__) + '/relationship_definition'
27
27
  require File.dirname(__FILE__) + '/boxcar_command'
28
+ require File.dirname(__FILE__) + '/entity_definition'
28
29
 
29
30
  class ResultArray < Array
30
31
  attr_reader :actual_size
@@ -42,8 +43,11 @@ module ActiveRecord
42
43
  def self.activesalesforce_connection(config) # :nodoc:
43
44
  logger.debug("\nUsing ActiveSalesforce connection\n")
44
45
 
46
+ # Default to production system using 7.0 API
45
47
  url = config[:url]
46
- sid = config[:sid]
48
+ url = "https://www.salesforce.com/services/Soap/u/7.0" unless url
49
+
50
+ sid = config[:sid]
47
51
  binding = config[:binding] if config[:binding]
48
52
 
49
53
  if binding
@@ -64,9 +68,6 @@ module ActiveRecord
64
68
 
65
69
  ConnectionAdapters::SalesforceAdapter.new(binding, logger, [url, sid], config)
66
70
  else
67
- # Default to production system using 7.0 API
68
- url = "https://www.salesforce.com/services/Soap/u/7.0" unless url
69
-
70
71
  # Check to insure that the second to last path component is a 'u' for Partner API
71
72
  raise ConnectionAdapters::SalesforceError.new(logger, "Invalid salesforce server url '#{url}', must be a valid Parter API URL") unless url.match(/\/u\//i)
72
73
 
@@ -109,34 +110,9 @@ module ActiveRecord
109
110
 
110
111
 
111
112
  class SalesforceAdapter < AbstractAdapter
112
- MAX_BOXCAR_SIZE = 200
113
-
114
- class EntityDefinition
115
- attr_reader :name, :columns, :column_name_to_column, :api_name_to_column, :relationships
116
-
117
- def custom?
118
- @custom
119
- end
120
-
121
- def api_name
122
- @custom ? name + "__c" : name
123
- end
124
-
125
- def initialize(name, columns, relationships, custom)
126
- @name = name
127
- @columns = columns
128
- @relationships = relationships
129
- @custom = custom
130
-
131
- @column_name_to_column = {}
132
- @columns.each { |column| @column_name_to_column[column.name] = column }
133
-
134
- @api_name_to_column = {}
135
- @columns.each { |column| @api_name_to_column[column.api_name] = column }
136
- end
137
- end
138
-
139
113
  include StringHelper
114
+
115
+ MAX_BOXCAR_SIZE = 200
140
116
 
141
117
  attr_accessor :batch_size
142
118
  attr_reader :entity_def_map
@@ -524,7 +500,7 @@ module ActiveRecord
524
500
  end
525
501
  end
526
502
 
527
- entity_def = EntityDefinition.new(entity_name, cached_columns, cached_relationships, custom)
503
+ entity_def = ActiveSalesforce::EntityDefinition.new(self, entity_name, cached_columns, cached_relationships, custom)
528
504
  @entity_def_map[entity_name] = entity_def
529
505
 
530
506
  configure_active_record entity_def
@@ -0,0 +1,60 @@
1
+ =begin
2
+ ActiveSalesforce
3
+ Copyright 2006 Doug Chasman
4
+
5
+ Licensed under the Apache License, Version 2.0 (the "License");
6
+ you may not use this file except in compliance with the License.
7
+ You may obtain a copy of the License at
8
+
9
+ http://www.apache.org/licenses/LICENSE-2.0
10
+
11
+ Unless required by applicable law or agreed to in writing, software
12
+ distributed under the License is distributed on an "AS IS" BASIS,
13
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ See the License for the specific language governing permissions and
15
+ limitations under the License.
16
+ =end
17
+
18
+ require 'rubygems'
19
+ require_gem 'rails', ">= 1.0.0"
20
+
21
+ require 'pp'
22
+
23
+
24
+ module ActiveSalesforce
25
+ class EntityDefinition
26
+ attr_reader :name, :columns, :column_name_to_column, :api_name_to_column, :relationships
27
+
28
+ def initialize(connection, name, columns, relationships, custom)
29
+ @connection = connection
30
+ @name = name
31
+ @columns = columns
32
+ @relationships = relationships
33
+ @custom = custom
34
+
35
+ @column_name_to_column = {}
36
+ @columns.each { |column| @column_name_to_column[column.name] = column }
37
+
38
+ @api_name_to_column = {}
39
+ @columns.each { |column| @api_name_to_column[column.api_name] = column }
40
+ end
41
+
42
+ def custom?
43
+ @custom
44
+ end
45
+
46
+ def api_name
47
+ @custom ? name + "__c" : name
48
+ end
49
+
50
+ def layouts
51
+ return @layouts if @layouts
52
+
53
+ # Lazy load Layout information
54
+ response = @connection.binding.describeLayout(:sObjectType => api_name)
55
+ @layouts = @connection.get_result(response, :describeLayout)
56
+ end
57
+
58
+ end
59
+
60
+ end
@@ -0,0 +1,108 @@
1
+ =begin
2
+ ActiveSalesforce
3
+ Copyright 2006 Doug Chasman
4
+
5
+ Licensed under the Apache License, Version 2.0 (the "License");
6
+ you may not use this file except in compliance with the License.
7
+ You may obtain a copy of the License at
8
+
9
+ http://www.apache.org/licenses/LICENSE-2.0
10
+
11
+ Unless required by applicable law or agreed to in writing, software
12
+ distributed under the License is distributed on an "AS IS" BASIS,
13
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ See the License for the specific language governing permissions and
15
+ limitations under the License.
16
+ =end
17
+
18
+ require 'rubygems'
19
+
20
+ #require_gem 'activesalesforce', '>= 0.2.6'
21
+ require 'activesalesforce'
22
+
23
+ require 'recorded_test_case'
24
+ require 'pp'
25
+
26
+
27
+ class Contact < ActiveRecord::Base
28
+ end
29
+
30
+ class Department < ActiveRecord::Base
31
+ end
32
+
33
+
34
+ module Asf
35
+ module UnitTests
36
+
37
+ class AsfScaffoldGeneratorTest < Test::Unit::TestCase
38
+ include RecordedTestCase
39
+
40
+ attr_reader :contact
41
+
42
+ def initialize(test_method_name)
43
+ super(test_method_name)
44
+
45
+ #force_recording :test_describe_layout
46
+ end
47
+
48
+ def setup
49
+ puts "\nStarting test '#{self.class.name.gsub('::', '')}.#{method_name}'"
50
+
51
+ super
52
+ end
53
+
54
+ def teardown
55
+ super
56
+ end
57
+
58
+
59
+ def test_describe_layout
60
+ entity_def = Contact.connection.get_entity_def("Contact")
61
+
62
+ layouts = entity_def.layouts
63
+
64
+ puts "<table>"
65
+ layouts[:layouts][:detailLayoutSections].each do |section|
66
+ rows = section[:layoutRows]
67
+ rows = [ rows ] unless rows.is_a? Array
68
+
69
+ rows.each do | row |
70
+ puts " <tr>"
71
+
72
+ items = row[:layoutItems]
73
+ items = [ items ] unless items.is_a? Array
74
+
75
+ items.each do | item |
76
+ puts " <td>#{item[:label]}</td>"
77
+
78
+ components = item[:layoutComponents]
79
+
80
+ components = [ components ] unless components.is_a? Array
81
+
82
+ puts " <td>"
83
+ components.each do |component|
84
+ next if component.nil?
85
+
86
+ if component[:type] == "Field"
87
+ field = component[:value]
88
+ column = entity_def.api_name_to_column[field]
89
+
90
+ puts "@contact.#{column.name} "
91
+ end
92
+ end
93
+ puts " </td>"
94
+
95
+ end
96
+
97
+ puts " </tr>"
98
+ end
99
+
100
+ end
101
+
102
+ puts "</table>"
103
+ end
104
+
105
+ end
106
+
107
+ end
108
+ end
@@ -0,0 +1,1789 @@
1
+ ---
2
+ describeLayout(sObjectType:Contact): !ruby/object:RForce::SoapResponse
3
+ parsed:
4
+ :describeLayoutResponse:
5
+ :result:
6
+ :layouts:
7
+ :detailLayoutSections:
8
+ - :rows: "11"
9
+ :useCollapsibleSection: "false"
10
+ :useHeading: "false"
11
+ :heading: Contact Information
12
+ :columns: "2"
13
+ :layoutRows:
14
+ - :layoutItems:
15
+ - :required: "false"
16
+ :label: Contact Owner
17
+ :editable: "false"
18
+ :layoutComponents:
19
+ :type: Field
20
+ :value: OwnerId
21
+ :tabOrder: "1"
22
+ :placeholder: "false"
23
+ - :required: "false"
24
+ :label: Phone
25
+ :editable: "false"
26
+ :layoutComponents:
27
+ :type: Field
28
+ :value: Phone
29
+ :tabOrder: "16"
30
+ :placeholder: "false"
31
+ :numItems: "2"
32
+ - :layoutItems:
33
+ - :required: "false"
34
+ :label: Name
35
+ :editable: "false"
36
+ :layoutComponents:
37
+ - :type: Field
38
+ :value: Salutation
39
+ :tabOrder: "2"
40
+ - :type: Separator
41
+ :value: " "
42
+ :tabOrder: "3"
43
+ - :type: Field
44
+ :value: FirstName
45
+ :tabOrder: "4"
46
+ - :type: Separator
47
+ :value: " "
48
+ :tabOrder: "5"
49
+ - :type: Field
50
+ :value: LastName
51
+ :tabOrder: "6"
52
+ :placeholder: "false"
53
+ - :required: "false"
54
+ :label: Home Phone
55
+ :editable: "false"
56
+ :layoutComponents:
57
+ :type: Field
58
+ :value: HomePhone
59
+ :tabOrder: "17"
60
+ :placeholder: "false"
61
+ :numItems: "2"
62
+ - :layoutItems:
63
+ - :required: "false"
64
+ :label: Account
65
+ :editable: "false"
66
+ :layoutComponents:
67
+ :type: Field
68
+ :value: AccountId
69
+ :tabOrder: "7"
70
+ :placeholder: "false"
71
+ - :required: "false"
72
+ :label: Mobile
73
+ :editable: "false"
74
+ :layoutComponents:
75
+ :type: Field
76
+ :value: MobilePhone
77
+ :tabOrder: "18"
78
+ :placeholder: "false"
79
+ :numItems: "2"
80
+ - :layoutItems:
81
+ - :required: "false"
82
+ :label: Title
83
+ :editable: "false"
84
+ :layoutComponents:
85
+ :type: Field
86
+ :value: Title
87
+ :tabOrder: "8"
88
+ :placeholder: "false"
89
+ - :required: "false"
90
+ :label: Other Phone
91
+ :editable: "false"
92
+ :layoutComponents:
93
+ :type: Field
94
+ :value: OtherPhone
95
+ :tabOrder: "19"
96
+ :placeholder: "false"
97
+ :numItems: "2"
98
+ - :layoutItems:
99
+ - :required: "false"
100
+ :label: Department
101
+ :editable: "false"
102
+ :layoutComponents:
103
+ :type: Field
104
+ :value: Department
105
+ :tabOrder: "9"
106
+ :placeholder: "false"
107
+ - :required: "false"
108
+ :label: Fax
109
+ :editable: "false"
110
+ :layoutComponents:
111
+ :type: Field
112
+ :value: Fax
113
+ :tabOrder: "20"
114
+ :placeholder: "false"
115
+ :numItems: "2"
116
+ - :layoutItems:
117
+ - :required: "false"
118
+ :label: Birthdate
119
+ :editable: "false"
120
+ :layoutComponents:
121
+ :type: Field
122
+ :value: Birthdate
123
+ :tabOrder: "10"
124
+ :placeholder: "false"
125
+ - :required: "false"
126
+ :label: Email
127
+ :editable: "false"
128
+ :layoutComponents:
129
+ :type: Field
130
+ :value: Email
131
+ :tabOrder: "21"
132
+ :placeholder: "false"
133
+ :numItems: "2"
134
+ - :layoutItems:
135
+ - :required: "false"
136
+ :label: Reports To
137
+ :editable: "false"
138
+ :layoutComponents:
139
+ :type: Field
140
+ :value: ReportsToId
141
+ :tabOrder: "11"
142
+ :placeholder: "false"
143
+ - :required: "false"
144
+ :label: Assistant
145
+ :editable: "false"
146
+ :layoutComponents:
147
+ :type: Field
148
+ :value: AssistantName
149
+ :tabOrder: "22"
150
+ :placeholder: "false"
151
+ :numItems: "2"
152
+ - :layoutItems:
153
+ - :required: "false"
154
+ :label: Lead Source
155
+ :editable: "false"
156
+ :layoutComponents:
157
+ :type: Field
158
+ :value: LeadSource
159
+ :tabOrder: "12"
160
+ :placeholder: "false"
161
+ - :required: "false"
162
+ :label: Asst. Phone
163
+ :editable: "false"
164
+ :layoutComponents:
165
+ :type: Field
166
+ :value: AssistantPhone
167
+ :tabOrder: "23"
168
+ :placeholder: "false"
169
+ :numItems: "2"
170
+ - :layoutItems:
171
+ - :required: "false"
172
+ :label: f1
173
+ :editable: "false"
174
+ :layoutComponents:
175
+ :type: Field
176
+ :value: f1__c
177
+ :tabOrder: "13"
178
+ :placeholder: "false"
179
+ - :required: "false"
180
+ :label:
181
+ :editable: "false"
182
+ :placeholder: "true"
183
+ :numItems: "2"
184
+ - :layoutItems:
185
+ - :required: "false"
186
+ :label: f2
187
+ :editable: "false"
188
+ :layoutComponents:
189
+ :type: Field
190
+ :value: f2__c
191
+ :tabOrder: "14"
192
+ :placeholder: "false"
193
+ - :required: "false"
194
+ :label:
195
+ :editable: "false"
196
+ :placeholder: "true"
197
+ :numItems: "2"
198
+ - :layoutItems:
199
+ - :required: "false"
200
+ :label: CustomUserRel
201
+ :editable: "false"
202
+ :layoutComponents:
203
+ :type: Field
204
+ :value: CustomUserRel__c
205
+ :tabOrder: "15"
206
+ :placeholder: "false"
207
+ - :required: "false"
208
+ :label:
209
+ :editable: "false"
210
+ :placeholder: "true"
211
+ :numItems: "2"
212
+ - :rows: "1"
213
+ :useCollapsibleSection: "false"
214
+ :useHeading: "false"
215
+ :heading: Address Information
216
+ :columns: "2"
217
+ :layoutRows:
218
+ :layoutItems:
219
+ - :required: "false"
220
+ :label: Mailing Address
221
+ :editable: "false"
222
+ :layoutComponents:
223
+ - :type: Field
224
+ :value: MailingStreet
225
+ :tabOrder: "43"
226
+ - :type: Separator
227
+ :value: |
228
+
229
+
230
+ :tabOrder: "44"
231
+ - :type: Field
232
+ :value: MailingCity
233
+ :tabOrder: "45"
234
+ - :type: Separator
235
+ :value: ","
236
+ :tabOrder: "46"
237
+ - :type: Separator
238
+ :value: " "
239
+ :tabOrder: "47"
240
+ - :type: Field
241
+ :value: MailingState
242
+ :tabOrder: "48"
243
+ - :type: Separator
244
+ :value: " "
245
+ :tabOrder: "49"
246
+ - :type: Field
247
+ :value: MailingPostalCode
248
+ :tabOrder: "50"
249
+ - :type: Separator
250
+ :value: |
251
+
252
+
253
+ :tabOrder: "51"
254
+ - :type: Field
255
+ :value: MailingCountry
256
+ :tabOrder: "52"
257
+ :placeholder: "false"
258
+ - :required: "false"
259
+ :label: Other Address
260
+ :editable: "false"
261
+ :layoutComponents:
262
+ - :type: Field
263
+ :value: OtherStreet
264
+ :tabOrder: "53"
265
+ - :type: Separator
266
+ :value: |
267
+
268
+
269
+ :tabOrder: "54"
270
+ - :type: Field
271
+ :value: OtherCity
272
+ :tabOrder: "55"
273
+ - :type: Separator
274
+ :value: ","
275
+ :tabOrder: "56"
276
+ - :type: Separator
277
+ :value: " "
278
+ :tabOrder: "57"
279
+ - :type: Field
280
+ :value: OtherState
281
+ :tabOrder: "58"
282
+ - :type: Separator
283
+ :value: " "
284
+ :tabOrder: "59"
285
+ - :type: Field
286
+ :value: OtherPostalCode
287
+ :tabOrder: "60"
288
+ - :type: Separator
289
+ :value: |
290
+
291
+
292
+ :tabOrder: "61"
293
+ - :type: Field
294
+ :value: OtherCountry
295
+ :tabOrder: "62"
296
+ :placeholder: "false"
297
+ :numItems: "2"
298
+ - :rows: "1"
299
+ :useCollapsibleSection: "false"
300
+ :useHeading: "false"
301
+ :heading: Additional Information
302
+ :columns: "2"
303
+ :layoutRows:
304
+ :layoutItems:
305
+ - :required: "false"
306
+ :label: Languages
307
+ :editable: "false"
308
+ :layoutComponents:
309
+ :type: Field
310
+ :value: Languages__c
311
+ :tabOrder: "73"
312
+ :placeholder: "false"
313
+ - :required: "false"
314
+ :label: Level
315
+ :editable: "false"
316
+ :layoutComponents:
317
+ :type: Field
318
+ :value: Level__c
319
+ :tabOrder: "74"
320
+ :placeholder: "false"
321
+ :numItems: "2"
322
+ - :rows: "1"
323
+ :useCollapsibleSection: "false"
324
+ :useHeading: "false"
325
+ :heading: System Information
326
+ :columns: "2"
327
+ :layoutRows:
328
+ :layoutItems:
329
+ - :required: "false"
330
+ :label: Created By
331
+ :editable: "false"
332
+ :layoutComponents:
333
+ - :type: Field
334
+ :value: CreatedById
335
+ :tabOrder: "77"
336
+ - :type: Separator
337
+ :value: ","
338
+ :tabOrder: "78"
339
+ - :type: Field
340
+ :value: CreatedDate
341
+ :tabOrder: "79"
342
+ :placeholder: "false"
343
+ - :required: "false"
344
+ :label: Last Modified By
345
+ :editable: "false"
346
+ :layoutComponents:
347
+ - :type: Field
348
+ :value: LastModifiedById
349
+ :tabOrder: "80"
350
+ - :type: Separator
351
+ :value: ","
352
+ :tabOrder: "81"
353
+ - :type: Field
354
+ :value: LastModifiedDate
355
+ :tabOrder: "82"
356
+ :placeholder: "false"
357
+ :numItems: "2"
358
+ - :rows: "1"
359
+ :useCollapsibleSection: "false"
360
+ :useHeading: "false"
361
+ :heading: Description Information
362
+ :columns: "1"
363
+ :layoutRows:
364
+ :layoutItems:
365
+ :required: "false"
366
+ :label: Description
367
+ :editable: "false"
368
+ :layoutComponents:
369
+ :type: Field
370
+ :value: Description
371
+ :tabOrder: "83"
372
+ :placeholder: "false"
373
+ :numItems: "1"
374
+ :editLayoutSections:
375
+ - :rows: "10"
376
+ :useCollapsibleSection: "false"
377
+ :useHeading: "true"
378
+ :heading: Contact Information
379
+ :columns: "2"
380
+ :layoutRows:
381
+ - :layoutItems:
382
+ - :required: "false"
383
+ :label: Contact Owner
384
+ :editable: "false"
385
+ :layoutComponents:
386
+ :type: Field
387
+ :value: OwnerId
388
+ :tabOrder: "24"
389
+ :placeholder: "false"
390
+ - :required: "false"
391
+ :label: Phone
392
+ :editable: "true"
393
+ :layoutComponents:
394
+ :type: Field
395
+ :value: Phone
396
+ :tabOrder: "35"
397
+ :placeholder: "false"
398
+ :numItems: "2"
399
+ - :layoutItems:
400
+ - :required: "false"
401
+ :label: First Name
402
+ :editable: "true"
403
+ :layoutComponents:
404
+ - :type: Field
405
+ :value: Salutation
406
+ :tabOrder: "25"
407
+ - :type: Field
408
+ :value: FirstName
409
+ :tabOrder: "26"
410
+ :placeholder: "false"
411
+ - :required: "false"
412
+ :label: Home Phone
413
+ :editable: "true"
414
+ :layoutComponents:
415
+ :type: Field
416
+ :value: HomePhone
417
+ :tabOrder: "36"
418
+ :placeholder: "false"
419
+ :numItems: "2"
420
+ - :layoutItems:
421
+ - :required: "true"
422
+ :label: Last Name
423
+ :editable: "true"
424
+ :layoutComponents:
425
+ :type: Field
426
+ :value: LastName
427
+ :tabOrder: "27"
428
+ :placeholder: "false"
429
+ - :required: "false"
430
+ :label: Mobile
431
+ :editable: "true"
432
+ :layoutComponents:
433
+ :type: Field
434
+ :value: MobilePhone
435
+ :tabOrder: "37"
436
+ :placeholder: "false"
437
+ :numItems: "2"
438
+ - :layoutItems:
439
+ - :required: "false"
440
+ :label: Account
441
+ :editable: "true"
442
+ :layoutComponents:
443
+ :type: Field
444
+ :value: AccountId
445
+ :tabOrder: "28"
446
+ :placeholder: "false"
447
+ - :required: "false"
448
+ :label: Other Phone
449
+ :editable: "true"
450
+ :layoutComponents:
451
+ :type: Field
452
+ :value: OtherPhone
453
+ :tabOrder: "38"
454
+ :placeholder: "false"
455
+ :numItems: "2"
456
+ - :layoutItems:
457
+ - :required: "false"
458
+ :label: Title
459
+ :editable: "true"
460
+ :layoutComponents:
461
+ :type: Field
462
+ :value: Title
463
+ :tabOrder: "29"
464
+ :placeholder: "false"
465
+ - :required: "false"
466
+ :label: Fax
467
+ :editable: "true"
468
+ :layoutComponents:
469
+ :type: Field
470
+ :value: Fax
471
+ :tabOrder: "39"
472
+ :placeholder: "false"
473
+ :numItems: "2"
474
+ - :layoutItems:
475
+ - :required: "false"
476
+ :label: Department
477
+ :editable: "true"
478
+ :layoutComponents:
479
+ :type: Field
480
+ :value: Department
481
+ :tabOrder: "30"
482
+ :placeholder: "false"
483
+ - :required: "false"
484
+ :label: Email
485
+ :editable: "true"
486
+ :layoutComponents:
487
+ :type: Field
488
+ :value: Email
489
+ :tabOrder: "40"
490
+ :placeholder: "false"
491
+ :numItems: "2"
492
+ - :layoutItems:
493
+ - :required: "false"
494
+ :label: Birthdate
495
+ :editable: "true"
496
+ :layoutComponents:
497
+ :type: Field
498
+ :value: Birthdate
499
+ :tabOrder: "31"
500
+ :placeholder: "false"
501
+ - :required: "false"
502
+ :label: Assistant
503
+ :editable: "true"
504
+ :layoutComponents:
505
+ :type: Field
506
+ :value: AssistantName
507
+ :tabOrder: "41"
508
+ :placeholder: "false"
509
+ :numItems: "2"
510
+ - :layoutItems:
511
+ - :required: "false"
512
+ :label: Reports To
513
+ :editable: "true"
514
+ :layoutComponents:
515
+ :type: Field
516
+ :value: ReportsToId
517
+ :tabOrder: "32"
518
+ :placeholder: "false"
519
+ - :required: "false"
520
+ :label: Asst. Phone
521
+ :editable: "true"
522
+ :layoutComponents:
523
+ :type: Field
524
+ :value: AssistantPhone
525
+ :tabOrder: "42"
526
+ :placeholder: "false"
527
+ :numItems: "2"
528
+ - :layoutItems:
529
+ - :required: "false"
530
+ :label: Lead Source
531
+ :editable: "true"
532
+ :layoutComponents:
533
+ :type: Field
534
+ :value: LeadSource
535
+ :tabOrder: "33"
536
+ :placeholder: "false"
537
+ - :required: "false"
538
+ :label:
539
+ :editable: "false"
540
+ :placeholder: "true"
541
+ :numItems: "2"
542
+ - :layoutItems:
543
+ - :required: "false"
544
+ :label: CustomUserRel
545
+ :editable: "true"
546
+ :layoutComponents:
547
+ :type: Field
548
+ :value: CustomUserRel__c
549
+ :tabOrder: "34"
550
+ :placeholder: "false"
551
+ - :required: "false"
552
+ :label:
553
+ :editable: "false"
554
+ :placeholder: "true"
555
+ :numItems: "2"
556
+ - :rows: "5"
557
+ :useCollapsibleSection: "false"
558
+ :useHeading: "true"
559
+ :heading: Address Information
560
+ :columns: "2"
561
+ :layoutRows:
562
+ - :layoutItems:
563
+ - :required: "false"
564
+ :label: Mailing Street
565
+ :editable: "true"
566
+ :layoutComponents:
567
+ :type: Field
568
+ :value: MailingStreet
569
+ :tabOrder: "63"
570
+ :placeholder: "false"
571
+ - :required: "false"
572
+ :label: Other Street
573
+ :editable: "true"
574
+ :layoutComponents:
575
+ :type: Field
576
+ :value: OtherStreet
577
+ :tabOrder: "68"
578
+ :placeholder: "false"
579
+ :numItems: "2"
580
+ - :layoutItems:
581
+ - :required: "false"
582
+ :label: Mailing City
583
+ :editable: "true"
584
+ :layoutComponents:
585
+ :type: Field
586
+ :value: MailingCity
587
+ :tabOrder: "64"
588
+ :placeholder: "false"
589
+ - :required: "false"
590
+ :label: Other City
591
+ :editable: "true"
592
+ :layoutComponents:
593
+ :type: Field
594
+ :value: OtherCity
595
+ :tabOrder: "69"
596
+ :placeholder: "false"
597
+ :numItems: "2"
598
+ - :layoutItems:
599
+ - :required: "false"
600
+ :label: Mailing State/Province
601
+ :editable: "true"
602
+ :layoutComponents:
603
+ :type: Field
604
+ :value: MailingState
605
+ :tabOrder: "65"
606
+ :placeholder: "false"
607
+ - :required: "false"
608
+ :label: Other State/Province
609
+ :editable: "true"
610
+ :layoutComponents:
611
+ :type: Field
612
+ :value: OtherState
613
+ :tabOrder: "70"
614
+ :placeholder: "false"
615
+ :numItems: "2"
616
+ - :layoutItems:
617
+ - :required: "false"
618
+ :label: Mailing Zip/Postal Code
619
+ :editable: "true"
620
+ :layoutComponents:
621
+ :type: Field
622
+ :value: MailingPostalCode
623
+ :tabOrder: "66"
624
+ :placeholder: "false"
625
+ - :required: "false"
626
+ :label: Other Zip/Postal Code
627
+ :editable: "true"
628
+ :layoutComponents:
629
+ :type: Field
630
+ :value: OtherPostalCode
631
+ :tabOrder: "71"
632
+ :placeholder: "false"
633
+ :numItems: "2"
634
+ - :layoutItems:
635
+ - :required: "false"
636
+ :label: Mailing Country
637
+ :editable: "true"
638
+ :layoutComponents:
639
+ :type: Field
640
+ :value: MailingCountry
641
+ :tabOrder: "67"
642
+ :placeholder: "false"
643
+ - :required: "false"
644
+ :label: Other Country
645
+ :editable: "true"
646
+ :layoutComponents:
647
+ :type: Field
648
+ :value: OtherCountry
649
+ :tabOrder: "72"
650
+ :placeholder: "false"
651
+ :numItems: "2"
652
+ - :rows: "1"
653
+ :useCollapsibleSection: "false"
654
+ :useHeading: "true"
655
+ :heading: Additional Information
656
+ :columns: "2"
657
+ :layoutRows:
658
+ :layoutItems:
659
+ - :required: "false"
660
+ :label: Languages
661
+ :editable: "true"
662
+ :layoutComponents:
663
+ :type: Field
664
+ :value: Languages__c
665
+ :tabOrder: "75"
666
+ :placeholder: "false"
667
+ - :required: "false"
668
+ :label: Level
669
+ :editable: "true"
670
+ :layoutComponents:
671
+ :type: Field
672
+ :value: Level__c
673
+ :tabOrder: "76"
674
+ :placeholder: "false"
675
+ :numItems: "2"
676
+ - :rows: "1"
677
+ :useCollapsibleSection: "false"
678
+ :useHeading: "true"
679
+ :heading: Description Information
680
+ :columns: "1"
681
+ :layoutRows:
682
+ :layoutItems:
683
+ :required: "false"
684
+ :label: Description
685
+ :editable: "true"
686
+ :layoutComponents:
687
+ :type: Field
688
+ :value: Description
689
+ :tabOrder: "84"
690
+ :placeholder: "false"
691
+ :numItems: "1"
692
+ :id: 00h30000000p1W0AAI
693
+ :recordTypeMappings:
694
+ - :recordTypeId: 012300000004pYzAAI
695
+ :available: "true"
696
+ :defaultRecordTypeMapping: "true"
697
+ :layoutId: 00h30000000p1W0AAI
698
+ :name: DUTCHRT
699
+ :picklistsForRecordType:
700
+ - :picklistValues:
701
+ - :label: Mr.
702
+ :value: Mr.
703
+ :defaultValue: "false"
704
+ :active: "true"
705
+ - :label: Ms.
706
+ :value: Ms.
707
+ :defaultValue: "false"
708
+ :active: "true"
709
+ - :label: Mrs.
710
+ :value: Mrs.
711
+ :defaultValue: "false"
712
+ :active: "true"
713
+ - :label: Dr.
714
+ :value: Dr.
715
+ :defaultValue: "false"
716
+ :active: "true"
717
+ - :label: Prof.
718
+ :value: Prof.
719
+ :defaultValue: "false"
720
+ :active: "true"
721
+ :picklistName: Salutation
722
+ - :picklistValues:
723
+ - :label: Web
724
+ :value: Web
725
+ :defaultValue: "false"
726
+ :active: "true"
727
+ - :label: Phone Inquiry
728
+ :value: Phone Inquiry
729
+ :defaultValue: "false"
730
+ :active: "true"
731
+ - :label: Partner Referral
732
+ :value: Partner Referral
733
+ :defaultValue: "false"
734
+ :active: "true"
735
+ - :label: Purchased List
736
+ :value: Purchased List
737
+ :defaultValue: "false"
738
+ :active: "true"
739
+ - :label: Other
740
+ :value: Other
741
+ :defaultValue: "false"
742
+ :active: "true"
743
+ :picklistName: LeadSource
744
+ - :picklistValues:
745
+ - :label: Primary
746
+ :value: Primary
747
+ :defaultValue: "false"
748
+ :active: "true"
749
+ - :label: Tertiary
750
+ :value: Tertiary
751
+ :defaultValue: "false"
752
+ :active: "true"
753
+ :picklistName: Level__c
754
+ - :recordTypeId:
755
+ :available: "true"
756
+ :defaultRecordTypeMapping: "false"
757
+ :layoutId: 00h30000000p1W0AAI
758
+ :name: Master
759
+ :picklistsForRecordType:
760
+ - :picklistValues:
761
+ - :label: Mr.
762
+ :value: Mr.
763
+ :defaultValue: "false"
764
+ :active: "true"
765
+ - :label: Ms.
766
+ :value: Ms.
767
+ :defaultValue: "false"
768
+ :active: "true"
769
+ - :label: Mrs.
770
+ :value: Mrs.
771
+ :defaultValue: "false"
772
+ :active: "true"
773
+ - :label: Dr.
774
+ :value: Dr.
775
+ :defaultValue: "false"
776
+ :active: "true"
777
+ - :label: Prof.
778
+ :value: Prof.
779
+ :defaultValue: "false"
780
+ :active: "true"
781
+ :picklistName: Salutation
782
+ - :picklistValues:
783
+ - :label: Web
784
+ :value: Web
785
+ :defaultValue: "false"
786
+ :active: "true"
787
+ - :label: Phone Inquiry
788
+ :value: Phone Inquiry
789
+ :defaultValue: "false"
790
+ :active: "true"
791
+ - :label: Partner Referral
792
+ :value: Partner Referral
793
+ :defaultValue: "false"
794
+ :active: "true"
795
+ - :label: Purchased List
796
+ :value: Purchased List
797
+ :defaultValue: "false"
798
+ :active: "true"
799
+ - :label: Other
800
+ :value: Other
801
+ :defaultValue: "false"
802
+ :active: "true"
803
+ :picklistName: LeadSource
804
+ - :picklistValues:
805
+ - :label: Primary
806
+ :value: Primary
807
+ :defaultValue: "false"
808
+ :active: "true"
809
+ - :label: Tertiary
810
+ :value: Tertiary
811
+ :defaultValue: "false"
812
+ :active: "true"
813
+ :picklistName: Level__c
814
+ describeSObject(sObjectType:Contact): !ruby/object:RForce::SoapResponse
815
+ parsed:
816
+ :describeSObjectResponse:
817
+ :result:
818
+ :searchable: "true"
819
+ :childRelationships:
820
+ - :relationshipName: AccountContactRoles
821
+ :cascadeDelete: "true"
822
+ :field: ContactId
823
+ :childSObject: AccountContactRole
824
+ - :relationshipName: Assets
825
+ :cascadeDelete: "false"
826
+ :field: ContactId
827
+ :childSObject: Asset
828
+ - :relationshipName: Attachments
829
+ :cascadeDelete: "false"
830
+ :field: ParentId
831
+ :childSObject: Attachment
832
+ - :relationshipName: CampaignMembers
833
+ :cascadeDelete: "true"
834
+ :field: ContactId
835
+ :childSObject: CampaignMember
836
+ - :relationshipName: Cases
837
+ :cascadeDelete: "false"
838
+ :field: ContactId
839
+ :childSObject: Case
840
+ - :cascadeDelete: "false"
841
+ :field: ReportsToId
842
+ :childSObject: Contact
843
+ - :cascadeDelete: "false"
844
+ :field: CustomerSignedId
845
+ :childSObject: Contract
846
+ - :relationshipName: ContractContactRoles
847
+ :cascadeDelete: "true"
848
+ :field: ContactId
849
+ :childSObject: ContractContactRole
850
+ - :relationshipName: Events
851
+ :cascadeDelete: "true"
852
+ :field: WhoId
853
+ :childSObject: Event
854
+ - :cascadeDelete: "true"
855
+ :field: AttendeeId
856
+ :childSObject: EventAttendee
857
+ - :cascadeDelete: "false"
858
+ :field: ConvertedContactId
859
+ :childSObject: Lead
860
+ - :relationshipName: Notes
861
+ :cascadeDelete: "true"
862
+ :field: ParentId
863
+ :childSObject: Note
864
+ - :relationshipName: OpportunityContactRoles
865
+ :cascadeDelete: "true"
866
+ :field: ContactId
867
+ :childSObject: OpportunityContactRole
868
+ - :cascadeDelete: "false"
869
+ :field: ContactId
870
+ :childSObject: SelfServiceUser
871
+ - :relationshipName: Tasks
872
+ :cascadeDelete: "true"
873
+ :field: WhoId
874
+ :childSObject: Task
875
+ :labelPlural: Contacts
876
+ :label: Contact
877
+ :undeletable: "false"
878
+ :fields:
879
+ - :nameField: "false"
880
+ :label: Contact ID
881
+ :byteLength: "18"
882
+ :restrictedPicklist: "false"
883
+ :precision: "0"
884
+ :length: "18"
885
+ :calculated: "false"
886
+ :type: id
887
+ :soapType: tns:ID
888
+ :scale: "0"
889
+ :nillable: "false"
890
+ :defaultedOnCreate: "true"
891
+ :name: Id
892
+ :custom: "false"
893
+ :createable: "false"
894
+ :updateable: "false"
895
+ :digits: "0"
896
+ :filterable: "true"
897
+ :autoNumber: "false"
898
+ - :nameField: "false"
899
+ :label: Account ID
900
+ :byteLength: "18"
901
+ :restrictedPicklist: "false"
902
+ :precision: "0"
903
+ :length: "18"
904
+ :calculated: "false"
905
+ :type: reference
906
+ :soapType: tns:ID
907
+ :scale: "0"
908
+ :nillable: "true"
909
+ :defaultedOnCreate: "false"
910
+ :name: AccountId
911
+ :custom: "false"
912
+ :createable: "true"
913
+ :updateable: "true"
914
+ :digits: "0"
915
+ :filterable: "true"
916
+ :referenceTo: Account
917
+ :autoNumber: "false"
918
+ - :nameField: "true"
919
+ :label: Last Name
920
+ :byteLength: "240"
921
+ :restrictedPicklist: "false"
922
+ :precision: "0"
923
+ :length: "80"
924
+ :calculated: "false"
925
+ :type: string
926
+ :soapType: xsd:string
927
+ :scale: "0"
928
+ :nillable: "false"
929
+ :defaultedOnCreate: "false"
930
+ :name: LastName
931
+ :custom: "false"
932
+ :createable: "true"
933
+ :updateable: "true"
934
+ :digits: "0"
935
+ :filterable: "true"
936
+ :autoNumber: "false"
937
+ - :nameField: "true"
938
+ :label: First Name
939
+ :byteLength: "120"
940
+ :restrictedPicklist: "false"
941
+ :precision: "0"
942
+ :length: "40"
943
+ :calculated: "false"
944
+ :type: string
945
+ :soapType: xsd:string
946
+ :scale: "0"
947
+ :nillable: "true"
948
+ :defaultedOnCreate: "false"
949
+ :name: FirstName
950
+ :custom: "false"
951
+ :createable: "true"
952
+ :updateable: "true"
953
+ :digits: "0"
954
+ :filterable: "true"
955
+ :autoNumber: "false"
956
+ - :nameField: "false"
957
+ :label: Salutation
958
+ :byteLength: "120"
959
+ :restrictedPicklist: "false"
960
+ :precision: "0"
961
+ :length: "40"
962
+ :calculated: "false"
963
+ :type: picklist
964
+ :soapType: xsd:string
965
+ :scale: "0"
966
+ :nillable: "true"
967
+ :defaultedOnCreate: "false"
968
+ :picklistValues:
969
+ - :label: Mr.
970
+ :value: Mr.
971
+ :defaultValue: "false"
972
+ :active: "true"
973
+ - :label: Ms.
974
+ :value: Ms.
975
+ :defaultValue: "false"
976
+ :active: "true"
977
+ - :label: Mrs.
978
+ :value: Mrs.
979
+ :defaultValue: "false"
980
+ :active: "true"
981
+ - :label: Dr.
982
+ :value: Dr.
983
+ :defaultValue: "false"
984
+ :active: "true"
985
+ - :label: Prof.
986
+ :value: Prof.
987
+ :defaultValue: "false"
988
+ :active: "true"
989
+ :name: Salutation
990
+ :custom: "false"
991
+ :createable: "true"
992
+ :updateable: "true"
993
+ :digits: "0"
994
+ :filterable: "true"
995
+ :autoNumber: "false"
996
+ - :nameField: "false"
997
+ :label: Record Type ID
998
+ :byteLength: "18"
999
+ :restrictedPicklist: "false"
1000
+ :precision: "0"
1001
+ :length: "18"
1002
+ :calculated: "false"
1003
+ :type: reference
1004
+ :soapType: tns:ID
1005
+ :scale: "0"
1006
+ :nillable: "true"
1007
+ :defaultedOnCreate: "false"
1008
+ :name: RecordTypeId
1009
+ :custom: "false"
1010
+ :createable: "true"
1011
+ :updateable: "true"
1012
+ :digits: "0"
1013
+ :filterable: "true"
1014
+ :referenceTo: RecordType
1015
+ :autoNumber: "false"
1016
+ - :nameField: "false"
1017
+ :label: Other Street
1018
+ :byteLength: "765"
1019
+ :restrictedPicklist: "false"
1020
+ :precision: "0"
1021
+ :length: "255"
1022
+ :calculated: "false"
1023
+ :type: textarea
1024
+ :soapType: xsd:string
1025
+ :scale: "0"
1026
+ :nillable: "true"
1027
+ :defaultedOnCreate: "false"
1028
+ :name: OtherStreet
1029
+ :custom: "false"
1030
+ :createable: "true"
1031
+ :updateable: "true"
1032
+ :digits: "0"
1033
+ :filterable: "true"
1034
+ :autoNumber: "false"
1035
+ - :nameField: "false"
1036
+ :label: Other City
1037
+ :byteLength: "120"
1038
+ :restrictedPicklist: "false"
1039
+ :precision: "0"
1040
+ :length: "40"
1041
+ :calculated: "false"
1042
+ :type: string
1043
+ :soapType: xsd:string
1044
+ :scale: "0"
1045
+ :nillable: "true"
1046
+ :defaultedOnCreate: "false"
1047
+ :name: OtherCity
1048
+ :custom: "false"
1049
+ :createable: "true"
1050
+ :updateable: "true"
1051
+ :digits: "0"
1052
+ :filterable: "true"
1053
+ :autoNumber: "false"
1054
+ - :nameField: "false"
1055
+ :label: Other State/Province
1056
+ :byteLength: "60"
1057
+ :restrictedPicklist: "false"
1058
+ :precision: "0"
1059
+ :length: "20"
1060
+ :calculated: "false"
1061
+ :type: string
1062
+ :soapType: xsd:string
1063
+ :scale: "0"
1064
+ :nillable: "true"
1065
+ :defaultedOnCreate: "false"
1066
+ :name: OtherState
1067
+ :custom: "false"
1068
+ :createable: "true"
1069
+ :updateable: "true"
1070
+ :digits: "0"
1071
+ :filterable: "true"
1072
+ :autoNumber: "false"
1073
+ - :nameField: "false"
1074
+ :label: Other Zip/Postal Code
1075
+ :byteLength: "60"
1076
+ :restrictedPicklist: "false"
1077
+ :precision: "0"
1078
+ :length: "20"
1079
+ :calculated: "false"
1080
+ :type: string
1081
+ :soapType: xsd:string
1082
+ :scale: "0"
1083
+ :nillable: "true"
1084
+ :defaultedOnCreate: "false"
1085
+ :name: OtherPostalCode
1086
+ :custom: "false"
1087
+ :createable: "true"
1088
+ :updateable: "true"
1089
+ :digits: "0"
1090
+ :filterable: "true"
1091
+ :autoNumber: "false"
1092
+ - :nameField: "false"
1093
+ :label: Other Country
1094
+ :byteLength: "120"
1095
+ :restrictedPicklist: "false"
1096
+ :precision: "0"
1097
+ :length: "40"
1098
+ :calculated: "false"
1099
+ :type: string
1100
+ :soapType: xsd:string
1101
+ :scale: "0"
1102
+ :nillable: "true"
1103
+ :defaultedOnCreate: "false"
1104
+ :name: OtherCountry
1105
+ :custom: "false"
1106
+ :createable: "true"
1107
+ :updateable: "true"
1108
+ :digits: "0"
1109
+ :filterable: "true"
1110
+ :autoNumber: "false"
1111
+ - :nameField: "false"
1112
+ :label: Mailing Street
1113
+ :byteLength: "765"
1114
+ :restrictedPicklist: "false"
1115
+ :precision: "0"
1116
+ :length: "255"
1117
+ :calculated: "false"
1118
+ :type: textarea
1119
+ :soapType: xsd:string
1120
+ :scale: "0"
1121
+ :nillable: "true"
1122
+ :defaultedOnCreate: "false"
1123
+ :name: MailingStreet
1124
+ :custom: "false"
1125
+ :createable: "true"
1126
+ :updateable: "true"
1127
+ :digits: "0"
1128
+ :filterable: "true"
1129
+ :autoNumber: "false"
1130
+ - :nameField: "false"
1131
+ :label: Mailing City
1132
+ :byteLength: "120"
1133
+ :restrictedPicklist: "false"
1134
+ :precision: "0"
1135
+ :length: "40"
1136
+ :calculated: "false"
1137
+ :type: string
1138
+ :soapType: xsd:string
1139
+ :scale: "0"
1140
+ :nillable: "true"
1141
+ :defaultedOnCreate: "false"
1142
+ :name: MailingCity
1143
+ :custom: "false"
1144
+ :createable: "true"
1145
+ :updateable: "true"
1146
+ :digits: "0"
1147
+ :filterable: "true"
1148
+ :autoNumber: "false"
1149
+ - :nameField: "false"
1150
+ :label: Mailing State/Province
1151
+ :byteLength: "60"
1152
+ :restrictedPicklist: "false"
1153
+ :precision: "0"
1154
+ :length: "20"
1155
+ :calculated: "false"
1156
+ :type: string
1157
+ :soapType: xsd:string
1158
+ :scale: "0"
1159
+ :nillable: "true"
1160
+ :defaultedOnCreate: "false"
1161
+ :name: MailingState
1162
+ :custom: "false"
1163
+ :createable: "true"
1164
+ :updateable: "true"
1165
+ :digits: "0"
1166
+ :filterable: "true"
1167
+ :autoNumber: "false"
1168
+ - :nameField: "false"
1169
+ :label: Mailing Zip/Postal Code
1170
+ :byteLength: "60"
1171
+ :restrictedPicklist: "false"
1172
+ :precision: "0"
1173
+ :length: "20"
1174
+ :calculated: "false"
1175
+ :type: string
1176
+ :soapType: xsd:string
1177
+ :scale: "0"
1178
+ :nillable: "true"
1179
+ :defaultedOnCreate: "false"
1180
+ :name: MailingPostalCode
1181
+ :custom: "false"
1182
+ :createable: "true"
1183
+ :updateable: "true"
1184
+ :digits: "0"
1185
+ :filterable: "true"
1186
+ :autoNumber: "false"
1187
+ - :nameField: "false"
1188
+ :label: Mailing Country
1189
+ :byteLength: "120"
1190
+ :restrictedPicklist: "false"
1191
+ :precision: "0"
1192
+ :length: "40"
1193
+ :calculated: "false"
1194
+ :type: string
1195
+ :soapType: xsd:string
1196
+ :scale: "0"
1197
+ :nillable: "true"
1198
+ :defaultedOnCreate: "false"
1199
+ :name: MailingCountry
1200
+ :custom: "false"
1201
+ :createable: "true"
1202
+ :updateable: "true"
1203
+ :digits: "0"
1204
+ :filterable: "true"
1205
+ :autoNumber: "false"
1206
+ - :nameField: "false"
1207
+ :label: Business Phone
1208
+ :byteLength: "120"
1209
+ :restrictedPicklist: "false"
1210
+ :precision: "0"
1211
+ :length: "40"
1212
+ :calculated: "false"
1213
+ :type: phone
1214
+ :soapType: xsd:string
1215
+ :scale: "0"
1216
+ :nillable: "true"
1217
+ :defaultedOnCreate: "false"
1218
+ :name: Phone
1219
+ :custom: "false"
1220
+ :createable: "true"
1221
+ :updateable: "true"
1222
+ :digits: "0"
1223
+ :filterable: "true"
1224
+ :autoNumber: "false"
1225
+ - :nameField: "false"
1226
+ :label: Business Fax
1227
+ :byteLength: "120"
1228
+ :restrictedPicklist: "false"
1229
+ :precision: "0"
1230
+ :length: "40"
1231
+ :calculated: "false"
1232
+ :type: phone
1233
+ :soapType: xsd:string
1234
+ :scale: "0"
1235
+ :nillable: "true"
1236
+ :defaultedOnCreate: "false"
1237
+ :name: Fax
1238
+ :custom: "false"
1239
+ :createable: "true"
1240
+ :updateable: "true"
1241
+ :digits: "0"
1242
+ :filterable: "true"
1243
+ :autoNumber: "false"
1244
+ - :nameField: "false"
1245
+ :label: Mobile Phone
1246
+ :byteLength: "120"
1247
+ :restrictedPicklist: "false"
1248
+ :precision: "0"
1249
+ :length: "40"
1250
+ :calculated: "false"
1251
+ :type: phone
1252
+ :soapType: xsd:string
1253
+ :scale: "0"
1254
+ :nillable: "true"
1255
+ :defaultedOnCreate: "false"
1256
+ :name: MobilePhone
1257
+ :custom: "false"
1258
+ :createable: "true"
1259
+ :updateable: "true"
1260
+ :digits: "0"
1261
+ :filterable: "true"
1262
+ :autoNumber: "false"
1263
+ - :nameField: "false"
1264
+ :label: Home Phone
1265
+ :byteLength: "120"
1266
+ :restrictedPicklist: "false"
1267
+ :precision: "0"
1268
+ :length: "40"
1269
+ :calculated: "false"
1270
+ :type: phone
1271
+ :soapType: xsd:string
1272
+ :scale: "0"
1273
+ :nillable: "true"
1274
+ :defaultedOnCreate: "false"
1275
+ :name: HomePhone
1276
+ :custom: "false"
1277
+ :createable: "true"
1278
+ :updateable: "true"
1279
+ :digits: "0"
1280
+ :filterable: "true"
1281
+ :autoNumber: "false"
1282
+ - :nameField: "false"
1283
+ :label: Other Phone
1284
+ :byteLength: "120"
1285
+ :restrictedPicklist: "false"
1286
+ :precision: "0"
1287
+ :length: "40"
1288
+ :calculated: "false"
1289
+ :type: phone
1290
+ :soapType: xsd:string
1291
+ :scale: "0"
1292
+ :nillable: "true"
1293
+ :defaultedOnCreate: "false"
1294
+ :name: OtherPhone
1295
+ :custom: "false"
1296
+ :createable: "true"
1297
+ :updateable: "true"
1298
+ :digits: "0"
1299
+ :filterable: "true"
1300
+ :autoNumber: "false"
1301
+ - :nameField: "false"
1302
+ :label: Asst. Phone
1303
+ :byteLength: "120"
1304
+ :restrictedPicklist: "false"
1305
+ :precision: "0"
1306
+ :length: "40"
1307
+ :calculated: "false"
1308
+ :type: phone
1309
+ :soapType: xsd:string
1310
+ :scale: "0"
1311
+ :nillable: "true"
1312
+ :defaultedOnCreate: "false"
1313
+ :name: AssistantPhone
1314
+ :custom: "false"
1315
+ :createable: "true"
1316
+ :updateable: "true"
1317
+ :digits: "0"
1318
+ :filterable: "true"
1319
+ :autoNumber: "false"
1320
+ - :nameField: "false"
1321
+ :label: Reports To ID
1322
+ :byteLength: "18"
1323
+ :restrictedPicklist: "false"
1324
+ :precision: "0"
1325
+ :length: "18"
1326
+ :calculated: "false"
1327
+ :type: reference
1328
+ :soapType: tns:ID
1329
+ :scale: "0"
1330
+ :nillable: "true"
1331
+ :defaultedOnCreate: "false"
1332
+ :name: ReportsToId
1333
+ :custom: "false"
1334
+ :createable: "true"
1335
+ :updateable: "true"
1336
+ :digits: "0"
1337
+ :filterable: "true"
1338
+ :referenceTo: Contact
1339
+ :autoNumber: "false"
1340
+ - :nameField: "false"
1341
+ :label: Email Address
1342
+ :byteLength: "240"
1343
+ :restrictedPicklist: "false"
1344
+ :precision: "0"
1345
+ :length: "80"
1346
+ :calculated: "false"
1347
+ :type: email
1348
+ :soapType: xsd:string
1349
+ :scale: "0"
1350
+ :nillable: "true"
1351
+ :defaultedOnCreate: "false"
1352
+ :name: Email
1353
+ :custom: "false"
1354
+ :createable: "true"
1355
+ :updateable: "true"
1356
+ :digits: "0"
1357
+ :filterable: "true"
1358
+ :autoNumber: "false"
1359
+ - :nameField: "false"
1360
+ :label: Title
1361
+ :byteLength: "240"
1362
+ :restrictedPicklist: "false"
1363
+ :precision: "0"
1364
+ :length: "80"
1365
+ :calculated: "false"
1366
+ :type: string
1367
+ :soapType: xsd:string
1368
+ :scale: "0"
1369
+ :nillable: "true"
1370
+ :defaultedOnCreate: "false"
1371
+ :name: Title
1372
+ :custom: "false"
1373
+ :createable: "true"
1374
+ :updateable: "true"
1375
+ :digits: "0"
1376
+ :filterable: "true"
1377
+ :autoNumber: "false"
1378
+ - :nameField: "false"
1379
+ :label: Department
1380
+ :byteLength: "240"
1381
+ :restrictedPicklist: "false"
1382
+ :precision: "0"
1383
+ :length: "80"
1384
+ :calculated: "false"
1385
+ :type: string
1386
+ :soapType: xsd:string
1387
+ :scale: "0"
1388
+ :nillable: "true"
1389
+ :defaultedOnCreate: "false"
1390
+ :name: Department
1391
+ :custom: "false"
1392
+ :createable: "true"
1393
+ :updateable: "true"
1394
+ :digits: "0"
1395
+ :filterable: "true"
1396
+ :autoNumber: "false"
1397
+ - :nameField: "false"
1398
+ :label: Assistant's Name
1399
+ :byteLength: "120"
1400
+ :restrictedPicklist: "false"
1401
+ :precision: "0"
1402
+ :length: "40"
1403
+ :calculated: "false"
1404
+ :type: string
1405
+ :soapType: xsd:string
1406
+ :scale: "0"
1407
+ :nillable: "true"
1408
+ :defaultedOnCreate: "false"
1409
+ :name: AssistantName
1410
+ :custom: "false"
1411
+ :createable: "true"
1412
+ :updateable: "true"
1413
+ :digits: "0"
1414
+ :filterable: "true"
1415
+ :autoNumber: "false"
1416
+ - :nameField: "false"
1417
+ :label: Lead Source
1418
+ :byteLength: "120"
1419
+ :restrictedPicklist: "false"
1420
+ :precision: "0"
1421
+ :length: "40"
1422
+ :calculated: "false"
1423
+ :type: picklist
1424
+ :soapType: xsd:string
1425
+ :scale: "0"
1426
+ :nillable: "true"
1427
+ :defaultedOnCreate: "false"
1428
+ :picklistValues:
1429
+ - :label: Web
1430
+ :value: Web
1431
+ :defaultValue: "false"
1432
+ :active: "true"
1433
+ - :label: Phone Inquiry
1434
+ :value: Phone Inquiry
1435
+ :defaultValue: "false"
1436
+ :active: "true"
1437
+ - :label: Partner Referral
1438
+ :value: Partner Referral
1439
+ :defaultValue: "false"
1440
+ :active: "true"
1441
+ - :label: Purchased List
1442
+ :value: Purchased List
1443
+ :defaultValue: "false"
1444
+ :active: "true"
1445
+ - :label: Other
1446
+ :value: Other
1447
+ :defaultValue: "false"
1448
+ :active: "true"
1449
+ :name: LeadSource
1450
+ :custom: "false"
1451
+ :createable: "true"
1452
+ :updateable: "true"
1453
+ :digits: "0"
1454
+ :filterable: "true"
1455
+ :autoNumber: "false"
1456
+ - :nameField: "false"
1457
+ :label: Birthdate
1458
+ :byteLength: "0"
1459
+ :restrictedPicklist: "false"
1460
+ :precision: "0"
1461
+ :length: "0"
1462
+ :calculated: "false"
1463
+ :type: date
1464
+ :soapType: xsd:dateTime
1465
+ :scale: "0"
1466
+ :nillable: "true"
1467
+ :defaultedOnCreate: "false"
1468
+ :name: Birthdate
1469
+ :custom: "false"
1470
+ :createable: "true"
1471
+ :updateable: "true"
1472
+ :digits: "0"
1473
+ :filterable: "true"
1474
+ :autoNumber: "false"
1475
+ - :nameField: "false"
1476
+ :label: Contact Description
1477
+ :byteLength: "32000"
1478
+ :restrictedPicklist: "false"
1479
+ :precision: "0"
1480
+ :length: "32000"
1481
+ :calculated: "false"
1482
+ :type: textarea
1483
+ :soapType: xsd:string
1484
+ :scale: "0"
1485
+ :nillable: "true"
1486
+ :defaultedOnCreate: "false"
1487
+ :name: Description
1488
+ :custom: "false"
1489
+ :createable: "true"
1490
+ :updateable: "true"
1491
+ :digits: "0"
1492
+ :filterable: "false"
1493
+ :autoNumber: "false"
1494
+ - :nameField: "false"
1495
+ :label: Owner ID
1496
+ :byteLength: "18"
1497
+ :restrictedPicklist: "false"
1498
+ :precision: "0"
1499
+ :length: "18"
1500
+ :calculated: "false"
1501
+ :type: reference
1502
+ :soapType: tns:ID
1503
+ :scale: "0"
1504
+ :nillable: "false"
1505
+ :defaultedOnCreate: "true"
1506
+ :name: OwnerId
1507
+ :custom: "false"
1508
+ :createable: "true"
1509
+ :updateable: "true"
1510
+ :digits: "0"
1511
+ :filterable: "true"
1512
+ :referenceTo: User
1513
+ :autoNumber: "false"
1514
+ - :nameField: "false"
1515
+ :label: Created Date
1516
+ :byteLength: "0"
1517
+ :restrictedPicklist: "false"
1518
+ :precision: "0"
1519
+ :length: "0"
1520
+ :calculated: "false"
1521
+ :type: datetime
1522
+ :soapType: xsd:dateTime
1523
+ :scale: "0"
1524
+ :nillable: "false"
1525
+ :defaultedOnCreate: "true"
1526
+ :name: CreatedDate
1527
+ :custom: "false"
1528
+ :createable: "false"
1529
+ :updateable: "false"
1530
+ :digits: "0"
1531
+ :filterable: "true"
1532
+ :autoNumber: "false"
1533
+ - :nameField: "false"
1534
+ :label: Created By ID
1535
+ :byteLength: "18"
1536
+ :restrictedPicklist: "false"
1537
+ :precision: "0"
1538
+ :length: "18"
1539
+ :calculated: "false"
1540
+ :type: reference
1541
+ :soapType: tns:ID
1542
+ :scale: "0"
1543
+ :nillable: "false"
1544
+ :defaultedOnCreate: "true"
1545
+ :name: CreatedById
1546
+ :custom: "false"
1547
+ :createable: "false"
1548
+ :updateable: "false"
1549
+ :digits: "0"
1550
+ :filterable: "true"
1551
+ :referenceTo: User
1552
+ :autoNumber: "false"
1553
+ - :nameField: "false"
1554
+ :label: Last Modified Date
1555
+ :byteLength: "0"
1556
+ :restrictedPicklist: "false"
1557
+ :precision: "0"
1558
+ :length: "0"
1559
+ :calculated: "false"
1560
+ :type: datetime
1561
+ :soapType: xsd:dateTime
1562
+ :scale: "0"
1563
+ :nillable: "false"
1564
+ :defaultedOnCreate: "true"
1565
+ :name: LastModifiedDate
1566
+ :custom: "false"
1567
+ :createable: "false"
1568
+ :updateable: "false"
1569
+ :digits: "0"
1570
+ :filterable: "true"
1571
+ :autoNumber: "false"
1572
+ - :nameField: "false"
1573
+ :label: Last Modified By ID
1574
+ :byteLength: "18"
1575
+ :restrictedPicklist: "false"
1576
+ :precision: "0"
1577
+ :length: "18"
1578
+ :calculated: "false"
1579
+ :type: reference
1580
+ :soapType: tns:ID
1581
+ :scale: "0"
1582
+ :nillable: "false"
1583
+ :defaultedOnCreate: "true"
1584
+ :name: LastModifiedById
1585
+ :custom: "false"
1586
+ :createable: "false"
1587
+ :updateable: "false"
1588
+ :digits: "0"
1589
+ :filterable: "true"
1590
+ :referenceTo: User
1591
+ :autoNumber: "false"
1592
+ - :nameField: "false"
1593
+ :label: System Modstamp
1594
+ :byteLength: "0"
1595
+ :restrictedPicklist: "false"
1596
+ :precision: "0"
1597
+ :length: "0"
1598
+ :calculated: "false"
1599
+ :type: datetime
1600
+ :soapType: xsd:dateTime
1601
+ :scale: "0"
1602
+ :nillable: "false"
1603
+ :defaultedOnCreate: "true"
1604
+ :name: SystemModstamp
1605
+ :custom: "false"
1606
+ :createable: "false"
1607
+ :updateable: "false"
1608
+ :digits: "0"
1609
+ :filterable: "true"
1610
+ :autoNumber: "false"
1611
+ - :nameField: "false"
1612
+ :label: Last Stay-in-Touch Request Date
1613
+ :byteLength: "0"
1614
+ :restrictedPicklist: "false"
1615
+ :precision: "0"
1616
+ :length: "0"
1617
+ :calculated: "false"
1618
+ :type: datetime
1619
+ :soapType: xsd:dateTime
1620
+ :scale: "0"
1621
+ :nillable: "true"
1622
+ :defaultedOnCreate: "false"
1623
+ :name: LastCURequestDate
1624
+ :custom: "false"
1625
+ :createable: "false"
1626
+ :updateable: "false"
1627
+ :digits: "0"
1628
+ :filterable: "true"
1629
+ :autoNumber: "false"
1630
+ - :nameField: "false"
1631
+ :label: Last Stay-in-Touch Save Date
1632
+ :byteLength: "0"
1633
+ :restrictedPicklist: "false"
1634
+ :precision: "0"
1635
+ :length: "0"
1636
+ :calculated: "false"
1637
+ :type: datetime
1638
+ :soapType: xsd:dateTime
1639
+ :scale: "0"
1640
+ :nillable: "true"
1641
+ :defaultedOnCreate: "false"
1642
+ :name: LastCUUpdateDate
1643
+ :custom: "false"
1644
+ :createable: "false"
1645
+ :updateable: "false"
1646
+ :digits: "0"
1647
+ :filterable: "true"
1648
+ :autoNumber: "false"
1649
+ - :nameField: "false"
1650
+ :label: Level
1651
+ :byteLength: "765"
1652
+ :restrictedPicklist: "false"
1653
+ :precision: "0"
1654
+ :length: "255"
1655
+ :calculated: "false"
1656
+ :type: picklist
1657
+ :soapType: xsd:string
1658
+ :scale: "0"
1659
+ :nillable: "true"
1660
+ :defaultedOnCreate: "false"
1661
+ :picklistValues:
1662
+ - :label: Primary
1663
+ :value: Primary
1664
+ :defaultValue: "false"
1665
+ :active: "true"
1666
+ - :label: Tertiary
1667
+ :value: Tertiary
1668
+ :defaultValue: "false"
1669
+ :active: "true"
1670
+ :name: Level__c
1671
+ :custom: "true"
1672
+ :createable: "true"
1673
+ :updateable: "true"
1674
+ :digits: "0"
1675
+ :filterable: "true"
1676
+ :autoNumber: "false"
1677
+ - :nameField: "false"
1678
+ :label: Languages
1679
+ :byteLength: "300"
1680
+ :restrictedPicklist: "false"
1681
+ :precision: "0"
1682
+ :length: "100"
1683
+ :calculated: "false"
1684
+ :type: string
1685
+ :soapType: xsd:string
1686
+ :scale: "0"
1687
+ :nillable: "true"
1688
+ :defaultedOnCreate: "false"
1689
+ :name: Languages__c
1690
+ :custom: "true"
1691
+ :createable: "true"
1692
+ :updateable: "true"
1693
+ :digits: "0"
1694
+ :filterable: "true"
1695
+ :autoNumber: "false"
1696
+ - :nameField: "false"
1697
+ :label: CustomUserRel
1698
+ :byteLength: "18"
1699
+ :restrictedPicklist: "false"
1700
+ :precision: "0"
1701
+ :length: "18"
1702
+ :calculated: "false"
1703
+ :type: reference
1704
+ :soapType: tns:ID
1705
+ :scale: "0"
1706
+ :nillable: "true"
1707
+ :defaultedOnCreate: "false"
1708
+ :name: CustomUserRel__c
1709
+ :custom: "true"
1710
+ :createable: "true"
1711
+ :updateable: "true"
1712
+ :digits: "0"
1713
+ :filterable: "true"
1714
+ :referenceTo: User
1715
+ :autoNumber: "false"
1716
+ - :nameField: "false"
1717
+ :label: f2
1718
+ :byteLength: "0"
1719
+ :restrictedPicklist: "false"
1720
+ :precision: "18"
1721
+ :length: "0"
1722
+ :calculated: "true"
1723
+ :type: double
1724
+ :soapType: xsd:double
1725
+ :scale: "2"
1726
+ :nillable: "true"
1727
+ :defaultedOnCreate: "false"
1728
+ :name: f2__c
1729
+ :custom: "true"
1730
+ :createable: "false"
1731
+ :updateable: "false"
1732
+ :digits: "0"
1733
+ :filterable: "true"
1734
+ :autoNumber: "false"
1735
+ - :nameField: "false"
1736
+ :label: f1
1737
+ :byteLength: "0"
1738
+ :restrictedPicklist: "false"
1739
+ :precision: "18"
1740
+ :length: "0"
1741
+ :calculated: "true"
1742
+ :type: double
1743
+ :soapType: xsd:double
1744
+ :scale: "2"
1745
+ :nillable: "true"
1746
+ :defaultedOnCreate: "false"
1747
+ :name: f1__c
1748
+ :custom: "true"
1749
+ :createable: "false"
1750
+ :updateable: "false"
1751
+ :digits: "0"
1752
+ :filterable: "true"
1753
+ :autoNumber: "false"
1754
+ :layoutable: "true"
1755
+ :urlDetail: https://na1.salesforce.com/{ID}
1756
+ :queryable: "true"
1757
+ :urlEdit: https://na1.salesforce.com/{ID}/e
1758
+ :name: Contact
1759
+ :custom: "false"
1760
+ :createable: "true"
1761
+ :activateable: "false"
1762
+ :updateable: "true"
1763
+ :replicateable: "true"
1764
+ :urlNew: https://na1.salesforce.com/003/e
1765
+ :deletable: "true"
1766
+ :retrieveable: "true"
1767
+ :keyPrefix: "003"
1768
+ login(username::password:): !ruby/object:RForce::SoapResponse
1769
+ parsed:
1770
+ :loginResponse:
1771
+ :result:
1772
+ :userInfo:
1773
+ :userTimeZone: America/Los_Angeles
1774
+ :userDefaultCurrencyIsoCode:
1775
+ :userUiSkin: Theme2
1776
+ :accessibilityMode: "false"
1777
+ :userEmail: dchasman@salesforce.com
1778
+ :currencySymbol: $
1779
+ :userFullName: Doug Chasmanii
1780
+ :organizationId: 00D3000000010YJEAY
1781
+ :userLanguage: en_US
1782
+ :organizationMultiCurrency: "false"
1783
+ :userLocale: en_US
1784
+ :userId: 00530000000hYFzAAM
1785
+ :organizationName: dutchforce.com
1786
+ :sessionId: syBnvr6KItfWijWqEtGMq0iNdbJgM67FlCX5KuutxiMHayEK5Rg6kqEOSfpxMQD0E0fV0AcyJ8xpvFAIkp7ZkWpYnKO9AsNCSeX5jsUoLXQ=
1787
+ :serverUrl: https://na1-api.salesforce.com/services/Soap/u/7.0
1788
+ :passwordExpired: "false"
1789
+ :userId: 00530000000hYFzAAM