Files
sx-fc/app/models/seed_generator.rb
2019-06-21 10:04:35 +06:30

137 lines
3.5 KiB
Ruby
Executable File

class SeedGenerator < ApplicationRecord
# Generate ID for Tables
def self.generate_id(model, prefix)
model_name = self.get_model_name(model)
cur_val, next_val = self.update_seed(model_name)
if (cur_val == 0)
cur_val, next_val = self.execute_query(model_name)
end
padding_len = 15 - prefix.length
saleOrderId = prefix +"-"+ cur_val.to_s.to_s.rjust((14-prefix.length)+1,'0')
return saleOrderId
end
def self.sync_seed_generator_records(seed_generators)
if !seed_generators.nil?
seed_generators.each do |sg|
seed = SeedGenerator.find_by_model(sg['model'])
if seed.nil?
seed = SeedGenerator.new
end
seed.model = sg['model']
seed.increase_by = sg['increase_by']
seed.current = sg['current']
seed.next = sg['next']
seed.save
end
puts '....... Seed Generator sync completed! .......'
end
end
# Generate Receipt No for number order (1,2,3) Don't touch
def self.new_receipt_no
seed = SeedGenerator.find_by_model("Sale")
new_receipt_no = 1
# if (seed.nil?)
# seed = SeedGenerator.new()
# seed.model = "Sale"
# new_receipt_no = seed.next
# seed.save
# else
# current_no = seed.next
# seed.next = seed.next
# seed.current = current_no
# seed.save
# end
if !seed.nil?
if seed.current > 0
new_receipt_no = seed.current
else
new_receipt_no = seed.current + 1
end
end
return new_receipt_no
end
# Generate for 4 digit Code
# def self.generate_code(model, prefix)
# seed = SeedGenerator.find_by_model(model)
# new_code = 0
# if (seed.nil?)
# seed = SeedGenerator.new()
# seed.model = model
# new_code = seed.next
# seed.save
# else
# current_no = seed.next
# seed.next = seed.next + seed.increase_by
# seed.current = current_no
# seed.save
# end
# if prefix.length == 1
# padding_len = 5 - prefix.length
# count = 4-prefix.length
# else prefix.length == 2
# padding_len = 6 - prefix.length
# count = 5-prefix.length
# end
# next_code = prefix + seed.current.to_s.to_s.rjust((count)+1,'0')
# return next_code
# end
def self.get_model_name(model)
model_name = ""
if ENV["SERVER_MODE"] == 'cloud'
model_name = "Cloud#{model}"
else
model_name = model
end
return model_name
end
def self.execute_query(model)
current = 0
nex = 0
sql = "INSERT INTO seed_generators (model, created_at, updated_at)
VALUES('#{ model }', NOW(), NOW())
ON DUPLICATE KEY UPDATE current = current + 1, next = next + 1;"
select_sql = "select * from seed_generators where model='#{model}';"
ActiveRecord::Base.connection.execute(sql);
select_result = ActiveRecord::Base.connection.execute(select_sql);
select_result.each do |row|
current = row [3]
nex = row[4]
end
return current, nex
end
def self.update_seed(model)
current = 0
nex = 0
update_sql = "UPDATE seed_generators set current = next, next = next + 1 WHERE model='#{model}';"
select_sql = "select * from seed_generators where model='#{model}';"
update_result = ActiveRecord::Base.connection.execute(update_sql);
select_result = ActiveRecord::Base.connection.execute(select_sql);
select_result.each do |row|
current = row [3]
nex = row[4]
end
return current, nex
end
end