Merge branch 'r-1902001-01' into foodcourt

This commit is contained in:
Thein Lin Kyaw
2020-05-29 13:32:16 +06:30
23 changed files with 724 additions and 508 deletions

View File

@@ -19,12 +19,13 @@ class Api::CheckInProcessController < Api::ApiController
table = DiningFacility.find(params[:dining_id])
#Send to background job for processing
if ENV["SERVER_MODE"] == 'cloud'
from = request.subdomain + "." + request.domain
else
from = ""
end
ActionCable.server.broadcast "check_in_booking_channel",table: table,from:from
if ENV["SERVER_MODE"] == 'cloud'
from = request.subdomain + "." + request.domain
else
from = ""
end
ActionCable.server.broadcast "check_in_booking_channel",table: table,from:from
check_out_time = nil
extra_minutes = nil
alert_time_min = 0
@@ -65,93 +66,59 @@ class Api::CheckInProcessController < Api::ApiController
if params[:dining_id]
dining_facility = DiningFacility.find(params[:dining_id])
if dining_facility.is_active && dining_facility.status == "available"
if params[:checkin_time]
checkin_at = nil
if !params[:checkin_time].empty?
checkin_at = Time.parse(params[:checkin_time]).utc
if dining_facility.current_checkin_booking.nil?
if params[:checkin_time].present?
checkin_at = Time.parse(params[:checkin_time])
else
checkin_at = Time.now.utc
checkin_at = Time.now
end
if !checkin_at.nil?
if dining_facility.check_time(checkin_at, "checkin")
booking = dining_facility.get_current_booking
if booking.nil?
checkout_at = nil
lookup_checkout_time = Lookup.collection_of("checkout_time")
today = Time.now
if !lookup_checkout_time.empty?
booking = Booking.create({:dining_facility_id => params[:dining_id],:type => "TableBooking",
:checkin_by=>current_login_employee.name,:checkin_at => checkin_at,:checkout_at =>nil, :booking_status => "assign", :reserved_at => nil, :reserved_by => nil })
if booking.save!
dining_facility.status = "occupied"
dining_facility.save!
render :json => { :status => true, :booking_id => booking.booking_id, :checkin_at => booking.checkin_at.utc.getlocal.strftime("%Y-%m-%d %H:%M:%S"), :message => "Check-in success" }
else
render :json => { :status => false, :error_message => "Booking does not create successfully!" }
end
else
render :json => { :status => false, :error_message => "Booking already exist!" }
lookup_checkout_time.each do |checkout_time|
start_time, end_time = checkout_time[0].split("-").map{ |t| Time.parse(t.strip).strftime("%H:%M%p") }
if start_time <= today.strftime("%H:%M%p") && today.strftime("%H:%M%p") <= end_time
checkout_at = checkin_at + (checkout_time[1]).to_i.minutes
end
else
render :json => { :status => false, :error_message => "Checkin time not available!" }
end
else
render :json => { :status => false, :error_message => "Operation failed!" }
end
booking = nil
ActiveRecord::Base.transaction do
booking = Booking.create({
:dining_facility_id => params[:dining_id],
:type => "TableBooking",
:checkin_by => current_login_employee.name,
:checkin_at => checkin_at,
:checkout_at => checkout_at,
:booking_status => "assign",
:reserved_at => checkout_at,
:reserved_by => current_login_employee.name })
dining_facility.status = "occupied"
dining_facility.save!
end
terminal = DiningFacility.find_by_id(booking.dining_facility_id)
cashier_terminal = CashierTerminal.find_by_id(terminal.zone_id)
if ENV["SERVER_MODE"] != "cloud" #no print in cloud server
unique_code = "CheckInOutPdf"
printer = PrintSetting.find_by_unique_code(unique_code)
# print when complete click
order_queue_printer = Printer::OrderQueuePrinter.new(printer)
if !printer.nil?
order_queue_printer.print_check_in_out(printer, cashier_terminal, booking, dining_facility)
end
end
render :json => { :status => true, :booking_id => booking.booking_id, :checkin_at => booking.checkin_at.strftime("%Y-%m-%d %H:%M"), :checkout_at => booking.checkout_at.strftime("%Y-%m-%d %H:%M") }
else
booking = dining_facility.current_checkout_booking
if booking.nil?
lookup_checkout_time = Lookup.collection_of("checkout_time")
if !lookup_checkout_time.empty?
today = Time.now.utc.getlocal
checkout_at = Time.now.utc.getlocal
lookup_checkout_time.each do |checkout_time|
arr_time = checkout_time[0].split("-")
start_time = Time.parse(arr_time[0].strip).utc.getlocal.strftime("%H:%M%p")
end_time = Time.parse(arr_time[1].strip).utc.getlocal.strftime("%H:%M%p")
if start_time <= today.strftime("%H:%M%p") && today.strftime("%H:%M%p") <= end_time
checkout_at = checkout_at + (checkout_time[1]).to_i.minutes
end
end
if checkout_at.strftime("%Y-%m-%d %H:%M%p") >= today.strftime("%Y-%m-%d %H:%M%p")
# if dining_facility.type == "Table"
# type = "TableBooking"
# else
# type = "RoomBooking"
# end
booking = Booking.create({:dining_facility_id => params[:dining_id],:type => "TableBooking",
:checkin_by=>current_login_employee.name,:checkin_at => Time.now.utc,:checkout_at =>checkout_at, :booking_status => "assign", :reserved_at => checkout_at, :reserved_by => current_login_employee.name })
if booking.save!
dining_facility.status = "occupied"
dining_facility.save!
end
terminal = DiningFacility.find_by_id(booking.dining_facility_id)
cashier_terminal = CashierTerminal.find_by_id(terminal.zone_id)
if ENV["SERVER_MODE"] != "cloud" #no print in cloud server
unique_code = "CheckInOutPdf"
printer = PrintSetting.find_by_unique_code(unique_code)
# print when complete click
order_queue_printer = Printer::OrderQueuePrinter.new(printer)
if !printer.nil?
order_queue_printer.print_check_in_out(printer, cashier_terminal, booking, dining_facility)
end
end
render :json => { :status => true, :booking_id => booking.booking_id, :checkout_at => booking.checkout_at.utc.getlocal.strftime("%Y-%m-%d %H:%M") }
else
render :json => { :status => true }
end
else
render :json => { :status => true }
end
else
render :json => { :status => false, :error_message => "Booking already exist!" }
end
render :json => { :status => false, :error_message => "Booking already exist!" }
end
else
error_message = "#{dining_facility.type} is not available!"
@@ -161,6 +128,8 @@ class Api::CheckInProcessController < Api::ApiController
error_message = "dining_id is required!"
render :json => { :status => false, :error_message => error_message }
end
rescue ActiveRecord::RecordInvalid => exception
render :json => { :status => false, :error_message => exception.message }
end
def request_time

View File

@@ -41,13 +41,13 @@ class Api::OrdersController < Api::ApiController
@booking = table.get_booking
end
@tax_profile = nil
@tax_profile = TaxProfile.where("lower(group_type)='cashier'")
# arr_tax = []
# if !arr_tax.empty?
# @tax_profile = TaxProfile.where(:id => arr_tax)
# else
@tax_profile = TaxProfile.where("lower(group_type)='cashier'")
# @tax_profile = TaxProfile.where("lower(group_type)='cashier'")
# end
#

View File

@@ -90,6 +90,7 @@ class Origami::PaymentsController < BaseOrigamiController
latest_order_no = nil
is_kbz = params[:is_kbz]
if saleObj = Sale.find(sale_id)
sale_items = SaleItem.get_all_sale_items(sale_id)
@@ -106,7 +107,7 @@ class Origami::PaymentsController < BaseOrigamiController
sp.kbz_edit_sale_payment(sp.received_amount.to_f, current_user)
end
if !path.include? ("credit_payment")
rebate_amount = nil
# For Cashier by Zone
@@ -200,12 +201,18 @@ class Origami::PaymentsController < BaseOrigamiController
item_price_by_accounts = SaleItem.calculate_price_by_accounts(saleObj.sale_items)
discount_price_by_accounts = SaleItem.get_discount_price_by_accounts(saleObj.sale_items)
other_amount = SaleItem.calculate_other_charges(sale_items)
credit_pdf = Lookup.find_by_lookup_type("credit_pdf")
if (path.include? ("credit_payment")) && !credit_pdf.nil? && credit_pdf.value.to_i == 1
printed_status = 'credit_payment'
else
printed_status = 'Paid'
end
printer = Printer::ReceiptPrinter.new(print_settings)
filename, sale_receipt_no, printer_name = printer.print_receipt_bill(print_settings, false, nil, cashier_terminal, sale_items, saleObj, customer.name, item_price_by_accounts, discount_price_by_accounts, member_info, rebate_amount, current_shop, "Paid", current_balance, card_data, other_amount, latest_order_no, card_balance_amount, nil)
#end
end
if !saleObj.nil?
# InventoryJob.perform_now(self.id)
# InventoryDefinition.calculate_product_count(saleObj)

View File

@@ -40,7 +40,6 @@ authorize_resource :class => false
@shift_data = sh
end
end
respond_to do |format|
format.html
format.xls

View File

@@ -41,7 +41,7 @@ class CardSaleTran < ApplicationRecord
if payment_type.blank?
payment = ''
else
payment = " app LIKE '#{payment_type}'"
payment = " app LIKE '#{payment_type}'"
end
if from.present? && to.present?
@@ -52,7 +52,7 @@ class CardSaleTran < ApplicationRecord
if shift.present?
query1 = cardSale.where("s.shift_sale_id in (?)", shift.to_a)
elsif shift_sale_range.present?
elsif shift_sale_range.present?
query1 = cardSale.where("s.shift_sale_id in (?)",shift_sale_range.to_a)
else
query1 = cardSale.where("DATE_FORMAT(s.receipt_date,'%Y-%m-%d') between ? and ?",from,to)
@@ -67,7 +67,6 @@ class CardSaleTran < ApplicationRecord
shift_closed_at As closing_date,")
.order("shift_sales.id DESC")
return query = query.where("shift_sales.shift_started_at >= ?" , from)
# byebug
end
end
end

View File

@@ -12,7 +12,7 @@ class CardSettleTran < ApplicationRecord
if payment_type.blank?
payment = ''
else
payment = " req_type LIKE '#{payment_type}'"
payment = " req_type LIKE '#{payment_type}'"
end
if status_type.blank?
@@ -46,10 +46,10 @@ class CardSettleTran < ApplicationRecord
query = CardSettleTran.joins("Join shift_sales ss ON ss.id = card_settle_trans.shift_sale_id"+
" JOIN employees e ON e.id = ss.employee_id")
cardSettle = query.where("DATE_FORMAT(req_date,'%Y-%m-%d') >= ? and DATE_FORMAT(req_date,'%Y-%m-%d') <= ? and status = 'Approved'",from,to)
if shift.present?
query1 = cardSettle.where("ss.id in (?)", shift.to_a)
elsif shift_sale_range.present?
elsif shift_sale_range.present?
query1 = cardSettle.where("ss.id in (?)",shift_sale_range.to_a)
else
query1 = cardSettle.where("DATE_FORMAT(req_date,'%Y-%m-%d') between ? and ?",from,to)
@@ -64,6 +64,5 @@ class CardSettleTran < ApplicationRecord
shift_closed_at As closing_date,")
.order("shift_sales.id DESC")
return query = query.where("shift_sales.shift_started_at >= ?" , from)
# byebug
end
end
end

View File

@@ -1,5 +1,8 @@
class InventoryDefinition < ApplicationRecord
has_many :stock_journals
has_one :menu_item_instance, foreign_key: "item_instance_code", primary_key: "item_code"
scope :active, -> {where(:is_active => true)}
def self.calculate_product_count(saleObj=nil,saleobj_after_req_bill=nil)
@@ -71,7 +74,7 @@ class InventoryDefinition < ApplicationRecord
end
def self.search_by_category(cat_id)
@inventory_definitions = InventoryDefinition.select("inventory_definitions.*,
inventory_definitions = InventoryDefinition.select("inventory_definitions.*,
mi.name as item_name,mii.item_instance_name as instance_name," +
"mi.item_code as item_code,mii.item_instance_code as instance_code," +
"mc.name as menu_category_name,mc.id as menu_category_id ")
@@ -84,27 +87,29 @@ class InventoryDefinition < ApplicationRecord
end
def self.get_by_category(filter)
least_stock = StockJournal.select(:balance).joins("JOIN inventory_definitions ON stock_journals.item_code = inventory_definitions.item_code").order(:id => :desc).limit(1).to_sql
least_stock = StockJournal.select(:inventory_definition_id, :credit, :debit, :balance)
.joins("JOIN (
#{StockJournal.select("item_code, MAX(created_at) created_at").group(:item_code).to_sql}) last_stock_journals
ON last_stock_journals.item_code = stock_journals.item_code
AND last_stock_journals.created_at = stock_journals.created_at").to_sql
@inventory_definitions = InventoryDefinition.select("inventory_definitions.*,
(CASE WHEN sj.credit IS NULL THEN 0 ELSE sj.credit END) as credit,
(CASE WHEN sj.debit IS NULL THEN 0 ELSE sj.debit END) as debit,
(#{least_stock}) as balance,"+
"acc.title as account_name,mi.name as item_name,
mii.item_instance_name as instance_name," +
"mc.name as menu_category_name,mc.id as menu_category_id "
)
.joins(" LEFT JOIN stock_journals sj ON sj.inventory_definition_id=inventory_definitions.id")
.joins("JOIN menu_item_instances mii ON mii.item_instance_code = inventory_definitions.item_code" +
" JOIN menu_items mi ON mi.id = mii.menu_item_id" +
" JOIN menu_categories mc ON mc.id = mi.menu_category_id ")
.joins(" JOIN accounts acc ON acc.id = mi.account_id")
.where("(inventory_definitions.item_code LIKE ? OR inventory_definitions.min_order_level LIKE ?
OR inventory_definitions.max_stock_level LIKE ? OR sj.balance LIKE ? OR mi.name LIKE ?
OR mii.item_instance_name LIKE ? OR mc.name LIKE ?)","%#{filter}%","%#{filter}%","%#{filter}%",
"%#{filter}%","%#{filter}%","%#{filter}%","%#{filter}%")
.group("mi.menu_category_id,inventory_definitions.item_code")
.order("balance asc, mi.name asc,acc.title desc,mi.menu_category_id desc")
inventory_definitions = InventoryDefinition
.select("inventory_definitions.*,
stock_journals.credit as credit,
stock_journals.debit as debit,
stock_journals.balance as balance,
accounts.title as account_name,
menu_items.name as item_name,
menu_item_instances.item_instance_name as instance_name,
menu_categories.name as menu_category_name,
menu_categories.id as menu_category_id")
.joins("LEFT JOIN (#{least_stock}) stock_journals on stock_journals.inventory_definition_id = inventory_definitions.id")
.joins(menu_item_instance: { menu_item: [:menu_category, :account]})
.where("inventory_definitions.item_code LIKE :filter OR inventory_definitions.min_order_level LIKE :filter
OR inventory_definitions.max_stock_level LIKE :filter OR stock_journals.balance LIKE :filter OR menu_items.name LIKE :filter
OR menu_item_instances.item_instance_name LIKE :filter OR menu_categories.name LIKE :filter", filter: "%#{filter}%")
.group("menu_items.menu_category_id, inventory_definitions.item_code")
.order("balance asc, menu_items.name asc, accounts.title desc, menu_items.menu_category_id desc")
end
end

View File

@@ -119,11 +119,15 @@ class Printer::ReceiptPrinter < Printer::PrinterWorker
if count == 1
filename = directory_name + "/receipt_bill_#{sale_data.receipt_no}.pdf"
pdf.render_file filename
if printed_status != 'Paid'
if printed_status != 'Paid' && printed_status != 'credit_payment'
#no print in cloud server
if ENV["SERVER_MODE"] != "cloud"
self.print(directory_name + "/receipt_bill_#{sale_data.receipt_no}.pdf", cashier_terminal.printer_name)
end
elsif printed_status == 'credit_payment'
filename = directory_name + "/receipt_bill_credit_#{sale_data.receipt_no}.pdf"
pdf.render_file filename
self.print(directory_name + "/receipt_bill_credit_#{sale_data.receipt_no}.pdf", cashier_terminal.printer_name)
end
else
filename = directory_name + "/receipt_bill_#{sale_data.receipt_no}_#{count}.pdf"

View File

@@ -748,43 +748,29 @@ class Sale < ApplicationRecord
end
def self.search_credit_sales(customer,filter,from,to,order_source="")
if filter.blank?
keyword = ''
else
keyword = "and sales.receipt_no LIKE ? OR sales.cashier_name LIKE ? OR sales.sale_status ='#{filter}'","%#{filter}%","%#{filter}%"
end
if customer.blank?
custo = ''
else
custo = "and sales.customer_id = '#{customer}'"
end
order_source_query = "(select orders.source FROM orders JOIN sale_orders so ON so.order_id=orders.order_id WHERE so.sale_id=sales.sale_id GROUP BY so.sale_id)"
if order_source.blank?
source = ""
else
if order_source == "cashier"
source = "and #{order_source_query}='cashier' or #{order_source_query}='emenu'"
else
source = "and #{order_source_query}='#{order_source}'"
end
end
sale = Sale.select(Sale.column_names)
.select(SalePayment.column_names)
.select(:source).includes(:customer)
.joins(:sale_payments, :orders)
.where(sale_payments: {payment_method: 'creditnote'})
.group(:sale_payment_id)
if from.present? && to.present?
sale = Sale.select("sales.*,#{order_source_query} as source").joins("JOIN sale_payments sp on sp.sale_id = sales.sale_id")
.joins(" JOIN bookings ON bookings.sale_id=sales.sale_id")
.joins(" JOIN booking_orders ON booking_orders.booking_id=bookings.booking_id")
.joins(" JOIN orders ON orders.order_id=booking_orders.order_id")
.where("DATE_FORMAT(receipt_date,'%d-%m-%Y') >= ?" + " AND DATE_FORMAT(receipt_date,'%d-%m-%Y') <= ? and (CASE WHEN (sales.grand_total + sales.amount_changed)=(select SUM(sale_payments.payment_amount)
FROM sale_payments WHERE sale_payments.sale_id=sales.sale_id AND sale_payments.payment_method!='creditnote') THEN NULL ELSE payment_method='creditnote' END) #{keyword} #{custo} #{source}", from,to)
else
sale = Sale.select("sales.*,#{order_source_query} as source").joins(" JOIN sale_payments sp on sp.sale_id = sales.sale_id")
.joins(" JOIN bookings ON bookings.sale_id=sales.sale_id")
.joins(" JOIN booking_orders ON booking_orders.booking_id=bookings.booking_id")
.joins(" JOIN orders ON orders.order_id=booking_orders.order_id")
.where("(CASE WHEN (sales.grand_total + sales.amount_changed)=(select SUM(sale_payments.payment_amount)
FROM sale_payments WHERE sale_payments.sale_id=sales.sale_id AND sale_payments.payment_method!='creditnote') THEN NULL ELSE payment_method='creditnote' END) #{keyword} #{custo} #{source}")
sale = sale.receipt_date_between(from, to)
end
if filter.present?
sale = sale.where("sales.receipt_no LIKE ? OR sales.cashier_name LIKE ? OR sales.sale_status = ?", "%#{filter}%", "%#{filter}%", filter)
end
if customer.present?
sale = sale.where(customer_id: customer)
end
if order_source.present?
sale = sale.where(orders: {source: order_source})
end
return sale
end
def self.get_rounding_adjustment(num)
@@ -817,8 +803,10 @@ def self.daily_sales_list(from,to)
SUM(case when (sale_payments.payment_method='dinga') then sale_payments.payment_amount else 0 end) as dinga_amount,
SUM(case when (sale_payments.payment_method='JunctionPay') then sale_payments.payment_amount else 0 end) as junctionpay_amount,
SUM(case when (sale_payments.payment_method='cash') then sale_payments.payment_amount else 0 end) as cash_amount,
CASE WHEN SUM(case when sale_payments.payment_method not in('creditnote') then sale_payments.payment_amount end) < sales.grand_total
THEN sales.grand_total - SUM(case when sale_payments.payment_method not in('creditnote') then sale_payments.payment_amount end)
CASE WHEN SUM(case when sale_payments.payment_method not in('creditnote')
then sale_payments.payment_amount else 0 end) < sales.grand_total
THEN sales.grand_total - SUM(case when sale_payments.payment_method not in('creditnote')
then sale_payments.payment_amount else 0 end)
ELSE 0 END as credit_amount,
SUM(case when (sale_payments.payment_method='giftvoucher') then sale_payments.payment_amount else 0 end) as giftvoucher_amount,
SUM(case when (sale_payments.payment_method='foc') then sale_payments.payment_amount else 0 end) as foc_amount")
@@ -1475,33 +1463,32 @@ def grand_total_after_rounding
end
def get_cash_amount
cash = 0.0
self.sale_payments.each do |pay|
if pay.payment_method == 'cash'
cash += pay.payment_amount
end
end
return cash - self.amount_changed
self.sale_payments.where(payment_method: 'cash', payment_status: 'paid')
.pluck(:payment_amount).reduce(0, :+) - self.amount_changed
end
def get_credit_amount
credit = 0.0
self.sale_payments.each do |pay|
if pay.payment_method == 'creditnote'
credit += pay.payment_amount
end
end
return credit
self.sale_payments.where(payment_method: 'creditnote')
.pluck(:payment_status, :payment_amount)
.inject(0.0) { |sum, pay|
if pay[0] == 'outstanding'
sum += pay[1]
else
sum -= pay[1]
end
}
end
def get_other_amount
other = 0.0
self.sale_payments.each do |pay|
if pay.payment_method != 'cash' && pay.payment_method != 'creditnote'
other += pay.payment_amount
end
end
return other
self.sale_payments.where.not(payment_method: ['cash', 'creditnote'])
.pluck(:payment_status, :payment_amount)
.inject(0.0) { |sum, pay|
if pay[0] == 'paid'
sum += pay[1]
else
sum -= pay[1]
end
}
end
def get_commerical_tax
@@ -2439,15 +2426,13 @@ private
end
def round_to_precision
if (self.total_amount != self.total_amount_was || self.total_discount != self.total_discount_was || self.total_tax != self.total_tax_was)
if (self.total_amount % 1 > 0 || self.total_discount % 1 > 0 || self.total_tax % 1 > 0)
self.total_amount = self.total_amount.round(precision)
self.total_discount = self.total_discount.round(precision)
self.total_tax = self.total_tax.round(precision)
self.grand_total = (self.total_amount - self.total_discount) + self.total_tax
end
adjust_rounding
if (self.total_amount % 1 > 0 || self.total_discount % 1 > 0 || self.total_tax % 1 > 0)
self.total_amount = self.total_amount.round(precision)
self.total_discount = self.total_discount.round(precision)
self.total_tax = self.total_tax.round(precision)
end
self.grand_total = (self.total_amount - self.total_discount) + self.total_tax
adjust_rounding
end
def update_stock_journal

View File

@@ -143,7 +143,7 @@ class SaleAudit < ApplicationRecord
remark = paymal[0].remark.split("}")
response = "["+remark[0]+'}]'
response = JSON.parse(response)
puts response
# puts response
if response[0]["status"] == true
if response[0]["current_rebate_amount"].present?
amount = response[0]["current_rebate_amount"]

View File

@@ -74,6 +74,8 @@ class SalePayment < ApplicationRecord
#get all payment for this invoices
if payment_for
amount_due = SalePayment.get_credit_amount_due_left(self.sale_id).first.payment_amount
elsif payment_method == 'foc'
amount_due = invoice.total_amount
else
amount_due = invoice.sale_payments
.map(&:payment_amount).reduce(invoice.grand_total, :-)
@@ -140,9 +142,6 @@ class SalePayment < ApplicationRecord
remark = "#{self.sale_payment_id}||#{shift_sale_id} -> #{remark}"
sale_audit = SaleAudit.record_payment(invoice.id, remark, action_by.name)
if payment_method == "cash"
update_shift_for_credit_payment
end
else
sale_audit = SaleAudit.record_payment(invoice.id, remark, action_by.name)
end
@@ -235,14 +234,15 @@ class SalePayment < ApplicationRecord
end
def self.redeem(paypar_url,token,membership_id,received_amount,sale_id)
membership_actions_data = PaymentMethodSetting.find_by_payment_method("Redeem")
membership_actions_data = PaymentMethodSetting.find_by_payment_method("Redeem")
if !membership_actions_data.nil?
url = paypar_url.to_s + membership_actions_data.gateway_url.to_s
merchant_uid = membership_actions_data.merchant_account_id
auth_token = membership_actions_data.auth_token
campaign_type_id = JSON.parse(membership_actions_data.additional_parameters)["campaign_type_id"]
campaign_type_id = membership_actions_data.additional_parameter["campaign_type_id"]
sale_data = Sale.find_by_sale_id(sale_id)
account_no = Customer.find_by_customer_id(self.sale.customer_id).paypar_account_no
if sale_data
others = 0
@@ -259,7 +259,7 @@ class SalePayment < ApplicationRecord
redeem_amount:received_amount,
receipt_no:sale_data.receipt_no,
campaign_type_id:campaign_type_id,
account_no:"",
account_no: account_no,
merchant_uid:merchant_uid,
auth_token:auth_token}.to_json,
:headers => {
@@ -371,12 +371,8 @@ class SalePayment < ApplicationRecord
private
def cash_payment(payment_for=false)
status = false
sale_payments_data = SalePayment.find_by_sale_id(self.sale_id)
if sale_payments_data.nil?
status = true
end
sale_payments_data = SalePayment.find_by_sale_id(self.sale_id)
payment_status = false
self.payment_method = "cash"
@@ -391,8 +387,11 @@ class SalePayment < ApplicationRecord
self.payment_status = "paid"
payment_status = self.save!
if !payment_for
sale_update_payment_status(self.received_amount,status)
sale_update_payment_status(self.received_amount)
else
update_shift_for_credit_payment()
end
balance_amount =0.0
outstanding_amount =0.0
if self.sale.grand_total.to_f > self.received_amount.to_f
@@ -408,6 +407,7 @@ class SalePayment < ApplicationRecord
def foc_payment
payment_status = false
sale = self.sale
sale.sale_payments.update_all(payment_status: "cancelled")
# add to sale item with foc
sale_items = sale.sale_items
@@ -424,7 +424,7 @@ class SalePayment < ApplicationRecord
self.payment_status = "paid"
payment_status = self.save!
# sale_update_payment_status(self.received_amount)
sale_update_payment_status(0)
sale_update_payment_status(0, true)
return payment_status
end
@@ -501,7 +501,7 @@ class SalePayment < ApplicationRecord
#Next time - validate if the vochure number is valid - within
customer_data = Customer.find_by_customer_id(self.sale.customer_id)
membership_setting = MembershipSetting.find_by_membership_type("paypar_url")
membership_data = SalePayment.redeem(membership_setting.gateway_url,membership_setting.auth_token,customer_data.membership_id,self.received_amount,self.sale.sale_id)
membership_data = redeem(membership_setting.gateway_url,membership_setting.auth_token,customer_data.membership_id,self.received_amount,self.sale.sale_id)
#record an payment in sale-audit
remark = "#{membership_data} Redeem- for Customer #{self.sale.customer_id} Sale Id [#{self.sale.sale_id}]| pay amount -> #{self.received_amount} "
@@ -630,22 +630,32 @@ class SalePayment < ApplicationRecord
def sale_update_payment_status(paid_amount, check_foc = false)
#update amount_outstanding
if ['completed'].include? sale.sale_status
return
end
sale = self.sale
total_payment_amount = sale.sale_payments.reload.sum(&:payment_amount)
sale_payments = sale.sale_payments.reload
is_credit = sale_payments.any? { |x| x.payment_method == "creditnote" }
is_foc = sale_payments.any? { |x| x.payment_method == "foc" } || check_foc
if is_foc
total_payment_amount = 0.0
else
total_payment_amount = sale_payments.sum(&:payment_amount)
end
sale.amount_received = sale.amount_received.to_f + paid_amount.to_f
sale.amount_changed = total_payment_amount - sale.grand_total.to_f
is_credit = sale.sale_payments.any? { |x| x.payment_method == "creditnote" }
is_foc = sale.sale_payments.any? { |x| x.payment_method == "foc" }
if sale.grand_total <= total_payment_amount && sale.sale_status == "new"
if is_foc
sale.payment_status = 'foc'
sale.sale_status = 'completed'
elsif sale.grand_total <= total_payment_amount && sale.sale_status == "new"
sale.payment_status = "paid"
if is_credit
sale.payment_status = "outstanding"
end
if is_foc
sale.payment_status = "foc"
end
sale.sale_status = "completed"
@@ -672,26 +682,25 @@ class SalePayment < ApplicationRecord
end
end
end
end
sale.save!
sale.save!
if check_foc
table_update_status(sale)
update_shift
elsif paid_amount.to_f > 0 #|| paid_amount != "0.0"
table_update_status(sale)
update_shift
elsif paid_amount.to_f == 0 && !is_credit
table_update_status(sale)
update_shift
end
if check_foc
table_update_status(sale)
update_shift
elsif paid_amount.to_f > 0 #|| paid_amount != "0.0"
table_update_status(sale)
update_shift
elsif paid_amount.to_f == 0 && !is_credit
table_update_status(sale)
update_shift
end
end
# update for cashier shift
def update_shift
current_shift_user = Employee.find_by_id(self.action_by.id)
shift = ShiftSale.current_open_shift(current_shift_user)
shift = ShiftSale.current_open_shift(self.action_by.id)
if shift.nil?
current_shift_user = Employee.find_by_id(self.sale.cashier_id)
@@ -717,7 +726,10 @@ class SalePayment < ApplicationRecord
# update for shift with credit payment
def update_shift_for_credit_payment
shift_credit = ShiftSale.find_by_id(self.sale.shift_sale_id)
shift = ShiftSale.find_by_id(ShiftSale.current_shift)
shift = self.action_by.current_shift
if !shift.nil?
shift = ShiftSale.current_shift
end
if !shift.nil?
credit_payment_left = get_credit_payment_left[0].payment_amount.to_f
if self.payment_method == "cash"
@@ -726,7 +738,6 @@ class SalePayment < ApplicationRecord
else
# extra_changed_amount = self.received_amount.to_f + credit_payment_left
shift.cash_sales = shift.cash_sales.to_f + (self.received_amount.to_f + credit_payment_left)
self.sale.amount_received = self.sale.amount_received.to_f - credit_payment_left
self.sale.amount_changed = self.sale.amount_changed.to_f - credit_payment_left
self.sale.save!

View File

@@ -64,7 +64,7 @@ class ReceiptBillPdf < Prawn::Document
cashier_info(sale_data, customer_account, latest_order_no)
line_items(sale_items,precision,delimiter)
all_total(sale_data,precision,delimiter)
all_total(sale_data,precision,delimiter,printed_status)
if member_info != nil
@@ -112,6 +112,9 @@ class ReceiptBillPdf < Prawn::Document
end
if kbz_pay_status
if printed_status == 'credit_payment'
printed_status = 'Paid'
end
kbzpay_qr_generator(printed_status, qr_code)
end
@@ -323,7 +326,7 @@ class ReceiptBillPdf < Prawn::Document
end
def all_total(sale_data,precision,delimiter)
def all_total(sale_data,precision,delimiter,printed_status)
move_down line_move
item_name_width = self.item_width
y_position = cursor
@@ -455,16 +458,21 @@ class ReceiptBillPdf < Prawn::Document
end
move_down line_move
sale_payment(sale_data,precision,delimiter)
sale_payment(sale_data,precision,delimiter,printed_status)
end
def sale_payment(sale_data,precision,delimiter)
def sale_payment(sale_data,precision,delimiter,printed_status)
stroke_horizontal_rule
# move_down 2
move_down line_move
# sql = "SELECT SUM(payment_amount)
# FROM sale_payments where payment_method='creditnote'
# and sale_id='#{sale_data.sale_id}'"
# and sale_id='#{sale_data.sale_id}'"
if printed_status == 'credit_payment'
sale_payments = SalePayment.select(:payment_amount, :payment_method, :updated_at)
.where("sale_id = '#{sale_data.sale_id}' AND payment_method != 'creditnote'")
else
sql = SalePayment.select("(SUM(payment_amount))").where("payment_method='creditnote' and sale_id='#{sale_data.sale_id}'").to_sql
# sql1 = "SELECT CASE WHEN s.amount_changed > 0 and (s.amount_received - s.amount_changed) = s.grand_total THEN ( SELECT SUM(payment_amount)
# FROM sale_payments where payment_method='creditnote'
@@ -482,13 +490,16 @@ class ReceiptBillPdf < Prawn::Document
where sa.sale_id='#{sale_data.sale_id}')) = 0
THEN payment_method!='creditnote' ELSE 1 END) AND sale_id = ?", sale_data.sale_id)
.group("payment_method")
end
sale_payments.each do |payment|
y_position = cursor
if payment.payment_method == "paypar"
bounding_box([0,y_position], :width =>self.item_description_width, :height => self.item_height) do
text "Redeem Payment", :size => self.item_font_size,:align => :left
end
end
elsif printed_status == 'credit_payment'
text "#{payment.payment_method.capitalize} Payment on #{payment.updated_at.strftime('%d-%m-%Y')}", :left_margin => -10, :size => self.item_font_size,:align => :left
else
payment_method = payment.payment_method.capitalize
if payment.payment_method == "paymal"
@@ -775,7 +786,9 @@ class ReceiptBillPdf < Prawn::Document
move_down line_move
stroke_horizontal_rule
move_down line_move
if printed_status == 'credit_payment'
printed_status = 'Paid'
end
move_down line_move
y_position = cursor
bounding_box([0, y_position], :width =>self.label_width) do

View File

@@ -172,11 +172,31 @@
});
$(document).ready(function () {
var menus = JSON.parse(localStorage.getItem("menus"));;
if (menus != null) {
menu_cache_append(menus);
}else{
$("#menu_data").removeClass("hidden");
// var menus = JSON.parse(localStorage.getItem("menus"));;
// if (menus != null) {
// menu_cache_append(menus);
// }else{
// getAllMenu();
// $("#menu_data").removeClass("hidden");
// }
getAllMenu();
function getAllMenu(){
$.ajax({
type: "GET",
url: '/origami/get_all_menu',
data: {},
success:function(result){
var menus = JSON.stringify(result);
localStorage.setItem("menus", menus);
if (result != null ) {
menu_cache_append(result);
$("#loading_wrapper").hide();
$("#oqs_loading_wrapper").css("display", "none");
$(".page-loader-wrapper").css("display", "none");
}
}
});
}
function menu_cache_append(menus){
@@ -328,6 +348,66 @@
});
//End menu category Click
//show menu item list when click menu category
function show_sub_category_list(url,sub_category,menu_id){
var sub_category_list = $('.sub_category_list');
sub_category_list.empty();
menus = JSON.parse(localStorage.getItem("menus"));
if (menus != null) {
for(var j in menus) {
var categories = menus[j]["categories"];
for(var ii in categories) {
if (menu_id == categories[ii]["parent_id"]) {
$(sub_category).removeClass('hidden');
row = '<li class="menu_sub_category fadeInTop" data-id="'+categories[ii].id+'">'
+'<a class="nav-link" data-toggle="tab" href="" role="tab">'+ categories[ii].name+'</a>'
+'</li>' ;
$(sub_category).append(row);
}
}
}
}else{
if (type != -1 && modify_order != -1) {
var url = "../../../addorders/"+url;
}if(modify_order== -1 && type != -1){
var url = 'addorders/'+url;
}
if (type ==-1 && modify_order == -1){
var url = url;
}
//Start Ajax
$.ajax({
type: "GET",
url: url,
data: {},
dataType: "json",
success: function(data) {
var sub_category_list = $('.sub_category_list');
sub_category_list.empty();
data = data.sub_category;
if (data.length > 0) {
// if ((sub_category.hasClass('hidden'))) {
$(sub_category).removeClass('hidden');
// }else{
// $(sub_category).addClass('hidden');
// }
for(var i in data) {
row = '<li class="menu_sub_category fadeInTop" data-id="'+data[i].id+'">'
+'<a class="nav-link" data-toggle="tab" href="" role="tab">'+ data[i].name+'</a>'
+'</li>' ;
$(sub_category).append(row);
//end is_sub_item false
}
}
}
});
//end Ajax
}
}
//click menu sidebar menu category
$(document).on('click', '.menu_sub_category', function(event){
// event.preventDefault();

View File

@@ -1386,7 +1386,7 @@
});
}
});
}
}
function check_emp_access_code(access_code,type) {
var url = "/origami/check_emp_access_code/" + access_code ;

View File

@@ -107,9 +107,9 @@
<%if @sale_payment.nil? && @changable_tax %>
<% if @current_user.role == 'cashier' %>
<button class="btn btn-link waves-effect bg-info access_modal" data-type="change_tax">Change Tax</button>
<% else %>
<% else %>
<button class="btn btn-link waves-effect bg-info change_tax">Change Tax</button>
<% end %>
<% end %>
<% end %>
</td>
<td class="item-attr"><strong><span id="total_tax"><%= number_format(@sale_data.total_tax, precision: precision.to_i ) rescue number_format(0, precision: precision.to_i )%></span></strong></td>

View File

@@ -26,11 +26,12 @@
<th colspan="7"><%= t("views.right_panel.detail.shift_name") %> = <%= @shift_from %> - <%= @shift_to %> ( <%= cashier_name %> )</th>
</tr>
<% end %>
<tr>
<th><b><%= t("views.right_panel.detail.shift_name") %></b></th>
<th><b><%= t("views.right_panel.detail.table") %></b></th>
<th><b><%= t("views.right_panel.detail.receipt_no") %></b></th>
<tr>
<th><b><%= t("views.right_panel.detail.receipt_no") %></b></th>
<th><b><%= t("views.right_panel.detail.receipt_date") %></b></th>
<th><b><%= t("views.right_panel.detail.shift_name") %></b></th>
<th><b><%= t :cashier %> <%= t("views.right_panel.detail.name") %></b></th>
<th><b><%= t("views.right_panel.detail.table") %></b></th>
<th><b><%= t("views.right_panel.detail.revenue") %></b></th>
<th>&nbsp;</th>
</tr>
@@ -46,24 +47,25 @@
end %>
<% grand_total = grand_total + result.grand_total %>
<tr style="border-top:4px double #666;">
<td><%= @shift_from %> - <%= @shift_to %></td>
<td><%= table_type %> - <%= table_name %></td>
<td><%= result.receipt_no rescue '-' %> </td>
<td><%=l result.receipt_date.getlocal, :format => :short rescue '-' %> </td>
<td><%= @shift_from %> - <%= @shift_to %></td>
<td><%= result.cashier_name rescue '-' %></td>
<td><%= table_type %> - <%= table_name %></td>
<td><%= number_format(result.grand_total, precision: precision, delimiter: delimiter) %></td>
<!-- <td>&nbsp;</td> -->
</tr>
<tr>
<th>&nbsp;</th>
<th><b><%= t("views.right_panel.detail.product") %></b></th>
<th><b><%= t("views.right_panel.detail.qty") %></b></th>
<th><b><%= t("views.right_panel.detail.unit_price") %></b></th>
<th><b><%= t("views.right_panel.detail.total_price") %></b></th>
<th><b><%= t("views.right_panel.detail.created_at") %></b></th>
<th colspan="2"><b><%= t("views.right_panel.detail.total_price") %></b></th>
</tr>
<% result.sale_items.each do |item|%>
<tr>
<td>&nbsp;</td>
<td>
<% if item.price < 0 %>
<% if item.qty < 0 %>
@@ -77,18 +79,18 @@
</td>
<td><%= item.qty rescue '-' %></td>
<td><%= number_format(item.unit_price, precision: precision, delimiter: delimiter, strip_insignificant_zeros: strip_insignificant_zeros) rescue '-' %></td>
<td><%= number_format(item.price, precision: precision, delimiter: delimiter, strip_insignificant_zeros: strip_insignificant_zeros) rescue '-' %></td>
<td><%=l item.created_at.getlocal, :format => :short rescue '-' %> </td>
<td colspan="2"><%= number_format(item.price, precision: precision, delimiter: delimiter, strip_insignificant_zeros: strip_insignificant_zeros) rescue '-' %></td>
</tr>
<% end %>
<tr><td colspan="5">&nbsp;</td></tr>
<tr><td colspan="6">&nbsp;</td></tr>
<%survey = result.survey%>
<% if !survey.nil?%>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>No. of Guest</td>
<td><%= survey.total_customer rescue '-' %></td>
<td>&nbsp;</td>
@@ -97,6 +99,7 @@
<% if !result.total_amount.nil?%>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><%= t("views.right_panel.detail.total") %> <%= t("views.right_panel.detail.amount") %></td>
@@ -107,6 +110,7 @@
<% if result.total_discount > 0 %>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><%= t("views.right_panel.detail.total") %>
@@ -119,6 +123,7 @@
<% if !result.total_tax.nil? %>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>Tax Amount </td>
@@ -133,13 +138,15 @@
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>Payment <%= rec.payment_method.upcase %></td>
<td><%= number_format(rec.payment_amount, precision: precision, delimiter: delimiter, strip_insignificant_zeros: strip_insignificant_zeros) %> ( <%= rec.payment_status %> )</td>
<td>&nbsp;</td>
<td>Payment <%= rec.payment_method.upcase %> ( <%= rec.payment_status %> )</td>
<td><%= number_format(rec.payment_amount, precision: precision, delimiter: delimiter, strip_insignificant_zeros: strip_insignificant_zeros) %></td>
<td>&nbsp;</td>
</tr>
<% if !rec.payment_reference.nil? %>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>Payment Ref.</td>
@@ -151,6 +158,7 @@
<% end %>
<% if result.amount_changed != 0 %>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><%= t("views.right_panel.detail.change") %> <%= t("views.right_panel.detail.amount") %></td>
@@ -160,6 +168,7 @@
<% end %>
<% if !result.customer_id.nil?%>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>Customer</td>
@@ -176,6 +185,7 @@
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><b>Total Nett</b> - <b><%= number_format(grand_total, precision: precision, delimiter: delimiter, strip_insignificant_zeros: strip_insignificant_zeros) %></b></td>
<td>&nbsp;</td>
</tr>

View File

@@ -24,12 +24,13 @@
<th colspan="7"><%= t("views.right_panel.detail.shift_name") %> = <%= @shift_from %> - <%= @shift_to %> ( <%= cashier_name %> )</th>
</tr>
<% end %>
<tr>
<th><b><%= t("views.right_panel.detail.shift_name") %></b></th>
<th><b><%= t("views.right_panel.detail.table") %></b></th>
<th><b><%= t("views.right_panel.detail.receipt_no") %></b></th>
<th><b><%= t :cashier %> <%= t("views.right_panel.detail.name") %></b></th>
<th><b><%= t("views.right_panel.detail.revenue") %></b></th>
<tr>
<th><b><%= t("views.right_panel.detail.receipt_no") %></b></th>
<th><b><%= t("views.right_panel.detail.receipt_date") %></b></th>
<th><b><%= t("views.right_panel.detail.shift_name") %></b></th>
<th><b><%= t :cashier %> <%= t("views.right_panel.detail.name") %></b></th>
<th><b><%= t("views.right_panel.detail.table") %></b></th>
<th><b><%= t("views.right_panel.detail.revenue") %></b></th>
<th>&nbsp;</th>
</tr>
</thead>
@@ -43,25 +44,26 @@
table_type = table.type
table_name = table.name
end %>
<tr style="border-top:4px double #666;">
<td><%= @shift_from %> - <%= @shift_to %></td>
<td><%= table_type %> - <%= table_name %></td>
<tr style="border-top:4px double #666;">
<td><%= result.receipt_no rescue '-' %> </td>
<td><%=l result.receipt_date.getlocal, :format => :short rescue '-' %> </td>
<td><%= @shift_from %> - <%= @shift_to %></td>
<td><%= result.cashier_name rescue '-' %></td>
<td><%=result.grand_total%></td>
<!-- <td>&nbsp;</td> -->
<td><%= table_type %> - <%= table_name %></td>
<td><%= number_format(result.grand_total, precision: precision, delimiter: delimiter) %></td>
</tr>
<tr>
<tr>
<th>&nbsp;</th>
<th><b><%= t("views.right_panel.detail.product") %></b></th>
<th><b><%= t("views.right_panel.detail.qty") %></b></th>
<th><b><%= t("views.right_panel.detail.unit_price") %></b></th>
<th><b><%= t("views.right_panel.detail.total_price") %></b></th>
<th><b><%= t("views.right_panel.detail.created_at") %></b></th>
</tr>
<% result.sale_items.each do |item|%>
<tr>
<td>&nbsp;</td>
<td>
<% if item.price.to_i < 0.to_i %>
<% if item.qty.to_i < 0.to_i%>
@@ -76,7 +78,6 @@
<td><%= item.qty rescue '-' %></td>
<td><%= item.unit_price rescue '-' %></td>
<td><%= item.price rescue '-' %></td>
<td><%=l item.created_at.utc.getlocal, :format => :short rescue '-' %> </td>
</tr>
<% end %>
@@ -87,6 +88,7 @@
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>No. of Guest</td>
<td><%= survey.total_customer rescue '-' %></td>
<td>&nbsp;</td>
@@ -97,6 +99,7 @@
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><%= t("views.right_panel.detail.total") %> <%= t("views.right_panel.detail.amount") %></td>
<td><%= result.total_amount %></td>
<td>&nbsp;</td>
@@ -107,6 +110,7 @@
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><%= t("views.right_panel.detail.total") %>
<%= t("views.right_panel.detail.discount") %>
<%= t("views.right_panel.detail.amount") %></td>
@@ -119,6 +123,7 @@
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>Tax Amount </td>
<td><%= result.total_tax %> </td>
<td>&nbsp;</td>
@@ -132,8 +137,9 @@
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>Payment <%= rec.payment_method.upcase %></td>
<td><%= rec.payment_amount %> ( <%= rec.payment_status %> )</td>
<td>&nbsp;</td>
<td>Payment <%= rec.payment_method.upcase %>( <%= rec.payment_status %> )</td>
<td><%= rec.payment_amount %></td>
<td>&nbsp;</td>
</tr>
@@ -141,6 +147,7 @@
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>Payment Ref.</td>
<td><%= rec.payment_reference %></td>
<td>&nbsp;</td>
@@ -152,6 +159,7 @@
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><%= t("views.right_panel.detail.change") %> <%= t("views.right_panel.detail.amount") %></td>
<td><%= result.amount_changed %></td>
<td>&nbsp;</td>
@@ -161,6 +169,7 @@
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>Customer</td>
<td><%= result.customer.name rescue '-'%>
(<%= result.customer.company rescue '-' %>)
@@ -175,6 +184,7 @@
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><b>Total Nett</b> - <b><%= grand_total %></b></td>
<td>&nbsp;</td>
</tr>

View File

@@ -19,7 +19,7 @@
<div class="row clearfix">
<div class="col-lg-3 col-md-3 col-sm-3 col-xs-3 mbl-style">
<label class="font-14"><%= t("views.right_panel.detail.enter_keyboards") %></label>
<input type="text" name="receipt_no" class="form-control m-t-3" placeholder="Receipt No/Cashier Name/Status" style="margin-right: 10px">
<input type="text" name="filter" class="form-control m-t-3" placeholder="Receipt No/Cashier Name/Status" style="margin-right: 10px">
</div>
<div class="col-lg-2 col-md-2 col-sm-2 col-xs-2 col-mbl-view mbl-style">
<label class="font-14"><%= t("views.right_panel.detail.select_customer") %></label>
@@ -48,7 +48,7 @@
<label class="font-14"> &nbsp;</label><br>
<input type="submit" value="Search" class='btn btn-primary btn-md'>
</div>
</div>
</div>
<% end %>
</td>
</tr>