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
58
|
# 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 "NetSuite: Not syncing #{klass.to_s}"
next
end
last_class_poll = PollTimestamp.for_class(klass)
poll_execution_time = DateTime.now
if last_class_poll.new_record?
Rails.logger.info "NetSuite: Syncing #{klass} for the first time"
klass.netsuite_poll({ import_all: true }.merge(opts))
else
last_poll_date = last_class_poll.value
last_poll_date = DateTime.parse(last_poll_date) unless last_poll_date.is_a?(DateTime)
if poll_execution_time.to_i - last_poll_date.to_i > sync_frequency
Rails.logger.info "NetSuite: #{klass} is due to be synced, last checked #{last_poll_date}"
klass.netsuite_poll({ last_poll: last_poll_date }.merge(opts))
else
Rails.logger.info "NetSuite: Skipping #{klass} because of syncing frequency"
next
end
end
last_class_poll.value = poll_execution_time
last_class_poll.save!
end
end
|