change seed generator

This commit is contained in:
phyusin
2018-10-17 12:04:21 +06:30
parent 0b9f9db6df
commit f26b8b357c

View File

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