Merge branch 'master' of bitbucket.org:code2lab/sxrestaurant

This commit is contained in:
Aung Myo
2017-09-19 14:32:52 +06:30
33 changed files with 1501 additions and 991 deletions

View File

@@ -19,8 +19,6 @@
$(document).ready(function(){
$(".nav-completed").on("click", function(){
$("#completed").removeClass('hide')
$(".oqs_append").addClass('hide')
@@ -38,8 +36,6 @@ $(document).ready(function(){
show_details(url);
}); //End Click
function show_details(url){

View File

@@ -8,12 +8,6 @@ $(function(){
});
//End menu category Click
$("#set_change_qty").change(function(){
qty = $(this).val();
price = $("#set_total_price").text();
$("#set_total_price").text(qty*price);
});
//show menu item list when click menu category
function show_menu_item_list(url_item){
var menu_list = $('.menu_items_list');
@@ -107,7 +101,7 @@ $(function(){
$(document).on('click', '.set_item_box', function(event){
$(".instance-list").empty();
$(".options-list").empty();
change_qty_plus_minus("set_count","set_plus","set_minus");
data = $(this).parent().children().children('.add_icon');
instances = $(this).data('instance');
@@ -152,8 +146,10 @@ $(function(){
$('#set_item_instances').text(instances);
$('#set_name').text(data.attr('data-name'));
$('#set_item_code').text(data.attr('data-item-code'));
$('#set_total_price').text(data.attr('data-price'));
// $('#set_total_price').text(data.attr('data-price'));
$('#set_total_price').text(0);
$('#set_unit_price').text(data.attr('data-price'));
// $('#set_unit_price').text(0);
});
// click instance for add item set
$(document).on('click', '.instance_box', function(event){
@@ -179,7 +175,8 @@ $(function(){
sub_total = $('#set_total_price').text();
name = $(this).data('name');
price = $(this).data('price');
qty = $('#set_change_qty').val();
// qty = $('#set_change_qty').val();
qty = document.getElementById("set_count").value;
total = qty*price;
var total_price = +sub_total - +total;
$(this).removeClass('selected-instance');
@@ -187,21 +184,24 @@ $(function(){
$(this).removeAttr('data-options');
$('#instance_option').text('')
}else {
sub_total = $('#set_total_price').text();
name = $(this).data('name');
price = $(this).data('price');
qty = $('#set_change_qty').val();
// qty = $('#set_change_qty').val();
qty = document.getElementById("set_count").value;
total = qty*price;
var total_price = +sub_total + +total;
$(this).addClass('selected-instance');
}
$('#set_unit_price').text(price);
$('#set_total_price').text(total_price);
}); //End selecct attribute buttom
// click add order
$(document).on('click', '.set_order', function(event){
total_price = $('#set_total_price').text();
qty = parseInt($('#set_change_qty').val());
qty = parseInt($('#set_count').val());
item_code = $('#set_item_code').text();
item_name = $('#set_name').text();
@@ -253,6 +253,8 @@ $(function(){
$('.add_to_order').removeAttr('data-attributes');
$('.add_to_order').removeAttr('data-options');
change_qty_plus_minus("count","plus","minus");
data = $(this).parent().children().children('.add_icon');
$('#total_price').text(data.attr('data-price'));
@@ -275,18 +277,41 @@ $(function(){
$(value).each(function(i){
options = value[i];
instance_attributes.push(options);
// $.ajax({
// type: "GET",
// url: '../../api/restaurant/menu_item_attributes/'+value[i],
// data: {id:value[i]},
// success:function(result){
// options = result["name"];
// instance_attributes.push(options);
// }
// });
});
}
// selected_arr = []
// $(selected_item).each(function(i){
// $.ajax({
// type: "GET",
// url: '../../api/restaurant/menu_item_attributes/'+selected_item[i],
// data: {id:selected_item[i]},
// success:function(result){
// name = result["name"];
// selected_arr.push(name);
// }
// });
// });
for(var field in attributes) {
value = attributes[field]["values"];
type = attributes[field]["type"]
row = "<h4>"+attributes[field]["type"]+"</h4>"
row = "<h4>"+attributes[field]["type"]+"</h4>";
$(value).each(function(i){
disabled = ""
status ="";
if(parseInt(jQuery.inArray(value[i], selected_item)) !== -1){
status = "selected-attribute";
}
@@ -326,6 +351,8 @@ $(function(){
// click select option icon for add
$(document).on('click', '.attribute_btn', function(event){
$('.change_qty').val(1);
value = $(this).data('value');
type = $(this).data('type');
instances = $(this).data('instances');
@@ -345,7 +372,7 @@ $(function(){
var selected_attr = get_selected_attributes('selected-attribute');
qty = $('#change_qty').val();
qty = $('.change_qty').val();
for(var field in instances) {
item_attr = instances[field].values;
@@ -652,24 +679,72 @@ $(function(){
}
});
// Get Selected Class
function change_qty_plus_minus(id,plus,minus) {
var count = 1;
var countEl = document.getElementById("count");
$("#plus").on("click", function(){
var countEl = document.getElementById(id);
$('#'+plus).on("click", function(){
count++;
countEl.value = count;
if (id == "count") {
price = $("#unit_price").text();
$("#total_price").text(count*price);
}else{
var item_row = $('.selected-instance');
price = $("#set_unit_price").text();
set_total_price = $("#set_total_price").text();
if (item_row.length > 1) {
total = 0 ;
$(item_row).each(function(i){
total += count * $(item_row[i]).attr('data-price');
total_price = total;
});
$("#minus").on("click", function(){
}else{
total_price = count*price;
}
$("#set_total_price").text(total_price);
}
});
$('#'+minus).on("click", function(){
if (count > 1) {
count--;
countEl.value = count;
if (id=="count") {
price = $("#unit_price").text();
$("#total_price").text(count*price);
}else{
var item_row = $('.selected-instance');
price = $("#set_unit_price").text();
set_total_price = $("#set_total_price").text();
if (item_row.length > 1) {
total = 0 ;
$(item_row).each(function(i){
total += count * $(item_row[i]).attr('data-price');
total_price = total;
});
}else{
total_price = count*price;
}
$("#set_total_price").text(total_price);
}
}
})
}
// $("#set_change_qty").change(function(){
// qty = $(this).val();
// price = $("#set_total_price").text();
// $("#set_total_price").text(qty*price);
// });
// $(".change_qty").change(function(){
// qty = $(this).val();

View File

@@ -82,3 +82,15 @@
border-radius: 100px;
z-index: 1101;
}
#container {
margin: 0px auto;
width: 480px;
height: 375px;
}
#videoElement {
width: 480px;
height: 375px;
}

View File

@@ -1,9 +1,12 @@
class Api::Restaurant::MenuItemAttributesController < Api::ApiController
skip_before_action :authenticate
#Description
# Pull the default menu details and also other available (active) menus
# Input Params - order_id
def index
@menu_attributes = MenuItemAttribute.all
end
def show
@attribute = MenuItemAttribute.find(params[:id])
end
end

View File

@@ -30,10 +30,19 @@ class Origami::AddordersController < BaseOrigamiController
else
@booking = nil
end
end
def get_menu_category ()
if (params[:id])
#Pull this menu
@menu = MenuCategory.find_by_id(params[:id])
return @menu
else
MenuCategory.current_menu
end
end
def create
Rails.logger.debug "Order Source - " + params[:order_source].to_s
Rails.logger.debug "Table ID - " + params[:table_id].to_s

View File

@@ -127,26 +127,34 @@ class Origami::DiscountsController < BaseOrigamiController
# Member Discount
def member_discount
sale_id = params[:sale_id]
# account_types = JSON.parse(params[:account_types])
account_types = Account.where("discount=?",true)
is_card = params[:is_card]
sub_total = params[:sub_total]
sale = Sale.find(sale_id)
price = SaleItem.calculate_price_by_accounts(sale.sale_items)
arr = Array.new;
# Check for Card Payment
is_card_payment = SaleItem.get_sale_payments_by_card(sale.sale_payments)
if is_card_payment != true
account_types = Account.where("discount=?",true)
table_id = sale.bookings[0].dining_facility_id
table_type = DiningFacility.find(table_id).type
# Get Prices for each accounts (eg: food, beverage)
account_price = SaleItem.calculate_price_by_accounts(sale.sale_items)
acc_prices = Array.new;
account_types.each do |at|
price.each do |pc|
account_price.each do |pc|
if pc[:name] == at.title && pc[:price]>0
str={type:pc[:name],amount:pc[:price]}
arr.push(str)
acc_prices.push(str)
end
end
end
generic_customer_id = sale.customer.membership_id
receipt_no = sale.receipt_no
membership = MembershipSetting.find_by_membership_type("paypar_url")
memberaction = MembershipAction.find_by_membership_type("member_discount")
@@ -156,7 +164,7 @@ class Origami::DiscountsController < BaseOrigamiController
url = membership.gateway_url.to_s + memberaction.gateway_url.to_s
# Check for items for Paypar Cloud
if arr.length > 0
if acc_prices.length > 0
begin
response = HTTParty.post(url,
:body => { account_no: nil,
@@ -164,31 +172,29 @@ class Origami::DiscountsController < BaseOrigamiController
campaign_type_id: campaign_type_id,
receipt_no: receipt_no,
merchant_uid:merchant_uid,
campaign_method:arr.to_json,
campaign_method:acc_prices.to_json,
total_sale_transaction_amount: sale.grand_total,
is_card: is_card,
auth_token:auth_token}.to_json,
:headers => {
'Content-Type' => 'application/json',
'Accept' => 'application/json'
}, :timeout => 10)
rescue HTTParty::Error
response = {:status=> false, :message => "Can't open membership server " }
response = {"status": false, "message": "Can't open membership server " }
rescue Net::OpenTimeout
response = {:status=> false, :message => "Can't open membership server " }
response = {"status": false, "message": "Can't open membership server " }
rescue OpenURI::HTTPError
response = {:status=> false, :message => "Can't open membership server " }
response = {"status": false, "message": "Can't open membership server " }
rescue SocketError
response = {:status=> false, :message => "Can't open membership server " }
response = {"status": false, "message": "Can't open membership server " }
end
else
response = {:status=> false, :message => "You have no selected discount item" }
response = {"status": false, "message": "You have no selected discount item" }
end
table_id = sale.bookings[0].dining_facility_id
table_type = DiningFacility.find(table_id).type
# Re-calc All Amount in Sale
if response["status"] == true
discount_amount = response["discount_earned"]
@@ -197,18 +203,15 @@ class Origami::DiscountsController < BaseOrigamiController
end
sale.compute_by_sale_items(sale_id, sale.sale_items, discount_amount, 'member_discount')
result = {:status=> "Success",:title=>"Member Discount", :table_id => table_id,:table_type => table_type }
end
if response["status"] == "500"
elsif response["status"] == "500"
result = {:status=> response["error"],:title=>"Alert", :table_id => table_id,:table_type => table_type }
end
if !response.nil?
if response[:status] == false
result = {:status=> response[:message],:title=>"Alert", :table_id => table_id,:table_type => table_type }
end
else
result = {:status=> response["message"],:title=>"Alert", :table_id => table_id,:table_type => table_type }
end
render :json => result.to_json
end #end Is Card Payment
end
#discount for selected order

View File

@@ -17,6 +17,9 @@ class Origami::JcbController < BaseOrigamiController
end
@can_jcb = total - @jcbcount - others
@member_discount = MembershipSetting.find_by_discount(1)
@sub_total = sale_data.total_amount
@membership_id = sale_data.customer.membership_id
end
def create

View File

@@ -16,6 +16,9 @@ class Origami::MasterController < BaseOrigamiController
end
end
@can_master = total - @mastercount - others
@member_discount = MembershipSetting.find_by_discount(1)
@sub_total = sale_data.total_amount
@membership_id = sale_data.customer.membership_id
end
def create

View File

@@ -8,6 +8,7 @@ class Origami::MpuController < BaseOrigamiController
total = sale_data.grand_total
@mpucount = 0
others = 0
sale_data.sale_payments.each do |sale_payment|
if sale_payment.payment_method == "mpu"
@mpucount = @mpucount + sale_payment.payment_amount
@@ -17,6 +18,9 @@ class Origami::MpuController < BaseOrigamiController
end
@can_mpu = total - @mpucount - others
@member_discount = MembershipSetting.find_by_discount(1)
@sub_total = sale_data.total_amount
@membership_id = sale_data.customer.membership_id
end
def create

View File

@@ -76,6 +76,8 @@ class Origami::PaymentsController < BaseOrigamiController
def show
sale_id = params[:sale_id]
@member_discount = MembershipSetting.find_by_discount(1)
if Sale.exists?(sale_id)
@cash = 0.0
@other = 0.0

View File

@@ -16,6 +16,9 @@ class Origami::VisaController < BaseOrigamiController
end
end
@can_visa = total - @visacount - others
@member_discount = MembershipSetting.find_by_discount(1)
@sub_total = sale_data.total_amount
@membership_id = sale_data.customer.membership_id
end
def create

View File

@@ -92,12 +92,14 @@ class Settings::MenuItemInstancesController < ApplicationController
category = MenuCategory.find(id)
# Bind for Item Sets
if params[:menu_item_instance][:item_sets].count > 1
if params[:menu_item_instance][:item_sets].count > 0
params[:menu_item_instance][:item_sets].delete_at(0)
sets = ItemSet.find(params[:menu_item_instance][:item_sets])
if sets.count > 0
if sets.count >= 0
# destroy all item sets for edit
@settings_menu_item_instances.item_sets.destroy
@settings_menu_item_instances.item_sets = sets
end
end

View File

@@ -75,12 +75,14 @@ class Settings::SetMenuItemsController < ApplicationController
params[:set_menu_item][:item_options].delete_at(0)
# Bind for Item Sets
if params[:set_menu_item][:item_sets].count > 1
if params[:set_menu_item][:item_sets].count > 0
params[:set_menu_item][:item_sets].delete_at(0)
sets = ItemSet.find(params[:set_menu_item][:item_sets])
if sets.count > 0
if sets.count >= 0
# destroy all item sets for edit
@settings_menu_item.item_sets.destroy
@settings_menu_item.item_sets = sets
end
end

View File

@@ -98,12 +98,14 @@ class Settings::SimpleMenuItemsController < ApplicationController
params[:simple_menu_item][:item_options].delete_at(0)
# Bind for Item Sets
if params[:simple_menu_item][:item_sets].count > 1
if params[:simple_menu_item][:item_sets].count > 0
params[:simple_menu_item][:item_sets].delete_at(0)
sets = ItemSet.find(params[:simple_menu_item][:item_sets])
if sets.count > 0
if sets.count >= 0
# destroy all item sets for edit
@settings_menu_item.item_sets.destroy
@settings_menu_item.item_sets = sets
end
end

View File

@@ -23,7 +23,7 @@ class Promotion < ApplicationRecord
end
def self.is_between_promo_datetime(current_day,current_time) #database is not local time
promoList = Promotion.where("(Date_Format(promo_start_date, 'YYYY-MM-DD') <=? AND Date_Format(promo_end_date, 'YYYY-MM-DD') >=?) AND (promo_start_hour < ? AND promo_end_hour > ?)", current_day, current_day, current_time, current_time)
promoList = Promotion.where("(Date_Format(promo_start_date, '%Y-%m-%d') <=? AND Date_Format(promo_end_date, '%Y-%m-%d') >=?) AND (promo_start_hour < ? AND promo_end_hour > ?)", current_day, current_day, current_time, current_time)
return promoList
end

View File

@@ -107,7 +107,17 @@ class SaleItem < ApplicationRecord
return price,type
end
# Check for Card Payment
def self.get_sale_payments_by_card(sale_payments)
# Check for Card Payment
sale_payments.each do |sp|
if sp.payment_method == "jcb" || sp.payment_method == "mpu" || sp.payment_method == "visa" || sp.payment_method == "master"
return true;
end
end
end
# def self.get_overall_discount(sale_id)
# price = 0.0
# item=SaleItem.where("product_code=?", sale_id)

View File

@@ -263,6 +263,8 @@ class SalePayment < ApplicationRecord
end
def sale_update_payment_status(paid_amount)
puts paid_amount
puts "parid Masssssssssssssssssssssssssssssssssssssssss"
#update amount_outstanding
self.sale.amount_received = self.sale.amount_received.to_f + paid_amount.to_f
self.sale.save!

View File

@@ -92,6 +92,7 @@ json.options opt_format
json.instances item.menu_item_instances do |is|
# Convert id to name for attributes
instance_attr = []
is.item_attributes.each do |ia|
# mItemAttr = MenuItemAttribute.find(is)
# instance_attr.push(ia)

View File

@@ -0,0 +1,8 @@
if(@attribute)
json.id @attribute.id
json.type @attribute.attribute_type
json.name @attribute.name
json.value @attribute.value
else
json.success false
end

View File

@@ -138,7 +138,29 @@
<div id="sxModal">
<div id="sxModal-Content"><h3>Card Tap</h3></div>
</div>
<!-- The modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="modalLabelLarge" aria-hidden="true">
<div class="modal-dialog modal-lg" style="margin-left:-380px">
<div class="modal-content">
<!-- <div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title" id="modalLabelLarge">Large Shoes</h4>
</div> -->
<div class="modal-body">
<div id="container">
<video autoplay="true" id="videoElement">
</video>
</div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(function() {
// Read Card Reader

View File

@@ -33,6 +33,11 @@
</div>
<% end %>
<button id="member_acc_no" class="btn btn-success btn-md"><span class="fa fa-credit-card"></span> Member Card</button>
<button id="qr_code" class="btn btn-danger btn-md">
<span class="fa fa-credit-card"></span> QR CODE
</button>
</td>
</tr>
<tr>
@@ -91,6 +96,7 @@
<script type="text/javascript">
$(function() {
$('.datepicker').datepicker({
format : 'dd-mm-yyyy',
autoclose: true
@@ -108,6 +114,27 @@ $(function() {
$("#filter_form").submit();
},100);
});
// QR Code Reader
$("#qr_code").on('click', function(e){
var code = "";
setTimeout(function(){
var hi=getQRCode();
alert(hi);
},100);
});
// Read qrcode from java
function getQRCode(){
return code2lab.readQRCode();
}
// get QRCode from Java
function setQRCode(code){
$("#qr_code").text(code);
$("#search").val(code);
}
});
$(document).on('click',".customer_tr",function(){

View File

@@ -0,0 +1,117 @@
# Format for attributes json
attr_format = []
# Format for attributes json
if item.item_attributes.count > 0
item.item_attributes.each do|attr_id|
menu_attr = MenuItemAttribute.find(attr_id)
if attr_format.count == 0
attr_format.push({ type: menu_attr.attribute_type, values: [menu_attr.name] })
next
end
attr_format.each do |af|
if menu_attr.attribute_type.in? attr_format.map {|k| k[:type]}
if menu_attr.attribute_type == af[:type]
af[:values].push(menu_attr.name)
end
else
new_attr = {type: menu_attr.attribute_type, values: [ menu_attr.name ] }
attr_format.push(new_attr)
break
end
end
end
end
# Format for option json
opt_format = []
# Format for attributes json
if item.item_options.count > 0
item.item_options.each do|opt|
menu_opt = MenuItemOption.find(opt)
if opt_format.count == 0
opt_format.push({ type: menu_opt.option_type, values: [menu_opt.name] })
next
end
opt_format.each do |of|
if menu_opt.option_type.in? opt_format.map {|k| k[:type]}
if menu_opt.option_type == of[:type]
of[:values].push(menu_opt.name)
end
else
new_opt = {type: menu_opt.option_type, values: [ menu_opt.name ] }
opt_format.push(new_opt)
break
end
end
end
end
#Menu Item Information
json.id item.id
json.code item.item_code
json.name item.name
json.alt_name item.alt_name
json.image item.image_path.url
json.description item.description
json.information item.information
json.type item.type
json.account_id item.account_id
json.min_qty item.min_qty
json.is_available item.is_available
json.is_sub_item item.is_sub_item
json.unit item.unit
# Item Sets of Menu Item
json.item_sets item.item_sets do |its|
json.id its.id
json.name its.name
json.alt_name its.alt_name
json.min_selectable_qty its.min_selectable_qty
json.max_selectable_qty its.max_selectable_qty
json.instances its.menu_item_instances do |i|
json.id i.id
end
end
json.attributes attr_format
json.options opt_format
# json.min_selectable_item item.min_selectable_item
# json.max_selectable_item item.max_selectable_item
#Item instance
# if item.menu_item_instances.count == 1 then
# item_instance = item.menu_item_instances[0]
# json.price = item_instance.price
# json.is_available = item_instance.is_available
# json.is_on_promotion = item_instance.is_on_promotion
# json.promotion_price = item_instance.promotion_price
# json.item_attributes = item_instance.item_attributes
json.instances item.menu_item_instances do |is|
# Convert id to name for attributes
instance_attr = []
is.item_attributes.each do |ia|
mItemAttr = MenuItemAttribute.find(ia).name
instance_attr.push(mItemAttr)
end
json.id is.id
json.code is.item_instance_code
json.name is.item_instance_name
json.price is.price
json.is_available is.is_available
json.is_default is.is_default
json.is_on_promotion is.is_on_promotion
json.promotion_price is.promotion_price
json.values instance_attr
# json.item_sets is.item_sets
end
#Child Menu items
# if (item.children) then
# json.set_items item.children.each do |item|
# json.partial! 'api/restaurant/menu/menu_item', item: item
# end
# end

View File

@@ -4,7 +4,7 @@
<div class="col-lg-2 col-md-2 col-sm-2">
<ul class="nav nav-tabs flex-column" role="tablist" >
<% @menu.each do |menu| %>
<li class="nav-item menu_category" data-ref="<%= api_restaurant_menu_category_path menu.id%>">
<li class="nav-item menu_category" data-ref="<%= origami_get_menu_category_path menu.id%>">
<p class="hidden menu-id"><%= menu.id %></p>
<a class="nav-link" data-toggle="tab" href="" role="tab"> <%= menu.name%></a>
@@ -120,7 +120,7 @@
<span class="glyphicon glyphicon-minus"></span>
</button>
</span>
<input type="text" value="1" id="count" class="form-control col-md-12 ">
<input type="text" value="1" id="count" class="change_qty form-control col-md-12 ">
<span class="input-group-btn">
<button type="button" class="btn btn-success btn-number" value="+" id="plus">
<span class="glyphicon glyphicon-plus"></span>
@@ -171,10 +171,25 @@
<div class="row set-item">
<div class="col-md-4">
<p style="text-align: center;"> <%= image_tag "logo.png" ,width: '', height: '', :id => 'logo' %></p>
<div class="form-group">
<!-- <div class="form-group">
<label class="col-md-6" style="margin-top:5px">Quantity</label>
<input type="number" name="qty" class="form-control col-md-5 input-number change_qty" id="set_change_qty" value="" min="1" max="100">
</div> -->
<div class="input-group">
<span class="input-group-btn">
<button type="button" class="btn btn-danger btn-number" value="-" id="set_minus">
<span class="glyphicon glyphicon-minus"></span>
</button>
</span>
<input type="text" value="1" id="set_count" class="set_change_qty form-control col-md-12 ">
<span class="input-group-btn">
<button type="button" class="btn btn-success btn-number" value="+" id="set_plus">
<span class="glyphicon glyphicon-plus"></span>
</button>
</span>
</div>
<p class="hidden" id="set_unit_price"></p>
<p class="hidden" id="set_instance_code"></p>
<p class="hidden" id="set_instance_name"></p>

View File

@@ -0,0 +1,5 @@
if @menu.menu_items
json.menu_items @menu.menu_items do |item|
json.partial! 'origami/addorders/menu_item', item: item
end
end

View File

@@ -510,7 +510,7 @@ $(document).ready(function(){
url: ajax_url,
data: params,
success:function(result){
console.log(result)
if (result.status == "Success") {
type = 'green'
btn_color = 'btn-green'

View File

@@ -7,6 +7,9 @@
<h2>JCB</h2>
</div>
</div>
<span class="hidden" id="membership_id"><%= @membership_id%></span>
<span class="hidden" id="member_discount"><%= @member_discount%></span>
<span class="hidden" id="sub-total"><%= @sub_total%></span>
<div class="card" style="margin-top:10px;padding-top:20px;">
<div class="rebate-form">
<div class="row">
@@ -152,18 +155,49 @@ $(document).on('click', '.cashier_number', function(event){
var amount = $('#amount').text();
var sale_id = "<%= @sale_id %>";
if(parseFloat(amount) <= parseFloat($("#validamount").attr("value")) ){
//start member discount 5% by pay card
var sub_total = $('#sub-total').text();
var member_id = $('#membership_id').text();
var member_discount = $('#member_discount').text();
if (member_id && member_discount) {
$.ajax({
type: "POST",
url: "/origami/" + sale_id + "/member_discount",
data: {'sale_id':sale_id, 'sub_total':sub_total,'is_card':true },
// success:function(result){
// }
});
}
//end member discount
$.ajax({type: "POST",
url: "<%= origami_payment_jcb_path %>",
data: "amount="+ amount + "&sale_id="+ sale_id,
success:function(result){
if(result){
alert("Payment success")
$.confirm({
title: 'Infomation!',
content: 'Payment Successfully',
buttons: {
confirm: {
text: 'Ok',
btnClass: 'btn-green',
action: function(){
window.location.href = '/origami/sale/'+ sale_id + "/payment";
}
}
}
});
}
}
});
}else{
alert("Paid Amount is over!");
$.alert({
title: 'Alert!',
content: "Paid Amount is over!",
type: 'red',
typeAnimated: true,
btnClass: 'btn-danger',
});
}
})
</script>

View File

@@ -7,6 +7,9 @@
<h2>Master</h2>
</div>
</div>
<span class="hidden" id="membership_id"><%= @membership_id%></span>
<span class="hidden" id="member_discount"><%= @member_discount%></span>
<span class="hidden" id="sub-total"><%= @sub_total%></span>
<div class="card" style="margin-top:10px;padding-top:20px;">
<div class="rebate-form">
<div class="row">
@@ -149,18 +152,49 @@ $(document).on('click', '.cashier_number', function(event){
var amount = $('#amount').text();
var sale_id = "<%= @sale_id %>";
if(parseFloat(amount) <= parseFloat($("#validamount").attr("value")) ){
//start member discount 5% by pay card
var sub_total = $('#sub-total').text();
var member_id = $('#membership_id').text();
var member_discount = $('#member_discount').text();
if (member_id && member_discount) {
$.ajax({
type: "POST",
url: "/origami/" + sale_id + "/member_discount",
data: {'sale_id':sale_id, 'sub_total':sub_total,'is_card':true },
// success:function(result){
// }
});
}
//end member discount
$.ajax({type: "POST",
url: "<%= origami_payment_master_path %>",
data: "amount="+ amount + "&sale_id="+ sale_id,
success:function(result){
if(result){
alert("Payment success")
$.confirm({
title: 'Infomation!',
content: 'Payment Successfully',
buttons: {
confirm: {
text: 'Ok',
btnClass: 'btn-green',
action: function(){
window.location.href = '/origami/sale/'+ sale_id + "/payment";
}
}
}
});
}
}
});
}else{
alert("Paid Amount is over!");
$.alert({
title: 'Alert!',
content: "Paid Amount is over!",
type: 'red',
typeAnimated: true,
btnClass: 'btn-danger',
});
}
})
</script>

View File

@@ -7,6 +7,9 @@
<h2>MPU</h2>
</div>
</div>
<span class="hidden" id="membership_id"><%= @membership_id%></span>
<span class="hidden" id="member_discount"><%= @member_discount%></span>
<span class="hidden" id="sub-total"><%= @sub_total%></span>
<div class="card" style="margin-top:10px;padding-top:20px;">
<div class="rebate-form">
<div class="row">
@@ -149,18 +152,50 @@ $(document).on('click', '.cashier_number', function(event){
var amount = $('#amount').text();
var sale_id = "<%= @sale_id %>";
if(parseFloat(amount) <= parseFloat($("#validamount").attr("value")) ){
//start member discount 5% by pay card
var sub_total = $('#sub-total').text();
var member_id = $('#membership_id').text();
var member_discount = $('#member_discount').text();
if (member_id && member_discount) {
$.ajax({
type: "POST",
url: "/origami/" + sale_id + "/member_discount",
data: {'sale_id':sale_id, 'sub_total':sub_total,'is_card':true },
// success:function(result){
// }
});
}
//end member discount
//Mpu Payment
$.ajax({type: "POST",
url: "<%= origami_payment_mpu_path %>",
data: "amount="+ amount + "&sale_id="+ sale_id,
success:function(result){
if(result){
alert("Payment success")
$.confirm({
title: 'Infomation!',
content: 'Payment Successfully',
buttons: {
confirm: {
text: 'Ok',
btnClass: 'btn-green',
action: function(){
window.location.href = '/origami/sale/'+ sale_id + "/payment";
}
}
}
});
}
}
});
}else{
alert("Paid Amount is over!")
$.alert({
title: 'Alert!',
content: "Paid Amount is over!",
type: 'red',
typeAnimated: true,
btnClass: 'btn-danger',
});
}
})
</script>

View File

@@ -17,6 +17,8 @@
</tr>
<tr>
<td style="width:50%;"><strong>Customer :</strong> <%= @sale_data.customer.name%></td>
<span class="hidden" id="membership_id"><%= @sale_data.customer.membership_id%></span>
<span class="hidden" id="member_discount"><%= @member_discount%></span>
<td style="width:50%;"><strong>Customer ID :</strong> <%= @sale_data.customer.customer_id%></td>
</tr>
</table>
@@ -138,7 +140,7 @@
<div class="row payment other-payment-color" style="line-height:30px;height: 30px;margin-bottom: 0px;">
<div class="col-md-5"></div>
<div class="col-md-3">MPU</div>
<div class="col-md-4" id="others"><%= @other %></div>
<div class="col-md-4 mpu is_card" id="others"><%= @other %></div>
</div>
<% else %>
<div class="row" style="display:none">
@@ -166,7 +168,7 @@
<div class="row payment other-payment-color" style="line-height:30px;height: 30px;margin-bottom: 0px;">
<div class="col-md-5"></div>
<div class="col-md-3">Visa</div>
<div class="col-md-4" id="visacount"><%= @visacount %></div>
<div class="col-md-4 visa is_card" id="visacount"><%= @visacount %></div>
</div>
<% else %>
<div class="row" style="display:none">
@@ -180,7 +182,7 @@
<div class="row payment other-payment-color" style="line-height:30px;height: 30px;margin-bottom: 0px;">
<div class="col-md-5"></div>
<div class="col-md-3">JCB</div>
<div class="col-md-4" id="jcbcount"><%= @jcbcount %></div>
<div class="col-md-4 jcb is_card" id="jcbcount"><%= @jcbcount %></div>
</div>
<% else %>
<div class="row" style="display:none">
@@ -194,7 +196,7 @@
<div class="row payment other-payment-color" style="line-height:30px;height: 30px;margin-bottom: 0px;">
<div class="col-md-5"></div>
<div class="col-md-3">Master</div>
<div class="col-md-4" id="mastercount"><%= @mastercount %></div>
<div class="col-md-4 master is_card" id="mastercount"><%= @mastercount %></div>
</div>
<% else %>
<div class="row" style="display:none">
@@ -356,16 +358,23 @@ $( document ).ready(function() {
alert(" Insufficient Amount!")
$( "#loading_wrapper" ).hide();
}else{
var sale_id = $('#sale_id').text();
var item_row = $('.is_card');
if (item_row.length < 1) {
calculate_member_discount(sale_id);
}
// payment
var cash = $('#cash').text();
var credit = $('#credit').text();
var card = $('#card').text();
var sale_id = $('#sale_id').text();
$.ajax({type: "POST",
url: "<%= origami_payment_cash_path %>",
data: "cash="+ cash + "&sale_id=" + sale_id,
async: false,
success:function(result){
localStorage.removeItem("cash");
if (result.status) {
var msg = result.message;
@@ -388,8 +397,7 @@ $( document ).ready(function() {
}
}
});
}
else{
}else{
$('#pay').text("Pay")
$.confirm({
title: 'Infomation!',
@@ -444,13 +452,13 @@ function update_balance(){
}
$('#foc').click(function() {
$( "#loading_wrapper" ).show();
// payment
var cash = $('#amount_due').text();
var sub_total = $('#sub-total').text();
var sale_id = $('#sale_id').text();
var params = { 'cash':cash,'sale_id':sale_id,'sub_total':sub_total };
$.ajax({type: "POST",
url: "<%= origami_payment_foc_path %>",
data: params,
@@ -476,7 +484,23 @@ $('#foc').click(function() {
}
});
});
function calculate_member_discount(sale_id) {
var sub_total = $('#sub-total').text();
var member_id = $('#membership_id').text();
var member_discount = $('#member_discount').text();
if (member_id && member_discount) {
$.ajax({
type: "POST",
url: "/origami/" + sale_id + "/member_discount",
data: {'sale_id':sale_id, 'sub_total':sub_total,'is_card':false },
async: false,
success:function(result){
}
});
}
}
</script>

View File

@@ -147,6 +147,7 @@ $(document).on('click', '.cashier_number', function(event){
return false;
}
});
$("#redeem").click(function(){
valid_amount = $("#valid_amount").val();
sale_id = $("#valid_amount").attr('data-value');

View File

@@ -7,6 +7,9 @@
<h2>VISA</h2>
</div>
</div>
<span class="hidden" id="membership_id"><%= @membership_id%></span>
<span class="hidden" id="member_discount"><%= @member_discount%></span>
<span class="hidden" id="sub-total"><%= @sub_total%></span>
<div class="card" style="margin-top:10px;padding-top:20px;">
<div class="rebate-form">
<div class="row">
@@ -149,18 +152,49 @@ $(document).on('click', '.cashier_number', function(event){
var amount = $('#amount').text();
var sale_id = "<%= @sale_id %>";
if(parseFloat(amount) <= parseFloat($("#validamount").attr("value"))){
//start member discount 5% by pay card
var sub_total = $('#sub-total').text();
var member_id = $('#membership_id').text();
var member_discount = $('#member_discount').text();
if (member_id && member_discount) {
$.ajax({
type: "POST",
url: "/origami/" + sale_id + "/member_discount",
data: {'sale_id':sale_id, 'sub_total':sub_total,'is_card':false },
// success:function(result){
// }
});
}
//end member discount
$.ajax({type: "POST",
url: "<%= origami_payment_visa_path %>",
data: "amount="+ amount + "&sale_id="+ sale_id,
success:function(result){
if(result){
alert("Payment success")
$.confirm({
title: 'Infomation!',
content: 'Payment Successfully',
buttons: {
confirm: {
text: 'Ok',
btnClass: 'btn-green',
action: function(){
window.location.href = '/origami/sale/'+ sale_id + "/payment";
}
}
}
});
}
}
});
}else{
alert("Paid Amount is over!");
$.alert({
title: 'Alert!',
content: "Paid Amount is over!",
type: 'red',
typeAnimated: true,
btnClass: 'btn-danger',
});
}
})
</script>

View File

@@ -12,5 +12,26 @@
</ul>
</div>
<%= render 'form', settings_menu_item_menu_item_instances: @settings_menu_item_instances, item_sets: @item_sets %>
</div>
<script type="text/javascript">
$(function(){
// auto selected after loaded
<%
@settings_menu_item_instances.item_sets.each do |set|
%>
$("#menu_item_instance_item_sets option[value='" + <%= set.id %> + "']").attr("selected","selected").css({'color':'#fff','background':'#215d9c'});
<%
end
%>
// After loaded
$("#menu_item_instance_item_sets").on('click', 'option', function(e){
if($(this).attr("selected")){
$(this).removeAttr("selected");
$(this).css({'color':'#000','background':'#fff'});
}
});
});
</script>

View File

@@ -33,7 +33,7 @@ Rails.application.routes.draw do
resources :menu, only: [:index, :show]
resources :menu_categories, only: [:index, :show]
resources :menu_items, only: [:index, :show]
resources :menu_item_attributes, only: [:index]
resources :menu_item_attributes, only: [:index, :show]
resources :menu_item_options, only: [:index]
resources :menu_sold_out, only: [:index]
resources :menu_item_instances, only: [:show]
@@ -180,6 +180,7 @@ Rails.application.routes.draw do
get '/:addorders/:id' => "addorders#detail"
post '/:addorders/create' => "addorders#create", :defaults => { :format => 'json' }
get '/addorders/get_menu_category/:id' => "addorders#get_menu_category",:as => "get_menu_category", :defaults => { :format => 'json' }
resources :commissions
resources :commissioners