change ordr reservation api

This commit is contained in:
phyusin
2018-04-11 14:38:16 +06:30
parent 27e70f1a86
commit 9b2312d3ba
8 changed files with 269 additions and 68 deletions

View File

@@ -336,8 +336,24 @@ function resCardSaleTrans(card_sale_trans_id,cmd_type,payment_type, bnk_bill_amo
}
});
}else{
if(payment_type!="master"){
payment_type = payment_type.toUpperCase();
}else{
payment_type = "Master";
}
$("#loading_wrapper").hide();
swal ( "Oops" , resMsg.toString() , "error" );
swal({
title: 'Oops',
text: resMsg.toString(),
type: 'error',
html: true,
closeOnConfirm: false,
closeOnCancel: false,
allowOutsideClick: false
}, function () {
window.location.href = '/origami/sale/'+ sale_id +"/"+cashier_type + "/payment/others_payment/"+payment_type;
});
}
}

View File

@@ -6,8 +6,15 @@ class Api::OrderReserve::OrderReservationController < Api::ApiController
def check_customer
customer_id = 0
if !params[:name]
render :json => { :status => false, :message => "name is required!" }
elsif !params[:email]
render :json => { :status => false, :message => "email is required!" }
elsif !params[:membership_id]
render :json => { :status => false, :message => "membership_id is required!" }
end
check_customer = Customer.find_by_email_and_contact_no_and_membership_id(params[:email],params[:contact_no],params[:membership_id])
check_customer = Customer.find_by_email_and_membership_id(params[:email],params[:membership_id])
if !check_customer.nil?
customer_id = check_customer.customer_id
else
@@ -24,6 +31,10 @@ class Api::OrderReserve::OrderReservationController < Api::ApiController
render :json => { :status => false, :message => "cus_info is required!" }
elsif !params[:requested_time]
render :json => { :status => false, :message => "requested_time is required!" }
elsif !params[:callback_url]
render :json => { :status => false, :message => "callback_url is required!" }
elsif !params[:reference]
render :json => { :status => false, :message => "reference is required!" }
elsif !params[:order_type]
render :json => { :status => false, :message => "order_type is required!" }
elsif params[:order_type] == ORDER || params[:order_type] == ORDER_RESERVATION
@@ -32,23 +43,25 @@ class Api::OrderReserve::OrderReservationController < Api::ApiController
else
status = true
end
elsif !params[:payment_info]
render :json => { :status => false, :message => "payment_info is required!" }
elsif !params[:delivery_info]
render :json => { :status => false, :message => "delivery_info is required!" }
elsif params[:order_type] == RESERVATION || params[:order_type] == ORDER_RESERVATION
if !params[:reservation_info]
render :json => { :status => false, :message => "reservation_info is required!" }
else
status = true
end
elsif !params[:callback_url]
render :json => { :status => false, :message => "callback_url is required!" }
elsif !params[:payment_info]
render :json => { :status => false, :message => "payment_info is required!" }
elsif !params[:delivery_info]
render :json => { :status => false, :message => "delivery_info is required!" }
end
if status == true
OrderReservation.addOrderReservationInfo(params)
render :json => { :status => true, :message => "Order reservation is successfully created!" }
order_reservation_id, flag = OrderReservation.addOrderReservationInfo(params)
if flag
render :json => { :status => true, :order_reservation_id => order_reservation_id, :message => "Order reservation is successfully created!" }
else
render :json => { :status => true, :order_reservation_id => order_reservation_id, :message => "Order reservation is already existed!" }
end
end
end
end

View File

@@ -8,36 +8,43 @@ class OrderReservation < ApplicationRecord
belongs_to :delivery
def self.addOrderReservationInfo(params)
order_reservation = OrderReservation.new
order_reservation.order_reservation_type = params[:order_type]
order_reservation.customer_id = params[:cus_info]
order_reservation.requested_time = Time.parse(params[:requested_time]).utc.strftime("%Y-%m-%d %H:%M:%S")
if params[:order_info]
order_reservation.callback_url = params[:order_info][:callback_url]
order_reservation.item_count = params[:order_info][:items].count
order_reservation.payment_type = params[:payment_info][:payment_type]
order_reservation.payment_status = params[:payment_info][:payment_status]
order_reservation.payment_ref = params[:payment_info][:payment_ref]
order_reservation.total_amount = params[:payment_info][:sub_total]
order_reservation.total_tax = params[:payment_info][:total_tax]
order_reservation.discount_amount = params[:payment_info][:discount_amount]
order_reservation.grand_total = params[:payment_info][:grand_total]
order_reservation.order_remark = params[:order_info][:order_remark]
end
if params[:reservation_info]
order_reservation.total_customer = params[:reservation_info][:total_user]
order_reservation.reservation_remark = params[:reservation_info][:reservation_note]
end
order_reservation.save!
if params[:order_info][:items]
params[:order_info][:items].each do |oritem|
OrderReservationItem.process_order_reservation_item(oritem[:product_code],oritem[:item_instance_code],oritem[:product_name],oritem[:product_alt_name],
oritem[:account_id],oritem[:qty],oritem[:price],oritem[:unit_price],
oritem[:options],nil,order_reservation.id)
check_order_reservation = OrderReservation.where("transaction_ref = ?",params[:reference])
if check_order_reservation.empty?
order_reservation = OrderReservation.new
order_reservation.order_reservation_type = params[:order_type]
order_reservation.customer_id = params[:cus_info]
order_reservation.requested_time = Time.parse(params[:requested_time]).utc.strftime("%Y-%m-%d %H:%M:%S")
order_reservation.callback_url = params[:callback_url]
order_reservation.transaction_ref = params[:reference]
if params[:order_info]
order_reservation.item_count = params[:order_info][:items].count
order_reservation.payment_type = params[:payment_info][:payment_type]
order_reservation.payment_status = params[:payment_info][:payment_status]
order_reservation.payment_ref = params[:payment_info][:payment_ref]
order_reservation.total_amount = params[:payment_info][:sub_total]
order_reservation.total_tax = params[:payment_info][:total_tax]
order_reservation.discount_amount = params[:payment_info][:discount_amount]
order_reservation.grand_total = params[:payment_info][:grand_total]
order_reservation.order_remark = params[:order_info][:order_remark]
end
end
if params[:delivery_info]
Delivery.addDeliveryInfo(params[:delivery_info],order_reservation.id)
if params[:reservation_info]
order_reservation.total_customer = params[:reservation_info][:total_user]
order_reservation.reservation_remark = params[:reservation_info][:reservation_note]
end
order_reservation.save!
if params[:order_info][:items]
params[:order_info][:items].each do |oritem|
OrderReservationItem.process_order_reservation_item(oritem[:product_code],oritem[:item_instance_code],oritem[:product_name],oritem[:product_alt_name],
oritem[:account_id],oritem[:qty],oritem[:price],oritem[:unit_price],
oritem[:options],nil,order_reservation.id)
end
end
if params[:delivery_info]
Delivery.addDeliveryInfo(params[:delivery_info],order_reservation.id)
end
return order_reservation.id, true
else
return check_order_reservation[0].id, false
end
end

View File

@@ -106,6 +106,32 @@
</div>
</div>
</div>
<!-- customer light box -->
<div class="modal fade" id="is_memberModal" 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_memberModalLabel">Are you Member?</h1>
</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">
var cashier_type = "<%= @cashier_type %>";
$(document).ready(function() {
@@ -170,33 +196,168 @@
}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_paymal_path%>",
data: {payment_amount:payment_amount,membership_id:membership_id,sale_id:sale_id},
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"
});
if((membership_id!=undefined) && (membership_id!="") && (membership_id > 0)){
if(payment_amount <= "<%= @payment_prices %>"){
$(this).off("click");
$.ajax({
type: "POST",
url: "<%=origami_payment_paymal_path%>",
data: {payment_amount:payment_amount,membership_id:membership_id,sale_id:sale_id},
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 ( "Information" , result.message);
}
}
}
})
}else {
swal ( "Oops" , "Payment Amount is over!" , "warning" );
})
}else {
swal ( "Oops" , "Payment Amount is over!" , "warning" );
}
}else{
$("#is_memberModal").modal({show : true, backdrop: false, keyboard : false});
}
}
});
// 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_memberModal").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+"/get_customer" ,
data: { filter : customer_mamber_card_no ,type :"card"},
dataType: "json",
success: function(data) {
if (data[0].customer_id == false) {
swal("Alert!", data[0].message, "error");
}else{
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);
}
}
});
}
},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+"/get_customer" ,
data: { filter : code ,type :"card"},
dataType: "json",
success: function(data) {
if (data[0].customer_id == false) {
swal("Alert!", data[0].message, "error");
}else{
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);
}
}
});
}
},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>

View File

@@ -20,11 +20,11 @@ class ActionController::Base
end
else
#check for license file
if check_license
current_license(ENV["SX_PROVISION_URL"])
else
redirect_to activate_path
end
# if check_license
# current_license(ENV["SX_PROVISION_URL"])
# else
# redirect_to activate_path
# end
end
end

View File

@@ -6,6 +6,7 @@ class CreateOrderReservations < ActiveRecord::Migration[5.1]
t.string :customer_id, :null => false
t.datetime :requested_time, :null => false
t.string :callback_url, :null => false
t.string :transaction_ref, :null => false
t.integer :item_count, :null => false, :default => 0
t.integer :total_customer
t.string :payment_type
@@ -18,6 +19,7 @@ class CreateOrderReservations < ActiveRecord::Migration[5.1]
t.string :status, :null => false, :default => "new"
t.string :order_remark
t.string :reservation_remark
t.timestamps
end
end

View File

@@ -16,6 +16,7 @@ class CreateOrderReservationItems < ActiveRecord::Migration[5.1]
t.string :remark
t.string :options
t.boolean :taxable, :null => false, :default => true
t.timestamps
end
end

View File

@@ -9,6 +9,7 @@ class CreateDeliveries < ActiveRecord::Migration[5.1]
t.string :direction_address
t.string :delivery_fee
t.string :remark
t.timestamps
end
end