fixed conflict gem and gemfile lock

This commit is contained in:
Aung Myo
2017-06-06 10:01:21 +06:30
162 changed files with 3439 additions and 421 deletions

4
.gitignore vendored
View File

@@ -43,5 +43,5 @@ config/deploy/config/*
.byebug_history
# Gem files
Gemfile
Gemfile.lock
#Gemfile
#Gemfile.lock

View File

@@ -9,13 +9,14 @@ end
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.1.0'
# Use mysql as the database for Active Record
gem 'mysql2', '>= 0.3.18', '< 0.5'
#Use PosgreSQL
#gem 'pg'
# redis server for cable
gem 'redis', '~> 3.0'
# gem 'redis', '~> 3.0'
# Use Puma as the app server
gem 'puma', '~> 3.0'
@@ -59,6 +60,9 @@ gem 'bcrypt', '~> 3.1.7'
gem 'sidekiq'
# Pagination
gem 'kaminari', :git => "git://github.com/amatsuda/kaminari.git", :branch => 'master'
# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development
@@ -87,3 +91,5 @@ end
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
gem 'httparty', '~> 0.15.5'

View File

@@ -1,6 +1,6 @@
GIT
remote: git://github.com/amatsuda/kaminari.git
revision: c3c853a944cd2bff072ae05e48c563b2c9a29597
revision: bc52ae73d41386d344b5d1b18e689e5a988f1a03
branch: master
specs:
kaminari (1.0.1)
@@ -92,7 +92,9 @@ GEM
railties (>= 3.2, < 5.2)
globalid (0.4.0)
activesupport (>= 4.2.0)
i18n (0.8.1)
httparty (0.15.5)
multi_xml (>= 0.5.2)
i18n (0.8.4)
jbuilder (2.6.4)
activesupport (>= 3.0.0)
multi_json (>= 1.2)
@@ -114,6 +116,9 @@ GEM
mini_portile2 (2.1.0)
minitest (5.10.2)
multi_json (1.12.1)
multi_xml (0.6.0)
mysql2 (0.4.6)
nio4r (2.1.0)
nokogiri (1.7.2)
@@ -124,7 +129,7 @@ GEM
ttfunk (~> 1.5)
prawn-table (0.2.2)
prawn (>= 1.3.0, < 3.0.0)
puma (3.8.2)
puma (3.9.1)
rack (2.0.3)
rack-cors (0.4.1)
rack-protection (2.0.0)
@@ -247,6 +252,7 @@ DEPENDENCIES
factory_girl_rails (~> 4.0)
faker
font-awesome-rails
httparty (~> 0.15.5)
jbuilder (~> 2.5)
jquery-rails
kaminari!
@@ -257,7 +263,6 @@ DEPENDENCIES
puma (~> 3.0)
rack-cors
rails (~> 5.1.0)
redis (~> 3.0)
rspec-rails (~> 3.5)
sass-rails (~> 5.0)
schema_to_scaffold

View File

@@ -17,21 +17,77 @@
//= require cable
$(document).ready(function(){
$('.queue_station').on('click',function(){
var title=$(this).children().children('.card-title').text();
var titles=title.split(' ');
$('.queue_station').on('click',function(){
var orderZone=$(this).children().children().children('.order-zone').text();
var orderItem=$(this).children().children().children('.order-item').text();
var orderQty=$(this).children().children().children('.order-qty').text();
var orderBy=$(this).children().children().children().children('.order-by').text();
var orderAt=$(this).children().children().children().children('.order-at').text();
var orderCustomer=$(this).children().children('.order-customer').text();
var orderBy=$(this).children().children().children().children('.order-by').text();
var orderAt=$(this).children().children().children().children('.order-at').text();
var orderCustomer=$(this).children().children('.order-customer').text();
$('#order-title').text("ORDER DETAILS - " + orderZone);
$('#order-by').text(orderBy);
$('#order-at').text(orderAt);
$('#order-customer').text(orderCustomer);
$('#order-from').text(orderZone);
$('#order-title').text($('#order-title').text() + titles[0]);
$('#order-by').text(orderBy);
$('#order-at').text(orderAt);
$('#order-customer').text(orderCustomer);
$('#order-from').text(titles[0]);
$('#order-items').text(orderItem);
$('#order-qty').text(orderQty);
$('#order-items').text(titles[1]);
$('#order-qty').text(titles[2].substr(2).replace(']',''));
$('.queue_station').removeClass('selected-item');
$(this).addClass('selected-item');
});
// complete for queue item
$('.order-complete').on('click',function(){
var _self= $(this);
var assigned_item_id=$(this).attr('id').substr(15);
var params = { 'id':assigned_item_id };
var station=$(this).parent().parent(".queue_station").parent().parent().attr('id');
$.ajax({
type: 'POST',
url: '/oqs/update_delivery',
data: params,
dataType: 'json',
success: function(data){
var queue_station=_self.parent().parent(".queue_station");
// Remove a queue card from current station
queue_station.remove();
// Remove a queue card from current station
queue_station.children('.card-footer').remove();
// Add removed queue card from station to completed
$("#completed").children('.card-columns').append(queue_station);
// update queue item count in station
$("#"+station+"_count").text(parseInt($("#"+station+"_count").text())-1);
$("#completed_count").text(parseInt($("#completed_count").text())+1);
alert("updated!");
}
});
});
$('#print_order_item').on('click',function(){
var assigned_item_id=$('.selected-item').children('.card-block').children('.assigned-order-item').text();
var params = { 'id':assigned_item_id };
$.ajax({
type: 'GET',
url: '/oqs/print/print/'+assigned_item_id,
success: function(data){ }
});
});
$('#print_order_summary').on('click',function(){
var assigned_item_id=$('.selected-item').children('.card-block').children('.assigned-order-item').text();
var params = { 'id':assigned_item_id };
$.ajax({
type: 'GET',
url: '/oqs/print/print_order_summary/'+assigned_item_id,
success: function(data){ }
});
});
});

View File

@@ -0,0 +1,3 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://coffeescript.org/

View File

@@ -0,0 +1,3 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://coffeescript.org/

View File

@@ -14,3 +14,7 @@
.order-void {
background-color: #FFCCDD;
}
.selected-item {
background-color: blue;
}

View File

@@ -9,6 +9,29 @@
// padding-top: 4.5rem;
// }
.setting_nav{
background-color: #2f5663;
}
ul.navbar-nav li a{
text-decoration :none;
color :#e6e6e6;
}
ul.dropdown-menu li a{
text-decoration :none;
color :#525252;
}
.setting_breadcrumb{
background-color: transparent !important;
margin-bottom: 0px !important;
}
.page-header{
border-bottom :0px solid #000 !important;
margin :0px !important;
}
/*----- Order Processing Items -----*/
.opi_ul {
display:block;
@@ -33,4 +56,4 @@
/*----- Header Bar -----*/
/*----- Header Bar -----*/
/*----- Header Bar -----*/

View File

@@ -0,0 +1,3 @@
// Place all the styles related to the origami/RequestBills controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/

View File

@@ -0,0 +1,3 @@
// Place all the styles related to the print_settings controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/

View File

@@ -0,0 +1,84 @@
body {
background-color: #fff;
color: #333;
margin: 33px;
font-family: verdana, arial, helvetica, sans-serif;
font-size: 13px;
line-height: 18px;
}
p, ol, ul, td {
font-family: verdana, arial, helvetica, sans-serif;
font-size: 13px;
line-height: 18px;
}
pre {
background-color: #eee;
padding: 10px;
font-size: 11px;
}
a {
color: #000;
&:visited {
color: #666;
}
&:hover {
color: #fff;
background-color: #000;
}
}
th {
padding-bottom: 5px;
}
td {
padding: 0 5px 7px;
}
div {
&.field, &.actions {
margin-bottom: 10px;
}
}
#notice {
color: green;
}
.field_with_errors {
padding: 2px;
background-color: red;
display: table;
}
#error_explanation {
width: 450px;
border: 2px solid red;
padding: 7px 7px 0;
margin-bottom: 20px;
background-color: #f0f0f0;
h2 {
text-align: left;
font-weight: bold;
padding: 5px 5px 5px 15px;
font-size: 12px;
margin: -7px -7px 0;
background-color: #c00;
color: #fff;
}
ul li {
font-size: 12px;
list-style: square;
}
}
label {
display: block;
}

View File

@@ -1,6 +1,5 @@
class Api::BookingsController < Api::ApiController
skip_before_action :authenticate
#Show customer by ID
def index
@customer = Customer.find_by(params[:id])

View File

@@ -7,7 +7,10 @@ class Api::OrdersController < Api::ApiController
order = Order.find(params[:order_id])
order.order_items
end
def get_order
order = Order.find(params[:order_id])
order.order_items
end
# Description
# This API allow new order creation
@@ -25,7 +28,7 @@ class Api::OrdersController < Api::ApiController
@order = Order.new
@order.source = params[:order_source]
@order.order_type = params[:order_type]
@order.customer_id = params[:customer_id]
@order.customer_id = params[:customer_id] == ""? "CUS-000000000001" : params[:customer_id] # for no customer id from mobile
@order.items = params[:order_items]
@order.guest = params[:guest_info]
@order.table_id = params[:table_id]

View File

@@ -0,0 +1,18 @@
class Crm::BookingsController < ApplicationController
def update_booking
booking = Booking.find(params[:booking_id])
status = booking.update_attributes(booking_status: params[:type])
if status == true
render json: JSON.generate({:status => true ,:type => params[:type]})
else
render json: JSON.generate({:status => false, :error_message => "Record not found"})
end
end
end

View File

@@ -4,7 +4,7 @@ class Crm::CustomersController < ApplicationController
# GET /crm/customers
# GET /crm/customers.json
def index
@crm_customers = Crm::Customer.all
@crm_customers = Customer.all
end
# GET /crm/customers/1
@@ -14,7 +14,8 @@ class Crm::CustomersController < ApplicationController
# GET /crm/customers/new
def new
@crm_customer = Crm::Customer.new
@crm_customer = Customer.new
@membership = Customer.get_member_group
end
# GET /crm/customers/1/edit
@@ -24,7 +25,7 @@ class Crm::CustomersController < ApplicationController
# POST /crm/customers
# POST /crm/customers.json
def create
@crm_customer = Crm::Customer.new(crm_customer_params)
@crm_customer = Customer.new(crm_customer_params)
respond_to do |format|
if @crm_customer.save
@@ -64,7 +65,7 @@ class Crm::CustomersController < ApplicationController
private
# Use callbacks to share common setup or constraints between actions.
def set_crm_customer
@crm_customer = Crm::Customer.find(params[:id])
@crm_customer = Customer.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.

View File

@@ -1,22 +1,22 @@
class Crm::HomeController < BaseCrmController
def index
# @booking = Booking.all
@booking = Booking.select("bookings.id as booking_id,
bookings.checkin_at,
bookings.checkin_by,
bookings.dining_facility_id,
od.customer_id as customer,
od.item_count as count,
odt.id as order_item_id,
odt.item_name as item_name")
.joins("join booking_orders as bko ON bko.booking_id = bookings.id")
.joins("right join orders as od ON od.id = bko.order_id")
.joins("right join order_items as odt ON odt.order_id=od.id")
.order("bookings.id DESC")
@booking = Booking.all
@customer = Customer.all
#@booking = Booking.select("bookings.id as booking_id,
# bookings.checkin_at,
# bookings.checkin_by,
# bookings.dining_facility_id,
# od.customer_id as customer,
# od.id as order_id,
# od.item_count as count,
# odt.id as order_item_id,
# odt.item_name as item_name")
# .joins("join booking_orders as bko ON bko.booking_id = bookings.id")
# .joins("right join orders as od ON od.id = bko.order_id")
# .joins("right join order_items as odt ON odt.order_id=od.id")
# .order("bookings.id DESC")
end
def show

View File

@@ -1,31 +1,50 @@
class Oqs::HomeController < BaseOqsController
def index
@queue_stations=OrderQueueStation.all
queue_stations=OrderQueueStation.all
@queue_items_details = queue_items_query(0)
#sample Data
@queue_items_details = { :queue_id => 1, :order_id => 1, :station_name => 'Queue Station 1', :zone => 'Table4', :item_name => 'beef', :price => 10.00, :qty => 2, :customer => 'Wathon', :item_order_by => 'Yan', :created_at => '2007-05-17'}
# @queue_items_details = OrderItem.select("oqs as queue_id, oqs.station_name, oqs.is_active, oqpz.zone_id, odt.item_code, odt.item_name, odt.price, odt.qty, odt.item_order_by, odt.created_at")
# .joins("join order_queue_process_by_zones as oqpz ON oqpz.order_queue_station_id = order_queue_items.order_queue_station_id")
# .joins("right join order_queue_stations as oqs ON oqs.id = order_queue_items.order_queue_station_id")
# .joins("right join orders as od ON od.id = order_queue_items.order_id")
# .joins("right join order_items as odt ON odt.item_code = order_queue_items.item_code")
# .order("odt.item_name DESC")
@queue_completed_item = queue_items_query(1)
@queue_stations_items=Array.new
# Calculate Count for each station tab
queue_stations.each do |que|
i=0
@queue_items_details.each do |qid|
if qid.station_name == que.station_name
i=i+1
end
end
@queue_stations_items.push({:station_name => que.station_name, :is_active => que.is_active ,:item_count => i })
end
# Order.select("orders.id as order_id,sum(order_items.qty*order_items.price) as total_price,
# order_items.id as order_items_id,dining_facilities.name as table_name")
# .joins("left join booking_orders on booking_orders.order_id = orders.id
# left join bookings on bookings.id = booking_orders.id
# left join dining_facilities on dining_facilities.id = bookings.dining_facility_id
# left join order_items on order_items.order_id = orders.id")
# .where("dining_facilities.type=? and orders.order_type=? and dining_facilities.is_active=?",DiningFacility::TABLE_TYPE,"dine_in",true)
# .group("orders.id")
@queue_stations_items
end
def show
end
# update delivery status when complete click
def update_delivery_status
assigned_item_id = params[:id]
assigned_item=AssignedOrderItem.find(assigned_item_id)
assigned_item.delivery_status=true
assigned_item.save
end
# Query for OQS with status
def queue_items_query(status)
AssignedOrderItem.select("assigned_order_items.assigned_order_item_id, oqs.station_name, oqs.is_active, df.name as zone, odt.item_code, odt.item_name, odt.price, odt.qty, odt.item_order_by, cus.name as customer_name, odt.created_at")
.joins("join order_queue_process_by_zones as oqpz ON oqpz.order_queue_station_id = assigned_order_items.order_queue_station_id
left join dining_facilities as df on df.zone_id = oqpz.zone_id
left join order_queue_stations as oqs ON oqs.id = assigned_order_items.order_queue_station_id
left join orders as od ON od.order_id = assigned_order_items.order_id
left join order_items as odt ON odt.item_code = assigned_order_items.item_code
left join customers as cus ON cus.customer_id = od.customer_id")
.where("assigned_order_items.delivery_status = #{status}")
.group("assigned_order_items.assigned_order_item_id")
.order("odt.item_name DESC")
end
end

View File

@@ -0,0 +1,31 @@
class Oqs::PrintController < ApplicationController
def print
unique_code="OrderItemPdf"
assigned_item_id=params[:id]
assigned_order_item=AssignedOrderItem.select("order_id, item_code").where('assigned_order_item_id='+assigned_item_id)
print_settings=PrintSetting.find_by_unique_code(unique_code)
order_queue_printer= Printer::OrderQueuePrinter.new(print_settings)
order_queue_printer.print_order_item(print_settings,assigned_order_item[0].order_id, assigned_order_item[0].item_code )
# update print status when complete click
assigned_item=AssignedOrderItem.find(assigned_item_id)
assigned_item.print_status=true
assigned_item.save
end
def print_order_summary
unique_code="OrderSummaryPdf"
assigned_item_id=params[:id]
assigned_order_item=AssignedOrderItem.select("order_id").where('assigned_order_item_id='+assigned_item_id)
print_settings=PrintSetting.find_by_unique_code(unique_code)
order_queue_printer= Printer::OrderQueuePrinter.new(print_settings)
order_queue_printer.print_order_summary(print_settings,assigned_order_item[0].order_id)
# update print status when complete click
assigned_item=AssignedOrderItem.find(assigned_item_id)
assigned_item.print_status=true
assigned_item.save
end
end

View File

@@ -1,15 +1,24 @@
class Origami::HomeController < BaseOrigamiController
def index
@order_table = Order.get_order_table()
@order_rooms = Order.get_order_rooms()
@booking_orders = Order.get_booking_order_table()
@booking_rooms = Order.get_booking_order_rooms()
@orders = Order.get_orders()
end
def show
str = []
@order_details = OrderItem.get_order_items_details(params[:order_id])
@order_details.each do |ord_detail|
str.push(ord_detail)
end
render :json => str.to_json
if !params[:sale_id].nil?
@order_details = SaleItem.get_order_items_details(params[:sale_id])
@order_details.each do |ord_detail|
str.push(ord_detail)
end
render :json => str.to_json
else
@order_details = OrderItem.get_order_items_details(params[:order_id])
@order_details.each do |ord_detail|
str.push(ord_detail)
end
render :json => str.to_json
end
end
end

View File

@@ -0,0 +1,27 @@
class Origami::RequestBillsController < BaseOrigamiController
def show
@sale = Sale.new
booking_id = params[:id]
check_booking = Booking.find_by_booking_id(booking_id)
if check_booking.sale_id.nil?
#check if it doesn't exist
@status = @sale.generate_invoice_from_booking(check_booking.id,current_login_employee.name)
@sale_data = Sale.find_by_sale_id(check_booking.sale_id)
@sale_items = SaleItem.where("sale_id=?",check_booking.sale_id)
else
@sale_data = Sale.find_by_sale_id(check_booking.sale_id)
@sale_items = SaleItem.where("sale_id=?",check_booking.sale_id)
end
unique_code="ReceiptBillPdf"
print_settings=PrintSetting.find_by_unique_code(unique_code)
printer = Printer::ReceiptPrinter.new(print_settings)
printer.print_receipt_bill(print_settings,@sale_items,@sale,@sale_data)
end
end

View File

@@ -0,0 +1,74 @@
class PrintSettingsController < ApplicationController
before_action :set_print_setting, only: [:show, :edit, :update, :destroy]
# GET /print_settings
# GET /print_settings.json
def index
@print_settings = PrintSetting.all
end
# GET /print_settings/1
# GET /print_settings/1.json
def show
end
# GET /print_settings/new
def new
@print_setting = PrintSetting.new
end
# GET /print_settings/1/edit
def edit
end
# POST /print_settings
# POST /print_settings.json
def create
@print_setting = PrintSetting.new(print_setting_params)
respond_to do |format|
if @print_setting.save
format.html { redirect_to @print_setting, notice: 'Print setting was successfully created.' }
format.json { render :show, status: :created, location: @print_setting }
else
format.html { render :new }
format.json { render json: @print_setting.errors, status: :unprocessable_entity }
end
end
end
# PATCH/PUT /print_settings/1
# PATCH/PUT /print_settings/1.json
def update
respond_to do |format|
if @print_setting.update(print_setting_params)
format.html { redirect_to @print_setting, notice: 'Print setting was successfully updated.' }
format.json { render :show, status: :ok, location: @print_setting }
else
format.html { render :edit }
format.json { render json: @print_setting.errors, status: :unprocessable_entity }
end
end
end
# DELETE /print_settings/1
# DELETE /print_settings/1.json
def destroy
@print_setting.destroy
respond_to do |format|
format.html { redirect_to print_settings_url, notice: 'Print setting was successfully destroyed.' }
format.json { head :no_content }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_print_setting
@print_setting = PrintSetting.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def print_setting_params
params.require(:print_setting).permit(:name, :unique_code, :template, :db_name, :db_type, :db_username, :db_password, :printer_name, :api_settings, :page_width, :page_height, :print_copies)
end
end

View File

@@ -0,0 +1,73 @@
class Settings::AccountsController < ApplicationController
before_action :set_account, only: [:show, :edit, :update, :destroy]
# GET /settings/accounts
# GET /settings/accounts.json
def index
@settings_accounts = Account.all
end
# GET /settings/accounts/1
# GET /settings/accounts/1.json
def show
end
# GET /settings/accounts/new
def new
@settings_account = Account.new
end
# GET /settings/accounts/1/edit
def edit
end
# POST /settings/accounts
# POST /settings/accounts.json
def create
@settings_account = Account.new(account_params)
respond_to do |format|
if @settings_account.save!
format.html { redirect_to settings_accounts_url, notice: 'Account was successfully created.' }
format.json { render :index, status: :created, location: @settings_account }
else
format.html { render :new }
format.json { render json: settings_accounts_url.errors, status: :unprocessable_entity }
end
end
end
# PATCH/PUT /settings/accounts/1
# PATCH/PUT /settings/accounts/1.json
def update
respond_to do |format|
if @settings_account.update(account_params)
format.html { redirect_to settings_accounts_url, notice: 'Account was successfully updated.' }
format.json { render :index, status: :ok, location: @settings_account }
else
format.html { render :edit }
format.json { render json: settings_accounts_url.errors, status: :unprocessable_entity }
end
end
end
# DELETE /settings/accounts/1
# DELETE /settings/accounts/1.json
def destroy
@settings_account.destroy
respond_to do |format|
format.html { redirect_to settings_accounts_url, notice: 'Account was successfully destroyed.' }
format.json { head :no_content }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_account
@settings_account = Account.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def account_params
params.require(:account).permit(:title, :account_type)
end
end

View File

@@ -0,0 +1,116 @@
class Settings::MenuItemInstancesController < ApplicationController
before_action :set_settings_menu_item_instance, only: [:show, :edit, :update, :destroy]
before_action :set_settings_menu_item, only: [ :show, :edit, :new, :update]
# GET /settings/menu_item_instances
# GET /settings/menu_item_instances.json
def index
@settings_menu_item_instances = MenuItemInstance.all
end
# GET /settings/menu_item_instances/1
# GET /settings/menu_item_instances/1.json
def show
@category = MenuCategory.find(@item.menu_category_id)
end
# GET /settings/menu_item_instances/new
def new
@category = MenuCategory.find(@item.menu_category_id)
@settings_menu_item_instances = MenuItemInstance.new
end
# GET /settings/menu_item_instances/1/edit
def edit
@category = MenuCategory.find(@item.menu_category_id)
end
# POST /settings/menu_item_instances
# POST /settings/menu_item_instances.json
def create
@settings_menu_item_instances = MenuItemInstance.new(settings_menu_item_instance_params)
if params[:simple_menu_item_id]
@settings_menu_item_instances.menu_item_id = params[:simple_menu_item_id]
catID = MenuItem.find(params[:simple_menu_item_id])
else
@settings_menu_item_instances.menu_item_id = params[:set_menu_item_id]
catID = MenuItem.find(params[:set_menu_item_id])
end
category = MenuCategory.find(catID.menu_category_id)
respond_to do |format|
if @settings_menu_item_instances.save
@settings_menu_item_instances.item_attributes = params[:menu_item_instance][:item_attributes].reject(&:blank?)
@settings_menu_item_instances.save
format.html { redirect_to settings_menu_category_simple_menu_item_path(category,catID), notice: 'Menu item instance was successfully created.' }
format.json { render :show, status: :created, location: @settings_menu_item_instances }
else
format.html { render :new }
format.json { render json: @settings_menu_item_instances.errors, status: :unprocessable_entity }
end
end
end
# PATCH/PUT /settings/menu_item_instances/1
# PATCH/PUT /settings/menu_item_instances/1.json
def update
puts "params[:menu_item_instance][:item_attributes]"
puts params[:menu_item_instance][:item_attributes]
if params[:simple_menu_item_id]
catID = MenuItem.find(params[:simple_menu_item_id])
else
catID = MenuItem.find(params[:set_menu_item_id])
end
category = MenuCategory.find(catID.menu_category_id)
respond_to do |format|
if @settings_menu_item_instances.update(settings_menu_item_instance_params)
@settings_menu_item_instances.item_attributes = params[:menu_item_instance][:item_attributes].reject(&:blank?)
@settings_menu_item_instances.save
format.html { redirect_to settings_menu_category_simple_menu_item_path(category,catID), notice: 'Menu item instance was successfully updated.' }
format.json { render :show, status: :ok, location: @settings_menu_item_instances }
else
format.html { render :edit }
format.json { render json: @settings_menu_item_instances.errors, status: :unprocessable_entity }
end
end
end
# DELETE /settings/menu_item_instances/1
# DELETE /settings/menu_item_instances/1.json
def destroy
@settings_menu_item_instances.destroy
if params[:simple_menu_item_id]
catID = MenuItem.find(params[:simple_menu_item_id])
else
catID = MenuItem.find(params[:set_menu_item_id])
end
category = MenuCategory.find(catID.menu_category_id)
respond_to do |format|
format.html { redirect_to settings_menu_category_simple_menu_item_path(category,catID), notice: 'Menu item instance was successfully destroyed.' }
format.json { head :no_content }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_settings_menu_item_instance
@settings_menu_item_instances = MenuItemInstance.find(params[:id])
end
def set_settings_menu_item
if params[:simple_menu_item_id]
@item = MenuItem.find(params[:simple_menu_item_id])
else
@item = MenuItem.find(params[:set_menu_item_id])
end
end
# Never trust parameters from the scary internet, only allow the white list through.
def settings_menu_item_instance_params
params.require(:menu_item_instance).permit(:item_instance_code, :item_instance_name, :price, :item_attributes, :is_on_promotion, :promotion_price, :is_available,:menu_category_id,:menu_item_id)
end
end

View File

@@ -1,10 +1,10 @@
class Settings::OrderQueueStationsController < ApplicationController
before_action :set_settings_order_queue_station, only: [:show, :edit,:new, :update, :destroy]
before_action :set_settings_order_queue_station, only: [:show, :edit, :update, :destroy]
# GET /settings/order_queue_stations
# GET /settings/order_queue_stations.json
def index
@settings_order_queue_stations = OrderQueueStation.all
@settings_order_queue_stations = OrderQueueStation.all.active
end
# GET /settings/order_queue_stations/1
@@ -25,10 +25,10 @@ class Settings::OrderQueueStationsController < ApplicationController
# POST /settings/order_queue_stations.json
def create
@settings_order_queue_station = OrderQueueStation.new(settings_order_queue_station_params)
@settings_order_queue_station.created_by = current_login_employee.name
respond_to do |format|
if @settings_order_queue_station.save
format.html { redirect_to @settings_order_queue_station, notice: 'Order queue station was successfully created.' }
format.html { redirect_to settings_order_queue_stations_path, notice: 'Order queue station was successfully created.' }
format.json { render :show, status: :created, location: @settings_order_queue_station }
else
format.html { render :new }
@@ -40,6 +40,7 @@ class Settings::OrderQueueStationsController < ApplicationController
# PATCH/PUT /settings/order_queue_stations/1
# PATCH/PUT /settings/order_queue_stations/1.json
def update
params[:order_queue_station][:processing_items] = params[:order_queue_station][:processing_items].split(/,/).inspect
respond_to do |format|
if @settings_order_queue_station.update(settings_order_queue_station_params)
format.html { redirect_to settings_order_queue_station_path(@settings_order_queue_station), notice: 'Order queue station was successfully updated.' }

View File

@@ -6,10 +6,14 @@ class Settings::SetMenuItemsController < ApplicationController
def index
@settings_menu_items = @category.menu_items.page(params[:page]).per(10)
end
# GET /settings/menu_items/1
# GET /settings/menu_items/1.json
def show
@sub_menu = MenuItem.where("menu_item_id=?",params[:id]).page(params[:page]).per(10)
@menu_item_instance = MenuItemInstance.where("menu_item_id=?",params[:id]).page(params[:page]).per(10)
end
# GET /settings/menu_items/new

View File

@@ -1,15 +1,17 @@
class Settings::SimpleMenuItemsController < ApplicationController
before_action :set_settings_menu_item, only: [:show, :edit, :update, :destroy]
before_action :set_settings_menu_category, only: [:index, :show, :edit, :new, :update]
before_action :set_settings_menu_item, only: [:show, :edit, :update, :destroy ]
before_action :set_settings_menu_category, only: [:index, :show, :edit, :new, :update ,:create]
# GET /settings/menu_items
# GET /settings/menu_items.json
def index
@settings_menu_items = @category.menu_items.page(params[:page]).per(10)
end
# GET /settings/menu_items/1
# GET /settings/menu_items/1.json
def show
@sub_menu = MenuItem.where("menu_item_id=?",params[:id]).page(params[:page]).per(10)
@menu_item_instance = MenuItemInstance.where("menu_item_id=?",params[:id]).page(params[:page]).per(10)
end
# GET /settings/menu_items/new
@@ -76,6 +78,6 @@ class Settings::SimpleMenuItemsController < ApplicationController
# Never trust parameters from the scary internet, only allow the white list through.
def settings_menu_item_params
params.require(:simple_menu_item).permit(:item_code, :name, :alt_name, :type, :menu_category_id, :menu_item_id, :min_qty, :min_selectable_item, :max_selectable_item, :created_by)
params.require(:simple_menu_item).permit(:item_code, :name, :alt_name, :type, :menu_category_id,:item_attributes, :menu_item_id, :min_qty, :min_selectable_item, :max_selectable_item, :created_by)
end
end

7
app/forms/shop_form.rb Normal file
View File

@@ -0,0 +1,7 @@
#Form object to use during the installation process - will handle creation of shop model into db after verification from the cloud
#provising service through license verification
class ShopForm < ActiveModel
:attr_accessor :logo, :name, :address, :township, :city, :state, :country, :license, :base_currency, :password, :password_confirmation
end

View File

@@ -0,0 +1,2 @@
module Crm::BookingsHelper
end

View File

@@ -0,0 +1,2 @@
module Oqs::PrintHelper
end

View File

@@ -0,0 +1,2 @@
module Origami::RequestBillsHelper
end

View File

@@ -0,0 +1,2 @@
module PrintSettingsHelper
end

View File

@@ -0,0 +1,2 @@
module Settings::AccountsHelper
end

View File

@@ -1,8 +1,9 @@
class OrderBroadcastJob < ApplicationJob
queue_as :default
def perform(message)
order = Order.find(message) # message come as order_id
def perform(message)
order = Order.find(message) # message come as order_id
ApplicationCable.server.broadcast "order_queue_station_channel", order: order
end
end

View File

@@ -1,5 +1,5 @@
class OrderQueueProcessorJob < ApplicationJob
queue_as :default
queue_as :oqs
def perform(order_id)
# Do something later

7
app/models/account.rb Normal file
View File

@@ -0,0 +1,7 @@
class Account < ApplicationRecord
validates_presence_of :title, :account_type
has_many :menu_items
# belongs_to :lookup , :class_name => "Lookup"
end

View File

@@ -1,4 +1,6 @@
class AssignedOrderItem < ApplicationRecord
before_create :generate_custom_id
belongs_to :order
belongs_to :order_queue_station
@@ -11,4 +13,9 @@ class AssignedOrderItem < ApplicationRecord
assigned_order_item.delivery_status = false
assigned_order_item.save
end
private
def generate_custom_id
self.assigned_order_item_id = SeedGenerator.generate_id(self.class.name, "AOI")
end
end

View File

@@ -1,8 +1,14 @@
class Booking < ApplicationRecord
before_create :generate_custom_id
#primary key - need to be unique
belongs_to :dining_facility, :optional => true
belongs_to :sale, :optional => true
has_many :booking_orders
has_many :orders, :through => :booking_orders
private
def generate_custom_id
self.booking_id = SeedGenerator.generate_id(self.class.name, "BKI")
end
end

View File

@@ -1,4 +1,6 @@
class BookingOrder < ApplicationRecord
#primary key - need to be unique
belongs_to :booking
belongs_to :order
end

View File

@@ -1,4 +1,11 @@
class CashierLoginLog < ApplicationRecord
before_create :generate_custom_id
belongs_to :cashier_station
belongs_to :employee
private
def generate_custom_id
self.cashier_login_log_id = SeedGenerator.generate_id(self.class.name, "CLO")
end
end

View File

@@ -1,4 +1,8 @@
class Customer < ApplicationRecord
#self.primary_key = :customer_id
before_create :generate_custom_id
has_many :orders
has_many :sales
@@ -8,4 +12,9 @@ class Customer < ApplicationRecord
def lastest_invoices
sales.where(:customer_id => self.id).order("created_at desc").limit(5)
end
private
def generate_custom_id
self.customer_id = SeedGenerator.generate_id(self.class.name, "CUS")
end
end

View File

@@ -1,4 +1,6 @@
class Lookup < ApplicationRecord
has_many :accounts
def available_types
{'Employee Roles' => 'employee_roles',

View File

@@ -1,11 +1,19 @@
class MenuItem < ApplicationRecord
#belongs_to :account
belongs_to :menu_category, :optional => true
has_many :menu_item_instances
belongs_to :parent, :class_name => "MenuItem", foreign_key: "menu_item_id", :optional => true
has_many :children, :class_name => "MenuItem", foreign_key: "menu_item_id"
validates_presence_of :item_code, :name, :type, :min_qty, :taxable, :min_selectable_item, :max_selectable_item
default_scope { order('item_code asc') }
scope :simple_menu_item, -> { where(type: 'SimpleMenuItem') }
scope :set_menu_item, -> { where(type: 'SetMenuItem') }
def self.collection
MenuItem.select("id, name").map { |e| [e.name, e.id] }
end

View File

@@ -1,4 +1,6 @@
class MenuItemAttribute < ApplicationRecord
validates_presence_of :attribute_type, :name, :value
def self.collection
MenuItemAttribute.select("id, name").map { |e| [e.name, e.id] }
end
end

View File

@@ -1,4 +1,6 @@
class Order < ApplicationRecord
#primary key - need to be unique
before_create :generate_custom_id
before_create :set_order_date
belongs_to :customer
@@ -16,14 +18,14 @@ class Order < ApplicationRecord
# option_values : [],
# sub_order_items : [],
# }
def generate
booking = nil
if self.new_booking
booking = Booking.create({:dining_facility_id => self.table_id,:type => "TableBooking",
:checkin_at => Time.now.utc, :checkin_by => self.employee_name,
:booking_status => "new" })
:booking_status => "assign" })
else
if (self.booking_id.to_i > 0 )
booking = Booking.find(self.booking_id)
@@ -38,7 +40,7 @@ class Order < ApplicationRecord
self.adding_line_items
#Add Order Table and Room relation afrer order creation
BookingOrder.create({:booking_id => booking.id, :order => self})
BookingOrder.create({:booking_id => booking.booking_id, :order => self})
#Send order to queue one it done!
process_order_queue
@@ -180,14 +182,6 @@ class Order < ApplicationRecord
return new_items_list
end
private
def validate_api_inputs
end
def set_order_date
self.date = Time.now.utc
end
#Update Items Count and Quantity changes whenever there is changes
def update_products_and_quantity_count
@@ -196,7 +190,7 @@ class Order < ApplicationRecord
# Count number of different items
self.item_count = self.order_items.item_count
self.quantity_count = quantity_count
# Counter number of quantity
# Counter number of quantityf
end
#Process order items and send to order queue
@@ -213,36 +207,75 @@ class Order < ApplicationRecord
end
#Origami: Cashier : to view order type Table
def self.get_order_table
order_table = Order.select("orders.id as order_id,sum(order_items.qty*order_items.price) as total_price,
order_items.id as order_items_id,dining_facilities.name as table_name")
.joins("left join booking_orders on booking_orders.order_id = orders.id
left join bookings on bookings.id = booking_orders.id
left join dining_facilities on dining_facilities.id = bookings.dining_facility_id
left join order_items on order_items.order_id = orders.id")
.where("dining_facilities.type=? and orders.order_type=? and dining_facilities.is_active=?",DiningFacility::TABLE_TYPE,"dine_in",true)
.group("orders.id")
def self.get_booking_order_table
booking_orders = Booking.select("sales.receipt_no,orders.status as order_status,
bookings.booking_id,sales.sale_id as sale_id,dining_facilities.name as table_name")
.joins("left join booking_orders on booking_orders.booking_id = bookings.booking_id")
.joins("left join dining_facilities on dining_facilities.id = bookings.dining_facility_id")
.joins("left join orders on orders.order_id = booking_orders.order_id")
.joins("left join sale_orders on sale_orders.order_id = orders.order_id")
.joins("left join sales on sales.sale_id = sale_orders.sale_id")
.where("booking_orders.order_id IS NOT NULL and dining_facilities.type=? and dining_facilities.is_active=?",DiningFacility::TABLE_TYPE,true)
.group("bookings.booking_id")
end
#Origami: Cashier : to view order type Room
def self.get_booking_order_rooms
booking_rooms = Booking.select("sales.receipt_no,orders.status as order_status,bookings.booking_id,sales.sale_id as sale_id,dining_facilities.name as room_name")
.joins("left join booking_orders on booking_orders.booking_id = bookings.booking_id")
.joins("left join dining_facilities on dining_facilities.id = bookings.dining_facility_id")
.joins("left join orders on orders.order_id = booking_orders.order_id")
.joins("left join sale_orders on sale_orders.order_id = orders.order_id")
.joins("left join sales on sales.sale_id = sale_orders.sale_id")
.where("booking_orders.order_id IS NOT NULL and dining_facilities.type=? and dining_facilities.is_active=?",DiningFacility::ROOM_TYPE,true)
.group("bookings.booking_id")
end
#Origami: Cashier : to view order type Room
def self.get_order_rooms
order_rooms = Order.select("orders.id as order_id,sum(order_items.qty*order_items.price) as total_price,
order_rooms = Order.select("orders.order_id as order_id,sum(order_items.qty*order_items.price) as total_price,
order_items.id as order_items_id,dining_facilities.name as room_name")
.joins("left join booking_orders on booking_orders.order_id = orders.id
left join bookings on bookings.id = booking_orders.id
.joins("left join booking_orders on booking_orders.order_id = orders.order_id
left join bookings on bookings.booking_id = booking_orders.order_id
left join dining_facilities on dining_facilities.id = bookings.dining_facility_id
left join order_items on order_items.order_id = orders.id")
left join order_items on order_items.order_id = orders.order_id")
.where("dining_facilities.type=? and orders.order_type=? and dining_facilities.is_active=?",DiningFacility::ROOM_TYPE,"dine_in",true)
.group("orders.id")
.group("orders.order_id,order_items.id,dining_facilities.name")
end
#Origami: Cashier : to view orders
def self.get_orders
orders = Order.select("orders.id as order_id,sum(order_items.qty*order_items.price) as total_price,
order_items.id as order_items_id,dining_facilities.name as table_or_room_name")
.joins("left join booking_orders on booking_orders.order_id = orders.id
left join bookings on bookings.id = booking_orders.id
from = Time.now.beginning_of_day.utc
to = Time.now.end_of_day.utc
orders = Order.select("orders.order_id as order_id,sales.receipt_no,orders.status as order_status,bookings.booking_id,sales.sale_id as sale_id,dining_facilities.name as table_name")
.joins("left join booking_orders on booking_orders.order_id = orders.order_id
left join bookings on bookings.booking_id = booking_orders.order_id
left join dining_facilities on dining_facilities.id = bookings.dining_facility_id
left join order_items on order_items.order_id = orders.id")
.where("dining_facilities.is_active=?",true)
.group("orders.id")
left join order_items on order_items.order_id = orders.order_id
left join sale_orders on sale_orders.order_id = orders.order_id
left join sales on sales.sale_id = sale_orders.sale_id")
.where("dining_facilities.is_active=? and orders.date between ? and ?",true,from,to)
.group("orders.order_id")
# Booking.select("sales.receipt_no,orders.status as order_status,bookings.booking_id,sales.sale_id as sale_id,dining_facilities.name as table_name")
# .joins("left join booking_orders on booking_orders.booking_id = bookings.booking_id")
# .joins("left join dining_facilities on dining_facilities.id = bookings.dining_facility_id")
# .joins("left join orders on orders.order_id = booking_orders.order_id")
# .joins("left join sale_orders on sale_orders.order_id = orders.order_id")
# .joins("left join sales on sales.sale_id = sale_orders.sale_id")
# .where("booking_orders.order_id IS NOT NULL and dining_facilities.is_active=? and orders.date between ? and ?",true,from,to)
# .group("orders.order_id")
end
private
def generate_custom_id
self.order_id = SeedGenerator.generate_id(self.class.name, "ODR")
end
def set_order_date
self.date = Time.now.utc
end
end

View File

@@ -1,4 +1,7 @@
class OrderItem < ApplicationRecord
#primary key - need to be unique
before_create :generate_custom_id
#Associations
belongs_to :order, autosave: true
@@ -34,9 +37,23 @@ class OrderItem < ApplicationRecord
end
#Origami : Cashier : to show order items details
def self.get_order_items_details(order_id)
order_details = OrderItem.select("order_items.item_name,order_items.qty,order_items.price,(order_items.qty*order_items.price) as total_price")
.joins("left join orders on orders.id = order_items.order_id")
.where("order_items.order_id=?",order_id)
def self.get_order_items_details(booking_id)
booking_orders = BookingOrder.where("booking_id=?",booking_id)
if booking_orders
booking_orders.each do |book_order|
order_details = OrderItem.select("order_items.item_name,order_items.qty,order_items.price,(order_items.qty*order_items.price) as total_price")
.joins("left join orders on orders.order_id = order_items.order_id")
.where("order_items.order_id=?",book_order.order)
return order_details
end
else
return false
end
end
private
def generate_custom_id
self.order_items_id = SeedGenerator.generate_id(self.class.name, "ODI")
end
end

View File

@@ -0,0 +1,2 @@
class PrintSetting < ApplicationRecord
end

View File

@@ -1,22 +1,48 @@
class Printer::OrderQueuePrinter < Printer::PrinterWorker
def print_order_item(order_queue_id)
def print_order_item(printer_settings,order_id, item_code)
#Use CUPS service
#Generate PDF
#Print
pdf = OrderItemPdf.new
pdf.render_file "tmp/order_item_queue_#{order_id}_#{order_item_id}" + ".pdf"
order_item= print_query('order_item', item_code) #OrderItem.find_by_item_code(item_code)
pdf = OrderItemPdf.new(order_item[0],printer_settings)
pdf.render_file "tmp/receipt.pdf"
self.print("tmp/receipt.pdf")
end
def print_order_summary(booking_id)
def print_order_summary(printer_settings,order_id)
#Use CUPS service
#Generate PDF
#Print
filename = "tmp/order_summary_#{booking_id}" + ".pdf"
pdf = OrderSummaryPdf.new
order=print_query('order_summary',order_id)
filename = "tmp/order_summary_#{order_id}" + ".pdf"
pdf = OrderSummaryPdf.new(order,printer_settings)
pdf.render_file filename
self.print(filename)
end
# Query for OQS with status
def print_query(type, code)
if type == 'order_item'
OrderItem.select("order_items.item_code, order_items.item_name, order_items.qty, order_items.price, order_items.item_order_by as order_by, order_items.created_at as order_at, cus.name as customer, df.name as dining")
.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.dining_facility_id = b.dining_facility_id
left join customers as cus ON cus.customer_id = orders.customer_id")
.where("order_items.item_code=" + code)
.group("order_items.item_code")
else
OrderItem.select("order_items.item_code, order_items.item_name, order_items.qty, order_items.price, order_items.item_order_by as order_by, order_items.created_at as order_at, cus.name as customer, df.name as dining")
.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.dining_facility_id = b.dining_facility_id
left join customers as cus ON cus.customer_id = orders.customer_id")
.where("orders.order_id=" + code.to_s)
.group("order_items.item_code")
end
end
end

View File

@@ -63,4 +63,13 @@ class Printer::ReceiptPrinter < Printer::PrinterWorker
self.print(filename)
end
#Bill Receipt Print
def print_receipt_bill(printer_settings,sale_items,sale,sale_data)
#Use CUPS service
#Generate PDF
#Print
pdf = ReceiptBillPdf.new(printer_settings,sale_items,sale,sale_data)
pdf.render_file "tmp/receipt_bill.pdf"
self.print("tmp/receipt_bill.pdf")
end
end

View File

@@ -1,3 +1,4 @@
class RoomBooking < Booking
has_many :orders
end

View File

@@ -1,4 +1,6 @@
class Sale < ApplicationRecord
#primary key - need to be unique generated for multiple shops
before_create :generate_custom_id
#before_create :generate_receipt_no
belongs_to :cashier, :optional => true
belongs_to :customer, :optional => true
@@ -20,9 +22,9 @@ class Sale < ApplicationRecord
#get all order attached to this booking and combine into 1 invoice
booking.booking_orders.each do |order|
if booking.sale_id
status, sale_id = generate_invoice_from_order(order.order_id, nil, requested_by)
status, sale_id = generate_invoice_from_order(order.order_id, nil, booking, requested_by)
else
status, sale_id = generate_invoice_from_order(order.order_id, booking.sale_id, requested_by)
status, sale_id = generate_invoice_from_order(order.order_id, booking.sale_id, booking, requested_by)
end
booking.sale_id = sale_id
end
@@ -31,7 +33,7 @@ class Sale < ApplicationRecord
end
end
def generate_invoice_from_order (order_id, sale_id, requested_by)
def generate_invoice_from_order (order_id, sale_id, booking, requested_by)
taxable = true
#if sale_id is exsit and validate
#add order to that invoice
@@ -62,8 +64,8 @@ class Sale < ApplicationRecord
add_item(item)
end
link_order_sale(order.id)
link_order_sale(order.id)
end
@@ -73,6 +75,11 @@ class Sale < ApplicationRecord
#Update the order items that is billed
order.update_items_status_to_billed(nil)
order.status = "billed"
order.save
booking.sale_id = self.id
booking.save
return true, self.id
end
@@ -188,7 +195,8 @@ class Sale < ApplicationRecord
sale_tax.tax_name = tax.name
sale_tax.tax_rate = tax.rate
#include or execulive
sale_tax.tax_payable_amount = total_taxable * tax.rate
# sale_tax.tax_payable_amount = total_taxable * tax.rate
sale_tax.tax_payable_amount = total_taxable * tax.rate / 100
#new taxable amount
total_taxable = total_taxable + sale_tax.tax_payable_amount
@@ -239,4 +247,8 @@ class Sale < ApplicationRecord
end
end
private
def generate_custom_id
self.sale_id = SeedGenerator.generate_id(self.class.name, "SAL")
end
end

View File

@@ -1,4 +1,6 @@
class SaleAudit < ApplicationRecord
#primary key - need to be unique generated for multiple shops
belongs_to :sale
def record_audit_void(sale_id, void_by, approved_by, reason)
@@ -48,4 +50,9 @@ class SaleAudit < ApplicationRecord
sale_audit.remark = remark
sale_audit.save!
end
private
def generate_custom_id
self.sale_audit_id = SeedGenerator.generate_id(self.class.name, "SAI")
end
end

View File

@@ -1,7 +1,31 @@
class SaleItem < ApplicationRecord
#primary key - need to be unique generated for multiple shops
before_create :generate_custom_id
belongs_to :sale
#compute items - discount, tax, price_change
def compute_item
end
def self.get_order_items_details(sale_id)
sale_orders = SaleOrder.where("sale_id=?",sale_id)
if sale_orders
sale_orders.each do |sale_order|
order_details = SaleItem.select("sales.total_discount as discount_amount,DATE_FORMAT(sales.receipt_date,'%Y-%m-%d %h:%m') as receipt_date,sales.cashier_name,sales.receipt_no,sale_items.product_name as item_name,sale_items.qty,sale_items.price,sale_items.unit_price as total_price")
.joins("left join sales on sales.id = sale_items.sale_id")
.where("sale_items.sale_id=?",sale_order.sale_id)
return order_details
end
else
return false
end
end
private
def generate_custom_id
self.sale_item_id = SeedGenerator.generate_id(self.class.name, "SLI")
end
end

View File

@@ -1,4 +1,12 @@
class SaleOrder < ApplicationRecord
#primary key - need to be unique generated for multiple shops
before_create :generate_custom_id
belongs_to :sale
belongs_to :order
private
def generate_custom_id
self.sale_order_id = SeedGenerator.generate_id(self.class.name, "SOI")
end
end

View File

@@ -1,4 +1,7 @@
class SalePayment < ApplicationRecord
#primary key - need to be unique generated for multiple shops
before_create :generate_custom_id
belongs_to :sale
:attr_accessor :received_amount, :card_payment_reference, :voucher_no, :giftcard_no, :customer_id, :external_payment_status
@@ -154,4 +157,8 @@ class SalePayment < ApplicationRecord
end
private
def generate_custom_id
self.sale_payment_id = SeedGenerator.generate_id(self.class.name, "SPI")
end
end

View File

@@ -1,3 +1,10 @@
class SaleTax < ApplicationRecord
#primary key - need to be unique generated for multiple shops
before_create :generate_custom_id
belongs_to :sale
private
def generate_custom_id
self.sale_tax_id = SeedGenerator.generate_id(self.class.name, "STI")
end
end

View File

@@ -1,4 +1,26 @@
class SeedGenerator < ApplicationRecord
def self.generate_id(model, prefix)
seed = SeedGenerator.find_by_model(model)
new_receipt_no = 0
if (seed.nil?)
seed = SeedGenerator.new()
seed.model = model
new_receipt_no = seed.next
seed.save
else
current_no = seed.next
seed.next = seed.next + seed.increase_by
seed.current = current_no
seed.save
end
padding_len = 15 - prefix.length
return prefix +"-"+ seed.current.to_s.to_s.rjust((14-prefix.length)+1,'0')
end
def self.new_receipt_no
seed = SeedGenerator.find_by_model("sale")
new_receipt_no = 0

2
app/models/shop.rb Normal file
View File

@@ -0,0 +1,2 @@
class Shop < ApplicationRecord
end

View File

@@ -1,2 +0,0 @@
class Test < ApplicationRecord
end

View File

@@ -1,5 +0,0 @@
module Transactions
def self.table_name_prefix
'transactions_'
end
end

View File

@@ -5,14 +5,67 @@ class OrderItemPdf < Prawn::Document
# font "public/fonts/#{font_name}".to_s + ".ttf".to_s
# font "public/fonts/Zawgyi-One.ttf"
# font "public/fonts/padauk.ttf"
# font "public/fonts/padauk.ttf"
font_size 9
text "#{"table_name"}", :size => 15
text "#{order_item.dining}", :size => 15
stroke_horizontal_rule
move_down 5
#order_info
order_info(order_item.order_by,order_item.order_at, order_item.customer)
# order items
order_items(order_item)
end
# Write Order Information to PDF
def order_info(order_by, order_at, customer)
y_position = cursor
bounding_box([0,y_position], :width => 200, :height => 15) do
text "OrderBy:#{order_by} Customer:#{customer} Date:#{order_at.strftime("%Y-%m-%d")}", :size => 7,:align => :left
end
stroke_horizontal_rule
move_down 20
end
# Write Order items to PDF
def order_items(order_item)
y_position = cursor
bounding_box([0,y_position], :width => 180, :height => 15) do
text "Item", :size => 7,:align => :left
end
bounding_box([160,y_position], :width => 20, :height => 15) do
text "Qty", :size => 7,:align => :right
end
stroke_horizontal_rule
move_down 5
#Add Order Item
add_order_items(order_item)
end
# Add order items under order info
def add_order_items(order_item)
y_position = cursor
move_down 5
bounding_box([0,y_position], :width => 180, :height => 20) do
text "#{order_item.item_name}", :size => 7,:align => :left
end
bounding_box([160,y_position], :width => 20, :height => 20) do
text "#{order_item.qty}", :size => 7,:align => :right
end
move_down 5
end
end

View File

@@ -7,11 +7,68 @@ class OrderSummaryPdf < Prawn::Document
# font "public/fonts/Zawgyi-One.ttf"
# font "public/fonts/padauk.ttf"
font_size 9
text "#{"table_name"}", :size => 15
text "#{order[0].dining}", :size => 15
stroke_horizontal_rule
move_down 5
#order_info
order_info(order[0].order_by,order[0].order_at, order[0].customer)
# order items
order_items(order)
end
# Write Order Information to PDF
def order_info(order_by, order_at, customer)
y_position = cursor
bounding_box([0,y_position], :width => 200, :height => 15) do
text "OrderBy:#{order_by} Customer:#{customer} Date:#{order_at.strftime("%Y-%m-%d")}", :size => 7,:align => :left
end
stroke_horizontal_rule
move_down 20
end
# Write Order items to PDF
def order_items(order_item)
y_position = cursor
bounding_box([0,y_position], :width => 180, :height => 15) do
text "Item", :size => 7,:align => :left
end
bounding_box([160,y_position], :width => 20, :height => 15) do
text "Qty", :size => 7,:align => :right
end
stroke_horizontal_rule
move_down 5
#Add Order Item
add_order_items(order_item)
end
# Add order items under order info
def add_order_items(order_item)
y_position = cursor
move_down 5
order_item.each do|odi|
bounding_box([0,y_position], :width => 180, :height => 20) do
text "#{odi.item_name}", :size => 7,:align => :left
end
bounding_box([160,y_position], :width => 20, :height => 20) do
text "#{odi.qty}", :size => 7,:align => :right
end
end
move_down 5
end
end

177
app/pdf/receipt_bill_pdf.rb Normal file
View File

@@ -0,0 +1,177 @@
class ReceiptBillPdf < Prawn::Document
attr_accessor :receipt_width,:price_column_width,:p_width, :page_height, :margin, :price_width, :item_width, :header_font_size, :item_font_size,:item_height,:qty_column_width,:item_description_width
def initialize(printer_settings, sale_items,sale, sale_data)
self.p_width = 200
self.page_height = 1450
self.margin = 10
# self.price_width = self.p_width / 2
self.price_width=80
self.item_width = self.p_width - self.price_width
self.item_height = self.item_height
self.qty_column_width = self.p_width / 2
self.item_description_width=self.p_width - self.price_width
self.receipt_width=130
@item_width = self.p_width.to_i / 2
@qty_width = @item_width.to_i / 3
@double = @qty_width * 1.3
@half_qty = @qty_width / 2
#setting page margin and width
super(:margin => [self.margin, self.margin, self.margin, self.margin], :page_size => [self.p_width, self.page_height])
self.header_font_size = 10
self.item_font_size = 6
header( printer_settings.printer_name, printer_settings.name)
stroke_horizontal_rule
cashier_info(sale.receipt_no,sale.customer, sale.receipt_date)
line_items(sale_items)
all_total(sale_data)
end
def header (printer_name, name)
text "#{printer_name}", :size => self.header_font_size,:align => :center
move_down 5
text "#{name}", :size => self.header_font_size,:align => :center
# move_down self.item_height
move_down 5
stroke_horizontal_rule
end
def cashier_info(receipt_no, customer, receipt_date)
move_down 5
move_down 2
y_position = cursor
bounding_box([0,y_position], :width =>self.price_width, :height => self.item_height) do
text "Receipt No:", :size => self.item_font_size,:align => :left
end
bounding_box([self.price_width, y_position], :width =>self.receipt_width) do
text "#{receipt_no}" , :size => self.item_font_size, :align => :left
end
move_down 5
y_position = cursor
bounding_box([0,y_position], :width =>self.price_width, :height => self.item_height) do
text "Customer:", :size => self.item_font_size,:align => :left
end
bounding_box([self.price_width,y_position], :width =>self.price_width) do
text "#{customer}" , :size => self.item_font_size,:align => :left
end
move_down 5
y_position = cursor
bounding_box([0,y_position], :width =>self.price_width, :height => self.item_height) do
text "Date:", :size => self.item_font_size,:align => :left
end
bounding_box([self.price_width,y_position], :width =>self.price_width) do
text "#{receipt_date}" , :size => self.item_font_size,:align => :left
end
# stroke_horizontal_rule
move_down 5
end
def line_items(sale_items)
y_position = cursor
qty_column_width = self.p_width * 0.2
item_description_width = self.p_width * 0.5
price_column_width = self.p_width * 0.3
stroke_horizontal_rule
move_down 5
y_position = cursor
pad_top(15) {
# @item_width.to_i + @half_qty.to_i
text_box "Items", :at =>[0,y_position], :width => @item_width.to_i - @half_qty.to_i , :height =>15, :overflow => :shrink_to_fix, :size => self.item_font_size
text_box "Price", :at =>[@item_width.to_i - @half_qty.to_i,y_position], :width => @qty_width, :height =>15, :overflow => :shrink_to_fix, :size => self.item_font_size, :align => :right
text_box "Qty", :at =>[@item_width.to_i-@qty_width,y_position], :width => @half_qty, :height =>15, :overflow => :shrink_to_fix, :size => self.item_font_size, :align => :right
text_box "Total", :at =>[@item_width.to_i + @half_qty.to_i,y_position], :width => @double, :height =>15, :overflow => :shrink_to_fix, :size => self.item_font_size, :align => :right
}
move_down 5
stroke_horizontal_rule
add_line_item_row(sale_items)
end
def add_line_item_row(sale_items)
y_position = cursor
move_down 5
sub_total = 0.0
sale_items.each do |item|
sub_total += item.qty*item.unit_price
qty = item.qty
total_price = item.qty*item.unit_price
price = item.unit_price
product_name = item.product_name
y_position = cursor
pad_top(15) {
# @item_width.to_i + @half_qty.to_i
text_box "#{product_name}", :at =>[0,y_position], :width => @item_width.to_i - @half_qty.to_i , :height =>15, :overflow => :shrink_to_fix, :size => self.item_font_size
text_box "#{price}", :at =>[@item_width.to_i - @half_qty.to_i,y_position], :width => @qty_width, :height =>15, :overflow => :shrink_to_fix, :size => self.item_font_size, :align => :right
text_box "#{qty.to_i}", :at =>[@item_width.to_i-@qty_width,y_position], :width => @half_qty, :height =>15, :overflow => :shrink_to_fix, :size => self.item_font_size, :align => :right
text_box "#{total_price}", :at =>[@item_width.to_i + @half_qty.to_i,y_position], :width => @double, :height =>15, :overflow => :shrink_to_fix, :size => self.item_font_size, :align => :right
}
move_down 3
end
stroke_horizontal_rule
move_down 5
y_position = cursor
bounding_box([0,y_position], :width =>self.price_width, :height => self.item_height) do
text "Sub Total", :size => self.item_font_size,:align => :left
end
bounding_box([self.price_width,y_position], :width =>self.price_width) do
text "#{sub_total}" , :size => self.item_font_size,:align => :right
end
end
def all_total(sale_data)
move_down 5
y_position =cursor
bounding_box([0,y_position], :width =>self.price_width, :height => self.item_height) do
text "Discount", :size => self.item_font_size,:align => :left
end
bounding_box([self.price_width,y_position], :width =>self.price_width) do
text "( " +"#{sale_data.total_discount}" +" )" , :size => self.item_font_size,:align => :right
end
move_down 5
y_position =cursor
bounding_box([0,y_position], :width =>self.price_width, :height => self.item_height) do
text "Total Tax", :size => self.item_font_size,:align => :left
end
bounding_box([self.price_width,y_position], :width =>self.price_width) do
text "( " +"#{sale_data.total_tax}" +" )" , :size => self.item_font_size,:align => :right
end
move_down 5
y_position = cursor
move_down 5
bounding_box([0,y_position], :width =>self.price_width, :height => self.item_height) do
text "Grand Total", :size => self.item_font_size,:align => :left
end
bounding_box([self.price_width,y_position], :width =>self.price_width) do
text "#{sale_data.grand_total}" , :size => self.item_font_size,:align => :right
end
move_down 5
# stroke_horizontal_rule
end
end

View File

@@ -1,7 +1,9 @@
if (@booking)
json.id @booking.id
json.id @booking.booking_id
json.status @booking.booking_status
json.checkin_at @booking.checkin_at
json.checkin_by @booking.checkin_by
json.table_name @booking.dining_facility.name
if @booking.type == "TableBooking"
json.table_id @booking.dining_facility_id
@@ -10,7 +12,8 @@ if (@booking)
end
@total_amount = 0.00
@total_tax = 0.00
@booking_orders = BookingOrder.where("booking_id = #{@booking.booking_id}").all;
if @booking.booking_orders
order_items = []
@booking.booking_orders.each do |bo|

View File

@@ -1,4 +1,5 @@
<%= simple_form_for(@crm_customer) do |f| %>
<%= simple_form_for([:crm,@crm_customer]) do |f| %>
<%= f.error_notification %>
<div class="form-inputs">
@@ -7,7 +8,7 @@
<%= f.input :contact_no %>
<%= f.input :email %>
<%= f.input :date_of_birth %>
<%= f.association :membership %>
<%= f.input :membership_type %>
<%= f.input :membership_authentication_code %>
</div>

View File

@@ -2,5 +2,5 @@
<%= render 'form', crm_customer: @crm_customer %>
<%= link_to 'Show', @crm_customer %> |
<%= link_to 'Show', @crm_customers_path %> |
<%= link_to 'Back', crm_customers_path %>

View File

@@ -25,12 +25,12 @@
<td><%= crm_customer.contact_no %></td>
<td><%= crm_customer.email %></td>
<td><%= crm_customer.date_of_birth %></td>
<td><%= crm_customer.membership %></td>
<td><%= crm_customer.membership_id %></td>
<td><%= crm_customer.membership_type %></td>
<td><%= crm_customer.membership_authentication_code %></td>
<td><%= link_to 'Show', crm_customer %></td>
<td><%= link_to 'Show', crm_customer_path(crm_customer) %></td>
<td><%= link_to 'Edit', edit_crm_customer_path(crm_customer) %></td>
<td><%= link_to 'Destroy', crm_customer, method: :delete, data: { confirm: 'Are you sure?' } %></td>
<td><%= link_to 'Destroy', crm_customer_path(crm_customer), method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</tbody>

View File

@@ -1,26 +1,115 @@
<!--- Booking Items -->
<div class="card-columns" style="padding-top:10px">
<% @i = 0 %>
<% @booking.each do |booking| %>
<div class="card">
<div class="card-block">
<h4 class="card-title">
<%= @i += 1 %> . <%= booking.dining_facility.name %>
- <%= booking.item_name %>
</h4>
<p class="card-text">Medium, Fries, Salad
</p>
<p class="card-text">
<small class="text-muted">
Order at <%= booking.checkin_at.strftime("%H,%m") %>, <%= booking.checkin_by %>
</small>
</p>
</div>
<div class="card-footer">
<button id="#id" class="btn btn-primary btn-lg btn-block">COMPLETE</button>
</div>
</div>
<% end %>
<!--- end of Items-->
</div>
<div class="card-columns" style="padding-top:10px">
<% @i = 0 %>
<% @booking.each do |booking| %>
<% if booking.booking_status == "assign" %>
<div class="card">
<div class="card-block booking_click" data-ref="<%= api_booking_path booking.id%>" id="card-block booking_block" style="width:100%;">
<h4 class="card-title">
<%= @i += 1 %> . <%= booking.dining_facility.name %>
- <%= booking.id %>
</h4>
<!-- <p class="card-text">Medium, Fries, Salad</p> -->
<p class="card-text">
<small class="text-muted">
Order at <%= booking.checkin_at.strftime("%H,%m") %>, <%= booking.checkin_by %>
</small>
</p>
</div>
<div class="card-footer">
<div class="row">
<div class="col-md-6">
</div>
<div class="col-md-6">
</div>
</div>
</div>
</div>
<% end %>
<% end %>
<!--- end of Items-->
</div>
<script type="text/javascript">
$(function(){
$(".booking_click").on("click", function(){
$(".summary-items tbody tr").remove();
$("#cancel").removeAttr("disabled");
$("#assign").removeAttr("disabled");
var url = $(this).attr('data-ref');alert(url);
show_details(url);
});
$('.assign').click(function(e){
var booking_id = $(this).val()
var type = $(this).attr("data-type")
update_booking(booking_id,type)
});
$('.cancel').click(function(e){
var booking_id = $(this).val()
var type = $(this).attr("data-type")
update_booking(booking_id,type)
});
});
function show_details(url_item){
$.ajax({
type: "GET",
url: url_item,
data: {},
dataType: "json",
success: function(data) {
item_data = data.order_items;
//console.log(item_data.length);
$("#table").text(data.table_name)
$("#order_at").text(data.checkin_at)
$("#order_by").text(data.checkin_by)
$("#assign").val(data.id)
$("#cancel").val(data.id)
for(var field in item_data) {
if (item_data[field].item_name){
var price = parseFloat(item_data[field].price).toFixed(2);
row = "<tr>"
+'<td style="width:33%; text-align:left">' + item_data[field].item_name +'</td>'
+'<td style="width:33%; text-align:center">' + item_data[field].qty + '</td>'
+'<td style="width:33%; text-align:right">' + price + '</td>'
+'</tr>';
}
$(".summary-items tbody").append(row);
}
}
});
}
function update_booking(booking_id,type) {
$.ajax({
type: "POST",
url: "crm/update_booking/" ,
data: {booking_id:booking_id,type:type},
dataType: "json",
success: function(data) {
if(data.status == true && data.type == "cancel")
{
alert('Booking has canceled!');
}else{
alert('Booking has completed!');
}
location.reload();
}
});
}
</script>

View File

@@ -1,29 +1,32 @@
<div class="card-columns" style="padding-top:10px">
<div class="card">
<div class="card-block order-completed">
<h4 class="card-title">9. Table 4 - Beef Steak [x3]</h4>
<p class="card-text">Well Done, Fries, Salad</p>
<p class="card-text">
<small class="text-muted">Order at 12:23, Kyaw Lwin</small> |
<small class="text-muted">Printed at 12:23</small> |
<small class="text-muted">Completed at 12:43</small>
</p>
</div>
</div>
<div class="card">
<div class="card-block order-void">
<h4 class="card-title">9. Table 4 - Beef Steak [x3]</h4>
<p class="card-text">Well Done, Fries, Salad</p>
<p class="card-text"><small class="text-muted">Order at 12:23, Kyaw Lwin</small></p>
</div>
</div>
<div class="card">
<div class="card-block">
<h4 class="card-title">9. Table 4 - Beef Steak [x3]</h4>
<p class="card-text">Well Done, Fries, Salad</p>
<p class="card-text"><small class="text-muted">Order at 12:23, Kyaw Lwin</small></p>
</div>
</div>
</div>
<% @i = 0 %>
<% @booking.each do |booking| %>
<% if booking.booking_status == "assign" %>
<div class="card booking_click" data-ref="<%= api_booking_path booking.id%>" id="booking_block">
<div class="card-block" id="card-block" style="width:100%;">
<h4 class="card-title">
<%= @i += 1 %> . <%= booking.dining_facility.name %>
- <%= booking.id %>
</h4>
<!-- <p class="card-text">Medium, Fries, Salad</p> -->
<p class="card-text">
<small class="text-muted">
Order at <%= booking.checkin_at.strftime("%H,%m") %>, <%= booking.checkin_by %>
</small>
</p>
</div>
<!-- <div class="card-footer">
<div class="row">
<div class="col-md-6">
<button id="assign" data-ref="<%= booking.id%>" data-type="complete" class="btn assign btn-primary btn-sm btn-block">ASSIGN</button>
</div>
<div class="col-md-6">
<button id="cancel" data-ref="<%= booking.id%>" data-type="cancel" class="btn btn-danger cancel btn-sm btn-block">CANCLE</button>
</div>
</div>
</div> -->
</div>
<% end %>
<% end %>
</div>

View File

@@ -5,10 +5,10 @@
<!-- Nav tabs -->
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#completed" role="tab">Queue <span class="badge badge-pill badge-default">2000</span></a>
<a class="nav-link" data-toggle="tab" href="#completed" role="tab">Queue <span class="badge badge-pill badge-default"><%= @booking.where("booking_status=?","assign").count %></span></a>
</li>
<li class="nav-item">
<a class="nav-link active" data-toggle="tab" href="#tables" role="tab">Bookings <span class="badge badge-pill badge-default"><%= @count %></span></a>
<a class="nav-link active" data-toggle="tab" href="#tables" role="tab">Bookings <span class="badge badge-pill badge-default"><%= @booking.where("booking_status=?","new").count %></span></a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#rooms" role="tab">Customers</a>
@@ -37,9 +37,6 @@
<!-- Panel 3 - Orders -->
<!-- Panel 3 - Orders - End -->
</div>
</div>
<!-- Column Two -->
<div class="col-lg-5 col-md-5 col-sm-5">
@@ -47,51 +44,44 @@
<div class="card-header">
<div id="order-title"><strong>ORDER DETAILS</strong> - Table 4</div>
</div>
<div id="station"></div>
<div class="card-block">
<div class="card-title">
<table class="table">
<table class="table" >
<thead>
<tr>
<th style="width:33%; text-align:left">Order By</th>
<th style="width:33%; text-align:right">Order At</td>
<th style="width:33%; text-align:center;">Order At</td>
<th style="width:33%; text-align:right">Customer</td>
</tr>
</thead>
<tbody>
<tr>
<td style="width:33%; text-align:left">Kyaw Lwin</td>
<td style="width:33%; text-align:right">20/04/17 9:30PM</td>
<td style="width:33%; text-align:right">John Smith</td>
<tr id="">
<td style="width:33%; text-align:left" id="order_by"></td>
<td style="width:33%; text-align:center" id="order_at"></td>
<td style="width:33%; text-align:right" id="customer"></td>
</tr>
<tr>
<tr id="">
<td><strong>Table/Room</strong></td>
<td colspan="2">Table 4</td>
<td colspan="2" style="text-align:left" id="table"></td>
</tr>
</tbody>
</table>
<table class="table">
<thead>
<tr>
<th style="width:80%; text-align:left">Items</th>
<th style="width:20%; text-align:right">QTY</td>
<th style="width:33%; text-align:left">Items</th>
<th style="width:33%; text-align:center">Qty</th>
<th style="width:33%; text-align:right">Price</td>
</tr>
</thead>
</table>
</div>
<div class="card-text" style="min-height:400px; max-height:400px; overflow-x:scroll">
<table class="table">
<table class="table summary-items">
<tbody>
<tr>
<td style="width:80%; text-align:left">
Menu Items Name <br/>
Less Sweet, No MSG
</td>
<td style="width:20%; text-align:right">
5
</td>
</tr>
</tbody>
</table>
</div>
@@ -104,6 +94,8 @@
<!-- OQS Buttons -->
<button type="button" class="btn btn-primary btn-lg btn-block" disabled>Print</button>
<button type="button" class="btn btn-primary btn-lg btn-block" disabled>Print <br/>Order<br/>Summary</button>
<button id="assign" value="" disabled="disabled" data-type="assign" class="btn assign btn-primary btn-lg btn-block">ASSIGN</button>
<button id="cancel" value="" disabled="disabled" data-type="cancel" class="btn btn-danger cancel btn-lg btn-block">CANCLE</button>
</div>
</div>

View File

@@ -1,91 +1,125 @@
<div class="row">
<div class="col-lg-8 col-md-8 col-sm-8">
<!-- Column One -->
<!-- Column One -->
<div class="col-lg-8 col-md-8 col-sm-8">
<!-- Nav tabs -->
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item">
<a class="nav-link active" data-toggle="tab" href="#completed" role="tab">Processed <span class="badge badge-pill badge-default">2000</span></a>
<a class="nav-link active" data-toggle="tab" href="#completed" role="tab">Processed <span class="badge badge-pill badge-default" id="completed_count"><%= @queue_completed_item.length %></span></a>
</li>
<%
<%
# For Tab Disable for Station is inactive
status=""
@queue_stations.each do |que|
if que.is_active == false
@queue_stations_items.each do |qsi|
if qsi[:is_active] == false
status="disabled"
end
%>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href=<%= '#' + que.station_name %> role="tab" <%= status %>><%= que.station_name %><span class="badge badge-pill badge-default">18</span></a>
<a class="nav-link" data-toggle="tab" href=<%= '#' + qsi[:station_name].gsub(' ', '_') %> role="tab" <%= status %>>
<%= qsi[:station_name] %>
<span class="badge badge-pill badge-default" id=<%= qsi[:station_name].gsub(' ', '_') + '_count' %>>
<%= qsi[:item_count] %>
</span>
</a>
</li>
<% end %>
</ul>
<!-- Nav tabs - End -->
<div class="tab-content" style="min-height:670px; max-height:670px; overflow-y:scroll">
<div class="tab-content" style="min-height:670px; max-height:670px; overflow:auto">
<!--- Panel 0 - Completed -->
<div class="tab-pane active" id="completed" role="tabpanel" style="min-height:670px; max-height:670px; overflow-y:scroll">
<div class="card-columns" style="padding-top:10px">
<div class="card">
<div class="card-block order-completed">
<h4 class="card-title">9. Table 4 - Beef Steak [x3]</h4>
<p class="card-text">Well Done, Fries, Salad</p>
<p class="card-text">
<small class="text-muted">Order at 12:23, Kyaw Lwin</small> |
<small class="text-muted">Printed at 12:23</small> |
<small class="text-muted">Completed at 12:43</small>
</p>
</div>
</div>
<!-- <div class="card">
<div class="card-block order-void">
<h4 class="card-title">9. Table 4 - Beef Steak [x3]</h4>
<p class="card-text">Well Done, Fries, Salad</p>
<p class="card-text"><small class="text-muted">Order at 12:23, Kyaw Lwin</small></p>
</div>
</div>
<div class="card">
<div class="card-block">
<h4 class="card-title">9. Table 4 - Beef Steak [x3]</h4>
<p class="card-text">Well Done, Fries, Salad</p>
<p class="card-text"><small class="text-muted">Order at 12:23, Kyaw Lwin</small></p>
</div>
</div> -->
<div class="tab-pane active" id="completed" role="tabpanel">
<div class="card-columns" style="padding-top:10px; column-gap: 1.2rem;">
<%
@queue_completed_item.each do |qid|
%>
<div class="card queue_station">
<div class="card-block">
<h4 class="card-title">
<span class="order-zone">
<%= qid.zone %>
</span> -
<span class="order-item">
<%= qid.item_name %>
</span> [x
<span class="order-qty">
<%= qid.qty %>
</span> ]
</h4>
<p class="card-text">Medium, Fries, Salad</p>
<p class="card-text">
<small class="text-muted">Order at
<span class="order-at">
<%= qid.created_at.strftime("%Y %m %d") %>
</span> -
<span class="order-by">
<%= qid.item_order_by %>
</span>
</small>
</p>
<p class="hidden order-customer"><%= qid.customer_name %></p>
<p class="hidden assigned-order-item"><%= qid.assigned_order_item_id %></p>
</div>
<!-- <div class="card-footer">
<button id=<%= 'assigned_queue_' + qid.id.to_s %> class="btn btn-primary btn-lg btn-block order-complete">COMPLETE</button>
</div> -->
</div>
<%
end
%>
</div>
</div>
<!-- End Panel 0 - Completed -->
<%
@queue_stations.each do |que|
<!-- Order Item for Queue Station -->
<%
@queue_stations_items.each do |qsi|
%>
<!-- Generated Pane -->
<div class="tab-pane" id=<%= que.station_name %> role="tabpanel">
<div class="tab-pane" id=<%= qsi[:station_name].gsub(' ', '_') %> role="tabpanel">
<!--- Order Items -->
<div class="card-columns" style="padding-top:10px">
<%
if @queue_items_details[:station_name] == que.station_name
<div class="card-columns" style="padding-top:10px; column-gap: 1.2rem;">
<%
@queue_items_details.each do |qid|
if qid.station_name == qsi[:station_name]
%>
<div class="card queue_station">
<div class="card-block">
<h4 class="card-title"><%= @queue_items_details[:zone] + ' ' + @queue_items_details[:item_name] + ' [x' + @queue_items_details[:qty].to_s + ']' %></h4>
<h4 class="card-title">
<span class="order-zone">
<%= qid.zone %>
</span> -
<span class="order-item">
<%= qid.item_name %>
</span> [x
<span class="order-qty">
<%= qid.qty %>
</span> ]
</h4>
<p class="card-text">Medium, Fries, Salad</p>
<p class="card-text">
<small class="text-muted">Order at
<span class="order-at">
<%= @queue_items_details[:created_at] %>
<%= qid.created_at.strftime("%Y %m %d") %>
</span> -
<span class="order-by">
<%= @queue_items_details[:item_order_by] %>
<%= qid.item_order_by %>
</span>
</small>
</p>
<p class="hidden order-customer"><%= @queue_items_details[:customer] %></p>
<!-- Hidden Fields for Items -->
<p class="hidden order-customer"><%= qid.customer_name %></p>
<p class="hidden assigned-order-item"><%= qid.assigned_order_item_id %></p>
</div>
<div class="card-footer">
<button id="#id" class="btn btn-primary btn-lg btn-block">COMPLETE</button>
<button id=<%= 'assigned_queue_' + qid.assigned_order_item_id.to_s %> class="btn btn-primary btn-lg btn-block order-complete">COMPLETE</button>
</div>
</div>
<%
end
end
%>
@@ -93,17 +127,16 @@
</div>
</div>
<!-- end of Pane -->
<% end %>
<% end %>
<!-- End Order Item for Queue Station -->
</div>
</div>
<!-- Column Two -->
<div class="col-lg-3 col-md-3 col-sm-3">
<div class="card" >
<div class="card-header">
<div id="order-title"><strong>ORDER DETAILS</strong> - </div>
<div><strong id="order-title">ORDER DETAILS -</strong></div>
</div>
<div class="card-block">
<div class="card-title">
@@ -117,28 +150,26 @@
</thead>
<tbody>
<tr>
<td id="order-by" style="width:33%; text-align:left">Kyaw Lwin</td>
<td id="order-at" style="width:33%; text-align:right">20/04/17 9:30PM</td>
<td id="order-customer" style="width:33%; text-align:right">John Smith</td>
<td id="order-by" style="width:33%; text-align:left"></td>
<td id="order-at" style="width:33%; text-align:right"></td>
<td id="order-customer" style="width:33%; text-align:right"></td>
</tr>
<tr>
<td><strong>Table/Room</strong></td>
<td id="order-from" colspan="2"></td>
</tr>
</tbody>
</table>
</table>
</div>
<div class="card-text" style="min-height:400px; max-height:400px; overflow:auto">
<table class="table">
<thead>
<tr>
<th style="width:80%; text-align:left">Items</th>
<th style="width:20%; text-align:right">QTY</td>
<th style="width:20%; text-align:right">QTY</th>
</tr>
</thead>
</table>
</div>
<div class="card-text" style="min-height:400px; max-height:400px; overflow-x:scroll">
<table class="table">
<tbody>
<tbody>
<tr>
<td id="order-items" style="width:80%; text-align:left">
<!-- Menu Items Name <br/>
@@ -157,11 +188,13 @@
</div>
</div>
</div>
<!-- Column Three--->
<div class="col-lg-1 col-md-1 col-sm-1">
<!-- OQS Buttons -->
<button type="button" class="btn btn-primary btn-lg btn-block" disabled>Print</button>
<button type="button" class="btn btn-primary btn-lg btn-block" disabled>Print <br/>Order<br/>Summary</button>
<button type="button" title="Print Order Item" id="print_order_item" class="btn btn-primary btn-lg btn-block">Print</a>
<button type="button" class="btn btn-primary btn-lg btn-block" id="print_order_summary">Print <br/>Order<br/>Summary</button>
</div>
</div>

View File

@@ -0,0 +1,2 @@
<h1>Oqs::Print#print</h1>
<p>Find me in app/views/oqs/print/print.html.erb</p>

View File

@@ -1,4 +1,4 @@
<div class="row">
<div class="row">
<div class="col-lg-6 col-md-6 col-sm-8">
<!-- Column One -->
@@ -22,34 +22,56 @@
<div class="tab-pane active" id="tables" role="tabpanel">
<!--- Booking Items -->
<div class="card-columns" style="padding-top:10px">
<% @order_table.each do |order_table| %>
<div class="card" id="table-order-<%=order_table.order_id%>" onclick="callOrderDetails('<%=order_table.order_id%>')">
<div class="card-block">
<h4 class="card-title"><span id="table-name-<%=order_table.order_id%>" class="table-name"><%=order_table.table_name%></span></h4>
<p class="card-text"><%=order_table.total_price%></p>
</div>
</div>
<% if @booking_orders %>
<% @booking_orders.each do |booking_order| %>
<% if !booking_order.order_status = 'new'%>
<div style="background-color: red;color: white;" class="card" id="table-order-<%=booking_order.sale_id%>" onclick="callOrderDetails('sale_<%=booking_order.sale_id%>')">
<div class="card-block">
<h4 class="card-title">
<span id="table-name-<%=booking_order.sale_id%>" class="table-name"><%=booking_order.table_name%></span></h4>
<span>Receipt No : <%=booking_order.receipt_no%></span><br/>
<span>Order Status : <%=booking_order.order_status %></span>
</div>
</div>
<% else %>
<div class="card" id="table-order-<%=booking_order.id%>" onclick="callOrderDetails('order_<%=booking_order.id%>')">
<div class="card-block">
<h4 class="card-title"><span id="table-name-<%=booking_order.id%>" class="table-name"><%=booking_order.table_name%></span></h4>
<span>Order Status : <%=booking_order.order_status %></span>
</div>
</div>
<% end %>
<%end %>
<%end %>
</div>
</div>
<!-- Panel 1 - Tables - End -->
<!-- Panel 2 - Rooms -->
<div class="tab-pane" id="rooms" role="tabpanel" style="min-height:670px; max-height:670px; overflow-y:scroll">
<!--- Booking Items -->
<div class="card-columns" style="padding-top:10px">
<% @order_rooms.each do |order_room| %>
<div class="card" id="table-order-<%=order_room.order_id%>" onclick="callOrderDetails('<%=order_room.order_id%>')">
<div class="card-block">
<% tablename = order_room.room_name%>
<h4 class="card-title"><span id="table-name-<%=order_room.order_id%>" class="table-name"><%=order_room.room_name%></span></h4>
<p class="card-text"><%=order_room.total_price%></p>
</div>
</div>
<% if @booking_rooms %>
<% @booking_rooms.each do |booking_room| %>
<% if !booking_room.order_status = 'new'%>
<div style="background-color: red;color: white;" class="card" id="table-order-<%=booking_room.id%>" onclick="callOrderDetails('sale_<%=booking_room.id%>')">
<div class="card-block">
<h4 class="card-title">
<span id="table-name-<%=booking_room.id%>" class="table-name"><%=booking_room.room_name%></span></h4>
<span>Receipt No : <%=booking_room.receipt_no%></span><br/>
<span>Order Status : <%=booking_room.order_status %></span>
</div>
</div>
<% else %>
<div class="card" id="table-order-<%=booking_room.id%>" onclick="callOrderDetails('order_<%=booking_room.id%>')">
<div class="card-block">
<h4 class="card-title"><span id="table-name-<%=booking_room.id%>" class="table-name"><%=booking_room.room_name%>ddd</span></h4> \
<span>Order Status : <%=booking_room.order_status %></span>
</div>
</div>
<% end %>
<%end %>
<%end %>
</div>
@@ -60,15 +82,29 @@
<!--- Booking Items -->
<div class="card-columns" style="padding-top:10px">
<% @orders.each do |order| %>
<div class="card" id="table-order-<%=order.order_id%>" onclick="callOrderDetails('<%=order.order_id%>')">
<div class="card-block">
<h4 class="card-title"><span id="table-name-<%=order.order_id%>" class="table-name"><%=order.table_or_room_name%></span></h4>
<p class="card-text"><%=order.total_price%></p>
</div>
</div>
<% if @orders %>
<% @orders.each do |order| %>
<% if !order.order_status = 'new'%>
<div style="background-color: green;color: white;" class="card" id="table-order-<%=order.order_id%>" onclick="callOrderDetails('sale_<%=order.order_id%>')">
<div class="card-block">
<h4 class="card-title">
<span id="table-name-<%=order.order_id%>" class="table-name">Order No:<%=order.order_id%></span></h4>
<span>Receipt No : <%=order.receipt_no%></span><br/>
<span>Order Status : <%=order.order_status %></span>
</div>
</div>
<% else %>
<div class="card" id="table-order-<%=order.order_id%>" onclick="callOrderDetails('order_<%=order.order_id%>')">
<div class="card-block">
<h4 class="card-title"><span id="table-name-<%=order.order_id%>" class="table-name">Order No:<%=order.order_id%></span></h4>
<span>Order Status : <%=order.order_status %></span>
</div>
</div>
<% end %>
<%end %>
<%end %>
</div>
@@ -83,7 +119,9 @@
<div class="col-lg-5 col-md-5 col-sm-3">
<div class="card" >
<div class="card-header">
<div id="order-title"><strong>ORDER DETAILS</strong> <span id="order-detail-header"></span></div>
<div id="order-title"><strong><span id="receipt-no">ORDER DETAILS</span></strong>
<strong><span id ="receipt-date" style="margin-left: 20%"></span></strong></div><br/>
<div ><strong><span id="cashier-name"></span></strong><strong><span style="margin-left: 36%" id="order-detail-header"></span></strong></div>
</div>
<div class="card-block">
<div class="card-title">
@@ -120,7 +158,19 @@
<tfooter>
<tr>
<td style="width:80%; text-align:left; border-top:none"><strong>Sub Total</strong></td>
<td style="width:20%; text-align:right; border-top:none"><strong><span id="sub-total"></span></strong></td>
<td style="width:20%; text-align:right; border-top:none"><strong><span id="sub-total"></span></strong></td>
</tr>
<tr>
<td style="width:80%; text-align:left; border-top:none"><strong><span id="discount-header"></strong></td>
<td style="width:20%; text-align:right; border-top:none"><strong><span id="discount_amount"></span></strong></td>
</tr>
<tr>
<td style="width:80%; text-align:left; border-top:none"><strong><span id="tax-header"></strong></td>
<td style="width:20%; text-align:right; border-top:none"><strong><span id="tax_amount"></span></strong></td>
</tr>
<tr>
<td style="width:80%; text-align:left; border-top:none"><strong><span id="grand-total-header"></strong></td>
<td style="width:20%; text-align:right; border-top:none"><strong><span id="grand_total_amount"></span></strong></td>
</tr>
</tfooter>
</table>
@@ -136,53 +186,110 @@
<button type="button" class="btn btn-primary btn-lg btn-block" disabled>Edit</button>
<button type="button" class="btn btn-primary btn-lg btn-block" disabled>Move</button>
<button type="button" class="btn btn-primary btn-lg btn-block" disabled>Customer</button>
<button type="button" class="btn btn-primary btn-lg btn-block" disabled>Req.Bill</button>
<!-- <button type="button" class="btn btn-primary btn-lg btn-block" disabled>Req.Bill</button> -->
<button type="button" id="request_bills" class="btn btn-primary btn-lg btn-block">
Req.Bill
</button>
<!-- Cashier Buttons -->
<button type="button" class="btn btn-primary btn-lg btn-block" disabled>Discount</button>
<button type="button" class="btn btn-primary btn-lg btn-block" disabled>Tax</button>
<button type="button" class="btn btn-primary btn-lg btn-block" disabled>Pay</button>
<button type="button" class="btn btn-primary btn-lg btn-block" disabled>Re.Print</button>
</div>
</div>
<script>
var old_order_id = 0
var old_table_name = ""
function callOrderDetails(order_id){
var old_table_name = ""
var table_or_order_id = 0
function callOrderDetails(sale_order_id){
var order_id = 0
var data_val = ""
sale_order = sale_order_id.split("_")[0]
if (sale_order == 'sale') {
order_id = sale_order_id.split("_")[1]
url = "origami/"+sale_order_id.split("_")[1]
data_val = { sale_id: sale_order_id.split("_")[1]}
}else{
order_id = sale_order_id.split("_")[1]
url = "origami/"+order_id
data_val = { order_id: sale_order_id.split("_")[1]}
}
table_or_order_id = order_id
var tbody = ""
$("#append-table").html("")
if (old_order_id != order_id){
$("#table-order-"+old_order_id).removeClass("selected_color")
$("#table-order-"+order_id).addClass("selected_color")
old_order_id = order_id
old_order_id = order_id
}
$("#order-detail-header").html("")
$("#order-detail-header").append(document.getElementById("table-name-"+order_id).innerHTML)
$("#sub-total").html("")
url = "origami/"+order_id
$("#order-detail-header").append("Table Name : "+document.getElementById("table-name-"+order_id).innerHTML)
$("#sub-total").html("")
$.ajax({type: "GET",
url: url,
data: { order_id: order_id},
data: data_val,
success:function(result){
var sub_total = 0
var discount_amount = 0
var receipt_no = ""
var cashier_name = ""
var receipt_date = ""
var tax_amount = 0
var grand_total_amount = 0
row = "<tbody>"
for (i = 0; i < result.length; i++) {
var data = JSON.stringify(result[i]);
var parse_data = JSON.parse(data)
sub_total += (parse_data.qty*parse_data.price)
row = '<tbody><tr><td style="width:60%; text-align:left"><span id="item-name-price">'+parse_data.item_name+"@"+(parse_data.price*1)+'</span></td>'
row = '<tr><td style="width:60%; text-align:left"><span id="item-name-price">'+parse_data.item_name+"@"+(parse_data.price*1)+'</span></td>'
+'<td style="width:20%; text-align:right"><span id="item-qty">'+(parse_data.qty*1)+'</span></td>s'
+'<td style="width:20%; text-align:right"><span id="item-total-price">'+(parse_data.qty*parse_data.price)+'</span></td>'
+'</tr></tbody>'
+'</tr>>'
tbody += row
discount_amount = result[i].discount_amount;
tax_amount = result[i].tax_amount;
grand_total_amount = result[i].grand_total_amount;
receipt_no = result[i].receipt_no;
cashier_name = result[i].cashier_name;
receipt_date = result[i].receipt_date;
}
row = "</tbody>"
$("#append-table").append(tbody)
$("#sub-total").append((sub_total)+"<br/>")
if (discount_amount > 0 ) {
$("#discount-header").html("(Discount)")
$("#discount_amount").html("("+discount_amount+")")
}
if (tax_amount > 0 ) {
$("#tax-header").html("Tax")
$("#tax_amount").html(tax_amount)
}
if (grand_total_amount > 0 ) {
$("#grand-total-header").html("Grand Total")
$("#grand_total_amount").html(grand_total_amount)
}
if (cashier_name == null){
cashier_name = ""
}
if(receipt_no != null){
$("#receipt-no").html("Receipt No : "+receipt_no)
}
if (receipt_date != null) {
$("#receipt-date").html("Receipt Date : "+receipt_date);
}
if (cashier_name != null) {
$("#cashier-name").html("Cashier Name : "+cashier_name);
}
},
error:function(result){
// alert('error');
@@ -190,6 +297,12 @@ function callOrderDetails(order_id){
});
}
$( document ).ready(function() {
$('#request_bills').click(function() {
window.location.href = '/origami/request_bills/'+table_or_order_id;
return false;
});
});
</script>
<style type="text/css">
.selected_color{

View File

@@ -0,0 +1,73 @@
<div class="row">
<div class="col-lg-5 col-md-5 col-sm-3">
<div class="card" >
<div class="card-header">
<div id="order-title">
<span><strong>Receipt No : <%=@sale_data.receipt_no rescue ' '%></strong></span>
<span style="margin-left: 40%"><strong>Receipt Date : <%=@sale_data.receipt_date rescue '-'%></strong></span>
<span><strong>Table No</strong> <% if @sale_data%>- <%=@sale_data.receipt_no%><% end %></span>
</div>
</div>
<div class="card-block">
<div class="card-title">
<table class="table">
<thead>
<tr>
<th style="width:60%; text-align:left">Items</th>
<th style="width:20%; text-align:right">QTY</td>
<th style="width:20%; text-align:right">Price</td>
</tr>
</thead>
</table>
</div>
<div id="table-details" class="card-text" style="min-height:400px; max-height:400px; overflow-x:scroll">
<table class="table" id="append-table">
<tbody>
<% sub_total = 0 %>
<% if @sale_items %>
<% @sale_items.each do |sale_item| %>
<% sub_total += sale_item.qty*sale_item.unit_price%>
<tr>
<td style="width:60%; text-align:left">
<span id="item-name-price"><%=sale_item.product_name%>@<%=sale_item.unit_price%></span>
</td>
<td style="width:20%; text-align:right">
<span id="item-qty"><%=sale_item.qty%></span>
</td>
<td style="width:20%; text-align:right">
<span id="item-total-price"><%=(sale_item.qty*sale_item.unit_price)%></span>
</td>
</tr>
<%end %>
<%end %>
</tbody>
</table>
</div>
<div class="card-footer">
<table class="table" style="margin-bottom:0px">
<tfooter>
<tr>
<td style="width:80%; text-align:left; border-top:none"><strong>Sub Total</strong></td>
<td style="width:20%; text-align:right; border-top:none"><strong><span id="sub-total"><%=sub_total%></span></strong></td>
</tr>
<tr>
<td style="width:80%; text-align:left; border-top:none"><strong>(Discount)</strong></td>
<td style="width:20%; text-align:right; border-top:none"><strong><span>(<%=@sale_data.total_discount rescue 0%>)</span></strong></td>
</tr>
<td style="width:80%; text-align:left; border-top:none"><strong>Tax</strong></td>
<td style="width:20%; text-align:right; border-top:none"><strong><span><%=@sale_data.total_tax rescue 0%></span></strong></td>
</tr>
<td style="width:80%; text-align:left; border-top:none"><strong>Grand Total</strong></td>
<td style="width:20%; text-align:right; border-top:none"><strong><span><%=@sale_data.grand_total rescue 0%></span></strong></td>
</tr>
</tfooter>
</table>
</div>
<div style='text-align:center;margin-top:20px'>
<INPUT TYPE="Button" class='btn btn-primary' VALUE="Reprint" onClick="" style='width:120px'/>
<INPUT TYPE="Submit" class='btn btn-primary' VALUE="CANCEL" action="origami/index" style='width:120px'/>
</div>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,22 @@
<%= simple_form_for(@print_setting) do |f| %>
<%= f.error_notification %>
<div class="form-inputs">
<%= f.input :name %>
<%= f.input :unique_code %>
<%= f.input :template %>
<%= f.input :db_name %>
<%= f.input :db_type %>
<%= f.input :db_username %>
<%= f.input :db_password %>
<%= f.input :printer_name %>
<%= f.input :api_settings %>
<%= f.input :page_width %>
<%= f.input :page_height %>
<%= f.input :print_copies %>
</div>
<div class="form-actions">
<%= f.button :submit %>
</div>
<% end %>

View File

@@ -0,0 +1,2 @@
json.extract! print_setting, :id, :name,, :unique_code,, :template,, :db_name,, :db_type,, :db_username,, :db_password,, :printer_name,, :api_settings,, :page_width, :page_height, :print_copies, :created_at, :updated_at
json.url print_setting_url(print_setting, format: :json)

View File

@@ -0,0 +1,6 @@
<h1>Editing Print Setting</h1>
<%= render 'form', print_setting: @print_setting %>
<%= link_to 'Show', @print_setting %> |
<%= link_to 'Back', print_settings_path %>

View File

@@ -0,0 +1,49 @@
<p id="notice"><%= notice %></p>
<h1>Print Settings</h1>
<table>
<thead>
<tr>
<th>Name</th>
<th>Unique code</th>
<th>Template</th>
<th>Db name</th>
<th>Db type</th>
<th>Db username</th>
<th>Db password</th>
<th>Printer name</th>
<th>Api settings</th>
<th>Page width</th>
<th>Page height</th>
<th>Print copies</th>
<th colspan="3"></th>
</tr>
</thead>
<tbody>
<% @print_settings.each do |print_setting| %>
<tr>
<td><%= print_setting.name %></td>
<td><%= print_setting.unique_code %></td>
<td><%= print_setting.template %></td>
<td><%= print_setting.db_name %></td>
<td><%= print_setting.db_type %></td>
<td><%= print_setting.db_username %></td>
<td><%= print_setting.db_password %></td>
<td><%= print_setting.printer_name %></td>
<td><%= print_setting.api_settings %></td>
<td><%= print_setting.page_width %></td>
<td><%= print_setting.page_height %></td>
<td><%= print_setting.print_copies %></td>
<td><%= link_to 'Show', print_setting %></td>
<td><%= link_to 'Edit', edit_print_setting_path(print_setting) %></td>
<td><%= link_to 'Destroy', print_setting, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</tbody>
</table>
<br>
<%= link_to 'New Print Setting', new_print_setting_path %>

View File

@@ -0,0 +1 @@
json.array! @print_settings, partial: 'print_settings/print_setting', as: :print_setting

View File

@@ -0,0 +1,5 @@
<h1>New Print Setting</h1>
<%= render 'form', print_setting: @print_setting %>
<%= link_to 'Back', print_settings_path %>

View File

@@ -0,0 +1,64 @@
<p id="notice"><%= notice %></p>
<p>
<strong>Name:</strong>
<%= @print_setting.name %>
</p>
<p>
<strong>Unique code:</strong>
<%= @print_setting.unique_code %>
</p>
<p>
<strong>Template:</strong>
<%= @print_setting.template %>
</p>
<p>
<strong>Db name:</strong>
<%= @print_setting.db_name %>
</p>
<p>
<strong>Db type:</strong>
<%= @print_setting.db_type %>
</p>
<p>
<strong>Db username:</strong>
<%= @print_setting.db_username %>
</p>
<p>
<strong>Db password:</strong>
<%= @print_setting.db_password %>
</p>
<p>
<strong>Printer name:</strong>
<%= @print_setting.printer_name %>
</p>
<p>
<strong>Api settings:</strong>
<%= @print_setting.api_settings %>
</p>
<p>
<strong>Page width:</strong>
<%= @print_setting.page_width %>
</p>
<p>
<strong>Page height:</strong>
<%= @print_setting.page_height %>
</p>
<p>
<strong>Print copies:</strong>
<%= @print_setting.print_copies %>
</p>
<%= link_to 'Edit', edit_print_setting_path(@print_setting) %> |
<%= link_to 'Back', print_settings_path %>

View File

@@ -0,0 +1 @@
json.partial! "print_settings/print_setting", print_setting: @print_setting

View File

@@ -0,0 +1,14 @@
<%= simple_form_for([:settings,@settings_account]) do |f| %>
<%= f.error_notification %>
<div class="form-inputs">
<%= f.input :title %>
<%= f.input :account_type, :collection => Lookup.collection_of("account_type") %>
</div>
<div class="form-actions">
<%= f.button :submit %>
</div>
<% end %>

View File

@@ -0,0 +1,2 @@
json.extract! settings_account, :id, :title, :account_type, :created_at, :updated_at
json.url settings_account_url(settings_account, format: :json)

View File

@@ -0,0 +1,10 @@
<div class="span12">
<div class="page-header">
<ul class="breadcrumb">
<li><a href="<%= root_path %>">Home</a></li>
<li><a href="<%= settings_accounts_path %>">Account</a></li>
<li>Edit</li>
</ul>
</div>
<%= render 'form', settings_account: @settings_account %>
</div>

View File

@@ -0,0 +1,37 @@
<div class="page-header">
<ul class="breadcrumb">
<li><a href="<%= %>">Home</a></li>
<li>Account</li>
<span style="float: right">
<%= link_to t('.new', :default => t("helpers.links.new")),new_settings_account_path,:class => 'btn btn-primary btn-sm' %>
</span>
</ul>
</div>
<br>
<div class="card">
<table class="table table-striped">
<thead>
<tr>
<th style="width:40%">Title</th>
<th style="width:40%">Account Type</th>
<th style="width:20%">Action</th>
</tr>
</thead>
<tbody>
<% @settings_accounts.each do |account| %>
<tr>
<td><%= account.title %></td>
<td><%= account.account_type %></td>
<td>
<%= link_to 'Edit', edit_settings_account_path(account) %> |
<%= link_to 'Destroy', settings_account_path(account), method: :delete, data: { confirm: 'Are you sure?' } %>
</td>
</tr>
<% end %>
</tbody>
</table>
</div>

View File

@@ -0,0 +1 @@
json.array! @settings_accounts, partial: 'settings_accounts/settings_account', as: :settings_account

View File

@@ -0,0 +1,11 @@
<div class="span12">
<div class="page-header">
<ul class="breadcrumb">
<li><a href="<%= root_path %>">Home</a></li>
<li><a href="<%= settings_accounts_path %>">Account</a></li>
<li>New</li>
</ul>
</div>
<%= render 'form', settings_account: @settings_account %>
</div>

View File

@@ -0,0 +1,34 @@
<div class="page-header">
<ul class="breadcrumb">
<li><a href="<%= %>">Home</a></li>
<li>Account</li>
<span style="float: right">
</span>
</ul>
</div>
<br/>
<div class="card">
<div class="card-block">
<h4 class="card-title">Account</h4>
<table class="table">
<thead>
<tr>
<th>Title</th>
<th>Account type</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<tr>
<td><%= @settings_account.title %></td>
<td><%= @settings_account.account_type %></td>
<td><%= link_to 'Edit', edit_settings_account_path(@settings_account, @settings_account) %></td>
</tr>
</tbody>
</table>
</div>
</div>

View File

@@ -0,0 +1 @@
json.partial! "settings_accounts/settings_account", settings_account: @settings_account

View File

@@ -6,7 +6,7 @@
<span style="float: right">
</span>
</ul>
</div>
</div>
<div class="card">
<div class="card-block">
<h4 class="card-title">Menu Category</h4>
@@ -28,7 +28,7 @@
<td><%= @settings_menu_category.name rescue "-" %></td>
<td><%= @settings_menu_category.alt_name %></td>
<td><%= @settings_menu_category.order_by %></td>
<td><%=l @settings_menu_category.created_at, format: :short %></td>
<td><%= @settings_menu_category.created_at.utc.getlocal.strftime("%Y-%m-%d/%I:%M %p") %></td>
<td><%= link_to 'Edit', edit_settings_menu_menu_category_path(@settings_menu_category, @settings_menu_category) %></td>
</tr>
</tbody>
@@ -69,11 +69,18 @@
<td><%= settings_menu_item.type %></td>
<td><%= settings_menu_item.parent.name rescue "-" %></td>
<td><%= settings_menu_item.created_by %></td>
<td><%=l settings_menu_item.created_at, :format => :short %></td>
<td><%= settings_menu_item.created_at.utc.getlocal.strftime("%Y-%m-%d/%I:%M %p") %></td>
<% if settings_menu_item.type == "SimpleMenuItem" %>
<td><%= link_to 'Show', settings_menu_category_simple_menu_item_path(@settings_menu_category, settings_menu_item ) %></td>
<td><%= link_to 'Edit', edit_settings_menu_category_simple_menu_item_path(@settings_menu_category, settings_menu_item) %></td>
<td><%= link_to 'Destroy', settings_menu_category_simple_menu_item_path(@settings_menu_category, settings_menu_item ), method: :delete, data: { confirm: 'Are you sure?' } %></td>
<% else %>
<td><%= link_to 'Show', settings_menu_category_set_menu_item_path(@settings_menu_category, settings_menu_item ) %></td>
<td><%= link_to 'Edit', edit_settings_menu_category_set_menu_item_path(@settings_menu_category, settings_menu_item) %></td>
<td><%= link_to 'Destroy', settings_menu_category_set_menu_item_path(@settings_menu_category, settings_menu_item ), method: :delete, data: { confirm: 'Are you sure?' } %></td>
<% end %>
</tr>
<% end %>
</tbody>
@@ -81,4 +88,4 @@
</div>
</div>
</div>

View File

@@ -2,7 +2,7 @@
<div class="page-header">
<ul class="breadcrumb">
<li><a href="<%= %>">Home</a></li>
<li>Settings</li>
<li><a href="<%= settings_menu_item_attributes_path %>">Menu Item Attributes</a></li>
<li>Menu Item Attribute</li>
<span style="float: right">
</span>

View File

@@ -0,0 +1,22 @@
<%= simple_form_for([:settings,@item, @settings_menu_item_instances]) do |f| %>
<%= f.error_notification %>
<div class="form-inputs">
<%= f.input :item_instance_code %>
<%= f.input :item_instance_name %>
<%= f.input :price %>
<%= f.input :item_attributes, collection: MenuItemAttribute.collection, input_html: { multiple: true } %>
<%= f.input :is_on_promotion %>
<%= f.input :promotion_price %>
<%= f.input :is_available %>
</div>
<div class="form-actions">
<%= f.button :submit %>
</div>
<% end %>

View File

@@ -0,0 +1,2 @@
json.extract! settings_menu_item, :id, :item_code, :name, :alt_name, :type, :menu_category_id, :menu_item_id, :min_qty, :min_selectable_item, :max_selectable_item, :created_by, :created_at, :updated_at
json.url settings_menu_item_url(settings_menu_item, format: :json)

View File

@@ -0,0 +1,16 @@
<!-- <h1>Editing Settings Menu Item</h1>-->
<div class="span12">
<div class="page-header">
<ul class="breadcrumb">
<li><a href="<%= root_path %>">Home</a></li>
<li><a href="<%= settings_menu_category_simple_menu_item_path(@category,@item) %>">Menu Category</a></li>
<li>Menu Item</li>
<li>Menu Item Instances</li>
<li>Edit</li>
</ul>
</div>
<%= render 'form', settings_menu_item_menu_item_instances: @settings_menu_item_instances %>
</div>

View File

@@ -0,0 +1,93 @@
<div class="page-header">
<ul class="breadcrumb">
<li><a href="<%= %>">Home</a></li>
<li><a href="<%= settings_menu_categories_path %>">Menus Categories</a></li>
<li>Menu Items</li>
<span style="float: right">
<%= link_to t('.new', :default => t("helpers.links.new")),new_settings_menu_category_set_menu_item_path(@category),:class => 'btn btn-primary btn-sm' %>
</span>
</ul>
</div>
<div class="card">
<div class="card-block">
<h4 class="card-title">Menu Category</h4>
<table class="table">
<thead>
<tr>
<th>Menu</th>
<th>Name</th>
<th>Alt name</th>
<th>Order by</th>
<th>Parent</th>
<th colspan="3"></th>
</tr>
</thead>
<tbody>
<tr>
<td><%= @category.menu.name %></td>
<td><%= @category.name %></td>
<td><%= @category.alt_name %></td>
<td><%= @category.order_by %></td>
<td><%= @category.parent.name rescue "-" %></td>
<td><%= link_to 'Edit', edit_settings_menu_category_path(@category) %></td>
</tr>
</tbody>
</table>
</div>
</div>
<br/>
<div class="card">
<div class="card-block">
<h4 class="card-title">Menu Items
<span style="float: right">
<%= link_to "New Simple Menu Item",new_settings_menu_category_simple_menu_item_path(@category),:class => 'btn btn-primary btn-sm' %>
<%= link_to "New Set Menu Item",new_settings_menu_category_set_menu_item_path(@category),:class => 'btn btn-primary btn-sm' %>
</span>
</h4>
<table class="table">
<thead>
<tr>
<th>Item code</th>
<th>Name</th>
<th>Alt name</th>
<th>Type</th>
<th>Parent Item</th>
<th>Created by</th>
<th>Created at</th>
<th colspan="3"></th>
</tr>
</thead>
<tbody>
<% @settings_menu_items.each do |settings_menu_item| %>
<tr>
<td><%= settings_menu_item.item_code %></td>
<td><%= settings_menu_item.name %></td>
<td><%= settings_menu_item.alt_name %></td>
<td><%= settings_menu_item.type %></td>
<td><%= settings_menu_item.parent.name rescue "-" %></td>
<td><%= settings_menu_item.created_by %></td>
<td><%=l settings_menu_item.created_at, :format => :short %></td>
<% if settings_menu_item.type == "SimpleMenuItem" %>
<td><%= link_to 'Show', settings_menu_category_simple_menu_item_path(@category, settings_menu_item ) %></td>
<td><%= link_to 'Edit', edit_settings_menu_category_simple_menu_item_path(@category, settings_menu_item) %></td>
<td><%= link_to 'Destroy', settings_menu_category_simple_menu_item_path(@category, settings_menu_item ), method: :delete, data: { confirm: 'Are you sure?' } %></td>
<% else %>
<td><%= link_to 'Show', settings_menu_category_set_menu_item_path(@category, settings_menu_item ) %></td>
<td><%= link_to 'Edit', edit_settings_menu_category_set_menu_item_path(@category, settings_menu_item) %></td>
<td><%= link_to 'Destroy', settings_menu_category_set_menu_item_path(@category, settings_menu_item ), method: :delete, data: { confirm: 'Are you sure?' } %></td>
<% end %>
</tr>
<% end %>
</tbody>
</table>
</div>
</div>
<%= paginate @settings_menu_items, param_name: :page, :outer_window => 3 %>

View File

@@ -0,0 +1 @@
json.array! @settings_menu_items, partial: 'settings_menu_items/settings_menu_item', as: :settings_menu_item

View File

@@ -0,0 +1,20 @@
<!-- <h1>New Settings Menu Item</h1>
<<<<<<< HEAD
<%= render 'form', settings_menu_item: @settings_menu_item %>-->
<div class="span12">
<div class="page-header">
<ul class="breadcrumb">
<li><a href="<%= root_path %>">Home</a></li>
<li><a href="<%= settings_menu_category_simple_menu_item_path(@category,@item) %>">Menu Category</a></li>
<li>Menu Item</li>
<li>New Menu Item Instance</li>
</ul>
</div>
<%= render 'form', settings_simple_menu_item_menu_item_instances: @settings_menu_item_instances %>
</div>

View File

@@ -0,0 +1,101 @@
<div class="page-header">
<ul class="breadcrumb">
<li><a href="<%= root_path %>">Home</a></li>
<li><a href="<%= settings_menu_category_simple_menu_item_path(@category,@item) %>">Menu Category</a></li>
<li>Menu Item</li>
<li>Menu Item Instances</li>
<span style="float: right">
</span>
</ul>
</div>
<div class="card">
<div class="card-block">
<h4 class="card-title">Menu Item Instance</h4>
<table class="table">
<thead>
<tr>
<th>Item Instance code</th>
<th>Name</th>
<th>Price</th>
<th>On Promotion</th>
<th>Promotion Price</th>
<th>Available</th>
<th>Created At</th>
</tr>
</thead>
<tbody>
<tr>
<td><%= @settings_menu_item_instances.item_instance_code %></td>
<td><%= @settings_menu_item_instances.item_instance_name rescue "-" %></td>
<td><%= @settings_menu_item_instances.price %></td>
<td><%= @settings_menu_item_instances.is_on_promotion %></td>
<td><%= @settings_menu_item_instances.promotion_price %></td>
<td><%= @settings_menu_item_instances.is_available %></td>
<td><%= @settings_menu_item_instances.created_at.utc.getlocal.strftime("%Y-%m-%d/%I:%M %p") %></td>
<% if params[:simple_menu_item_id] %>
<td><%= link_to 'Edit', edit_settings_simple_menu_item_menu_item_instance_path(@item,@settings_menu_item_instances) %></td>
<% else %>
<td><%= link_to 'Edit', edit_settings_simple_menu_item_menu_item_instance_path(@item,@settings_menu_item_instances) %></td>
<% end %>
</tr>
</tbody>
</table>
</div>
</div>
<br>
<div class="card">
<div class="card-block">
<h4 class="card-title">Sub Menu Items </h4>
<table class="table">
<thead>
<tr>
<th>Item code</th>
<th>Name</th>
<th>Alt name</th>
<th>Type</th>
<th>Parent Item</th>
<th>Created by</th>
<th>Created at</th>
<th colspan="3"></th>
</tr>
</thead>
<tbody>
<% @sub_menu.each do |settings_menu_item| %>
<tr>
<td><%= settings_menu_item.item_code %></td>
<td><%= settings_menu_item.name %></td>
<td><%= settings_menu_item.alt_name %></td>
<td><%= settings_menu_item.type %></td>
<td><%= settings_menu_item.parent.name rescue "-" %></td>
<td><%= settings_menu_item.created_by %></td>
<td><%=l settings_menu_item.created_at, :format => :short %></td>
<% if settings_menu_item.type == "SimpleMenuItem" %>
<td><%= link_to 'Show', settings_menu_category_simple_menu_item_path(@category, settings_menu_item ) %></td>
<td><%= link_to 'Edit', edit_settings_menu_category_simple_menu_item_path(@category, settings_menu_item) %></td>
<td><%= link_to 'Destroy', settings_menu_category_simple_menu_item_path(@category, settings_menu_item ), method: :delete, data: { confirm: 'Are you sure?' } %></td>
<% else %>
<td><%= link_to 'Show', settings_menu_category_set_menu_item_path(@category, settings_menu_item ) %></td>
<td><%= link_to 'Edit', edit_settings_menu_category_set_menu_item_path(@category, settings_menu_item) %></td>
<td><%= link_to 'Destroy', settings_menu_category_set_menu_item_path(@category, settings_menu_item ), method: :delete, data: { confirm: 'Are you sure?' } %></td>
<% end %>
</tr>
<% end %>
</tbody>
</table>
</div>
</div>
<%= paginate @sub_menu, param_name: :page, :outer_window => 3 %>
</div>

View File

@@ -0,0 +1 @@
json.partial! "settings_menu_items/settings_menu_item", settings_menu_item: @settings_menu_item

Some files were not shown because too many files have changed in this diff Show More