diff --git a/Gemfile b/Gemfile
index 3d079c20..bcbebe51 100644
--- a/Gemfile
+++ b/Gemfile
@@ -9,6 +9,7 @@ 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
@@ -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
diff --git a/Gemfile.lock b/Gemfile.lock
index e2c1dd73..5dce67dc 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -119,6 +119,7 @@ GEM
nokogiri (1.7.2)
mini_portile2 (~> 2.1.0)
pdf-core (0.7.0)
+ pg (0.20.0)
prawn (2.2.2)
pdf-core (~> 0.7.0)
ttfunk (~> 1.5)
@@ -252,6 +253,7 @@ DEPENDENCIES
kaminari!
listen (~> 3.0.5)
mysql2 (>= 0.3.18, < 0.5)
+ pg
prawn
prawn-table
puma (~> 3.0)
diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss
index 7aa6d6c5..9456be10 100644
--- a/app/assets/stylesheets/application.scss
+++ b/app/assets/stylesheets/application.scss
@@ -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 -----*/
\ No newline at end of file
+/*----- Header Bar -----*/
diff --git a/app/controllers/origami/request_bills_controller.rb b/app/controllers/origami/request_bills_controller.rb
index c202d4dc..9f971289 100644
--- a/app/controllers/origami/request_bills_controller.rb
+++ b/app/controllers/origami/request_bills_controller.rb
@@ -1,6 +1,7 @@
class Origami::RequestBillsController < BaseOrigamiController
def show
@sale = Sale.new
+
check_order = Order.find_by_id(params[:id])
if check_order
@order_details = OrderItem.get_order_items_details(check_order.id)
@@ -9,5 +10,13 @@ class Origami::RequestBillsController < BaseOrigamiController
@sale_data = Sale.find_by_id(@sale_id)
@sale_items = SaleItem.where("sale_id=?",@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)
+
+
end
end
diff --git a/app/controllers/settings/menu_item_instances_controller.rb b/app/controllers/settings/menu_item_instances_controller.rb
index 00f980e9..6bd00638 100644
--- a/app/controllers/settings/menu_item_instances_controller.rb
+++ b/app/controllers/settings/menu_item_instances_controller.rb
@@ -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
diff --git a/app/controllers/settings/order_queue_stations_controller.rb b/app/controllers/settings/order_queue_stations_controller.rb
index e0cf0d08..46fcb54d 100644
--- a/app/controllers/settings/order_queue_stations_controller.rb
+++ b/app/controllers/settings/order_queue_stations_controller.rb
@@ -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.' }
diff --git a/app/controllers/settings/set_menu_items_controller.rb b/app/controllers/settings/set_menu_items_controller.rb
index cc5e89e8..f6771548 100644
--- a/app/controllers/settings/set_menu_items_controller.rb
+++ b/app/controllers/settings/set_menu_items_controller.rb
@@ -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
diff --git a/app/controllers/settings/simple_menu_items_controller.rb b/app/controllers/settings/simple_menu_items_controller.rb
index d2083e59..e0d45fcb 100644
--- a/app/controllers/settings/simple_menu_items_controller.rb
+++ b/app/controllers/settings/simple_menu_items_controller.rb
@@ -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
diff --git a/app/models/login_form.rb b/app/forms/login_form.rb
similarity index 100%
rename from app/models/login_form.rb
rename to app/forms/login_form.rb
diff --git a/app/forms/shop_form.rb b/app/forms/shop_form.rb
new file mode 100644
index 00000000..19af84a5
--- /dev/null
+++ b/app/forms/shop_form.rb
@@ -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
diff --git a/app/jobs/order_broadcast_job.rb b/app/jobs/order_broadcast_job.rb
index b29f4cd8..28a152ce 100644
--- a/app/jobs/order_broadcast_job.rb
+++ b/app/jobs/order_broadcast_job.rb
@@ -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
diff --git a/app/models/account.rb b/app/models/account.rb
index 4cf5040c..e1cdc6d3 100644
--- a/app/models/account.rb
+++ b/app/models/account.rb
@@ -2,6 +2,6 @@ class Account < ApplicationRecord
validates_presence_of :title, :account_type
has_many :menu_items
- # belongs_to :lookup , :class_name => "Lookup" ,:foreign_key => :tax_type
+ # belongs_to :lookup , :class_name => "Lookup"
end
diff --git a/app/models/assigned_order_item.rb b/app/models/assigned_order_item.rb
index c2d2e8b0..ed8b0c82 100644
--- a/app/models/assigned_order_item.rb
+++ b/app/models/assigned_order_item.rb
@@ -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
diff --git a/app/models/booking.rb b/app/models/booking.rb
index c6a6452e..64eefbad 100644
--- a/app/models/booking.rb
+++ b/app/models/booking.rb
@@ -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
diff --git a/app/models/booking_order.rb b/app/models/booking_order.rb
index c0883967..c9f748f0 100644
--- a/app/models/booking_order.rb
+++ b/app/models/booking_order.rb
@@ -1,4 +1,6 @@
class BookingOrder < ApplicationRecord
+ #primary key - need to be unique
+
belongs_to :booking
belongs_to :order
end
diff --git a/app/models/cashier_login_log.rb b/app/models/cashier_login_log.rb
index d64860ce..353e9c90 100644
--- a/app/models/cashier_login_log.rb
+++ b/app/models/cashier_login_log.rb
@@ -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
diff --git a/app/models/crm.rb b/app/models/crm.rb
deleted file mode 100644
index 3407e215..00000000
--- a/app/models/crm.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-module Crm
- def self.table_name_prefix
- 'crm_'
- end
-end
diff --git a/app/models/customer.rb b/app/models/customer.rb
index 42247791..a9ffbfc5 100644
--- a/app/models/customer.rb
+++ b/app/models/customer.rb
@@ -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
diff --git a/app/models/menu_item.rb b/app/models/menu_item.rb
index e83c2eed..2a4e86be 100644
--- a/app/models/menu_item.rb
+++ b/app/models/menu_item.rb
@@ -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
diff --git a/app/models/menu_item_attribute.rb b/app/models/menu_item_attribute.rb
index ebaa060e..a2fd0d1c 100644
--- a/app/models/menu_item_attribute.rb
+++ b/app/models/menu_item_attribute.rb
@@ -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
diff --git a/app/models/order.rb b/app/models/order.rb
index 989533fc..9133e907 100644
--- a/app/models/order.rb
+++ b/app/models/order.rb
@@ -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)
@@ -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
@@ -221,7 +215,9 @@ class Order < ApplicationRecord
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")
+
end
#Origami: Cashier : to view order type Room
def self.get_order_rooms
@@ -232,7 +228,7 @@ class Order < ApplicationRecord
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")
+ .group("orders.id,order_items.id,dining_facilities.name")
end
#Origami: Cashier : to view orders
def self.get_orders
@@ -244,7 +240,18 @@ class Order < ApplicationRecord
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.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
diff --git a/app/models/order_item.rb b/app/models/order_item.rb
index f839ad99..1cd83dc1 100644
--- a/app/models/order_item.rb
+++ b/app/models/order_item.rb
@@ -1,4 +1,7 @@
class OrderItem < ApplicationRecord
+ #primary key - need to be unique
+ before_create :generate_custom_id
+
#Associations
belongs_to :order, autosave: true
@@ -37,6 +40,12 @@ class OrderItem < ApplicationRecord
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)
+ .where("order_items.order_id=?",order_id)
+
+ end
+
+ private
+ def generate_custom_id
+ self.order_item_id = SeedGenerator.generate_id(self.class.name, "ODI")
end
end
diff --git a/app/models/printer/receipt_printer.rb b/app/models/printer/receipt_printer.rb
index 521b87e0..d25dc8c3 100644
--- a/app/models/printer/receipt_printer.rb
+++ b/app/models/printer/receipt_printer.rb
@@ -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)
+ #Use CUPS service
+ #Generate PDF
+ #Print
+ pdf = ReceiptBillPdf.new(printer_settings,sale_items,sale)
+ pdf.render_file "tmp/receipt_bill_#{sale.id}.pdf"
+ self.print("tmp/receipt_bill_#{sale.id}.pdf")
+ end
end
diff --git a/app/models/room_booking.rb b/app/models/room_booking.rb
index fb7c0dac..7efa52cb 100644
--- a/app/models/room_booking.rb
+++ b/app/models/room_booking.rb
@@ -1,3 +1,4 @@
class RoomBooking < Booking
-
+ has_many :orders
+
end
diff --git a/app/models/sale.rb b/app/models/sale.rb
index 88f0d846..ed3e4c96 100644
--- a/app/models/sale.rb
+++ b/app/models/sale.rb
@@ -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
@@ -240,4 +242,8 @@ class Sale < ApplicationRecord
end
end
+ private
+ def generate_custom_id
+ self.sale_id = SeedGenerator.generate_id(self.class.name, "SAL")
+ end
end
diff --git a/app/models/sale_audit.rb b/app/models/sale_audit.rb
index 15fee460..4ace962d 100644
--- a/app/models/sale_audit.rb
+++ b/app/models/sale_audit.rb
@@ -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
diff --git a/app/models/sale_item.rb b/app/models/sale_item.rb
index 82b20237..622057ec 100644
--- a/app/models/sale_item.rb
+++ b/app/models/sale_item.rb
@@ -1,7 +1,15 @@
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
+
+ private
+ def generate_custom_id
+ self.sale_item_id = SeedGenerator.generate_id(self.class.name, "SLI")
+ end
end
diff --git a/app/models/sale_order.rb b/app/models/sale_order.rb
index 7a27f5a3..ba39234b 100644
--- a/app/models/sale_order.rb
+++ b/app/models/sale_order.rb
@@ -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
diff --git a/app/models/sale_payment.rb b/app/models/sale_payment.rb
index 71793f4c..76d2869a 100644
--- a/app/models/sale_payment.rb
+++ b/app/models/sale_payment.rb
@@ -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
diff --git a/app/models/sale_tax.rb b/app/models/sale_tax.rb
index cb3fae0b..2eb24312 100644
--- a/app/models/sale_tax.rb
+++ b/app/models/sale_tax.rb
@@ -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
diff --git a/app/models/seed_generator.rb b/app/models/seed_generator.rb
index 573e0ff6..02a9fb64 100644
--- a/app/models/seed_generator.rb
+++ b/app/models/seed_generator.rb
@@ -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
diff --git a/app/models/shop.rb b/app/models/shop.rb
new file mode 100644
index 00000000..1cf1119c
--- /dev/null
+++ b/app/models/shop.rb
@@ -0,0 +1,2 @@
+class Shop < ApplicationRecord
+end
diff --git a/app/models/test.rb b/app/models/test.rb
deleted file mode 100644
index fe0afa77..00000000
--- a/app/models/test.rb
+++ /dev/null
@@ -1,2 +0,0 @@
-class Test < ApplicationRecord
-end
diff --git a/app/models/transactions.rb b/app/models/transactions.rb
deleted file mode 100644
index 9cffb0d1..00000000
--- a/app/models/transactions.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-module Transactions
- def self.table_name_prefix
- 'transactions_'
- end
-end
diff --git a/app/pdf/receipt_bill_pdf.rb b/app/pdf/receipt_bill_pdf.rb
new file mode 100644
index 00000000..e9ad042c
--- /dev/null
+++ b/app/pdf/receipt_bill_pdf.rb
@@ -0,0 +1,110 @@
+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)
+ self.p_width = 200
+ self.page_height = 1450
+ self.margin = 10
+ # self.price_width = self.p_width / 2
+ self.price_width=90
+ 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 * 2
+ @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.name, sale.receipt_date)
+ line_items(sale_items)
+
+
+ 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 "Discount", :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 "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)
+ stroke_horizontal_rule
+
+ end
+
+ def add_line_item_row(sale_items)
+ y_position = cursor
+ move_down 5
+ end
+
+end
diff --git a/app/views/crm/home/_booking.html.erb b/app/views/crm/home/_booking.html.erb
index 13702bf6..b8d2ba50 100644
--- a/app/views/crm/home/_booking.html.erb
+++ b/app/views/crm/home/_booking.html.erb
@@ -21,10 +21,10 @@
@@ -38,19 +38,21 @@ $(function(){
$(".booking_click").on("click", function(){
$(".summary-items tbody tr").remove();
+ $("#cancel").removeAttr("disabled");
+ $("#assign").removeAttr("disabled");
var url = $(this).attr('data-ref');
show_details(url);
});
$('.assign').click(function(e){
- var booking_id = $(this).attr("data-id")
+ var booking_id = $(this).val()
var type = $(this).attr("data-type")
update_booking(booking_id,type)
});
$('.cancel').click(function(e){
- var booking_id = $(this).attr("data-id")
+ var booking_id = $(this).val()
var type = $(this).attr("data-type")
update_booking(booking_id,type)
@@ -71,7 +73,8 @@ function show_details(url_item){
$("#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);
diff --git a/app/views/crm/home/_queue.html.erb b/app/views/crm/home/_queue.html.erb
index 1633f901..5bbbd2bf 100644
--- a/app/views/crm/home/_queue.html.erb
+++ b/app/views/crm/home/_queue.html.erb
@@ -2,7 +2,7 @@
<% @i = 0 %>
<% @booking.each do |booking| %>
- <% if booking.booking_status == "complete" %>
+ <% if booking.booking_status == "assign" %>
diff --git a/app/views/settings/accounts/index.html.erb b/app/views/settings/accounts/index.html.erb
index b205aa02..d8469a69 100644
--- a/app/views/settings/accounts/index.html.erb
+++ b/app/views/settings/accounts/index.html.erb
@@ -1,7 +1,4 @@
-
-<%= link_to 'New Settings Account', new_settings_account_path %>
-
Menu Category
@@ -28,7 +28,7 @@
<%= @settings_menu_category.name rescue "-" %> |
<%= @settings_menu_category.alt_name %> |
<%= @settings_menu_category.order_by %> |
- <%=l @settings_menu_category.created_at, format: :short %> |
+ <%= @settings_menu_category.created_at.utc.getlocal.strftime("%Y-%m-%d/%I:%M %p") %> |
<%= link_to 'Edit', edit_settings_menu_menu_category_path(@settings_menu_category, @settings_menu_category) %> |
@@ -69,7 +69,9 @@
<%= settings_menu_item.type %> |
<%= settings_menu_item.parent.name rescue "-" %> |
<%= settings_menu_item.created_by %> |
- <%=l settings_menu_item.created_at, :format => :short %> |
+
+ <%= settings_menu_item.created_at.utc.getlocal.strftime("%Y-%m-%d/%I:%M %p") %> |
+
<% if settings_menu_item.type == "SimpleMenuItem" %>
<%= link_to 'Show', settings_menu_category_simple_menu_item_path(@settings_menu_category, settings_menu_item ) %> |
<%= link_to 'Edit', edit_settings_menu_category_simple_menu_item_path(@settings_menu_category, settings_menu_item) %> |
@@ -86,4 +88,4 @@
-
\ No newline at end of file
+
diff --git a/app/views/settings/menu_item_instances/_form.html.erb b/app/views/settings/menu_item_instances/_form.html.erb
index b369a1d3..7d326c95 100644
--- a/app/views/settings/menu_item_instances/_form.html.erb
+++ b/app/views/settings/menu_item_instances/_form.html.erb
@@ -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 %>
<%= 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 %>
diff --git a/app/views/settings/menu_item_instances/edit.html.erb b/app/views/settings/menu_item_instances/edit.html.erb
index 158b7c1c..01a47cc0 100644
--- a/app/views/settings/menu_item_instances/edit.html.erb
+++ b/app/views/settings/menu_item_instances/edit.html.erb
@@ -4,9 +4,13 @@
- <%= render 'form', settings_set_menu_item: @settings_menu_item %>
+ <%= render 'form', settings_menu_item_menu_item_instances: @settings_menu_item_instances %>
+
diff --git a/app/views/settings/menu_item_instances/new.html.erb b/app/views/settings/menu_item_instances/new.html.erb
index 9fae5b34..c6d688ca 100644
--- a/app/views/settings/menu_item_instances/new.html.erb
+++ b/app/views/settings/menu_item_instances/new.html.erb
@@ -1,17 +1,20 @@
-<%= link_to 'Back', settings_menu_items_path %> -->
- <%= render 'form', settings_set_menu_instance: @settings_menu_item_instance %>
+ <%= render 'form', settings_simple_menu_item_menu_item_instances: @settings_menu_item_instances %>
+
diff --git a/app/views/settings/menu_item_instances/show.html.erb b/app/views/settings/menu_item_instances/show.html.erb
index 238fa038..edd34a74 100644
--- a/app/views/settings/menu_item_instances/show.html.erb
+++ b/app/views/settings/menu_item_instances/show.html.erb
@@ -1,9 +1,12 @@
+
+<% if @sub_menu.count > 0 %>
+
@@ -75,7 +82,9 @@
<%= settings_menu_item.type %> |
<%= settings_menu_item.parent.name rescue "-" %> |
<%= settings_menu_item.created_by %> |
- <%=l settings_menu_item.created_at, :format => :short %> |
+
+ <%= settings_menu_item.created_at.utc.getlocal.strftime("%Y-%m-%d/%I:%M %p") %> |
+
<% if settings_menu_item.type == "SimpleMenuItem" %>
<%= link_to 'Show', settings_menu_category_simple_menu_item_path(@category, settings_menu_item ) %> |
@@ -94,19 +103,22 @@
<%= paginate @sub_menu, param_name: :page, :outer_window => 3 %>
+<% end %>
+
Menu Item Instances
- <%= 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' %>
- | Menu Item Id |
+
item_instance_code |
item_attributes |
price |
@@ -114,6 +126,7 @@
promotion_price |
Created at |
+
|
@@ -121,13 +134,19 @@
<% @menu_item_instance.each do |settings_menu_item| %>
- | <%= settings_menu_item.menu_item_id %> |
+
<%= settings_menu_item.item_instance_code %> |
<%= settings_menu_item.item_attributes %> |
<%= settings_menu_item.price %> |
<%= settings_menu_item.is_on_promotion %> |
<%= settings_menu_item.promotion_price %> |
- <%=l settings_menu_item.created_at, :format => :short %> |
+
+ <%= settings_menu_item.created_at.utc.getlocal.strftime("%Y-%m-%d/%I:%M %p") %> |
+
+ <%= link_to 'Show', settings_simple_menu_item_menu_item_instance_path(@settings_menu_item, settings_menu_item ) %> |
+ <%= link_to 'Edit', edit_settings_simple_menu_item_menu_item_instance_path(@settings_menu_item, settings_menu_item) %> |
+ <%= link_to 'Destroy', settings_simple_menu_item_menu_item_instance_path(@settings_menu_item, settings_menu_item ), method: :delete, data: { confirm: 'Are you sure?' } %> |
+
<% end %>
diff --git a/config/application.rb b/config/application.rb
index 9ca67743..2a47de48 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -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
diff --git a/config/routes.rb b/config/routes.rb
index 81c27917..5f5fffb0 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -121,12 +121,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
diff --git a/db/migrate/20170403135121_create_customers.rb b/db/migrate/20170403135121_create_customers.rb
index 76e9894a..17c104cd 100644
--- a/db/migrate/20170403135121_create_customers.rb
+++ b/db/migrate/20170403135121_create_customers.rb
@@ -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
diff --git a/db/migrate/20170403135934_create_orders.rb b/db/migrate/20170403135934_create_orders.rb
index d318386e..7fe7eb12 100644
--- a/db/migrate/20170403135934_create_orders.rb
+++ b/db/migrate/20170403135934_create_orders.rb
@@ -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"
diff --git a/db/migrate/20170403140820_create_order_items.rb b/db/migrate/20170403140820_create_order_items.rb
index 847381a4..45a0f8fa 100644
--- a/db/migrate/20170403140820_create_order_items.rb
+++ b/db/migrate/20170403140820_create_order_items.rb
@@ -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
diff --git a/db/migrate/20170403155531_create_cashier_login_logs.rb b/db/migrate/20170403155531_create_cashier_login_logs.rb
index b12f258f..176c5cae 100644
--- a/db/migrate/20170403155531_create_cashier_login_logs.rb
+++ b/db/migrate/20170403155531_create_cashier_login_logs.rb
@@ -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
diff --git a/db/migrate/20170403160742_create_sales.rb b/db/migrate/20170403160742_create_sales.rb
index 4780a788..8d653421 100644
--- a/db/migrate/20170403160742_create_sales.rb
+++ b/db/migrate/20170403160742_create_sales.rb
@@ -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
diff --git a/db/migrate/20170403161857_create_sale_items.rb b/db/migrate/20170403161857_create_sale_items.rb
index 7f4533e3..7f58c5bb 100644
--- a/db/migrate/20170403161857_create_sale_items.rb
+++ b/db/migrate/20170403161857_create_sale_items.rb
@@ -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
diff --git a/db/migrate/20170403163219_create_sale_taxes.rb b/db/migrate/20170403163219_create_sale_taxes.rb
index c52e4117..d12ab367 100644
--- a/db/migrate/20170403163219_create_sale_taxes.rb
+++ b/db/migrate/20170403163219_create_sale_taxes.rb
@@ -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
diff --git a/db/migrate/20170403163734_create_sale_payments.rb b/db/migrate/20170403163734_create_sale_payments.rb
index dd440036..fc625e44 100644
--- a/db/migrate/20170403163734_create_sale_payments.rb
+++ b/db/migrate/20170403163734_create_sale_payments.rb
@@ -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
diff --git a/db/migrate/20170403174029_create_sale_orders.rb b/db/migrate/20170403174029_create_sale_orders.rb
index 50923ac2..420e4b13 100644
--- a/db/migrate/20170403174029_create_sale_orders.rb
+++ b/db/migrate/20170403174029_create_sale_orders.rb
@@ -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
diff --git a/db/migrate/20170403174111_create_sale_audits.rb b/db/migrate/20170403174111_create_sale_audits.rb
index 1880478b..38af14ab 100644
--- a/db/migrate/20170403174111_create_sale_audits.rb
+++ b/db/migrate/20170403174111_create_sale_audits.rb
@@ -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
diff --git a/db/migrate/20170404034234_create_bookings.rb b/db/migrate/20170404034234_create_bookings.rb
index a67e7a30..a9e7c21f 100644
--- a/db/migrate/20170404034234_create_bookings.rb
+++ b/db/migrate/20170404034234_create_bookings.rb
@@ -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
diff --git a/db/migrate/20170408105938_create_seed_generators.rb b/db/migrate/20170408105938_create_seed_generators.rb
index 6ccf669f..eb58749a 100644
--- a/db/migrate/20170408105938_create_seed_generators.rb
+++ b/db/migrate/20170408105938_create_seed_generators.rb
@@ -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
diff --git a/db/migrate/20170414090001_create_assigned_order_items.rb b/db/migrate/20170414090001_create_assigned_order_items.rb
index e617adea..a0f79262 100644
--- a/db/migrate/20170414090001_create_assigned_order_items.rb
+++ b/db/migrate/20170414090001_create_assigned_order_items.rb
@@ -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
diff --git a/db/migrate/20170414110918_create_booking_orders.rb b/db/migrate/20170414110918_create_booking_orders.rb
index 9a28a5af..50277de9 100644
--- a/db/migrate/20170414110918_create_booking_orders.rb
+++ b/db/migrate/20170414110918_create_booking_orders.rb
@@ -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
diff --git a/db/migrate/20170530072247_create_shops.rb b/db/migrate/20170530072247_create_shops.rb
new file mode 100644
index 00000000..25de6c6a
--- /dev/null
+++ b/db/migrate/20170530072247_create_shops.rb
@@ -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
diff --git a/redis-stable.tar.gz b/redis-stable.tar.gz
deleted file mode 100644
index 47c49f3b..00000000
Binary files a/redis-stable.tar.gz and /dev/null differ
diff --git a/spec/models/test_spec.rb b/spec/models/shop_spec.rb
similarity index 69%
rename from spec/models/test_spec.rb
rename to spec/models/shop_spec.rb
index 2b626b06..9fd43ff8 100644
--- a/spec/models/test_spec.rb
+++ b/spec/models/shop_spec.rb
@@ -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