change split bill process

This commit is contained in:
phyusin
2018-02-14 14:14:53 +06:30
parent 13ab1ff5be
commit f19fb769f6
9 changed files with 133 additions and 76 deletions

View File

@@ -101,7 +101,7 @@ SQL Update after rake clear:data runned
Change type in mysql Change type in mysql
*run if you got font error for Myanmar, Chinese, etc... *run if you got font error for Myanmar, Chinese, etc...
=> ALTER TABLE [table_name] CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci #for table => ALTER TABLE [table_name] CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci #for table
=> ALTER DATABASE [database_name] CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci #for database => ALTER DATABASE [database_name] CHARACTER SET utf8 COLLATE utf8_unicode_ci #for database
For split bill For split bill
1) settings/lookups => { type:split_bill, name:SplitBill, value:1 } 1) settings/lookups => { type:split_bill, name:SplitBill, value:1 }

View File

@@ -38,6 +38,8 @@ class Origami::HomeController < BaseOrigamiController
if !order.order_items.empty? if !order.order_items.empty?
if !@order_items_count.key?(booking.dining_facility_id) if !@order_items_count.key?(booking.dining_facility_id)
@order_items_count.store(booking.dining_facility_id, order.order_items.count) @order_items_count.store(booking.dining_facility_id, order.order_items.count)
else
@order_items_count[booking.dining_facility_id] += order.order_items.count
end end
end end
end end
@@ -47,6 +49,8 @@ class Origami::HomeController < BaseOrigamiController
if sale.sale_status !='completed' if sale.sale_status !='completed'
if !@order_items_count.key?(booking.dining_facility_id) if !@order_items_count.key?(booking.dining_facility_id)
@order_items_count.store(booking.dining_facility_id, sale.sale_items.count) @order_items_count.store(booking.dining_facility_id, sale.sale_items.count)
else
@order_items_count[booking.dining_facility_id] += sale.sale_items.count
end end
end end
end end
@@ -116,9 +120,9 @@ class Origami::HomeController < BaseOrigamiController
@checkout_alert_time = Lookup.collection_of('checkout_alert_time') @checkout_alert_time = Lookup.collection_of('checkout_alert_time')
#for split bill #for split bill
lookup_spit_bill = Lookup.collection_of('split_bill') lookup_spit_bill = Lookup.collection_of('split_bill')
@spit_bill = 0 @split_bill = 0
if !lookup_spit_bill[0].nil? if !lookup_spit_bill[0].nil?
@spit_bill = lookup_spit_bill[0][1] @split_bill = lookup_spit_bill[0][1]
end end
end end

View File

@@ -13,6 +13,21 @@ class Origami::OrdersController < BaseOrigamiController
end end
end end
@orders.each do |order|
order.order_items.each_with_index do |item, index|
if !item.set_menu_items.nil?
instance_item_sets = JSON.parse(item.set_menu_items)
arr_instance_item_sets = Array.new
instance_item_sets.each do |instance_item|
item_instance_name = MenuItemInstance.find_by_item_instance_code(instance_item["item_instance_code"]).item_instance_name
arr_instance_item_sets.push(item_instance_name)
item.price = item.price.to_f + instance_item["price"].to_f
end
order.order_items[index].set_menu_items = arr_instance_item_sets
end
end
end
@order_items_count = Hash.new @order_items_count = Hash.new
bookings = Booking.all bookings = Booking.all
if !bookings.nil? if !bookings.nil?
@@ -24,6 +39,8 @@ class Origami::OrdersController < BaseOrigamiController
if !order.order_items.empty? if !order.order_items.empty?
if !@order_items_count.key?(booking.dining_facility_id) if !@order_items_count.key?(booking.dining_facility_id)
@order_items_count.store(booking.dining_facility_id, order.order_items.count) @order_items_count.store(booking.dining_facility_id, order.order_items.count)
else
@order_items_count[booking.dining_facility_id] += order.order_items.count
end end
end end
end end
@@ -33,6 +50,8 @@ class Origami::OrdersController < BaseOrigamiController
if sale.sale_status !='completed' if sale.sale_status !='completed'
if !@order_items_count.key?(booking.dining_facility_id) if !@order_items_count.key?(booking.dining_facility_id)
@order_items_count.store(booking.dining_facility_id, sale.sale_items.count) @order_items_count.store(booking.dining_facility_id, sale.sale_items.count)
else
@order_items_count[booking.dining_facility_id] += sale.sale_items.count
end end
end end
end end

View File

@@ -34,6 +34,8 @@ class Origami::RoomsController < BaseOrigamiController
if !order.order_items.empty? if !order.order_items.empty?
if !@order_items_count.key?(booking.dining_facility_id) if !@order_items_count.key?(booking.dining_facility_id)
@order_items_count.store(booking.dining_facility_id, order.order_items.count) @order_items_count.store(booking.dining_facility_id, order.order_items.count)
else
@order_items_count[booking.dining_facility_id] += order.order_items.count
end end
end end
end end
@@ -43,6 +45,8 @@ class Origami::RoomsController < BaseOrigamiController
if sale.sale_status !='completed' if sale.sale_status !='completed'
if !@order_items_count.key?(booking.dining_facility_id) if !@order_items_count.key?(booking.dining_facility_id)
@order_items_count.store(booking.dining_facility_id, sale.sale_items.count) @order_items_count.store(booking.dining_facility_id, sale.sale_items.count)
else
@order_items_count[booking.dining_facility_id] += sale.sale_items.count
end end
end end
end end
@@ -119,9 +123,9 @@ class Origami::RoomsController < BaseOrigamiController
# end # end
lookup_spit_bill = Lookup.collection_of('split_bill') lookup_spit_bill = Lookup.collection_of('split_bill')
@spit_bill = 0 @split_bill = 0
if !lookup_spit_bill[0].nil? if !lookup_spit_bill[0].nil?
@spit_bill = lookup_spit_bill[0][1] @split_bill = lookup_spit_bill[0][1]
end end
end end

View File

@@ -28,11 +28,40 @@ class Origami::SplitBillController < BaseOrigamiController
arr_instance_item_sets = Array.new arr_instance_item_sets = Array.new
instance_item_sets.each do |instance_item| instance_item_sets.each do |instance_item|
item_instance_name = MenuItemInstance.find_by_item_instance_code(instance_item["item_instance_code"]).item_instance_name item_instance_name = MenuItemInstance.find_by_item_instance_code(instance_item["item_instance_code"]).item_instance_name
item.price = item.price.to_f + instance_item["price"].to_f
arr_instance_item_sets.push(item_instance_name) arr_instance_item_sets.push(item_instance_name)
end end
item.set_menu_items = arr_instance_item_sets item.set_menu_items = arr_instance_item_sets
end end
@order_items.push(item)
arr_item = Hash.new
if item.qty.to_i > 1
i = 1
while i <= item.qty.to_i do
arr_item = {'order_items_id' => item.order_items_id,
'order_id' => item.order_id,
'order_item_status' => item.order_item_status,
'item_order_by' => item.item_order_by,
'item_code' => item.item_code,
'item_instance_code' => item.item_instance_code,
'item_name' => item.item_name,
'alt_name' => item.alt_name,
'account_id' => item.account_id,
'qty' => '1.0',
'price' => item.price,
'remark' => item.remark,
'options' => item.options,
'set_menu_items' => item.set_menu_items,
'taxable' => item.taxable,
'completed_by' => item.completed_by,
'created_at' => item.created_at,
'updated_at' => item.updated_at}
i += 1
@order_items.push({@order.order_id => arr_item})
end
else
@order_items.push({@order.order_id => item})
end
end end
end end
end end
@@ -186,8 +215,25 @@ class Origami::SplitBillController < BaseOrigamiController
order_items.each do |order_item| order_items.each do |order_item|
orderItem = OrderItem.find(order_item["id"]) orderItem = OrderItem.find(order_item["id"])
orderItem.order_id = order.order_id if orderItem.qty.to_f != order_item['qty'].to_f
orderItem.save! OrderItem.processs_item(orderItem.item_code,
orderItem.item_instance_code,
orderItem.item_name,
orderItem.alt_name,
orderItem.account_id,
order_item['qty'],
orderItem.price,
orderItem.options,
orderItem.set_menu_items,
orderItem.order_id,
orderItem.item_order_by,
orderItem.taxable)
orderItem.qty = orderItem.qty.to_f - order_item['qty'].to_f
else
orderItem.order_id = order.order_id
end
orderItem.save!
end end
end end
end end

View File

@@ -386,9 +386,9 @@
end end
%> %>
</table> </table>
<button class='btn btn-primary' id='add_invoice'> Add to existing invoice</button> <button class='btn btn-primary btn-block waves-effect' id='add_invoice'> Add to existing invoice</button>
<% if !@spit_bill.nil? && @spit_bill == '1' %> <% if !@spit_bill.nil? && @spit_bill == '1' %>
<button class='btn btn-primary' id='split_bill'> Split Bill</button> <button class='btn btn-primary btn-block waves-effect' id='split_bill'> Split Bill</button>
<% end %> <% end %>
<% end %> <% end %>
<% if @sale_array.size > 1 %> <% if @sale_array.size > 1 %>
@@ -439,6 +439,11 @@
<!-- <button type="button" id="other-charges" class="btn btn-block bg-blue waves-effect" disabled>Charges</button> --> <!-- <button type="button" id="other-charges" class="btn btn-block bg-blue waves-effect" disabled>Charges</button> -->
<button type="button" class="btn btn-block bg-blue waves-effect" id='move'>Move</button> <button type="button" class="btn btn-block bg-blue waves-effect" id='move'>Move</button>
<button type="button" id="request_bills" class="btn btn-block bg-blue waves-effect">Req.Bill</button> <button type="button" id="request_bills" class="btn btn-block bg-blue waves-effect">Req.Bill</button>
<% if !@split_bill.nil? %>
<% if @split_bill == '1' %>
<button type="button" id="split_bills" class="btn btn-block bg-blue waves-effect">Split Bill</button>
<% end %>
<% end %>
<!-- <button type="button" id="first_bill" class="btn btn-block bg-blue waves-effect" disabled>First Bill</button> --> <!-- <button type="button" id="first_bill" class="btn btn-block bg-blue waves-effect" disabled>First Bill</button> -->
<!-- <button type="button" id="pay" class="btn btn-block bg-blue waves-effect" disabled>Pay</button> --> <!-- <button type="button" id="pay" class="btn btn-block bg-blue waves-effect" disabled>Pay</button> -->
<!-- <button type="button" class="btn btn-block bg-blue waves-effect" disabled> Void</button> --> <!-- <button type="button" class="btn btn-block bg-blue waves-effect" disabled> Void</button> -->
@@ -711,30 +716,6 @@
// Bill Request // Bill Request
$('#request_bills').click(function () { $('#request_bills').click(function () {
var lookup_split_bill = '<%= @spit_bill %>';
if(lookup_split_bill == '1'){
swal({
title: "Information!",
text: "Do you want to Split bill?",
type: "success",
showCancelButton: true,
confirmButtonColor: "#009900",
confirmButtonText: "Yes, split it!",
closeOnConfirm: false
}, function (isConfirm) {
if (isConfirm) {
var dining_id = "<%= @dining.id %>";
window.location.href = '/origami/table/' + dining_id + "/split_bills";
}else{
requestBillProcess();
}
});
}else{
requestBillProcess();
}
});
function requestBillProcess(){
var order_id = $('#save_order_id').attr('data-order'); var order_id = $('#save_order_id').attr('data-order');
var ajax_url = "/origami/" + order_id + "/request_bills"; var ajax_url = "/origami/" + order_id + "/request_bills";
$.ajax({ $.ajax({
@@ -749,8 +730,14 @@
location.reload(); location.reload();
} }
} }
}); });
} });
//split bill process
$('#split_bills').click(function(){
var dining_id = "<%= @dining.id %>";
window.location.href = '/origami/table/' + dining_id + "/split_bills";
});
$('#move').on('click', function () { $('#move').on('click', function () {
var dining_id = "<%= @dining.id %>"; var dining_id = "<%= @dining.id %>";

View File

@@ -200,7 +200,14 @@
%> %>
<% unless sale_item.price <= 0 %> <% unless sale_item.price <= 0 %>
<tr> <tr>
<td class='item-name'><%= sale_item.item_name %></td> <td class='item-name'>
<%= sale_item.item_name %>
<% if !sale_item.set_menu_items.nil?
sale_item.set_menu_items.each do |item_instance| %>
<br><span class="font-13"><%= item_instance %></span>
<% end
end %>
</td>
<td class='item-attr'><%= sale_item.qty %></td> <td class='item-attr'><%= sale_item.qty %></td>
<td class='item-attr'><%= sale_item.price %></td> <td class='item-attr'><%= sale_item.price %></td>
</tr> </tr>

View File

@@ -411,6 +411,11 @@
<button type="button" id="customer" class="btn bg-blue btn-block" >Customer</button> <button type="button" id="customer" class="btn bg-blue btn-block" >Customer</button>
<button type="button" class="btn bg-blue btn-block" id='move'>Move</button> <button type="button" class="btn bg-blue btn-block" id='move'>Move</button>
<button type="button" id="request_bills" class="btn bg-blue btn-block">Req.Bill</button> <button type="button" id="request_bills" class="btn bg-blue btn-block">Req.Bill</button>
<% if !@split_bill.nil? %>
<% if @split_bill == '1' %>
<button type="button" id="split_bills" class="btn btn-block bg-blue waves-effect">Split Bill</button>
<% end %>
<% end %>
<!-- <button type="button" id="first_bill" class="btn bg-blue btn-block" disabled>First Bill</button> --> <!-- <button type="button" id="first_bill" class="btn bg-blue btn-block" disabled>First Bill</button> -->
<!-- <button type="button" id="pay" class="btn bg-blue btn-block" disabled>Pay</button> --> <!-- <button type="button" id="pay" class="btn bg-blue btn-block" disabled>Pay</button> -->
<!-- <button type="button" class="btn bg-blue btn-block" disabled=""> Void </button> --> <!-- <button type="button" class="btn bg-blue btn-block" disabled=""> Void </button> -->
@@ -714,30 +719,6 @@ $('#pay').on('click',function() {
}); });
// Bill Request // Bill Request
$('#request_bills').click(function() { $('#request_bills').click(function() {
var lookup_split_bill = '<%= @spit_bill %>';
if(lookup_split_bill == '1'){
swal({
title: "Information!",
text: "Do you want to Split bill?",
type: "success",
showCancelButton: true,
confirmButtonColor: "#009900",
confirmButtonText: "Yes, split it!",
closeOnConfirm: false
}, function (isConfirm) {
if (isConfirm) {
var dining_id = "<%= @room.id %>";
window.location.href = '/origami/room/' + dining_id + "/split_bills";
}else{
requestBillProcess();
}
});
}else{
requestBillProcess();
}
});
function requestBillProcess(){
var order_id = $('#save_order_id').attr('data-order'); var order_id = $('#save_order_id').attr('data-order');
var ajax_url = "/origami/" + order_id + "/request_bills"; var ajax_url = "/origami/" + order_id + "/request_bills";
$.ajax({ $.ajax({
@@ -753,7 +734,13 @@ function requestBillProcess(){
} }
} }
}); });
} });
//split bill process
$('#split_bills').click(function(){
var dining_id = "<%= @room.id %>";
window.location.href = '/origami/room/' + dining_id + "/split_bills";
});
$('#move').on('click',function(){ $('#move').on('click',function(){
var dining_id = "<%= @room.id %>" var dining_id = "<%= @room.id %>"

View File

@@ -59,32 +59,34 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<% if !order.order_items.nil? %> <% if !@order_items.nil? %>
<% sub_total = 0 %> <% sub_total = 0 %>
<% order.order_items.each do |order_item| %> <% @order_items.each do |order_item| %>
<% if order_item.include? (order.order_id.to_s) %>
<% <%
sub_total += order_item.qty*order_item.price sub_total += order_item[order.order_id.to_s]['qty'].to_f * order_item[order.order_id.to_s]['price'].to_f
%> %>
<tr class="item-row" id=<%= order_item.order_items_id %> > <tr class="item-row" id=<%= order_item[order.order_id.to_s]['order_items_id'] %> >
<td style="width:60%; text-align:left"> <td style="width:60%; text-align:left">
<span id="item-order-id" class="hidden"><%=order_item.order_id%></span> <span id="item-order-id" class="hidden"><%=order_item[order.order_id.to_s]['order_id'] %></span>
<span id="item-account-type" class="hidden"><%=order_item.account_id%></span> <span id="item-account-type" class="hidden"><%=order_item[order.order_id.to_s]['account_id'] %></span>
<span id="item-name-price"> <span id="item-name-price">
<%=order_item.item_name%> <%=order_item[order.order_id.to_s]['item_name'] %>
<% if !order_item.set_menu_items.nil? <% if !order_item[order.order_id.to_s]['set_menu_items'].nil?
order_item.set_menu_items.each do |item_instance| %> order_item[order.order_id.to_s]['set_menu_items'].each do |item_instance| %>
<br><span class="font-13"><%= item_instance %></span> <br><span class="font-13"><%= item_instance %></span>
<% end <% end
end %> end %>
</span> </span>
</td> </td>
<td style="width:20%; text-align:right"> <td style="width:20%; text-align:right">
<span id="item-qty"><%=order_item.qty%></span> <span id="item-qty"><%=order_item[order.order_id.to_s]['qty']%></span>
</td> </td>
<td style="width:20%; text-align:right"> <td style="width:20%; text-align:right">
<span id="item-total-price"><%=(order_item.qty*order_item.price)%></span> <span id="item-total-price"><%=(order_item[order.order_id.to_s]['qty'].to_f * order_item[order.order_id.to_s]['price'].to_f)%></span>
</td> </td>
</tr> </tr>
<% end %>
<% <%
end end
%> %>
@@ -148,9 +150,9 @@
<div class="col-lg-1 col-md-1 col-sm-1"> <div class="col-lg-1 col-md-1 col-sm-1">
<!-- Action Panel --> <!-- Action Panel -->
<div> <div>
<button type="button" class="btn bg-default btn-block" id="back" ><i class="material-icons">reply</i> Back </button> <button type="button" class="btn bg-default btn-block waves-effect" id="back" ><i class="material-icons">reply</i> Back </button>
<button id="order_split" class="btn btn-primary text-center action-btn" style="width:100%">Orders Split</button> <button id="order_split" class="btn btn-primary text-center action-btn waves-effect">By Order &nbsp;</button>
<button id="order_item_split" class="btn btn-primary text-center action-btn">Order Items Split</button> <button id="order_item_split" class="btn btn-primary text-center action-btn waves-effect">By Order Item</button>
</div> </div>
</div> </div>
<!-- Column Three --> <!-- Column Three -->
@@ -417,6 +419,7 @@ function get_selected_order_items(){
order_item.order_id = $(this).find('#item-order-id').text().trim(); order_item.order_id = $(this).find('#item-order-id').text().trim();
order_item.name = $(this).find('#item-name-price').text().split('@')[0]; order_item.name = $(this).find('#item-name-price').text().split('@')[0];
order_item.account_id = $(this).find('#item-account-type').text(); order_item.account_id = $(this).find('#item-account-type').text();
order_item.qty = $(this).find('#item-qty').text();
order_item.price = $(this).find('#item-total-price').text(); order_item.price = $(this).find('#item-total-price').text();
order_items.push(order_item); order_items.push(order_item);
}); });