17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
# File 'lib/netsuite_rails/poll_trigger.rb', line 17
def sync(opts = {})
record_models = opts[:record_models] || @record_models
list_models = opts[:list_models] || @list_models
list_models.each do |klass|
Rails.logger.info "NetSuite: Syncing #{klass}"
klass.netsuite_poll
end
record_models.each do |klass|
sync_frequency = klass.netsuite_sync_options[:frequency] || 1.day
if sync_frequency == :never
Rails.logger.info "Not syncing #{klass.to_s}"
next
end
Rails.logger.info "NetSuite: Syncing #{klass.to_s}"
preference = PollTimestamp.for_class(klass)
if preference.new_record?
klass.netsuite_poll({ import_all: true }.merge(opts))
else
last_poll_date = preference.value
last_poll_date = DateTime.parse(last_poll_date) unless last_poll_date.is_a?(DateTime)
if DateTime.now.to_i - last_poll_date.to_i > sync_frequency
Rails.logger.info "NetSuite: Syncing #{klass} modified since #{last_poll_date}"
klass.netsuite_poll({ last_poll: last_poll_date }.merge(opts))
else
Rails.logger.info "NetSuite: Skipping #{klass} because of syncing frequency"
end
end
preference.value = DateTime.now
preference.save!
end
end
|