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, beverage_price = self.get_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_price(sale_item_id) food_price=0 beverage_price=0 item=SaleItem.select("sale_items.price , menu_items.account_id") .joins("left join menu_items on menu_items.item_code = sale_items.product_code") .where("sale_items.sale_item_id=?", sale_item_id.to_s) if item[0].account_id == 1 food_price = item[0].price else beverage_price = item[0].price end return food_price, beverage_price end private def generate_custom_id self.sale_item_id = SeedGenerator.generate_id(self.class.name, "SLI") end end