go_import 3.0.12 → 3.0.13

Sign up to get free protection for your applications and to get access to all the features.
@@ -38,7 +38,7 @@ def convert_source
38
38
  if not row.nil?
39
39
  if not row["NAMN"] == ""
40
40
  organization = converter.to_organization(row, rootmodel)
41
- organization.set_tag "Imported"
41
+ organization.set_tag "Import"
42
42
  rootmodel.add_organization(organization)
43
43
  end
44
44
  end
@@ -56,7 +56,6 @@ class Converter
56
56
  organization = GoImport::Organization.new()
57
57
 
58
58
  #Add tags:
59
- organization.set_tag "Importerad"
60
59
  organization.set_tag "Kund"
61
60
 
62
61
  organization.name = row['NAMN']
@@ -36,7 +36,7 @@ def convert_source
36
36
  if defined?(ORGANIZATION_FILE) && !ORGANIZATION_FILE.nil? && !ORGANIZATION_FILE.empty?
37
37
  process_rows ORGANIZATION_FILE do |row|
38
38
  organization = converter.to_organization(row, rootmodel)
39
- organization.set_tag "Imported"
39
+ organization.set_tag "Import"
40
40
  rootmodel.add_organization(organization)
41
41
  end
42
42
  end
@@ -94,9 +94,9 @@ class Converter
94
94
  coworker = rootmodel.find_coworker_by_integration_id row['responsible_id']
95
95
  organization.responsible_coworker = coworker.to_reference
96
96
 
97
- # Tags are set and defined at the same place
98
- # Setting a tag: Imported is useful for the user
99
- organization.set_tag("Imported")
97
+ # Set tags for the organization. All organizations will get
98
+ # the tag "import" automagically
99
+ organization.set_tag("Guldkund")
100
100
 
101
101
  # When imported from web based ERP or similair that
102
102
  # client will continue to use it can be useful to be
@@ -105,7 +105,7 @@ end
105
105
 
106
106
  def init_organization(row, rootmodel)
107
107
  organization = GoImport::Organization.new
108
- organization.set_tag "Imported"
108
+ organization.set_tag "Import"
109
109
  # integration_id is typically the company Id in Easy
110
110
  # Must be set to be able to import the same file more
111
111
  # than once without creating duplicates
@@ -174,6 +174,9 @@ def to_organization_document(row, rootmodel)
174
174
  file.name = row['Comment']
175
175
 
176
176
  file.created_by = rootmodel.find_coworker_by_integration_id(row['idUser-Created'])
177
+ if file.created_by.nil?
178
+ file.created_by = rootmodel.import_coworker
179
+ end
177
180
 
178
181
  org = rootmodel.find_organization_by_integration_id(row['idCompany'])
179
182
  if org.nil?
@@ -192,6 +195,9 @@ def from_project_document_to_organization_document(row, includes, rootmodel)
192
195
  file.name = row['Comment']
193
196
 
194
197
  file.created_by = rootmodel.find_coworker_by_integration_id(row['idUser-Created'])
198
+ if file.created_by.nil?
199
+ file.created_by = rootmodel.import_coworker
200
+ end
195
201
 
196
202
  organization_id = includes[row['idProject']]
197
203
  org = rootmodel.find_organization_by_integration_id(organization_id)
@@ -130,10 +130,10 @@ class Converter
130
130
 
131
131
  #####################################################################
132
132
  ## Tags.
133
- # Tags are set and defined at the same place
134
- # Setting a tag: Imported is useful for the user
133
+ # Set tags for the organization. All organizations will get
134
+ # the tag "import" automagically
135
135
 
136
- # organization.set_tag("Imported")
136
+ # organization.set_tag("Guldkund")
137
137
 
138
138
  #####################################################################
139
139
  ## Option fields.
@@ -192,10 +192,8 @@ class Converter
192
192
 
193
193
  #####################################################################
194
194
  ## Tags.
195
- # Tags are set and defined at the same place
196
- # Setting a tag: Imported is useful for the user
197
-
198
- # person.set_tag("Imported")
195
+ # Set tags for the person
196
+ # person.set_tag("VIP")
199
197
 
200
198
  #####################################################################
201
199
  ## Checkbox fields.
@@ -263,10 +261,9 @@ class Converter
263
261
 
264
262
  #####################################################################
265
263
  ## Tags.
266
- # Tags are set and defined at the same place
267
- # Setting a tag: Imported is useful for the user
264
+ # Set tags for the deal
268
265
 
269
- # deal.set_tag("Imported")
266
+ # deal.set_tag("Product name")
270
267
 
271
268
  return deal
272
269
  end
@@ -95,7 +95,7 @@ def convert_source
95
95
  puts "Trying to convert organizations..."
96
96
  organization_rows.each do |row|
97
97
  organization = converter.to_organization(row, rootmodel)
98
- organization.set_tag "Imported"
98
+ organization.set_tag "Import"
99
99
  rootmodel.add_organization(organization)
100
100
  end
101
101
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: go_import
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.12
4
+ version: 3.0.13
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-10-17 00:00:00.000000000 Z
15
+ date: 2014-10-20 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: iso_country_codes
@@ -237,7 +237,6 @@ files:
237
237
  - sources/VISMA/Database/KONTAKT.DBF
238
238
  - sources/VISMA/Database/KUND.DBF
239
239
  - sources/VISMA/Gemfile
240
- - sources/VISMA/tomodel.rb
241
240
  - lib/go_import/global_phone.json
242
241
  - spec/address_spec.rb
243
242
  - spec/class_settings_spec.rb
@@ -1,202 +0,0 @@
1
- require 'go_import'
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 go_import can be found at
9
- # http://rubygems.org/gems/go_import
10
- #
11
- # go_import 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 = GoImport::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 GoImport::Relation.
72
- organization.relation = GoImport::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 = GoImport::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
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 = GoImport::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 GoImport::EmailHelper.is_valid?(row['EPOST'])
105
- person.email = row['EPOST']
106
- end
107
- person.mobile_phone_number = GoImport::PhoneHelper.parse_numbers(row['MBTEL'], [",", "/", "\\"])
108
- person.direct_phone_number = GoImport::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 = GoImport::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