add paymal and dinga with account no

This commit is contained in:
phyusin
2018-04-11 16:18:42 +06:30
parent 8261a3453a
commit 0413d56a83
8 changed files with 585 additions and 288 deletions

View File

@@ -417,6 +417,14 @@ i.logout_icon{
#is_memberModal .btn { #is_memberModal .btn {
width: 80%; width: 80%;
} }
#is_paymemberModal .modal-body {
height: 150px !important;
}
#is_paymemberModal .btn {
width: 80%;
}
/* End Is Member Modal */ /* End Is Member Modal */
/* Start iframe */ /* Start iframe */

View File

@@ -144,5 +144,32 @@ class Origami::CustomersController < BaseOrigamiController
render json: JSON.generate({:status => false, :error_message => "Record not found"}) render json: JSON.generate({:status => false, :error_message => "Record not found"})
end end
end end
def send_account
amount = params[:amount]
account_no = params[:account_no]
receipt_no = params[:receipt_no]
sale = Sale.find_by_receipt_no(receipt_no)
@out = []
action_by = current_user.id
membership_setting = MembershipSetting.find_by_membership_type("paypar_url")
if membership_setting.gateway_url
member_actions =MembershipAction.find_by_membership_type("get_account_balance")
if member_actions.gateway_url
@campaign_type_id = nil
url = membership_setting.gateway_url.to_s + member_actions.gateway_url.to_s
merchant_uid= member_actions.merchant_account_id
auth_token = member_actions.auth_token.to_s
membership_data = SalePayment.get_paypar_account_data(url,membership_setting.auth_token,merchant_uid,auth_token,account_no,amount,receipt_no)
if membership_data["status"]==true
remark = "Payment by account no Receipt No #{sale.receipt_no} | Sale ID #{sale.sale_id} | Transaction ref: #{membership_data[:transaction_ref]} | Reload amount #{membership_data[:reload_amount]} | Old Balance Amount #{membership_data[:old_balance_amount]} | DateTime : #{membership_data[:date]}"
sale_audit = SaleAudit.record_audit_for_edit(sale.sale_id,sale.cashier_id, action_by,remark,"PAYBYACCOUNT" )
else
remark = "Payment by account no Receipt No #{sale.receipt_no} | Sale ID #{sale.sale_id} | Remark : #{membership_data[:message]}"
sale_audit = SaleAudit.record_audit_for_edit(sale.sale_id,sale.cashier_id, action_by,remark,"PAYBYACCOUNT" )
end
@out = membership_data
end
end
end
end end

View File

@@ -1,102 +1,97 @@
class Origami::DingaController < BaseOrigamiController class Origami::DingaController < BaseOrigamiController
def index def index
@sale_id = params[:sale_id] @sale_id = params[:sale_id]
payment_method = params[:payment_method] payment_method = params[:payment_method]
@cashier_type = params[:type] @cashier_type = params[:type]
@membership_rebate_balance=0 @membership_rebate_balance=0
sale_data = Sale.find_by_sale_id(@sale_id) sale_data = Sale.find_by_sale_id(@sale_id)
@receipt_no = sale_data.receipt_no
@shop = Shop.first
# if @shop.is_rounding_adj
# new_total = Sale.get_rounding_adjustment(sale_data.grand_total)
# else
# new_total = sale_data.grand_total
# end
# @rounding_adj = new_total-sale_data.grand_total
@rounding_adj = sale_data.rounding_adjustment
@shop = Shop.first @payparcount = 0
# if @shop.is_rounding_adj others = 0
# new_total = Sale.get_rounding_adjustment(sale_data.grand_total) sale_data.sale_payments.each do |sale_payment|
# else
# new_total = sale_data.grand_total
# end
# @rounding_adj = new_total-sale_data.grand_total
@rounding_adj = sale_data.rounding_adjustment
@dingacount = 0
others = 0
sale_data.sale_payments.each do |sale_payment|
if sale_payment.payment_method == "dinga" if sale_payment.payment_method == "dinga"
@dingacount = @dingacount + sale_payment.payment_amount @payparcount = @payparcount + sale_payment.payment_amount
else else
others = others + sale_payment.payment_amount others = others + sale_payment.payment_amount
end end
end end
@redeem_prices = sale_data.grand_total - @dingacount -others @payment_prices = sale_data.grand_total - @payparcount -others
if sale_data if sale_data
if sale_data.customer_id if sale_data.customer_id
customer_data= Customer.find_by_customer_id(sale_data.customer_id) customer_data= Customer.find_by_customer_id(sale_data.customer_id)
if customer_data if customer_data
@membership_id = customer_data.membership_id @membership_id = customer_data.membership_id
if !@membership_id.nil? if !@membership_id.nil?
membership_setting = MembershipSetting.find_by_membership_type("dinga_url") membership_setting = MembershipSetting.find_by_membership_type("paypar_url")
if membership_setting.gateway_url if membership_setting.gateway_url
member_actions =MembershipAction.find_by_membership_type("get_account_balance") member_actions =MembershipAction.find_by_membership_type("get_account_balance")
if member_actions.gateway_url if member_actions.gateway_url
@campaign_type_id = member_actions.additional_parameter["campaign_type_id"] @campaign_type_id = nil
url = membership_setting.gateway_url.to_s + member_actions.gateway_url.to_s url = membership_setting.gateway_url.to_s + member_actions.gateway_url.to_s
merchant_uid= member_actions.merchant_account_id merchant_uid= member_actions.merchant_account_id
auth_token = member_actions.auth_token.to_s auth_token = member_actions.auth_token.to_s
membership_data = SalePayment.get_dinga_account(url,membership_setting.auth_token,@membership_id,@campaign_type_id,merchant_uid,auth_token) membership_data = SalePayment.get_paypar_account(url,membership_setting.auth_token,@membership_id,@campaign_type_id,merchant_uid,auth_token)
if membership_data["status"]==true if membership_data["status"]==true
@membership_rebate_balance=membership_data["balance"] @membership_rebate_balance=membership_data["balance"]
@out = true, @membership_rebate_balance,@membership_id @out = true, @membership_rebate_balance,@membership_id
end end
else else
@out =false,0 @out =false,0
end end
else else
@out = false,0 @out = false,0
end end
else else
@out = false, 0 @out = false, 0
end end
else else
@out = false, 0 @out = false, 0
end end
else else
@out = false, 0 @out = false, 0
end end
else else
@out = false, 0 @out = false, 0
end end
@out = false, 0 @out = false, 0
end end
def create def create
sale_id = params[:sale_id] cash = params[:payment_amount]
@cashier_type = params[:type] sale_id = params[:sale_id]
redeem_amount = params[:redeem_amount] transaction_ref = params[:transaction_ref]
membership_id = params[:membership_id] if(Sale.exists?(sale_id))
payment_method = "dinga" saleObj = Sale.find(sale_id)
if(Sale.exists?(sale_id)) shop_details = Shop.first
saleObj = Sale.find(sale_id) # rounding adjustment
shop_details = Shop.first # if shop_details.is_rounding_adj
# new_total = Sale.get_rounding_adjustment(saleObj.grand_total)
# rounding adjustment # rounding_adj = new_total-saleObj.grand_total
if shop_details.is_rounding_adj # saleObj.update_attributes(grand_total: new_total,old_grand_total: saleObj.grand_total,rounding_adjustment:rounding_adj)
new_total = Sale.get_rounding_adjustment(saleObj.grand_total) # end
rounding_adj = new_total-saleObj.grand_total
saleObj.update_attributes(grand_total: new_total,old_grand_total: saleObj.grand_total,rounding_adjustment:rounding_adj) # saleObj = Sale.find(sale_id)
end sale_payment = SalePayment.new
status, @sale = sale_payment.process_payment(saleObj, @user, cash, "dinga",transaction_ref)
sale_payment = SalePayment.new if status == true
status,msg =sale_payment.process_payment(saleObj, @user, redeem_amount,payment_method) @out = true, "Success!"
if status == true else
@out = true, "Success!" @out =false, "Please try again payment!"
else end
@out =false, "Please try again payment!" end
end end
else
@out = false, "There has no sale record!"
end
end
end end

View File

@@ -1,80 +1,82 @@
class Origami::PaymalController < BaseOrigamiController class Origami::PaymalController < BaseOrigamiController
def index def index
@sale_id = params[:sale_id] @sale_id = params[:sale_id]
payment_method = params[:payment_method] payment_method = params[:payment_method]
@cashier_type = params[:type] @cashier_type = params[:type]
@membership_rebate_balance=0 @membership_rebate_balance=0
sale_data = Sale.find_by_sale_id(@sale_id) sale_data = Sale.find_by_sale_id(@sale_id)
@receipt_no = sale_data.receipt_no
@shop = Shop.first
# if @shop.is_rounding_adj
# new_total = Sale.get_rounding_adjustment(sale_data.grand_total)
# else
# new_total = sale_data.grand_total
# end
# @rounding_adj = new_total-sale_data.grand_total
@rounding_adj = sale_data.rounding_adjustment
@shop = Shop.first @payparcount = 0
# if @shop.is_rounding_adj others = 0
# new_total = Sale.get_rounding_adjustment(sale_data.grand_total) sale_data.sale_payments.each do |sale_payment|
# else
# new_total = sale_data.grand_total
# end
# @rounding_adj = new_total-sale_data.grand_total
@rounding_adj = sale_data.rounding_adjustment
@payparcount = 0
others = 0
sale_data.sale_payments.each do |sale_payment|
if sale_payment.payment_method == "paypar" if sale_payment.payment_method == "paypar"
@payparcount = @payparcount + sale_payment.payment_amount @payparcount = @payparcount + sale_payment.payment_amount
else else
others = others + sale_payment.payment_amount others = others + sale_payment.payment_amount
end end
end end
@payment_prices = sale_data.grand_total - @payparcount -others @payment_prices = sale_data.grand_total - @payparcount -others
if sale_data if sale_data
if sale_data.customer_id if sale_data.customer_id
customer_data= Customer.find_by_customer_id(sale_data.customer_id) customer_data= Customer.find_by_customer_id(sale_data.customer_id)
if customer_data if customer_data
@membership_id = customer_data.membership_id @membership_id = customer_data.membership_id
if !@membership_id.nil? if !@membership_id.nil?
membership_setting = MembershipSetting.find_by_membership_type("paypar_url") membership_setting = MembershipSetting.find_by_membership_type("paypar_url")
if membership_setting.gateway_url if membership_setting.gateway_url
member_actions =MembershipAction.find_by_membership_type("get_account_balance") member_actions =MembershipAction.find_by_membership_type("get_account_balance")
if member_actions.gateway_url if member_actions.gateway_url
@campaign_type_id = nil @campaign_type_id = nil
url = membership_setting.gateway_url.to_s + member_actions.gateway_url.to_s url = membership_setting.gateway_url.to_s + member_actions.gateway_url.to_s
merchant_uid= member_actions.merchant_account_id merchant_uid= member_actions.merchant_account_id
auth_token = member_actions.auth_token.to_s auth_token = member_actions.auth_token.to_s
membership_data = SalePayment.get_paypar_account(url,membership_setting.auth_token,@membership_id,@campaign_type_id,merchant_uid,auth_token) membership_data = SalePayment.get_paypar_account(url,membership_setting.auth_token,@membership_id,@campaign_type_id,merchant_uid,auth_token)
if membership_data["status"]==true if membership_data["status"]==true
@membership_rebate_balance=membership_data["balance"] @membership_rebate_balance=membership_data["balance"]
@out = true, @membership_rebate_balance,@membership_id @out = true, @membership_rebate_balance,@membership_id
end end
else else
@out =false,0 @out =false,0
end end
else else
@out = false,0 @out = false,0
end end
else else
@out = false, 0 @out = false, 0
end end
else else
@out = false, 0 @out = false, 0
end
else
@out = false, 0
end
else
@out = false, 0
end
@out = false, 0
end end
def create else
cash = params[:payment_amount] @out = false, 0
sale_id = params[:sale_id] end
if(Sale.exists?(sale_id)) else
saleObj = Sale.find(sale_id) @out = false, 0
shop_details = Shop.first end
@out = false, 0
end
def create
cash = params[:payment_amount]
sale_id = params[:sale_id]
transaction_ref = params[:transaction_ref]
if(Sale.exists?(sale_id))
saleObj = Sale.find(sale_id)
shop_details = Shop.first
# rounding adjustment # rounding adjustment
# if shop_details.is_rounding_adj # if shop_details.is_rounding_adj
# new_total = Sale.get_rounding_adjustment(saleObj.grand_total) # new_total = Sale.get_rounding_adjustment(saleObj.grand_total)
@@ -84,18 +86,12 @@ class Origami::PaymalController < BaseOrigamiController
# saleObj = Sale.find(sale_id) # saleObj = Sale.find(sale_id)
sale_payment = SalePayment.new sale_payment = SalePayment.new
status, @sale = sale_payment.process_payment(saleObj, @user, cash, "paymal") status, @sale = sale_payment.process_payment(saleObj, @user, cash, "paymal",transaction_ref)
if status == true if status == true
@out = true, "Success!" @out = true, "Success!"
else else
@out =false, "Please try again payment!" @out =false, "Please try again payment!"
end end
end end
end end
#Shop Name in Navbor
helper_method :shop_detail
def shop_detail
@shop = Shop.first
end
end end

View File

@@ -103,6 +103,31 @@ class SalePayment < ApplicationRecord
rescue OpenURI::HTTPError rescue OpenURI::HTTPError
response = { status: false} response = { status: false}
rescue SocketError
response = { status: false}
end
Rails.logger.debug "Get Paypar Account "
Rails.logger.debug response.to_json
return response
end
def self.get_paypar_account_data(url,token,merchant_uid,auth_token,account_no,amount,receipt_no)
# Control for Paypar Cloud
begin
response = HTTParty.get(url,
:body => { merchant_uid:merchant_uid,auth_token:auth_token,receipt_no: receipt_no,
account_no: account_no, amount: amount}.to_json,
:headers => {
'Content-Type' => 'application/json',
'Accept' => 'application/json; version=3'
}, :timeout => 10
)
rescue Net::OpenTimeout
response = { status: false }
rescue OpenURI::HTTPError
response = { status: false}
rescue SocketError rescue SocketError
response = { status: false} response = { status: false}
end end
@@ -378,7 +403,7 @@ class SalePayment < ApplicationRecord
self.payment_amount = self.received_amount self.payment_amount = self.received_amount
self.payment_reference = self.voucher_no self.payment_reference = self.voucher_no
self.outstanding_amount = self.sale.grand_total.to_f - self.received_amount.to_f self.outstanding_amount = self.sale.grand_total.to_f - self.received_amount.to_f
self.payment_status = "pending" self.payment_status = "paid"
payment_method = self.save! payment_method = self.save!
SalePayment.where(:sale_payment_id => self.sale_payment_id).update_all(:payment_status => 'paid') SalePayment.where(:sale_payment_id => self.sale_payment_id).update_all(:payment_status => 'paid')
sale_update_payment_status(self.received_amount.to_f) sale_update_payment_status(self.received_amount.to_f)
@@ -410,10 +435,10 @@ class SalePayment < ApplicationRecord
#Next time - validate if the vochure number is valid - within #Next time - validate if the vochure number is valid - within
customer_data = Customer.find_by_customer_id(self.sale.customer_id) customer_data = Customer.find_by_customer_id(self.sale.customer_id)
membership_setting = MembershipSetting.find_by_membership_type("paypar_url") membership_setting = MembershipSetting.find_by_membership_type("paypar_url")
membership_data = SalePayment.redeem(membership_setting.gateway_url,membership_setting.auth_token,customer_data.membership_id,self.received_amount,self.sale.sale_id) membership_data = SalePayment.create_payment(membership_setting.gateway_url,membership_setting.auth_token,customer_data.membership_id,self.received_amount,self.sale.sale_id)
#record an payment in sale-audit #record an payment in sale-audit
remark = "#{membership_data} Redeem- for Customer #{self.sale.customer_id} Sale Id [#{self.sale.sale_id}]| pay amount -> #{self.received_amount} " remark = "#{membership_data} Dinga Payment- for Customer #{self.sale.customer_id} Sale Id [#{self.sale.sale_id}]| pay amount -> #{self.received_amount} "
sale_audit = SaleAudit.record_paymal(self.sale.sale_id, remark, 1) sale_audit = SaleAudit.record_paymal(self.sale.sale_id, remark, 1)
if membership_data["status"]==true if membership_data["status"]==true
@@ -421,7 +446,7 @@ class SalePayment < ApplicationRecord
self.payment_amount = self.received_amount self.payment_amount = self.received_amount
self.payment_reference = self.voucher_no self.payment_reference = self.voucher_no
self.outstanding_amount = self.sale.grand_total.to_f - self.received_amount.to_f self.outstanding_amount = self.sale.grand_total.to_f - self.received_amount.to_f
self.payment_status = "pending" self.payment_status = "paid"
payment_method = self.save! payment_method = self.save!
SalePayment.where(:sale_payment_id => self.sale_payment_id).update_all(:payment_status => 'paid') SalePayment.where(:sale_payment_id => self.sale_payment_id).update_all(:payment_status => 'paid')
sale_update_payment_status(self.received_amount.to_f) sale_update_payment_status(self.received_amount.to_f)
@@ -429,6 +454,7 @@ class SalePayment < ApplicationRecord
else else
sale_update_payment_status(0) sale_update_payment_status(0)
end end
return payment_status return payment_status
end end

View File

@@ -15,41 +15,41 @@
<div class="rebate-form"> <div class="rebate-form">
<div class="row"> <div class="row">
<div class="form-group col-lg-12 col-md-12 col-sm-12"> <div class="form-group col-lg-12 col-md-12 col-sm-12">
<label class="">You can redeem up to </label> <label class="">You can pay up to </label>
<%@redeem_prices = @redeem_prices +@rounding_adj%> <%@payment_prices = @payment_prices +@rounding_adj%>
<input type="text" name="" id="redeemamt" class="form-control col-lg-7 col-md-7 col-sm-7" readonly="" value="<%= @redeem_prices %>" data-value="<%=@sale_id %>" data-member-value="<%= @membership_id %>"> <input type="text" name="" id="paymentamt" class="form-control col-lg-7 col-md-7 col-sm-7" readonly="" value="<%= @payment_prices %>" data-value="<%=@sale_id %>" data-member-value="<%= @membership_id %>">
</div> </div>
<hr> <hr>
</div> </div>
<% if @dingacount > 0 %> <% if @payparcount > 0 %>
<div class="row"> <div class="row">
<div class="form-group col-lg-12 col-md-12 col-sm-12"> <div class="form-group col-lg-12 col-md-12 col-sm-12">
<label class="">Recent Redeem Amount </label> <label class="">Recent Payment Amount </label>
<input type="text" name="" id="" class="form-control col-lg-7 col-md-7 col-sm-7" readonly="" value="<%= @dingacount %>" data-value="<%=@sale_id %>" data-member-value="<%= @membership_id %>"> <input type="text" name="" id="" class="form-control col-lg-7 col-md-7 col-sm-7" readonly="" value="<%= @payparcount %>" data-value="<%=@sale_id %>" data-member-value="<%= @membership_id %>">
</div> </div>
<hr> <hr>
</div> </div>
<% end %> <% end %>
<div class="row"> <div class="row">
<div class="form-group col-lg-12 col-md-12 col-sm-12"> <div class="form-group col-lg-12 col-md-12 col-sm-12">
<label class=""> Rebate Balance </label> <label class="">Available Balance </label>
<input type="text" name="valid_amount" id="valid_amount" class="form-control col-lg-7 col-md-7 col-sm-7" readonly="" value="<%=@membership_rebate_balance%>" data-value="<%=@sale_id %>" data-member-value="<%= @membership_id %>"> <input type="text" name="valid_amount" id="valid_amount" class="form-control col-lg-7 col-md-7 col-sm-7" readonly="" value="<%=@membership_rebate_balance%>" data-value="<%=@sale_id %>" data-member-value="<%= @membership_id %>">
</div> </div>
<hr> <hr>
</div> </div>
<div class="row"> <div class="row">
<div class="form-group col-lg-12 col-md-12 col-sm-12"> <div class="form-group col-lg-12 col-md-12 col-sm-12">
<label class="">Redeem Amount</label> <label class="">Payment Balance</label>
<div id="used_amount" class="form-control col-lg-7 col-md-7 col-sm-7">0.0</div> <div id="used_amount" class="form-control col-lg-7 col-md-7 col-sm-7">0.0</div>
</div> </div>
<hr> <hr>
</div> </div>
</div> </div>
</div> </div>
<!-- <% if @dingacount > 0 %> <!-- <% if @payparcount > 0 %>
<p class="">Last time rebate amount is <%= @dingacount %></p> <p class="">Last time rebate amount is <%= @payparcount %></p>
<% end %> <% end %>
<p class="">You can rebate upto <span style="color:red;" id="food_prices"><%= @redeem_prices %></span></p> --> <p class="">You can rebate upto <span style="color:red;" id="food_prices"><%= @payment_prices %></span></p> -->
</div> </div>
<div class="col-lg-6 col-md-6 col-sm-6"> <div class="col-lg-6 col-md-6 col-sm-6">
@@ -92,7 +92,7 @@
<div class="cashier_number long left" data-value="10000" data-type="add">10000</div> <div class="cashier_number long left" data-value="10000" data-type="add">10000</div>
</div> </div>
<div class="row bottom m-l-5"> <div class="row bottom m-l-5">
<div class="pay purple left" id="dinga">Pay</div> <div class="pay purple left" id="dinga_payment">Pay</div>
</div> </div>
</div> </div>
@@ -106,15 +106,43 @@
</div> </div>
</div> </div>
</div> </div>
<!-- customer light box -->
<div class="modal fade" id="is_paymemberModal" tabindex="-1" role="dialog">
<div class="modal-dialog modal-md" role="document">
<div class="modal-content">
<div class="modal-header">
<h1 class="modal-title" id="is_paymemberModalLabel">Are you Member?</h1>
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
</div>
<div class="modal-body">
<input type="hidden" name="paypar_account_no" id="paypar_account_no" />
<input type="hidden" name="qr_code" id="qr_code" />
<div class="row text-center m-t-20">
<div class="col-lg-6 col-md-6 col-sm-6 col-xs-6">
<button type="button" class="btn btn-lg btn-link bg-primary waves-effect btn_member">Card Member</button>
</div>
<div class="col-lg-6 col-md-6 col-sm-6 col-xs-6">
<button type="button" class="btn btn-lg btn-link bg-primary waves-effect btn_qr_code">QR Code</button>
</div>
</div>
</div>
<div class="modal-footer"></div>
</div>
</div>
</div>
<script type="text/javascript"> <script type="text/javascript">
var cashier_type = "<%= @cashier_type %>"; var cashier_type = "<%= @cashier_type %>";
$(document).ready(function() { $(document).ready(function() {
setHeaderBreadCrumb(_REDEEM_PAYMENT_); setHeaderBreadCrumb(_DINGA_);
if(localStorage.getItem("cash") == null || localStorage.getItem("cash") == 'null'){} if(localStorage.getItem("cash") == null || localStorage.getItem("cash") == 'null'){}
else { else {
$('#redeemamt').attr("value",parseFloat("<%= @redeem_prices %>") - parseFloat(localStorage.getItem("cash"))); $('#paymentamt').attr("value",parseFloat("<%= @payment_prices %>") - parseFloat(localStorage.getItem("cash")));
} }
}); });
$(document).on('click', '.cashier_number', function(event){ $(document).on('click', '.cashier_number', function(event){
event.stopPropagation(); event.stopPropagation();
event.preventDefault(); event.preventDefault();
@@ -148,7 +176,7 @@
$('#used_amount').text(cash.substr(0,cash.length-1)); $('#used_amount').text(cash.substr(0,cash.length-1));
break; break;
case 'nett': case 'nett':
var remain_amount = $('#redeemamt').val(); var remain_amount = $('#paymentamt').val();
$('#used_amount').text(remain_amount); $('#used_amount').text(remain_amount);
break; break;
@@ -159,22 +187,82 @@
} }
}); });
$("#dinga").click(function(){ $("#dinga_payment").click(function(){
valid_amount = $("#valid_amount").val(); valid_amount = $("#valid_amount").val();
sale_id = $("#valid_amount").attr('data-value'); sale_id = $("#valid_amount").attr('data-value');
membership_id = $("#valid_amount").attr('data-member-value'); membership_id = $("#valid_amount").attr('data-member-value');
redeem_amount = parseFloat($("#used_amount").text()); payment_amount = parseFloat($("#used_amount").text());
if(redeem_amount<=0 ){ if((membership_id!=undefined) && (membership_id!="") && (membership_id > 0)){
swal ( "Oops" , "Please type valid amount!" , "warning" ); if(payment_amount<=0 ){
}else if(valid_amount< redeem_amount){ swal ( "Oops" , "Please type valid amount!" , "warning" );
swal ( "Oops" , "Insufficient Amount!" , "warning" ); }else if(valid_amount< payment_amount){
swal ( "Oops" , "Insufficient Amount!" , "warning" );
}else{
if(payment_amount <= "<%= @payment_prices %>"){
$(this).off("click");
$.ajax({
type: "POST",
url: "<%=origami_payment_dinga_path%>",
data: {payment_amount:payment_amount,membership_id:membership_id,sale_id:sale_id,transaction_ref:""},
success: function(result){
if(result.status == true){
swal({
title: "Information!",
text: result.message,
html: true,
closeOnConfirm: false,
closeOnCancel: false,
allowOutsideClick: false
}, function () {
window.location.href = '/origami/sale/'+ sale_id + "/"+cashier_type+"/payment"
});
}else{
swal ( "Information" , result.message);
}
}
})
}else {
swal ( "Oops" , "Payment Amount is over!" , "warning" );
}
}
}else{ }else{
if(redeem_amount <= "<%= @redeem_prices %>"){ $("#is_paymemberModal").modal({show : true, backdrop: false, keyboard : false});
$(this).off("click"); }
$.ajax({ });
// Read Card Reader
$(".btn_member").on('click', function(){
var cardNo = "";
var customer_id = '';
var customer_name = '';
var membership_id = '';
var membership_type = '';
var sale_id = $("#sale_id").text() || 0;
var customer_mamber_card_no = 0;
$("#is_paymemberModal").hide();
$("#sxModal").show();
setTimeout(function(){
getCardNo();
$("#sxModal").hide();
customer_mamber_card_no = $("#paypar_account_no").val();
if(sale_id != 0 && customer_mamber_card_no != 0){
$.ajax({
type: "POST",
url: "/origami/"+sale_id+"/send_account" ,
data: { account_no : customer_mamber_card_no, amount : payment_amount, receipt_no : receipt_no},
dataType: "json",
success: function(data) {
if (data.status == true) {
var valid_amount = parseFloat(data.old_balance_amount) - parseFloat(data.reload_amount);
$("#valid_amount").val(parseFloat(valid_amount));
$.ajax({
type: "POST", type: "POST",
url: "<%=origami_payment_dinga_path%>", url: "<%=origami_payment_dinga_path%>",
data: {redeem_amount:redeem_amount,membership_id:membership_id,sale_id:sale_id}, data: {payment_amount:payment_amount,membership_id:0,sale_id:sale_id,transaction_ref:data.transaction_ref},
success: function(result){ success: function(result){
if(result.status == true){ if(result.status == true){
swal({ swal({
@@ -185,17 +273,151 @@
closeOnCancel: false, closeOnCancel: false,
allowOutsideClick: false allowOutsideClick: false
}, function () { }, function () {
window.location.href = '/origami/sale/'+ sale_id + "/"+cashier_type+"/payment" window.location.href = '/origami/sale/'+ sale_id + "/"+cashier_type+"/payment";
}); });
}else{ }else{
swal ( "Information" , result.message); swal ( "Information" , result.message);
} }
} }
}) });
}else { }else{
swal ( "Oops" , "Redeem Amount is over!" , "warning" ); swal({
} title: 'Oops',
} text: data.message.toString(),
type: 'error',
html: true,
closeOnConfirm: false,
closeOnCancel: false,
allowOutsideClick: false
}, function () {
window.location.href = '/origami/sale/'+ sale_id +"/"+cashier_type + "/payment/others_payment/DINGA";
});
}
}
});
}
},100);
});
// Read NFC card no from java
function getCardNo(){
code2lab.readNFC();
}
// get CardNo from Java
function setCardNo(cardNo){
if(cardNo.length == 16){
$("#paypar_account_no").val(cardNo);
}
}
// QR Code Reader
$(".btn_qr_code").on('click', function(e){
$("#is_memberModal").hide();
var code = "";
var customer_id = '';
var customer_name = '';
var membership_id = '';
var membership_type = '';
setTimeout(function(){
code=getQRCode();
if(sale_id != 0 && code != ""){
$.ajax({
type: "POST",
url: "/origami/"+sale_id+"/send_account" ,
data: { account_no : code, amount : payment_amount, receipt_no : receipt_no},
dataType: "json",
success: function(data) {
if (data.status == true) {
var valid_amount = parseFloat(data.old_balance_amount) - parseFloat(data.reload_amount);
$("#valid_amount").val(parseFloat(valid_amount));
$.ajax({
type: "POST",
url: "<%=origami_payment_paymal_path%>",
data: {payment_amount:payment_amount,membership_id:0,sale_id:sale_id,transaction_ref:data.transaction_ref},
success: function(result){
if(result.status == true){
swal({
title: "Information!",
text: result.message,
html: true,
closeOnConfirm: false,
closeOnCancel: false,
allowOutsideClick: false
}, function () {
window.location.href = '/origami/sale/'+ sale_id + "/"+cashier_type+"/payment";
});
}else{
swal ( "Information" , result.message);
}
}
});
}else{
swal({
title: 'Oops',
text: data.message.toString(),
type: 'error',
html: true,
closeOnConfirm: false,
closeOnCancel: false,
allowOutsideClick: false
}, function () {
window.location.href = '/origami/sale/'+ sale_id +"/"+cashier_type + "/payment/others_payment/DINGA";
});
}
}
});
}
},100);
});
// Read qrcode from java
function getQRCode(){
return code2lab.readQRCode();
$("#qr_code").val(code);
}
function update_sale(membership_id, customer_id, customer_name, sale_id) {
var customer="";
if(customer_name != ""){
customer = '(' + customer_name + ')';
}
swal({
title: "Confirmation !",
text: 'Are You Sure to assign this customer' + customer + '!',
showCancelButton: true,
confirmButtonColor: "green",
confirmButtonText: "Yes!",
cancelButtonClass: 'btn btn-danger',
closeOnConfirm: false,
}, function () {
$.ajax({
type: "POST",
url: "/origami/"+sale_id+"/"+cashier_type+"/customers/update_sale" ,
data: {customer_id:customer_id,sale_id:sale_id},
dataType: "json",
success: function(data) {
if(data.status == true)
{
//change customer detail
$("#customer_name").html(customer_name);
$("#membership_id").html(membership_id);
window.location.href = '/origami/sale/'+sale_id+'/'+cashier_type+'/payment/';
}else{
swal("Alert!", "Record not found!", "error");
location.reload();
}
}
});
});
}
$("#sxModal .btn_cancel").on('click',function(){
$("#sxModal").hide();
}); });
</script> </script>

View File

@@ -13,6 +13,7 @@
<div class="col-lg-5 col-md-5 col-sm-5"> <div class="col-lg-5 col-md-5 col-sm-5">
<div class="card m-l-10 m-t-10" style="padding:0px 20px;"> <div class="card m-l-10 m-t-10" style="padding:0px 20px;">
<div class="rebate-form"> <div class="rebate-form">
<input type="hidden" name="receipt_no" id="receipt_no" value="<%= @receipt_no%>">
<div class="row"> <div class="row">
<div class="form-group col-lg-12 col-md-12 col-sm-12"> <div class="form-group col-lg-12 col-md-12 col-sm-12">
<label class="">You can pay up to </label> <label class="">You can pay up to </label>
@@ -108,11 +109,12 @@
</div> </div>
<!-- customer light box --> <!-- customer light box -->
<div class="modal fade" id="is_memberModal" tabindex="-1" role="dialog"> <div class="modal fade" id="is_paymemberModal" tabindex="-1" role="dialog">
<div class="modal-dialog modal-md" role="document"> <div class="modal-dialog modal-md" role="document">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<h1 class="modal-title" id="is_memberModalLabel">Are you Member?</h1> <h1 class="modal-title" id="is_paymemberModalLabel">Are you Member?</h1>
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<input type="hidden" name="paypar_account_no" id="paypar_account_no" /> <input type="hidden" name="paypar_account_no" id="paypar_account_no" />
@@ -191,18 +193,18 @@
sale_id = $("#valid_amount").attr('data-value'); sale_id = $("#valid_amount").attr('data-value');
membership_id = $("#valid_amount").attr('data-member-value'); membership_id = $("#valid_amount").attr('data-member-value');
payment_amount = parseFloat($("#used_amount").text()); payment_amount = parseFloat($("#used_amount").text());
if(payment_amount<=0 ){ if((membership_id!=undefined) && (membership_id!="") && (membership_id > 0)){
swal ( "Oops" , "Please type valid amount!" , "warning" ); if(payment_amount<=0 ){
}else if(valid_amount< payment_amount){ swal ( "Oops" , "Please type valid amount!" , "warning" );
swal ( "Oops" , "Insufficient Amount!" , "warning" ); }else if(valid_amount< payment_amount){
}else{ swal ( "Oops" , "Insufficient Amount!" , "warning" );
if((membership_id!=undefined) && (membership_id!="") && (membership_id > 0)){ }else{
if(payment_amount <= "<%= @payment_prices %>"){ if(payment_amount <= "<%= @payment_prices %>"){
$(this).off("click"); $(this).off("click");
$.ajax({ $.ajax({
type: "POST", type: "POST",
url: "<%=origami_payment_paymal_path%>", url: "<%=origami_payment_paymal_path%>",
data: {payment_amount:payment_amount,membership_id:membership_id,sale_id:sale_id}, data: {payment_amount:payment_amount,membership_id:membership_id,sale_id:sale_id,transaction_ref:""},
success: function(result){ success: function(result){
if(result.status == true){ if(result.status == true){
swal({ swal({
@@ -224,23 +226,21 @@
}else { }else {
swal ( "Oops" , "Payment Amount is over!" , "warning" ); swal ( "Oops" , "Payment Amount is over!" , "warning" );
} }
}else{
$("#is_memberModal").modal({show : true, backdrop: false, keyboard : false});
} }
}else{
$("#is_paymemberModal").modal({show : true, backdrop: false, keyboard : false});
} }
}); });
// Read Card Reader // Read Card Reader
$(".btn_member").on('click', function(){ $(".btn_member").on('click', function(){
var cardNo = ""; var cardNo = "";
var customer_id = '';
var customer_name = '';
var membership_id = '';
var membership_type = '';
var sale_id = $("#sale_id").text() || 0; var sale_id = $("#sale_id").text() || 0;
var receipt_no = $("#receipt_no").val() || "";
var customer_mamber_card_no = 0; var customer_mamber_card_no = 0;
var payment_amount = parseFloat($("#used_amount").text());
$("#is_memberModal").hide(); $("#is_paymemberModal").hide();
$("#sxModal").show(); $("#sxModal").show();
setTimeout(function(){ setTimeout(function(){
getCardNo(); getCardNo();
@@ -250,18 +250,48 @@
if(sale_id != 0 && customer_mamber_card_no != 0){ if(sale_id != 0 && customer_mamber_card_no != 0){
$.ajax({ $.ajax({
type: "POST", type: "POST",
url: "/origami/"+sale_id+"/get_customer" , url: "/origami/"+sale_id+"/send_account" ,
data: { filter : customer_mamber_card_no ,type :"card"}, data: { account_no : customer_mamber_card_no, amount : payment_amount, receipt_no : receipt_no},
dataType: "json", dataType: "json",
success: function(data) { success: function(data) {
if (data[0].customer_id == false) { if (data.status == true) {
swal("Alert!", data[0].message, "error"); var valid_amount = parseFloat(data.old_balance_amount) - parseFloat(data.reload_amount);
$("#valid_amount").val(parseFloat(valid_amount));
$.ajax({
type: "POST",
url: "<%=origami_payment_paymal_path%>",
data: {payment_amount:payment_amount,membership_id:0,sale_id:sale_id,transaction_ref:data.transaction_ref},
success: function(result){
if(result.status == true){
swal({
title: "Information!",
text: result.message,
html: true,
closeOnConfirm: false,
closeOnCancel: false,
allowOutsideClick: false
}, function () {
window.location.href = '/origami/sale/'+ sale_id + "/"+cashier_type+"/payment";
});
}else{
swal ( "Information" , result.message);
}
}
});
}else{ }else{
customer_id = data[0].customer_id; swal({
customer_name = data[0].name; title: 'Oops',
membership_id = data[0].membership_id; text: data.message.toString(),
membership_type = data[0].membership_type; type: 'error',
update_sale(membership_id, customer_id, customer_name,sale_id); html: true,
closeOnConfirm: false,
closeOnCancel: false,
allowOutsideClick: false
}, function () {
window.location.href = '/origami/sale/'+ sale_id +"/"+cashier_type + "/payment/others_payment/PAYMAL";
});
} }
} }
@@ -284,31 +314,59 @@
// QR Code Reader // QR Code Reader
$(".btn_qr_code").on('click', function(e){ $(".btn_qr_code").on('click', function(e){
$("#is_memberModal").hide(); $("#is_paymemberModal").hide();
var code = ""; var code = "";
var customer_id = ''; var sale_id = $("#sale_id").text() || 0;
var customer_name = ''; var receipt_no = $("#receipt_no").val() || "";
var membership_id = ''; var payment_amount = parseFloat($("#used_amount").text());
var membership_type = '';
setTimeout(function(){ setTimeout(function(){
code=getQRCode(); code=getQRCode();
if(sale_id != 0 && code != ""){ if(sale_id != 0 && code != ""){
$.ajax({ $.ajax({
type: "POST", type: "POST",
url: "/origami/"+sale_id+"/get_customer" , url: "/origami/"+sale_id+"/send_account" ,
data: { filter : code ,type :"card"}, data: { account_no : code, amount : payment_amount, receipt_no : receipt_no},
dataType: "json", dataType: "json",
success: function(data) { success: function(data) {
if (data[0].customer_id == false) { if (data.status == true) {
swal("Alert!", data[0].message, "error"); var valid_amount = parseFloat(data.old_balance_amount) - parseFloat(data.reload_amount);
}else{ $("#valid_amount").val(parseFloat(valid_amount));
customer_id = data[0].customer_id;
customer_name = data[0].name;
membership_id = data[0].membership_id;
membership_type = data[0].membership_type;
update_sale(membership_id, customer_id, customer_name,sale_id);
}
$.ajax({
type: "POST",
url: "<%=origami_payment_paymal_path%>",
data: {payment_amount:payment_amount,membership_id:0,sale_id:sale_id,transaction_ref:data.transaction_ref},
success: function(result){
if(result.status == true){
swal({
title: "Information!",
text: result.message,
html: true,
closeOnConfirm: false,
closeOnCancel: false,
allowOutsideClick: false
}, function () {
window.location.href = '/origami/sale/'+ sale_id + "/"+cashier_type+"/payment";
});
}else{
swal ( "Information" , result.message);
}
}
});
}else{
swal({
title: 'Oops',
text: data.message.toString(),
type: 'error',
html: true,
closeOnConfirm: false,
closeOnCancel: false,
allowOutsideClick: false
}, function () {
window.location.href = '/origami/sale/'+ sale_id +"/"+cashier_type + "/payment/others_payment/PAYMAL";
});
}
} }
}); });
} }
@@ -321,42 +379,6 @@
$("#qr_code").val(code); $("#qr_code").val(code);
} }
function update_sale(membership_id, customer_id, customer_name, sale_id) {
var customer="";
if(customer_name != ""){
customer = '(' + customer_name + ')';
}
swal({
title: "Confirmation !",
text: 'Are You Sure to assign this customer' + customer + '!',
showCancelButton: true,
confirmButtonColor: "green",
confirmButtonText: "Yes!",
cancelButtonClass: 'btn btn-danger',
closeOnConfirm: false,
}, function () {
$.ajax({
type: "POST",
url: "/origami/"+sale_id+"/"+cashier_type+"/customers/update_sale" ,
data: {customer_id:customer_id,sale_id:sale_id},
dataType: "json",
success: function(data) {
if(data.status == true)
{
//change customer detail
$("#customer_name").html(customer_name);
$("#membership_id").html(membership_id);
window.location.href = '/origami/sale/'+sale_id+'/'+cashier_type+'/payment/';
}else{
swal("Alert!", "Record not found!", "error");
location.reload();
}
}
});
});
}
$("#sxModal .btn_cancel").on('click',function(){ $("#sxModal .btn_cancel").on('click',function(){
$("#sxModal").hide(); $("#sxModal").hide();
}); });

View File

@@ -222,6 +222,7 @@ scope "(:locale)", locale: /en|mm/ do
post '/:sale_id/:type/customers/update_sale', to: "customers#update_sale_by_customer" # update customer id in sale table post '/:sale_id/:type/customers/update_sale', to: "customers#update_sale_by_customer" # update customer id in sale table
post '/:sale_id/get_customer' => "customers#get_customer" post '/:sale_id/get_customer' => "customers#get_customer"
post '/:sale_id/send_account' => "customers#send_account"
get '/:id/:type/surveys', to: "surveys#new" get '/:id/:type/surveys', to: "surveys#new"
match '/:id/create_survey', to: "surveys#create", as: "create_surveys", via: [:post, :patch, :put] match '/:id/create_survey', to: "surveys#create", as: "create_surveys", via: [:post, :patch, :put]