From efd2e84bcc18c705f71c80809fa7d7210b4be107 Mon Sep 17 00:00:00 2001 From: Myat Zin Wai Maw Date: Fri, 21 Jun 2019 14:21:03 +0630 Subject: [PATCH] update mobilepayment --- .../api/payment/mobilepayment_controller.rb | 137 ++---------------- app/models/inventory_definition.rb | 4 +- config/routes.rb | 20 +-- 3 files changed, 24 insertions(+), 137 deletions(-) diff --git a/app/controllers/api/payment/mobilepayment_controller.rb b/app/controllers/api/payment/mobilepayment_controller.rb index cd9f9e00..515b97d7 100644 --- a/app/controllers/api/payment/mobilepayment_controller.rb +++ b/app/controllers/api/payment/mobilepayment_controller.rb @@ -10,11 +10,15 @@ class Api::Payment::MobilepaymentController < Api::ApiController path = request.fullpath latest_order_no = nil cashier_id = params[:cashier_id] + current_user = Employee.find(cashier_id) + 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 shop_detail.is_rounding_adj @@ -23,141 +27,24 @@ class Api::Payment::MobilepaymentController < Api::ApiController #not calculate rounding if modulus is 0 and division is even #calculate rounding if modulus is zero or not zero and division are not even if (a != 0.0 && b%2 != 0.0) || (a==0.0 && b%2 !=0) + 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) + end end end # end rounding adjustment sale_payment = SalePayment.new - sale_payment =sale_payment.process_payment(saleObj, current_user, cash, "cash") - if sale_payment[0] - @cash ={"change_amount"=>sale_payment[3],"balance_amount"=>sale_payment[4] ,"receipt_url"=>''} - end - @out = true,@cash - # if !path.include? ("credit_payment") - # rebate_amount = nil - # # For Cashier by Zone - # # bookings = Booking.where("sale_id='#{sale_id}'") - # bookings = Booking.find_by_sale_id(sale_id) - - # shift = ShiftSale.current_open_shift(current_user.id) - # if !shift.nil? - # cashier_terminal = CashierTerminal.find(shift.cashier_terminal_id) - # else - # if bookings.dining_facility_id.to_i > 0 - # table = DiningFacility.find(bookings.dining_facility_id) - # cashier_zone = CashierTerminalByZone.find_by_zone_id(table.zone_id) - # cashier_terminal = CashierTerminal.find(cashier_zone.cashier_terminal_id) - - # type = 'payment' - # from = getCloudDomain #get sub domain in cloud mode - # ActionCable.server.broadcast "order_channel",table: table,type:type,from:from - # else - # shift = ShiftSale.find(saleObj.shift_sale_id) - # cashier_terminal = CashierTerminal.find(shift.cashier_terminal_id) - # end - # end - - # # For Print - # # if ENV["SERVER_MODE"] != "cloud" #no print in cloud server - # receipt_bill_a5_pdf = Lookup.collection_of("print_settings") #print_settings with name:ReceiptBillA5Pdf - # unique_code = "ReceiptBillPdf" - # print_settings = PrintSetting.all - # if !print_settings.nil? - # print_settings.each do |setting| - # if setting.unique_code == 'ReceiptBillPdf' - # unique_code = "ReceiptBillPdf" - # elsif setting.unique_code == 'ReceiptBillStarPdf' - # unique_code = "ReceiptBillStarPdf" - # end - # end - # end - - # if !receipt_bill_a5_pdf.empty? - # receipt_bill_a5_pdf.each do |receipt_bilA5| - # if receipt_bilA5[0] == 'ReceiptBillA5Pdf' - # if receipt_bilA5[1] == '1' - # unique_code = "ReceiptBillA5Pdf" - # end - # end - # end - # end - - # customer= Customer.find(saleObj.customer_id) - - # # 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 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 params[: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 - - # 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 - - # 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 = 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) - - # printer = Printer::ReceiptPrinter.new(print_settings) - # filename, sale_receipt_no, printer_name = printer.print_receipt_bill(print_settings,cashier_terminal,sale_items,saleObj,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_detail, "Paid",current_balance,card_data,other_amount,latest_order_no,card_balance_amount,nil) - - # render json: JSON.generate({:status => saleObj.rebate_status, :message => "Can't Rebate coz of Sever Error ", :filename => filename, :receipt_no => sale_receipt_no, :printer_name => printer_name}) - - # #end - # end + sale_payment =sale_payment.process_payment(saleObj, current_user, cash, "cash") + if sale_payment[0] + @cash ={"change_amount"=>sale_payment[3],"balance_amount"=>sale_payment[4] ,"receipt_url"=>''} + end + @out = true,@cash + else @out =false,"Something wrong!" end diff --git a/app/models/inventory_definition.rb b/app/models/inventory_definition.rb index 1a9dec8f..7b1fd20e 100755 --- a/app/models/inventory_definition.rb +++ b/app/models/inventory_definition.rb @@ -35,7 +35,7 @@ class InventoryDefinition < ApplicationRecord end def self.check_balance(item,inventory_definition) # item => saleItemOBj - stock = StockJournal.where('item_code=?', item.item_instance_code).order('created_at desc').take + stock = StockJournal.where('item_code=?', item.item_instance_code).last unless stock.nil? modify_balance(item, stock, inventory_definition) else @@ -77,7 +77,7 @@ class InventoryDefinition < ApplicationRecord def self.get_by_category(filter) least_stock = "SELECT (CASE WHEN stock_journals.remark != 'out of stock' - THEN (SELECT balance FROM stock_journals + THEN (SELECT min(balance) FROM stock_journals WHERE item_code = inventory_definitions.item_code AND remark != 'out of stock' ORDER BY created_at DESC LIMIT 1) ELSE 0 END) FROM stock_journals diff --git a/config/routes.rb b/config/routes.rb index c2058111..797d7c98 100755 --- a/config/routes.rb +++ b/config/routes.rb @@ -2,17 +2,8 @@ require 'sidekiq/web' Rails.application.routes.draw do - namespace :induties do - # resources :assign_in_duties - get ':booking_id/assign' => 'assign_in_duties#index', as: :assign_in_duties - get "/assign_in_duties/get_all_occupied_dining/:id" =>'assign_in_duties#get_all_occupied_dining', as: :get_all_occupied_dining - post ':booking_id/assign_create' => 'assign_in_duties#induties_create', as: :induties_create - post ':booking_id/assign_checkout/:induty_id' => 'assign_in_duties#induties_checkout', as: :induties_checkout - delete ':booking_id/assign_remove/:induty_id' => 'assign_in_duties#induties_remove', as: :induties_remove - get ':booking_id/get_current_booking' => 'assign_in_duties#get_current_booking' - - end scope "(:locale)", locale: /en|mm/ do + root 'home#index' mount Sidekiq::Web => '/kiq' @@ -38,7 +29,16 @@ scope "(:locale)", locale: /en|mm/ do delete 'logout' => 'home#destroy' get 'dashboard' => 'home#dashboard' + namespace :induties do + # resources :assign_in_duties + get ':booking_id/assign' => 'assign_in_duties#index', as: :assign_in_duties + get "/assign_in_duties/get_all_occupied_dining/:id" =>'assign_in_duties#get_all_occupied_dining', as: :get_all_occupied_dining + post ':booking_id/assign_create' => 'assign_in_duties#induties_create', as: :induties_create + post ':booking_id/assign_checkout/:induty_id' => 'assign_in_duties#induties_checkout', as: :induties_checkout + delete ':booking_id/assign_remove/:induty_id' => 'assign_in_duties#induties_remove', as: :induties_remove + get ':booking_id/get_current_booking' => 'assign_in_duties#get_current_booking' + end #--------- API Routes ------------# namespace :api, :defaults => {:format => 'json'} do #Session Login and Logout