diff --git a/Gemfile b/Gemfile index 6b3740a7..09e358f5 100644 --- a/Gemfile +++ b/Gemfile @@ -13,7 +13,7 @@ gem 'rails', '~> 5.1.0' gem 'mysql2', '>= 0.3.18', '< 0.5' #Use PosgreSQL - gem 'pg' + # gem 'pg' # redis server for cable # gem 'redis', '~> 3.0' diff --git a/Gemfile.lock b/Gemfile.lock index 17b395eb..70197025 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -122,7 +122,6 @@ GEM nokogiri (1.7.2) mini_portile2 (~> 2.1.0) pdf-core (0.7.0) - pg (0.20.0) prawn (2.2.2) pdf-core (~> 0.7.0) ttfunk (~> 1.5) @@ -257,7 +256,6 @@ DEPENDENCIES kaminari! listen (~> 3.0.5) mysql2 (>= 0.3.18, < 0.5) - pg prawn prawn-table puma (~> 3.0) @@ -280,4 +278,4 @@ DEPENDENCIES web-console (>= 3.3.0) BUNDLED WITH - 1.15.0 + 1.15.1 diff --git a/app/controllers/origami/card_payments_controller.rb b/app/controllers/origami/card_payments_controller.rb index 2df4b266..6a0e99c9 100644 --- a/app/controllers/origami/card_payments_controller.rb +++ b/app/controllers/origami/card_payments_controller.rb @@ -2,6 +2,25 @@ class Origami::CardPaymentsController < BaseOrigamiController def index + @membership_rebate_balance = 0 + @membership_id = 0 + if !@membership_id.nil? + membership_setting = MembershipSetting.find_by_membership_type("smartpay_url") + membership_data = SalePayment.get_paypar_account(membership_setting.gateway_url,membership_setting.auth_token,@membership_id) + if membership_data["status"]==true + membership_account_data = membership_data["data"]; + membership_account_data.each do |acc_data| + if acc_data["accountable_type"] == "REBATEACCOUNT" + @membership_rebate_balance=acc_data["balance"] + else + @membership_rebate_balance = 0 + end + end + else + @membership_rebate_balance = 0 + end + end + end def create diff --git a/app/models/sale_payment.rb b/app/models/sale_payment.rb index 15fe4c74..9f68e4f4 100644 --- a/app/models/sale_payment.rb +++ b/app/models/sale_payment.rb @@ -6,158 +6,172 @@ class SalePayment < ApplicationRecord belongs_to :sale - :attr_accessor :received_amount, :card_payment_reference, :voucher_no, :giftcard_no, :customer_id, :external_payment_status + attr_accessor :received_amount, :card_payment_reference, :voucher_no, :giftcard_no, :customer_id, :external_payment_status - def process_payment(invoice, action_by) - self.sale = invoice + # def process_payment(invoice, action_by) + # self.sale = invoice - amount_due = invoice.grand_total - #get all payment for this invoices - invoice.sale_payments.each do |payment| - if (payment.payment_status == "paid" ) - amount_due = amount_due - payment.payment_amount - end - end + # amount_due = invoice.grand_total + # #get all payment for this invoices + # invoice.sale_payments.each do |payment| + # if (payment.payment_status == "paid" ) + # amount_due = amount_due - payment.payment_amount + # end + # end - if (amount_due > 0) - payment_status = false - #route to payment type - switch (payment_method) - case "cash" - payment_status = cash_payment - case "creditnote" - payment_status = creditnote_payment - case "visa" - payment_status = external_terminal_card_payment(:visa) - case "master" - payment_status = external_terminal_card_payment(:master) - case "jcb" - payment_status = external_terminal_card_payment(:jcb) - case "mpu" - payment_status = external_terminal_card_payment(:mpu) - case "unionpay" - payment_status = external_terminal_card_payment(:unionpay) - case "vochure" - payment_status = vochure_payment - case "giftcard" - payment_status = giftcard_payment - case "paypar" - #TODO: implement paypar implementation - payment_status = paypar_payment - end + # if (amount_due > 0) + # payment_status = false + # #route to payment type + # switch (payment_method) + # case "cash" + # payment_status = cash_payment + # case "creditnote" + # payment_status = creditnote_payment + # case "visa" + # payment_status = external_terminal_card_payment(:visa) + # case "master" + # payment_status = external_terminal_card_payment(:master) + # case "jcb" + # payment_status = external_terminal_card_payment(:jcb) + # case "mpu" + # payment_status = external_terminal_card_payment(:mpu) + # case "unionpay" + # payment_status = external_terminal_card_payment(:unionpay) + # case "vochure" + # payment_status = vochure_payment + # case "giftcard" + # payment_status = giftcard_payment + # case "paypar" + # #TODO: implement paypar implementation + # payment_status = paypar_payment + # end - #record an payment in sale-audit - remark = "Payment #{payment_method}- for Invoice #{invoice.receipt_no} Due [#{amount_due}]| pay amount -> #{amount} | Payment Status ->#{payment_status}" - sale_audit = SaleAudit.record_payment(invoice.id, remark, action_by) + # #record an payment in sale-audit + # remark = "Payment #{payment_method}- for Invoice #{invoice.receipt_no} Due [#{amount_due}]| pay amount -> #{amount} | Payment Status ->#{payment_status}" + # sale_audit = SaleAudit.record_payment(invoice.id, remark, action_by) - return true, self.sale - else - #record an payment in sale-audit - remark = "No outstanding Amount - Grand Total [#{invoice.grand_total}] | Due [#{amount_due}] | Paid [#{invoice.amount_received}]" - sale_audit = SaleAudit.record_payment(invoice.id, remark,action_by) + # return true, self.sale + # else + # #record an payment in sale-audit + # remark = "No outstanding Amount - Grand Total [#{invoice.grand_total}] | Due [#{amount_due}] | Paid [#{invoice.amount_received}]" + # sale_audit = SaleAudit.record_payment(invoice.id, remark,action_by) - return false, "No outstanding Amount" - end + # return false, "No outstanding Amount" + # end + # end + + def self.get_paypar_account(paypar_url,token,membership_id) + url = paypar_url.to_s + "/api/get_membership_data".to_s + response = HTTParty.get(url, + :body => { app_token: token,membership_id:membership_id}.to_json, + :headers => { + 'Content-Type' => 'application/json', + 'Accept' => 'application/json' + } + ) + return response; + end - private - def cash_payment - payment_status = false + # private + # def cash_payment + # payment_status = false - self.payment_method = "cash" - self.payment_amount = self.received_amount - self.outstanding_amount = self.sale.grand_total - received_amount - self.payment_status = "paid" - payment_method = self.save! + # self.payment_method = "cash" + # self.payment_amount = self.received_amount + # self.outstanding_amount = self.sale.grand_total - received_amount + # self.payment_status = "paid" + # payment_method = self.save! - sale_update_payment_status(self.received_amount) + # sale_update_payment_status(self.received_amount) - return payment_status - end + # return payment_status + # end - def creditnote_payment(self.customer_id) - payment_status = false + # def creditnote_payment(self.customer_id) + # payment_status = false - self.payment_method = "creditnote" - self.payment_amount = self.received_amount - self.customer_id = self.customer_id - self.outstanding_amount = 0 - self.received_amount - self.payment_status = "outstanding" - payment_method = self.save! + # self.payment_method = "creditnote" + # self.payment_amount = self.received_amount + # self.customer_id = self.customer_id + # self.outstanding_amount = 0 - self.received_amount + # self.payment_status = "outstanding" + # payment_method = self.save! - sale_update_payment_status(self.received_amount) + # sale_update_payment_status(self.received_amount) - return payment_status - end + # return payment_status + # end - def external_terminal_card_payment(method) - payment_status = false + # def external_terminal_card_payment(method) + # payment_status = false - self.payment_method = method - self.payment_amount = self.received_amount - self.payment_reference = self.card_payment_reference - self.outstanding_amount = self.sale.grand_total- self.received_amount - self.payment_status = "paid" - payment_method = self.save! + # self.payment_method = method + # self.payment_amount = self.received_amount + # self.payment_reference = self.card_payment_reference + # self.outstanding_amount = self.sale.grand_total- self.received_amount + # self.payment_status = "paid" + # payment_method = self.save! - sale_update_payment_status(self.received_amount) + # sale_update_payment_status(self.received_amount) - return payment_status - end + # return payment_status + # end - def voucher_payment - payment_status = false + # def voucher_payment + # payment_status = false - #Next time - validate if the vochure number is valid - within - self.payment_method = "voucher" - self.payment_amount = self.received_amount - self.payment_reference = self.voucher_no - self.outstanding_amount = self.sale.grand_total- self.received_amount - self.payment_status = "paid" - payment_method = self.save! + # #Next time - validate if the vochure number is valid - within + # self.payment_method = "voucher" + # self.payment_amount = self.received_amount + # self.payment_reference = self.voucher_no + # self.outstanding_amount = self.sale.grand_total- self.received_amount + # self.payment_status = "paid" + # payment_method = self.save! - sale_update_payment_status(self.received_amount) + # sale_update_payment_status(self.received_amount) - return payment_status + # return payment_status - end + # end - def giftcard_payment - payment_status = false + # def giftcard_payment + # payment_status = false - #Next time - validate if the vochure number is valid - within - self.payment_method = "giftcard" - self.payment_amount = self.received_amount - self.payment_reference = self.giftcard_no - self.outstanding_amount = self.sale.grand_total- self.received_amount - self.payment_status = "paid" - payment_method = self.save! + # #Next time - validate if the vochure number is valid - within + # self.payment_method = "giftcard" + # self.payment_amount = self.received_amount + # self.payment_reference = self.giftcard_no + # self.outstanding_amount = self.sale.grand_total- self.received_amount + # self.payment_status = "paid" + # payment_method = self.save! - sale_update_payment_status(self.received_amount) + # sale_update_payment_status(self.received_amount) - return payment_status + # return payment_status - end + # end - def paypar_payment - ##TODO - Integration with Paypar (SmartPay) - end + # def paypar_payment + # ##TODO - Integration with Paypar (SmartPay) + # end - def sale_update_payment_status(paid_amount) + # def sale_update_payment_status(paid_amount) - #update amount_outstanding - self.sale.amount_received = self.sale.amount_received + paid_amount - self.sale.amount_changed = amount - self.sale.amount_received - if (self.sale.grand_total <= self.sale.amount_received && self.sale.amount_changed > 0) - self.sale.payment_status = "paid" - self.sale.sale_status = "completed" - self.sale.save! - end + # #update amount_outstanding + # self.sale.amount_received = self.sale.amount_received + paid_amount + # self.sale.amount_changed = amount - self.sale.amount_received + # if (self.sale.grand_total <= self.sale.amount_received && self.sale.amount_changed > 0) + # self.sale.payment_status = "paid" + # self.sale.sale_status = "completed" + # self.sale.save! + # end + + # end - end private def generate_custom_id diff --git a/app/views/origami/card_payments/index.html.erb b/app/views/origami/card_payments/index.html.erb index 86ef10b0..859a854b 100644 --- a/app/views/origami/card_payments/index.html.erb +++ b/app/views/origami/card_payments/index.html.erb @@ -1 +1,137 @@ -Hello Card Payment +