class SeedGenerator < ApplicationRecord # Generate ID for Tables def self.generate_id(model, prefix) seed = SeedGenerator.find_by_model(model) new_receipt_no = 0 if (seed.nil?) seed = SeedGenerator.new() seed.model = model new_receipt_no = seed.next seed.save else next_no = seed.next current_no = seed.next seed.next = seed.next + seed.increase_by seed.current = current_no seed.save # cur_val, next_val = self.update_seed(model, seed.next, seed.increase_by) # if next_no == cur_val # puts "SSS" # puts next_val # cur_val2, next_val2 = self.update_seed(model, next_val, seed.increase_by) # puts next_val2 # padding_len = 15 - prefix.length # saleOrderId = prefix +"-"+ cur_val2.to_s.to_s.rjust((14-prefix.length)+1,'0') # puts saleOrderId # return saleOrderId # end # padding_len = 15 - prefix.length # saleOrderId = prefix +"-"+ cur_val.to_s.to_s.rjust((14-prefix.length)+1,'0') # return saleOrderId end padding_len = 15 - prefix.length saleOrderId = prefix +"-"+ seed.current.to_s.to_s.rjust((14-prefix.length)+1,'0') return saleOrderId end # Generate Receipt No 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.update_seed(model, current, inc) cur_val = 0 next_val = 0 nex = current + inc update_sql = "update seed_generators set current= #{current}, next= #{nex} 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| cur_val = row [3] next_val = row[4] end return cur_val, next_val end end