create paymal payment for cashier app

This commit is contained in:
Thein Lin Kyaw
2022-05-11 11:52:37 +06:30
parent 0231c7e60f
commit 7598a96e60
4 changed files with 87 additions and 20 deletions

View File

@@ -22,47 +22,50 @@ class Api::PaymentsController < Api::ApiController
#create paymal payment for cashier app
def create_paymal_payment
if params[:sale_id] && params[:account_no]
sale = Sale.find_by_sale_id(params[:sale_id])
if !sale.nil?
if sale.sale_status == "new"
@sale = Sale.find_by_sale_id(params[:sale_id])
if !@sale.nil?
if @sale.sale_status == "new"
if !params[:account_no].empty?
@status, @message = send_account_paymal(sale.grand_total, params[:account_no], sale.receipt_no)
@status, @message = send_account_paymal(@sale.grand_total, params[:account_no], @sale.receipt_no)
if @status
sale_payment = SalePayment.new
status, @sale, @membership_data = sale_payment.process_payment(sale, current_login_employee, sale.grand_total, "paymal",params[:account_no])
status, @sale_payment, @membership_data = sale_payment.process_payment(@sale, current_login_employee, @sale.grand_total, "paymal",params[:account_no])
if status == true && @membership_data["status"] == true
sale_payment = SalePayment.new
status = sale_payment.process_payment(sale, current_login_employee, 0, "cash")
status = sale_payment.process_payment(@sale, current_login_employee, 0, "cash")
#card_balance amount for Paymal payment
card_balance_amount, transaction_ref = SaleAudit.getCardBalanceAmount(params[:sale_id])
render json: JSON.generate({:status => true, :balance_amount => card_balance_amount,:receipt_no => sale.receipt_no, :message => "Payment successful."})
@status = true
@card_balance_amount = card_balance_amount
@transaction_ref = transaction_ref
@message = "Payment successful."
else
@status = false
if @membership_data
if @membership_data["card_balance_amount"] != "null"
render json: JSON.generate({:status => false, :balance_amount => @membership_data["card_balance_amount"], :error_message => @membership_data["message"]})
else
render json: JSON.generate({:status => false, :error_message => @membership_data["message"]})
end
@card_balance_amount = @membership_data["card_balance_amount"]
@message = @membership_data["message"]
else
render json: JSON.generate({:status => false, :error_message => "Payment failed!"})
@message = "Payment failed!"
end
end
else
render json: JSON.generate({:status => false, :error_message => @message})
end
else
render json: JSON.generate({:status => false, :error_message => "Card No is required!"})
@status = false
@message = "Card No is required!"
end
else
render json: JSON.generate({:status => false, :error_message => "Already paid for '#{params[:sale_id]}'!"})
@status = false
@message = "Already paid for '#{params[:sale_id]}'!"
end
else
render json: JSON.generate({:status => false, :error_message => "There is no sale for '#{params[:sale_id]}'!"})
@status = false
@message = "There is no sale for '#{params[:sale_id]}'!"
end
else
render json: JSON.generate({:status => false, :error_message => "Parameters missing! #{params[:sale_id]} #{params[:account_no]}"})
@status = false
@message = "Parameters missing! #{params[:sale_id]} #{params[:account_no]}"
end
end

View File

@@ -165,7 +165,7 @@ class SalePayment < ApplicationRecord
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, self.save,membership_data
return false, self.save, membership_data
end
else
sale_update_payment_status(0)

View File

@@ -35,6 +35,10 @@ class SaleTax < ApplicationRecord
.group("sale_taxes.tax_name")
end
def display_name
"#{self.tax_name} (#{'Incl. ' if self.tax_type == 'inclusive'}#{self.tax_rate}%"
end
private
def generate_custom_id
if self.sale_tax_id.nil?

View File

@@ -0,0 +1,60 @@
#show invoice number and stuff
json.status @status
json.message @message
json.data do
if @status
json.sale_id @sale.sale_id
json.sale_status @sale.sale_status
json.booking @sale.booking.booking_id
json.shop do
json.name current_shop.name
json.address current_shop.address
json.phone_no current_shop.phone_no
end
order = @sale.orders.first
json.order do
json.order_no order.order_id
json.order_by order.waiters
json.order_date order.date
end
json.cashier_name @sale.cashier_name
json.receipt_no @sale.receipt_no
json.receipt_date @sale.receipt_date
json.sub_total @sale.total_amount
json.discount_type @sale.discount_type
json.total_discount @sale.total_discount
json.sale_taxes @sale.sale_taxes do |sale_tax|
json.display_name sale_tax.display_name
json.tax_amount sale_tax.tax_payable_amount
end
json.grand_total @sale.grand_total
json.sale_items @sale.sale_items do |sale_item|
json.sale_item_id sale_item.sale_item_id
json.sale_id sale_item.sale_id
json.product_code sale_item.product_code
json.item_instance_code sale_item.item_instance_code
json.product_name sale_item.product_name
json.product_alt_name sale_item.product_alt_name
json.account_id sale_item.account_id
json.status sale_item.status
json.remark sale_item.remark
json.qty sale_item.qty
json.unit_price sale_item.unit_price
json.taxable_price sale_item.taxable_price
json.price sale_item.price
json.is_taxable sale_item.is_taxable
end
json.customer_account params[:account_no]
json.card_balance @card_balance_amount
end
end