update menu item api

This commit is contained in:
Yan
2017-08-18 20:02:24 +06:30
3 changed files with 202 additions and 109 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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;">&times;</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">&times;</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">&times;</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;
}