update menu import and export
This commit is contained in:
@@ -103,6 +103,9 @@ For Sidekiq
|
||||
1) If you want to use sidekiq
|
||||
=> Create New Lookups => lookup_type = sidekiq, Name = sidekiq , Value = 1 or 0
|
||||
|
||||
For Clear Menu
|
||||
1) rake clear:menu # menu,menu item,menu category,menu item instance,account,item option,item attribute,item set
|
||||
|
||||
For Check CUp status
|
||||
###please open
|
||||
sudo cat /etc/sudoers
|
||||
|
||||
@@ -46,30 +46,98 @@ class Menu < ApplicationRecord
|
||||
end
|
||||
|
||||
def self.import(file)
|
||||
spreadsheet = Roo::Spreadsheet.open(file.path)
|
||||
|
||||
spreadsheet = open_spreadsheet(file)
|
||||
sheet_count = spreadsheet.sheets.count-1
|
||||
for i in 0..sheet_count do
|
||||
header = spreadsheet.sheet(i).row(1)
|
||||
sheet_name = spreadsheet.sheets[i]
|
||||
|
||||
spreadsheet = Roo::Excelx.new(file.path)
|
||||
|
||||
# Use the extension option if the extension is ambiguous.
|
||||
spreadsheet = Roo::Spreadsheet.open(file.path, extension: :xlsx)
|
||||
|
||||
puts spreadsheet.info
|
||||
|
||||
header = spreadsheet.row(1)
|
||||
|
||||
(2..spreadsheet.last_row).each do |i|
|
||||
|
||||
row = Hash[[header,spreadsheet.row(i)].transpose]
|
||||
|
||||
menu = Menu.new
|
||||
menu.name = row["name"]
|
||||
menu.is_active = row["is_active"]
|
||||
menu.valid_days = row["valid_days"]
|
||||
menu.valid_time_from = row["valid_time_from"]
|
||||
menu.valid_time_to = row["valid_time_to"]
|
||||
menu.created_by = row["created_by"]
|
||||
menu.save
|
||||
(2..spreadsheet.sheet(i).last_row).each do |ii|
|
||||
row = Hash[[header,spreadsheet.sheet(i).row(ii)].transpose]
|
||||
if sheet_name == "Account"
|
||||
# Account.create(id:row["id"], title: row["title"],account_type: row["account_type"],discount: row["discount"],point: row["point"],bonus: row["bonus"],rebate: row["rebate"])
|
||||
account = Account.find_by_id(row["id"])
|
||||
if account
|
||||
Account.create(title: row["title"],account_type: row["account_type"],discount: row["discount"],point: row["point"],bonus: row["bonus"],rebate: row["rebate"])
|
||||
else
|
||||
Account.create(id:row["id"], title: row["title"],account_type: row["account_type"],discount: row["discount"],point: row["point"],bonus: row["bonus"],rebate: row["rebate"])
|
||||
end
|
||||
elsif sheet_name == "Item Set"
|
||||
# ItemSet.create(id:row["id"], name: row[name], alt_name: row[alt_name], min_selectable_qty: row[min_selectable_qty], max_selectable_qty: row[max_selectable_qty])
|
||||
item_set = ItemSet.find_by_id(row["id"])
|
||||
if item_set
|
||||
ItemSet.create( name: row[name], alt_name: row[alt_name], min_selectable_qty: row[min_selectable_qty], max_selectable_qty: row[max_selectable_qty])
|
||||
else
|
||||
ItemSet.create(id:row["id"], name: row[name], alt_name: row[alt_name], min_selectable_qty: row[min_selectable_qty], max_selectable_qty: row[max_selectable_qty])
|
||||
end
|
||||
elsif sheet_name == "Menu Item Options"
|
||||
# MenuItemOption.create(id:row["id"], option_type: row["option_type"],name: row["name"],value: row["value"])
|
||||
item_options = MenuItemOption.find_by_id(row["id"])
|
||||
if item_options
|
||||
MenuItemOption.create( option_type: row["option_type"],name: row["name"],value: row["value"])
|
||||
else
|
||||
MenuItemOption.create(id:row["id"], option_type: row["option_type"],name: row["name"],value: row["value"])
|
||||
end
|
||||
elsif sheet_name == "Menu Item Attributes"
|
||||
# MenuItemAttribute.create(id:row["id"], attribute_type: row["attribute_type"],name: row["name"],value: row["value"])
|
||||
item_attributes = MenuItemAttribute.find_by_id(row["id"])
|
||||
if item_attributes
|
||||
MenuItemAttribute.create( attribute_type: row["attribute_type"],name: row["name"],value: row["value"])
|
||||
else
|
||||
MenuItemAttribute.create(id:row["id"], attribute_type: row["attribute_type"],name: row["name"],value: row["value"])
|
||||
end
|
||||
elsif sheet_name == "Menu"
|
||||
menu = Menu.find_by_id(row["id"])
|
||||
if menu
|
||||
Menu.create(name: row["name"], is_active: row["is_active"], valid_days: row["valid_days"],valid_time_from: row["valid_time_from"], valid_time_to: row["valid_time_to"], created_by: row["created_by"])
|
||||
else
|
||||
Menu.create(id:row["id"], name: row["name"], is_active: row["is_active"], valid_days: row["valid_days"],valid_time_from: row["valid_time_from"], valid_time_to: row["valid_time_to"], created_by: row["created_by"])
|
||||
end
|
||||
elsif sheet_name == "Menu Category"
|
||||
# MenuCategory.create(id:row["id"], menu_id: row["menu_id"], code: row["code"], name: row["name"], alt_name: row["alt_name"], order_by: row["order_by"], created_by: row["created_by"], menu_category_id: row["menu_category_id"], is_available: row["is_available"])
|
||||
menu_category = MenuCategory.find_by_id(row["id"])
|
||||
if menu_category
|
||||
MenuCategory.create(menu_id: row["menu_id"], code: row["code"], name: row["name"], alt_name: row["alt_name"], order_by: row["order_by"], created_by: row["created_by"], menu_category_id: row["menu_category_id"], is_available: row["is_available"])
|
||||
else
|
||||
MenuCategory.create(id:row["id"], menu_id: row["menu_id"], code: row["code"], name: row["name"], alt_name: row["alt_name"], order_by: row["order_by"], created_by: row["created_by"], menu_category_id: row["menu_category_id"], is_available: row["is_available"])
|
||||
end
|
||||
elsif sheet_name == "Menu Item"
|
||||
# MenuItem.create(id:row["id"], item_code: row["item_code"], name: row["name"], alt_name: row["alt_name"], image_path: row["image_path"], description: row["description"], information: row["information"], unit: row["unit"], type: row["type"], menu_category_id: row["menu_category_id"], item_attributes: row["item_attributes"], item_options: row["item_options"], account_id: row["account_id"], min_qty: row["min_qty"], taxable: row["taxable"], is_sub_item: row["is_sub_item"], is_available: row["is_available"], created_by: row["created_by"])
|
||||
menu_item = MenuItem.find_by_id(row["id"])
|
||||
if menu_item
|
||||
MenuItem.create(item_code: row["item_code"], name: row["name"], alt_name: row["alt_name"], image_path: row["image_path"], description: row["description"], information: row["information"], unit: row["unit"], type: row["type"], menu_category_id: row["menu_category_id"], item_attributes: JSON.parse(row["item_attributes"]), item_options: JSON.parse(row["item_options"]), account_id: row["account_id"], min_qty: row["min_qty"], taxable: row["taxable"], is_sub_item: row["is_sub_item"], is_available: row["is_available"], created_by: row["created_by"])
|
||||
else
|
||||
MenuItem.create(id:row["id"], item_code: row["item_code"], name: row["name"], alt_name: row["alt_name"], image_path: row["image_path"], description: row["description"], information: row["information"], unit: row["unit"], type: row["type"], menu_category_id: row["menu_category_id"], item_attributes: JSON.parse(row["item_attributes"]), item_options: JSON.parse(row["item_options"]), account_id: row["account_id"], min_qty: row["min_qty"], taxable: row["taxable"], is_sub_item: row["is_sub_item"], is_available: row["is_available"], created_by: row["created_by"])
|
||||
end
|
||||
elsif sheet_name == "Menu Item Instance"
|
||||
# MenuItemInstance.create(id:row["id"], menu_item_id: row["menu_item_id"].to_i, item_instance_code: row["item_instance_code"], item_instance_name: row["item_instance_name"], item_attributes: row["item_attributes"], price: row["price"], is_on_promotion: row["is_on_promotion"], promotion_price: row["promotion_price"], is_available: row["is_available"], is_default: row["is_default"])
|
||||
item_instance = MenuItemInstance.find_by_id(row["id"])
|
||||
if item_instance
|
||||
MenuItemInstance.create(menu_item_id: row["menu_item_id"].to_i, item_instance_code: row["item_instance_code"], item_instance_name: row["item_instance_name"], item_attributes: JSON.parse(row["item_attributes"]), price: row["price"], is_on_promotion: row["is_on_promotion"], promotion_price: row["promotion_price"], is_available: row["is_available"], is_default: row["is_default"])
|
||||
else
|
||||
MenuItemInstance.create(id:row["id"], menu_item_id: row["menu_item_id"].to_i, item_instance_code: row["item_instance_code"], item_instance_name: row["item_instance_name"], item_attributes: JSON.parse(row["item_attributes"]), price: row["price"], is_on_promotion: row["is_on_promotion"], promotion_price: row["promotion_price"], is_available: row["is_available"], is_default: row["is_default"])
|
||||
end
|
||||
elsif sheet_name == "Menu Instance Item Set"
|
||||
# MenuInstanceItemSet.create(id:row["id"], item_set_id: row["item_set_id"], menu_item_instance_id: row["menu_item_instance_id"])
|
||||
menu_instance_set = MenuInstanceItemSet.find_by_id(row["id"])
|
||||
if menu_instance_set
|
||||
MenuInstanceItemSet.create(item_set_id: row["item_set_id"], menu_item_instance_id: row["menu_item_instance_id"])
|
||||
else
|
||||
MenuInstanceItemSet.create(id:row["id"], item_set_id: row["item_set_id"], menu_item_instance_id: row["menu_item_instance_id"])
|
||||
end
|
||||
elsif sheet_name == "Menu Item Set"
|
||||
# MenuItemSet.create(id:row["id"], item_set_id: row["item_set_id"], menu_item_id: row["menu_item_id"])
|
||||
menu_item_set = MenuItemSet.find_by_id(row["id"])
|
||||
if menu_item_set
|
||||
MenuItemSet.create(item_set_id: row["item_set_id"], menu_item_id: row["menu_item_id"])
|
||||
else
|
||||
MenuItemSet.create(id:row["id"], item_set_id: row["item_set_id"], menu_item_id: row["menu_item_id"])
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def self.open_spreadsheet(file)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
class MenuCategory < ApplicationRecord
|
||||
# before_create :generate_menu_category_code
|
||||
|
||||
belongs_to :menu , counter_cache: true
|
||||
belongs_to :menu
|
||||
has_many :children, :class_name => "MenuCategory", foreign_key: "menu_category_id"
|
||||
belongs_to :parent, :class_name => "MenuCategory", foreign_key: "menu_category_id", optional: true
|
||||
has_many :menu_items
|
||||
|
||||
@@ -12,75 +12,74 @@ wb.styles do |s|
|
||||
:alignment => { :horizontal => :left,
|
||||
:vertical => :center ,
|
||||
:header_text => true}
|
||||
|
||||
wb.add_worksheet(name: "Menu") do |sheet|
|
||||
sheet.add_row %w( name is_active valid_days valid_time_from valid_time_to created_by ), :style=>header_text
|
||||
@settings_menus.each do |menu|
|
||||
sheet.add_row [ menu.name, menu.is_active, menu.valid_days, menu.valid_time_from,menu.valid_time_to, menu.created_by], :style=>[date,wrap_text]
|
||||
end
|
||||
end
|
||||
|
||||
wb.add_worksheet(name: "Menu Category") do |sheet|
|
||||
sheet.add_row %w(menu_id code name alt_name order_by created_by menu_category_id is_available created_at updated_at), :style=>header_text
|
||||
MenuCategory.all.each do |mc|
|
||||
sheet.add_row [mc.menu_id, mc.code, mc.name, mc.alt_name, mc.order_by, mc.created_by, mc.menu_category_id, mc.is_available, mc.created_at, mc.updated_at], :style=>wrap_text
|
||||
end
|
||||
end
|
||||
|
||||
wb.add_worksheet(name: "Menu Item") do |sheet|
|
||||
sheet.add_row %w(item_code name alt_name image_path description information unit type menu_category_id item_attributes item_options account_id _qty taxable is_sub_item is_available created_by created_at updated_at), :style=>header_text
|
||||
MenuItem.all.each do |mi|
|
||||
sheet.add_row [mi.item_code, mi.name, mi.alt_name, mi.image_path, mi.description, mi.information, mi.unit, mi.type, mi.menu_category_id, mi.item_attributes, mi.item_options, mi.account_id, mi.min_qty, mi.taxable, mi.is_sub_item, mi.is_available, mi.created_by, mi.created_at, mi.updated_at], :style=>wrap_text
|
||||
end
|
||||
end
|
||||
|
||||
wb.add_worksheet(name: "Menu Item Instance") do |sheet|
|
||||
sheet.add_row %w(menu_item_id item_instance_code item_instance_name item_attributes price is_on_promotion promotion_price is_available is_default created_at updated_at), :style=>header_text
|
||||
MenuItemInstance.all.each do |mii|
|
||||
sheet.add_row [mii.menu_item_id, mii.item_instance_code, mii.item_instance_name, mii.item_attributes, mii.price, mii.is_on_promotion, mii.promotion_price, mii.is_available, mii.is_default, mii.created_at, mii.updated_at], :style=>wrap_text
|
||||
end
|
||||
end
|
||||
|
||||
wb.add_worksheet(name: "Menu Options") do |sheet|
|
||||
sheet.add_row %w(option_type name value created_at updated_at), :style=>header_text
|
||||
MenuItemOption.all.each do |option|
|
||||
sheet.add_row [option.option_type, option.name, option.value, option.created_at, option.updated_at], :style=>wrap_text
|
||||
end
|
||||
end
|
||||
|
||||
wb.add_worksheet(name: "Item Attributes") do |sheet|
|
||||
sheet.add_row %w(attribute_type name value created_at updated_at), :style=>header_text
|
||||
MenuItemAttribute.all.each do |attr|
|
||||
sheet.add_row [ attr.attribute_type,attr.name,attr.value,attr.created_at,attr.updated_at], :style=>wrap_text
|
||||
end
|
||||
end
|
||||
|
||||
wb.add_worksheet(name: "Account") do |sheet|
|
||||
sheet.add_row %w(title account_type discount point bonus rebate created_at updated_at), :style=>header_text
|
||||
wb.add_worksheet(name: "Account") do |sheet|
|
||||
sheet.add_row %w(id title account_type discount point bonus rebate), :style=>header_text
|
||||
Account.all.each do |acc|
|
||||
sheet.add_row [acc.title,acc.account_type,acc.discount,acc.point,acc.bonus,acc.rebate,acc.created_at,acc.updated_at], :style=>wrap_text
|
||||
sheet.add_row [acc.id, acc.title,acc.account_type,acc.discount,acc.point,acc.bonus,acc.rebate], :style=>wrap_text
|
||||
end
|
||||
end
|
||||
|
||||
wb.add_worksheet(name: "Item Set") do |sheet|
|
||||
sheet.add_row %w(name alt_name min_selectable_qty max_selectable_qty created_at updated_at), :style=>header_text
|
||||
sheet.add_row %w(id name alt_name min_selectable_qty max_selectable_qty), :style=>header_text
|
||||
ItemSet.all.each do |set|
|
||||
sheet.add_row [set.name, set.alt_name, set.min_selectable_qty, set.max_selectable_qty, set.created_at, set.updated_at], :style=>wrap_text
|
||||
sheet.add_row [set.id,set.name, set.alt_name, set.min_selectable_qty, set.max_selectable_qty], :style=>wrap_text
|
||||
end
|
||||
end
|
||||
|
||||
wb.add_worksheet(name: "Menu Item Options") do |sheet|
|
||||
sheet.add_row %w(id option_type name value), :style=>header_text
|
||||
MenuItemOption.all.each do |option|
|
||||
sheet.add_row [option.id, option.option_type, option.name, option.value], :style=>wrap_text
|
||||
end
|
||||
end
|
||||
|
||||
wb.add_worksheet(name: "Menu Item Attributes") do |sheet|
|
||||
sheet.add_row %w(id attribute_type name value), :style=>header_text
|
||||
MenuItemAttribute.all.each do |attr|
|
||||
sheet.add_row [attr.id, attr.attribute_type,attr.name,attr.value], :style=>wrap_text
|
||||
end
|
||||
end
|
||||
|
||||
wb.add_worksheet(name: "Menu") do |sheet|
|
||||
sheet.add_row %w( id name is_active valid_days valid_time_from valid_time_to created_by ), :style=>header_text
|
||||
@settings_menus.each do |menu|
|
||||
sheet.add_row [ menu.id, menu.name, menu.is_active, menu.valid_days, menu.valid_time_from,menu.valid_time_to, menu.created_by], :style=>[wrap_text]
|
||||
end
|
||||
end
|
||||
|
||||
wb.add_worksheet(name: "Menu Category") do |sheet|
|
||||
sheet.add_row %w(id menu_id code name alt_name order_by created_by menu_category_id is_available), :style=>header_text
|
||||
MenuCategory.all.each do |mc|
|
||||
sheet.add_row [mc.id, mc.menu_id, mc.code, mc.name, mc.alt_name, mc.order_by, mc.created_by, mc.menu_category_id, mc.is_available], :style=>wrap_text
|
||||
end
|
||||
end
|
||||
|
||||
wb.add_worksheet(name: "Menu Item") do |sheet|
|
||||
sheet.add_row %w(id item_code name alt_name image_path description information unit type menu_category_id item_attributes item_options account_id min_qty taxable is_sub_item is_available created_by), :style=>header_text
|
||||
MenuItem.all.each do |mi|
|
||||
sheet.add_row [mi.id,mi.item_code, mi.name, mi.alt_name, mi.image_path, mi.description, mi.information, mi.unit, mi.type, mi.menu_category_id, mi.item_attributes, mi.item_options, mi.account_id, mi.min_qty, mi.taxable, mi.is_sub_item, mi.is_available, mi.created_by], :style=>wrap_text
|
||||
end
|
||||
end
|
||||
|
||||
wb.add_worksheet(name: "Menu Item Instance") do |sheet|
|
||||
sheet.add_row %w(id menu_item_id item_instance_code item_instance_name item_attributes price is_on_promotion promotion_price is_available is_default), :style=>header_text
|
||||
MenuItemInstance.all.each do |mii|
|
||||
sheet.add_row [mii.id, mii.menu_item_id, mii.item_instance_code, mii.item_instance_name, mii.item_attributes, mii.price, mii.is_on_promotion, mii.promotion_price, mii.is_available, mii.is_default], :style=>wrap_text
|
||||
end
|
||||
end
|
||||
|
||||
wb.add_worksheet(name: "Menu Instance Item Set") do |sheet|
|
||||
sheet.add_row %w(item_set_id menu_item_instance_id created_at updated_at), :style=>header_text
|
||||
sheet.add_row %w(id item_set_id menu_item_instance_id), :style=>header_text
|
||||
MenuInstanceItemSet.all.each do |miis|
|
||||
sheet.add_row [miis.item_set_id, miis.menu_item_instance_id, miis.created_at, miis.updated_at], :style=>wrap_text
|
||||
sheet.add_row [miis.id ,miis.item_set_id, miis.menu_item_instance_id], :style=>wrap_text
|
||||
end
|
||||
end
|
||||
|
||||
wb.add_worksheet(name: "Menu Item Set") do |sheet|
|
||||
sheet.add_row %w(item_set_id menu_item_id created_at updated_at), :style=>header_text
|
||||
sheet.add_row %w(id item_set_id menu_item_id), :style=>header_text
|
||||
MenuItemSet.all.each do |mis|
|
||||
sheet.add_row [mis.item_set_id, mis.menu_item_id, mis.created_at, mis.updated_at], :style=>wrap_text
|
||||
sheet.add_row [mis.id,mis.item_set_id, mis.menu_item_id], :style=>wrap_text
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -20,4 +20,26 @@ namespace :clear do
|
||||
SeedGenerator.where("id > 1").update(:current => 0, :next => 1)
|
||||
puts "Clear Data Done."
|
||||
end
|
||||
|
||||
desc "Clear Menu"
|
||||
task :menu => :environment do
|
||||
|
||||
|
||||
MenuItemOption.destroy_all
|
||||
MenuItemAttribute.destroy_all
|
||||
|
||||
MenuItemSet.destroy_all
|
||||
|
||||
MenuInstanceItemSet.destroy_all
|
||||
ItemSet.destroy_all
|
||||
|
||||
MenuItemInstance.destroy_all
|
||||
MenuItem.destroy_all
|
||||
|
||||
MenuCategory.destroy_all
|
||||
Menu.destroy_all
|
||||
|
||||
Account.destroy_all
|
||||
puts "Clear all Menu Done."
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user