emenu api integrated

This commit is contained in:
Min Zeya Phyo
2017-04-19 18:37:07 +06:30
parent a717791a7c
commit c4e76c53b2
23 changed files with 158 additions and 55 deletions

View File

@@ -32,7 +32,7 @@ class Employee < ApplicationRecord
user = Employee.find_by_token_session(session_token)
if user && user.session_expiry.utc > DateTime.now.utc
#Extend the login time each time authenticatation take place
user.session_expiry = DateTime.now.utc + 30.minutes
user.session_expiry = user.session_expiry.utc + 30.minutes
user.save
return true
else

View File

@@ -4,9 +4,9 @@ class MenuCategory < ApplicationRecord
belongs_to :parent, :class_name => "MenuCategory", foreign_key: "menu_category_id", optional: true
has_many :menu_items
validates_presence_of :name
validates_presence_of :name, :menu, :code, :order_by
default_scope { order('order_by asc') }
end

View File

@@ -6,7 +6,7 @@ class Order < ApplicationRecord
has_many :assigned_order_items
#internal references attributes for business logic control
attr_accessor :items, :guest, :table_id, :new_booking, :booking_type, :employee_name
attr_accessor :items, :guest, :table_id, :new_booking, :booking_type, :employee_name, :booking_id
#Main Controller method to create new order - validate all inputs and generate new order
@@ -25,7 +25,9 @@ class Order < ApplicationRecord
:checkin_at => Time.now.utc, :checkin_by => self.employee_name,
:booking_status => "new" })
else
booking = Booking.find(self.booking_id)
if (self.booking_id.to_i > 0 )
booking = Booking.find(self.booking_id)
end
end
@@ -41,7 +43,7 @@ class Order < ApplicationRecord
#Send order to queue one it done!
process_order_queue
return true
return true, booking
end
@@ -59,8 +61,8 @@ class Order < ApplicationRecord
if self.items
#loop to add all items to order
self.items.each do |item|
menu_item = MenuItem.search_by_item_code(item[:item_code])
menu_item = MenuItem.search_by_item_code(item[:item_instance_code])
Rails.logger.debug menu_item
set_order_items = nil
##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")
@@ -69,8 +71,8 @@ class Order < ApplicationRecord
if (menu_item)
OrderItem.processs_item(menu_item[:item_instance_code], menu_item[:name],
item[:qty],item[:price], item[:options], set_order_items, self.id,
OrderItem.processs_item(menu_item[:item_code], menu_item[:name],
item[:quantity],menu_item[:price], item[:options], set_order_items, self.id,
self.employee_name)
end
end
@@ -87,9 +89,9 @@ class Order < ApplicationRecord
end
def update_items_status_to_billed(items)
if (items)
if (items.nil?)
##Update the order status to ensure that reflect the stage
order.order_items.each do |item|
self.order_items.each do |item|
item.order_item_status = "billed"
item.save
end

View File

@@ -31,7 +31,7 @@ class Sale < ApplicationRecord
end
end
def generate_invoice_from_order (order_no, sale_id, requested_by)
def generate_invoice_from_order (order_id, sale_id, requested_by)
taxable = true
#if sale_id is exsit and validate
#add order to that invoice
@@ -45,32 +45,34 @@ class Sale < ApplicationRecord
else
#if this is new sale generate_receipt_no
generate_receipt_no
order = Order.find(order_id)
#Default - Values
self.tax_type = "execlusive"
self.requested_by = requested_by
self.requested_at = DateTime.now.utc
self.customer_id = order.customer_id
order = Order.find(order_no)
Rails.logger.debug "Order -> #{order.id} | order_status -> #{order.status}"
if order
self.customer_id = order.customer_id
Rails.logger.debug "Order -> #{order.id} | Items Count -> #{order.order_items.count}"
order.order_items.each do |item|
add_item(item)
end
link_order_sale(order.id)
end
link_order_sale(order.id)
self.save!
#compute summary
compute
#Update the order items that is billed
order.update_items_status_to_billed
order.update_items_status_to_billed(nil)
return true, self.id
end

View File

@@ -1,2 +1,4 @@
class TaxProfile < ApplicationRecord
default_scope { order('order_by asc') }
end