split bill for order item
This commit is contained in:
@@ -6,6 +6,15 @@ class Origami::SplitBillController < BaseOrigamiController
|
|||||||
@table = DiningFacility.find(dining_id)
|
@table = DiningFacility.find(dining_id)
|
||||||
@booking = @table.get_booking
|
@booking = @table.get_booking
|
||||||
@order_items = Array.new
|
@order_items = Array.new
|
||||||
|
@sale_data = Array.new
|
||||||
|
|
||||||
|
table_bookings = Booking.where("dining_facility_id = #{dining_id} and sale_id IS NOT NULL")
|
||||||
|
if !table_bookings.nil?
|
||||||
|
table_bookings.each do |table_booking|
|
||||||
|
@sale_data.push(table_booking.sale)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
if @booking
|
if @booking
|
||||||
@booking.booking_orders.each do |booking_order|
|
@booking.booking_orders.each do |booking_order|
|
||||||
@order = Order.find(booking_order.order_id)
|
@order = Order.find(booking_order.order_id)
|
||||||
@@ -21,6 +30,7 @@ class Origami::SplitBillController < BaseOrigamiController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
|
order_ids = params[:order_ids]
|
||||||
order_items = JSON.parse(params[:order_items])
|
order_items = JSON.parse(params[:order_items])
|
||||||
# byebug
|
# byebug
|
||||||
status = false
|
status = false
|
||||||
@@ -59,6 +69,33 @@ class Origami::SplitBillController < BaseOrigamiController
|
|||||||
:checkin_at => Time.now.utc, :checkin_by => current_user.name,
|
:checkin_at => Time.now.utc, :checkin_by => current_user.name,
|
||||||
:booking_status => "assign" })
|
:booking_status => "assign" })
|
||||||
|
|
||||||
|
order_item_count = 0
|
||||||
|
order_id = nil
|
||||||
|
|
||||||
|
order_items.each do |order_item|
|
||||||
|
order_item_count = 0
|
||||||
|
order = Order.find(order_item["order_id"])
|
||||||
|
if order.order_items.count == 1
|
||||||
|
order_id = order.id
|
||||||
|
break
|
||||||
|
else
|
||||||
|
order_item_count += 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if !order_id.nil?
|
||||||
|
BookingOrder.find_by_order_id(order_id).delete
|
||||||
|
|
||||||
|
BookingOrder.create({:booking_id => booking.booking_id, :order_id => order_id})
|
||||||
|
order_items.each do |order_item|
|
||||||
|
orderItem = OrderItem.find(order_item["id"])
|
||||||
|
orderItem.order_id = order_id
|
||||||
|
orderItem.save!
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if order_ids.count == 1 && order_item_count == 1
|
||||||
|
BookingOrder.create({:booking_id => booking.booking_id, :order_id => order_ids[0]})
|
||||||
|
else
|
||||||
customer = Customer.find(params[:customer_id])
|
customer = Customer.find(params[:customer_id])
|
||||||
order_type = "dine_in"
|
order_type = "dine_in"
|
||||||
if !customer.nil?
|
if !customer.nil?
|
||||||
@@ -68,9 +105,9 @@ class Origami::SplitBillController < BaseOrigamiController
|
|||||||
order_type = "delivery"
|
order_type = "delivery"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# begin
|
# begin
|
||||||
order = Order.new
|
order = Order.new
|
||||||
order.date = Time.now.utc
|
|
||||||
order.source = "cashier"
|
order.source = "cashier"
|
||||||
order.order_type = order_type
|
order.order_type = order_type
|
||||||
order.customer_id = params[:customer_id] == ""? "CUS-000000000001" : params[:customer_id] # for no customer id from mobile
|
order.customer_id = params[:customer_id] == ""? "CUS-000000000001" : params[:customer_id] # for no customer id from mobile
|
||||||
@@ -80,14 +117,16 @@ class Origami::SplitBillController < BaseOrigamiController
|
|||||||
order.waiters = current_user.name
|
order.waiters = current_user.name
|
||||||
order.employee_name = current_user.name
|
order.employee_name = current_user.name
|
||||||
order.guest_info = nil
|
order.guest_info = nil
|
||||||
order.save
|
order.save!
|
||||||
|
|
||||||
BookingOrder.create({:booking_id => booking.booking_id, :order_id => order.order_id})
|
BookingOrder.create({:booking_id => booking.booking_id, :order_id => order.order_id})
|
||||||
|
|
||||||
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
|
orderItem.order_id = order.order_id
|
||||||
orderItem.save
|
orderItem.save!
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
sale = Sale.new
|
sale = Sale.new
|
||||||
|
|||||||
@@ -194,15 +194,13 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-footer ">
|
<div class="card-footer ">
|
||||||
<table class="m-b--20" id="order-charges-table" border="0">
|
<table class="table" id="order-charges-table" border="0">
|
||||||
<tr>
|
<tr>
|
||||||
<td class="charges-name"><strong>Sub Total:</strong></td>
|
<td colspan="2" class="charges-name"><strong>Sub Total:</strong></td>
|
||||||
<td class="item-attr"><strong id="order-sub-total"><%= sub_total %></strong></td>
|
<td class="item-attr"><strong id="order-sub-total"><%= sub_total %></strong></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
<td colspan="2" class="charges-name"><strong>Discount:</strong></td>
|
||||||
<td class="charges-name"><strong>Discount:</strong></td>
|
|
||||||
|
|
||||||
<td class="item-attr"><strong id="order-discount">(<%=@selected_item.total_discount rescue 0%>)</strong></td>
|
<td class="item-attr"><strong id="order-discount">(<%=@selected_item.total_discount rescue 0%>)</strong></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="rebate_amount"></tr>
|
<tr class="rebate_amount"></tr>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<!-- Column One -->
|
<!-- Column One -->
|
||||||
<div class="col-lg-8 col-md-8 col-sm-8">
|
<div class="col-lg-7 col-md-7 col-sm-7">
|
||||||
<!-- Order Details -->
|
<!-- Order Details -->
|
||||||
<div class="card" >
|
<div class="card" >
|
||||||
<!-- <div class="card-header">
|
<!-- <div class="card-header">
|
||||||
@@ -12,14 +12,13 @@
|
|||||||
</div> -->
|
</div> -->
|
||||||
<div class="card-block">
|
<div class="card-block">
|
||||||
<div class="card-title row">
|
<div class="card-title row">
|
||||||
<div class="col-lg-6 col-md-6 col-sm-6">
|
<div class="col-lg-12 col-md-12 col-sm-12">
|
||||||
<span class="hidden" id ="table_id" value="<%=@table.id%>"><%=@table.id%></span>
|
<span class="hidden" id ="table_id" value="<%=@table.id%>"><%=@table.id%></span>
|
||||||
<span class="hidden" id="table_type" value="<%=@table.type%>"><%=@table.type%></span>
|
<span class="hidden" id="table_type" value="<%=@table.type%>"><%=@table.type%></span>
|
||||||
|
<% if !@order.nil? %>
|
||||||
<span class="hidden" id="customer_id" value="<%= @order.customer_id %>"><%= @order.customer_id %></span>
|
<span class="hidden" id="customer_id" value="<%= @order.customer_id %>"><%= @order.customer_id %></span>
|
||||||
<p class="m-l-10">Order No: <span id="order_no"><%=@order.order_id rescue ' '%></span></p>
|
<% end %>
|
||||||
</div>
|
<p class="m-l-15">Order Lists</p>
|
||||||
<div class="col-lg-6 col-md-6 col-sm-6 text-right">
|
|
||||||
<p class="m-r-10">Date: <span id="order_date"> <%=@order.created_at.strftime("%d/%m/%Y - %I:%M %p") rescue '-'%></span></p>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="order-detail-slimscroll" data-height="160">
|
<div id="order-detail-slimscroll" data-height="160">
|
||||||
@@ -40,6 +39,7 @@
|
|||||||
%>
|
%>
|
||||||
<tr class="item-row" id=<%= order_item.order_items_id %> >
|
<tr class="item-row" id=<%= order_item.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-account-type" class="hidden"><%=order_item.account_id%></span>
|
<span id="item-account-type" class="hidden"><%=order_item.account_id%></span>
|
||||||
<span id="item-name-price"><%=order_item.item_name%></span>
|
<span id="item-name-price"><%=order_item.item_name%></span>
|
||||||
</td>
|
</td>
|
||||||
@@ -69,16 +69,42 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- Column One -->
|
<!-- Column One -->
|
||||||
<div class="col-lg-3 col-md-3 col-sm-3 clearfix"></div>
|
|
||||||
<!-- Column Two -->
|
<!-- Column Two -->
|
||||||
|
<div class="col-lg-4 col-md-4 col-sm-4">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-block">
|
||||||
|
<div class="card-title row">
|
||||||
|
<p class="m-l-15">Receipt Lists</p>
|
||||||
|
</div>
|
||||||
|
<div id="order-detail-slimscroll" data-height="160">
|
||||||
|
<div class="card-text dining">
|
||||||
|
<% if !@sale_data.nil? %>
|
||||||
|
<table class="table table-default">
|
||||||
|
<tbody>
|
||||||
|
<% @sale_data.each do |sale_data| %>
|
||||||
|
<tr class="receipt_row" id=<%= sale_data.sale_id %> >
|
||||||
|
<td>Receipt No. - <span id="receipt_no"><%= sale_data.receipt_no %></span></td>
|
||||||
|
</tr>
|
||||||
|
<% end %>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-footer"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Column Two -->
|
||||||
|
<!-- Column Three -->
|
||||||
<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" id="back" ><i class="material-icons">reply</i> Back </button>
|
||||||
<button id="order_item_split" class="btn btn-primary btn- action-btn">Order Items Split</button>
|
<button id="order_item_split" class="btn btn-primary btn- action-btn">Order Items Split</button>
|
||||||
<!-- <button id="per_person" class="btn bg-primary btn-block action-btn">Per Person</button> -->
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- Column Three -->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -142,7 +168,7 @@
|
|||||||
var order_items = get_selected_order_items();// Selected Order Items
|
var order_items = get_selected_order_items();// Selected Order Items
|
||||||
var cnt_items = parseInt(cnt_order_item) - parseInt(order_items.length);
|
var cnt_items = parseInt(cnt_order_item) - parseInt(order_items.length);
|
||||||
if (order_items.length > 0){
|
if (order_items.length > 0){
|
||||||
if(cnt_items > 0){
|
// if(cnt_items > 0){
|
||||||
swal({
|
swal({
|
||||||
title: "Alert",
|
title: "Alert",
|
||||||
text: "Are you sure, you want to Split?",
|
text: "Are you sure, you want to Split?",
|
||||||
@@ -156,14 +182,21 @@
|
|||||||
splitBillProcess(cnt_items);
|
splitBillProcess(cnt_items);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
// }
|
||||||
else{
|
// else{
|
||||||
splitBillProcess(cnt_items);
|
// splitBillProcess(cnt_items);
|
||||||
}
|
// }
|
||||||
}else{
|
}else{
|
||||||
swal("Opps","Please select at least on item!","warning");
|
swal("Opps","Please select at least on item!","warning");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
//selected receipt row click
|
||||||
|
$('.receipt_row').on('click',function(){
|
||||||
|
var dining_id = $("#table_id").text();
|
||||||
|
var sale_id = $(this).attr('id').substr(0,16);
|
||||||
|
window.location = '/origami/table/' + dining_id + "/table_invoice/" + sale_id;
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
/* function for split bill process */
|
/* function for split bill process */
|
||||||
@@ -178,22 +211,31 @@ function splitBillProcess(cnt_items){
|
|||||||
booking_id = json_booking.booking_id;
|
booking_id = json_booking.booking_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var order_ids = [];
|
||||||
|
if(order_items!=undefined && order_items!=null){
|
||||||
|
$.each(order_items,function(key,value){
|
||||||
|
if($.inArray(value.order_id,order_ids) == -1){
|
||||||
|
order_ids.push(value.order_id);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
var ajax_url = "/origami/split_bills";
|
var ajax_url = "/origami/split_bills";
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: "POST",
|
type: "POST",
|
||||||
url: ajax_url,
|
url: ajax_url,
|
||||||
dataType: 'JSON',
|
dataType: 'JSON',
|
||||||
data: {'dining_id' : dining_id, 'type': type, 'customer_id' : customer_id, 'booking_id' : booking_id, 'order_items' : JSON.stringify(order_items)},
|
data: {'dining_id' : dining_id, 'type': type, 'customer_id' : customer_id, 'booking_id' : booking_id, 'order_ids' : order_ids, 'order_items' : JSON.stringify(order_items)},
|
||||||
success: function (result) {
|
success: function (result) {
|
||||||
if (!result.status) {
|
if (!result.status) {
|
||||||
swal("Information!", result.error_message);
|
swal("Information!", result.error_message);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (cnt_items > 0){
|
// if (cnt_items > 0){
|
||||||
window.location.reload();
|
window.location.reload();
|
||||||
}else{
|
// }else{
|
||||||
backToOrigami();
|
// backToOrigami();
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -216,6 +258,7 @@ function get_selected_order_items(){
|
|||||||
$('.item-row.selected-item').each(function(i){
|
$('.item-row.selected-item').each(function(i){
|
||||||
var order_item = {};
|
var order_item = {};
|
||||||
order_item.id = $(this).attr('id').substr(0,16);
|
order_item.id = $(this).attr('id').substr(0,16);
|
||||||
|
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.price = $(this).find('#item-total-price').text();
|
order_item.price = $(this).find('#item-total-price').text();
|
||||||
|
|||||||
Reference in New Issue
Block a user