fruit_to_lime 2.6.3 → 2.7.0

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.
@@ -7,7 +7,13 @@ module FruitToLime
7
7
  [ :id, :integration_id ].map { |prop| {:id => prop, :type => :string} }
8
8
  end
9
9
 
10
- def initalize()
10
+ def initialize(opt = nil)
11
+ if opt != nil
12
+ serialize_variables.each do |var|
13
+ value = opt[var[:id]]
14
+ instance_variable_set("@" + var[:id].to_s, value) if value != nil
15
+ end
16
+ end
11
17
  end
12
18
 
13
19
  def to_s
@@ -23,7 +29,7 @@ module FruitToLime
23
29
  return nil
24
30
  elsif deal.is_a?(Deal)
25
31
  return deal.to_reference
26
- elsif person.is_a?(DealReference)
32
+ elsif deal.is_a?(DealReference)
27
33
  return deal
28
34
  end
29
35
  end
@@ -0,0 +1,51 @@
1
+ # encoding: utf-8
2
+ module FruitToLime
3
+ # This class is the container for all documents, ie links and
4
+ # files.
5
+ class Documents
6
+ # *** TODO: add files when supported by the backend.
7
+
8
+ include SerializeHelper
9
+
10
+ attr_accessor :links
11
+
12
+ def serialize_variables
13
+ [
14
+ {:id => :links, @type => :links}
15
+ ]
16
+ end
17
+
18
+ def serialize_name
19
+ "Documents"
20
+ end
21
+
22
+ def initialize
23
+ @links = []
24
+ end
25
+
26
+ def add_link(link)
27
+ @links = [] if @links == nil
28
+
29
+ if link.nil?
30
+ return nil
31
+ end
32
+
33
+ link = Link.new(link) if !link.is_a?(Link)
34
+
35
+ if (!link.integration_id.nil? && link.integration_id.length > 0) &&
36
+ find_link_by_integration_id(link.integration_id) != nil
37
+ raise AlreadyAddedError, "Already added a link with integration_id #{link.integration_id}"
38
+ end
39
+
40
+ @links.push(link)
41
+
42
+ return link
43
+ end
44
+
45
+ def find_link_by_integration_id(integration_id)
46
+ return @links.find do |link|
47
+ link.integration_id == integration_id
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,70 @@
1
+ module FruitToLime
2
+ class Link
3
+ include SerializeHelper
4
+ attr_accessor :id, :integration_id, :url, :name, :description
5
+
6
+ attr_reader :organization, :created_by, :deal
7
+
8
+ def initialize(opt = nil)
9
+ if !opt.nil?
10
+ serialize_variables.each do |myattr|
11
+ val = opt[myattr[:id]]
12
+ instance_variable_set("@" + myattr[:id].to_s, val) if val != nil
13
+ end
14
+ end
15
+ end
16
+
17
+ def serialize_name
18
+ "Link"
19
+ end
20
+
21
+ def serialize_variables
22
+ [ :id, :integration_id, :url, :name, :description ].map {
23
+ |p| {
24
+ :id => p,
25
+ :type => :string
26
+ }
27
+ } +
28
+ [
29
+ { :id => :created_by, :type => :coworker_reference },
30
+ { :id => :organization, :type => :organization_reference },
31
+ { :id => :deal, :type => :deal_reference }
32
+ ]
33
+ end
34
+
35
+ def organization=(org)
36
+ @organization = OrganizationReference.from_organization(org)
37
+ end
38
+
39
+ def deal=(deal)
40
+ @deal = DealReference.from_deal(deal)
41
+ end
42
+
43
+ def created_by=(coworker)
44
+ @created_by = CoworkerReference.from_coworker(coworker)
45
+ end
46
+
47
+ def validate
48
+ error = String.new
49
+
50
+ if @url.nil? || @url.empty?
51
+ error = "Url is required for link\n"
52
+ end
53
+
54
+ if @created_by.nil?
55
+ error = "#{error}Created_by is required for link\n"
56
+ end
57
+
58
+ if @organization.nil? && @deal.nil?
59
+ error = "#{error}A link must have either an organization or a deal\n"
60
+ end
61
+
62
+ if !@organization.nil? && !@deal.nil?
63
+ error = "#{error}A link can't be attached to both an organization and a deal"
64
+ end
65
+
66
+ return error
67
+ end
68
+ end
69
+ end
70
+
@@ -7,6 +7,9 @@ module FruitToLime
7
7
  attr_accessor :import_coworker
8
8
 
9
9
  attr_accessor :settings, :organizations, :coworkers, :deals, :notes
10
+
11
+ attr_reader :documents
12
+
10
13
  def serialize_variables
11
14
  [
12
15
  {:id => :settings, :type => :settings},
@@ -14,6 +17,7 @@ module FruitToLime
14
17
  {:id => :organizations, :type => :organizations},
15
18
  {:id => :deals, :type => :deals},
16
19
  {:id => :notes, :type => :notes},
20
+ {:id => :documents, :type => :documents},
17
21
  ]
18
22
  end
19
23
 
@@ -33,6 +37,7 @@ module FruitToLime
33
37
  @coworkers.push @import_coworker
34
38
  @deals = []
35
39
  @notes = []
40
+ @documents = Documents.new
36
41
  end
37
42
 
38
43
  # Adds the specifed coworker object to the model.
@@ -202,13 +207,12 @@ module FruitToLime
202
207
  return note
203
208
  end
204
209
 
205
- # def with_new_note
206
- # @notes = [] if @notes == nil
210
+ def add_link(link)
211
+ @documents = Documents.new if @documents == nil
212
+
213
+ return @documents.add_link(link)
214
+ end
207
215
 
208
- # note = Note.new
209
- # @notes.push note
210
- # yield note
211
- # end
212
216
 
213
217
  def find_coworker_by_integration_id(integration_id)
214
218
  return @coworkers.find do |coworker|
@@ -282,6 +286,12 @@ module FruitToLime
282
286
  error = "#{error}\nDuplicate person integration_id: #{dups_error_items.join(", ")}."
283
287
  end
284
288
 
289
+ dups = get_integration_id_duplicates(with_non_empty_integration_id(@documents.links))
290
+ dups_error_items = (dups.collect{|l| l.integration_id}).compact
291
+ if dups_error_items.length > 0
292
+ error = "#{error}\nDuplicate link integration_id: #{dups_error_items.join(", ")}."
293
+ end
294
+
285
295
  return error.strip
286
296
  end
287
297
 
@@ -312,6 +322,13 @@ module FruitToLime
312
322
  end
313
323
  end
314
324
 
325
+ @documents.links.each do |link|
326
+ validation_message = link.validate
327
+ if !validation_message.empty?
328
+ error = "#{error}\n#{validation_message}"
329
+ end
330
+ end
331
+
315
332
  return error.strip
316
333
  end
317
334
 
@@ -0,0 +1,37 @@
1
+ require "spec_helper"
2
+ require 'fruit_to_lime'
3
+
4
+ describe "Documents" do
5
+ let(:documents) {
6
+ FruitToLime::Documents.new
7
+ }
8
+
9
+ it "can add a new link" do
10
+ # given
11
+ link = FruitToLime::Link.new
12
+ link.integration_id = "123key"
13
+ link.url = "http://dropbox.com/files/readme.txt"
14
+
15
+ # when
16
+ documents.add_link link
17
+
18
+ # then
19
+ documents.find_link_by_integration_id("123key").url.should eq "http://dropbox.com/files/readme.txt"
20
+ documents.links.length.should eq 1
21
+ end
22
+
23
+ it "will not add a new link when a link with the same integration_id already exists" do
24
+ # given
25
+ documents.add_link({ :integration_id => "123", :url => "http://dropbox.com" })
26
+ documents.links.length.should eq 1
27
+
28
+ # when, then
29
+ expect {
30
+ documents.add_link({ :integration_id => "123", :url => "http://drive.google.com" })
31
+ }.to raise_error(FruitToLime::AlreadyAddedError)
32
+ documents.links.length.should eq 1
33
+ documents.find_link_by_integration_id("123").url.should eq "http://dropbox.com"
34
+ end
35
+
36
+ end
37
+
data/spec/link_spec.rb ADDED
@@ -0,0 +1,106 @@
1
+ require "spec_helper"
2
+ require 'fruit_to_lime'
3
+
4
+ describe "Link" do
5
+ let("link") {
6
+ FruitToLime::Link.new
7
+ }
8
+
9
+ it "is valid when it has url, created_by and organization" do
10
+ # given
11
+ link.url = "http://dropbox.com/"
12
+ link.created_by = FruitToLime::CoworkerReference.new( { :integration_id => "123", :heading => "billy bob" } )
13
+ link.organization = FruitToLime::OrganizationReference.new({ :integration_id => "456", :heading => "Lundalogik" })
14
+
15
+ # when, then
16
+ link.validate.should eq ""
17
+ end
18
+
19
+ it "is valid when it has url, created_by and deal" do
20
+ # given
21
+ link.url = "http://dropbox.com/"
22
+ link.created_by = FruitToLime::CoworkerReference.new( { :integration_id => "123", :heading => "billy bob" } )
23
+ link.deal = FruitToLime::DealReference.new({ :integration_id => "456", :heading => "The new deal" })
24
+
25
+ # when, then
26
+ link.validate.should eq ""
27
+ end
28
+
29
+ it "is not valid when it has url and deal" do
30
+ # must have a created_by
31
+ # given
32
+ link.url = "http://dropbox.com/"
33
+ link.deal = FruitToLime::DealReference.new({ :integration_id => "456", :heading => "The new deal" })
34
+
35
+ # when, then
36
+ link.validate.length.should be > 0
37
+ end
38
+
39
+ it "is not valid when it has url and created_by" do
40
+ # must have an deal or organization
41
+ # given
42
+ link.url = "http://dropbox.com/"
43
+ link.created_by = FruitToLime::CoworkerReference.new( { :integration_id => "123", :heading => "billy bob" } )
44
+
45
+ # when, then
46
+ link.validate.length.should be > 0
47
+ end
48
+
49
+ it "is not valid when it has deal and created_by" do
50
+ # must have an url
51
+ # given
52
+ link.created_by = FruitToLime::CoworkerReference.new( { :integration_id => "123", :heading => "billy bob" } )
53
+ link.deal = FruitToLime::DealReference.new({ :integration_id => "456", :heading => "The new deal" })
54
+
55
+ # when, then
56
+ link.validate.length.should be > 0
57
+ end
58
+
59
+ it "is not valid when it has url, created_by, deal and orgaization" do
60
+ # given
61
+ link.url = "http://dropbox.com/"
62
+ link.created_by = FruitToLime::CoworkerReference.new( { :integration_id => "123", :heading => "billy bob" } )
63
+ link.deal = FruitToLime::DealReference.new({ :integration_id => "456", :heading => "The new deal" })
64
+ link.organization = FruitToLime::OrganizationReference.new({ :integration_id => "456", :heading => "Lundalogik" })
65
+
66
+ # when, then
67
+ link.validate.length.should be > 0
68
+ end
69
+
70
+ it "will auto convert org to org.ref during assignment" do
71
+ # given
72
+ org = FruitToLime::Organization.new({:integration_id => "123", :name => "Beagle Boys!"})
73
+
74
+ # when
75
+ link.organization = org
76
+
77
+ # then
78
+ link.organization.is_a?(FruitToLime::OrganizationReference).should eq true
79
+ end
80
+
81
+ it "will auto convert deal to deal.ref during assignment" do
82
+ # given
83
+ deal = FruitToLime::Deal.new({:integration_id => "123" })
84
+ deal.name = "The new deal"
85
+
86
+ # when
87
+ link.deal = deal
88
+
89
+ # then
90
+ link.deal.is_a?(FruitToLime::DealReference).should eq true
91
+ end
92
+
93
+ it "will auto convert coworker to coworker.ref during assignment" do
94
+ # given
95
+ coworker = FruitToLime::Coworker.new({:integration_id => "123" })
96
+ coworker.parse_name_to_firstname_lastname_se "Billy Bob"
97
+
98
+ # when
99
+ link.created_by = coworker
100
+
101
+ # then
102
+ link.created_by.is_a?(FruitToLime::CoworkerReference).should eq true
103
+ end
104
+
105
+
106
+ end
@@ -224,6 +224,20 @@ describe "RootModel" do
224
224
  rootmodel.coworkers.length.should eq 1
225
225
  end
226
226
 
227
+ it "will add a new link" do
228
+ # given
229
+ link = FruitToLime::Link.new
230
+ link.integration_id = "123key"
231
+ link.url = "http://dropbox.com/files/readme.txt"
232
+
233
+ # when
234
+ rootmodel.add_link link
235
+
236
+ # then
237
+ rootmodel.documents.find_link_by_integration_id("123key").url.should eq "http://dropbox.com/files/readme.txt"
238
+ rootmodel.documents.links.length.should eq 1
239
+ end
240
+
227
241
  it "will not add a new organizations when the organizations is already added (same integration id)" do
228
242
  # given
229
243
  rootmodel.add_note({
@@ -336,4 +350,22 @@ describe "RootModel" do
336
350
 
337
351
  rootmodel.sanity_check.should eq "Duplicate person integration_id: 1."
338
352
  end
353
+
354
+ it "will report when two links has the same integration id during sanity check" do
355
+ # given
356
+ link1 = FruitToLime::Link.new
357
+ link1.integration_id = "1"
358
+
359
+ link2 = FruitToLime::Link.new
360
+ link2.integration_id = "2"
361
+
362
+ rootmodel.add_link link1
363
+ rootmodel.add_link link2
364
+
365
+ # when
366
+ link2.integration_id = "1"
367
+
368
+ # then
369
+ rootmodel.sanity_check.should eq "Duplicate link integration_id: 1."
370
+ end
339
371
  end
@@ -0,0 +1 @@
1
+ DUMMY
@@ -0,0 +1,7 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gem 'rspec'
4
+ gem 'roo'
5
+ gem 'thor'
6
+ gem 'fruit_to_lime'
7
+ gem 'dbf'
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env rake
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
7
+ task :test => :spec
@@ -0,0 +1,3 @@
1
+ require "./lib/tomodel"
2
+
3
+ Cli.start(ARGV)
@@ -0,0 +1,202 @@
1
+ require 'fruit_to_lime'
2
+ require 'roo'
3
+ require 'dbf'
4
+
5
+ # Customize this file to suit your input for a VISMA database.
6
+ # You'll need KUND.DBS and KONTAKTER.DBS
7
+ #
8
+ # Documentation fruit_to_lime can be found at
9
+ # http://rubygems.org/gems/fruit_to_lime
10
+ #
11
+ # Fruit_to_lime contains all objects in LIME Go such as organization,
12
+ # people, deals, etc. What properties each object has is described in
13
+ # the documentation.
14
+
15
+ # *** TODO:
16
+ #
17
+ # This template will convert the files KUNDER.dbs and KONTAKTER.DBS to LIME Go. You
18
+ # should modify the Converted class suit your input file.
19
+ #
20
+ # Try this template with the template.xlsx file to generate a go.xml
21
+ #file:
22
+ # ruby convert.rb to_go lime-go.xml
23
+
24
+ class Converter
25
+ def configure(model)
26
+ # Add custom field to your model here. Custom fields can be
27
+ # added to organization, deal and person. Valid types are
28
+ # :String and :Link. If no type is specified :String is used
29
+ # as default.
30
+
31
+ #Creates a custom field to add invoicing data
32
+ model.settings.with_organization do |org|
33
+ org.set_custom_field( { :integrationid => 'ackoms', :title => 'Fakturerat', :type => :String } )
34
+ end
35
+ end
36
+
37
+ def import_person_to_organization(row)
38
+ person = to_person(row)
39
+ organization = @rootmodel.find_organization_by_integration_id(row['KUNDNR'])
40
+
41
+ if !organization.nil?
42
+ organization.add_employee(person)
43
+ end
44
+ end
45
+
46
+ def to_organization(row)
47
+ organization = FruitToLime::Organization.new()
48
+
49
+ #Add tags:
50
+ organization.set_tag "Importerad"
51
+ organization.set_tag "Kund"
52
+
53
+ organization.name = row['NAMN']
54
+ # Integrationid is typically the id in the system that we are
55
+ # getting the csv from. Must be set to be able to import the
56
+ # same file more than once without creating duplicates
57
+ organization.integration_id = row['KUNDNR']
58
+
59
+ #address
60
+ organization.with_postal_address do |address|
61
+ address.street = row['POSTADR']
62
+ address.zip_code = row['POSTNR']
63
+ address.city = row['ORT']
64
+ end
65
+
66
+ organization.email = row['EPOST']
67
+ organization.organization_number = row['ORGNR']
68
+ organization.central_phone_number = row['TEL']
69
+
70
+ # Sets the organization's relation. Relation must be a value
71
+ # from FruitToLime::Relation.
72
+ organization.relation = FruitToLime::Relation::IsACustomer
73
+
74
+ #Fill data to custom fields
75
+ organization.set_custom_field({:integration_id=>"ackoms", :value=>row["ACKOMS"]})
76
+
77
+ return organization
78
+ end
79
+
80
+ def to_note(row)
81
+ note = FruitToLime::Note.new()
82
+
83
+ # *** TODO:
84
+ #
85
+ # Set note properties from the row.
86
+ organization = @rootmodel.find_organization_by_integration_id(row['KUNDNR'])
87
+ unless organization.nil?
88
+ note.organization = organization.to_reference
89
+ end
90
+ note.created_by = @rootmodel.import_coworker
91
+ note.text = row['ANTECK_1']
92
+
93
+ return note
94
+ end
95
+
96
+ def to_person(row)
97
+ person = FruitToLime::Person.new()
98
+
99
+ # *** TODO:
100
+ #
101
+ # Set person properties from the row.
102
+
103
+ person.parse_name_to_firstname_lastname_se(row['NAMN'])
104
+ if FruitToLime::EmailHelper.is_valid?(row['EPOST'])
105
+ person.email = row['EPOST']
106
+ end
107
+ person.mobile_phone_number = FruitToLime::PhoneHelper.parse_numbers(row['MBTEL'], [",", "/", "\\"])
108
+ person.direct_phone_number = FruitToLime::PhoneHelper.parse_numbers(row['TEL'], [",", "/", "\\"])
109
+
110
+ return person
111
+ end
112
+
113
+ def to_model()
114
+ # First we read each database into separate variables
115
+ puts "Reading data from './Databas/'"
116
+ organization_rows = DBF::Table.new("./Databas/KUND.DBF")
117
+ person_rows = DBF::Table.new("./Databas/KONTAKT.DBF")
118
+
119
+ # Then we create a rootmodel that should contain all data that
120
+ # should be exported to LIME Go.
121
+ @rootmodel = FruitToLime::RootModel.new
122
+
123
+ # And configure the model if we have any custom fields
124
+ puts "Adding custom fields to model"
125
+ configure @rootmodel
126
+
127
+ # Then create organizations, they are only referenced by
128
+ # coworkers.
129
+ puts "Importing Organization..."
130
+ organization_rows.each do |row|
131
+ if not row.nil?
132
+ if not row["NAMN"] == ""
133
+ @rootmodel.add_organization(to_organization(row))
134
+ end
135
+ end
136
+ end
137
+ puts "Imported #{@rootmodel.organizations.length} Organization"
138
+
139
+ # Add people and link them to their organizations
140
+ puts "Importing Persons..."
141
+ imported_person_count = 0
142
+ person_rows.each do |row|
143
+ # People are special since they are not added directly to
144
+ # the root model
145
+ if not row.nil?
146
+ if not row["KUNDNR"] == "" and not row["NAMN"] == ""
147
+ import_person_to_organization(row)
148
+ imported_person_count = nbrPersons + 1
149
+ end
150
+ end
151
+ end
152
+ puts "Imported #{imported_person_count} Persons"
153
+
154
+ # Deals can connected to coworkers, organizations and people.
155
+ # deal_rows.each do |row|
156
+ # @rootmodel.add_deal(to_deal(row))
157
+ # end
158
+
159
+ # Notes must be owned by a coworker and the be added to
160
+ # organizations and notes and might refernce a person
161
+ puts "Importing Notes..."
162
+ organization_rows.each do |row|
163
+ if not row.nil?
164
+ if row['ANTECK_1'].length > 0
165
+ @rootmodel.add_note(to_note(row))
166
+ end
167
+ end
168
+ end
169
+
170
+ return @rootmodel
171
+ end
172
+ end
173
+
174
+ # You don't need to change anything below this line.
175
+
176
+ require "thor"
177
+ require "fileutils"
178
+ require 'pathname'
179
+
180
+ class Cli < Thor
181
+ desc "to_go GO_DATA_FILENAME", "Converts VISMA 'KUND.DBS' and 'KONTAKTER.DBS' to Go xml format. Place the DBS-files in the folder 'Databas'. GO_DATA_FILENAME is output file where Go xml will go."
182
+ def to_go(go_data_filename = nil)
183
+ go_data_filename = 'go-data.xml' if go_data_filename == nil
184
+ converter = Converter.new()
185
+ model = converter.to_model()
186
+ error = model.sanity_check
187
+ if error.empty?
188
+ validation_errors = model.validate
189
+
190
+ if validation_errors.empty?
191
+ model.serialize_to_file(go_data_filename)
192
+ puts "VISMA data has been converted into '#{go_data_filename}'."
193
+ else
194
+ puts "VISMA database could not be converted due to"
195
+ puts validation_errors
196
+ end
197
+ else
198
+ puts "VISMA database could not be converted due to"
199
+ puts error
200
+ end
201
+ end
202
+ end
@@ -301,8 +301,8 @@ class Exporter
301
301
  model.settings.with_deal do |deal|
302
302
  # assessment is default DealState::NoEndState
303
303
  deal.add_status( {:label => '1. Kvalificering' })
304
- deal.add_status( {:label => '2. Deal closed', :assessment => DealState::PositiveEndState })
305
- deal.add_status( {:label => '4. Deal lost', :assessment => DealState::NegativeEndState })
304
+ deal.add_status( {:label => '2. Deal closed', :assessment => FruitToLime::DealState::PositiveEndState })
305
+ deal.add_status( {:label => '4. Deal lost', :assessment => FruitToLime::DealState::NegativeEndState })
306
306
  end
307
307
  end
308
308
 
@@ -348,7 +348,7 @@ class Exporter
348
348
  # depends on organizations
349
349
  if persons_filename && !persons_filename.empty?
350
350
  process_rows persons_filename do |row|
351
- people[row['personIndex']] = "#{row['referenceId']}-#{row['companyId']}"
351
+ people[row['personIndex']] = "#{row['PowerSellReferenceID']}-#{row['PowerSellCompanyID']}"
352
352
  # adds it self to the employer
353
353
  to_person(row)
354
354
  end
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.6.3
4
+ version: 2.7.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2014-07-17 00:00:00.000000000 Z
15
+ date: 2014-09-02 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: iso_country_codes
@@ -183,6 +183,8 @@ files:
183
183
  - lib/fruit_to_lime/model/deal_status.rb
184
184
  - lib/fruit_to_lime/model/deal_status_reference.rb
185
185
  - lib/fruit_to_lime/model/deal_status_setting.rb
186
+ - lib/fruit_to_lime/model/documents.rb
187
+ - lib/fruit_to_lime/model/link.rb
186
188
  - lib/fruit_to_lime/model/note.rb
187
189
  - lib/fruit_to_lime/model/organization.rb
188
190
  - lib/fruit_to_lime/model/person.rb
@@ -231,6 +233,11 @@ files:
231
233
  - templates/sqlserver/Rakefile.rb
232
234
  - templates/sqlserver/spec/spec_helper.rb
233
235
  - templates/sqlserver/spec/tomodel_spec.rb
236
+ - templates/VISMA/convert.rb
237
+ - templates/VISMA/Databas/KUND.DBS
238
+ - templates/VISMA/Gemfile
239
+ - templates/VISMA/lib/tomodel.rb
240
+ - templates/VISMA/Rakefile.rb
234
241
  - lib/fruit_to_lime/global_phone.json
235
242
  - spec/address_spec.rb
236
243
  - spec/class_settings_spec.rb
@@ -239,12 +246,14 @@ files:
239
246
  - spec/deal_class_settings_spec.rb
240
247
  - spec/deal_spec.rb
241
248
  - spec/deal_status_reference_spec.rb
249
+ - spec/documents_spec.rb
242
250
  - spec/helpers/csv_helper_spec.rb
243
251
  - spec/helpers/email_helper_spec.rb
244
252
  - spec/helpers/phone_helper_spec.rb
245
253
  - spec/helpers/roo_helper_spec.rb
246
254
  - spec/helpers/serialize_helper_spec.rb
247
255
  - spec/helpers/xsd_validate_spec.rb
256
+ - spec/link_spec.rb
248
257
  - spec/note_spec.rb
249
258
  - spec/organization_spec.rb
250
259
  - spec/person_spec.rb
@@ -283,12 +292,14 @@ test_files:
283
292
  - spec/deal_class_settings_spec.rb
284
293
  - spec/deal_spec.rb
285
294
  - spec/deal_status_reference_spec.rb
295
+ - spec/documents_spec.rb
286
296
  - spec/helpers/csv_helper_spec.rb
287
297
  - spec/helpers/email_helper_spec.rb
288
298
  - spec/helpers/phone_helper_spec.rb
289
299
  - spec/helpers/roo_helper_spec.rb
290
300
  - spec/helpers/serialize_helper_spec.rb
291
301
  - spec/helpers/xsd_validate_spec.rb
302
+ - spec/link_spec.rb
292
303
  - spec/note_spec.rb
293
304
  - spec/organization_spec.rb
294
305
  - spec/person_spec.rb