fruit_to_lime 2.1.1 → 2.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,4 @@
1
+ module FruitToLime
2
+ class AlreadyAddedError < StandardError
3
+ end
4
+ end
@@ -21,10 +21,15 @@ module FruitToLime
21
21
  "ClassSettings"
22
22
  end
23
23
 
24
+ # Set custom field. If there is already an existing custom field, then it is overwritten.
24
25
  def set_custom_field(obj)
25
26
  @custom_fields = [] if @custom_fields==nil
26
27
 
27
- field = CustomField.new(obj)
28
+ if obj.is_a?(CustomField)
29
+ field = obj
30
+ else
31
+ field = CustomField.new(obj)
32
+ end
28
33
 
29
34
  index = @custom_fields.find_index do |custom_field|
30
35
  custom_field.same_as?(field)
@@ -38,13 +43,28 @@ module FruitToLime
38
43
  return field
39
44
  end
40
45
 
46
+ # Add custom field. If there is already an existing custom field, then an AlreadyAddedError will be raised.
41
47
  def add_custom_field(obj)
42
48
  @custom_fields = [] if @custom_fields==nil
43
49
 
44
- field = CustomField.new(obj)
50
+ if obj.is_a?(CustomField)
51
+ field = obj
52
+ else
53
+ field = CustomField.new(obj)
54
+ end
55
+
56
+ index = @custom_fields.find_index do |custom_field|
57
+ custom_field.same_as?(field)
58
+ end
59
+
60
+ if index
61
+ raise AlreadyAddedError, "Already added a custom same as #{obj}"
62
+ end
63
+
45
64
  @custom_fields.push field
46
65
 
47
66
  return field
48
67
  end
68
+
49
69
  end
50
70
  end
@@ -1,7 +1,7 @@
1
1
  module FruitToLime
2
2
  class Coworker
3
3
  include SerializeHelper
4
- attr_accessor :id, :integration_id, :first_name, :last_name, :email, :direct_phone_number,
4
+ attr_accessor :id, :integration_id, :email, :first_name, :last_name, :direct_phone_number,
5
5
  :mobile_phone_number, :home_phone_number
6
6
 
7
7
  def initialize(opt = nil)
@@ -15,7 +15,7 @@ module FruitToLime
15
15
 
16
16
  def serialize_variables
17
17
  [
18
- :id, :integration_id, :first_name, :last_name, :email,
18
+ :id, :integration_id, :email, :first_name, :last_name,
19
19
  :direct_phone_number, :mobile_phone_number, :home_phone_number
20
20
  ].map {|p| { :id => p, :type => :string } }
21
21
  end
@@ -40,8 +40,6 @@ module FruitToLime
40
40
 
41
41
  if that.is_a? Coworker
42
42
  return @integration_id == that.integration_id
43
- elsif that.is_a? String
44
- return @integration_id == that
45
43
  end
46
44
 
47
45
  return false
@@ -30,9 +30,5 @@ module FruitToLime
30
30
  def serialize_name
31
31
  "Note"
32
32
  end
33
-
34
- # def with_organization
35
- # yield org
36
- # end
37
33
  end
38
34
  end
@@ -47,28 +47,60 @@ module FruitToLime
47
47
 
48
48
  if that.is_a? Organization
49
49
  return @integration_id == that.integration_id
50
- elsif that.is_a? String
51
- return @integration_id == that
52
50
  end
53
51
 
54
52
  return false
55
53
  end
56
54
 
55
+ # @example Set city of postal address to 'Lund'
56
+ # o.with_postal_address do |addr|
57
+ # addr.city = "Lund"
58
+ # end
59
+ # @see Address address
57
60
  def with_postal_address
58
- @postal_address = Address.new
61
+ @postal_address = Address.new if @postal_address == nil
59
62
  yield @postal_address
60
63
  end
61
64
 
65
+ # @example Set city of visit address to 'Lund'
66
+ # o.with_visit_address do |addr|
67
+ # addr.city = "Lund"
68
+ # end
69
+ # @see Address address
62
70
  def with_visit_address
63
- @visit_address = Address.new
71
+ @visit_address = Address.new if @visit_address == nil
64
72
  yield @visit_address
65
73
  end
66
74
 
75
+ # @example Set the source to par id 4653
76
+ # o.with_source do |source|
77
+ # source.par_se('4653')
78
+ # end
79
+ # @see ReferenceToSource source
67
80
  def with_source
68
- @source = ReferenceToSource.new
81
+ @source = ReferenceToSource.new if @source == nil
69
82
  yield @source
70
83
  end
71
84
 
85
+ # @example Set the responsible coworker of the organization to the coworker with integration id 943
86
+ # o.with_responsible_coworker do |responsible_coworker|
87
+ # responsible_coworker.integration_id = "943"
88
+ # end
89
+ # @see CoworkerReference responsible_coworker
90
+ def with_responsible_coworker
91
+ @responsible_coworker = CoworkerReference.new if @responsible_coworker==nil
92
+ yield @responsible_coworker
93
+ end
94
+
95
+ # @example Add an employee and then add additional info to that employee
96
+ # employee = o.add_employee({
97
+ # :integration_id => "79654",
98
+ # :first_name => "Peter",
99
+ # :last_name => "Wilhelmsson"
100
+ # })
101
+ # employee.direct_phone_number = '+234234234'
102
+ # employee.currently_employed = true
103
+ # @see Person employee
72
104
  def add_employee(val)
73
105
  @employees = [] if @employees == nil
74
106
  person = if val.is_a? Person then val else Person.new(val) end
@@ -76,6 +108,8 @@ module FruitToLime
76
108
  person
77
109
  end
78
110
 
111
+ # TODO! Remove, it's obsolete
112
+ # @!visibility private
79
113
  def add_responsible_coworker(val)
80
114
  coworker = if val.is_a? CoworkerReference then val else CoworkerReference.new(val) end
81
115
  @responsible_coworker = coworker
@@ -34,14 +34,23 @@ module FruitToLime
34
34
  end
35
35
  end
36
36
  end
37
-
37
+ # @example Set city of postal address to 'Lund'
38
+ # p.with_postal_address do |addr|
39
+ # addr.city = "Lund"
40
+ # end
41
+ # @see Address address
38
42
  def with_postal_address
39
- @postal_address = Address.new
43
+ @postal_address = Address.new if @postal_address == nil
40
44
  yield @postal_address
41
45
  end
42
46
 
47
+ # @example Set the source to par id 4653
48
+ # p.with_source do |source|
49
+ # source.par_se('4653')
50
+ # end
51
+ # @see ReferenceToSource source
43
52
  def with_source
44
- @source = ReferenceToSource.new
53
+ @source = ReferenceToSource.new if @source == nil
45
54
  yield @source
46
55
  end
47
56
 
@@ -36,20 +36,53 @@ module FruitToLime
36
36
  end
37
37
 
38
38
  # Adds the specifed coworker object to the model.
39
+ # @example Add a coworker from a hash
40
+ # rootmodel.add_coworker({
41
+ # :integration_id=>"123",
42
+ # :first_name=>"Kalle",
43
+ # :last_name=>"Anka",
44
+ # :email=>"kalle.anka@vonanka.com"
45
+ # })
46
+ #
47
+ # @example Add a coworker from a new coworker
48
+ # coworker = FruitToLime::Coworker.new
49
+ # coworker.integration_id = "123"
50
+ # coworker.first_name="Kalle"
51
+ # coworker.last_name="Anka"
52
+ # coworker.email = "kalle.anka@vonanka.com"
53
+ # rootmodel.add_coworker(coworker)
54
+ #
55
+ # @example If you want to keep adding coworkers and dont care about duplicates not being added
56
+ # begin
57
+ # rootmodel.add_coworker(coworker)
58
+ # rescue FruitToLime::AlreadyAddedError
59
+ # puts "Warning: already added coworker"
60
+ # end
61
+ # @see Coworker
39
62
  def add_coworker(coworker)
40
63
  @coworkers = [] if @coworkers == nil
41
64
 
42
- if coworker != nil && coworker.is_a?(Coworker) && !@coworkers.include?(coworker)
43
- @coworkers.push(coworker)
65
+ if coworker == nil
66
+ raise "Missing coworker to add!"
44
67
  end
68
+
69
+ coworker = Coworker.new(coworker) if !coworker.is_a?(Coworker)
70
+
71
+ if find_coworker_by_integration_id(coworker.integration_id)!=nil
72
+ raise AlreadyAddedError, "Already added a coworker with integration_id #{coworker.integration_id}"
73
+ end
74
+
75
+ @coworkers.push(coworker)
45
76
  end
46
77
 
78
+ # TODO! Remove, it's obsolete
79
+ # @!visibility private
47
80
  def add_note(text)
48
81
  @notes = [] if @notes == nil
49
82
  @notes.push(if text.is_a? Note then text else Note.new(text) end)
50
83
  end
51
84
 
52
- def with_note
85
+ def with_new_note
53
86
  @notes = [] if @notes == nil
54
87
 
55
88
  note = Note.new
@@ -59,13 +92,13 @@ module FruitToLime
59
92
 
60
93
  def find_coworker_by_integration_id(integration_id)
61
94
  return @coworkers.find do |coworker|
62
- coworker == integration_id
95
+ coworker.integration_id == integration_id
63
96
  end
64
97
  end
65
98
 
66
99
  def find_organization_by_integration_id(integration_id)
67
100
  return @organizations.find do |organization|
68
- organization == integration_id
101
+ organization.integration_id == integration_id
69
102
  end
70
103
  end
71
104
 
@@ -107,7 +140,9 @@ module FruitToLime
107
140
 
108
141
  # returns all items from the object array with duplicate keys.
109
142
  # To get all organizations with the same integration_id use
110
- # `get_duplicates(organizations, {|org| org.integration_id})`
143
+ # @example Get all the organization duplicates with the same integration id
144
+ # rm.get_duplicates(rm.organizations, {|org| org.integration_id})
145
+ #
111
146
  def get_duplicates(objects, &key)
112
147
  uniq_items = objects.uniq {|item| key.call(item)}.compact
113
148
 
@@ -4,14 +4,38 @@ module FruitToLime
4
4
  include SerializeHelper
5
5
  attr_reader :organization, :person, :deal
6
6
 
7
+ # @example Add custom fields available for organization
8
+ # rootmodel.settings.with_organization do |organization_settings|
9
+ # organization_settings.set_custom_field({:integration_id=>"link_to_bi_system", :title=>"Link to BI system"})
10
+ # organization_settings.set_custom_field({:integration_id=>"yield_quota", :title=>"Yield quota"})
11
+ # end
12
+ # @see ClassSettings
13
+ # @see CustomField
14
+ # @see RootModel
7
15
  def with_organization
8
16
  @organization = ClassSettings.new if @organization ==nil
9
17
  yield @organization
10
18
  end
19
+
20
+ # @example Add custom fields available for person
21
+ # rootmodel.settings.with_person do |person_settings|
22
+ # person_settings.set_custom_field({:integration_id=>"link_to_bi_system", :title=>"Link to BI system"})
23
+ # end
24
+ # @see ClassSettings
25
+ # @see CustomField
26
+ # @see RootModel
11
27
  def with_person
12
28
  @person = ClassSettings.new if @person ==nil
13
29
  yield @person
14
30
  end
31
+
32
+ # @example Add custom fields available for deal
33
+ # rootmodel.settings.with_deal do |deal_settings|
34
+ # deal_settings.set_custom_field({:integration_id=>"link_to_bi_system", :title=>"Link to BI system"})
35
+ # end
36
+ # @see ClassSettings
37
+ # @see CustomField
38
+ # @see RootModel
15
39
  def with_deal
16
40
  @deal = ClassSettings.new if @deal ==nil
17
41
  yield @deal
data/lib/fruit_to_lime.rb CHANGED
@@ -3,7 +3,8 @@ module FruitToLime
3
3
  def self.require_all_in(folder)
4
4
  Dir.glob(File.join( File.dirname(File.absolute_path(__FILE__)),folder), &method(:require))
5
5
  end
6
-
6
+
7
+ require 'fruit_to_lime/errors'
7
8
  require 'fruit_to_lime/serialize_helper'
8
9
  require 'fruit_to_lime/model_helpers'
9
10
  FruitToLime::require_all_in 'fruit_to_lime/model/*.rb'
@@ -0,0 +1,26 @@
1
+ require "spec_helper"
2
+ require 'fruit_to_lime'
3
+
4
+ describe "ClassSettings" do
5
+ let(:class_settings) {
6
+ FruitToLime::ClassSettings.new
7
+ }
8
+
9
+ it "can set custom field and if there is already an existing custom field, then it is overwritten." do
10
+ class_settings.set_custom_field({:integration_id=>"link_to_bi_system", :title=>"Link to BI system"})
11
+ class_settings.set_custom_field({:integration_id=>"link_to_bi_system", :title=>"Link to BI system 2"})
12
+ class_settings.custom_fields.length.should eq 1
13
+ class_settings.custom_fields[0].title.should eq "Link to BI system 2"
14
+ end
15
+
16
+ it "can add custom field and if there is already an existing custom field, then an AlreadyAddedError will be raised (and nothing is added)." do
17
+ class_settings.add_custom_field({:integration_id=>"link_to_bi_system", :title=>"Link to BI system"})
18
+ expect {
19
+ class_settings.add_custom_field({:integration_id=>"link_to_bi_system", :title=>"Link to BI system 2"})
20
+ }.to raise_error(FruitToLime::AlreadyAddedError)
21
+ class_settings.custom_fields.length.should eq 1
22
+ class_settings.custom_fields[0].title.should eq "Link to BI system"
23
+ end
24
+
25
+ end
26
+
@@ -12,4 +12,18 @@ describe FruitToLime::CsvHelper do
12
12
  1;Bj\u{00F6}rk")
13
13
  v.should include({"id"=>"1","navn"=>"Bj\u{00F6}rk"})
14
14
  end
15
+ it "should handle escaped newlines" do
16
+ v = FruitToLime::CsvHelper.text_to_hashes("id;navn
17
+ 1;\"Bj\u{00F6}rk
18
+ And a new line\"")
19
+ v.should include({"id"=>"1","navn"=>"Bj\u{00F6}rk
20
+ And a new line"})
21
+ end
22
+ it "should handle escaped newlines with ',' as delim" do
23
+ v = FruitToLime::CsvHelper.text_to_hashes("id,navn
24
+ 1,\"Bj\u{00F6}rk
25
+ And a new line\"")
26
+ v.should include({"id"=>"1","navn"=>"Bj\u{00F6}rk
27
+ And a new line"})
28
+ end
15
29
  end
@@ -11,6 +11,12 @@ describe FruitToLime::SerializeHelper do
11
11
  s.set_custom_field({:integration_id=>"2", :title=>"cf title"})
12
12
  s.set_custom_field({:integration_id=>"3", :title=>"cf title2"})
13
13
  end
14
+ i.add_coworker({
15
+ :integration_id=>"123",
16
+ :first_name=>"Kalle",
17
+ :last_name=>"Anka",
18
+ :email=>"kalle.anka@vonanka.com"
19
+ })
14
20
  o = FruitToLime::Organization.new
15
21
  o.name = "Ankeborgs bibliotek"
16
22
  o.with_source do |source|
@@ -27,9 +33,9 @@ describe FruitToLime::SerializeHelper do
27
33
  o.with_visit_address do |addr|
28
34
  addr.city = "Gaaseborg"
29
35
  end
30
- o.add_responsible_coworker({
31
- :integration_id => "1"
32
- })
36
+ o.with_responsible_coworker do |coworker|
37
+ coworker.integration_id = "1"
38
+ end
33
39
  emp = o.add_employee({
34
40
  :integration_id => "1",
35
41
  :first_name => "Kalle",
@@ -0,0 +1,58 @@
1
+ require "spec_helper"
2
+ require 'fruit_to_lime'
3
+
4
+ describe "RootModel" do
5
+ let(:rootmodel) {
6
+ FruitToLime::RootModel.new
7
+ }
8
+
9
+ it "will contain integration coworker by default" do
10
+ rootmodel.find_coworker_by_integration_id("import").first_name.should eq "Import"
11
+ rootmodel.coworkers.length.should eq 1
12
+ end
13
+
14
+
15
+ it "can add a coworker from a hash" do
16
+ rootmodel.add_coworker({
17
+ :integration_id=>"123key",
18
+ :first_name=>"Kalle",
19
+ :last_name=>"Anka",
20
+ :email=>"kalle.anka@vonanka.com"
21
+ })
22
+ rootmodel.find_coworker_by_integration_id("123key").first_name.should eq "Kalle"
23
+ rootmodel.coworkers.length.should eq 2
24
+ end
25
+
26
+ it "can add a coworker from a new coworker" do
27
+ coworker = FruitToLime::Coworker.new
28
+ coworker.integration_id = "123key"
29
+ coworker.first_name="Kalle"
30
+ coworker.last_name="Anka"
31
+ coworker.email = "kalle.anka@vonanka.com"
32
+ rootmodel.add_coworker(coworker)
33
+ rootmodel.find_coworker_by_integration_id("123key").first_name.should eq "Kalle"
34
+ rootmodel.coworkers.length.should eq 2
35
+ end
36
+
37
+ it "will not add a new coworker when the coworker is already added (same integration id)" do
38
+ rootmodel.add_coworker({
39
+ :integration_id=>"123key",
40
+ :first_name=>"Kalle",
41
+ :last_name=>"Anka",
42
+ :email=>"kalle.anka@vonanka.com"
43
+ })
44
+ rootmodel.coworkers.length.should eq 2
45
+ expect {
46
+ rootmodel.add_coworker({
47
+ :integration_id=>"123key",
48
+ :first_name=>"Knatte",
49
+ :last_name=>"Anka",
50
+ :email=>"knatte.anka@vonanka.com"
51
+ })
52
+ }.to raise_error(FruitToLime::AlreadyAddedError)
53
+ rootmodel.find_coworker_by_integration_id("123key").first_name.should eq "Kalle"
54
+ rootmodel.coworkers.length.should eq 2
55
+ end
56
+
57
+ end
58
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fruit_to_lime
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.1
4
+ version: 2.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2014-04-24 00:00:00.000000000 Z
14
+ date: 2014-04-30 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: iso_country_codes
@@ -136,6 +136,7 @@ extensions: []
136
136
  extra_rdoc_files: []
137
137
  files:
138
138
  - lib/fruit_to_lime/csv_helper.rb
139
+ - lib/fruit_to_lime/errors.rb
139
140
  - lib/fruit_to_lime/model/address.rb
140
141
  - lib/fruit_to_lime/model/class_settings.rb
141
142
  - lib/fruit_to_lime/model/coworker.rb
@@ -157,7 +158,6 @@ files:
157
158
  - lib/fruit_to_lime.rb
158
159
  - bin/fruit_to_lime
159
160
  - templates/csv/convert.rb
160
- - templates/csv/export.xml
161
161
  - templates/csv/Gemfile
162
162
  - templates/csv/lib/tomodel.rb
163
163
  - templates/csv/Rakefile.rb
@@ -181,12 +181,14 @@ files:
181
181
  - templates/sqlserver/spec/spec_helper.rb
182
182
  - templates/sqlserver/spec/tomodel_spec.rb
183
183
  - spec/address_spec.rb
184
+ - spec/class_settings_spec.rb
184
185
  - spec/custom_field_spec.rb
185
186
  - spec/helpers/csv_helper_spec.rb
186
187
  - spec/helpers/roo_helper_spec.rb
187
188
  - spec/helpers/serialize_helper_spec.rb
188
189
  - spec/helpers/xsd_validate_spec.rb
189
190
  - spec/person_spec.rb
191
+ - spec/rootmodel_spec.rb
190
192
  - spec/spec_helper.rb
191
193
  - spec/templating_spec.rb
192
194
  homepage:
@@ -215,11 +217,14 @@ specification_version: 3
215
217
  summary: Library to generate Lime Go xml import format
216
218
  test_files:
217
219
  - spec/address_spec.rb
220
+ - spec/class_settings_spec.rb
218
221
  - spec/custom_field_spec.rb
219
222
  - spec/helpers/csv_helper_spec.rb
220
223
  - spec/helpers/roo_helper_spec.rb
221
224
  - spec/helpers/serialize_helper_spec.rb
222
225
  - spec/helpers/xsd_validate_spec.rb
223
226
  - spec/person_spec.rb
227
+ - spec/rootmodel_spec.rb
224
228
  - spec/spec_helper.rb
225
229
  - spec/templating_spec.rb
230
+ has_rdoc:
@@ -1,152 +0,0 @@
1
- <GoImport Version='v2_0'
2
- ><Settings
3
- ><Organization
4
- ><CustomFields
5
- ><CustomField
6
- ><Title
7
- >Link to external system</Title
8
- ><Type
9
- >Link</Type
10
- ></CustomField
11
- ></CustomFields
12
- ></Organization
13
- ></Settings
14
- ><Coworkers
15
- ><Coworker
16
- ><IntegrationId
17
- >import</IntegrationId
18
- ><FirstName
19
- >Import</FirstName
20
- ></Coworker
21
- ><Coworker
22
- ><IntegrationId
23
- >666</IntegrationId
24
- ><FirstName
25
- >Evil</FirstName
26
- ><LastName
27
- >Elvis</LastName
28
- ><Email
29
- >t@e.com</Email
30
- ><DirectPhoneNumber
31
- >+46121212</DirectPhoneNumber
32
- ><MobilePhoneNumber
33
- >+46324234</MobilePhoneNumber
34
- ><HomePhoneNumber
35
- >+46234234</HomePhoneNumber
36
- ></Coworker
37
- ></Coworkers
38
- ><Organizations
39
- ><Organization
40
- ><IntegrationId
41
- >6</IntegrationId
42
- ><Name
43
- >Alfs Mjukvaruutveckling</Name
44
- ><OrganizationNumber
45
- >a number</OrganizationNumber
46
- ><PostalAddress
47
- ><Street
48
- >postal street</Street
49
- ><ZipCode
50
- >226 48</ZipCode
51
- ><City
52
- >LUND</City
53
- ></PostalAddress
54
- ><VisitAddress
55
- ><Street
56
- >visit street</Street
57
- ><ZipCode
58
- >visit zip</ZipCode
59
- ><City
60
- >visit city</City
61
- ></VisitAddress
62
- ><CentralPhoneNumber
63
- >0000</CentralPhoneNumber
64
- ><Email
65
- >email to organizaiton, not the person</Email
66
- ><WebSite
67
- >www.whatever.com</WebSite
68
- ><Employees
69
- ><Person
70
- ><IntegrationId
71
- >123</IntegrationId
72
- ><FirstName
73
- >Rune</FirstName
74
- ><LastName
75
- >Rebellion</LastName
76
- ><DirectPhoneNumber
77
- >+4611111</DirectPhoneNumber
78
- ><FaxPhoneNumber
79
- >+4623234234234</FaxPhoneNumber
80
- ><MobilePhoneNumber
81
- >+462321212</MobilePhoneNumber
82
- ><Email
83
- >x@y.com</Email
84
- ><AlternativeEmail
85
- >y@x.com</AlternativeEmail
86
- ><PostalAddress
87
- ><Street
88
- >postal street</Street
89
- ><ZipCode
90
- >226 48</ZipCode
91
- ><City
92
- >LUND</City
93
- ></PostalAddress
94
- ><CurrentlyEmployed
95
- >true</CurrentlyEmployed
96
- ></Person
97
- ></Employees
98
- ><CustomValues
99
- ><CustomValue
100
- ><Field
101
- >external_url</Field
102
- ><Value
103
- >http://something.com?key=6</Value
104
- ></CustomValue
105
- ></CustomValues
106
- ><Tags
107
- ><Tag
108
- >Imported</Tag
109
- ></Tags
110
- ><ResponsibleCoworker
111
- ><Heading
112
- >Evil Elvis</Heading
113
- ><IntegrationId
114
- >666</IntegrationId
115
- ></ResponsibleCoworker
116
- ></Organization
117
- ></Organizations
118
- ><Deals
119
- ><Deal
120
- ><IntegrationId
121
- >333</IntegrationId
122
- ><Name
123
- >Feta affären</Name
124
- ><Probability
125
- >50</Probability
126
- ><Value
127
- >10000</Value
128
- ><OfferDate
129
- >2013-12-01</OfferDate
130
- ><OrderDate
131
- >2014-01-05</OrderDate
132
- ><Customer
133
- ><IntegrationId
134
- >6</IntegrationId
135
- ><Heading
136
- >Alfs Mjukvaruutveckling</Heading
137
- ></Customer
138
- ><ResponsibleCoworker
139
- ><Heading
140
- >Evil Elvis</Heading
141
- ><IntegrationId
142
- >666</IntegrationId
143
- ></ResponsibleCoworker
144
- ><CustomerContact
145
- ><IntegrationId
146
- >123</IntegrationId
147
- ></CustomerContact
148
- ></Deal
149
- ></Deals
150
- ><Notes
151
- /></GoImport
152
- >