emenu api integrated
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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?
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 }
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,2 +1,4 @@
|
||||
class TaxProfile < ApplicationRecord
|
||||
default_scope { order('order_by asc') }
|
||||
|
||||
end
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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 %>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user