diff --git a/app/models/menu_category.rb b/app/models/menu_category.rb index 63bdf6ef..746bcb79 100755 --- a/app/models/menu_category.rb +++ b/app/models/menu_category.rb @@ -94,6 +94,14 @@ class MenuCategory < ApplicationRecord return false end + def self.get_menu_category(item_code) + menu_category = MenuCategory.joins(" JOIN menu_items mi ON mi.menu_category_id = menu_categories.id") + .where("mi.item_code = '#{item_code}'") + .first() + + return menu_category + end + private # def generate_menu_category_code diff --git a/app/models/sale.rb b/app/models/sale.rb index d4b9985e..010cc7df 100644 --- a/app/models/sale.rb +++ b/app/models/sale.rb @@ -249,12 +249,11 @@ class Sale < ApplicationRecord def add_item (item) #check if the item is on promotion + menu_category = MenuCategory.get_menu_category(item.item_code) #get menu category for menu items #save sale_audit sale_item = SaleItem.new - menu_category = MenuCategory.joins(" JOIN menu_items mi ON mi.menu_category_id = menu_categories.id") - .where("mi.item_code = '#{item.item_code}'") - .first() + #pull sale_item.menu_category_code = menu_category.code sale_item.menu_category_name = menu_category.name @@ -278,14 +277,17 @@ class Sale < ApplicationRecord def add_sub_item (item) #check if the item is on promotion JSON.parse(item).each do |item| - + #save sale item sale_item = SaleItem.new #pull instance = MenuItemInstance.find_by_item_instance_code(item["item_instance_code"]) menu_item = instance.menu_item + menu_category = MenuCategory.get_menu_category(menu_item.item_code) #get menu category for menu items + sale_item.menu_category_code = menu_category.code + sale_item.menu_category_name = menu_category.name sale_item.product_code = menu_item.item_code sale_item.item_instance_code = item["item_instance_code"] sale_item.product_name = instance.item_instance_name @@ -994,23 +996,26 @@ def self.get_item_query(type) elsif type == "promotion" sale_type = "i.status = 'promotion'" end - query = Sale.select("acc.title as account_name,mi.account_id, + query = Sale.select("acc.title as account_name, i.item_instance_code as item_code,i.account_id as account_id, " + "SUM(i.qty * i.unit_price) as grand_total, SUM(i.qty) as total_item,i.qty as qty," + "i.status as status_type,i.remark as remark,"+ - "i.unit_price,i.price as price,i.product_name as product_name,mc.name as " + - "menu_category_name,mc.id as menu_category_id ") + "i.unit_price,i.price as price,i.product_name as product_name, " + + "i.menu_category_name,i.menu_category_code as menu_category_id ") - query = query.joins("JOIN sale_items i ON i.sale_id = sales.sale_id" + - " JOIN menu_item_instances mii ON i.item_instance_code = mii.item_instance_code" + - " JOIN menu_items mi ON mi.id = mii.menu_item_id" + - " JOIN shift_sales sh ON sh.`id` = sales.shift_sale_id" + - " JOIN menu_categories mc ON mc.id = mi.menu_category_id ") + # query = query.joins("JOIN sale_items i ON i.sale_id = sales.sale_id" + + # " JOIN menu_item_instances mii ON i.item_instance_code = mii.item_instance_code" + + # " JOIN menu_items mi ON mi.id = mii.menu_item_id" + + # " JOIN shift_sales sh ON sh.`id` = sales.shift_sale_id" + + # " JOIN menu_categories mc ON mc.id = mi.menu_category_id ") + + query = query.joins("JOIN sale_items i ON i.sale_id = sales.sale_id" + + " JOIN shift_sales sh ON sh.`id` = sales.shift_sale_id") # "JOIN employee_accesses ea ON ea.`employee_id` = sales.cashier_id ") - query = query.joins(" JOIN accounts acc ON acc.id = mi.account_id") + query = query.joins(" JOIN accounts acc ON acc.id = i.account_id") query = query.where("#{sale_type}") - query = query.group("acc.title,i.account_id,i.menu_category_code,i.product_name,i.unit_price") + query = query.group("acc.title,i.account_id,i.menu_category_code,i.menu_category_name,i.product_name,i.unit_price") .order("acc.title desc, i.account_id desc, i.menu_category_code desc, i.unit_price asc") end