From 3db2db093b9d9766c8754886d3a3c6614ce5f597 Mon Sep 17 00:00:00 2001 From: Yan Date: Thu, 19 Apr 2018 15:17:59 +0630 Subject: [PATCH] menu export import update and print setting update --- app/controllers/settings/menus_controller.rb | 32 +++++++++++++++++-- app/models/menu.rb | 26 +++++++++++++-- app/views/origami/payments/show.html.erb | 10 ++---- app/views/print_settings/_form.html.erb | 2 +- public/menus/Main Menu.xlsx | Bin 4375 -> 4585 bytes 5 files changed, 58 insertions(+), 12 deletions(-) diff --git a/app/controllers/settings/menus_controller.rb b/app/controllers/settings/menus_controller.rb index bc92a959..f73226f4 100755 --- a/app/controllers/settings/menus_controller.rb +++ b/app/controllers/settings/menus_controller.rb @@ -99,11 +99,39 @@ class Settings::MenusController < ApplicationController sheet.add_row ["Name",menu.name], :style=>title sheet.add_row - sheet.add_row ["Category Code", "Category Name", "Item Code", "Item Name", "Account", "Item AltName", "Taxable", "Instance Code", "Instance Name", "Price"], :style=>header_text + sheet.add_row ["Category Code", "Category Name", "Item Code", "Item Name", "Account", "Item AltName", "Taxable", "Attributes", "Options", "Instance Code", "Instance Name", "Price", "Is Default"], :style=>header_text menu.menu_categories.each do |mc| mc.menu_items.each do |mi| + attributes = "" + i=0 + if mi.item_attributes.length > 0 + mi.item_attributes.each do |mia| + attribute = MenuItemAttribute.find(mia) + if i == mi.item_attributes.length - 1 + attributes = attributes + attribute.name + else + attributes = attributes + attribute.name + "," + end + i = i + 1 + end + end + + options = "" + i=0 + if mi.item_options.length > 0 + mi.item_options.each do |mia| + option = MenuItemOption.find(mia) + if i == mi.item_options.length - 1 + options = options + option.name + else + options = options + option.name + "," + end + i = i + 1 + end + end + mi.menu_item_instances.each do |mii| - sheet.add_row [ mc.code, mc.name, mi.item_code, mi.name, mi.account.title, mi.alt_name, mi.taxable, mii.item_instance_code, mii.item_instance_name, mii.price], :style=>wrap_text + sheet.add_row [ mc.code, mc.name, mi.item_code, mi.name, mi.account.title, mi.alt_name, mi.taxable, attributes, options, mii.item_instance_code, mii.item_instance_name, mii.price, mii.is_default], :style=>wrap_text end end end diff --git a/app/models/menu.rb b/app/models/menu.rb index 28b23c76..6d7e9cbe 100755 --- a/app/models/menu.rb +++ b/app/models/menu.rb @@ -153,6 +153,28 @@ class Menu < ApplicationRecord # status = status + "Category Code already exists." end + # Menu Item Attributes + item_attrs = [] + attributes = row["Attributes"].split(',') + attributes.each do |attr| + attribute = MenuItemAttribute.find_by_name(attr) + if attribute.nil? + attribute = MenuItemAttribute.create({ attribute_type:"any", name: attr.capitalize, value: attr.downcase }) + end + item_attrs.push(attribute.id) + end + + # Menu Item Options + item_opts = [] + options = row["Options"].split(',') + options.each do |opt| + option = MenuItemOption.find_by_name(opt) + if option.nil? + option = MenuItemOption.create({ option_type:"any", name: opt.capitalize, value: opt.downcase }) + end + item_opts.push(option.id) + end + menu_itm = MenuItem.find_by_item_code(row["Item Code"]) if !menu_itm account = Account.find_by_title(row["Account"]) @@ -160,14 +182,14 @@ class Menu < ApplicationRecord account = Account.create({title: row["Account"], account_type: "0"}) end - menu_itm = MenuItem.create(item_code: row["Item Code"], name: row["Item Name"], account_id: account.id, alt_name: row["Item AltName"], image_path: "", description: '', information: '', unit: '', type: "SimpleMenuItem", menu_category_id: menu_cat.id, item_attributes: "[]", item_options: "[]", is_sub_item: 0, is_available: 1, created_by: created_by) + menu_itm = MenuItem.create(item_code: row["Item Code"], name: row["Item Name"], account_id: account.id, alt_name: row["Item AltName"], image_path: "", description: '', information: '', unit: '', type: "SimpleMenuItem", menu_category_id: menu_cat.id, item_attributes: item_attrs, item_options: item_opts, is_sub_item: 0, is_available: 1, created_by: created_by) # else # status = status + "Item Code already exists for " + row["Item Name"] + "." end menu_inst = MenuItemInstance.find_by_item_instance_code(row["Instance Code"]) if !menu_inst - imported_instance = MenuItemInstance.create(menu_item_id: menu_itm.id, item_instance_code: row["Instance Code"], item_instance_name: row["Instance Name"], item_attributes: "[]", price: row["Price"], is_on_promotion: false, promotion_price: 0, is_available: true, is_default: false) + imported_instance = MenuItemInstance.create(menu_item_id: menu_itm.id, item_instance_code: row["Instance Code"], item_instance_name: row["Instance Name"], item_attributes: [], price: row["Price"], is_on_promotion: false, promotion_price: 0, is_available: true, is_default: row["Is Default"]) # else # status = status + "Instance Code already exists for " + row["Instance Name"] + "." end diff --git a/app/views/origami/payments/show.html.erb b/app/views/origami/payments/show.html.erb index d5ac5bb8..f31341d9 100755 --- a/app/views/origami/payments/show.html.erb +++ b/app/views/origami/payments/show.html.erb @@ -433,12 +433,9 @@