update shift only if sales completed

This commit is contained in:
Thein Lin Kyaw
2020-07-12 18:20:21 +06:30
parent 161a509aba
commit 82ee0697c7
5 changed files with 66 additions and 115 deletions

View File

@@ -8,11 +8,11 @@ class Foodcourt::PaymalController < BaseFoodcourtController
if(Sale.exists?(sale_id)) if(Sale.exists?(sale_id))
saleObj = Sale.find(sale_id) saleObj = Sale.find(sale_id)
sale_payment = SalePayment.new sale_payment = SalePayment.new
status, @sale,@membership_data = sale_payment.process_payment(saleObj, current_user, cash, "paymal",account_no) status, @sale, @membership_data = sale_payment.process_payment(saleObj, current_user, cash, "paymal",account_no)
if status == true && @membership_data["status"] == true if status == true && @membership_data["status"] == true
@out = true, "Success!" @out = true, "Success!"
else else
@out =false, @membership_data["message"] @out = false, @membership_data["message"]
end end
end end
end end

View File

@@ -17,27 +17,16 @@ class Foodcourt::PaymentsController < BaseFoodcourtController
if(Sale.exists?(sale_id)) if(Sale.exists?(sale_id))
saleObj = Sale.find(sale_id) saleObj = Sale.find(sale_id)
sale_items = SaleItem.get_all_sale_items(sale_id) sale_items = SaleItem.get_all_sale_items(sale_id)
#shop_detail = Shop.first
# rounding adjustment
if !path.include? ("credit_payment")
if current_shop.is_rounding_adj
new_total = Sale.get_rounding_adjustment(saleObj.grand_total)
rounding_adj = new_total - saleObj.grand_total
saleObj.update_attributes(grand_total: new_total,old_grand_total: saleObj.grand_total,rounding_adjustment:rounding_adj) if rounding_adj > 0
end
end
#end rounding adjustment
sp = SalePayment.where('sale_id=? and payment_method=? and payment_status=?', sale_id, 'kbzpay', 'paid').last sp = SalePayment.where('sale_id=? and payment_method=? and payment_status=?', sale_id, 'kbzpay', 'paid').last
if is_kbz == 'false' if is_kbz == 'false'
Rails.logger.info '################ CASH PAYMENT #################' Rails.logger.info '################ CASH PAYMENT #################'
sale_payment = SalePayment.new sale_payment = SalePayment.new
sale_payment.process_payment(saleObj, current_user, cash, "cash") sale_payment.process_payment(saleObj, current_user, cash, "cash")
else else
sp.kbz_edit_sale_payment(sp.received_amount.to_f, current_user) sp.kbz_edit_sale_payment(sp.received_amount.to_f, current_user)
end end
# end
if !path.include? ("credit_payment") if !path.include? ("credit_payment")
rebate_amount = nil rebate_amount = nil
# For Cashier by Zone # For Cashier by Zone
@@ -70,72 +59,72 @@ class Foodcourt::PaymentsController < BaseFoodcourtController
unique_code = PrintSetting.where("unique_code REGEXP ?", "receipt.*bill.*pdf").first.unique_code unique_code = PrintSetting.where("unique_code REGEXP ?", "receipt.*bill.*pdf").first.unique_code
end end
customer = saleObj.customer customer = saleObj.customer
# get member information # get member information
rebate = MembershipSetting.find_by_rebate(1) rebate = MembershipSetting.find_by_rebate(1)
credit_data = SalePayment.find_by_sale_id_and_payment_method(sale_id,'creditnote') credit_data = SalePayment.find_by_sale_id_and_payment_method(sale_id,'creditnote')
if customer.membership_id != nil && rebate && credit_data.nil? if customer.membership_id != nil && rebate && credit_data.nil?
member_info = Customer.get_member_account(customer) member_info = Customer.get_member_account(customer)
if member_info["status"] == true if member_info["status"] == true
rebate_amount = Customer.get_membership_transactions(customer,saleObj.receipt_no) rebate_amount = Customer.get_membership_transactions(customer,saleObj.receipt_no)
current_balance = SaleAudit.paymal_search(sale_id) current_balance = SaleAudit.paymal_search(sale_id)
end
end end
end
#orders print out #orders print out
# if type == "quick_service" # if type == "quick_service"
booking = Booking.find_by_sale_id(sale_id) booking = Booking.find_by_sale_id(sale_id)
if booking.dining_facility_id.to_i>0 if booking.dining_facility_id.to_i>0
table_id = booking.dining_facility_id table_id = booking.dining_facility_id
else else
table_id = 0 table_id = 0
end end
latest_order = booking.booking_orders.order("order_id DESC").limit(1).first() latest_order = booking.booking_orders.order("order_id DESC").limit(1).first()
if !latest_order.nil? if !latest_order.nil?
latest_order_no = latest_order.order_id latest_order_no = latest_order.order_id
end end
booking.booking_orders.each do |order| booking.booking_orders.each do |order|
# Order.pay_process_order_queue(order.order_id, table_id) # Order.pay_process_order_queue(order.order_id, table_id)
oqs = OrderQueueStation.new oqs = OrderQueueStation.new
oqs.pay_process_order_queue(order.order_id, table_id) oqs.pay_process_order_queue(order.order_id, table_id)
assign_order = AssignedOrderItem.assigned_order_item_by_job(order.order_id) assign_order = AssignedOrderItem.assigned_order_item_by_job(order.order_id)
from = getCloudDomain #get sub domain in cloud mode from = getCloudDomain #get sub domain in cloud mode
ActionCable.server.broadcast "order_queue_station_channel",order: assign_order,from:from ActionCable.server.broadcast "order_queue_station_channel",order: assign_order,from:from
end end
# end # end
#for card sale data #for card sale data
card_data = Array.new card_data = Array.new
# card_sale_trans_ref_no = Sale.getCardSaleTrans(sale_id) # card_sale_trans_ref_no = Sale.getCardSaleTrans(sale_id)
# if !card_sale_trans_ref_no.nil? # if !card_sale_trans_ref_no.nil?
# card_sale_trans_ref_no.each do |cash_sale_trans| # card_sale_trans_ref_no.each do |cash_sale_trans|
# card_res_date = cash_sale_trans.res_date.strftime("%Y-%m-%d").to_s # card_res_date = cash_sale_trans.res_date.strftime("%Y-%m-%d").to_s
# card_res_time = cash_sale_trans.res_time.strftime("%H:%M").to_s # card_res_time = cash_sale_trans.res_time.strftime("%H:%M").to_s
# card_no = cash_sale_trans.pan.last(4) # card_no = cash_sale_trans.pan.last(4)
# card_no = card_no.rjust(19,"**** **** **** ") # card_no = card_no.rjust(19,"**** **** **** ")
# card_data.push({'res_date' => card_res_date, 'res_time' => card_res_time, 'batch_no' => cash_sale_trans.batch_no, 'trace' => cash_sale_trans.trace, 'pan' => card_no, 'app' => cash_sale_trans.app, 'tid' => cash_sale_trans.terminal_id, 'app_code' => cash_sale_trans.app_code, 'ref_no' => cash_sale_trans.ref_no, 'mid' => cash_sale_trans.merchant_id}) # card_data.push({'res_date' => card_res_date, 'res_time' => card_res_time, 'batch_no' => cash_sale_trans.batch_no, 'trace' => cash_sale_trans.trace, 'pan' => card_no, 'app' => cash_sale_trans.app, 'tid' => cash_sale_trans.terminal_id, 'app_code' => cash_sale_trans.app_code, 'ref_no' => cash_sale_trans.ref_no, 'mid' => cash_sale_trans.merchant_id})
# end # end
# end # end
#card_balance amount for Paymal payment #card_balance amount for Paymal payment
card_balance_amount,transaction_ref = SaleAudit.getCardBalanceAmount(sale_id) card_balance_amount,transaction_ref = SaleAudit.getCardBalanceAmount(sale_id)
# get printer info # get printer info
print_settings=PrintSetting.find_by_unique_code(unique_code) print_settings=PrintSetting.find_by_unique_code(unique_code)
# Calculate Food and Beverage Total # Calculate Food and Beverage Total
item_price_by_accounts = SaleItem.calculate_price_by_accounts(saleObj.sale_items) 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) discount_price_by_accounts = SaleItem.get_discount_price_by_accounts(saleObj.sale_items)
other_amount = SaleItem.calculate_other_charges(sale_items) other_amount = SaleItem.calculate_other_charges(sale_items)
printer = Printer::ReceiptPrinter.new(print_settings) printer = Printer::ReceiptPrinter.new(print_settings)
filename, sale_receipt_no, printer_name = printer.print_receipt_bill(print_settings, false, nil, cashier_terminal,sale_items,saleObj,account_no, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,current_shop, 'paid',current_balance,card_data,other_amount,latest_order_no,card_balance_amount,nil,transaction_ref) filename, sale_receipt_no, printer_name = printer.print_receipt_bill(print_settings, false, nil, cashier_terminal,sale_items,saleObj,account_no, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,current_shop, 'paid',current_balance,card_data,other_amount,latest_order_no,card_balance_amount,nil,transaction_ref)
#end #end
end end
@@ -155,7 +144,7 @@ class Foodcourt::PaymentsController < BaseFoodcourtController
@cash_exist = PaymentMethodSetting.cash_exist @cash_exist = PaymentMethodSetting.cash_exist
@credit_exist = PaymentMethodSetting.credit_exist @credit_exist = PaymentMethodSetting.credit_exist
display_type = Lookup.find_by_lookup_type("display_type") display_type = Lookup.find_by_lookup_type("display_type")
if !display_type.nil? && display_type.value.to_i ==2 if !display_type.nil? && display_type.value.to_i == 2
@display_type = display_type.value @display_type = display_type.value
else else
@display_type = nil @display_type = nil

View File

@@ -6,6 +6,7 @@ class Foodcourt::VoidController < BaseFoodcourtController
remark = params[:remark] remark = params[:remark]
order_source = params[:type] #tax profile source order_source = params[:type] #tax profile source
access_code = params[:access_code] access_code = params[:access_code]
if Sale.exists?(sale_id) if Sale.exists?(sale_id)
sale = Sale.find_by_sale_id(sale_id) sale = Sale.find_by_sale_id(sale_id)
# update count for shift sale # update count for shift sale
@@ -55,21 +56,11 @@ class Foodcourt::VoidController < BaseFoodcourtController
Rails.logger.debug membership_response.to_json Rails.logger.debug membership_response.to_json
end end
# For Print # For Print
member_info = nil member_info = nil
rebate_amount = nil rebate_amount = nil
current_balance = nil current_balance = nil
# For Cashier by Zone
bookings = Booking.where("sale_id='#{sale_id}'")
if bookings.count > 1
# for Multiple Booking
if bookings[0].dining_facility_id.to_i>0
table = DiningFacility.find(bookings[0].dining_facility_id)
end
end
if bookings[0].dining_facility_id.to_i > 0 if bookings[0].dining_facility_id.to_i > 0
cashier_zone = CashierTerminalByZone.find_by_zone_id(table.zone_id) cashier_zone = CashierTerminalByZone.find_by_zone_id(table.zone_id)
cashier_terminal = CashierTerminal.find(cashier_zone.cashier_terminal_id) cashier_terminal = CashierTerminal.find(cashier_zone.cashier_terminal_id)

View File

@@ -34,15 +34,6 @@ class Origami::VoidController < BaseOrigamiController
sale.sale_status = 'void' sale.sale_status = 'void'
sale.save sale.save
# No Need
# bookings = sale.bookings
# bookings.each do |booking|
# orders = booking.orders
# orders.each do |order|
# # order.status = 'void'
# end
# end
if table = sale.booking.dining_facility if table = sale.booking.dining_facility
unless table.current_bookings.exists? unless table.current_bookings.exists?
table.update_attributes(status: 'available') table.update_attributes(status: 'available')
@@ -59,20 +50,10 @@ class Origami::VoidController < BaseOrigamiController
sale_audit = SaleAudit.record_audit_for_edit(sale_id,current_user.name, action_by,remark,"SALEVOID" ) sale_audit = SaleAudit.record_audit_for_edit(sale_id,current_user.name, action_by,remark,"SALEVOID" )
# For Print # For Print
member_info = nil member_info = nil
rebate_amount = nil rebate_amount = nil
current_balance = nil current_balance = nil
# For Cashier by Zone
bookings = Booking.where("sale_id='#{sale_id}'")
if bookings.count > 1
# for Multiple Booking
if bookings[0].dining_facility_id.to_i>0
table = DiningFacility.find(bookings[0].dining_facility_id)
end
end
if bookings[0].dining_facility_id.to_i > 0 if bookings[0].dining_facility_id.to_i > 0
cashier_zone = CashierTerminalByZone.find_by_zone_id(table.zone_id) cashier_zone = CashierTerminalByZone.find_by_zone_id(table.zone_id)
cashier_terminal = CashierTerminal.find(cashier_zone.cashier_terminal_id) cashier_terminal = CashierTerminal.find(cashier_zone.cashier_terminal_id)
@@ -81,17 +62,6 @@ class Origami::VoidController < BaseOrigamiController
cashier_terminal = CashierTerminal.find(shift.cashier_terminal_id) cashier_terminal = CashierTerminal.find(shift.cashier_terminal_id)
end end
# if ENV["SERVER_MODE"] != "cloud" #no print in cloud server
# get printer info
# print_settings = PrintSetting.find_by_unique_code('ReceiptBillPdf') # SaleItemsPdf
#
# if !print_settings.nil?
# unique_code = 'ReceiptBillPdf'
# elsif
# unique_code = 'ReceiptBillStarPdf'
# end
customer= Customer.find(sale.customer_id) customer= Customer.find(sale.customer_id)
#shop detail #shop detail

View File

@@ -117,7 +117,7 @@ class SalePayment < ApplicationRecord
when "foc" when "foc"
payment_status = foc_payment payment_status = foc_payment
when "paymal" when "paymal"
payment_status,membership_data = paymal_payment payment_status, membership_data = paymal_payment
when "JunctionPay" when "JunctionPay"
payment_status = junction_pay_payment payment_status = junction_pay_payment
when "dinga" when "dinga"
@@ -544,7 +544,7 @@ class SalePayment < ApplicationRecord
remark = "#{membership_data} PayMal Payment- for Customer #{self.sale.customer_id} Sale Id [#{self.sale.sale_id}]| pay amount -> #{self.received_amount} " remark = "#{membership_data} PayMal Payment- for Customer #{self.sale.customer_id} Sale Id [#{self.sale.sale_id}]| pay amount -> #{self.received_amount} "
sale_audit = SaleAudit.record_paymal(self.sale.sale_id, remark, 1) sale_audit = SaleAudit.record_paymal(self.sale.sale_id, remark, 1)
if membership_data["status"]==true if membership_data["status"] == true
self.payment_method = "paymal" self.payment_method = "paymal"
self.payment_amount = self.received_amount self.payment_amount = self.received_amount
# self.payment_reference = self.voucher_no # self.payment_reference = self.voucher_no
@@ -553,7 +553,6 @@ class SalePayment < ApplicationRecord
payment_status = self.save! payment_status = self.save!
# SalePayment.where(:sale_payment_id => self.sale_payment_id).update_all(:payment_status => 'paid') # SalePayment.where(:sale_payment_id => self.sale_payment_id).update_all(:payment_status => 'paid')
sale_update_payment_status(self.received_amount.to_f) sale_update_payment_status(self.received_amount.to_f)
else else
sale_update_payment_status(0) sale_update_payment_status(0)
end end
@@ -603,7 +602,6 @@ class SalePayment < ApplicationRecord
payment_status = self.save! payment_status = self.save!
SalePayment.where(:sale_payment_id => self.sale_payment_id).update_all(:payment_status => 'paid') SalePayment.where(:sale_payment_id => self.sale_payment_id).update_all(:payment_status => 'paid')
sale_update_payment_status(self.received_amount.to_f) sale_update_payment_status(self.received_amount.to_f)
else else
sale_update_payment_status(0) sale_update_payment_status(0)
end end
@@ -677,8 +675,11 @@ class SalePayment < ApplicationRecord
end end
end end
sale.save! sale.save!
table_update_status(sale)
update_shift if sale.sale_status == 'completed'
table_update_status(sale)
update_shift
end
end end
# update for cashier shift # update for cashier shift