class SaleItem < ApplicationRecord self.primary_key = "sale_item_id" #primary key - need to be unique generated for multiple shops before_create :generate_custom_id belongs_to :sale #compute items - discount, tax, price_change def compute_item end def self.get_order_items_details(sale_id) order_details = SaleItem.select("sales.total_tax as tax_amount, sales.grand_total as grand_total_amount , sales.total_discount as discount_amount,sales.receipt_date as receipt_date, sales.cashier_name,sales.receipt_no,sale_items.product_name as item_name,sale_items.qty,sale_items.price,sale_items.unit_price as total_price") .joins("left join sales on sales.sale_id = sale_items.sale_id") .where("sale_items.sale_id=?",sale_id) # sale_orders = SaleOrder.where("sale_id=?",sale_id) # if sale_orders # sale_orders.each do |sale_order| # order_details = SaleItem.select("sales.total_discount as discount_amount,DATE_FORMAT(sales.receipt_date,'%Y-%m-%d %h:%m') as receipt_date,sales.cashier_name,sales.receipt_no,sale_items.product_name as item_name,sale_items.qty,sale_items.price,sale_items.unit_price as total_price") # .joins("left join sales on sales.id = sale_items.sale_id") # .where("sale_items.sale_id=?",sale_order.sale_id) # return order_details # end # else # return false # end end def self.calculate_food_beverage(sale_items) food_prices=0 beverage_prices=0 sale_items.each do |si| food_price = self.get_food_price(si.sale_item_id) beverage_price = self.get_beverage_price(si.sale_item_id) food_prices = food_prices + food_price beverage_prices = beverage_prices + beverage_price end return food_prices, beverage_prices end def self.get_food_price(sale_item_id) food=SaleItem.select("sale_items.price") .joins("left join menu_items on menu_items.item_code = sale_items.product_code") .where("sale_items.sale_item_id=? and menu_items.account_id=1", sale_item_id.to_s) food_price = food[0].price rescue 0 end def self.get_beverage_price(sale_item_id) beverage=SaleItem.select("sale_items.price") .joins("left join menu_items on menu_items.item_code = sale_items.product_code") .where("sale_items.sale_item_id=? and menu_items.account_id=2", sale_item_id.to_s) beverage_price = beverage[0].price rescue 0 end private def generate_custom_id self.sale_item_id = SeedGenerator.generate_id(self.class.name, "SLI") end end