update for order process
Add activereocrd-import gem for bulk insert
This commit is contained in:
3
Gemfile
3
Gemfile
@@ -44,6 +44,9 @@ gem 'rack-cors'
|
||||
# Multi-tenancy for shops
|
||||
gem 'acts_as_tenant'
|
||||
|
||||
# Activerecord-Import is a library for bulk inserting data using ActiveRecord.
|
||||
gem 'activerecord-import'
|
||||
|
||||
# image upload
|
||||
gem 'carrierwave', '~> 1.0'
|
||||
gem 'mini_magick'
|
||||
|
||||
@@ -41,6 +41,8 @@ GEM
|
||||
activemodel (= 5.1.7)
|
||||
activesupport (= 5.1.7)
|
||||
arel (~> 8.0)
|
||||
activerecord-import (1.0.3)
|
||||
activerecord (>= 3.2)
|
||||
activesupport (5.1.7)
|
||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||
i18n (>= 0.7, < 2)
|
||||
@@ -320,6 +322,7 @@ PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
activerecord-import
|
||||
acts_as_tenant
|
||||
aescrypt
|
||||
axlsx (= 2.0.1)
|
||||
|
||||
@@ -288,6 +288,10 @@ For Number Formats
|
||||
=> settings/lookups => { lookup_type: number_format, name: strip_insignificant_zeros,
|
||||
value: {true: => ['1', 't', 'true', 'on', 'y', 'yes'], false: => ['0', 'f', 'false', 'off', 'n', 'no', ...] }
|
||||
|
||||
For Booking checkin time limit
|
||||
settings/lookups =>
|
||||
{ lookup_type: checkin_time_limit, name: CheckinTimeLimit, value: total hours before checkout (e.g., '48')) }
|
||||
|
||||
/* Customer Types in lookups */
|
||||
1) settings/lookups => { type:customer_type, name: Dinein, value:Dinein }
|
||||
2) settings/lookups => { type:customer_type, name: Takeaway, value: Takeaway }
|
||||
|
||||
@@ -97,7 +97,7 @@ class Api::CheckInProcessController < Api::ApiController
|
||||
render :json => { :status => false, :error_message => "Operation failed!" }
|
||||
end
|
||||
else
|
||||
booking = dining_facility.get_current_checkout_booking
|
||||
booking = dining_facility.current_checkout_booking
|
||||
if booking.nil?
|
||||
lookup_checkout_time = Lookup.collection_of("checkout_time")
|
||||
|
||||
|
||||
@@ -57,14 +57,6 @@ class Oqs::HomeController < BaseOqsController
|
||||
end
|
||||
end
|
||||
|
||||
# booking_id = dining.get_new_booking
|
||||
# BookingOrder.where("booking_id='#{ booking_id }'").find_each do |bo|
|
||||
# order=Order.find(bo.order_id);
|
||||
# order.order_items.each do |oi|
|
||||
# items.push(oi)
|
||||
# end
|
||||
# end
|
||||
|
||||
render :json => items.to_json
|
||||
end
|
||||
|
||||
|
||||
@@ -38,12 +38,13 @@ class Origami::AddordersController < BaseOrigamiController
|
||||
@booking = @table.get_booking
|
||||
if @booking
|
||||
@booking_id = @booking.booking_id
|
||||
@obj_order = @booking.orders.first
|
||||
if @obj_order = @booking.orders.first
|
||||
@customer = @obj_order.customer
|
||||
@date = @obj_order.created_at
|
||||
@order_items = @booking.order_items
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def get_menu_category ()
|
||||
if (params[:id])
|
||||
@@ -116,7 +117,7 @@ class Origami::AddordersController < BaseOrigamiController
|
||||
extra_time = Time.at(time)
|
||||
end
|
||||
end
|
||||
if i["parent_order_item_id"];
|
||||
if i["parent_order_item_id"]
|
||||
items = {"order_item_id": i["order_item_id"],"item_instance_code": i["item_instance_code"],"quantity": i["quantity"],"parent_order_item_id": i["parent_order_item_id"],"options": JSON.parse(i["options"])}
|
||||
else
|
||||
items = {"order_item_id": i["order_item_id"],"item_instance_code": i["item_instance_code"],"quantity": i["quantity"],"options": JSON.parse(i["options"])}
|
||||
@@ -160,14 +161,11 @@ class Origami::AddordersController < BaseOrigamiController
|
||||
type = 'order'
|
||||
from = getCloudDomain #get sub domain in cloud mode
|
||||
ActionCable.server.broadcast "order_channel", table: table,type:type,from:from
|
||||
|
||||
end
|
||||
|
||||
if params[:order_source] != "quick_service" && params[:order_source] != "food_court"
|
||||
process_order_queue(@order.order_id,@order.table_id,@order.source)
|
||||
end
|
||||
end
|
||||
|
||||
# Order.send_customer_view(@booking)
|
||||
|
||||
if current_user.role != "waiter" && params[:create_type] == "create_pay"
|
||||
@@ -232,52 +230,23 @@ class Origami::AddordersController < BaseOrigamiController
|
||||
end
|
||||
|
||||
def process_order_queue(order_id,table_id,order_source)
|
||||
print_status = nil
|
||||
cup_status = nil
|
||||
|
||||
#Send to background job for processing
|
||||
order = Order.find(order_id)
|
||||
sidekiq = Lookup.find_by_lookup_type("sidekiq")
|
||||
|
||||
if ENV["SERVER_MODE"] != 'cloud'
|
||||
cup_status = `#{"sudo service cups status"}`
|
||||
print_status = check_cup_status(cup_status)
|
||||
end
|
||||
|
||||
if print_status
|
||||
if !sidekiq.nil?
|
||||
OrderQueueProcessorJob.perform_later(order_id, table_id)
|
||||
else
|
||||
if order
|
||||
oqs = OrderQueueStation.new
|
||||
oqs.process_order(order, table_id, order_source)
|
||||
end
|
||||
# assign_order = AssignedOrderItem.assigned_order_item_by_job(order_id)
|
||||
# ActionCable.server.broadcast "order_queue_station_channel",order: assign_order
|
||||
end
|
||||
else
|
||||
if ENV["SERVER_MODE"] != 'cloud'
|
||||
if !check_cup_status(cup_status)
|
||||
cup_start = `#{"sudo service cups start"}`
|
||||
cup_status = `#{"sudo service cups status"}`
|
||||
print_status = check_cup_status(cup_status)
|
||||
end
|
||||
|
||||
if print_status
|
||||
if !sidekiq.nil?
|
||||
OrderQueueProcessorJob.perform_later(order_id, table_id)
|
||||
else
|
||||
if order
|
||||
oqs = OrderQueueStation.new
|
||||
oqs.process_order(order, table_id, order_source)
|
||||
end
|
||||
# assign_order = AssignedOrderItem.assigned_order_item_by_job(order_id)
|
||||
# ActionCable.server.broadcast "order_queue_station_channel",order: assign_order
|
||||
end
|
||||
else
|
||||
if ENV["SERVER_MODE"] != 'cloud'
|
||||
from = ""
|
||||
if !check_cup_status(cup_status)
|
||||
from = ''
|
||||
msg = 'Print Error ! Please contact to service'
|
||||
ActionCable.server.broadcast "call_waiter_channel", table: msg, time:'print_error', from: from
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if !sidekiq.nil?
|
||||
OrderQueueProcessorJob.perform_later(order_id, table_id)
|
||||
else
|
||||
@@ -285,14 +254,11 @@ class Origami::AddordersController < BaseOrigamiController
|
||||
oqs = OrderQueueStation.new
|
||||
oqs.process_order(order, table_id, order_source)
|
||||
end
|
||||
|
||||
from = getCloudDomain #get sub domain in cloud mode
|
||||
assign_order = AssignedOrderItem.assigned_order_item_by_job(order_id)
|
||||
ActionCable.server.broadcast "order_queue_station_channel", order: assign_order, from: from
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def check_cup_status(status)
|
||||
if status.include? "Active: active (running)" || "Active: active (exited)" #"Cup Server is already running"
|
||||
|
||||
@@ -4,9 +4,8 @@ class Origami::HomeController < BaseOrigamiController
|
||||
|
||||
def index
|
||||
@webview = check_mobile
|
||||
|
||||
@tables = Table.unscope(:order).includes(:zone).all.active.order('status desc')
|
||||
@rooms = Room.unscope(:order).includes(:zone).all.active.order('status desc')
|
||||
@tables = Table.unscope(:order).includes(:zone, :current_checkin_booking, :current_checkout_booking, :current_reserved_booking).all.active.order('status desc')
|
||||
@rooms = Room.unscope(:order).includes(:zone, :current_checkin_booking, :current_checkout_booking, :current_reserved_booking).all.active.order('status desc')
|
||||
@complete = Sale.completed_sale("cashier")
|
||||
@orders = Order.includes("sale_orders").where("DATE_FORMAT(date,'%Y-%m-%d') = ? and status != 'billed' and source != 'quick_service'",DateTime.now.strftime('%Y-%m-%d')).order('date desc')
|
||||
|
||||
@@ -22,8 +21,8 @@ class Origami::HomeController < BaseOrigamiController
|
||||
@print_settings = PrintSetting.get_precision_delimiter()
|
||||
@webview = check_mobile
|
||||
|
||||
@tables = Table.unscope(:order).includes(:zone).all.active.order('status desc')
|
||||
@rooms = Room.unscope(:order).includes(:zone).all.active.order('status desc')
|
||||
@tables = Table.unscope(:order).includes(:zone, :current_checkin_booking, :current_checkout_booking, :current_reserved_booking).all.active.order('status desc')
|
||||
@rooms = Room.unscope(:order).includes(:zone, :current_checkin_booking, :current_checkout_booking, :current_reserved_booking).all.active.order('status desc')
|
||||
@complete = Sale.completed_sale("cashier")
|
||||
@orders = Order.includes("sale_orders").where("DATE_FORMAT(date,'%Y-%m-%d') = ? and status != 'billed' and source != 'quick_service'",DateTime.now.strftime('%Y-%m-%d')).order('date desc')
|
||||
@customers = Customer.pluck("customer_id, name")
|
||||
@@ -36,73 +35,39 @@ class Origami::HomeController < BaseOrigamiController
|
||||
@shop = shop_detail
|
||||
@membership = MembershipSetting::MembershipSetting
|
||||
@payment_methods = PaymentMethodSetting.all
|
||||
@dining_booking = @dining.bookings.active.where("DATE_FORMAT(created_at,'%Y-%m-%d') = '#{DateTime.now.strftime('%Y-%m-%d')}' OR DATE_FORMAT(created_at,'%Y-%m-%d') = '#{Date.today.prev_day}' ")
|
||||
#@dining_booking = @dining.bookings.active.where("created_at between '#{DateTime.now.utc - 12.hours}' and '#{DateTime.now.utc}'")
|
||||
@dining_booking = @dining.current_bookings
|
||||
|
||||
@order_items = Array.new
|
||||
@dining_booking.each do |booking|
|
||||
if booking.sale_id.nil? && booking.booking_status != 'moved'
|
||||
@order_items = Array.new
|
||||
# @assigned_order_items = Array.new
|
||||
if booking.booking_orders.empty?
|
||||
if @obj_sale || @booking.blank?
|
||||
@booking = booking
|
||||
else
|
||||
booking.booking_orders.each do |booking_order|
|
||||
order = Order.find(booking_order.order_id)
|
||||
if (order.status == "new")
|
||||
@obj_order = order
|
||||
@customer = order.customer
|
||||
@date = order.created_at
|
||||
@booking= booking
|
||||
order.order_items.each do |item|
|
||||
@order_items.push(item)
|
||||
# assigned_order_items = AssignedOrderItem.find_by_item_code_and_instance_code_and_order_id(item.item_code,item.item_instance_code,item.order_id)
|
||||
# if !assigned_order_items.nil?
|
||||
# @assigned_order_items.push({item.order_items_id => assigned_order_items.assigned_order_item_id})
|
||||
# end
|
||||
end
|
||||
@account_arr = Array.new
|
||||
if @customer.tax_profiles
|
||||
accounts = @customer.tax_profiles
|
||||
@account_arr =[]
|
||||
accounts.each do |acc|
|
||||
account = TaxProfile.find_by_id(acc)
|
||||
if !account.nil?
|
||||
@account_arr.push(account)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@status_order = 'order'
|
||||
else
|
||||
sale = Sale.find(booking.sale_id)
|
||||
if sale.sale_status != "completed" && sale.sale_status != 'void' && sale.sale_status != 'spoile' && sale.sale_status != 'waste'
|
||||
@sale_array.push(sale)
|
||||
if @status_order == 'order'
|
||||
@status_order = 'sale'
|
||||
end
|
||||
@booking= booking
|
||||
@date = sale.created_at
|
||||
|
||||
if booking.sale_id
|
||||
@obj_sale = booking.sale
|
||||
@sale_array.push(@obj_sale)
|
||||
@sale_taxes = @obj_sale.sale_taxes
|
||||
@status_sale = 'sale'
|
||||
@obj_sale = sale
|
||||
@customer = sale.customer
|
||||
accounts = @customer.tax_profiles
|
||||
@account_arr =[]
|
||||
accounts.each do |acc|
|
||||
account = TaxProfile.find_by_id(acc)
|
||||
if !account.nil?
|
||||
@account_arr.push(account)
|
||||
else
|
||||
@order_items += booking.order_items
|
||||
@obj_order = booking.orders.first
|
||||
end
|
||||
|
||||
if @obj_sale || @customer.blank?
|
||||
if obj = @obj_sale || @obj_order
|
||||
@customer = obj.customer
|
||||
@date = obj.created_at
|
||||
end
|
||||
end
|
||||
|
||||
if @obj_sale
|
||||
@status_order = 'sale'
|
||||
else
|
||||
@status_order = 'order'
|
||||
end
|
||||
@sale_taxes = []
|
||||
sale_taxes = SaleTax.where("sale_id = ?", sale.sale_id)
|
||||
if !sale_taxes.empty?
|
||||
sale_taxes.each do |sale_tax|
|
||||
@sale_taxes.push(sale_tax)
|
||||
end
|
||||
end
|
||||
|
||||
if (@obj_sale || @account_arr.blank?) && @customer
|
||||
@account_arr = TaxProfile.find_by(id: @customer.tax_profiles)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -31,33 +31,6 @@ class Origami::PaymentsController < BaseOrigamiController
|
||||
end
|
||||
end
|
||||
|
||||
# if ENV["SERVER_MODE"] != "cloud" #no print in cloud server
|
||||
receipt_bill_a5_pdf = Lookup.collection_of("print_settings") #print_settings with name:ReceiptBillA5Pdf
|
||||
# Print for First Bill to Customer
|
||||
unique_code = "ReceiptBillPdf"
|
||||
print_settings = PrintSetting.all
|
||||
if !print_settings.nil?
|
||||
print_settings.each do |setting|
|
||||
if setting.unique_code == 'ReceiptBillPdf'
|
||||
unique_code = "ReceiptBillPdf"
|
||||
elsif setting.unique_code == 'ReceiptBillStarPdf'
|
||||
unique_code = "ReceiptBillStarPdf"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if !receipt_bill_a5_pdf.empty?
|
||||
receipt_bill_a5_pdf.each do |receipt_bilA5|
|
||||
if receipt_bilA5[0] == 'ReceiptBillA5Pdf'
|
||||
if receipt_bilA5[1] == '1'
|
||||
unique_code = "ReceiptBillA5Pdf"
|
||||
else
|
||||
unique_code = unique_code#{}"ReceiptBillPdf"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
#shop detail
|
||||
## shop_detail = Shop.current_shop
|
||||
# customer= Customer.where('customer_id=' +.customer_id)
|
||||
@@ -82,8 +55,6 @@ class Origami::PaymentsController < BaseOrigamiController
|
||||
# current_balance = SaleAudit.paymal_search(sale_id)
|
||||
current_balance = 0
|
||||
end
|
||||
# get printer info
|
||||
print_settings=PrintSetting.find_by_unique_code(unique_code)
|
||||
|
||||
# find order id by sale id
|
||||
# sale_order = SaleOrder.find_by_sale_id(@sale_data.sale_id)
|
||||
@@ -94,6 +65,7 @@ class Origami::PaymentsController < BaseOrigamiController
|
||||
|
||||
other_amount = SaleItem.calculate_other_charges(sale_items)
|
||||
|
||||
print_settings = PrintSetting.where("unique_code REGEXP ?", "receipt.*bill.*pdf").first
|
||||
printer = Printer::ReceiptPrinter.new(print_settings)
|
||||
|
||||
#TODO :: KBZPAY ( QR )
|
||||
|
||||
@@ -62,6 +62,11 @@ class AssignedOrderItem < ApplicationRecord
|
||||
return order_item
|
||||
end
|
||||
|
||||
protected
|
||||
def self.generate_ids(count = 1)
|
||||
SeedGenerator.generate_ids(self.name, "AOI", count)
|
||||
end
|
||||
|
||||
private
|
||||
def generate_custom_id
|
||||
if self.assigned_order_item_id.nil?
|
||||
|
||||
@@ -9,8 +9,11 @@ class Booking < ApplicationRecord
|
||||
has_many :booking_orders
|
||||
has_many :orders, :through => :booking_orders
|
||||
has_many :order_items, :through => :orders
|
||||
|
||||
scope :active, -> {where("booking_status != 'moved'")}
|
||||
scope :today, -> {where("created_at >= #{Time.now.utc}")}
|
||||
scope :assign, -> { where(booking_status: 'assign')}
|
||||
scope :within_time_limit, -> { where(checkin_at: Lookup.get_checkin_time_limit.hours.ago..DateTime::Infinity.new) }
|
||||
|
||||
def self.sync_booking_records(bookings)
|
||||
if !bookings.nil?
|
||||
|
||||
@@ -3,6 +3,12 @@ class DiningFacility < ApplicationRecord
|
||||
has_many :dining_charges
|
||||
has_many :in_juties
|
||||
|
||||
has_many :bookings
|
||||
has_many :current_bookings, -> { left_joins(:sale).assign.within_time_limit.merge(Booking.where(checkout_at: nil).or(Booking.merge(Sale.where(sale_status: ['new', nil])))) }, class_name: "Booking"
|
||||
has_one :current_checkin_booking, -> { assign.within_time_limit.where(checkout_at: nil) }, class_name: "Booking"
|
||||
has_one :current_checkout_booking, -> { left_joins(:sale).assign.within_time_limit.where.not(checkout_at: nil).merge(Sale.where(sale_status: ['new', nil])) }, class_name: "Booking"
|
||||
has_one :current_reserved_booking, -> { left_joins(:sale).assign.within_time_limit.where.not(reserved_at: nil).merge(Sale.where(sale_status: nil)) }, class_name: "Booking"
|
||||
|
||||
TABLE_TYPE = "Table"
|
||||
ROOM_TYPE = "Room"
|
||||
|
||||
@@ -21,7 +27,7 @@ class DiningFacility < ApplicationRecord
|
||||
end
|
||||
|
||||
def get_booking
|
||||
booking = self.get_current_booking
|
||||
booking = self.current_checkin_booking
|
||||
if booking
|
||||
if booking.dining_facility_id.to_i == self.id
|
||||
if booking.booking_status == 'assign'
|
||||
@@ -36,23 +42,8 @@ class DiningFacility < ApplicationRecord
|
||||
Booking.where(dining_facility_id: self.id, booking_status: 'assign', checkout_at: nil).where("checkin_at > ?", checkin_time_lookup.hours.ago).first #and checkout_at is null
|
||||
end
|
||||
|
||||
def get_moved_booking
|
||||
checkin_time_lookup = Lookup.get_checkin_time_limit
|
||||
Booking.where(dining_facility_id: self.id, booking_status: 'moved', checkout_at: nil).where("checkin_at > ?", checkin_time_lookup.hours.ago).first
|
||||
end
|
||||
|
||||
def get_new_booking
|
||||
# query for new
|
||||
Booking.where(dining_facility_id: self.id, booking_status: 'assign', sale_id: nil, checkout_at: nil).first
|
||||
end
|
||||
|
||||
def get_current_checkout_booking
|
||||
checkin_time_lookup = Lookup.get_checkin_time_limit
|
||||
Booking.where(dining_facility_id: self.id, booking_status: 'assign', checkout_at: nil).where.not(reserved_at: nil).where("checkin_at > ?", checkin_time_lookup.hours.ago).first
|
||||
end
|
||||
|
||||
def get_checkout_booking
|
||||
booking = self.get_current_checkout_booking
|
||||
booking = self.current_reserved_booking
|
||||
if booking
|
||||
lookup_checkout_time = Lookup.collection_of("checkout_alert_time")
|
||||
free_time_min = 0
|
||||
@@ -91,7 +82,7 @@ class DiningFacility < ApplicationRecord
|
||||
|
||||
def self.get_checkin_booking
|
||||
checkin_time_lookup = Lookup.get_checkin_time_limit
|
||||
bookings = Booking.where(booking_status: 'assign', checkout_at: nil).where.not(reserved_at: nil).where("checkin_at > ?", checkin_time_lookup.hours.ago)
|
||||
bookings = self.current_checkin_booking
|
||||
arr_booking = Array.new
|
||||
if bookings
|
||||
lookup_checkout_time = Lookup.collection_of("checkout_alert_time")
|
||||
|
||||
@@ -57,7 +57,7 @@ class Lookup < ApplicationRecord
|
||||
end
|
||||
|
||||
def self.collection_of(type)
|
||||
Lookup.select("name, value").where("lookup_type" => type ).map { |l| [l.name, l.value] }
|
||||
Lookup.where("lookup_type" => type ).pluck("name, value")
|
||||
end
|
||||
|
||||
def self.create_shift_sale_lookup
|
||||
|
||||
@@ -31,26 +31,24 @@ class MenuItem < ApplicationRecord
|
||||
|
||||
# Work with item_code = item_instance_code
|
||||
def self.search_by_item_code(item_code)
|
||||
menu_item_hash = Hash.new
|
||||
mt_instance = MenuItemInstance.find_by_item_instance_code(item_code)
|
||||
if (!mt_instance.nil?)
|
||||
menu_item = MenuItem.find(mt_instance.menu_item_id)
|
||||
menu_item_hash[:type] = menu_item.type
|
||||
menu_item_hash[:account_id] = menu_item.account_id
|
||||
menu_item_hash[:item_code] = menu_item.item_code
|
||||
menu_item_hash[:item_instance_code] = mt_instance.item_instance_code
|
||||
menu_item_hash[:name] = menu_item.name.to_s + " - " + mt_instance.item_instance_name.to_s
|
||||
menu_item_hash[:alt_name] = menu_item.alt_name.to_s # + " - " + mt_instance.item_instance_name.to_s
|
||||
menu_item_hash[:price] = mt_instance.price
|
||||
menu_item_hash[:promotion_price] = mt_instance.promotion_price
|
||||
menu_item_hash[:is_on_promotion] = mt_instance.is_on_promotion
|
||||
menu_item_hash[:is_available] = mt_instance.is_available
|
||||
menu_item_hash[:taxable] = menu_item.taxable
|
||||
|
||||
return menu_item_hash
|
||||
end
|
||||
|
||||
return nil
|
||||
MenuItem.joins(:menu_item_instances)
|
||||
.where(menu_item_instances: {item_instance_code: item_code})
|
||||
.pluck(:type, :account_id, :item_code, :item_instance_code, :name, :alt_name, "menu_item_instances.item_instance_name AS item_instance_name", :price, :promotion_price, :is_on_promotion, "menu_item_instances.is_available", :taxable)
|
||||
.map { |type, account_id, item_code, item_instance_code, item_name, item_alt_name, item_instance_name, price, promotion_price, is_on_promotion, is_available, taxable|
|
||||
{
|
||||
type: type,
|
||||
account_id: account_id,
|
||||
item_code: item_code,
|
||||
item_instance_code: item_instance_code,
|
||||
name: item_name.to_s + (' - ' + item_instance_name.to_s) || '',
|
||||
alt_name: item_alt_name || '',
|
||||
price: price,
|
||||
promotion_price: promotion_price,
|
||||
is_on_promotion: is_on_promotion,
|
||||
is_available: is_available,
|
||||
taxable: taxable
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
def self.deleteRecursive(menu_item)
|
||||
|
||||
@@ -26,11 +26,6 @@ class Order < ApplicationRecord
|
||||
def generate
|
||||
booking = nil
|
||||
if self.new_booking
|
||||
if self.table_id.to_i > 0
|
||||
table_id = self.table_id
|
||||
else
|
||||
table_id = nil
|
||||
end
|
||||
#add extra time
|
||||
if self.is_extra_time && self.extra_time
|
||||
booking = Booking.create({:dining_facility_id => table_id,:type => "TableBooking",
|
||||
@@ -50,7 +45,6 @@ class Order < ApplicationRecord
|
||||
# table.status = "occupied"
|
||||
# table.save
|
||||
end
|
||||
|
||||
else
|
||||
booking = Booking.find(self.booking_id)
|
||||
#add extra time
|
||||
@@ -70,7 +64,7 @@ class Order < ApplicationRecord
|
||||
|
||||
self.adding_line_items
|
||||
#Add Order Table and Room relation afrer order creation
|
||||
BookingOrder.create({:booking_id => booking.booking_id, :order => self})
|
||||
booking.orders << self
|
||||
|
||||
#Send order to queue one it done!
|
||||
# if self.source != "quick_service"
|
||||
@@ -107,7 +101,7 @@ class Order < ApplicationRecord
|
||||
|
||||
self.adding_line_items
|
||||
#Add Order Table and Room relation afrer order creation
|
||||
BookingOrder.create({:booking_id => booking.booking_id, :order => self})
|
||||
booking.orders << self
|
||||
|
||||
#Send order to queue one it done!
|
||||
# if self.source != "quick_service"
|
||||
@@ -118,7 +112,6 @@ class Order < ApplicationRecord
|
||||
send_order_broadcast(booking)
|
||||
|
||||
return true, booking
|
||||
|
||||
end
|
||||
|
||||
return false
|
||||
@@ -133,49 +126,49 @@ class Order < ApplicationRecord
|
||||
def adding_line_items
|
||||
if self.items
|
||||
#re-order to
|
||||
ordered_list = re_order_items(self.items)
|
||||
|
||||
items = re_order_items(self.items)
|
||||
#loop to add all items to order
|
||||
ordered_list.each do |item|
|
||||
item_instance_codes = items.map { |i| i[:item_instance_code] }
|
||||
menu_items = MenuItem.search_by_item_code(item_instance_codes)
|
||||
menu_items += Product.search_by_product_code(item_instance_codes) if menu_items.length < item_instance_codes.length
|
||||
|
||||
menu_item = MenuItem.search_by_item_code(item[:item_instance_code])
|
||||
|
||||
# For Product while item code not in menu item
|
||||
if menu_item.nil?
|
||||
menu_item = Product.search_by_product_code(item[:item_instance_code])
|
||||
end
|
||||
|
||||
#if (!menu_item.nil?)
|
||||
# Rails.logger.debug menu_item
|
||||
set_order_items = Array.new
|
||||
##If menu Item set item - must add child items to order as well, where price is only take from menu_item
|
||||
if (menu_item[:type] == "SetMenuItem")
|
||||
if (item.include? 'sub_items') || (item.include? :sub_items)
|
||||
item[:sub_items].each do |si|
|
||||
# Retrive instance's Price
|
||||
set_item = MenuItem.search_by_item_code(si[:item_instance_code])
|
||||
set_order_items.push({"item_instance_code"=>si[:item_instance_code], "item_instance_name"=>set_item[:name], "quantity"=>si[:quantity], "price"=>set_item[:price], "options"=>si[:options]})
|
||||
new_order_items = []
|
||||
items.each do |order_item|
|
||||
menu_item = menu_items.find { |i| i[:item_instance_code].downcase == order_item[:item_instance_code].downcase }
|
||||
sub_order_items = []
|
||||
if order_item[:sub_items].length > 0
|
||||
sub_menu_items = MenuItem.search_by_item_code(order_item[:sub_items].map { |i| i[:item_instance_code] })
|
||||
order_item[:sub_items].each do |sub_order_item|
|
||||
sub_menu_item = sub_menu_items.find { |i| i[:item_instance_code] == sub_order_item[:item_instance_code] }
|
||||
sub_order_items << { item_instance_code: sub_order_item[:item_instance_code], item_instance_name: sub_menu_item[:name], quantity: sub_order_item[:quantity], price: sub_menu_item[:price], options: sub_order_item[:options] }
|
||||
end
|
||||
end
|
||||
set_order_items = set_order_items.to_json
|
||||
else
|
||||
set_order_items = nil
|
||||
sub_order_items = sub_order_items.to_json
|
||||
new_order_items << OrderItem.new({
|
||||
order_id: id,
|
||||
item_code: menu_item[:item_code],
|
||||
item_instance_code: order_item[:item_instance_code],
|
||||
item_name: menu_item[:name],
|
||||
alt_name: menu_item[:alt_name],
|
||||
account_id: menu_item[:account_id],
|
||||
qty: order_item[:quantity],
|
||||
price: menu_item[:price],
|
||||
options: order_item[:options],
|
||||
set_menu_items: sub_order_items,
|
||||
item_order_by: employee_name,
|
||||
taxable: menu_item[:taxable]
|
||||
})
|
||||
end
|
||||
|
||||
# not insert with price 0
|
||||
# puts item[:price]
|
||||
# puts item
|
||||
# if(item[:price] != 0 )
|
||||
# OrderItem.processs_item(menu_item[:item_code], menu_item[:name], menu_item[:account_id],
|
||||
# item[:quantity],menu_item[:price], item[:options], set_order_items, self.id,
|
||||
# self.employee_name)
|
||||
# end
|
||||
ids = OrderItem.generate_ids(new_order_items.length)
|
||||
new_order_items.each_with_index do |order_item, index|
|
||||
order_item.order_items_id = ids[index]
|
||||
end
|
||||
|
||||
OrderItem.processs_item(menu_item[:item_code], item[:item_instance_code], menu_item[:name], menu_item[:alt_name], menu_item[:account_id],
|
||||
item[:quantity],menu_item[:price], item[:options], set_order_items, self.id,
|
||||
self.employee_name, menu_item[:taxable])
|
||||
OrderItem.import new_order_items, validate: false
|
||||
|
||||
#end
|
||||
new_order_items.each do |order_item|
|
||||
order_item.run_callbacks(:save) { true }
|
||||
end
|
||||
|
||||
self.item_count = self.order_items.count
|
||||
@@ -186,7 +179,6 @@ class Order < ApplicationRecord
|
||||
self.errors.add(:order_items, :blank, message: "Order items cannot be blank")
|
||||
return false
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def update_items_status_to_billed(items)
|
||||
@@ -213,66 +205,8 @@ class Order < ApplicationRecord
|
||||
end
|
||||
|
||||
protected
|
||||
def re_order_items(form_items) #reorder inputs items as parents and child
|
||||
parent_id = Array.new
|
||||
parents = Array.new
|
||||
parents_and_children_items = Array.new
|
||||
|
||||
new_items_list = Array.new
|
||||
|
||||
form_items.each do |parent|
|
||||
if !parent[:parent_order_item_id].nil?
|
||||
if (!parent_id.include?(parent[:parent_order_item_id]))
|
||||
parent_id.push(parent[:parent_order_item_id])
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
Rails.logger.debug "Parent Id count -> " + parent_id.count.to_s
|
||||
|
||||
|
||||
parent_id.each do |pid|
|
||||
form_items.each do |item|
|
||||
Rails.logger.debug "Adding - Parents -> " + pid.to_s + " - " + item[:order_item_id].to_s
|
||||
if (pid == item[:order_item_id])
|
||||
parents.push(item)
|
||||
end
|
||||
end
|
||||
end
|
||||
Rails.logger.debug "Parents count -> " + parents.count.to_s
|
||||
|
||||
parents.each do |parent|
|
||||
children = Array.new
|
||||
form_items.each do |item|
|
||||
if (parent[:order_item_id] == item[:parent_order_item_id] )
|
||||
children.push(item)
|
||||
#Items to remove for new list
|
||||
parents_and_children_items.push(item)
|
||||
end
|
||||
end
|
||||
parent[:sub_items] = children
|
||||
end
|
||||
Rails.logger.debug "Parent/children Items to remove -> " + parents_and_children_items.count.to_s
|
||||
|
||||
#Remove process items
|
||||
#c = a.reject{ |e| b.include? e }
|
||||
|
||||
new_items_list = form_items - parents_and_children_items
|
||||
|
||||
|
||||
Rails.logger.debug "New list count -> " + new_items_list.count.to_s
|
||||
|
||||
#Add parent to the list
|
||||
#new_items_list = new_items_list + parents
|
||||
|
||||
Rails.logger.debug "Re-Order List (Parent)-"
|
||||
|
||||
Rails.logger.debug parents
|
||||
|
||||
Rails.logger.debug "Re-Order List -"
|
||||
Rails.logger.debug new_items_list
|
||||
|
||||
return new_items_list
|
||||
def re_order_items(items) #reorder inputs items as parents and child
|
||||
new_items = items.select { |i| i[:parent_order_item_id].blank? }.map { |x| x[:sub_items] = items.select { |y| x[:order_item_id] == y[:parent_order_item_id] }; x }
|
||||
end
|
||||
|
||||
|
||||
|
||||
@@ -102,7 +102,13 @@ class OrderItem < ApplicationRecord
|
||||
end
|
||||
end
|
||||
|
||||
protected
|
||||
def self.generate_ids(count = 1)
|
||||
SeedGenerator.generate_ids(self.name, "ODI", count)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def generate_custom_id
|
||||
if self.order_items_id.nil?
|
||||
self.order_items_id = SeedGenerator.generate_id(self.class.name, "ODI")
|
||||
|
||||
@@ -17,87 +17,24 @@ class OrderQueueStation < ApplicationRecord
|
||||
def process_order(order, table_id, order_source = nil, pdf_status = nil ,change_to=nil, current_user=nil)
|
||||
|
||||
oqs_stations = OrderQueueStation.active
|
||||
|
||||
|
||||
order_items = order.order_items
|
||||
|
||||
if table_id.to_i > 0
|
||||
# get dining
|
||||
dining = DiningFacility.find(table_id)
|
||||
oqs_by_zones = OrderQueueProcessByZone.where("zone_id=#{dining.zone_id}")
|
||||
booking = Booking.find_by_dining_facility_id(dining.id)
|
||||
oqs_by_zones = OrderQueueProcessByZone.where("zone_id=#{dining.zone_id}").pluck(:order_queue_station_id)
|
||||
oqs_stations = oqs_stations.select { |s| oqs_by_zones.include? s.id }
|
||||
end
|
||||
|
||||
assigned_order_items = []
|
||||
oqs_order_items_by_zones = []
|
||||
|
||||
# ToDo per item per printer
|
||||
|
||||
oqs_by_zones.each do |oqpbz|
|
||||
oqs = OrderQueueStation.find(oqpbz.order_queue_station_id)
|
||||
is_auto_printed = false
|
||||
oqs_order_items = []
|
||||
|
||||
if oqs.is_active
|
||||
#Get List of items -
|
||||
pq_items = JSON.parse(oqs.processing_items)
|
||||
#Loop through the processing items
|
||||
pq_items.each do |pq_item|
|
||||
#Processing through the looping items
|
||||
order_items.each do |order_item|
|
||||
if (pq_item == order_item.item_code)
|
||||
# if oqs.id == oqpbz.order_queue_station_id
|
||||
# #Same Order_items can appear in two location.
|
||||
# AssignedOrderItem.assigned_order_item(order, order_item.item_code, oqs)
|
||||
# else
|
||||
|
||||
if (order_item.qty > 0)
|
||||
if pdf_status.nil?
|
||||
AssignedOrderItem.assigned_order_item(order, order_item.item_code, order_item.item_instance_code, oqs)
|
||||
end
|
||||
oqs_order_items.push(order_item)
|
||||
end
|
||||
# end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if oqs.auto_print && order_source != "quick_service"
|
||||
if oqs_order_items.length > 0
|
||||
if oqs.cut_per_item
|
||||
print_slip_item(oqs, order, oqs_order_items,pdf_status,change_to,current_user,table_id)
|
||||
else
|
||||
print_slip(oqs, order, oqs_order_items,pdf_status,change_to,current_user,table_id)
|
||||
end
|
||||
is_auto_printed = true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
else
|
||||
oqs_stations.each do |oqs|
|
||||
is_auto_printed = false
|
||||
oqs_order_items = []
|
||||
|
||||
if oqs.is_active
|
||||
#Get List of items -
|
||||
pq_items = JSON.parse(oqs.processing_items)
|
||||
#Loop through the processing items
|
||||
pq_items.each do |pq_item|
|
||||
#Processing through the looping items
|
||||
order_items.each do |order_item|
|
||||
if (pq_item == order_item.item_code)
|
||||
# if oqs.id == oqpbz.order_queue_station_id
|
||||
# #Same Order_items can appear in two location.
|
||||
# AssignedOrderItem.assigned_order_item(order, order_item.item_code, oqs)
|
||||
# else
|
||||
|
||||
if (order_item.qty > 0)
|
||||
if pdf_status.nil?
|
||||
AssignedOrderItem.assigned_order_item(order, order_item.item_code, order_item.item_instance_code, oqs)
|
||||
end
|
||||
oqs_order_items.push(order_item)
|
||||
end
|
||||
# end
|
||||
end
|
||||
end
|
||||
end
|
||||
oqs_order_items = nil
|
||||
oqs_order_items = order_items.select { |i| JSON.parse(oqs.processing_items).include? i.item_code }
|
||||
assigned_order_items += oqs_order_items.map { |i| AssignedOrderItem.new({ order: order, item_code: i.item_code, instance_code: i.item_instance_code, order_queue_station: oqs, print_status: false, delivery_status: false }) }
|
||||
oqs_order_items_by_zones << { oqs: oqs, oqs_order_items: oqs_order_items }
|
||||
|
||||
if oqs.auto_print && order_source != "quick_service"
|
||||
if oqs_order_items.length > 0
|
||||
@@ -106,12 +43,18 @@ class OrderQueueStation < ApplicationRecord
|
||||
else
|
||||
print_slip(oqs, order, oqs_order_items, pdf_status, change_to, current_user, table_id)
|
||||
end
|
||||
is_auto_printed = true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if pdf_status.nil?
|
||||
ids = AssignedOrderItem.generate_ids(assigned_order_items.length)
|
||||
assigned_order_items.each_with_index do |assigned_order_item, index|
|
||||
assigned_order_item.assigned_order_item_id = ids[index]
|
||||
end
|
||||
|
||||
AssignedOrderItem.import assigned_order_items, validate: false
|
||||
end
|
||||
end #end else
|
||||
end
|
||||
|
||||
def pay_process_order_queue (order_id, table_id)
|
||||
@@ -213,80 +156,36 @@ class OrderQueueStation < ApplicationRecord
|
||||
#Print order_items in 1 slip
|
||||
def print_slip(oqs, order, order_items ,pdf_status=nil,change_to=nil,current_user=nil,table_id=nil)
|
||||
if pdf_status.nil?
|
||||
printer = PrintSetting.all.order("id ASC")
|
||||
unique_code="OrderSummaryPdf"
|
||||
|
||||
if !printer.empty?
|
||||
printer.each do |printer_setting|
|
||||
if printer_setting.unique_code == 'OrderSummaryPdf'
|
||||
unique_code="OrderSummaryPdf"
|
||||
elsif printer_setting.unique_code == 'OrderSummarySlimPdf'
|
||||
unique_code="OrderSummarySlimPdf"
|
||||
elsif printer_setting.unique_code == 'OrderSummarySetPdf'
|
||||
unique_code="OrderSummarySetPdf"
|
||||
elsif printer_setting.unique_code == 'OrderSummaryCustomisePdf'
|
||||
unique_code="OrderSummaryCustomisePdf"
|
||||
elsif printer_setting.unique_code == 'OrderSummarySetCustomisePdf'
|
||||
unique_code="OrderSummarySetCustomisePdf"
|
||||
elsif printer_setting.unique_code == 'OrderSummarySlimCustomisePdf'
|
||||
unique_code="OrderSummarySlimCustomisePdf"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
print_settings=PrintSetting.find_by_unique_code(unique_code)
|
||||
if print_settings = PrintSetting.where("unique_code REGEXP ?", "order.*summary.*pdf").first
|
||||
order_queue_printer = Printer::OrderQueuePrinter.new(print_settings)
|
||||
order_queue_printer.print_order_summary(print_settings, oqs, order.order_id, order_items, print_status="")
|
||||
end
|
||||
else
|
||||
move_print_pdf(change_to,current_user,table_id,order_items,oqs)
|
||||
end
|
||||
|
||||
assigned =AssignedOrderItem.where("order_id = '#{ order.order_id }'").pluck(:assigned_order_item_id)
|
||||
AssignedOrderItem.where('assigned_order_item_id IN (?)', assigned).update_all(print_status: true)
|
||||
AssignedOrderItem.where("order_id = ?", order.order_id).update_all(print_status: true)
|
||||
end
|
||||
|
||||
#Print order_item in 1 slip per item
|
||||
def print_slip_item(oqs, order, assigned_items,pdf_status=nil,change_to=nil,current_user=nil,table_id=nil)
|
||||
|
||||
if pdf_status.nil?
|
||||
printer = PrintSetting.all.order("id ASC")
|
||||
unique_code="OrderItemPdf"
|
||||
|
||||
if !printer.empty?
|
||||
printer.each do |printer_setting|
|
||||
if printer_setting.unique_code == 'OrderItemPdf'
|
||||
unique_code="OrderItemPdf"
|
||||
elsif printer_setting.unique_code == 'OrderItemStarPdf'
|
||||
unique_code="OrderItemStarPdf"
|
||||
elsif printer_setting.unique_code == 'OrderItemSlimPdf'
|
||||
unique_code="OrderItemSlimPdf"
|
||||
elsif printer_setting.unique_code == 'OrderSetItemPdf'
|
||||
unique_code="OrderSetItemPdf"
|
||||
elsif printer_setting.unique_code == 'OrderItemCustomisePdf'
|
||||
unique_code="OrderItemCustomisePdf"
|
||||
elsif printer_setting.unique_code == 'OrderSetItemCustomisePdf'
|
||||
unique_code="OrderSetItemCustomisePdf"
|
||||
elsif printer_setting.unique_code == 'OrderItemSlimCustomisePdf'
|
||||
unique_code="OrderItemSlimCustomisePdf"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# order_item = OrderItem.where("order_id='#{assigned_item.order_id}' AND item_instance_code='#{assigned_item.instance_code}'").first()
|
||||
# print when complete click
|
||||
print_settings=PrintSetting.find_by_unique_code(unique_code)
|
||||
if print_settings = PrintSetting.where("unique_code REGEXP ?", "order.*item.*pdf").first
|
||||
order_queue_printer = Printer::OrderQueuePrinter.new(print_settings)
|
||||
if !assigned_items.nil?
|
||||
assigned_items.each do |order_item|
|
||||
order_queue_printer.print_order_item(print_settings, oqs,order_item.order_id, order_item.order_items_id, print_status="" )
|
||||
end
|
||||
end
|
||||
end
|
||||
else
|
||||
move_print_pdf(change_to,current_user,table_id,assigned_items,oqs)
|
||||
end
|
||||
|
||||
assigned =AssignedOrderItem.where("order_id = '#{ order.order_id }'").pluck(:assigned_order_item_id)
|
||||
AssignedOrderItem.where('assigned_order_item_id IN (?)', assigned).update_all(print_status: true)
|
||||
AssignedOrderItem.where("order_id = ?", order.order_id).update_all(print_status: true)
|
||||
end
|
||||
|
||||
def move_print_pdf(change_to,current_user,change_from,order_items,oqs)
|
||||
|
||||
@@ -9,33 +9,10 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker
|
||||
|
||||
order_item = print_query('order_item', order_item_id) #OrderItem.find_by_item_code(item_code)
|
||||
options = order_item[0].options
|
||||
# filename = "tmp/order_item_#{order_id}_#{order_item_id}" + ".pdf"
|
||||
|
||||
# pdf = OrderItemPdf.new(print_settings,order_item[0], print_status, options, oqs.use_alternate_name, before_updated_qty)
|
||||
print_setting = PrintSetting.all
|
||||
|
||||
# check for item not to show
|
||||
pdf = ''
|
||||
# if order_item[0].price != 0
|
||||
if !print_setting.empty?
|
||||
print_setting.each do |print_settings|
|
||||
if print_settings.unique_code == 'OrderItemPdf'
|
||||
pdf = OrderItemPdf.new(print_settings,order_item[0], print_status, options, oqs.use_alternate_name, before_updated_qty)
|
||||
elsif print_settings.unique_code == 'OrderItemStarPdf'
|
||||
pdf = OrderItemStarPdf.new(print_settings,order_item[0], print_status, options, oqs.use_alternate_name, before_updated_qty)
|
||||
elsif print_settings.unique_code == 'OrderItemSlimPdf'
|
||||
pdf = OrderItemSlimPdf.new(print_settings,order_item[0], print_status, options, oqs.use_alternate_name, before_updated_qty)
|
||||
elsif print_settings.unique_code == 'OrderSetItemPdf'
|
||||
pdf = OrderSetItemPdf.new(print_settings,order_item[0], print_status, options, oqs.use_alternate_name, before_updated_qty)
|
||||
elsif print_settings.unique_code == 'OrderItemCustomisePdf'
|
||||
pdf = OrderItemCustomisePdf.new(print_settings,order_item[0], print_status, options, oqs.use_alternate_name, before_updated_qty)
|
||||
elsif print_settings.unique_code == 'OrderSetItemCustomisePdf'
|
||||
pdf = OrderSetItemCustomisePdf.new(print_settings,order_item[0], print_status, options, oqs.use_alternate_name, before_updated_qty)
|
||||
elsif print_settings.unique_code == 'OrderItemSlimCustomisePdf'
|
||||
pdf = OrderItemSlimCustomisePdf.new(print_settings,order_item[0], print_status, options, oqs.use_alternate_name, before_updated_qty)
|
||||
end
|
||||
end
|
||||
end
|
||||
pdf = print_settings.unique_code.constantize.new(print_settings,order_item[0], print_status, options, oqs.use_alternate_name, before_updated_qty)
|
||||
# end
|
||||
|
||||
shop = Shop.current_shop
|
||||
@@ -77,9 +54,6 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker
|
||||
print_settings.save!
|
||||
end
|
||||
|
||||
print_setting = PrintSetting.all.order("id ASC")
|
||||
order=print_query('order_summary', order_id)
|
||||
|
||||
shop = Shop.current_shop
|
||||
directory_name = 'public/orders_'+shop.shop_code
|
||||
Dir.mkdir(directory_name) unless File.exists?(directory_name)
|
||||
@@ -97,26 +71,7 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker
|
||||
|
||||
# check for item not to show
|
||||
#if odi.price != 0
|
||||
pdf = OrderItemPdf.new(print_settings,odi_item[0], print_status, options, oqs.use_alternate_name,before_updated_qty)
|
||||
if !print_setting.empty?
|
||||
print_setting.each do |print_settings|
|
||||
if print_settings.unique_code == 'OrderItemPdf'
|
||||
pdf = OrderItemPdf.new(print_settings,odi_item[0], print_status, options, oqs.use_alternate_name,before_updated_qty)
|
||||
elsif print_settings.unique_code == 'OrderItemStarPdf'
|
||||
pdf = OrderItemStarPdf.new(print_settings,order_item[0], print_status, options, oqs.use_alternate_name, before_updated_qty)
|
||||
elsif print_settings.unique_code == 'OrderItemSlimPdf'
|
||||
pdf = OrderItemSlimPdf.new(print_settings,odi_item[0], print_status, options, oqs.use_alternate_name,before_updated_qty)
|
||||
elsif print_settings.unique_code == 'OrderSetItemPdf'
|
||||
pdf = OrderSetItemPdf.new(print_settings,odi_item[0], print_status, options, oqs.use_alternate_name,before_updated_qty)
|
||||
elsif print_settings.unique_code == 'OrderItemCustomisePdf'
|
||||
pdf = OrderItemCustomisePdf.new(print_settings,odi_item[0], print_status, options, oqs.use_alternate_name,before_updated_qty)
|
||||
elsif print_settings.unique_code == 'OrderSetItemCustomisePdf'
|
||||
pdf = OrderSetItemCustomisePdf.new(print_settings,odi_item[0], print_status, options, oqs.use_alternate_name,before_updated_qty)
|
||||
elsif print_settings.unique_code == 'OrderItemSlimCustomisePdf'
|
||||
pdf = OrderItemSlimCustomisePdf.new(print_settings,odi_item[0], print_status, options, oqs.use_alternate_name,before_updated_qty)
|
||||
end
|
||||
end
|
||||
end
|
||||
pdf = print_settings.unique_code.constantize.new(print_settings, odi_item[0], print_status, options, oqs.use_alternate_name, before_updated_qty)
|
||||
|
||||
# pdf.render_file "tmp/order_item.pdf"
|
||||
pdf.render_file filename
|
||||
@@ -138,26 +93,11 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker
|
||||
end
|
||||
# For Print Order Summary
|
||||
else
|
||||
order = print_query('order_summary', order_id)
|
||||
|
||||
filename = directory_name + "/order_summary_#{order_id}" + ".pdf"
|
||||
# filename = "tmp/order_summary_#{order_id}" + ".pdf"
|
||||
pdf = OrderSummaryPdf.new(print_settings,order, print_status, order_items, oqs.use_alternate_name,before_updated_qty)
|
||||
if !print_setting.empty?
|
||||
print_setting.each do |print_settings|
|
||||
if print_settings.unique_code == 'OrderSummaryPdf'
|
||||
pdf = OrderSummaryPdf.new(print_settings,order, print_status, order_items, oqs.use_alternate_name,before_updated_qty)
|
||||
elsif print_settings.unique_code == 'OrderSummarySlimPdf'
|
||||
pdf = OrderSummarySlimPdf.new(print_settings,order, print_status, order_items, oqs.use_alternate_name,before_updated_qty)
|
||||
elsif print_settings.unique_code == 'OrderSummarySetPdf'
|
||||
pdf = OrderSummarySetPdf.new(print_settings,order, print_status, order_items, oqs.use_alternate_name,before_updated_qty)
|
||||
elsif print_settings.unique_code == 'OrderSummaryCustomisePdf'
|
||||
pdf = OrderSummaryCustomisePdf.new(print_settings,order, print_status, order_items, oqs.use_alternate_name,before_updated_qty)
|
||||
elsif print_settings.unique_code == 'OrderSummarySetCustomisePdf'
|
||||
pdf = OrderSummarySetCustomisePdf.new(print_settings,order, print_status, order_items, oqs.use_alternate_name,before_updated_qty)
|
||||
elsif print_settings.unique_code == 'OrderSummarySlimCustomisePdf'
|
||||
pdf = OrderSummarySlimCustomisePdf.new(print_settings,order, print_status, order_items, oqs.use_alternate_name,before_updated_qty)
|
||||
end
|
||||
end
|
||||
end
|
||||
pdf = print_settings.unique_code.constantize.new(print_settings, order, print_status, order_items, oqs.use_alternate_name, before_updated_qty)
|
||||
|
||||
pdf.render_file filename
|
||||
if oqs.print_copy
|
||||
@@ -206,26 +146,8 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker
|
||||
|
||||
# check for item not to show
|
||||
#if odi.price != 0
|
||||
pdf = OrderItemPdf.new(print_settings,odi, print_status, options,oqs.use_alternate_name,before_updated_qty)
|
||||
if !print_setting.empty?
|
||||
print_setting.each do |print_settings|
|
||||
if print_settings.unique_code == 'OrderItemPdf'
|
||||
pdf = OrderItemPdf.new(print_settings,odi, print_status, options,oqs.use_alternate_name,before_updated_qty)
|
||||
elsif print_settings.unique_code == 'OrderItemStarPdf'
|
||||
pdf = OrderItemStarPdf.new(print_settings,odi, print_status, options,oqs.use_alternate_name,before_updated_qty)
|
||||
elsif print_settings.unique_code == 'OrderItemSlimPdf'
|
||||
pdf = OrderItemSlimPdf.new(print_settings,odi, print_status, options,oqs.use_alternate_name,before_updated_qty)
|
||||
elsif print_settings.unique_code == 'OrderSetItemPdf'
|
||||
pdf = OrderSetItemPdf.new(print_settings,odi, print_status, options,oqs.use_alternate_name,before_updated_qty)
|
||||
elsif print_settings.unique_code == 'OrderItemCustomisePdf'
|
||||
pdf = OrderItemCustomisePdf.new(print_settings,odi, print_status, options,oqs.use_alternate_name,before_updated_qty)
|
||||
elsif print_settings.unique_code == 'OrderSetItemCustomisePdf'
|
||||
pdf = OrderSetItemCustomisePdf.new(print_settings,odi, print_status, options,oqs.use_alternate_name,before_updated_qty)
|
||||
elsif print_settings.unique_code == 'OrderItemSlimCustomisePdf'
|
||||
pdf = OrderItemSlimCustomisePdf.new(print_settings,odi, print_status, options,oqs.use_alternate_name,before_updated_qty)
|
||||
end
|
||||
end
|
||||
end
|
||||
pdf = print_settings.unique_code.constantize.new(print_settings,odi, print_status, options,oqs.use_alternate_name,before_updated_qty)
|
||||
|
||||
pdf.render_file filename
|
||||
|
||||
if oqs.print_copy
|
||||
@@ -250,25 +172,7 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker
|
||||
else
|
||||
# filename = "tmp/booking_summary_#{booking_id}" + ".pdf"
|
||||
filename = directory_name + "/booking_summary_#{booking_id}" + ".pdf"
|
||||
pdf = OrderSummaryPdf.new(print_settings,order, print_status,oqs.use_alternate_name,before_updated_qty)
|
||||
|
||||
if !print_setting.empty?
|
||||
print_setting.each do |print_settings|
|
||||
if print_settings.unique_code == 'OrderSummaryPdf'
|
||||
pdf = OrderSummaryPdf.new(print_settings,order, print_status,oqs.use_alternate_name,before_updated_qty)
|
||||
elsif print_settings.unique_code == 'OrderSummarySlimPdf'
|
||||
pdf = OrderSummarySlimPdf.new(print_settings,order, print_status,oqs.use_alternate_name,before_updated_qty)
|
||||
elsif print_settings.unique_code == 'OrderSummarySetPdf'
|
||||
pdf = OrderSummarySetPdf.new(print_settings,order, print_status,oqs.use_alternate_name,before_updated_qty)
|
||||
elsif print_settings.unique_code == 'OrderSummaryCustomisePdf'
|
||||
pdf = OrderSummaryCustomisePdf.new(print_settings,order, print_status,oqs.use_alternate_name,before_updated_qty)
|
||||
elsif print_settings.unique_code == 'OrderSummarySetCustomisePdf'
|
||||
pdf = OrderSummarySetCustomisePdf.new(print_settings,order, print_status,oqs.use_alternate_name,before_updated_qty)
|
||||
elsif print_settings.unique_code == 'OrderSummarySlimCustomisePdf'
|
||||
pdf = OrderSummarySlimCustomisePdf.new(print_settings,order, print_status,oqs.use_alternate_name,before_updated_qty)
|
||||
end
|
||||
end
|
||||
end
|
||||
pdf = print_settings.unique_code.constantize.new(print_settings,order, print_status,oqs.use_alternate_name,before_updated_qty)
|
||||
|
||||
pdf.render_file filename
|
||||
if oqs.print_copy
|
||||
@@ -293,36 +197,23 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker
|
||||
|
||||
# Query for OQS with status
|
||||
def print_query(type, id)
|
||||
query = OrderItem.select("order_items.order_id, order_items.item_code, order_items.item_name, order_items.qty, order_items.price, order_items.options, order_items.item_order_by as order_by, order_items.created_at as order_at, order_items.set_menu_items, cus.name as customer, df.type, df.name as dining,item.alt_name as alt_name")
|
||||
.joins("left join orders ON orders.order_id = order_items.order_id")
|
||||
.joins("left join booking_orders AS bo ON bo.order_id=order_items.order_id")
|
||||
.joins("left join bookings AS b ON b.booking_id = bo.booking_id")
|
||||
.joins("left join dining_facilities AS df ON df.id = b.dining_facility_id")
|
||||
.joins("left join customers as cus ON cus.customer_id = orders.customer_id")
|
||||
.joins("left join menu_items as item ON item.item_code = order_items.item_code")
|
||||
|
||||
if type == "order_item"
|
||||
OrderItem.select("order_items.order_id, order_items.item_code, order_items.item_name, order_items.qty, order_items.price, order_items.options, order_items.item_order_by as order_by, order_items.created_at as order_at, order_items.set_menu_items, cus.name as customer, df.type, df.name as dining,item.alt_name as alt_name")
|
||||
.joins("left join orders ON orders.order_id = order_items.order_id
|
||||
left join booking_orders AS bo ON bo.order_id=order_items.order_id
|
||||
left join bookings AS b ON b.booking_id = bo.booking_id
|
||||
left join dining_facilities AS df ON df.id = b.dining_facility_id
|
||||
left join customers as cus ON cus.customer_id = orders.customer_id
|
||||
left join menu_items as item ON item.item_code = order_items.item_code")
|
||||
.where("order_items.order_items_id = '#{ id }'")
|
||||
query.where("order_items.order_items_id = '#{ id }'")
|
||||
.group("order_items.item_code")
|
||||
elsif type == "order_summary"
|
||||
OrderItem.select("order_items.order_id, order_items.item_code, order_items.item_name, order_items.qty, order_items.price, order_items.options, order_items.item_order_by as order_by, order_items.created_at as order_at, order_items.set_menu_items, cus.name as customer, df.type, df.name as dining,item.alt_name as alt_name")
|
||||
.joins("left join orders ON orders.order_id = order_items.order_id
|
||||
left join booking_orders AS bo ON bo.order_id=order_items.order_id
|
||||
left join bookings AS b ON b.booking_id = bo.booking_id
|
||||
left join dining_facilities AS df ON df.id = b.dining_facility_id
|
||||
left join customers as cus ON cus.customer_id = orders.customer_id
|
||||
left join menu_items as item ON item.item_code = order_items.item_code")
|
||||
.where("orders.order_id = '#{ id }'")
|
||||
query.where("orders.order_id = '#{ id }'")
|
||||
.group("order_items.order_items_id")
|
||||
else
|
||||
# order summary for booking
|
||||
OrderItem.select("order_items.order_id, order_items.item_code, order_items.item_name, order_items.qty, order_items.price, order_items.options, order_items.item_order_by as order_by, order_items.created_at as order_at, order_items.set_menu_items, cus.name as customer, df.type, df.name as dining,item.alt_name as alt_name")
|
||||
.joins("left join orders ON orders.order_id = order_items.order_id
|
||||
left join booking_orders AS bo ON bo.order_id=order_items.order_id
|
||||
left join bookings AS b ON b.booking_id = bo.booking_id
|
||||
left join dining_facilities AS df ON df.id = b.dining_facility_id
|
||||
left join customers as cus ON cus.customer_id = orders.customer_id
|
||||
left join menu_items as item ON item.item_code = order_items.item_code")
|
||||
.where("b.booking_id = '#{ id }'")
|
||||
query.where("b.booking_id = '#{ id }'")
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -4,26 +4,9 @@ class Printer::ReceiptPrinter < Printer::PrinterWorker
|
||||
#Use CUPS service
|
||||
#Generate PDF
|
||||
#Print
|
||||
printer = PrintSetting.all
|
||||
pdf = OrderItemPdf.new
|
||||
printer = PrintSetting.where("unique_code REGEXP ?", "order.*item.*pdf").first
|
||||
pdf = printer.unique_code.constantize.new
|
||||
|
||||
if !printer.empty?
|
||||
printer.each do |printer_setting|
|
||||
if printer_setting.unique_code == 'OrderItemPdf'
|
||||
pdf = OrderItemPdf.new
|
||||
elsif printer_setting.unique_code == 'OrderItemSlimPdf'
|
||||
pdf = OrderItemSlimPdf.new
|
||||
elsif printer_setting.unique_code == 'OrderSetItemPdf'
|
||||
pdf = OrderSetItemPdf.new
|
||||
elsif printer_setting.unique_code == 'OrderItemCustomisePdf'
|
||||
pdf = OrderItemCustomisePdf.new
|
||||
elsif printer_setting.unique_code == 'OrderSetItemCustomisePdf'
|
||||
pdf = OrderSetItemCustomisePdf.new
|
||||
elsif printer_setting.unique_code == 'OrderItemSlimCustomisePdf'
|
||||
pdf = OrderItemSlimCustomisePdf.new
|
||||
end
|
||||
end
|
||||
end
|
||||
pdf.render_file "tmp/order_item_queue_#{order_id}_#{order_item_id}" + ".pdf"
|
||||
#no print in cloud server
|
||||
if ENV["SERVER_MODE"] != "cloud"
|
||||
@@ -36,26 +19,9 @@ class Printer::ReceiptPrinter < Printer::PrinterWorker
|
||||
#Generate PDF
|
||||
#Print
|
||||
filename = "tmp/order_summary_#{booking_id}" + ".pdf"
|
||||
printer = PrintSetting.all
|
||||
pdf = OrderSummaryPdf.new
|
||||
printer = PrintSetting.where("unique_code REGEXP ?", "order.*summary.*pdf").first
|
||||
pdf = printer.unique_code.constantize.new
|
||||
|
||||
if !printer.empty?
|
||||
printer.each do |printer_setting|
|
||||
if printer_setting.unique_code == 'OrderSummaryPdf'
|
||||
pdf = OrderSummaryPdf.new
|
||||
elsif printer_setting.unique_code == 'OrderSummarySlimPdf'
|
||||
pdf = OrderSummarySlimPdf.new
|
||||
elsif printer_setting.unique_code == 'OrderSummarySetPdf'
|
||||
pdf = OrderSummarySetPdf.new
|
||||
elsif printer_setting.unique_code == 'OrderSummaryCustomisePdf'
|
||||
pdf = OrderSummaryCustomisePdf.new
|
||||
elsif printer_setting.unique_code == 'OrderSummarySetCustomisePdf'
|
||||
pdf = OrderSummarySetCustomisePdf.new
|
||||
elsif printer_setting.unique_code == 'OrderSummarySlimCustomisePdf'
|
||||
pdf = OrderSummarySlimCustomisePdf.new
|
||||
end
|
||||
end
|
||||
end
|
||||
pdf.render_file filename
|
||||
#no print in cloud server
|
||||
if ENV["SERVER_MODE"] != "cloud"
|
||||
@@ -67,26 +33,10 @@ class Printer::ReceiptPrinter < Printer::PrinterWorker
|
||||
#Use CUPS service
|
||||
#Generate PDF
|
||||
#Print
|
||||
printer = PrintSetting.all
|
||||
printer = PrintSetting.where("unique_code REGEXP ?", "order.*summary.*pdf").first
|
||||
filename = "tmp/order_summary_#{booking_id}" + ".pdf"
|
||||
pdf = OrderSummaryPdf.new
|
||||
if !printer.empty?
|
||||
printer.each do |printer_setting|
|
||||
if printer_setting.unique_code == 'OrderSummaryPdf'
|
||||
pdf = OrderSummaryPdf.new
|
||||
elsif printer_setting.unique_code == 'OrderSummarySlimPdf'
|
||||
pdf = OrderSummarySlimPdf.new
|
||||
elsif printer_setting.unique_code == 'OrderSummarySetPdf'
|
||||
pdf = OrderSummarySetPdf.new
|
||||
elsif printer_setting.unique_code == 'OrderSummaryCustomisePdf'
|
||||
pdf = OrderSummaryCustomisePdf.new
|
||||
elsif printer_setting.unique_code == 'OrderSummarySetCustomisePdf'
|
||||
pdf = OrderSummarySetCustomisePdf.new
|
||||
elsif printer_setting.unique_code == 'OrderSummarySlimCustomisePdf'
|
||||
pdf = OrderSummarySlimCustomisePdf.new
|
||||
end
|
||||
end
|
||||
end
|
||||
pdf = printer.unique_code.constantize.new
|
||||
|
||||
pdf.render_file filename
|
||||
#no print in cloud server
|
||||
if ENV["SERVER_MODE"] != "cloud"
|
||||
@@ -98,26 +48,10 @@ class Printer::ReceiptPrinter < Printer::PrinterWorker
|
||||
#Use CUPS service
|
||||
#Generate PDF
|
||||
#Print
|
||||
printer = PrintSetting.all
|
||||
printer = PrintSetting.where("unique_code REGEXP ?", "order.*summary.*pdf").first
|
||||
filename = "tmp/order_summary_#{booking_id}" + ".pdf"
|
||||
pdf = OrderSummaryPdf.new
|
||||
if !printer.empty?
|
||||
printer.each do |printer_setting|
|
||||
if printer_setting.unique_code == 'OrderSummaryPdf'
|
||||
pdf = OrderSummaryPdf.new
|
||||
elsif printer_setting.unique_code == 'OrderSummarySlimPdf'
|
||||
pdf = OrderSummarySlimPdf.new
|
||||
elsif printer_setting.unique_code == 'OrderSummarySetPdf'
|
||||
pdf = OrderSummarySetPdf.new
|
||||
elsif printer_setting.unique_code == 'OrderSummaryCustomisePdf'
|
||||
pdf = OrderSummaryCustomisePdf.new
|
||||
elsif printer_setting.unique_code == 'OrderSummarySetCustomisePdf'
|
||||
pdf = OrderSummarySetCustomisePdf.new
|
||||
elsif printer_setting.unique_code == 'OrderSummarySlimCustomisePdf'
|
||||
pdf = OrderSummarySlimCustomisePdf.new
|
||||
end
|
||||
end
|
||||
end
|
||||
pdf = printer.unique_code.constantize.new
|
||||
|
||||
pdf.render_file filename
|
||||
#no print in cloud server
|
||||
if ENV["SERVER_MODE"] != "cloud"
|
||||
@@ -129,26 +63,10 @@ class Printer::ReceiptPrinter < Printer::PrinterWorker
|
||||
#Use CUPS service
|
||||
#Generate PDF
|
||||
#Print
|
||||
printer = PrintSetting.all
|
||||
printer = PrintSetting.where("unique_code REGEXP ?", "order.*summary.*pdf").first
|
||||
filename = "tmp/order_summary_#{booking_id}" + ".pdf"
|
||||
pdf = OrderSummaryPdf.new
|
||||
if !printer.empty?
|
||||
printer.each do |printer_setting|
|
||||
if printer_setting.unique_code == 'OrderSummaryPdf'
|
||||
pdf = OrderSummaryPdf.new
|
||||
elsif printer_setting.unique_code == 'OrderSummarySlimPdf'
|
||||
pdf = OrderSummarySlimPdf.new
|
||||
elsif printer_setting.unique_code == 'OrderSummarySetPdf'
|
||||
pdf = OrderSummarySetPdf.new
|
||||
elsif printer_setting.unique_code == 'OrderSummaryCustomisePdf'
|
||||
pdf = OrderSummaryCustomisePdf.new
|
||||
elsif printer_setting.unique_code == 'OrderSummarySetCustomisePdf'
|
||||
pdf = OrderSummarySetCustomisePdf.new
|
||||
elsif printer_setting.unique_code == 'OrderSummarySlimCustomisePdf'
|
||||
pdf = OrderSummarySlimCustomisePdf.new
|
||||
end
|
||||
end
|
||||
end
|
||||
pdf = printer.unique_code.constantize.new
|
||||
|
||||
pdf.render_file filename
|
||||
#no print in cloud server
|
||||
if ENV["SERVER_MODE"] != "cloud"
|
||||
@@ -160,26 +78,10 @@ class Printer::ReceiptPrinter < Printer::PrinterWorker
|
||||
#Use CUPS service
|
||||
#Generate PDF
|
||||
#Print
|
||||
printer = PrintSetting.all
|
||||
printer = PrintSetting.where("unique_code REGEXP ?", "order.*summary.*pdf").first
|
||||
filename = "tmp/order_summary_#{booking_id}" + ".pdf"
|
||||
pdf = OrderSummaryPdf.new
|
||||
if !printer.empty?
|
||||
printer.each do |printer_setting|
|
||||
if printer_setting.unique_code == 'OrderSummaryPdf'
|
||||
pdf = OrderSummaryPdf.new
|
||||
elsif printer_setting.unique_code == 'OrderSummarySlimPdf'
|
||||
pdf = OrderSummarySlimPdf.new
|
||||
elsif printer_setting.unique_code == 'OrderSummarySetPdf'
|
||||
pdf = OrderSummarySetPdf.new
|
||||
elsif printer_setting.unique_code == 'OrderSummaryCustomisePdf'
|
||||
pdf = OrderSummaryCustomisePdf.new
|
||||
elsif printer_setting.unique_code == 'OrderSummarySetCustomisePdf'
|
||||
pdf = OrderSummarySetCustomisePdf.new
|
||||
elsif printer_setting.unique_code == 'OrderSummarySlimCustomisePdf'
|
||||
pdf = OrderSummarySlimCustomisePdf.new
|
||||
end
|
||||
end
|
||||
end
|
||||
pdf = printer.unique_code.constantize.new
|
||||
|
||||
pdf.render_file filename
|
||||
#no print in cloud server
|
||||
if ENV["SERVER_MODE"] != "cloud"
|
||||
@@ -192,31 +94,12 @@ class Printer::ReceiptPrinter < Printer::PrinterWorker
|
||||
#Use CUPS service
|
||||
#Generate PDF
|
||||
#Print
|
||||
if !printer_settings.nil?
|
||||
if !printer_settings.unique_code.strip.downcase.include? ("receiptbillorder")
|
||||
pdf = ReceiptBillPdf.new(printer_settings, kbz_pay_status, qr_code, sale_items, sale_data, customer_name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details,printed_status,balance,card_data,other_amount,latest_order_no,card_balance_amount)
|
||||
settings = PrintSetting.all
|
||||
if !settings.nil?
|
||||
settings.each do |setting|
|
||||
if setting.unique_code == 'ReceiptBillPdf'
|
||||
pdf = ReceiptBillPdf.new(printer_settings, kbz_pay_status, qr_code, sale_items, sale_data, customer_name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details,printed_status,balance,card_data,other_amount,latest_order_no,card_balance_amount)
|
||||
elsif setting.unique_code == 'ReceiptBillStarPdf'
|
||||
pdf = ReceiptBillStarPdf.new(printer_settings, kbz_pay_status, qr_code, sale_items, sale_data, customer_name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details,printed_status,balance,card_data,other_amount,latest_order_no,card_balance_amount)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
receipt_bill_a5_pdf = Lookup.collection_of("print_settings") #print_settings with name:ReceiptBillA5Pdf
|
||||
if !receipt_bill_a5_pdf.empty?
|
||||
receipt_bill_a5_pdf.each do |receipt_bilA5|
|
||||
if receipt_bilA5[0] == 'ReceiptBillA5Pdf'
|
||||
if receipt_bilA5[1] == '1'
|
||||
if printer_settings
|
||||
if !printer_settings.unique_code.match?(/receiptbillorder/i)
|
||||
if Lookup.collection_of("print_settings").any? { |x| x == ["ReceiptBillA5Pdf", "1"] } #print_settings with name:ReceiptBillA5Pdf
|
||||
pdf = ReceiptBillA5Pdf.new(printer_settings, sale_items, sale_data, customer_name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details,printed_status,balance,card_data,other_amount,latest_order_no,card_balance_amount)
|
||||
# else
|
||||
# pdf = ReceiptBillPdf.new(printer_settings, sale_items, sale_data, customer_name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details,printed_status,balance,card_data,other_amount,latest_order_no,card_balance_amount)
|
||||
end
|
||||
end
|
||||
end
|
||||
else
|
||||
pdf = PrintSetting.where("unique_code REGEXP ?", "receipt.*bill.*pdf").first.unique_code.constantize.new(printer_settings, kbz_pay_status, qr_code, sale_items, sale_data, customer_name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details,printed_status,balance,card_data,other_amount,latest_order_no,card_balance_amount)
|
||||
end
|
||||
else
|
||||
#doemal online order pdf template
|
||||
|
||||
@@ -5,29 +5,23 @@ class Product < ApplicationRecord
|
||||
mount_uploader :image_path, ProductImageUploader
|
||||
|
||||
def self.search_by_product_code(item_code)
|
||||
account = Account.find_by_title('Product')
|
||||
if !account.nil?
|
||||
account_id = account.id
|
||||
else
|
||||
account_id = 1
|
||||
end
|
||||
|
||||
menu_item_hash = Hash.new
|
||||
mt_instance = Product.find_by_item_code(item_code)
|
||||
if (!mt_instance.nil?)
|
||||
menu_item_hash[:type] = 'Product'
|
||||
menu_item_hash[:account_id] = account_id
|
||||
menu_item_hash[:item_code] = mt_instance.item_code
|
||||
menu_item_hash[:item_instance_code] = mt_instance.item_code
|
||||
menu_item_hash[:name] = mt_instance.name.to_s
|
||||
menu_item_hash[:alt_name] = mt_instance.alt_name.to_s
|
||||
menu_item_hash[:price] = mt_instance.unit_price
|
||||
menu_item_hash[:promotion_price] = 0
|
||||
menu_item_hash[:is_on_promotion] = 0
|
||||
menu_item_hash[:is_available] = 0
|
||||
menu_item_hash[:taxable] = mt_instance.taxable
|
||||
|
||||
return menu_item_hash
|
||||
end
|
||||
Product.joins("JOIN accounts ON accounts.title = 'Product'")
|
||||
.where(item_code: item_code)
|
||||
.pluck("accounts.id AS account_id", :item_code, :name, :alt_name, :unit_price, :taxable)
|
||||
.map { |account_id, item_code, item_name, item_alt_name, price, taxable|
|
||||
{
|
||||
type: 'Product',
|
||||
account_id: account_id,
|
||||
item_code: item_code,
|
||||
item_instance_code: item_code,
|
||||
name: item_name || '',
|
||||
alt_name: item_name || '',
|
||||
price: price,
|
||||
promotion_price: 0,
|
||||
is_on_promotion: 0,
|
||||
is_available: 0,
|
||||
taxable: taxable
|
||||
}
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
@@ -684,14 +684,6 @@ class Sale < ApplicationRecord
|
||||
self.total_tax = total_tax_amount
|
||||
end
|
||||
|
||||
def product_get_unit_price(item_code)
|
||||
menu_item_hash =MenuItem.search_by_item_code(item_code)
|
||||
if (menu_instance_code)
|
||||
return menu_ item_hash[:item_instance_code], menu_item_hash[:price]
|
||||
end
|
||||
return nil,nil
|
||||
end
|
||||
|
||||
def link_order_sale(order_id)
|
||||
#create if it doesn't exist
|
||||
saleOrder = SaleOrder.where("sale_id=? and order_id=?", self.id, order_id).take
|
||||
|
||||
@@ -9,13 +9,22 @@ class SeedGenerator < ApplicationRecord
|
||||
|
||||
cur_val, next_val = self.update_seed(model_name)
|
||||
|
||||
if (cur_val == 0)
|
||||
cur_val, next_val = self.execute_query(model_name)
|
||||
padding_len = 15 - prefix.length
|
||||
saleOrderId = prefix +"-"+ cur_val.to_s.to_s.rjust(padding_len,'0')
|
||||
return saleOrderId
|
||||
end
|
||||
|
||||
padding_len = 15 - prefix.length
|
||||
saleOrderId = prefix +"-"+ cur_val.to_s.to_s.rjust((14-prefix.length)+1,'0')
|
||||
return saleOrderId
|
||||
def self.generate_ids(model, prefix, count = 1)
|
||||
model_name = self.get_model_name(model)
|
||||
|
||||
if ENV["SERVER_MODE"] == 'cloud'
|
||||
prefix = "C#{prefix}"
|
||||
end
|
||||
|
||||
start = self.update_seed(model_name, count)
|
||||
stop = start + count - 1
|
||||
length = 15 - prefix.length
|
||||
(start..stop).map { |c| "#{prefix}-#{c.to_s.rjust(length, '0')}" }
|
||||
end
|
||||
|
||||
def self.sync_seed_generator_records(seed_generators)
|
||||
@@ -100,41 +109,13 @@ class SeedGenerator < ApplicationRecord
|
||||
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
|
||||
def self.update_seed(model, count = 1)
|
||||
SeedGenerator.transaction do
|
||||
seed = SeedGenerator.lock.find_by_model(model)
|
||||
seed.next = seed.next + (count * seed.increase_by)
|
||||
seed.current = seed.next - seed.increase_by
|
||||
seed.save!
|
||||
seed.next_before_last_save
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
<% end%>
|
||||
<!-- else quick_service or cashier for table -->
|
||||
<% else %>
|
||||
<% if @table.get_current_checkout_booking.nil? %>
|
||||
<% if @table.current_checkout_booking.nil? %>
|
||||
<% if !menu.code.include? "SPL" %>
|
||||
<li class="nav-item ">
|
||||
<p class="hidden menu-id"><%= menu.id %></p>
|
||||
@@ -120,7 +120,7 @@
|
||||
<% end%>
|
||||
<!-- else quick_service or cashier for table -->
|
||||
<% else %>
|
||||
<% if @table.get_current_checkout_booking.nil? %>
|
||||
<% if @table.current_checkout_booking.nil? %>
|
||||
<% if !menu.code.include? "SPL" %>
|
||||
<div class="card custom-card testimonial-card animated fadeInRight menu_category sub_click" data-id="<%=menu.id%>">
|
||||
<div class='card-block custom-card-block'>
|
||||
@@ -199,7 +199,7 @@
|
||||
<div class="col-md-3 col-lg-3 col-sm-3">Table : <%=@table.name%></div>
|
||||
<p class="hidden" id="table_id"><%=@table_id%></p>
|
||||
<p class="hidden" id="table_type"><%=@table.type%></p>
|
||||
<p class="hidden" id="table_get_current"><%=@table.get_current_checkout_booking%></p>
|
||||
<p class="hidden" id="table_get_current"><%=@table.current_checkout_booking%></p>
|
||||
<% end%>
|
||||
|
||||
<p class="hidden" id="booking_id"><%=@booking_id%></p>
|
||||
@@ -231,7 +231,7 @@
|
||||
<p class="hidden" id="table_type"><%=@table.type%></p>
|
||||
<p class="hidden" id="booking_id"><%=@booking_id%></p>
|
||||
<p class="hidden" id="customer_id"><%=@customer ? @customer.customer_id : ''%></p>
|
||||
<p class="hidden" id="table_get_current"><%=@table.get_current_checkout_booking%></p>
|
||||
<p class="hidden" id="table_get_current"><%=@table.current_checkout_booking%></p>
|
||||
</div>
|
||||
<div class="col-md-3 col-lg-3 col-sm-3">
|
||||
<button type="button" class="btn btn-xs btn-danger waves-effect" id='clear_all'>Clear
|
||||
|
||||
Reference in New Issue
Block a user