diff --git a/app/controllers/api/payments_controller.rb b/app/controllers/api/payments_controller.rb index 9be41d9c..8a2f028b 100755 --- a/app/controllers/api/payments_controller.rb +++ b/app/controllers/api/payments_controller.rb @@ -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 diff --git a/app/models/sale_payment.rb b/app/models/sale_payment.rb index a59b1508..fe928d07 100755 --- a/app/models/sale_payment.rb +++ b/app/models/sale_payment.rb @@ -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) diff --git a/app/models/sale_tax.rb b/app/models/sale_tax.rb index 801c3bf7..dfe83b0a 100755 --- a/app/models/sale_tax.rb +++ b/app/models/sale_tax.rb @@ -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? diff --git a/app/views/api/payments/create_paymal_payment.json.jbuilder b/app/views/api/payments/create_paymal_payment.json.jbuilder new file mode 100644 index 00000000..e06209db --- /dev/null +++ b/app/views/api/payments/create_paymal_payment.json.jbuilder @@ -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