diff --git a/Main Menu.xlsx b/Main Menu.xlsx new file mode 100644 index 00000000..94c70338 Binary files /dev/null and b/Main Menu.xlsx differ diff --git a/app/assets/javascripts/addorder.js b/app/assets/javascripts/addorder.js index 47c6cd4f..31209c99 100755 --- a/app/assets/javascripts/addorder.js +++ b/app/assets/javascripts/addorder.js @@ -381,16 +381,18 @@ $(function() { item = get_set_item(items); customer_display_view(item,"set_add"); - var option = '' + var option = [] attribute_arr = [] var rowCount = $('.summary-items tbody tr').length+1; code = $('.set-item').attr('data-code'); name = $('.set-item').attr('data-name'); price = $('.set-item').attr('data-price'); - option = ($('.set-item').attr('data-options') === 'undefined') ? '' :$('.set-item').attr('data-options'); + option_name = ($('.set-item').attr('data-options') === 'undefined') ? '' :$('.set-item').attr('data-options'); + option = ($('.set-item').attr('data-options') === '') ? '[]' :$('.set-item').attr('data-options'); parent = $('.set-item').attr('data-parent'); total = qty * price ; + row ="" +''+rowCount+'' - +'' + item_name+ ' ' + name +' ' + option +'' + +'' + item_name+ ' ' + name +' ' + option_name +'' +'' + qty + '' +'' + parseFloat(total).toFixed(2) @@ -406,15 +408,16 @@ $(function() { +''; $(".summary-items tbody").append(row); var rowCount = $('.summary-items tbody tr').length+1; - var set_option = '' + var set_option = [] $(items).each(function(i){ code = $(items[i]).attr('data-code'); name = $(items[i]).attr('data-name'); price = $(items[i]).attr('data-price'); - set_option = ($(items[i]).attr('data-options') === 'undefined') ? ' ' :$(items[i]).attr('data-options'); - + set_option_name = ($(items[i]).attr('data-options') === 'undefined') ? ' ' :$(items[i]).attr('data-options'); + set_option= ($(items[i]).attr('data-options') === '') ? '[]' :$(items[i]).attr('data-options'); sub_item = $(items[i]).attr('data-sub-item'); total = qty * price ; + row ="" +''+rowCount+'' - +'' + item_name+ ' ' + name +' ' + set_option +'' + +'' + item_name+ ' ' + name +' ' + set_option_name +'' +'' + qty + '' +'' + parseFloat(total).toFixed(2) diff --git a/app/assets/javascripts/custom.js b/app/assets/javascripts/custom.js index 778de553..c6e6a47b 100644 --- a/app/assets/javascripts/custom.js +++ b/app/assets/javascripts/custom.js @@ -10,7 +10,7 @@ $(document).ready(function() { alwaysVisible: false, borderRadius: '0', railBorderRadius: '0', - touchScrollStep : 25 + touchScrollStep : 50 }); $('#order-detail-slimscroll').slimScroll({ @@ -20,7 +20,7 @@ $(document).ready(function() { alwaysVisible: false, borderRadius: '0', railBorderRadius: '0', - touchScrollStep : 25 + touchScrollStep : 50 }); $('#menu-slimscroll').slimScroll({ @@ -30,7 +30,7 @@ $(document).ready(function() { alwaysVisible: false, borderRadius: '0', railBorderRadius: '0', - touchScrollStep : 25 + touchScrollStep : 50 }); // $('.delete').click(function(){ diff --git a/app/controllers/oqs/edit_controller.rb b/app/controllers/oqs/edit_controller.rb index ccef4e4a..049bbda6 100644 --- a/app/controllers/oqs/edit_controller.rb +++ b/app/controllers/oqs/edit_controller.rb @@ -36,33 +36,39 @@ class Oqs::EditController < BaseOqsController if ENV["SERVER_MODE"] != "cloud" #no print in cloud server # print assigned_item = AssignedOrderItem.find_by_instance_code(order_item.item_instance_code) - # order queue stations - oqs = assigned_item.order_queue_station - - order_slim_pdf = Lookup.collection_of("print_settings") #print_settings with name:OrderSlimPdf + assigned_items = AssignedOrderItem.where("item_code='" + assigned_item.item_code + "' AND " + "order_id='" + assigned_item.order_id + "'") - unique_code="OrderItemPdf" - if !order_slim_pdf.empty? - order_slim_pdf.each do |order_item_slim| - if order_item_slim[0] == 'OrderSlimPdf' - if order_item_slim[1] == '1' - unique_code="OrderItemSlimPdf" - else - unique_code="OrderItemPdf" - end - elsif order_item_slim[0] == 'OrderSetPdf' - if order_item_slim[1] == '1' - unique_code="OrderSetItemPdf" - else - unique_code="OrderItemPdf" + if !assigned_items.nil? + assigned_items.each do |assign_item| + # order queue stations + oqs = assign_item.order_queue_station + + order_slim_pdf = Lookup.collection_of("print_settings") #print_settings with name:OrderSlimPdf + + unique_code="OrderItemPdf" + if !order_slim_pdf.empty? + order_slim_pdf.each do |order_item_slim| + if order_item_slim[0] == 'OrderSlimPdf' + if order_item_slim[1] == '1' + unique_code="OrderItemSlimPdf" + else + unique_code="OrderItemPdf" + end + elsif order_item_slim[0] == 'OrderSetPdf' + if order_item_slim[1] == '1' + unique_code="OrderSetItemPdf" + else + unique_code="OrderItemPdf" + end + end end end + + print_settings=PrintSetting.find_by_unique_code(unique_code) + order_queue_printer= Printer::OrderQueuePrinter.new(print_settings) + order_queue_printer.print_order_item(print_settings, oqs, order_item.order_id, order_items_id, print_status=" (Cancelled)", before_updated_qty ) end end - - print_settings=PrintSetting.find_by_unique_code(unique_code) - order_queue_printer= Printer::OrderQueuePrinter.new(print_settings) - order_queue_printer.print_order_item(print_settings, oqs, order_item.order_id, order_items_id, print_status=" (Cancelled)", before_updated_qty ) end end diff --git a/app/controllers/oqs/print_controller.rb b/app/controllers/oqs/print_controller.rb index baa4af40..930d3d5c 100755 --- a/app/controllers/oqs/print_controller.rb +++ b/app/controllers/oqs/print_controller.rb @@ -26,7 +26,7 @@ class Oqs::PrintController < ApplicationController assigned_item_id = params[:id] options = params[:options] assigned_item = AssignedOrderItem.find(assigned_item_id) - assigned_items = AssignedOrderItem.where("item_code='" + assigned_item.item_code + "' AND " + "order_id='" + assigned_item.order_id + "'"); + assigned_items = AssignedOrderItem.where("item_code='" + assigned_item.item_code + "' AND " + "order_id='" + assigned_item.order_id + "'") # order queue stations oqs = assigned_item.order_queue_station diff --git a/app/controllers/origami/payments_controller.rb b/app/controllers/origami/payments_controller.rb index da5f216b..943fc3e9 100755 --- a/app/controllers/origami/payments_controller.rb +++ b/app/controllers/origami/payments_controller.rb @@ -431,13 +431,17 @@ class Origami::PaymentsController < BaseOrigamiController if(Sale.exists?(sale_id)) saleObj = Sale.find(sale_id) + #calculate cash acmount + cash = saleObj.total_amount + if saleObj.discount_type == "member_discount" - saleObj.update_attributes(rounding_adjustment: 0) + saleObj.update_attributes(grand_total: 0, rounding_adjustment: 0, amount_received: 0, amount_changed: 0) saleObj.compute_by_sale_items(sale_id, saleObj.sale_items,0,order_source) end - saleObj.update_attributes(rounding_adjustment: 0) - + saleObj.update_attributes(grand_total: 0, rounding_adjustment: 0, amount_received: 0, amount_changed: 0) + puts "FOC" + puts saleObj.to_json sale_payment = SalePayment.new sale_payment.process_payment(saleObj, current_user.name, cash, "foc" ,remark) # For Cashier by Zone diff --git a/app/controllers/settings/menus_controller.rb b/app/controllers/settings/menus_controller.rb index b7e02fb5..c7de4df8 100755 --- a/app/controllers/settings/menus_controller.rb +++ b/app/controllers/settings/menus_controller.rb @@ -62,7 +62,8 @@ class Settings::MenusController < ApplicationController def destroy # @settings_menu.destroy abc = Menu.destroyMenu(@settings_menu) - @settings_menu_item_set.destroy + + # @settings_menu_item_set.destroy flash[:notice] = 'Menu was successfully destroyed.' render :json => {:status=> "Success", :url => settings_menus_path }.to_json # respond_to do |format| @@ -71,12 +72,110 @@ class Settings::MenusController < ApplicationController # end end + def export + @settings_menus = Menu.all.page(params[:page]).per(10) + menu = Menu.find(params[:id]) + + p = Axlsx::Package.new + wb = p.workbook + wb.styles do |s| + time_format = wb.styles.add_style :format_code => 'hh:mm:ss' + title = s.add_style :fg_color => "004586", + :b => true, + :sz => 12 + wrap_text = s.add_style :sz => 11, + :alignment => { :horizontal => :left,:vertical => :center , + :wrap_text => true} + header_text = s.add_style :fg_color=> "090909", + :b => true, + :sz => 12, + :border => { :style => :thin, :color => "00" }, + :alignment => { :horizontal => :left, + :vertical => :center , + :header_text => true} + + # Menu Sheet + wb.add_worksheet(name: menu.name) do |sheet| + sheet.add_row ["Name",menu.name], :style=>title + sheet.add_row + + sheet.add_row ["Category Code", "Category Name", "Item Code", "Item Name", "Item AltName", "Taxable", "Instance Code", "Instance Name", "Price"], :style=>header_text + menu.menu_categories.each do |mc| + mc.menu_items.each do |mi| + mi.menu_item_instances.each do |mii| + sheet.add_row [ mc.code, mc.name, mi.item_code, mi.name, mi.alt_name, mi.taxable, mii.item_instance_code, mii.item_instance_name, mii.price], :style=>wrap_text + end + end + end + + + # # Category + # menu.menu_categories.each do |mc| + # sheet.add_row ["Category"], :style=>wrap_text + # sheet.add_row %w(id menu_id code name alt_name order_by created_by menu_category_id is_available), :style=>header_text + # 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 + # sheet.add_row + + # # Menu Item + # mc.menu_items.each do |mi| + # sheet.add_row ["Menu Item"], :style=>wrap_text + # 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 + # 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 + # sheet.add_row + + # # Menu Item Instance + # sheet.add_row ["Menu Item Instance"], :style=>wrap_text + # 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 + # mi.menu_item_instances.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 + # sheet.add_row + # end + # end + end + + # # Account + # 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.id, acc.title,acc.account_type,acc.discount,acc.point,acc.bonus,acc.rebate], :style=>wrap_text + # end + # end + + # # Item set + # wb.add_worksheet(name: "Item Set") do |sheet| + # 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.id,set.name, set.alt_name, set.min_selectable_qty, set.max_selectable_qty], :style=>wrap_text + # end + # end + + # # Item Options + # 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 + + # # Item Attributes + # 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 + end + + p.serialize("tmp/menus/" + menu.name + ".xlsx") + render :json => {status: true} + end + def import if params[:file] - Menu.import(params[:file]) - redirect_to settings_menus_path, notice: "Menu was successfully Imported" - end - + status = Menu.import(params[:file], current_user.name) + redirect_to settings_menus_path, notice: status + end end private diff --git a/app/models/menu.rb b/app/models/menu.rb index 9f4e6b14..d81079bd 100755 --- a/app/models/menu.rb +++ b/app/models/menu.rb @@ -45,99 +45,142 @@ class Menu < ApplicationRecord end end - def self.import(file) - + def self.import(file, created_by) + status = "" 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] + if spreadsheet.sheets.count > 1 + sheet_count = spreadsheet.sheets.count-1 + for i in 0..sheet_count do + header = spreadsheet.sheet(i).row(1) + sheet_name = spreadsheet.sheets[i] - (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"]) + (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 + else + # Menu by Menu Import + accs = Account.all + account_id = 1 + if accs.length > 0 + account_id = accs[0].id + else + status = "No Account Created." + end + + sheet = spreadsheet.sheet(0) + menu = sheet.row(1)[1] + imported_menu = Menu.create({name: menu, is_active: true, valid_days: "1,2,3,4,5,6,7",valid_time_from: "00:00:00", valid_time_to: "23:59:59", created_by: created_by}) + + (4..sheet.last_row).each do |ii| + row = Hash[[sheet.row(3),sheet.row(ii)].transpose] + menu_cat = MenuCategory.find_by_code(row["Category Code"]) + if !menu_cat + menu_cat = MenuCategory.create({menu_id: imported_menu.id, code: row["Category Code"], name: row["Category Name"], alt_name: '', order_by: (ii - 3), created_by: created_by, menu_category_id: nil, is_available: 1}) + # else + # status = status + "Category Code already exists." + end + + menu_itm = MenuItem.find_by_item_code(row["Item Code"]) + if !menu_itm + menu_itm = MenuItem.create(item_code: row["Item Code"], name: row["Item Name"], alt_name: row["Item AltName"], image_path: "", description: '', information: '', unit: '', type: "SimpleMenuItem", menu_category_id: menu_cat.id, item_attributes: "[]", item_options: "[]", account_id: account_id, 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) + # else + # status = status + "Instance Code already exists for " + row["Instance Name"] + "." + end + end end - + # if status == '' + status="Menu Imported!" + # end + + return status end def self.open_spreadsheet(file) diff --git a/app/models/menu_category.rb b/app/models/menu_category.rb index 666f251a..7fb23647 100755 --- a/app/models/menu_category.rb +++ b/app/models/menu_category.rb @@ -33,7 +33,7 @@ class MenuCategory < ApplicationRecord abc = MenuItem.deleteRecursive(item) end menu_category.destroy - return false + return true end end diff --git a/app/models/menu_item.rb b/app/models/menu_item.rb index 836e0caf..03e90011 100755 --- a/app/models/menu_item.rb +++ b/app/models/menu_item.rb @@ -55,27 +55,35 @@ class MenuItem < ApplicationRecord def self.deleteRecursive(menu_item) # find the sub menu item of current item - sub_menu_items = MenuItem.where("id=?",menu_item.id) - if sub_menu_items.length != 0 - sub_menu_items.each do |subitem| - # if deleteRecursive(subitem) - # end - end - # find the instances of current menu item - instances = MenuItemInstance.where("menu_item_id=?",menu_item.id) - instances.each do |instance| - instance.destroy - end - menu_item.destroy - return true - else - instances = MenuItemInstance.where("menu_item_id=?",menu_item.id) - instances.each do |instance| - instance.destroy - end - menu_item.destroy - return false + # sub_menu_items = MenuItem.where("id=?",menu_item.id) + # if sub_menu_items.length != 0 + # # sub_menu_items.each do |subitem| + # # # if deleteRecursive(subitem) + # # # end + # # end + # # find the instances of current menu item + # instances = MenuItemInstance.where("menu_item_id=?",menu_item.id) + # instances.each do |instance| + # instance.menu_instance_item_sets.destroy_all + # end + # menu_item.menu_item_sets.destroy_all + # return true + # else + # instances = MenuItemInstance.where("menu_item_id=?",menu_item.id) + # instances.each do |instance| + # instance.menu_instance_item_sets.destroy_all + # end + # menu_item.menu_item_sets.destroy_all + # return true + # end + instances = MenuItemInstance.where("menu_item_id=?",menu_item.id) + instances.each do |instance| + instance.menu_instance_item_sets.destroy_all + instance.destroy end + menu_item.menu_item_sets.destroy_all + menu_item.destroy + return true end # private diff --git a/app/models/sale.rb b/app/models/sale.rb index 883fbad4..49c27448 100755 --- a/app/models/sale.rb +++ b/app/models/sale.rb @@ -361,6 +361,8 @@ class Sale < ApplicationRecord end end + compute_tax(sale, total_taxable, total_discount, order_source) + sale.total_amount = subtotal_price sale.total_discount = total_discount sale.grand_total = (sale.total_amount - sale.total_discount) + sale.total_tax @@ -371,8 +373,6 @@ class Sale < ApplicationRecord # adjust_rounding sale.rounding_adjustment = compute_adjust_rounding(sale.grand_total) - compute_tax(sale, total_taxable, total_discount, order_source) - sale.save! end diff --git a/app/models/sale_payment.rb b/app/models/sale_payment.rb index e43414b8..4621adba 100755 --- a/app/models/sale_payment.rb +++ b/app/models/sale_payment.rb @@ -263,10 +263,12 @@ class SalePayment < ApplicationRecord self.payment_method = "foc" self.payment_amount = self.received_amount - self.outstanding_amount = self.sale.grand_total.to_f - self.received_amount.to_f + # self.outstanding_amount = self.sale.grand_total.to_f - self.received_amount.to_f + self.outstanding_amount = 0.00 self.payment_status = "paid" payment_method = self.save! - sale_update_payment_status(self.received_amount) + # sale_update_payment_status(self.received_amount) + sale_update_payment_status(0) return payment_status end diff --git a/app/views/layouts/_header.html.erb b/app/views/layouts/_header.html.erb index e42f33ec..d6a2d2f1 100755 --- a/app/views/layouts/_header.html.erb +++ b/app/views/layouts/_header.html.erb @@ -100,8 +100,8 @@ $.ajax({ type: method, url: url , - success: function(data) { - location.href = data.url; + success: function(data) { + location.href = data.url; } }); } else { diff --git a/app/views/origami/home/show.html.erb b/app/views/origami/home/show.html.erb index ec935f04..f28e291f 100755 --- a/app/views/origami/home/show.html.erb +++ b/app/views/origami/home/show.html.erb @@ -300,7 +300,7 @@ <% end %> <% end %> - <% if !order_item.set_menu_items.nil? + <% if !order_item.set_menu_items.nil? && order_item.set_menu_items != '[]' JSON.parse(order_item.set_menu_items).each do |item_instance| %>
<%= item_instance["item_instance_name"] %> diff --git a/app/views/origami/rooms/show.html.erb b/app/views/origami/rooms/show.html.erb index 43c4d5e7..565abcf7 100755 --- a/app/views/origami/rooms/show.html.erb +++ b/app/views/origami/rooms/show.html.erb @@ -370,7 +370,7 @@ <% end %> <% end %> - <% if !order_item.set_menu_items.nil? + <% if !order_item.set_menu_items.nil? && order_item.set_menu_items != '[]' JSON.parse(order_item.set_menu_items).each do |item_instance| %>
<%= item_instance["item_instance_name"] %> diff --git a/app/views/settings/menus/export.html.erb b/app/views/settings/menus/export.html.erb new file mode 100644 index 00000000..e69de29b diff --git a/app/views/settings/menus/index.html.erb b/app/views/settings/menus/index.html.erb index 5fafa5db..42eca334 100755 --- a/app/views/settings/menus/index.html.erb +++ b/app/views/settings/menus/index.html.erb @@ -62,9 +62,12 @@ <%= link_to t("views.btn.edit"), edit_settings_menu_path(settings_menu),:class => 'btn btn-info btn-sm waves-effect' %> - - - <% end %> + + backup + + + + <% end %> @@ -101,3 +104,21 @@ + + diff --git a/config/routes.rb b/config/routes.rb index 0c0f47a9..94db2ebd 100755 --- a/config/routes.rb +++ b/config/routes.rb @@ -310,8 +310,10 @@ scope "(:locale)", locale: /en|mm/ do collection do post :import end - resources :menu_categories, only: [:new, :create, :edit, :delete] - end + resources :menu_categories, only: [:new, :create, :edit, :delete] + end + + get '/menus/:id/export' => 'menus#export' resources :item_sets diff --git a/lib/tasks/clear_data.rake b/lib/tasks/clear_data.rake index 9d476d67..247992be 100755 --- a/lib/tasks/clear_data.rake +++ b/lib/tasks/clear_data.rake @@ -17,7 +17,7 @@ namespace :clear do Survey.delete_all DiningFacility.update_all(status:'available') CashierTerminal.update_all(is_currently_login: 0) - SeedGenerator.where("id > 1").update(:current => 0, :next => 1) + SeedGenerator.where("id > 1").update(:current => 0, :next => 0) puts "Clear Data Done." end