diff --git a/app/assets/javascripts/settings/item_sets.coffee b/app/assets/javascripts/settings/item_sets.coffee
new file mode 100644
index 00000000..24f83d18
--- /dev/null
+++ b/app/assets/javascripts/settings/item_sets.coffee
@@ -0,0 +1,3 @@
+# Place all the behaviors and hooks related to the matching controller here.
+# All this logic will automatically be available in application.js.
+# You can use CoffeeScript in this file: http://coffeescript.org/
diff --git a/app/assets/stylesheets/settings/item_sets.scss b/app/assets/stylesheets/settings/item_sets.scss
new file mode 100644
index 00000000..004d8d6b
--- /dev/null
+++ b/app/assets/stylesheets/settings/item_sets.scss
@@ -0,0 +1,3 @@
+// Place all the styles related to the Settings/ItemSets controller here.
+// They will automatically be included in application.css.
+// You can use Sass (SCSS) here: http://sass-lang.com/
diff --git a/app/controllers/origami/customers_controller.rb b/app/controllers/origami/customers_controller.rb
index 9c054378..8faaa221 100644
--- a/app/controllers/origami/customers_controller.rb
+++ b/app/controllers/origami/customers_controller.rb
@@ -60,6 +60,7 @@ class Origami::CustomersController < BaseOrigamiController
id = params[:sale_id][0,3]
customer_id = params[:customer_id]
+ customer = Customer.find(customer_id)
# Check and find with card no
# if(!customer_id.include? "CUS")
@@ -74,7 +75,7 @@ class Origami::CustomersController < BaseOrigamiController
status = sale.update_attributes(customer_id: customer_id)
sale.sale_orders.each do |sale_order|
order = Order.find(sale_order.order_id)
- status = order.update_attributes(customer_id: customer_id)
+ status = order.update_attributes(customer_id: customer_id,order_type:customer.customer_type)
end
else
@booking = BookingOrder.find_by_order_id(params[:sale_id])
@@ -82,7 +83,7 @@ class Origami::CustomersController < BaseOrigamiController
@orders.each do |bo|
order = Order.find(bo.order_id)
- status = order.update_attributes(customer_id: customer_id)
+ status = order.update_attributes(customer_id: customer_id,order_type:customer.customer_type)
end
end
diff --git a/app/controllers/origami/payments_controller.rb b/app/controllers/origami/payments_controller.rb
index 8c328030..109138a5 100644
--- a/app/controllers/origami/payments_controller.rb
+++ b/app/controllers/origami/payments_controller.rb
@@ -163,6 +163,35 @@ class Origami::PaymentsController < BaseOrigamiController
printer.print_receipt_bill(print_settings,saleObj.sale_items,saleObj,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details, "Re-print")
end
+ def foc
+ cash = params[:cash]
+ sale_id = params[:sale_id]
+ sub_total = params[:sub_total]
+ member_info = nil
+ rebate_amount = nil
+
+ if(Sale.exists?(sale_id))
+ saleObj = Sale.find(sale_id)
+ sale_payment = SalePayment.new
+ sale_payment.process_payment(saleObj, @user, cash, "foc")
+
+ unique_code = "ReceiptBillPdf"
+ customer= Customer.find(saleObj.customer_id)
+
+ #shop detail
+ shop_details = Shop.find(1)
+
+ # get printer info
+ print_settings=PrintSetting.find_by_unique_code(unique_code)
+ # Calculate Food and Beverage Total
+ item_price_by_accounts = SaleItem.calculate_price_by_accounts(saleObj.sale_items)
+ discount_price_by_accounts = SaleItem.get_discount_price_by_accounts(saleObj.sale_items)
+
+ printer = Printer::ReceiptPrinter.new(print_settings)
+ printer.print_receipt_bill(print_settings,saleObj.sale_items,saleObj,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details, "FOC")
+ end
+ end
+
def rounding_adj
saleObj = Sale.find(params[:sale_id])
diff --git a/app/controllers/origami/shifts_controller.rb b/app/controllers/origami/shifts_controller.rb
index e134a594..31c68edf 100644
--- a/app/controllers/origami/shifts_controller.rb
+++ b/app/controllers/origami/shifts_controller.rb
@@ -66,8 +66,6 @@ class Origami::ShiftsController < BaseOrigamiController
@sale_taxes = Sale.get_separate_tax(shift_obj,from=nil,to=nil,type='')
#other payment details for mpu or visa like card
@other_payment = ShiftSale.get_by_shift_other_payment(@shift)
- #t details for mpu or visa like card
- @other_payment = ShiftSale.get_by_shift_other_payment(@shift)
# Calculate price_by_accounts
@total_amount_by_account = ShiftSale.calculate_total_price_by_accounts(@shift,'amount')
diff --git a/app/controllers/settings/item_sets_controller.rb b/app/controllers/settings/item_sets_controller.rb
new file mode 100644
index 00000000..ace39027
--- /dev/null
+++ b/app/controllers/settings/item_sets_controller.rb
@@ -0,0 +1,74 @@
+class Settings::ItemSetsController < ApplicationController
+ before_action :set_settings_item_set, only: [:show, :edit, :update, :destroy]
+
+ # GET /settings/item_sets
+ # GET /settings/item_sets.json
+ def index
+ @settings_item_sets = ItemSet.all
+ end
+
+ # GET /settings/item_sets/1
+ # GET /settings/item_sets/1.json
+ def show
+ end
+
+ # GET /settings/item_sets/new
+ def new
+ @settings_item_set = ItemSet.new
+ end
+
+ # GET /settings/item_sets/1/edit
+ def edit
+ end
+
+ # POST /settings/item_sets
+ # POST /settings/item_sets.json
+ def create
+ @settings_item_set = ItemSet.new(settings_item_set_params)
+
+ respond_to do |format|
+ if @settings_item_set.save
+ format.html { redirect_to @settings_item_set, notice: 'Item set was successfully created.' }
+ format.json { render :show, status: :created, location: @settings_item_set }
+ else
+ format.html { render :new }
+ format.json { render json: @settings_item_set.errors, status: :unprocessable_entity }
+ end
+ end
+ end
+
+ # PATCH/PUT /settings/item_sets/1
+ # PATCH/PUT /settings/item_sets/1.json
+ def update
+ respond_to do |format|
+ if @settings_item_set.update(settings_item_set_params)
+ format.html { redirect_to @settings_item_set, notice: 'Item set was successfully updated.' }
+ format.json { render :show, status: :ok, location: @settings_item_set }
+ else
+ format.html { render :edit }
+ format.json { render json: @settings_item_set.errors, status: :unprocessable_entity }
+ end
+ end
+ end
+
+ # DELETE /settings/item_sets/1
+ # DELETE /settings/item_sets/1.json
+ def destroy
+ @settings_item_set.destroy
+ respond_to do |format|
+ format.html { redirect_to settings_item_sets_url, notice: 'Item set was successfully destroyed.' }
+ format.json { head :no_content }
+ end
+ end
+
+ private
+ # Use callbacks to share common setup or constraints between actions.
+ def set_settings_item_set
+ @settings_item_set = ItemSet.find(params[:id])
+ end
+
+ # Never trust parameters from the scary internet, only allow the white list through.
+ def settings_item_set_params
+ params.require(:settings_item_set).permit(:name, :min_selectable_qty, :max_selectable_qty)
+ end
+end
diff --git a/app/helpers/settings/item_sets_helper.rb b/app/helpers/settings/item_sets_helper.rb
new file mode 100644
index 00000000..59c3b632
--- /dev/null
+++ b/app/helpers/settings/item_sets_helper.rb
@@ -0,0 +1,2 @@
+module Settings::ItemSetsHelper
+end
diff --git a/app/models/ability.rb b/app/models/ability.rb
index 1938fb45..7b9ba1de 100644
--- a/app/models/ability.rb
+++ b/app/models/ability.rb
@@ -56,6 +56,8 @@ class Ability
can :create, :payment
can :reprint, :payment
can :rounding_adj, :payment
+ can :foc, :payment
+
can :move_dining, :movetable
can :moving, :movetable
@@ -96,17 +98,13 @@ class Ability
can :create, :payment
can :reprint, :payment
can :rounding_adj, :payment
+ can :foc, :payment
can :move_dining, :movetable
can :moving, :movetable
can :move_dining, :moveroom
- can :first_bill, :payment
- can :show, :payment
- can :create, :payment
- can :reprint, :payment
-
can :manage, DiningQueue
elsif user.role == "account"
diff --git a/app/models/item_set.rb b/app/models/item_set.rb
new file mode 100644
index 00000000..55bc0c6b
--- /dev/null
+++ b/app/models/item_set.rb
@@ -0,0 +1,7 @@
+class ItemSet < ApplicationRecord
+ has_many :menu_item_sets
+ has_many :menu_items, through: :menu_item_sets
+
+ has_many :menu_instance_item_sets
+ has_many :menu_item_instances, through: :menu_instance_item_sets
+end
diff --git a/app/models/menu_category.rb b/app/models/menu_category.rb
index 71ad42c8..29484bcc 100644
--- a/app/models/menu_category.rb
+++ b/app/models/menu_category.rb
@@ -1,5 +1,5 @@
class MenuCategory < ApplicationRecord
- before_create :generate_menu_category_code
+ # before_create :generate_menu_category_code
belongs_to :menu
has_many :children, :class_name => "MenuCategory", foreign_key: "menu_category_id"
@@ -37,7 +37,7 @@ class MenuCategory < ApplicationRecord
private
- def generate_menu_category_code
- self.code = SeedGenerator.generate_code(self.class.name, "C")
- end
+ # def generate_menu_category_code
+ # self.code = SeedGenerator.generate_code(self.class.name, "C")
+ # end
end
diff --git a/app/models/menu_instance_item_set.rb b/app/models/menu_instance_item_set.rb
new file mode 100644
index 00000000..bc1d7aaf
--- /dev/null
+++ b/app/models/menu_instance_item_set.rb
@@ -0,0 +1,4 @@
+class MenuInstanceItemSet < ApplicationRecord
+ belongs_to :item_set
+ belongs_to :menu_item_instance
+end
diff --git a/app/models/menu_item.rb b/app/models/menu_item.rb
index 569d3126..2f575d9f 100644
--- a/app/models/menu_item.rb
+++ b/app/models/menu_item.rb
@@ -1,6 +1,5 @@
class MenuItem < ApplicationRecord
-
- before_create :generate_menu_item_code
+ # before_create :generate_menu_item_code
belongs_to :menu_category, :optional => true
has_many :menu_item_instances
@@ -8,6 +7,9 @@ class MenuItem < ApplicationRecord
has_many :children, :class_name => "MenuItem", foreign_key: "menu_item_id"
belongs_to :account
+ has_many :menu_item_sets
+ has_many :item_sets, through: :menu_item_sets
+
validates_presence_of :name, :type, :min_qty, :taxable, :min_selectable_item, :max_selectable_item
default_scope { order('item_code asc') }
@@ -73,10 +75,10 @@ class MenuItem < ApplicationRecord
end
- private
+ # private
- def generate_menu_item_code
- self.item_code = SeedGenerator.generate_code(self.class.name, "I")
- end
+ # def generate_menu_item_code
+ # self.item_code = SeedGenerator.generate_code(self.class.name, "I")
+ # end
end
diff --git a/app/models/menu_item_instance.rb b/app/models/menu_item_instance.rb
index f39c29a2..579b7a5a 100644
--- a/app/models/menu_item_instance.rb
+++ b/app/models/menu_item_instance.rb
@@ -1,6 +1,6 @@
class MenuItemInstance < ApplicationRecord
belongs_to :menu_item
- before_create :generate_menu_item_instance_code
+ # before_create :generate_menu_item_instance_code
def self.findParentCategory(item)
if item.menu_category_id
@@ -11,9 +11,9 @@ class MenuItemInstance < ApplicationRecord
end
end
- private
+ # private
- def generate_menu_item_instance_code
- self.item_instance_code = SeedGenerator.generate_code(self.class.name, "II")
- end
+ # def generate_menu_item_instance_code
+ # self.item_instance_code = SeedGenerator.generate_code(self.class.name, "II")
+ # end
end
diff --git a/app/models/menu_item_set.rb b/app/models/menu_item_set.rb
new file mode 100644
index 00000000..a39b8522
--- /dev/null
+++ b/app/models/menu_item_set.rb
@@ -0,0 +1,4 @@
+class MenuItemSet < ApplicationRecord
+ belongs_to :item_set
+ belongs_to :menu_item
+end
diff --git a/app/models/order.rb b/app/models/order.rb
index 398fb0f2..0ef19729 100644
--- a/app/models/order.rb
+++ b/app/models/order.rb
@@ -65,7 +65,6 @@ class Order < ApplicationRecord
end
def adding_line_items
-
if self.items
#re-order to
ordered_list = re_order_items(self.items)
diff --git a/app/models/sale.rb b/app/models/sale.rb
index a73667ba..2be20523 100644
--- a/app/models/sale.rb
+++ b/app/models/sale.rb
@@ -91,7 +91,7 @@ class Sale < ApplicationRecord
add_item(item)
end
- # link_order_sale(order.id)
+ link_order_sale(order.id)
end
self.save!
diff --git a/app/models/sale_payment.rb b/app/models/sale_payment.rb
index ff2f6e2f..3435190d 100644
--- a/app/models/sale_payment.rb
+++ b/app/models/sale_payment.rb
@@ -46,6 +46,8 @@ class SalePayment < ApplicationRecord
payment_status = giftcard_payment
when "paypar"
payment_status = paypar_payment
+ when "foc"
+ payment_status = foc_payment
else
puts "it was something else"
end
@@ -164,6 +166,17 @@ class SalePayment < ApplicationRecord
return payment_status
end
+ def foc_payment
+ payment_status = false
+ self.payment_method = "foc"
+ self.payment_amount = self.received_amount
+ self.outstanding_amount = self.sale.grand_total.to_f - self.received_amount.to_f
+ self.payment_status = "paid"
+ payment_method = self.save!
+ sale_update_payment_status(self.received_amount)
+ return payment_status
+ end
+
def creditnote_payment(customer_id)
payment_status = false
@@ -257,11 +270,15 @@ class SalePayment < ApplicationRecord
all_received_amount = 0.0
sObj = Sale.find(self.sale_id)
is_credit = 0
+ is_foc = 0
sObj.sale_payments.each do |spay|
all_received_amount += spay.payment_amount.to_f
if spay.payment_method == "creditnote"
is_credit = 1
end
+ if spay.payment_method == "foc"
+ is_foc = 1
+ end
end
if (self.sale.grand_total <= all_received_amount)
if is_credit == 0
@@ -269,9 +286,16 @@ class SalePayment < ApplicationRecord
else
self.sale.payment_status = "outstanding"
end
+
+ if is_foc == 0
+ self.sale.payment_status = "paid"
+ else
+ self.sale.payment_status = "foc"
+ end
+
self.sale.sale_status = "completed"
- if MembershipSetting.find_by_rebate(1)
+ if MembershipSetting.find_by_rebate(1) && is_foc == 0
response = rebat(sObj)
if !response.nil?
diff --git a/app/models/shift_sale.rb b/app/models/shift_sale.rb
index 168e63ff..68c64cff 100644
--- a/app/models/shift_sale.rb
+++ b/app/models/shift_sale.rb
@@ -105,7 +105,8 @@ class ShiftSale < ApplicationRecord
SUM(case when (sale_payments.payment_method='mpu') then (sale_payments.payment_amount) else 0 end) as mpu_amount,
SUM(case when (sale_payments.payment_method='visa') then (sale_payments.payment_amount) else 0 end) as visa_amount,
SUM(case when (sale_payments.payment_method='master') then (sale_payments.payment_amount) else 0 end) as master_amount,
- SUM(case when (sale_payments.payment_method='jcb') then (sale_payments.payment_amount) else 0 end) as jcb_amount,
+ SUM(case when (sale_payments.payment_method='jcb') then (sale_payments.payment_amount) else 0 end) as jcb_amount,
+ SUM(case when (sale_payments.payment_method='foc') then (sale_payments.payment_amount) else 0 end) as foc_amount,
SUM(case when (sale_payments.payment_method='paypar') then (sale_payments.payment_amount) else 0 end) as paypar_amount")
.joins("join sale_payments on sale_payments.sale_id = sales.sale_id")
.where("sales.shift_sale_id =? and sale_status = 'completed' and sale_payments.payment_amount != 0 ", shift.id)
diff --git a/app/pdf/close_cashier_pdf.rb b/app/pdf/close_cashier_pdf.rb
index 51f905d6..73db5e9d 100644
--- a/app/pdf/close_cashier_pdf.rb
+++ b/app/pdf/close_cashier_pdf.rb
@@ -223,6 +223,14 @@ class CloseCashierPdf < Prawn::Document
text "#{other.paypar_amount.round(2)}", :size => self.item_font_size, :align => :right
end
+ y_position = cursor
+ bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
+ text "FOC :", :size => self.item_font_size, :align => :right
+ end
+ bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
+ text "#{other.foc_amount.round(2)}", :size => self.item_font_size, :align => :right
+ end
+
end
else
diff --git a/app/pdf/receipt_bill_pdf.rb b/app/pdf/receipt_bill_pdf.rb
index 1dbea502..de18adc9 100644
--- a/app/pdf/receipt_bill_pdf.rb
+++ b/app/pdf/receipt_bill_pdf.rb
@@ -54,8 +54,9 @@ class ReceiptBillPdf < Prawn::Document
end
items_account(item_price_by_accounts,printer_settings.precision,delimiter)
+
+ sign(sale_data)
-
footer(printed_status)
end
@@ -409,6 +410,43 @@ class ReceiptBillPdf < Prawn::Document
end
end
+ def sign(sale_data)
+ SalePayment.where('sale_id = ?', sale_data.sale_id).each do |payment|
+ if payment.payment_method == "creditnote"
+
+ y_position = cursor
+ stroke_horizontal_rule
+
+ bounding_box([self.label_width,y_position], :width =>self.item_description_width) do
+ move_down 70
+ stroke_horizontal_rule
+ end
+
+ bounding_box([self.label_width,y_position], :width =>self.item_description_width) do
+ move_down 73
+ text "Approved By" , :size => self.item_font_size,:align => :center
+ end
+ end
+ end
+ if sale_data.payment_status == "foc"
+
+ y_position = cursor
+ stroke_horizontal_rule
+
+ bounding_box([self.label_width,y_position], :width =>self.item_description_width) do
+ move_down 70
+ stroke_horizontal_rule
+ end
+
+ bounding_box([self.label_width,y_position], :width =>self.item_description_width) do
+ move_down 73
+ text "Acknowledged By" , :size => self.item_font_size,:align => :center
+ end
+ end
+
+
+ end
+
def footer(printed_status)
move_down 5
stroke_horizontal_rule
@@ -416,7 +454,7 @@ class ReceiptBillPdf < Prawn::Document
y_position = cursor
bounding_box([0, y_position], :width =>self.label_width, :height => self.item_height) do
- text "#{printed_status}", :size => self.item_font_size,:align => :left
+ text "#{printed_status}",:style => :bold, :size => self.header_font_size,:align => :left
end
bounding_box([self.item_description_width,y_position], :width =>self.item_description_width, :height => self.item_height) do
text "Thank You! See you Again", :left_margin => -10, :size => self.item_font_size,:align => :left
diff --git a/app/views/oqs/home/index.html.erb b/app/views/oqs/home/index.html.erb
index 81e14467..824618e6 100644
--- a/app/views/oqs/home/index.html.erb
+++ b/app/views/oqs/home/index.html.erb
@@ -1,16 +1,19 @@
+
<%= notice %>
+ +| Name | +Min selectable qty | +Max selectable qty | ++ | ||
|---|---|---|---|---|---|
| <%= settings_item_set.name %> | +<%= settings_item_set.min_selectable_qty %> | +<%= settings_item_set.max_selectable_qty %> | +<%= link_to 'Show', settings_item_set %> | +<%= link_to 'Edit', edit_settings_item_set_path(settings_item_set) %> | +<%= link_to 'Destroy', settings_item_set, method: :delete, data: { confirm: 'Are you sure?' } %> | +
<%= notice %>
+ ++ Name: + <%= @settings_item_set.name %> +
+ ++ Min selectable qty: + <%= @settings_item_set.min_selectable_qty %> +
+ ++ Max selectable qty: + <%= @settings_item_set.max_selectable_qty %> +
+ +<%= link_to 'Edit', edit_settings_item_set_path(@settings_item_set) %> | +<%= link_to 'Back', settings_item_sets_path %> diff --git a/app/views/settings/item_sets/show.json.jbuilder b/app/views/settings/item_sets/show.json.jbuilder new file mode 100644 index 00000000..db3c9813 --- /dev/null +++ b/app/views/settings/item_sets/show.json.jbuilder @@ -0,0 +1 @@ +json.partial! "settings_item_sets/settings_item_set", settings_item_set: @settings_item_set diff --git a/app/views/settings/menu_categories/show.html.erb b/app/views/settings/menu_categories/show.html.erb index 25c3c9ba..7e1f44af 100644 --- a/app/views/settings/menu_categories/show.html.erb +++ b/app/views/settings/menu_categories/show.html.erb @@ -1,6 +1,6 @@