1) eager load reports for receipt/details 2) introduce number_format lookups to replace print_settings for number formatting 3) implement NumberFormattable concern, reference number_format lookups or print_settings if not exist, to get number format settings and number formatting 4) replace rails NumberHelper.number_with_precision with NumberFormattable.number_format hopefully to reduce overhead, formatting numbers for huge lists of data
340 lines
19 KiB
Plaintext
Executable File
340 lines
19 KiB
Plaintext
Executable File
|
|
<div class="page-header">
|
|
<ol class="breadcrumb">
|
|
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li>
|
|
<li class="breadcrumb-item active"><%= t("views.right_panel.detail.daily_sale_report") %></li>
|
|
<span class="float-right">
|
|
<%= link_to 'Back', dashboard_path %>
|
|
</span>
|
|
</ol>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-md-12 col-lg-12 col-sm-12 ">
|
|
<%= render :partial=>'shift_sale_report_filter',
|
|
:locals=>{ :period_type => true, :shift_name => false, :report_path =>reports_dailysale_index_path} %>
|
|
<hr />
|
|
<div class=" text-right">
|
|
<a href="javascript:export_to('<%=reports_dailysale_index_path%>.xls')" class = "btn btn-info wave-effects"><%= t("views.btn.exp_to_excel") %></a>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col-md-12 col-lg-12">
|
|
<div class="card mbl_card">
|
|
<div class="body table-responsive">
|
|
<table class="table table-bordered">
|
|
<thead>
|
|
<tr>
|
|
<th colspan="<%= column_count = @payment_methods.length + 8 %>"> <%= 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 '-'%></th>
|
|
</tr>
|
|
<% @payment_methods.each_slice(10) do |slice| %>
|
|
<tr>
|
|
<th></th>
|
|
<th></th>
|
|
<% alph = "A" %>
|
|
<% @count = 1 %>
|
|
<% slice.each do |payment_method| %>
|
|
<th style="text-align:center;">
|
|
<%= alph %>
|
|
</th>
|
|
<% alph = alph.ord.next.chr %>
|
|
<% @count += 1 %>
|
|
<% end %>
|
|
<th style="text-align:center;" ><%= alph %></th>
|
|
<th style="text-align:center;"><%= alph = alph.ord.next.chr %></th>
|
|
<th style="text-align:center;"><%= alph = alph.ord.next.chr %></th>
|
|
<th style="text-align:center;"><%= alph = alph.ord.next.chr %></th>
|
|
<th style="text-align:center;"><%= alph = alph.ord.next.chr %></th>
|
|
<th style="text-align:center;"><%= alph = alph.ord.next.chr %></th>
|
|
</tr>
|
|
<!-- <tr>
|
|
<th style='text-align:center;'><%= t("views.right_panel.detail.sr") %></th>
|
|
<th style='text-align:center;'><%= t("views.right_panel.detail.date") %></th>
|
|
<% slice.each do |payment_method| %>
|
|
<th style="text-align:center;">
|
|
<%= payment_method %>
|
|
</th>
|
|
<% end %>
|
|
<th style='text-align:center;'><%= t("views.right_panel.detail.cash_sales") %></th>
|
|
<th style='text-align:center;'><%= t("views.right_panel.detail.credit_sales") %></th>
|
|
<th style='text-align:center;'><%= t("views.right_panel.detail.void_amount") %></th>
|
|
<th style='text-align:center;'><%= t("views.right_panel.detail.foc_sales") %></th>
|
|
<% if @payment_methods.include? ("GiftVoucher") %>
|
|
<th style='text-align:center;'><%= t("views.right_panel.detail.giftvoucher_sales") %></th>
|
|
<% end %>
|
|
<th style='text-align:center;'>(<%= t("views.right_panel.detail.discount") %>)</th>
|
|
<!-- <th style='text-align:center;'><%= t("views.right_panel.detail.grand_total") %> + <br/> <%= t("views.right_panel.detail.rnd_adj_sh") %></th> -->
|
|
<!-- <th style='text-align:center;'><%= t("views.right_panel.detail.rnd_adj_sh") %></th>
|
|
<th style='text-align:center;'><%= t("views.right_panel.detail.grand_total") %></th>
|
|
</tr> -->
|
|
<% end %>
|
|
<tr>
|
|
<th></th>
|
|
<th></th>
|
|
<th colspan="<%= @count + 1 %>" style='text-align:center;'>Income</th>
|
|
<th colspan=4 style='text-align:center;'>Outgoing</th>
|
|
</tr>
|
|
<tr>
|
|
<th style='text-align:center;'><%= t("views.right_panel.detail.sr") %></th>
|
|
<th style='text-align:center;'><%= t("views.right_panel.detail.date") %></th>
|
|
|
|
<% if @payment_methods.include? ("MPU") %>
|
|
<th style='text-align:center;' class="d-none d-sm-table-cell"><%= t("views.right_panel.detail.mpu_sales") %></th>
|
|
<% end %>
|
|
<% if @payment_methods.include? ("Master") %>
|
|
<th style='text-align:center;' class="d-none d-sm-table-cell"><%= t("views.right_panel.detail.master_sales") %></th>
|
|
<% end %>
|
|
<% if @payment_methods.include? ("VISA") %>
|
|
<th style='text-align:center;' class="d-none d-sm-table-cell"><%= t("views.right_panel.detail.visa_sales") %></th>
|
|
<% end %>
|
|
<% if @payment_methods.include? ("JCB") %>
|
|
<th style='text-align:center;' class="d-none d-sm-table-cell"><%= t("views.right_panel.detail.jcb_sales") %></th>
|
|
<% end %>
|
|
<% if @payment_methods.include? ("UNIONPAY") %>
|
|
<th style='text-align:center;' class="d-none d-sm-table-cell"><%= t("views.right_panel.detail.unionpay_sales") %></th>
|
|
<% end %>
|
|
<% if @payment_methods.include? ("KBZPay") %>
|
|
<th style='text-align:center;' class="d-none d-sm-table-cell"><%= t("views.right_panel.detail.kbzpay_sales") %></th>
|
|
<% end %>
|
|
<% if @payment_methods.include? ("Alipay") %>
|
|
<th style='text-align:center;' class="d-none d-sm-table-cell"><%= t("views.right_panel.detail.alipay_sales") %></th>
|
|
<% end %>
|
|
<% if @payment_methods.include? ("PAYMAL") %>
|
|
<th style='text-align:center;' class="d-none d-sm-table-cell"><%= t("views.right_panel.detail.paymal_sales") %></th>
|
|
<% end %>
|
|
<% if @payment_methods.include? ("DINGA") %>
|
|
<th style='text-align:center;' class="d-none d-sm-table-cell"><%= t("views.right_panel.detail.dinga_sales") %></th>
|
|
<% end %>
|
|
<% if @payment_methods.include? ("JunctionPay") %>
|
|
<th style='text-align:center;' class="d-none d-sm-table-cell"><%= t("views.right_panel.detail.junctionpay_sales") %></th>
|
|
<% end %>
|
|
<% if @payment_methods.include? ("Redeem") %>
|
|
<th style='text-align:center;' class="d-none d-sm-table-cell"><%= t("views.right_panel.detail.redeem_sales") %></th>
|
|
<% end %>
|
|
<% if @payment_methods.include? ("GiftVoucher") %>
|
|
<th style='text-align:center;'><%= t("views.right_panel.detail.giftvoucher_sales") %></th>
|
|
<% end %>
|
|
<th style='text-align:center;'><%= t("views.right_panel.detail.cash_sales") %></th>
|
|
<th style='text-align:center;'><%= t("views.right_panel.detail.credit_sales") %></th>
|
|
<th style='text-align:center;'><%= t("views.right_panel.detail.void_amount") %></th>
|
|
<th style='text-align:center;'><%= t("views.right_panel.detail.foc_sales") %></th>
|
|
|
|
<th style='text-align:center;'>(<%= t("views.right_panel.detail.discount") %>)</th>
|
|
<!-- <th style='text-align:center;'><%= t("views.right_panel.detail.grand_total") %> + <br/> <%= t("views.right_panel.detail.rnd_adj_sh") %></th> -->
|
|
<th style='text-align:center;'><%= t("views.right_panel.detail.rnd_adj_sh") %></th>
|
|
<th style='text-align:center;'><%= t("views.right_panel.detail.grand_total") %></th>
|
|
|
|
</tr>
|
|
</thead>
|
|
<% unless @sale_data.blank? %>
|
|
<tbody>
|
|
<% void = 0 %>
|
|
<% mpu = 0 %>
|
|
<% master = 0 %>
|
|
<% visa = 0 %>
|
|
<% jcb = 0 %>
|
|
<% unionpay = 0 %>
|
|
<% alipay = 0 %>
|
|
<% paymal = 0 %>
|
|
<% dinga = 0 %>
|
|
<% junctionpay = 0 %>
|
|
<% giftvoucher = 0 %>
|
|
<% paypar = 0 %>
|
|
<% cash = 0 %>
|
|
<% credit = 0 %>
|
|
<% foc = 0 %>
|
|
<% discount = 0 %>
|
|
<% kbzpay = 0 %>
|
|
<% total = 0 %>
|
|
<% grand_total = 0 %>
|
|
<% old_grand_total = 0 %>
|
|
<% count = 1 %> <% rounding_adj = 0 %>
|
|
<% @sale_data.each do |sale| %>
|
|
<% void += sale[:void_amount] %>
|
|
<% mpu += sale[:mpu_amount] %>
|
|
<% master += sale[:master_amount] %>
|
|
<% visa += sale[:visa_amount] %>
|
|
<% jcb += sale[:jcb_amount] %>
|
|
<% unionpay += sale[:unionpay_amount] %>
|
|
<% alipay += sale[:alipay_amount] %>
|
|
<% paymal += sale[:paymal_amount] %>
|
|
<% dinga += sale[:dinga_amount] %>
|
|
<% junctionpay += sale[:junctionpay_amount] %>
|
|
<% giftvoucher += sale[:giftvoucher_amount] %>
|
|
<% paypar += sale[:paypar_amount] %>
|
|
<% cash += sale[:cash_amount]-sale[:total_change_amount] %>
|
|
<% credit += sale[:credit_amount] %>
|
|
<% foc += sale[:foc_amount] %>
|
|
<% discount += sale[:total_discount] %>
|
|
<% kbzpay += sale[:kbzpay_amount] %>
|
|
<% total += sale[:grand_total].to_f + sale[:rounding_adj].to_f %>
|
|
<% grand_total += sale[:grand_total].to_f %>
|
|
<% old_grand_total += sale[:old_grand_total].to_f %>
|
|
<% rounding_adj += sale[:rounding_adj].to_f %>
|
|
<tr>
|
|
<td style='text-align:right;'><%= count %></td>
|
|
<td><%= sale[:sale_date].strftime("#{sale[:sale_date].day.ordinalize} %b") rescue '-' %></td>
|
|
<% if @payment_methods.include? ("MPU") %>
|
|
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(sale[:mpu_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
|
<% end %>
|
|
<% if @payment_methods.include? ("Master") %>
|
|
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(sale[:master_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
|
<% end %>
|
|
<% if @payment_methods.include? ("VISA") %>
|
|
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(sale[:visa_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
|
<% end %>
|
|
<% if @payment_methods.include? ("JCB") %>
|
|
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(sale[:jcb_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
|
<% end %>
|
|
<% if @payment_methods.include? ("UNIONPAY") %>
|
|
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(sale[:unionpay_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
|
<% end %>
|
|
<% if @payment_methods.include? ("Alipay") %>
|
|
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(sale[:alipay_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
|
<% end %>
|
|
<% if @payment_methods.include? ("KBZPay") %>
|
|
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(sale[:kbzpay_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
|
<% end %>
|
|
<% if @payment_methods.include? ("PAYMAL") %>
|
|
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(sale[:paymal_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
|
<% end %>
|
|
<% if @payment_methods.include? ("DINGA") %>
|
|
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(sale[:dinga_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
|
<% end %>
|
|
<% if @payment_methods.include? ("JunctionPay") %>
|
|
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(sale[:junctionpay_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
|
<% end %>
|
|
<% if @payment_methods.include? ("Redeem") %>
|
|
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(sale[:paypar_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
|
<% end %>
|
|
<% if @payment_methods.include? ("GiftVoucher") %>
|
|
<td style='text-align:right;'><%= number_format(sale[:giftvoucher_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
|
<% end %>
|
|
<td style='text-align:right;'><%= number_format(sale[:cash_amount]-sale[:total_change_amount], precision:precision.to_i, delimiter: delimiter) rescue '-'%></td>
|
|
<td style='text-align:right;'><%= number_format(sale[:credit_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
|
<td style='color:red;text-align:right;'><%= number_format(sale[:void_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
|
<td style='text-align:right;'><%= number_format(sale[:foc_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
|
|
|
<td style='text-align:right;'>(<%= number_format(sale[:total_discount], precision:precision,delimiter:delimiter) rescue '-'%>)</td>
|
|
<!-- <td style='text-align:right;'><%= number_format(sale[:grand_total].to_f + sale[:rounding_adj].to_f , precision:precision.to_i,delimiter:delimiter) rescue '-'%></td> -->
|
|
<td style='text-align:right;'><%= number_format(sale[:rounding_adj].to_f, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
|
<td style='text-align:right;'><%= number_format(sale[:grand_total], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
|
|
|
</tr>
|
|
<% count = count + 1 %>
|
|
<% end %>
|
|
<% colspan = 7 %>
|
|
<tr style="font-weight:600;">
|
|
<td colspan="2" style='text-align:center;'>Total</td>
|
|
<% if @payment_methods.include? ("MPU") %>
|
|
<% if !request.user_agent.include? "Mobile" %>
|
|
<% colspan += 1 %>
|
|
<% end %>
|
|
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(mpu , precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
|
<% end%>
|
|
<% if @payment_methods.include? ("Master") %>
|
|
<% if !request.user_agent.include? "Mobile" %>
|
|
<% colspan += 1 %>
|
|
<% end %>
|
|
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(master, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
|
<% end%>
|
|
<% if @payment_methods.include? ("VISA") %>
|
|
<% if !request.user_agent.include? "Mobile" %>
|
|
<% colspan += 1 %>
|
|
<% end %>
|
|
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(visa, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
|
<% end%>
|
|
<% if @payment_methods.include? ("JCB") %>
|
|
<% if !request.user_agent.include? "Mobile" %>
|
|
<% colspan += 1 %>
|
|
<% end %>
|
|
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(jcb, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
|
<% end%>
|
|
<% if @payment_methods.include? ("UNIONPAY") %>
|
|
<% if !request.user_agent.include? "Mobile" %>
|
|
<% colspan += 1 %>
|
|
<% end %>
|
|
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(unionpay, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
|
<% end %>
|
|
<% if @payment_methods.include? ("Alipay") %>
|
|
<% if !request.user_agent.include? "Mobile" %>
|
|
<% colspan += 1 %>
|
|
<% end %>
|
|
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(alipay, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
|
<% end %>
|
|
<% if @payment_methods.include? ("KBZPay") %>
|
|
<% if !request.user_agent.include? "Mobile" %>
|
|
<% colspan += 1 %>
|
|
<% end %>
|
|
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(kbzpay, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
|
<% end %>
|
|
<% if @payment_methods.include? ("PAYMAL") %>
|
|
<% if !request.user_agent.include? "Mobile" %>
|
|
<% colspan += 1 %>
|
|
<% end %>
|
|
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(paymal, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
|
<% end %>
|
|
<% if @payment_methods.include? ("DINGA") %>
|
|
<% if !request.user_agent.include? "Mobile" %>
|
|
<% colspan += 1 %>
|
|
<% end %>
|
|
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(dinga, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
|
<% end %>
|
|
<% if @payment_methods.include? ("JunctionPay") %>
|
|
<% if !request.user_agent.include? "Mobile" %>
|
|
<% colspan += 1 %>
|
|
<% end %>
|
|
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(junctionpay, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
|
<% end %>
|
|
<% if @payment_methods.include? ("Redeem") %>
|
|
<% if !request.user_agent.include? "Mobile" %>
|
|
<% colspan += 1 %>
|
|
<% end %>
|
|
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(paypar, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
|
<% end %>
|
|
<% if @payment_methods.include? ("GiftVoucher") %>
|
|
<% colspan += 1 %>
|
|
<td style='text-align:right;'><%= number_format(giftvoucher, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
|
<% end %>
|
|
<td style='text-align:right;'><%= number_format(cash, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
|
<td style='text-align:right;'><%= number_format(credit, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
|
<td style='color:red;text-align:right;'><%= number_format(void, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
|
<td style='text-align:right;'><%= number_format(foc, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
|
|
|
<td style='text-align:right;'>(<%= number_format(discount, precision:precision.to_i,delimiter:delimiter) rescue '-'%>)</td>
|
|
<td style='text-align:right;'><%= number_format(rounding_adj, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
|
<td style='text-align:right;'><%= number_format(grand_total, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
|
|
|
</tr>
|
|
<tr style="font-weight:600;">
|
|
<td colspan="<%= column_count %>"> </td>
|
|
</tr>
|
|
<% total_tax = 0 %>
|
|
<% net = 0 %>
|
|
<% unless @tax.blank? %>
|
|
<% @tax.each do |tax|
|
|
total_tax += tax.tax_amount.to_f %>
|
|
<tr style="font-weight:600;">
|
|
<td colspan="<%= colspan %>" style='text-align:right;'><%= tax.tax_name rescue '-'%></td>
|
|
<td colspan="2" style='text-align:right;'><%= number_format(tax.tax_amount, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
|
</tr>
|
|
<% end %>
|
|
<% end %>
|
|
|
|
<% net = grand_total %>
|
|
<% net = net - rounding_adj%>
|
|
<% net = net - total_tax %>
|
|
<tr style="font-weight:600;">
|
|
<td colspan="<%= colspan %>" style='text-align:right;'><%= t("views.right_panel.detail.net_amount") %></td>
|
|
<td colspan="2" style='text-align:right;'><%= number_format(net, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
|
</tr>
|
|
</tbody>
|
|
<% end %>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|