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/crm/home/index.html.erb b/app/views/crm/home/index.html.erb index 431ef4a4..a140f43c 100644 --- a/app/views/crm/home/index.html.erb +++ b/app/views/crm/home/index.html.erb @@ -5,7 +5,7 @@

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' %>

- + @@ -114,6 +126,7 @@ + @@ -121,13 +134,19 @@ <% @menu_item_instance.each do |settings_menu_item| %> - + - + + + + + + + <% 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
Menu Item Id item_instance_code item_attributes pricepromotion_price Created at
<%= 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?' } %>