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

@@ -9,11 +9,11 @@ class Api::BillController < Api::ApiController
#create Bill by Booking ID
if (params[:booking_id])
@sale = Sale.new
@sale.generate_invoice_from_booking(params[:booking_id], current_login_employee.name)
@status = @sale.generate_invoice_from_booking(params[:booking_id], current_login_employee.name)
elsif (params[:order_id])
@sale = Sale.new
@sale.generate_invoice_from_order(params[:order_id], current_login_employee.name)
@status = @sale.generate_invoice_from_order(params[:order_id], current_login_employee.name)
end
end

View File

@@ -1,5 +1,4 @@
class Api::OrdersController < ActionController::API
#before :authenticate_token
class Api::OrdersController < Api::ApiController
#Description
# This API show current order details
@@ -19,8 +18,8 @@ class Api::OrdersController < ActionController::API
# Output Params
# Status [Success | Error | System Error] , order_id, error_message (*)
def create
Rails.logger.debug "Order Source - " + params[:order_source]
Rails.logger.debug "Table ID - " + params[:table_id]
Rails.logger.debug "Order Source - " + params[:order_source].to_s
Rails.logger.debug "Table ID - " + params[:table_id].to_s
# begin
@order = Order.new
@@ -31,16 +30,17 @@ class Api::OrdersController < ActionController::API
@order.guest = params[:guest_info]
@order.table_id = params[:table_id]
@order.new_booking = true
#@order.employee_name = "Emenu"
@order.employee_name = current_login_employee.name
#Create Table Booking or Room Booking
if !params["booking_id"].nil?
if !params["booking_id"].nil? && params[:booking_id].to_i > 0
@order.new_booking = false
@order.booking_id = params[:booking_id]
end
@status = @order.generate
@status, @booking = @order.generate
# rescue Exception => error
# @status = false

View File

@@ -1,8 +1,9 @@
class ApplicationController < ActionController::Base
include LoginVerification
#before_action :check_installation
protect_from_forgery with: :exception
helper_method :current_company
helper_method :current_company,:current_login_employee
#this is base api base controller to need to inherit.
#all token authentication must be done here
@@ -16,6 +17,10 @@ class ApplicationController < ActionController::Base
end
def current_login_employee
@employee = Employee.find_by_token_session(session[:session_token])
end
private
def check_installation
if current_company.nil?

View File

@@ -1,10 +1,44 @@
class HomeController < ApplicationController
skip_before_action :authenticate, only: [:index, :create, :destroy]
def index
@login_form = LoginForm.new()
end
def create
@login_form = LoginForm.new()
@login_form.emp_id = params[:login_form][:emp_id]
@login_form.password = params[:login_form][:password]
@employee = Employee.login(@login_form.emp_id, @login_form.password)
if @employee
session[:session_token] = @employee.token_session
redirect_to dashboard_path
else
render :index
end
end
def dashboard
# if @employee && @employee.role == "cashier"
#
# elsif @employee && @employee.role == "waiter"
# elsif @employee && @employee.role == "administrator"
# elsif @employee && @employee.role == "manager"
# elsif @employee && @employee.role == "supervisour"
# redirect_to dashboard_path
# end
end
def destroy
session[:session_token] = nil
redirect_to root_path
end
private
# Never trust parameters from the scary internet, only allow the white list through.
def settings_home_params
params.require(:login_form).permit(:emp_id, :password)
end
end

View File

@@ -27,12 +27,19 @@ class Settings::MenuCategoriesController < ApplicationController
# POST /settings/menu_categories.json
def create
@settings_menu_category = MenuCategory.new(settings_menu_category_params)
@settings_menu_category.created_by = current_login_employee.name
#@settings_menu_category.menu = @settings_menu
respond_to do |format|
if @settings_menu_category.save
format.html { redirect_to @settings_menu_category, notice: 'Menu category was successfully created.' }
format.json { render :show, status: :created, location: @settings_menu_category }
else
if (@settings_menu_category.errors)
@settings_menu_category.errors.each do |error|
Rails.logger.debug error
end
end
format.html { render :new }
format.json { render json: @settings_menu_category.errors, status: :unprocessable_entity }
end
@@ -74,6 +81,6 @@ class Settings::MenuCategoriesController < ApplicationController
# Never trust parameters from the scary internet, only allow the white list through.
def settings_menu_category_params
params.require(:settings_menu_category).permit(:menu_id, :name, :alt_name, :order_by, :menu_category_id)
params.require(:menu_category).permit(:code, :menu_id, :name, :alt_name, :order_by, :menu_category_id)
end
end

View File

@@ -25,10 +25,11 @@ class Settings::TaxProfilesController < ApplicationController
# POST /settings/tax_profiles.json
def create
@settings_tax_profile = TaxProfile.new(settings_tax_profile_params)
@settings_tax_profile.created_by = current_login_employee.name
respond_to do |format|
if @settings_tax_profile.save
format.html { redirect_to @settings_tax_profile, notice: 'Tax profile was successfully created.' }
format.html { redirect_to settings_tax_profiles_path, notice: 'Tax profile was successfully created.' }
format.json { render :show, status: :created, location: @settings_tax_profile }
else
format.html { render :new }
@@ -42,7 +43,7 @@ class Settings::TaxProfilesController < ApplicationController
def update
respond_to do |format|
if @settings_tax_profile.update(settings_tax_profile_params)
format.html { redirect_to @settings_tax_profile, notice: 'Tax profile was successfully updated.' }
format.html { redirect_to settings_tax_profiles_path, notice: 'Tax profile was successfully updated.' }
format.json { render :show, status: :ok, location: @settings_tax_profile }
else
format.html { render :edit }

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

View File

@@ -1,6 +1,7 @@
if @status == true
json.status :success
json.id @order.id
json.booking_id @booking.id
json.order_items do
json.array! @order.order_items, :item_code, :item_name, :qty, :options, :remark
end

View File

@@ -1,2 +1,25 @@
<h1>Home#index</h1>
<p>Find me in app/views/home/index.html.erb</p>
<div class="row">
<div class="col-md-4 col-sm-6 col-md-offset-4 col-sm-offset-3">
<%= simple_form_for(@login_form, url: login_path, method: "POST") do |f| %>
<div class="card">
<h4 class="card-title text-center" style="margin:10px">Login</h4>
<div class="content" style="margin:10px">
<div class="form-group">
<%= f.input :emp_id, required: false, autofocus: true, class: "form-control" %>
</div>
<div class="form-group">
<%= f.input :password, required: false, class: "form-control" %>
</div>
</div>
<div class="footer text-center" style="margin:10px">
<%= f.button :submit, "Log in", class: "form-control btn btn-fill btn-warning btn-wd" %>
</div>
</div>
<% end %>
</div>
</div>

View File

@@ -16,6 +16,12 @@
<body>
<%= render 'layouts/header' %>
<div class="container-fluid">
<% flash.each do |type, message| %>
<div class="alert fade in">
<button class="close" aria-hidden="true" data-dismiss="alert" type="button">×</button>
<%= message %>
</div>
<% end %>
<%= yield %>
</div>

View File

@@ -2,6 +2,8 @@
<%= f.error_notification %>
<div class="form-inputs">
<%= f.input :menu_id, as: :hidden %>
<%= f.input :code, label: "Category Code" %>
<%= f.input :name %>
<%= f.input :alt_name %>
<%= f.input :order_by %>

View File

@@ -1,6 +1,10 @@
<h1>Editing Settings Menu Category</h1>
<%= render 'form', settings_menu_category: @settings_menu_category %>
<%= link_to 'Show', @settings_menu_category %> |
<%= link_to 'Back', settings_menu_categories_path %>
<div class="span12">
<div class="page-header">
<ul class="breadcrumb">
<li><a href="<%= root_path %>">Home</a></li>
<li><a href="<%= settings_menu_categories_path %>">Menu Categories</a></li>
<li>Edit</li>
</ul>
</div>
<%= render 'form', settings_menu_category: @settings_menu_category %>
</div>

View File

@@ -66,10 +66,10 @@
<tr>
<td><%= category.name %></td>
<td><%= category.children.count rescue "-" %></td>
<td><%= category.menu_items.count rescue "-" %></td>
<td><%= link_to category.menu_items.count, settings_menu_category_menu_items_path(category) %></td>
<td><%= category.order_by %></td>
<td><%=l category.created_at, format: :short %></td>
<td><%= link_to 'Edit', edit_settings_menu_path(@settings_menu) %></td>
<td><%= link_to 'Edit', edit_settings_menu_menu_category_path(@settings_menu, category) %></td>
</tr>
<% end %>
</tbody>

View File

@@ -34,7 +34,7 @@
<td><%= settings_tax_profile.order_by %></td>
<td><%= settings_tax_profile.created_by %></td>
<td><%= link_to 'Edit', edit_settings_tax_profile_path(settings_tax_profile) %></td>
<td><%= link_to 'Destroy', settings_tax_profile_path(:settings,settings_tax_profile ), method: :delete, data: { confirm: 'Are you sure?' } %></td>
<td><%= link_to 'Destroy', settings_tax_profile_path(settings_tax_profile ), method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</tbody>