class SeedGenerator < ApplicationRecord # Generate ID for Tables def self.generate_id(model, prefix) cur_val, next_val = self.update_seed(model) if (cur_val == 0) cur_val, next_val = self.execute_query(model) end padding_len = 15 - prefix.length last_val = prefix +"-"+ cur_val.to_s.to_s.rjust((14-prefix.length)+1,'0') return last_val 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 = 0 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 return seed.current 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.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