card payment

This commit is contained in:
Myat Zin Wai Maw
2019-11-27 15:05:42 +06:30
parent 98b74af6cf
commit fe5dc6bb5a
15 changed files with 93 additions and 78 deletions

5
.gitignore vendored
View File

@@ -67,3 +67,8 @@ config/shops.json
#Seed Generator Backup File
/app/models/seed_generator_bk.rb
# crt and key
*.crt
*.key
*.pid

View File

@@ -9,7 +9,7 @@ class Api::Restaurant::MenuController < Api::ApiController
# checksum = File.readlines("public/checksums/menu_json.txt").pop.chomp
shop_code = params[:shop_code]
all_menu = Menu.where('shop_id=?',shop_code).active.all
all_menu = Menu.where('shop_code=?',shop_code).active.all
@request_url = ''
if ENV["SERVER_MODE"] == "cloud"
@request_url = request.base_url
@@ -17,20 +17,20 @@ class Api::Restaurant::MenuController < Api::ApiController
# to hash
menu_array = []
all_menu.each do |m|
menu_array.push(m.to_json(:include => {:menu_categories =>
{ :include => { :menu_items =>
{ :include => [:menu_item_sets, :menu_item_instances =>
menu_array.push(m.to_json(:include => {:menu_categories =>
{ :include => { :menu_items =>
{ :include => [:menu_item_sets, :menu_item_instances =>
{ :include => :menu_instance_item_sets}]} } }}))
end
end
#export Checksum file generate by md5
menu_checksum = Digest::MD5.hexdigest(menu_array.to_json)
if menu_checksum != param_checksum
response.headers['CHECKSUM'] = menu_checksum
@menus = all_menu
@menus = all_menu
end
# @current_menu = Menu.current_menu
# @current_menu = Menu.current_menu
end
#Description

View File

@@ -1,6 +1,6 @@
class Api::VerificationsController < ActionController::API
def new
def new
phone_number = params[:phone_number]
#TODO - user generate
@@ -10,9 +10,9 @@ class Api::VerificationsController < ActionController::API
VerifyNumber.send_message(phone_number, @cus.pin_code)
@result = true
end
end
end
def update
def update
phone_number = params[:phone_number]
pin_code = params[:pin_code]
@cus = Customer.find_by_contact_no(phone_number)
@@ -23,4 +23,4 @@ class Api::VerificationsController < ActionController::API
end
end
end
end

View File

@@ -18,7 +18,7 @@ module LoginVerification
def current_shop
begin
shop_code ='262'
shop_code ='263'
@shop =Shop.find_by_shop_code(shop_code)
return @shop
rescue
@@ -42,7 +42,7 @@ module LoginVerification
#Shop Name in Navbor
def shop_detail
shop_code ='262'
shop_code ='263'
@shop = Shop.find_by_shop_code(shop_code)
return @shop
end

View File

@@ -1,5 +1,5 @@
class Origami::BankIntegrationController < ApplicationController #BaseOrigamiController
def settle_trans
if(params[:type] == 'request')
card_settle_trans = CardSettleTran.new()
@@ -35,7 +35,7 @@ class Origami::BankIntegrationController < ApplicationController #BaseOrigamiCon
card_settle_trans.save()
response = {status: 'success'}
end
render json: response
render json: response
end
def sale_trans
@@ -93,7 +93,7 @@ class Origami::BankIntegrationController < ApplicationController #BaseOrigamiCon
response = {status: 'success'}
end
render json: response
render json: response
end
end

View File

@@ -17,14 +17,14 @@ class Origami::FoodCourtController < ApplicationController
# @menus = Menu.all
# @menu = MenuCategory.active.where("menu_id =#{@menus[0].id}").order('order_by asc')
# end
@zone = Zone.all
@zone = Zone.all.where("shop_code='#{@shop.shop_code}' and is_active= true")
@customer = Customer.all
@tables = Table.all.active.order('status desc')
@rooms = Room.all.active.order('status desc')
@tables = Table.all.active.where("shop_code='#{@shop.shop_code}'").order('status desc')
@rooms = Room.all.active.where("shop_code='#{@shop.shop_code}'").order('status desc')
@cashier_type = "food_court"
#checked quick_service only
@quick_service_only = true
lookup_dine_in = Lookup.collection_of('dinein_cashier')
lookup_dine_in = Lookup.where("shop_code='#{@shop.shop_code}'").collection_of('dinein_cashier')
if !lookup_dine_in.empty?
lookup_dine_in.each do |dine_in|
if dine_in[0].downcase == "dineincashier"
@@ -156,7 +156,7 @@ class Origami::FoodCourtController < ApplicationController
end
def get_all_product()
@product = Product.all
@product = Product..where("shop_code='#{@shop.shop_code}'")
end
# render json for http status code
@@ -186,12 +186,6 @@ class Origami::FoodCourtController < ApplicationController
end
end
end
def check_user
if current_user.nil?
redirect_to root_path
end
end
# this can always true
def check_order_with_booking(booking)
if booking.sale.sale_status == "completed" || booking.sale.sale_status == "new"

View File

@@ -33,9 +33,9 @@ class Origami::PaymalController < BaseOrigamiController
if customer_data
@membership_id = customer_data.membership_id
if !@membership_id.nil?
membership_setting = MembershipSetting.find_by_membership_type("paypar_url")
membership_setting = MembershipSetting.find_by_membership_type_and_shop_code("paypar_url",@shop.shop_code)
if membership_setting.gateway_url
member_actions =MembershipAction.find_by_membership_type("get_account_balance")
member_actions =MembershipAction.find_by_membership_type_and_shop_code("get_account_balance",@shop.shop_code)
if member_actions.gateway_url
@campaign_type_id = nil
url = membership_setting.gateway_url.to_s + member_actions.gateway_url.to_s
@@ -72,7 +72,6 @@ def create
sale_id = params[:sale_id]
transaction_ref = params[:transaction_ref]
account_no = params[:account_no]
puts params.to_json
if(Sale.exists?(sale_id))
saleObj = Sale.find(sale_id)
# shop_details = Shop.first
@@ -87,6 +86,7 @@ def create
# saleObj = Sale.find(sale_id)
sale_payment = SalePayment.new
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

View File

@@ -26,7 +26,7 @@ class Settings::PaymentMethodSettingsController < ApplicationController
# POST /settings/payment_method_settings.json
def create
@settings_payment_method_setting = PaymentMethodSetting.new(settings_payment_method_setting_params)
@settings_payment_method_settings.shop_code = @shop.shop_code
@settings_payment_method_setting.shop_code = @shop.shop_code
respond_to do |format|
if @settings_payment_method_setting.save
format.html { redirect_to settings_payment_method_settings_path, notice: 'Payment method setting was successfully created.' }

View File

@@ -33,7 +33,7 @@ class Customer < ApplicationRecord
cus.save
return cus
end
end
end
def self.get_member_account(customer)
membership = MembershipSetting.active.find_by_membership_type("paypar_url")
@@ -44,7 +44,7 @@ class Customer < ApplicationRecord
# urltest =self.url_exist?(url)
if !membership.nil? && !memberaction.nil?
begin
response = HTTParty.get(url, :body => {
response = HTTParty.get(url, :body => {
membership_id: customer.membership_id,
merchant_uid:merchant_uid,
type: "summary",
@@ -57,7 +57,7 @@ class Customer < ApplicationRecord
:timeout => 10)
rescue HTTParty::Error
response = {status: false, message: "Server Error"}
rescue Net::OpenTimeout
response = { status: false , message: "Server Time out"}
@@ -125,7 +125,7 @@ class Customer < ApplicationRecord
auth_token = memberaction.auth_token.to_s
url = membership.gateway_url.to_s + memberaction.gateway_url.to_s
@customers = Customer.where("membership_type IS NOT NULL AND membership_id IS NULL")
@customers = Customer.where("membership_type IS NOT NULL AND membership_id IS NULL")
@customers.each do |customer|
member_params = { name: customer.name,phone: customer.contact_no,
@@ -143,7 +143,7 @@ class Customer < ApplicationRecord
paypar_account_no: customer.paypar_account_no,
card_no:customer.card_no,member_group_id: customer.membership_type,
merchant_uid:merchant_uid,auth_token:auth_token}.to_json
end
end
begin
response = HTTParty.post(url,
@@ -154,7 +154,7 @@ class Customer < ApplicationRecord
})
rescue Net::OpenTimeout
response = { status: false, message: "Server Time out" }
rescue OpenURI::HTTPError
response = { status: false, message: "Can't connect server"}
@@ -172,12 +172,12 @@ class Customer < ApplicationRecord
def self.update_rebate
sales = Sale.where("rebate_status = 'false'")
sales.each do |sale|
if sale.customer.membership_id
if sale.customer.membership_id
response = self.rebat(Sale.find(sale.sale_id))
#record an payment in sale-audit
if !response.nil?
remark = "UPdate Rebate Response - #{response} for Customer #{sale.customer_id} Sale Id [#{sale.sale_id}]| pay amount -> #{sale.amount_received} "
sale_audit = SaleAudit.record_paymal(sale.sale_id, remark, 1)
sale_audit = SaleAudit.record_paymal(sale.sale_id, remark, 1)
end
if response["status"] == true
status = sale.update_attributes(rebate_status: "true")
@@ -190,7 +190,7 @@ class Customer < ApplicationRecord
rebate_prices,campaign_method = SaleItem.calculate_rebate_by_account(sObj.sale_items)
generic_customer_id = sObj.customer.membership_id
if generic_customer_id.present?
paypar = sObj.sale_payments
payparcost = 0
@@ -207,7 +207,7 @@ class Customer < ApplicationRecord
end
# overall_dis = SaleItem.get_overall_discount(sObj.id)
overall_dis = sObj.total_discount
if credit != 1
membership = MembershipSetting.find_by_membership_type("paypar_url")
memberaction = MembershipAction.find_by_membership_type("get_member_campaign")
@@ -218,8 +218,8 @@ class Customer < ApplicationRecord
# Control for Paypar Cloud
begin
response = HTTParty.get(url,
:body => {
response = HTTParty.get(url,
:body => {
member_group_id:sObj.customer.membership_type,
merchant_uid:merchant_uid,
campaign_type_id: campaign_type_id,
@@ -233,7 +233,7 @@ class Customer < ApplicationRecord
response = { "status": false , "message": "Connect To" }
rescue OpenURI::HTTPError
response = { "status": false, "message": "Can't connect server"}
rescue SocketError
response = { "status": false, "message": "Can't connect server"}
end
@@ -250,7 +250,7 @@ class Customer < ApplicationRecord
response["membership_campaign_data"].each do |a|
data = {:type => a["rules_type"], :percentage => a["change_unit"].to_i * a["base_unit"].to_i}
total_percentage = total_percentage + a["change_unit"].to_i * a["base_unit"].to_i
type_arr.push(data)
end
end
@@ -267,7 +267,7 @@ class Customer < ApplicationRecord
actual = a[:amount] - amount
data[:amount] = actual
end
end
end
rebate_arr.push(data)
@@ -290,8 +290,8 @@ class Customer < ApplicationRecord
# Control for Paypar Cloud
begin
response = HTTParty.post(url,
:body => {
response = HTTParty.post(url,
:body => {
generic_customer_id:generic_customer_id ,
total_sale_transaction_amount: sObj.grand_total,
merchant_uid:merchant_uid,
@@ -309,7 +309,7 @@ class Customer < ApplicationRecord
response = { "status": false , "message": "Connect To" }
rescue OpenURI::HTTPError
response = { "status": false, "message": "Can't connect server"}
rescue SocketError
response = { "status": false, "message": "Can't connect server"}
end
@@ -320,7 +320,7 @@ class Customer < ApplicationRecord
end
else
puts "no Response"
response = { "status": "no_member", "message": "Not membership"}
response = { "status": "no_member", "message": "Not membership"}
end
end
@@ -331,8 +331,8 @@ class Customer < ApplicationRecord
auth_token = memberaction.auth_token.to_s
url = membership.gateway_url.to_s + memberaction.gateway_url.to_s
begin
response = HTTParty.get(url,
:body => { paypar_account_no:account_no,
response = HTTParty.get(url,
:body => { paypar_account_no:account_no,
merchant_uid:merchant_uid,
auth_token:auth_token
}.to_json,

View File

@@ -171,7 +171,8 @@ class SalePayment < ApplicationRecord
#record an payment in sale-audit
remark = "Payment failed - Grand Total [#{invoice.grand_total}] | Due [#{amount_due}] | Paid [#{invoice.amount_received}]"
sale_audit = SaleAudit.record_payment(invoice.id, remark,action_by.name)
return false, "Payment failed"
# return false, "Payment failed"
return false, self.save,membership_data
end
else
#record an payment in sale-audit
@@ -303,8 +304,8 @@ class SalePayment < ApplicationRecord
def self.create_payment(paypar_url,payment_type,membership_id,received_amount,sale_id)
# membership_actions_data = MembershipAction.find_by_membership_type("create_payment");
membership_actions_data = PaymentMethodSetting.find_by_payment_method(payment_type)
sale_data = Sale.find_by_sale_id(sale_id)
membership_actions_data = PaymentMethodSetting.find_by_payment_method_and_shop_code(payment_type,sale_data.shop_code)
customer_data = Customer.find_by_customer_id(sale_data.customer_id)
if !membership_actions_data.nil?
@@ -543,7 +544,7 @@ class SalePayment < ApplicationRecord
# if account_no.to_i <= 0
# account_no = customer_data.membership_id
# end
membership_setting = MembershipSetting.find_by_membership_type("paypar_url")
membership_setting = MembershipSetting.find_by_membership_type_and_shop_code("paypar_url",self.sale.shop_code)
membership_data = SalePayment.create_payment(membership_setting.gateway_url,"PAYMAL",account_no,self.received_amount,self.sale.sale_id)
#record an payment in sale-audit
@@ -686,7 +687,7 @@ class SalePayment < ApplicationRecord
self.sale.sale_status = "completed"
if MembershipSetting.find_by_rebate(1) && is_foc == 0 && is_credit == 0
if MembershipSetting.find_by_rebate_and_shop_code(1,self.sale.shop_code) && is_foc == 0 && is_credit == 0
response = rebat(sObj)
#record an payment in sale-audit
@@ -845,8 +846,8 @@ class SalePayment < ApplicationRecord
overall_dis = sObj.total_discount
if credit != 1
membership = MembershipSetting.find_by_membership_type("paypar_url")
memberaction = MembershipAction.find_by_membership_type("get_member_campaign")
membership = MembershipSetting.find_by_membership_type_and_shop_code("paypar_url",sObj.shop_code)
memberaction = MembershipAction.find_by_membership_type_and_shop_code("get_member_campaign",sObj.shop_code)
merchant_uid = memberaction.merchant_account_id.to_s
campaign_type_id = memberaction.additional_parameter["campaign_type_id"]
auth_token = memberaction.auth_token.to_s
@@ -930,8 +931,8 @@ class SalePayment < ApplicationRecord
if total_amount >= 0
receipt_no = sObj.receipt_no
membership = MembershipSetting.find_by_membership_type("paypar_url")
memberaction = MembershipAction.find_by_membership_type("rebate")
membership = MembershipSetting.find_by_membership_type_and_shop_code("paypar_url",sObj.shop_code)
memberaction = MembershipAction.find_by_membership_type_and_shop_code("rebate",sObj.shop_code)
merchant_uid = memberaction.merchant_account_id.to_s
campaign_type_id = memberaction.additional_parameter["campaign_type_id"]
auth_token = memberaction.auth_token.to_s
@@ -962,7 +963,7 @@ class SalePayment < ApplicationRecord
rescue SocketError
response = { "status": false, "message": "Can't connect server"}
end
Rails.logger.debug "Rebage Response"
Rails.logger.debug "Rebate Response"
Rails.logger.debug response.to_json
return response
end

View File

@@ -3,7 +3,7 @@ if @status == true
json.id @order.id
json.booking_id @booking.id
json.order_items do
json.array! @order.order_items, :item_code, :item_name, :qty, :options, :remark
json.array! @order.order_items, :item_code, :item_name, :qty, :options, :remark,:price
end
else
json.status :error

View File

@@ -1,7 +1,7 @@
if @result && @cus
json.status true
json.status true
json.sent_pin true
else
else
json.status false
json.message "Customer Not Found"
end
end

View File

@@ -23,7 +23,17 @@ module SXRestaurants
config.active_record.time_zone_aware_types = [:datetime, :time]
config.active_job.queue_adapter = :sidekiq
config.time_zone = 'Asia/Rangoon'
config.middleware.insert_before ActionDispatch::Static, Rack::Cors do
allow do
origins '*'
resource(
'*',
headers: :any,
methods: [:get, :patch, :put, :delete, :post, :options]
)
end
end
end
end

View File

@@ -1,11 +1,11 @@
application_path="#{File.expand_path("../..", __FILE__)}"
directory application_path
#environment ENV.fetch("RAILS_ENV") { "production" }
environment "production"
pidfile "#{application_path}/tmp/puma/pid"
state_path "#{application_path}/tmp/puma/state"
stdout_redirect "#{application_path}/log/puma.stdout.log", "#{application_path}/log/puma.stderr.log"
port ENV.fetch("PORT") { 62158 }
workers 2
preload_app!
threads 1,1
# application_path="#{File.expand_path("../..", __FILE__)}"
# directory application_path
# #environment ENV.fetch("RAILS_ENV") { "production" }
# environment "production"
# pidfile "#{application_path}/tmp/puma/pid"
# state_path "#{application_path}/tmp/puma/state"
# stdout_redirect "#{application_path}/log/puma.stdout.log", "#{application_path}/log/puma.stderr.log"
# port ENV.fetch("PORT") { 62158 }
# workers 2
# preload_app!
# threads 1,1

View File

@@ -0,0 +1,5 @@
class AddShopCodeMembershipAction < ActiveRecord::Migration[5.1]
def change
add_column :membership_actions, :shop_code, :string, :default => '262'
end
end