Merge branch 'master' of ssh://bitbucket.org/code2lab/sxrestaurant

This commit is contained in:
Min Zeya Phyo
2017-06-06 21:39:13 +06:30
14 changed files with 154 additions and 52 deletions

View File

@@ -13,7 +13,7 @@ gem 'rails', '~> 5.1.0'
gem 'mysql2', '>= 0.3.18', '< 0.5'
#Use PosgreSQL
# gem 'pg'
gem 'pg'
# redis server for cable
# gem 'redis', '~> 3.0'

View File

@@ -122,6 +122,7 @@ GEM
nokogiri (1.7.2)
mini_portile2 (~> 2.1.0)
pdf-core (0.7.0)
pg (0.20.0)
prawn (2.2.2)
pdf-core (~> 0.7.0)
ttfunk (~> 1.5)
@@ -256,6 +257,7 @@ DEPENDENCIES
kaminari!
listen (~> 3.0.5)
mysql2 (>= 0.3.18, < 0.5)
pg
prawn
prawn-table
puma (~> 3.0)

View File

@@ -25,3 +25,7 @@
.long{
width:100%
}
.purple {
background-color:#7a62d3;
}

View File

@@ -0,0 +1,10 @@
class Origami::CardPaymentsController < BaseOrigamiController
def index
end
def create
end
end

View File

@@ -0,0 +1,10 @@
class Origami::CreditPaymentsController < BaseOrigamiController
def index
end
def create
end
end

View File

@@ -2,13 +2,16 @@ class Origami::PaymentsController < BaseOrigamiController
def index
end
def create
#payment type
#sale status
#point - get [ food amount ]
end
def show
end
end

View File

@@ -14,7 +14,7 @@ class Origami::RequestBillsController < BaseOrigamiController
else
@sale_data = Sale.find_by_sale_id(check_booking.sale_id)
@sale_items = SaleItem.where("sale_id=?",check_booking.sale_id)
end
end
unique_code="ReceiptBillPdf"
@@ -30,7 +30,7 @@ class Origami::RequestBillsController < BaseOrigamiController
def show
sale_id = params[:sale_id]
if Sale.exists?(sale_id)
@sale_data = Sale.find_by_id(sale_id)
@sale_data = Sale.find_by_sale_id(sale_id)
end
end

View File

@@ -230,7 +230,7 @@ class Order < ApplicationRecord
.joins("left join sale_orders on sale_orders.order_id = orders.order_id")
.joins("left join sales on sales.sale_id = sale_orders.sale_id")
.where("booking_orders.order_id IS NOT NULL and dining_facilities.type=? and dining_facilities.is_active=?",DiningFacility::TABLE_TYPE,true)
.group("bookings.booking_id")
.group("bookings.booking_id,sales.receipt_no,orders.status,sales.sale_id,dining_facilities.name,orders.status")
end
@@ -243,7 +243,7 @@ class Order < ApplicationRecord
.joins("left join sale_orders on sale_orders.order_id = orders.order_id")
.joins("left join sales on sales.sale_id = sale_orders.sale_id")
.where("booking_orders.order_id IS NOT NULL and dining_facilities.type=? and dining_facilities.is_active=?",DiningFacility::ROOM_TYPE,true)
.group("bookings.booking_id")
.group("bookings.booking_id,sales.receipt_no,orders.status,sales.sale_id,dining_facilities.name")
end
#Origami: Cashier : to view order type Room
@@ -255,7 +255,7 @@ class Order < ApplicationRecord
left join dining_facilities on dining_facilities.id = bookings.dining_facility_id
left join order_items on order_items.order_id = orders.order_id")
.where("dining_facilities.type=? and orders.order_type=? and dining_facilities.is_active=?",DiningFacility::ROOM_TYPE,"dine_in",true)
.group("orders.order_id,order_items.order_items_id,dining_facilities.name")
.group("orders.order_id,order_items.order_items_id,dining_facilities.name,sales.receipt_no")
end
@@ -271,7 +271,7 @@ class Order < ApplicationRecord
left join sale_orders on sale_orders.order_id = orders.order_id
left join sales on sales.sale_id = sale_orders.sale_id")
.where("dining_facilities.is_active=? and orders.date between ? and ?",true,from,to)
.group("orders.order_id,order_items.order_items_id,dining_facilities.name")
.group("orders.order_id,order_items.order_items_id,dining_facilities.name,sales.receipt_no,bookings.booking_id,sales.sale_id")
end
private

View File

@@ -1,6 +1,6 @@
class Sale < ApplicationRecord
self.primary_key = "sale_id"
#primary key - need to be unique generated for multiple shops
before_create :generate_custom_id
@@ -17,6 +17,7 @@ class Sale < ApplicationRecord
scope :open_invoices, -> { where("sale_status = 'new' and receipt_date BETWEEN '#{DateTime.now.utc.end_of_day}' AND '#{DateTime.now.utc.beginning_of_day}'") }
def generate_invoice_from_booking(booking_id, requested_by)
puts "get invoice from booking"
booking = Booking.find(booking_id)
status = false
Rails.logger.debug "Booking -> " + booking.id.to_s
@@ -32,6 +33,7 @@ class Sale < ApplicationRecord
booking.sale_id = sale_id
end
order = booking.booking_orders.take.order
puts "add sale order"
link_order_sale(order.id)
return status
end
@@ -68,8 +70,8 @@ class Sale < ApplicationRecord
add_item(item)
end
link_order_sale(order.id)
link_order_sale(order.id)
end
@@ -226,9 +228,14 @@ class Sale < ApplicationRecord
def link_order_sale(order_id)
#create if it doesn't exist
if (SaleOrder.where("sale_id = #{self.id} and order_id=#{order_id}").nil?)
saleOrder = SaleOrder.where("sale_id=? and order_id=?", self.id, order_id).take
if saleOrder.nil?
SaleOrder.create(:sale_id => self.id, :order_id => order_id)
end
# if (SaleOrder.where("sale_id = #{self.id} and order_id=#{order_id}").nil?)
# SaleOrder.create(:sale_id => self.id, :order_id => order_id)
# end
#dosomrting here
#puts Time.now.format(":short")
end

View File

@@ -0,0 +1 @@
Hello Card Payment

View File

@@ -0,0 +1 @@
hello Credit

View File

@@ -25,7 +25,7 @@
<% if @booking_orders %>
<% @booking_orders.each do |booking_order| %>
<% if !booking_order.order_status = 'new'%>
<% if booking_order.order_status != "new" %>
<div style="background-color: red;color: white;" class="card" id="table-order-<%=booking_order.sale_id%>" onclick="callOrderDetails('sale_<%=booking_order.sale_id%>')">
<div class="card-block">
<h4 class="card-title">
@@ -204,14 +204,17 @@
var old_order_id = 0
var old_table_name = ""
var table_or_order_id = 0
var pay_sale_id = 0
function callOrderDetails(sale_order_id){
var order_id = 0
var sale_id = 0
var data_val = ""
sale_order = sale_order_id.split("_")[0]
if (sale_order == 'sale') {
order_id = sale_order_id.split("_")[1]
sale_id = sale_order_id.split("_")[1]
url = "origami/"+sale_order_id.split("_")[1]
data_val = { sale_id: sale_order_id.split("_")[1]}
@@ -222,6 +225,7 @@ function callOrderDetails(sale_order_id){
}
table_or_order_id = order_id
pay_sale_id = sale_id
var tbody = ""
$("#append-table").html("")
if (old_order_id != order_id){
@@ -308,14 +312,15 @@ $( document ).ready(function() {
window.location.href = '/origami/request_bills/'+ table_or_order_id
return false;
});
$('#pay').click(function() {
window.location.href = '/origami/sale/'+ pay_sale_id + "/payment"
return false;
});
});
$( document ).ready(function() {
$('#pay').click(function() {
window.location.href = '/origami/sale/'+ 10 + "/payment"
return false;
});
});
</script>
<style type="text/css">

View File

@@ -4,9 +4,12 @@
<div class="card" >
<div class="card-header">
<div id="order-title">
<span><strong>Receipt No : <%=@sale_data.receipt_no rescue ' '%></strong></span>
<span style="margin-left: 40%"><strong>Receipt Date : <%=@sale_data.receipt_date rescue '-'%></strong></span>
<span><strong>Table No</strong> <% if @sale_data%>- <%=@sale_data.receipt_no%><% end %></span>
<span><strong>Sale Id</strong> </span><span id="sale_id"><% if @sale_data %><%=@sale_data.sale_id %><% end %></span>
</div>
</div>
<div class="card-block">
@@ -61,38 +64,38 @@
</tr>
</tfooter>
</table>
</div>
</div>
<div style='text-align:center;margin-top:20px'>
<INPUT TYPE="Button" class='btn btn-primary' VALUE="Reprint" onClick="" style='width:120px'/>
<INPUT TYPE="Submit" class='btn btn-primary' VALUE="CANCEL" action="origami/index" style='width:120px'/>
<!-- <INPUT TYPE="Button" class='btn btn-primary' VALUE="Reprint" onClick="" style='width:120px'/>
<INPUT TYPE="Submit" class='btn btn-primary' VALUE="CANCEL" action="origami/index" style='width:120px'/> -->
</div>
</div>
</div>
</div>
<div class="col-lg-5 col-md-5 col-sm-3">
<div class="row">
<div class="col-md-8">AMOUNT DUE</div>
<div class="col-md-4"><%= @sale_data.grand_total %></div>
<div class="col-md-8"><strong>AMOUNT DUE</strong></div>
<div class="col-md-4"><strong><span id="amount_due"><%= @sale_data.grand_total %></span></strong></div>
</div>
<hr>
<div class="row">
<div class="col-md-8">CASH</div>
<div class="col-md-4">0.0</div>
<div class="col-md-4" id="cash" >0.0</div>
</div>
<hr>
<div class="row">
<div class="row" id="credit_payment">
<div class="col-md-8">CREDIT</div>
<div class="col-md-4">0.0</div>
</div>
<hr>
<div class="row">
<div class="row" id="card_payment">
<div class="col-md-8">CARD</div>
<div class="col-md-4">0.0</div>
</div>
<hr>
<div class="row">
<div class="col-md-8">BALANCE</div>
<div class="col-md-4">0.0</div>
<div class="col-md-4"><span id='balance'><%= @sale_data.grand_total %></span></div>
</div>
<hr>
<div class="row">
@@ -100,49 +103,49 @@
<div class="row">
<div class="col-md-7">
<div class="row">
<div class="col-md-3 cashier_number" data-value="1">1</div>
<div class="col-md-3 cashier_number">2</div>
<div class="col-md-3 cashier_number">3</div>
<div class="col-md-3 cashier_number" data-value="1" data-type="num">1</div>
<div class="col-md-3 cashier_number" data-value="2" data-type="num">2</div>
<div class="col-md-3 cashier_number" data-value="3" data-type="num">3</div>
</div>
</div>
<div class="col-md-5">
<div class="col-md-12 cashier_number long">1000</div>
<div class="col-md-12 cashier_number long" data-value="1000" data-type="add">1000</div>
</div>
</div>
<div class="row">
<div class="col-md-7">
<div class="row">
<div class="col-md-3 cashier_number">4</div>
<div class="col-md-3 cashier_number">5</div>
<div class="col-md-3 cashier_number">6</div>
<div class="col-md-3 cashier_number" data-value="4" data-type="num">4</div>
<div class="col-md-3 cashier_number" data-value="5" data-type="num">5</div>
<div class="col-md-3 cashier_number" data-value="6" data-type="num">6</div>
</div>
</div>
<div class="col-md-5">
<div class="col-md-12 cashier_number long">5000</div>
<div class="col-md-12 cashier_number long" data-value="5000" data-type="add">5000</div>
</div>
</div>
<div class="row">
<div class="col-md-7">
<div class="row">
<div class="col-md-3 cashier_number">7</div>
<div class="col-md-3 cashier_number">8</div>
<div class="col-md-3 cashier_number">9</div>
<div class="col-md-3 cashier_number" data-value="7" data-type="num">7</div>
<div class="col-md-3 cashier_number" data-value="8" data-type="num">8</div>
<div class="col-md-3 cashier_number" data-value="9" data-type="num">9</div>
</div>
</div>
<div class="col-md-5">
<div class="col-md-12 cashier_number long">10000</div>
<div class="col-md-12 cashier_number long" data-value="10000" data-type="add">10000</div>
</div>
</div>
<div class="row">
<div class="col-md-7">
<div class="row">
<div class="col-md-3 cashier_number">0</div>
<div class="col-md-3 cashier_number">.</div>
<div class="col-md-3 cashier_number">00</div>
<div class="col-md-3 cashier_number" data-value="0" data-type="num">0</div>
<div class="col-md-3 cashier_number" data-value="." data-type="num">.</div>
<div class="col-md-3 cashier_number" data-value="00" data-type="num">00</div>
</div>
</div>
<div class="col-md-5">
<div class="col-md-12 cashier_number long">50000</div>
<div class="col-md-12 cashier_number long" data-value="50000" data-type="add">50000</div>
</div>
</div>
<div class="row">
@@ -154,7 +157,7 @@
</div>
</div>
<div class="col-md-5">
<div class="col-md-12 cashier_number long">ENTER</div>
<div class="col-md-12 cashier_number long purple " id="pay">PAY</div>
</div>
</div>
</div>
@@ -167,13 +170,67 @@ $(document).on('click', '.cashier_number', function(event){
event.stopPropagation();
event.preventDefault();
if(event.handled !== true) {
var input_value = $(this).attr("data-value");
switch (input_value) {
var original_value;
original_value = $('#cash').text();
}
event.handled = true;
var input_type = $(this).attr("data-type");
switch (input_type) {
case 'num':
var input_value = $(this).attr("data-value");
if (original_value == "0.0"){
$('#cash').text(input_value);
update_balance();
}else{
$('#cash').append(input_value);
update_balance();
}
break;
case 'add':
var input_value = $(this).attr("data-value");
amount = parseInt(input_value) + parseInt(original_value);
$('#cash').text(amount);
update_balance();
break;
}
event.handled = true;
} else {
return false;
}
});
$( document ).ready(function() {
$('#credit_payment').click(function() {
var sale_id = $('#sale_id').text();
window.location.href = '/origami/sale/'+ sale_id + "/payment/credit_payment"
return false;
});
$('#card_payment').click(function() {
var sale_id = $('#sale_id').text();
window.location.href = '/origami/sale/'+ sale_id + "/payment/card_payment"
return false;
});
$('#pay').click(function() {
console.log("pay")
if($('#amount_due').text() > 0){
console.log("greater")
}else{
console.log("less")
}
});
});
function update_balance(){
var cash = $('#cash').text();
var credit = $('#credit').text();
var card = $('#card').text();
var amount_due = $('#amount_due').text();
var total = cash + credit + card
var result = amount_due - total
$('#balance').text(result);
}
</script>

View File

@@ -72,8 +72,10 @@ Rails.application.routes.draw do
resources :discounts, only: [:index,:new, :create ] #add discount type
resources :customers, only: [:index,:new, :create ] #add customer type
end
resources :request_bills, only: [:show]
# resources :request_bills, only: [:show]
get 'sale/:sale_id/payment' => 'request_bills#show'
get 'sale/:sale_id/payment/credit_payment' => "credit_payments#index"
get 'sale/:sale_id/payment/card_payment' => "card_payments#index"
end
#--------- Waiter/Ordering Station ------------#