fixed conflictsale item order order item

This commit is contained in:
Aung Myo
2017-06-04 16:51:38 +06:30
61 changed files with 455 additions and 137 deletions

View File

@@ -10,13 +10,8 @@ end
gem 'rails', '~> 5.1.0'
# Use mysql as the database for Active Record
#gem 'mysql2', '>= 0.3.18', '< 0.5'
gem 'mysql2', '>= 0.3.18', '< 0.5'
#Use PosgreSQL
#gem 'pg'
# redis server for cable
# gem 'redis', '~> 3.0'
@@ -62,6 +57,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

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

@@ -1,6 +1,6 @@
class Settings::MenuItemInstancesController < ApplicationController
before_action :set_settings_menu_item_instance, only: [:show, :edit, :update, :destroy]
before_action :set_settings_menu_item, only: [:index, :show, :edit, :new, :update]
before_action :set_settings_menu_item, only: [ :show, :edit, :new, :update]
# GET /settings/menu_item_instances
# GET /settings/menu_item_instances.json
@@ -11,29 +11,43 @@ class Settings::MenuItemInstancesController < ApplicationController
# 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
@settings_menu_item_instance = MenuItemInstance.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_instance = MenuItemInstance.new(settings_menu_item_instance_params)
@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_instance.save
format.html { redirect_to settings_menu_item_instances_path, notice: 'Menu item instance was successfully created.' }
format.json { render :show, status: :created, location: @settings_menu_item_instance }
if @settings_menu_item_instances.save
@settings_menu_item_instances.item_attributes = params[:menu_item_instance][:item_attributes]
@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_instance.errors, status: :unprocessable_entity }
format.json { render json: @settings_menu_item_instances.errors, status: :unprocessable_entity }
end
end
end
@@ -41,13 +55,24 @@ class Settings::MenuItemInstancesController < ApplicationController
# 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_instance.update(settings_menu_item_instance_params)
format.html { redirect_to settings_menu_item_instance_path(@settings_menu_item_instance), notice: 'Menu item instance was successfully updated.' }
format.json { render :show, status: :ok, location: @settings_menu_item_instance }
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_instance.errors, status: :unprocessable_entity }
format.json { render json: @settings_menu_item_instances.errors, status: :unprocessable_entity }
end
end
end
@@ -55,9 +80,15 @@ class Settings::MenuItemInstancesController < ApplicationController
# DELETE /settings/menu_item_instances/1
# DELETE /settings/menu_item_instances/1.json
def destroy
# @settings_menu_item_instance.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_item_instances_path, notice: 'Menu item instance was successfully destroyed.' }
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
@@ -65,15 +96,21 @@ class Settings::MenuItemInstancesController < ApplicationController
private
# Use callbacks to share common setup or constraints between actions.
def set_settings_menu_item_instance
@set_settings_menu_item_instances = MenuItemInstance.find(params[:id])
@settings_menu_item_instances = MenuItemInstance.find(params[:id])
end
def set_settings_menu_item
@item = MenuItem.find(params[:menu_item_id])
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, :is_on_promotion, :promotion_price, :is_available)
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

@@ -4,7 +4,7 @@ class Settings::OrderQueueStationsController < ApplicationController
# 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
@@ -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,11 +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

@@ -6,7 +6,7 @@ class Settings::SimpleMenuItemsController < 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
@@ -78,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

@@ -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,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,5 +0,0 @@
module Crm
def self.table_name_prefix
'crm_'
end
end

View File

@@ -1,4 +1,5 @@
class Customer < ApplicationRecord
before_create :generate_custom_id
has_many :orders
has_many :sales
@@ -8,4 +9,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

@@ -5,10 +5,13 @@ class MenuItem < ApplicationRecord
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, :type, :min_qty, :taxable, :min_selectable_item, :max_selectable_item
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,7 +18,7 @@ class Order < ApplicationRecord
# option_values : [],
# sub_order_items : [],
# }
def generate
booking = nil
@@ -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
@@ -235,6 +229,18 @@ class Order < ApplicationRecord
.joins("left join sales on sales.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.id")
#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_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
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::ROOM_TYPE,"dine_in",true)
.group("orders.id,order_items.id,dining_facilities.name")
end
#Origami: Cashier : to view orders
def self.get_orders
@@ -244,9 +250,11 @@ class Order < ApplicationRecord
.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
left join sale_orders on sale_orders.order_id = orders.id
left join sales on sales.id = sale_orders.sale_id")
.where("dining_facilities.is_active=? and orders.date between ? and ?",true,from,to)
.group("orders.id")
@@ -259,4 +267,14 @@ class Order < ApplicationRecord
# .where("booking_orders.order_id IS NOT NULL and dining_facilities.is_active=? and orders.date between ? and ?",true,from,to)
# .group("orders.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,6 +37,7 @@ class OrderItem < ApplicationRecord
end
#Origami : Cashier : to show order items details
def self.get_order_items_details(booking_id)
booking_orders = BookingOrder.where("booking_id=?",booking_id)
if booking_orders
@@ -46,5 +50,10 @@ class OrderItem < ApplicationRecord
else
return false
end
private
def generate_custom_id
self.order_item_id = SeedGenerator.generate_id(self.class.name, "ODI")
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_receipt_no
belongs_to :cashier, :optional => true
belongs_to :customer, :optional => true
@@ -245,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,10 +1,14 @@
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
@@ -17,5 +21,10 @@ class SaleItem < ApplicationRecord
else
return false
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,24 @@
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 = 16 - prefix.len
return prefix +"-"+ seed.current.to_s.to_s.rjust((16-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

@@ -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,7 +69,9 @@
<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>
@@ -86,4 +88,4 @@
</div>
</div>
</div>

View File

@@ -1,11 +1,15 @@
<%= simple_form_for([:settings,:menu_item, @settings_menu_item_instance]) do |f| %>
<%= 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 %>

View File

@@ -4,9 +4,13 @@
<div class="page-header">
<ul class="breadcrumb">
<li><a href="<%= root_path %>">Home</a></li>
<li><a href="<%= settings_menu_category_set_menu_items_path(@category) %>">Menu Category</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_set_menu_item: @settings_menu_item %>
<%= render 'form', settings_menu_item_menu_item_instances: @settings_menu_item_instances %>
</div>

View File

@@ -1,17 +1,20 @@
<!-- <h1>New Settings Menu Item</h1>
<%= render 'form', settings_menu_item: @settings_menu_item %>
<<<<<<< HEAD
<%= render 'form', settings_menu_item: @settings_menu_item %>-->
<%= link_to 'Back', settings_menu_items_path %> -->
<div class="span12">
<div class="page-header">
<ul class="breadcrumb">
<li><a href="<%= root_path %>">Home</a></li>
<li><a href="<%= %>">Menu Item</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_set_menu_instance: @settings_menu_item_instance %>
<%= render 'form', settings_simple_menu_item_menu_item_instances: @settings_menu_item_instances %>
</div>

View File

@@ -1,9 +1,12 @@
<div class="page-header">
<ul class="breadcrumb">
<li><a href="<%= %>">Home</a></li>
<li><a href="<%= settings_menu_category_set_menu_items_path(@category) %>">Menu Category</a></li>
<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>
@@ -11,42 +14,44 @@
<div class="card">
<div class="card-block">
<h4 class="card-title">Menu Item </h4>
<h4 class="card-title">Menu Item Instance</h4>
<table class="table">
<thead>
<tr>
<th>Item code</th>
<th>Item Instance code</th>
<th>Name</th>
<th>Alt name</th>
<th>Type</th>
<th>Menu category</th>
<th>Menu item</th>
<th>Min qty</th>
<th>Min selectable item</th>
<th>Max selectable item</th>
<th>Price</th>
<th>On Promotion</th>
<th>Promotion Price</th>
<th>Available</th>
<th>Created At</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<tr>
<td><%= @settings_menu_item.item_code %></td>
<td><%= @settings_menu_item.name rescue "-" %></td>
<td><%= @settings_menu_item.alt_name %></td>
<td><%= @settings_menu_item.type %></td>
<td><%= @settings_menu_item.menu_category_id %></td>
<td><%= @settings_menu_item.menu_item_id %></td>
<td><%= @settings_menu_item.min_qty %></td>
<td><%= @settings_menu_item.min_selectable_item %></td>
<td><%= @settings_menu_item.max_selectable_item %></td>
<td><%=l @settings_menu_item.created_at, format: :short %></td>
<td><%= link_to 'Edit', edit_settings_menu_category_set_menu_item_path(@category, @settings_menu_item) %></td>
<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">

View File

@@ -32,7 +32,7 @@
<td><%= @settings_menu.valid_time_from.strftime("%H:%M") rescue "-" %></td>
<td><%= @settings_menu.valid_time_to.strftime("%H:%M") rescue "-" %></td>
<td><%= @settings_menu.created_by %></td>
<td><%=l @settings_menu.created_at, format: :short %></td>
<td><%= @settings_menu.created_at.utc.getlocal.strftime("%Y-%m-%d/%I:%M %p") %></td>
<td><%= link_to 'Edit', edit_settings_menu_path(@settings_menu) %></td>
</tr>
</tbody>

View File

@@ -71,7 +71,7 @@
<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(@category, settings_menu_item ) %></td>

View File

@@ -1,8 +1,6 @@
<!-- <h1>New Settings Menu Item</h1>
<%= render 'form', settings_menu_item: @settings_menu_item %>
<%= link_to 'Back', settings_menu_items_path %> -->
<%= render 'form', settings_menu_item: @settings_menu_item %> -->
<div class="span12">

View File

@@ -40,13 +40,17 @@
<td><%= @settings_menu_item.min_qty %></td>
<td><%= @settings_menu_item.min_selectable_item %></td>
<td><%= @settings_menu_item.max_selectable_item %></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>
<td><%= link_to 'Edit', edit_settings_menu_category_set_menu_item_path(@category, @settings_menu_item) %></td>
</tr>
</tbody>
</table>
</div>
</div>
<% if @sub_menu.count > 0 %>
<br>
<div class="card">
<div class="card-block">
@@ -75,7 +79,8 @@
<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(@category, settings_menu_item ) %></td>
@@ -93,4 +98,50 @@
</div>
</div>
<%= paginate @sub_menu, param_name: :page, :outer_window => 3 %>
<% end %>
<br>
<div class="card">
<div class="card-block">
<h4 class="card-title">Menu Item Instances
<span style="float: right">
<%= link_to t('.new', :default => t("helpers.links.new")),new_settings_set_menu_item_menu_item_instance_path(@settings_menu_item),:class => 'btn btn-primary btn-sm' %>
</span>
</h4>
<table class="table">
<thead>
<tr>
<!-- <th>Menu Item Id</th> -->
<th>item_instance_code</th>
<th>item_attributes</th>
<th>price</th>
<th>is_on_promotion</th>
<th>promotion_price</th>
<th>Created at</th>
<th colspan="3"></th>
</tr>
</thead>
<tbody>
<% @menu_item_instance.each do |settings_menu_item| %>
<tr>
<!-- <td><%= settings_menu_item.menu_item_id %></td> -->
<td><%= settings_menu_item.item_instance_code %></td>
<td><%= settings_menu_item.item_attributes %></td>
<td><%= settings_menu_item.price %></td>
<td><%= settings_menu_item.is_on_promotion %></td>
<td><%= settings_menu_item.promotion_price %></td>
<td><%= settings_menu_item.created_at.utc.getlocal.strftime("%Y-%m-%d/%I:%M %p") %></td>
<td><%= link_to 'Show', settings_set_menu_item_menu_item_instance_path(@settings_menu_item, settings_menu_item ) %></td>
<td><%= link_to 'Edit', edit_settings_set_menu_item_menu_item_instance_path(@settings_menu_item, settings_menu_item) %></td>
<td><%= link_to 'Destroy', settings_set_menu_item_menu_item_instance_path(@settings_menu_item, settings_menu_item ), method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</tbody>
</table>
</div>
</div>
</div>

View File

@@ -70,7 +70,7 @@
<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(@category, settings_menu_item ) %></td>

View File

@@ -1,8 +1,6 @@
<!-- <h1>New Settings Menu Item</h1>
<%= render 'form', settings_menu_item: @settings_menu_item %>
<%= link_to 'Back', settings_menu_items_path %> -->
<%= render 'form', settings_menu_item: @settings_menu_item %>-->
<div class="span12">

View File

@@ -3,7 +3,9 @@
<ul class="breadcrumb">
<li><a href="<%= %>">Home</a></li>
<li><a href="<%= settings_menu_category_simple_menu_items_path(@category) %>">Menu Category</a></li>
<li>Menu Item Option</li>
<li>Menu Item</li>
<span style="float: right">
</span>
</ul>
@@ -40,13 +42,18 @@
<td><%= @settings_menu_item.min_qty %></td>
<td><%= @settings_menu_item.min_selectable_item %></td>
<td><%= @settings_menu_item.max_selectable_item %></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>
<td><%= link_to 'Edit', edit_settings_menu_category_simple_menu_item_path(@category, @settings_menu_item) %></td>
</tr>
</tbody>
</table>
</div>
</div>
<% if @sub_menu.count > 0 %>
<br>
<div class="card">
<div class="card-block">
@@ -75,7 +82,9 @@
<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(@category, settings_menu_item ) %></td>
@@ -94,19 +103,22 @@
</div>
<%= paginate @sub_menu, param_name: :page, :outer_window => 3 %>
<% end %>
<br>
<div class="card">
<div class="card-block">
<h4 class="card-title">Menu Item Instances
<span style="float: right">
<%= link_to t('.new', :default => t("helpers.links.new")),new_settings_menu_item_menu_item_instance_path(@settings_menu_item),:class => 'btn btn-primary btn-sm' %>
<%= link_to t('.new', :default => t("helpers.links.new")),new_settings_simple_menu_item_menu_item_instance_path(@settings_menu_item),:class => 'btn btn-primary btn-sm' %>
</span>
</h4>
<table class="table">
<thead>
<tr>
<th>Menu Item Id</th>
<!-- <th>Menu Item Id</th> -->
<th>item_instance_code</th>
<th>item_attributes</th>
<th>price</th>
@@ -114,6 +126,7 @@
<th>promotion_price</th>
<th>Created at</th>
<th colspan="3"></th>
</tr>
</thead>
@@ -121,13 +134,19 @@
<tbody>
<% @menu_item_instance.each do |settings_menu_item| %>
<tr>
<td><%= settings_menu_item.menu_item_id %></td>
<td><%= settings_menu_item.item_instance_code %></td>
<td><%= settings_menu_item.item_attributes %></td>
<td><%= settings_menu_item.price %></td>
<td><%= settings_menu_item.is_on_promotion %></td>
<td><%= settings_menu_item.promotion_price %></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>
<td><%= link_to 'Show', settings_simple_menu_item_menu_item_instance_path(@settings_menu_item, settings_menu_item ) %></td>
<td><%= link_to 'Edit', edit_settings_simple_menu_item_menu_item_instance_path(@settings_menu_item, settings_menu_item) %></td>
<td><%= link_to 'Destroy', settings_simple_menu_item_menu_item_instance_path(@settings_menu_item, settings_menu_item ), method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</tbody>

View File

@@ -13,6 +13,6 @@ module SXRestaurants
# -- all .rb files in that directory are automatically loaded.
config.active_record.time_zone_aware_types = [:datetime, :time]
config.active_job.queue_adapter = :sidekiq
end
end

View File

@@ -119,12 +119,15 @@ Rails.application.routes.draw do
resources :menu_categories do
#menu_items
#resources :menu_items
# resources :menu_items
resources :simple_menu_items
resources :set_menu_items
end
resources :menu_items do
resources :simple_menu_items do
resources :menu_item_instances
end
resources :set_menu_items do
resources :menu_item_instances
end
#menu_item_attributes

View File

@@ -1,6 +1,7 @@
class CreateCustomers < ActiveRecord::Migration[5.0]
def change
create_table :customers do |t|
create_table :customers, :id => false, :primary_key => :customer_id do |t|
t.string :customer_id, :limit => 16, :null => false, :index => true, :unique => true #custom foreign_key to prevent conflict during sync
t.string :name, :null => false
t.string :company
t.string :contact_no

View File

@@ -1,10 +1,11 @@
class CreateOrders < ActiveRecord::Migration[5.0]
def change
create_table :orders do |t|
create_table :orders, :id => false, :primary_key => :order_id do |t|
t.string :order_id, :limit => 16, :null => false, :index => true, :unique => true #custom foreign_key to prevent conflict during sync
t.datetime :date, :null => false
t.string :source, :null => false, :default => "emenu"
t.string :order_type, :null => false, :default => "dine-in"
t.references :customer, foreign_key: true
t.string :customer_id, foreign_key: true, :limit => 16
t.integer :item_count, :null => false, :default => 0
t.integer :quantity_count, :null => false, :default => 0
t.string :status, :null => false, :default => "new"

View File

@@ -1,7 +1,8 @@
class CreateOrderItems < ActiveRecord::Migration[5.0]
def change
create_table :order_items do |t|
t.references :order, foreign_key: true, :null => false
create_table :order_items, :id => false, :primary_key => :order_items_id do |t|
t.string :order_items_id, :limit => 16, :null => false, :index => true, :unique => true #custom primary key - to ensure consistence for cloud syncing
t.string :order_id, foreign_key: true, :null => false, :limit => 16
t.string :order_item_status, :null => false, :default => "new"
t.string :item_order_by #person who order this
t.string :item_code, :null => false

View File

@@ -1,6 +1,8 @@
class CreateCashierLoginLogs < ActiveRecord::Migration[5.0]
def change
create_table :cashier_login_logs do |t|
create_table :cashier_login_logs, :id => false, :primary_key => :cashier_login_log_id do |t|
t.string :cashier_login_log_id, :limit => 16, :null => false, :index => true, :unique => true #custom primary key - to ensure consistence for cloud syncing
t.references :cashier_terminal, foreign_key: true
t.references :employee, foreign_key: true
t.datetime :login_at, :null => false

View File

@@ -1,13 +1,15 @@
class CreateSales < ActiveRecord::Migration[5.0]
def change
create_table :sales do |t|
create_table :sales, :id => false, :primary_key => :sale_id do |t|
t.string :sale_id, :limit => 16, :null => false, :index => true, :unique => true #custom primary key - to ensure consistence for cloud syncing
t.integer :cashier_id, :index => true
t.string :cashier_name
t.string :requested_by, :null => false
t.datetime :requested_at, :null => false
t.string :receipt_no, :null => false
t.datetime :receipt_date, :null => false
t.references :customer, foreign_key: true
t.string :customer_id, foreign_key: true, :limit => 16
t.string :payment_status, :null => false, :default => "outstanding"
t.string :sale_status, :null => false, :default => "new"
t.decimal :total_amount, :precision => 10, :scale => 2, :null => false, :default => 0.00

View File

@@ -1,7 +1,8 @@
class CreateSaleItems < ActiveRecord::Migration[5.0]
def change
create_table :sale_items do |t|
t.references :sale, foreign_key: true
create_table :sale_items, :id => false, :primary_key => :sale_item_id do |t|
t.string :sale_item_id, :limit => 16, :null => false, :index => true, :unique => true #custom primary key - to ensure consistence for cloud syncing
t.string :sale_id, foreign_key: true, :limit => 16
t.string :product_code, :null => false
t.string :product_name, :null => false
t.string :remark

View File

@@ -1,7 +1,9 @@
class CreateSaleTaxes < ActiveRecord::Migration[5.0]
def change
create_table :sale_taxes do |t|
t.references :sale, foreign_key: true
create_table :sale_taxes, :id => false, :primary_key => :sale_tax_id do |t|
t.string :sale_tax_id, :limit => 16, :null => false, :index => true, :unique => true #custom primary key - to ensure consistence for cloud syncing
t.string :sale_id, foreign_key: true, :limit => 16
t.string :tax_name, :null => false
t.decimal :tax_rate, :precision => 10, :scale => 2, :null => false, :default => 0.00
t.decimal :tax_payable_amount, :precision => 10, :scale => 2, :null => false, :default => 0.00

View File

@@ -1,7 +1,9 @@
class CreateSalePayments < ActiveRecord::Migration[5.0]
def change
create_table :sale_payments do |t|
t.references :sale, foreign_key: true
create_table :sale_payments, :id => false, :primary_key => :sale_payment_id do |t|
t.string :sale_payment_id, :limit => 16, :null => false, :index => true, :unique => true #custom primary key - to ensure consistence for cloud syncing
t.string :sale_id, foreign_key: true, :limit => 16
t.string :payment_method, :null => false, :default => "cash"
t.decimal :payment_amount, :precision => 10, :scale => 2, :null => false, :default => 0.00
t.decimal :outstanding_amount, :precision => 10, :scale => 2, :null => false, :default => 0.00

View File

@@ -1,8 +1,10 @@
class CreateSaleOrders < ActiveRecord::Migration[5.0]
def change
create_table :sale_orders do |t|
t.references :sale, foreign_key: true
t.references :order, foreign_key: true
create_table :sale_orders, :id => false, :primary_key => :sale_order_id do |t|
t.string :sale_order_id, :limit => 16, :null => false, :index => true, :unique => true #custom primary key - to ensure consistence for cloud syncing
t.string :sale, foreign_key: true,:limit => 16
t.string :order, foreign_key: true, :limit => 16
t.timestamps
end

View File

@@ -1,7 +1,9 @@
class CreateSaleAudits < ActiveRecord::Migration[5.0]
def change
create_table :sale_audits do |t|
t.references :sale, foreign_key: true
create_table :sale_audits, :id => false, :primary_key => :sale_audit_id do |t|
t.string :sale_audit_id, :limit => 16, :null => false, :index => true, :unique => true #custom primary key - to ensure consistence for cloud syncing
t.string :sale_id, foreign_key: true, :limit => 16
t.string :action, :null => false
t.datetime :action_at, :null => false
t.string :action_by, :null => false

View File

@@ -1,6 +1,8 @@
class CreateBookings < ActiveRecord::Migration[5.0]
def change
create_table :bookings do |t|
create_table :bookings, :id => false, :primary_key => :booking_id do |t|
t.string :booking_id, :limit => 16, :null => false, :index => true, :unique => true #custom primary key - to ensure consistence for cloud syncing
t.references :dining_facility, foreign_key: true
t.string :type, :null => false, :default => "Table"
t.datetime :checkin_at, :null => false
@@ -10,7 +12,8 @@ class CreateBookings < ActiveRecord::Migration[5.0]
t.datetime :reserved_at
t.string :reserved_by
t.string :booking_status, :null => false, :default => "new"
t.references :sale, foreign_key: true
t.string :sale_id, foreign_key: true, :limit => 16
t.string :customer_id, foreign_key: true, :limit => 16
t.timestamps
end

View File

@@ -5,7 +5,6 @@ class CreateSeedGenerators < ActiveRecord::Migration[5.0]
t.integer :increase_by, :null => false, :default => 1
t.bigint :current, :null => false ,:default => 1
t.bigint :next, :null => false, :default => 2
t.timestamps
end
end

View File

@@ -1,9 +1,10 @@
class CreateAssignedOrderItems < ActiveRecord::Migration[5.0]
def change
create_table :assigned_order_items do |t|
create_table :assigned_order_items, :id => false, :primary_key => :assigned_order_item_id do |t|
t.string :assigned_order_item_id, :limit => 16, :null => false, :index => true, :unique => true #custom primary key - to ensure consistence for cloud syncing
t.string :item_code, :null => false, :index => true
t.references :order_queue_station, foreign_key: true
t.references :order, foreign_key: true
t.string :order_id, foreign_key: true, :limit => 16
t.boolean :print_status
t.boolean :delivery_status

View File

@@ -1,8 +1,10 @@
class CreateBookingOrders < ActiveRecord::Migration[5.0]
def change
create_table :booking_orders do |t|
t.references :booking, foreign_key: true
t.references :order, foreign_key: true
create_table :booking_orders, :id => false, :primary_key => :booking_order_id do |t|
t.string :booking_order_id, :limit => 16, :null => false, :index => true, :unique => true #custom primary key - to ensure consistence for cloud syncing
t.string :booking, foreign_key: true, :limit => 16
t.string :order, foreign_key: true, :limit => 16
t.timestamps
end

View File

@@ -0,0 +1,25 @@
class CreateShops < ActiveRecord::Migration[5.1]
def change
create_table :shops do |t|
t.string :logo
t.string :name, :null => false
t.string :address, :null => false
t.string :township, :null => false
t.string :city, :null => false
t.string :state, :null => false
t.string :country, :null => false
t.string :phone_no, :null => false
t.string :reserviation_no, :null => false
t.string :license, :null => false
t.datetime :activated_at, :null => false
t.text :license_data, :null => false
t.string :base_currency, :null => false, :limit => 3
t.string :cloud_url
t.string :cloud_token
t.string :owner_token
t.string :id_prefix, :null => false, :limit => 3
t.timestamps
end
end
end

Binary file not shown.

View File

@@ -1,5 +1,5 @@
require 'rails_helper'
RSpec.describe Test, type: :model do
RSpec.describe Shop, type: :model do
pending "add some examples to (or delete) #{__FILE__}"
end