From 82ee0697c72a696f2ca2b6ef7eaec1d237a35624 Mon Sep 17 00:00:00 2001 From: Thein Lin Kyaw Date: Sun, 12 Jul 2020 18:20:21 +0630 Subject: [PATCH] update shift only if sales completed --- .../foodcourt/paymal_controller.rb | 4 +- .../foodcourt/payments_controller.rb | 123 ++++++++---------- app/controllers/foodcourt/void_controller.rb | 11 +- app/controllers/origami/void_controller.rb | 30 ----- app/models/sale_payment.rb | 13 +- 5 files changed, 66 insertions(+), 115 deletions(-) diff --git a/app/controllers/foodcourt/paymal_controller.rb b/app/controllers/foodcourt/paymal_controller.rb index 1632ad6e..08be1cb4 100644 --- a/app/controllers/foodcourt/paymal_controller.rb +++ b/app/controllers/foodcourt/paymal_controller.rb @@ -8,11 +8,11 @@ class Foodcourt::PaymalController < BaseFoodcourtController if(Sale.exists?(sale_id)) saleObj = Sale.find(sale_id) 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 @out = true, "Success!" else - @out =false, @membership_data["message"] + @out = false, @membership_data["message"] end end end diff --git a/app/controllers/foodcourt/payments_controller.rb b/app/controllers/foodcourt/payments_controller.rb index cc88d624..048bab68 100755 --- a/app/controllers/foodcourt/payments_controller.rb +++ b/app/controllers/foodcourt/payments_controller.rb @@ -17,27 +17,16 @@ class Foodcourt::PaymentsController < BaseFoodcourtController if(Sale.exists?(sale_id)) saleObj = Sale.find(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 if is_kbz == 'false' Rails.logger.info '################ CASH PAYMENT #################' sale_payment = SalePayment.new - sale_payment.process_payment(saleObj, current_user, cash, "cash") + sale_payment.process_payment(saleObj, current_user, cash, "cash") else sp.kbz_edit_sale_payment(sp.received_amount.to_f, current_user) end - # end - if !path.include? ("credit_payment") rebate_amount = nil # 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 end - customer = saleObj.customer + customer = saleObj.customer - # get member information - rebate = MembershipSetting.find_by_rebate(1) - credit_data = SalePayment.find_by_sale_id_and_payment_method(sale_id,'creditnote') + # get member information + rebate = MembershipSetting.find_by_rebate(1) + credit_data = SalePayment.find_by_sale_id_and_payment_method(sale_id,'creditnote') - if customer.membership_id != nil && rebate && credit_data.nil? - member_info = Customer.get_member_account(customer) + if customer.membership_id != nil && rebate && credit_data.nil? + member_info = Customer.get_member_account(customer) - if member_info["status"] == true - rebate_amount = Customer.get_membership_transactions(customer,saleObj.receipt_no) - current_balance = SaleAudit.paymal_search(sale_id) - end + if member_info["status"] == true + rebate_amount = Customer.get_membership_transactions(customer,saleObj.receipt_no) + current_balance = SaleAudit.paymal_search(sale_id) end + end - #orders print out - # if type == "quick_service" - booking = Booking.find_by_sale_id(sale_id) - if booking.dining_facility_id.to_i>0 - table_id = booking.dining_facility_id - else - table_id = 0 - end + #orders print out + # if type == "quick_service" + booking = Booking.find_by_sale_id(sale_id) + if booking.dining_facility_id.to_i>0 + table_id = booking.dining_facility_id + else + table_id = 0 + end - latest_order = booking.booking_orders.order("order_id DESC").limit(1).first() - if !latest_order.nil? - latest_order_no = latest_order.order_id - end + latest_order = booking.booking_orders.order("order_id DESC").limit(1).first() + if !latest_order.nil? + latest_order_no = latest_order.order_id + end - booking.booking_orders.each do |order| - # Order.pay_process_order_queue(order.order_id, table_id) - oqs = OrderQueueStation.new - oqs.pay_process_order_queue(order.order_id, table_id) + booking.booking_orders.each do |order| + # Order.pay_process_order_queue(order.order_id, table_id) + oqs = OrderQueueStation.new + oqs.pay_process_order_queue(order.order_id, table_id) - assign_order = AssignedOrderItem.assigned_order_item_by_job(order.order_id) - from = getCloudDomain #get sub domain in cloud mode - ActionCable.server.broadcast "order_queue_station_channel",order: assign_order,from:from - end + assign_order = AssignedOrderItem.assigned_order_item_by_job(order.order_id) + from = getCloudDomain #get sub domain in cloud mode + ActionCable.server.broadcast "order_queue_station_channel",order: assign_order,from:from + end - # end + # end - #for card sale data - card_data = Array.new - # card_sale_trans_ref_no = Sale.getCardSaleTrans(sale_id) - # if !card_sale_trans_ref_no.nil? - # 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_time = cash_sale_trans.res_time.strftime("%H:%M").to_s - # card_no = cash_sale_trans.pan.last(4) - # 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}) - # end - # end + #for card sale data + card_data = Array.new + # card_sale_trans_ref_no = Sale.getCardSaleTrans(sale_id) + # if !card_sale_trans_ref_no.nil? + # 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_time = cash_sale_trans.res_time.strftime("%H:%M").to_s + # card_no = cash_sale_trans.pan.last(4) + # 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}) + # end + # end - #card_balance amount for Paymal payment - card_balance_amount,transaction_ref = SaleAudit.getCardBalanceAmount(sale_id) + #card_balance amount for Paymal payment + card_balance_amount,transaction_ref = SaleAudit.getCardBalanceAmount(sale_id) - # 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) - other_amount = SaleItem.calculate_other_charges(sale_items) + # 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) + other_amount = SaleItem.calculate_other_charges(sale_items) - 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) + 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) #end end @@ -155,7 +144,7 @@ class Foodcourt::PaymentsController < BaseFoodcourtController @cash_exist = PaymentMethodSetting.cash_exist @credit_exist = PaymentMethodSetting.credit_exist 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 else @display_type = nil diff --git a/app/controllers/foodcourt/void_controller.rb b/app/controllers/foodcourt/void_controller.rb index 29d65868..e1403816 100755 --- a/app/controllers/foodcourt/void_controller.rb +++ b/app/controllers/foodcourt/void_controller.rb @@ -6,6 +6,7 @@ class Foodcourt::VoidController < BaseFoodcourtController remark = params[:remark] order_source = params[:type] #tax profile source access_code = params[:access_code] + if Sale.exists?(sale_id) sale = Sale.find_by_sale_id(sale_id) # update count for shift sale @@ -55,21 +56,11 @@ class Foodcourt::VoidController < BaseFoodcourtController Rails.logger.debug membership_response.to_json end - # For Print member_info = nil rebate_amount = 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 cashier_zone = CashierTerminalByZone.find_by_zone_id(table.zone_id) cashier_terminal = CashierTerminal.find(cashier_zone.cashier_terminal_id) diff --git a/app/controllers/origami/void_controller.rb b/app/controllers/origami/void_controller.rb index cea64868..acbfad57 100755 --- a/app/controllers/origami/void_controller.rb +++ b/app/controllers/origami/void_controller.rb @@ -34,15 +34,6 @@ class Origami::VoidController < BaseOrigamiController sale.sale_status = 'void' 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 unless table.current_bookings.exists? 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" ) # For Print - member_info = nil rebate_amount = 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 cashier_zone = CashierTerminalByZone.find_by_zone_id(table.zone_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) 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) #shop detail diff --git a/app/models/sale_payment.rb b/app/models/sale_payment.rb index ec615bb1..a59b1508 100755 --- a/app/models/sale_payment.rb +++ b/app/models/sale_payment.rb @@ -117,7 +117,7 @@ class SalePayment < ApplicationRecord when "foc" payment_status = foc_payment when "paymal" - payment_status,membership_data = paymal_payment + payment_status, membership_data = paymal_payment when "JunctionPay" payment_status = junction_pay_payment 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} " 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_amount = self.received_amount # self.payment_reference = self.voucher_no @@ -553,7 +553,6 @@ class SalePayment < ApplicationRecord payment_status = self.save! # SalePayment.where(:sale_payment_id => self.sale_payment_id).update_all(:payment_status => 'paid') sale_update_payment_status(self.received_amount.to_f) - else sale_update_payment_status(0) end @@ -603,7 +602,6 @@ class SalePayment < ApplicationRecord payment_status = self.save! SalePayment.where(:sale_payment_id => self.sale_payment_id).update_all(:payment_status => 'paid') sale_update_payment_status(self.received_amount.to_f) - else sale_update_payment_status(0) end @@ -677,8 +675,11 @@ class SalePayment < ApplicationRecord end end sale.save! - table_update_status(sale) - update_shift + + if sale.sale_status == 'completed' + table_update_status(sale) + update_shift + end end # update for cashier shift