diff --git a/app/assets/javascripts/addorder.js b/app/assets/javascripts/addorder.js
index ca424526..6d79ca2a 100644
--- a/app/assets/javascripts/addorder.js
+++ b/app/assets/javascripts/addorder.js
@@ -98,10 +98,10 @@ $(function(){
}
//end show list function
//click item row for item set
- $(document).on('click', '.set_item_box', function(event){
- $(".instance-list").empty();
- $(".options-list").empty();
-
+ $(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');
@@ -149,6 +149,7 @@ $(function(){
// $('#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){
@@ -175,7 +176,7 @@ $(function(){
name = $(this).data('name');
price = $(this).data('price');
// qty = $('#set_change_qty').val();
- qty = document.getElementById("count").value;
+ qty = document.getElementById("set_count").value;
total = qty*price;
var total_price = +sub_total - +total;
$(this).removeClass('selected-instance');
@@ -188,18 +189,19 @@ $(function(){
name = $(this).data('name');
price = $(this).data('price');
// qty = $('#set_change_qty').val();
- qty = document.getElementById("count").value;
+ 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();
@@ -251,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'));
@@ -271,48 +275,44 @@ $(function(){
for(var field in instances) {
value = instances[field].values;
$(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 = 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);
- }
- });
+ // 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);
- }
- });
- });
+ // 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 = "
"+attributes[field]["type"]+"
";
- console.log(selected_arr);
- console.log(value);
-
- console.log(instance_attributes);
$(value).each(function(i){
disabled = ""
status ="";
- if(parseInt(jQuery.inArray(value[i], selected_arr)) !== -1){
+ if(parseInt(jQuery.inArray(value[i], selected_item)) !== -1){
status = "selected-attribute";
}
if(parseInt(jQuery.inArray(value[i], instance_attributes)) == -1){
@@ -351,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');
@@ -370,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;
@@ -677,33 +679,67 @@ $(function(){
}
});
- var count = 1;
- var countEl = document.getElementById("count");
+ // Get Selected Class
+ function change_qty_plus_minus(id,plus,minus) {
- $("#plus").on("click", function(){
- count++;
- countEl.value = count;
+ var count = 1;
+ var countEl = document.getElementById(id);
- price = $("#unit_price").text();
- $("#total_price").text(count*price);
-
- set_price = $("#set_unit_price").text();
- $("#set_total_price").text(qty*set_price);
- });
-
- $("#minus").on("click", function(){
- if (count > 1) {
- count--;
+ $('#'+plus).on("click", function(){
+
+ count++;
countEl.value = count;
- price = $("#unit_price").text();
- $("#total_price").text(count*price);
- set_price = $("#set_unit_price").text();
- $("#set_total_price").text(qty*set_price);
- }
- })
+ 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);
+ }
+ });
+
+ $('#'+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();
diff --git a/app/controllers/origami/addorders_controller.rb b/app/controllers/origami/addorders_controller.rb
index 1f9d70f3..6c9127ae 100644
--- a/app/controllers/origami/addorders_controller.rb
+++ b/app/controllers/origami/addorders_controller.rb
@@ -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
diff --git a/app/views/origami/addorders/_menu_item.json.jbuilder b/app/views/origami/addorders/_menu_item.json.jbuilder
new file mode 100644
index 00000000..32451524
--- /dev/null
+++ b/app/views/origami/addorders/_menu_item.json.jbuilder
@@ -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
\ No newline at end of file
diff --git a/app/views/origami/addorders/detail.html.erb b/app/views/origami/addorders/detail.html.erb
index c5da651b..34920a1d 100644
--- a/app/views/origami/addorders/detail.html.erb
+++ b/app/views/origami/addorders/detail.html.erb
@@ -4,7 +4,7 @@
<% @menu.each do |menu| %>
-