diff --git a/app/controllers/reports/product_sale_controller.rb b/app/controllers/reports/product_sale_controller.rb
index 0061818a..afb4b537 100644
--- a/app/controllers/reports/product_sale_controller.rb
+++ b/app/controllers/reports/product_sale_controller.rb
@@ -2,79 +2,19 @@ class Reports::ProductSaleController < BaseReportController
authorize_resource :class => false
def index
- from, to = get_date_range_from_params
- shift_sale_range = Sale.get_by_shift_sale(from,to,Sale::SALE_STATUS_COMPLETED)
+ order_by = 'desc'
+ if !params[:order_by].nil?
+ order_by = params[:order_by]
+ end
- shift = ''
- if params[:shift_name].to_i != 0
- shift_sale = ShiftSale.find(params[:shift_name])
- if to.blank?
- shift = ShiftSale.where('shift_started_at = ? and shift_closed_at is NULL ',shift_sale.shift_started_at)
- else
-
- shift = ShiftSale.where('shift_started_at = ? and shift_closed_at = ? ',shift_sale.shift_started_at, shift_sale.shift_closed_at)
- end
- end
- @sale_data, @grand_total = Sale.get_by_items(shift_sale_range,shift, from, to)
-
- @sale_taxes = Sale.get_separate_tax(shift_sale_range,shift,from,to,nil)
-
- @account_cate_count = Hash.new {|hash, key| hash[key] = 0}
-
-
- @sale_data.each {|acc_cate| @account_cate_count[acc_cate.account_id] += 1}
-
- @menu_cate_count = Hash.new {|hash, key| hash[key] = 0}
- @sale_data.each {|cate| @menu_cate_count[cate.account_id] += 1}
-
-
- @totalByAccount = Hash.new {|hash, key| hash[key] = 0}
- @sale_data.each {|acc| @totalByAccount[acc.account_id] += acc.grand_total}
-
- @from = from
- @to = to
+ @sale_data = Sale.get_menu_item_query(order_by)
# get printer info
@print_settings = PrintSetting.get_precision_delimiter()
- if shift.present?
- shift.each do |sh|
- @shift_from = sh.shift_started_at.nil? ? '-' : sh.shift_started_at.utc.getlocal.strftime("%e %b %I:%M%p")
- @shift_to = sh.shift_closed_at.nil? ? '-' : sh.shift_closed_at.utc.getlocal.strftime("%e %b %I:%M%p")
- @shift_data = sh
- end
- end
-
respond_to do |format|
format.html
format.xls
end
end
-
- # def show
- # from, to, report_type = get_date_range_from_params
-
- # @sale_data = Sale.get_by_shift_sale(from,to,Sale::SALE_STATUS_COMPLETED)
-
- # date_arr = Array.new
- # @sale_data.each do |sale|
- # local_opening_date = sale.opening_date.nil? ? '-' : sale.opening_date.utc.getlocal.strftime("%e %b %I:%M%p")
- # local_closing_date = sale.closing_date.nil? ? '-' : sale.closing_date.utc.getlocal.strftime("%e %b %I:%M%p")
- # opening_date = sale.opening_date.nil? ? '-' : sale.opening_date.utc
- # closing_date = sale.closing_date.nil? ? '-' : sale.closing_date.utc
- # shift_id = sale.id.nil? ? '-' : sale.id
- # str = {:shift_id => shift_id, :local_opening_date => local_opening_date, :local_closing_date => local_closing_date, :opening_date => opening_date, :closing_date => closing_date}
- # date_arr.push(str)
- # end
-
- # @totalByAccount = Hash.new {|hash, key| hash[key] = 0}
- # @sale_data.each {|acc| @totalByAccount[acc.account_id] += acc.grand_total}
-
- # out = {:status => 'ok', :message => date_arr}
-
- # respond_to do |format|
- # format.json { render json: out }
- # end
- # end
-
end
diff --git a/app/models/sale.rb b/app/models/sale.rb
index 54806964..4167d549 100755
--- a/app/models/sale.rb
+++ b/app/models/sale.rb
@@ -861,45 +861,23 @@ def self.get_by_shift_items(shift_sale_range, shift, from, to, status)
end
#product sale report query
-def self.get_menu_item_query()
- query = MenuItem.select("acc.id as account_id, acc.title as account_name,
- i.item_instance_code as item_code, " +
- "i.qty as qty," +
- "i.product_name as product_name,
+def self.get_menu_item_query(order_by)
+ query = MenuItem.unscoped.select("acc.id as account_id,
+ acc.title as account_name,
+ mii.item_instance_code as item_code, " +
+ "(CASE WHEN si.qty > 0 THEN SUM(si.qty) ELSE 0 END) as total_item," +
+ "(CASE WHEN si.unit_price > 0 THEN si.unit_price ELSE mii.price END) as unit_price," +
+ "(CASE WHEN (si.qty * si.unit_price) > 0 THEN (si.qty * si.unit_price) ELSE 0 END) as grand_total," +
+ "mii.price as unit_price, menu_items.name as product_name,
mc.name as" +
- " menu_category_name,mc.id as menu_category_id ")
-
- query = query.joins(" LEFT JOIN menu_item_instances mii ON i.item_instance_code = mii.item_instance_code" +
- " LEFT JOIN menu_items mi ON mi.id = mii.menu_item_id" +
- " LEFT JOIN menu_categories mc ON mc.id = mi.menu_category_id" +
- " LEFT JOIN accounts acc ON acc.id = mi.account_id")
- query = query.group("acc.title,mi.account_id,mi.menu_category_id,mi.name,mii.price")
- .order("acc.title desc, mi.account_id desc, mi.menu_category_id desc, mii.price asc")
-end
-
-def self.get_by_items(shift_sale_range, shift, from, to)
- query = self.get_menu_item_query()
-
- puts "query"
- total_grand_total = 0
-
- # if shift.present?
- # query = query.where("sales.shift_sale_id IN (?)",shift.to_a)
-
- # # total_grand_total = total_cash_amount.to_f + total_card_amount.to_f + total_credit_amount.to_f
-
- # ### => get all sales range in shift_sales
- # elsif shift_sale_range.present?
- # query = query.where("sales.shift_sale_id IN (?)",shift_sale_range.to_a)
-
- # # total_grand_total = total_cash_amount.to_f + total_card_amount.to_f + total_credit_amount.to_f
-
- # else
- # query = query.where("sales.receipt_date between ? and ?",from,to)
- # # total_grand_total = total_cash_amount.to_f + total_card_amount.to_f + total_credit_amount.to_f
- # end
-
- return query, total_grand_total
+ " menu_category_name,mc.id as menu_category_id, si.remark as status_type, si.price as price ")
+ .joins(" LEFT JOIN menu_item_instances mii ON menu_items.id = mii.menu_item_id" +
+ " LEFT JOIN menu_categories mc ON mc.id = menu_items.menu_category_id" +
+ " LEFT JOIN accounts acc ON acc.id = menu_items.account_id" +
+ " LEFT JOIN sale_items si ON si.item_instance_code = mii.item_instance_code" +
+ " LEFT JOIN sales s ON s.sale_id = si.sale_id")
+ .group("mc.id, menu_items.name, si.qty, (CASE WHEN si.unit_price > 0 THEN si.unit_price ELSE mii.price END)")
+ .order("si.qty #{order_by}, menu_items.menu_category_id desc")
end
#product sale report query
diff --git a/app/views/reports/product_sale/_shift_sale_report_filter.html.erb b/app/views/reports/product_sale/_shift_sale_report_filter.html.erb
deleted file mode 100755
index 88f26c1f..00000000
--- a/app/views/reports/product_sale/_shift_sale_report_filter.html.erb
+++ /dev/null
@@ -1,120 +0,0 @@
-
- <%= form_tag report_path, :method => :get, :id=>"frm_report", :class => "form" do %>
- <% if period_type != false %>
-
-
- <%= t("views.right_panel.detail.select_period") %>
-
- <%= t("views.right_panel.detail.select_period") %>
- Today
- Yesterday
- This week
- Last week
- Last 7 days
- This month
- Last month
- Last 30 days
- This year
- Last year
-
-
-
-
-
- <%= t("views.right_panel.detail.from") %>
-
-
-
- <%= t("views.right_panel.detail.to") %>
-
-
-
- All Shift
-
-
-
-
-
-
-
-
- <% end %>
-
- <% end %>
-
-
-
diff --git a/app/views/reports/product_sale/index.html.erb b/app/views/reports/product_sale/index.html.erb
index 12e1dfe1..ab3136a3 100644
--- a/app/views/reports/product_sale/index.html.erb
+++ b/app/views/reports/product_sale/index.html.erb
@@ -9,31 +9,25 @@
- <%= render :partial=>'shift_sale_report_filter',
- :locals=>{ :period_type => true, :shift_name => true, :report_path =>reports_product_sale_index_path} %>
-
-
-
+
+
+ Order by Qty
+
+ ASC
+ DESC
+
+
+
+
-
- <%= t("views.right_panel.detail.from_date") %> : <%= @from.utc.getlocal.strftime("%Y-%b-%d") rescue '-' %> - <%= t("views.right_panel.detail.to_date") %> : <%= @to.utc.getlocal.strftime("%Y-%b-%d") rescue '-'%>
-
- <% if @shift_from %>
-
- <% if @shift_data.employee %>
- <% cashier_name = !@shift_data.nil? ? @shift_data.employee.name : '-' %>
- <% end %>
- <%= t("views.right_panel.detail.shift_name") %> = <%= @shift_from %> - <%= @shift_to %> ( <%= cashier_name %> )
-
- <% end %>
<%= t("views.right_panel.header.menu_category") %>
@@ -41,7 +35,7 @@
<%= t("views.right_panel.detail.product") %>
<%= t("views.right_panel.detail.total") %> <%= t("views.right_panel.detail.item") %>
<%= t("views.right_panel.detail.unit_price") %>
- <%= t("views.right_panel.detail.revenue") %>
+ <%= t("views.right_panel.detail.total") %>
@@ -58,114 +52,48 @@
end
%>
<% unless @sale_data.blank? %>
- <% acc_arr = Array.new %>
- <% cate_arr = Array.new %>
+ <% acc_arr = Array.new %>
+ <% cate_arr = Array.new %>
- <% sub_qty = 0 %>
- <% sub_total = 0 %>
- <% other_sub_total = 0 %>
- <% count = 0 %>
- <% total_price = 0 %>
- <% cate_count = 0 %>
- <% acc_count = 0 %>
- <% grand_total = 0 %>
- <% total_qty = 0 %>
- <% total_amount = 0 %>
- <% discount = 0 %>
- <% total_item_foc = 0 %>
- <% total_item_dis = 0.0 %>
- <% total_tax = 0 %>
+ <% grand_total = 0 %>
+ <% total_qty = 0 %>
- <% @sale_data.each do |sale| %>
-
- <% if sale.status_type != "Discount" && sale.status_type != "foc"
- total_qty += sale.total_item
- end %>
- <% if sale.status_type == "foc" && sale.price > 0
- total_qty += sale.total_item
- end %>
-
- <% if sale.status_type == "foc" && sale.grand_total < 0
- total_item_foc += sale.grand_total*(-1)
- end %>
-
- <% if sale.status_type == "Discount" && sale.grand_total < 0
- total_item_dis += sale.grand_total*(-1)
- end %>
-
- <% if !acc_arr.include?(sale.account_id) %>
-
- <%= sale.account_name %>
-
- <%= t("views.right_panel.detail.total_price_by") %> <%= sale.account_name %>
-
- <% @totalByAccount.each do |account, total| %>
- <% if sale.account_id == account %>
- <%= number_with_precision(total, precision:precision.to_i,delimiter:delimiter) %>
- <% grand_total += total %>
- <% end %>
- <% end %>
-
-
- <% acc_arr.push(sale.account_id) %>
- <% end %>
-
-
- <% if !cate_arr.include?(sale.menu_category_id) %>
- <%= sale.menu_category_name %>
- <% cate_arr.push(sale.menu_category_id) %>
- <% else %>
-
- <% end %>
- <%= sale.item_code rescue '-' %>
- <%= sale.product_name rescue '-' %>
- <%= sale.total_item rescue '-' %>
- <%= number_with_precision(sale.unit_price , precision:precision.to_i,delimiter:delimiter) rescue '-'%>
- <%= number_with_precision(sale.grand_total , precision:precision.to_i,delimiter:delimiter) rescue '-'%>
-
-
-
- <% @menu_cate_count.each do |key,value| %>
- <% if sale.account_id == key %>
- <% count = count + 1 %>
- <% sub_total += sale.grand_total %>
- <% #sub_qty += sale.total_item %>
- <% if sale.status_type!="Discount" && (!sale.product_name.include? "FOC")
- sub_qty += sale.total_item
+ <% @sale_data.each do |sale| %>
+ <% if sale.status_type != "Discount" && sale.status_type != "foc"
+ total_qty += sale.total_item
+ grand_total += sale.grand_total
+ end %>
+ <% if sale.status_type == "foc" && sale.price > 0
+ total_qty += sale.total_item
+ grand_total += sale.grand_total
end %>
- <% if count == value %>
-
-
- Total <%= sale.account_name %> Qty
- <%= sub_qty %>
- <%= t("views.right_panel.detail.sub_total") %>
- <%= number_with_precision(sub_total , precision:precision.to_i,delimiter:delimiter)%>
-
- <% sub_total = 0.0%>
- <% sub_qty = 0 %>
- <% count = 0%>
- <% end %>
- <% end %>
- <% end %>
-
- <% end %>
-
-
-
- <%= t("views.right_panel.detail.total") %> <%= t("views.right_panel.detail.item") %>
- <%= total_qty%>
- <%= t("views.right_panel.detail.total") %> <%= t("views.right_panel.detail.amount") %>
- <%= number_with_precision(grand_total , precision:precision.to_i,delimiter:delimiter)%>
-
- <% end %>
-
-
+
+
+ <% if !cate_arr.include?(sale.menu_category_id) %>
+ <%= sale.menu_category_name %>
+ <% cate_arr.push(sale.menu_category_id) %>
+ <% else %>
+
+ <% end %>
+ <%= sale.item_code rescue '-' %>
+ <%= sale.product_name rescue '-' %>
+ <%= sale.total_item rescue '-' %>
+ <%= number_with_precision(sale.unit_price , precision:precision.to_i,delimiter:delimiter) rescue '-'%>
+ <%= number_with_precision(sale.grand_total , precision:precision.to_i,delimiter:delimiter) rescue '-' %>
+
+
+
+ <% end %>
-
- Net Amount
- <%= number_with_precision(grand_total.to_f - @discount_data.to_f , precision:precision.to_i,delimiter:delimiter)%>
+
+ Total
+ <%= total_qty %>
+
+ <%= number_with_precision(grand_total , precision:precision.to_i,delimiter:delimiter) rescue '-' %>
+
+ <% end %>
@@ -175,118 +103,26 @@
\ No newline at end of file
diff --git a/app/views/reports/product_sale/index.xls.erb b/app/views/reports/product_sale/index.xls.erb
index f97edbb8..7123588c 100755
--- a/app/views/reports/product_sale/index.xls.erb
+++ b/app/views/reports/product_sale/index.xls.erb
@@ -5,17 +5,6 @@
-
- <%= t("views.right_panel.detail.from_date") %> : <%= @from.utc.getlocal.strftime("%Y-%b-%d") rescue '-' %> - <%= t("views.right_panel.detail.to_date") %> : <%= @to.utc.getlocal.strftime("%Y-%b-%d") rescue '-'%>
-
- <% if @shift_from %>
-
- <% if @shift_data.employee %>
- <% cashier_name = !@shift_data.nil? ? @shift_data.employee.name : '-' %>
- <% end %>
- <%= t("views.right_panel.detail.shift_name") %> = <%= @shift_from %> - <%= @shift_to %> ( <%= cashier_name %> )
-
- <% end %>
<%= t("views.right_panel.header.menu_category") %>
@@ -23,149 +12,49 @@
<%= t("views.right_panel.detail.product") %>
<%= t("views.right_panel.detail.total") %> <%= t("views.right_panel.detail.item") %>
<%= t("views.right_panel.detail.unit_price") %>
- <%= t("views.right_panel.detail.revenue") %>
+ <%= t("views.right_panel.detail.total") %>
<% unless @sale_data.blank? %>
- <% acc_arr = Array.new %>
- <% cate_arr = Array.new %>
+ <% acc_arr = Array.new %>
+ <% cate_arr = Array.new %>
+ <% grand_total = 0 %>
+ <% total_qty = 0 %>
- <% sub_total = 0 %>
- <% other_sub_total = 0 %>
- <% count = 0 %>
- <% total_price = 0 %>
- <% cate_count = 0 %>
- <% acc_count = 0 %>
- <% grand_total = 0 %>
- <% total_qty = 0 %>
- <% total_amount = 0 %>
- <% discount = 0 %>
- <% total_item_foc = 0 %>
- <% total_item_dis = 0 %>
+ <% @sale_data.each do |sale| %>
+ <% if sale.status_type != "Discount" && sale.status_type != "foc"
+ total_qty += sale.total_item
+ grand_total += sale.grand_total
+ end %>
+ <% if sale.status_type == "foc" && sale.price > 0
+ total_qty += sale.total_item
+ grand_total += sale.grand_total
+ end %>
- <% @sale_data.each do |sale| %>
-
- <% if sale.total_item > 0
- total_qty += sale.total_item
- end %>
-
- <% if !acc_arr.include?(sale.account_id) %>
- <%= sale.account_name %>
-
- <%= t("views.right_panel.detail.total_price_by") %> <%= sale.account_name %>
-
- <% @totalByAccount.each do |account, total| %>
- <% if sale.account_id == account %>
- <%= total %>
- <% grand_total += total %>
- <% end %>
- <% end %>
-
+
+ <% if !cate_arr.include?(sale.menu_category_id) %>
+ <%= sale.menu_category_name %>
+ <% cate_arr.push(sale.menu_category_id) %>
+ <% else %>
+
+ <% end %>
+ <%= sale.item_code rescue '-' %>
+ <%= sale.product_name rescue '-' %>
+ <%= sale.total_item rescue '-' %>
+ <%= sale.unit_price rescue '-' %>
+ <%= sale.grand_total rescue '-' %>
- <% acc_arr.push(sale.account_id) %>
<% end %>
-
- <% if !cate_arr.include?(sale.menu_category_id) %>
- <%= sale.menu_category_name %>
- <% cate_arr.push(sale.menu_category_id) %>
- <% else %>
-
- <% end %>
- <%= sale.item_code rescue '-' %>
- <%= sale.product_name rescue '-' %>
- <%= sale.total_item rescue '-' %>
- <%= sale.unit_price rescue '-' %>
- <%= sale.grand_total rescue '-' %>
-
-
- <% @menu_cate_count.each do |key,value| %>
- <% if sale.menu_category_id == key %>
-
- <% count = count + 1 %>
- <% sub_total += sale.grand_total %>
- <% if count == value %>
-
-
- <%= t("views.right_panel.detail.sub_total") %>
- <%= sub_total %>
-
- <% if sale.status_type === "foc"
- total_item_foc += sale.grand_total
- end %>
-
- <% if sale.status_type === "Discount"
- total_item_dis += sale.grand_total
- end %>
- <% sub_total = 0.0%>
- <% count = 0%>
- <% end %>
- <% end %>
- <% end %>
-
- <% end %>
-
-
- Other Charges
-
-
-
- <% @other_charges.each do |other| %>
- <% if other.total_item > 0
- total_qty += other.total_item
- end %>
- <% grand_total +=other.grand_total%>
-
-
- Other Charges
- <%= other.item_code rescue '-' %>
- <%= other.product_name rescue '-' %>
- <%= other.total_item rescue '-' %>
- <%= other.unit_price rescue '-' %>
- <%= other.grand_total rescue '-' %>
-
-
-
- <% other_sub_total += other.grand_total %>
-
- <% end %>
-
-
- <%= t("views.right_panel.detail.sub_total") %>
- <%= other_sub_total %>
-
-
-
-
- <%= t("views.right_panel.detail.total") %> <%= t("views.right_panel.detail.item") %>
- <%= total_qty%>
- <%= t("views.right_panel.detail.net_amount") %>
- <%= grand_total%>
-
- <% end %>
-
-
-
- <%= t("views.right_panel.detail.foc_item") %> <%= t("views.right_panel.detail.amount") %>
- <%= total_item_foc %>
-
-
-
- <%= t("views.right_panel.detail.item_discount") %> <%= t("views.right_panel.detail.amount") %>
- <%= total_item_dis %>
-
-
-
- <%= t("views.right_panel.detail.foc_sales") %>
- <%= @foc_data %>
-
-
-
- <%= t("views.right_panel.detail.discount") %> <%= t("views.right_panel.detail.amount") %>
- <%= @discount_data %>
-
+
+ Total
+ <%= total_qty %>
+
+ <%= grand_total rescue '-' %>
+
+ <% end %>