update menu item api
This commit is contained in:
@@ -51,14 +51,14 @@ json.options item.item_options
|
||||
# json.item_attributes = item_instance.item_attributes
|
||||
|
||||
json.instances item.menu_item_instances do |is|
|
||||
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.item_attributes = is.item_attributes
|
||||
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.item_attributes is.item_attributes
|
||||
json.item_sets is.item_sets
|
||||
end
|
||||
|
||||
|
||||
@@ -1,43 +1,48 @@
|
||||
if @menu.menu_items
|
||||
json.menu_items @menu.menu_items do |item|
|
||||
#Menu Item Information
|
||||
json.item_code item.item_code
|
||||
json.name item.name
|
||||
json.alt_name item.alt_name
|
||||
json.type item.type
|
||||
json.min_qty item.min_qty
|
||||
# json.item_code item.item_code
|
||||
# json.name item.name
|
||||
# json.alt_name item.alt_name
|
||||
# json.type item.type
|
||||
# json.min_qty item.min_qty
|
||||
# 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
|
||||
# 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
|
||||
# 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
|
||||
|
||||
elsif item.menu_item_instances.count > 1 then
|
||||
# elsif item.menu_item_instances.count > 1 then
|
||||
|
||||
json.item_instances item.menu_item_instances do |is|
|
||||
json.item_instance_item_code is.item_instance_code
|
||||
json.item_instance_name is.item_instance_name
|
||||
json.price is.price
|
||||
json.is_available is.is_available
|
||||
json.is_on_promotion is.is_on_promotion
|
||||
json.promotion_price is.promotion_price
|
||||
json.item_attributes is.item_attributes
|
||||
end
|
||||
# json.item_instances item.menu_item_instances do |is|
|
||||
# json.item_instance_item_code is.item_instance_code
|
||||
# json.item_instance_name is.item_instance_name
|
||||
# json.price is.price
|
||||
# json.is_available is.is_available
|
||||
# json.is_on_promotion is.is_on_promotion
|
||||
# json.promotion_price is.promotion_price
|
||||
# json.item_attributes is.item_attributes
|
||||
# end
|
||||
|
||||
end
|
||||
# end
|
||||
#Child Menu items
|
||||
if (item.menu_item_sets) then
|
||||
json.set_items item.menu_item_sets.each do |item|
|
||||
json.partial! 'api/restaurant/menu/menu_item', item: item
|
||||
end
|
||||
# if (item.menu_item_sets) then
|
||||
# json.set_items item.menu_item_sets.each do |item|
|
||||
# json.partial! 'api/restaurant/menu/menu_item', item: item
|
||||
# end
|
||||
|
||||
end
|
||||
#end
|
||||
# if category.menu_items
|
||||
# json.items category.menu_items do |item|
|
||||
json.partial! 'api/restaurant/menu/menu_item', item: item
|
||||
# end
|
||||
# end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -45,50 +45,86 @@
|
||||
<td class="item-attr"><strong id="sub_total">0.00</strong></td>
|
||||
</tr>
|
||||
</table>
|
||||
<button type="button" class="btn btn-success create" id="create_order" disabled="disabled">Create Order</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Large modal -->
|
||||
<button class="btn btn-primary" data-toggle="modal" data-target=".sx_item_detailModal">Large modal</button>
|
||||
|
||||
<div class="modal fade sx_item_detailModal" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-lg">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header" style="background-color: #54A5AF;">
|
||||
<h4 class="modal-title" style="color:#fff;" id="title_name"></h4>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true" style="font-size: 20px;color:#fff;">×</button>
|
||||
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="row">
|
||||
<div class="col-md-5">
|
||||
<%= image_tag "logo.png" ,width: '', height: '', :style => '' %>
|
||||
<br><br>
|
||||
<div class="form-group">
|
||||
<h4 class="col-md-12">Quantity</h4>
|
||||
<input type="number" name="qty" class="form-control col-md-12 input-number" id="modal-qty" value="" min="1" max="100">
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<h4 class="col-md-6">Total</h4>
|
||||
<h4 class="col-md-6" id="total_price"> 2500 Ks</h4>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-7">
|
||||
<h4>Options</h4>
|
||||
|
||||
<h4>Attributes</h4>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
|
||||
<button type="button" class="btn btn-primary" data-dismiss="modal" id="close">Close</button>
|
||||
<button type="button" class="btn btn-success" data-dismiss="modal" id="save_order">Add Order</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Modal -->
|
||||
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
|
||||
<div class="modal fade" id="sx_itemModal" tabindex="-1" role="dialog" aria-labelledby="sx_itemModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<button type="button" id="remove" class="btn btn-default" data-dismiss="modal" style="float:right;margin-right:30px;">Remove Item</button>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h4 class="modal-title"></h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="row">
|
||||
<div class="col-lg-offset-6 col-md-offset-6 col-sm-offset-6 col-sm-6 col-md-6 col-lg-6">
|
||||
<span id="item_err_msg"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-6" style="width: 14.499999995%">
|
||||
<label for="ex1">Qty</label>
|
||||
<input type="hidden" id="modal_product_name">
|
||||
<input type="hidden" id="modal_product_sku">
|
||||
<input type="hidden" class="current_textbox">
|
||||
<div id="modal_qty" class="form-control" ></div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<label for="ex1" style='width:50%;'>Price</label><span class="minus btn btn-default btn-xs" style='width:50%;'>-</span>
|
||||
<div id="modal_price" class="form-control" ></div>
|
||||
<input type="button" class="btn btn-primary btn-lg btn-block" id="clear" value="Clear">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<table width="100%" class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="">Item Name</th>
|
||||
<th style="">Quantity</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="item_name" id="modal-item-name"></td>
|
||||
<td>
|
||||
<input type="number" name="qty" class="form-control col-md-12 input-number" id="modal-qty" value="" min="1" max="100">
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" id="remove" class="btn btn-danger" data-dismiss="modal">Remove</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
|
||||
<button type="button" class="btn btn-primary">Save changes</button>
|
||||
<button type="button" class="btn btn-primary" data-dismiss="modal" id="close">Close</button>
|
||||
<button type="button" class="btn btn-success" data-dismiss="modal" id="save">Update</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -97,7 +133,7 @@
|
||||
<script type="text/javascript">
|
||||
|
||||
$(function(){
|
||||
|
||||
|
||||
//click menu sidebar menu category
|
||||
$(".menu_category").on("click", function(){
|
||||
var menu_id = $(this).find(".menu-id").text();
|
||||
@@ -118,28 +154,21 @@ $(function(){
|
||||
data: {},
|
||||
dataType: "json",
|
||||
success: function(data) {
|
||||
console.log(data);
|
||||
var menu_items_list = $('.menu_items_list');
|
||||
menu_items_list.empty();
|
||||
menu_items = data.menu_items;
|
||||
console.log(data);
|
||||
for(var field in menu_items) {
|
||||
if (menu_items[field].item_instances){
|
||||
var price = parseFloat(menu_items[field].item_instances[1].price).toFixed(2);
|
||||
var is_available = menu_items[field].item_instances[1].is_available
|
||||
var is_on_promotion = menu_items[field].item_instances[1].is_on_promotion
|
||||
var item_attributes = menu_items[field].item_instances[1].item_attributes
|
||||
var item_instance_code = menu_items[field].item_instances[1].item_instance_item_code
|
||||
var item_instance_name = menu_items[field].item_instances[1].item_instance_name
|
||||
var promotion_price = menu_items[field].item_instances[1].promotion_price
|
||||
}else{
|
||||
var price = parseFloat(menu_items[field].price).toFixed(2);
|
||||
var is_available = menu_items[field].is_available
|
||||
var is_on_promotion = menu_items[field].is_on_promotion
|
||||
var item_attributes = menu_items[field].item_attributes
|
||||
var item_instance_code = menu_items[field].item_instance_item_code
|
||||
var item_instance_name = menu_items[field].item_instance_name
|
||||
var promotion_price = menu_items[field].promotion_price
|
||||
}
|
||||
|
||||
var code = menu_items[field].instances[0].code
|
||||
var name = menu_items[field].instances[0].name
|
||||
var price = parseFloat(menu_items[field].instances[0].price).toFixed(2);
|
||||
var is_available = menu_items[field].instances[0].is_available
|
||||
var is_on_promotion = menu_items[field].instances[0].is_on_promotion
|
||||
var item_attributes = menu_items[field].instances[0].item_attributes
|
||||
var promotion_price = menu_items[field].instances[0].promotion_price
|
||||
|
||||
|
||||
row = '<div class="card">'
|
||||
+'<div class="card-head" style="line-height:14px;">'
|
||||
@@ -152,8 +181,8 @@ $(function(){
|
||||
+'data-available="'+ is_available +'"'
|
||||
+'data-promotion="'+ is_on_promotion +'"'
|
||||
+'data-attributes="'+ item_attributes +'"'
|
||||
+'data-instance-code="'+ item_instance_code +'"'
|
||||
+'data-instance="'+ item_instance_name +'"'
|
||||
+'data-instance-code="'+ code +'"'
|
||||
+'data-instance="'+ name +'"'
|
||||
+'data-promotion-price="'+ promotion_price +'"'
|
||||
+'>'
|
||||
+'<i class="fa fa-plus "'
|
||||
@@ -161,12 +190,14 @@ $(function(){
|
||||
+'</i></div>'
|
||||
+'</div>'
|
||||
|
||||
+'<div class="card-block">'
|
||||
+'<%= image_tag "logo.png" ,width: '75', height: '75', :style => '' %>'
|
||||
+'</div>'
|
||||
+'<div class="menu_item_box" data-toggle="modal" data-target=".sx_item_detailModal">'
|
||||
+'<div class="card-block">'
|
||||
+'<%= image_tag "logo.png" ,width: '75', height: '75', :style => '' %>'
|
||||
+'</div>'
|
||||
|
||||
+'<div class="card-footer">'
|
||||
+'<small>'+ price +'</small>'
|
||||
+'<div class="card-footer">'
|
||||
+'<small>'+ price +'</small>'
|
||||
+'</div>'
|
||||
+'</div>';
|
||||
$('.menu_items_list').append(row);
|
||||
}
|
||||
@@ -179,15 +210,15 @@ $(function(){
|
||||
|
||||
// click plus icon for add
|
||||
$(document).on('click', '.add_icon', function(event){
|
||||
var item_data = $(this);
|
||||
show_item_detail(item_data);
|
||||
calculate_sub_total();
|
||||
var item_data = $(this);
|
||||
show_item_detail(item_data);
|
||||
calculate_sub_total();
|
||||
}); //End Add Icon Click
|
||||
|
||||
function show_item_detail(data){
|
||||
qty = 1;
|
||||
append = 0;
|
||||
price = data.attr('data-price');
|
||||
price = parseFloat(data.attr('data-price')).toFixed(2);
|
||||
instance_code = data.attr('data-instance');
|
||||
|
||||
if (instance_code == "undefined"){
|
||||
@@ -203,7 +234,8 @@ $(function(){
|
||||
if ($(item_row[i]).attr('data-code') == data.attr('data-item-code')) {
|
||||
qty = parseInt($(item_row[i]).children('#item_qty').text()) +1;
|
||||
$(item_row[i]).children('#item_qty').text(qty);
|
||||
$(item_row[i]).children('#item_price').text(price*qty);
|
||||
parseFloat($(item_row[i]).children('#item_price').text(price*qty)).toFixed(2);
|
||||
|
||||
append = 1;
|
||||
}else{
|
||||
qty = 1;
|
||||
@@ -211,9 +243,9 @@ $(function(){
|
||||
});
|
||||
|
||||
if (append===0) {
|
||||
row ="<tr data-price ='"+price+ "'data-toggle='modal' data-target='#myModal' 'data-instance ='"+instance+ "'data-code='"+data.attr('data-item-code')+"'>"
|
||||
row ="<tr class='item_box' data-price ='"+price+ "'data-toggle='modal' data-target='#sx_itemModal' 'data-instance ='"+instance+ "'data-code='"+data.attr('data-item-code')+"'>"
|
||||
+'<td class="item-cell-no">'+rowCount+'</td>'
|
||||
+'<td class="item-cell-name" >' + data.attr('data-name')+ ' ' + instance + '</td>'
|
||||
+'<td class="item-cell-name" id="item_name" >' + data.attr('data-name')+ ' ' + instance + '</td>'
|
||||
+'<td class="item-cell-qty" id="item_qty">' + qty + '</td>'
|
||||
+'<td class="item-cell-price" id="item_price">'
|
||||
+ parseFloat(price).toFixed(2)
|
||||
@@ -224,29 +256,85 @@ $(function(){
|
||||
|
||||
}
|
||||
|
||||
//click item row for update qty
|
||||
$('.summary-items').on('click', '.item_box', function(){
|
||||
$(this).attr('data-active',true);
|
||||
name = $(this).children('#item_name').text();
|
||||
qty = $(this).children('#item_qty').text();
|
||||
$('#modal-item-name').text(name);
|
||||
$('#modal-qty').val(qty);
|
||||
});
|
||||
|
||||
//click item row for update qty
|
||||
$(document).on('click', '.menu_item_box', function(event){
|
||||
|
||||
data = $(this).parent().children().children('.add_icon');
|
||||
$('#title_name').text(data.attr('data-name'));
|
||||
console.log(data);
|
||||
});
|
||||
|
||||
//click remove buttom in modal box
|
||||
$('#sx_itemModal').on('click','#remove', function(){
|
||||
$('.summary-items tr').filter(function(){
|
||||
if ($(this).attr('data-active') == 'true'){
|
||||
$(this).remove();
|
||||
}
|
||||
});
|
||||
calculate_sub_total();
|
||||
});
|
||||
|
||||
//click close
|
||||
$('#sx_itemModal').on('click','#close', function(){
|
||||
$(".item_box").removeAttr("data-active");
|
||||
});
|
||||
|
||||
//click save buttom after change qty
|
||||
$('#sx_itemModal').on('click','#save', function(){
|
||||
summary_items_filter();
|
||||
calculate_sub_total();
|
||||
});
|
||||
|
||||
//calculate subtotal
|
||||
function calculate_sub_total(){
|
||||
var total_price = 0;
|
||||
var taxable_amount = 0;
|
||||
var item_row = $('.summary-items tbody tr');
|
||||
|
||||
$(item_row).each(function(i){
|
||||
// var taxable = $(item_row[i]).attr('data-taxable');
|
||||
var unit_price = parseFloat($(item_row[i]).attr('data-price'));
|
||||
var qty = parseFloat($(item_row[i]).children('#item_qty').text());
|
||||
// if(taxable == 'true'){
|
||||
// taxable_amount += qty*unit_price;
|
||||
// }
|
||||
total_price += qty*unit_price;
|
||||
});
|
||||
var fixed_total_price = parseFloat(total_price).toFixed(2);
|
||||
var fixed_taxable_amount = parseFloat(taxable_amount).toFixed(2);
|
||||
|
||||
$('#sub_total').empty();
|
||||
$('#sub_total').append(fixed_total_price);
|
||||
// $('#sub_total').attr('taxable_amount',fixed_taxable_amount);
|
||||
// $('#show_sub').text(fixed_total_price);
|
||||
}
|
||||
|
||||
});
|
||||
if (fixed_total_price > 0) {
|
||||
$('.create').removeAttr("disabled", false);
|
||||
}else{
|
||||
$('.create').attr("disabled", true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function summary_items_filter(){
|
||||
$('.summary-items tr').filter(function(){
|
||||
|
||||
if ($(this).attr('data-active') == 'true'){
|
||||
qty = $('#modal-qty').val();
|
||||
price = parseFloat($(this).attr('data-price'));
|
||||
total_price = parseFloat(price*qty).toFixed(2);
|
||||
|
||||
$(this).find('#item_qty').text(qty);
|
||||
$(this).find('.item-cell-price').text(total_price);
|
||||
|
||||
$(this).removeAttr('data-active');
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
@@ -314,7 +402,7 @@ $(function(){
|
||||
.modal-dialog {
|
||||
left:auto;
|
||||
right: auto;
|
||||
width: 600px;
|
||||
width: 100%;
|
||||
padding-top: 100px;
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user