Merge branch 'cloud' of bitbucket.org:code2lab/sxrestaurant

This commit is contained in:
Aung Myo
2018-01-15 12:02:06 +06:30
20 changed files with 336 additions and 365 deletions

2
.gitignore vendored
View File

@@ -37,7 +37,7 @@ pickle-email-*.html
.rbenv-version .rbenv-version
config/deploy/config/* config/deploy/config/*
config/puma.rb config/puma.rb
config/shops.json #config/shops.json
!/log/.keep !/log/.keep
!/tmp/.keep !/tmp/.keep
.ruby-version .ruby-version

View File

@@ -217,31 +217,29 @@ $(document).on('turbolinks:load', function() {
}); });
// Print Order Item // Print Order Item
$(document).on('click', '#print_order_item', function(event){ // $(document).on('click', '#print_order_item', function(event){
var assigned_item_id = $('.selected-item').children('.card-block').children('.assigned-order-item').text(); // var assigned_item_id = $('.selected-item').children('.card-block').children('.assigned-order-item').text();
var options = $('.selected-item').children('.card-block').find('.item-options').text(); // var options = $('.selected-item').children('.card-block').find('.item-options').text();
var params = { 'options':options }; // var params = { 'options':options };
$.ajax({ // $.ajax({
type: 'POST', // type: 'GET',
url: '/oqs/print/print/'+assigned_item_id, // url: '/oqs/print/print/'+assigned_item_id,
data: params, // success: function(data){ }
success: function(data){ } // });
}); // });
});
// Print Order Summary // Print Order Summary
// $('#print_order_summary').on('click',function(){ // $(document).on('click', '#print_order_summary', function(event){
$(document).on('click', '#print_order_summary', function(event){ // var orderNo = $('.selected-item').attr('data-order-no');
var orderNo = $('.selected-item').attr('data-order-no'); // var table_name=$('.selected-item').children().children().children('.order-zone').text().trim();
var table_name=$('.selected-item').children().children().children('.order-zone').text().trim(); // var assigned_item_id=$('.selected-item').children('.card-block').children('.assigned-order-item').text();
var assigned_item_id=$('.selected-item').children('.card-block').children('.assigned-order-item').text(); // var params = { 'table_name':table_name };
var params = { 'table_name':table_name }; // $.ajax({
$.ajax({ // type: 'GET',
type: 'GET', // url: '/oqs/print/print_order_summary/'+assigned_item_id,
url: '/oqs/print/print_order_summary/'+assigned_item_id, // data: params,
data: params, // success: function(data){ }
success: function(data){ } // });
}); // });
});
}); });

View File

@@ -163,7 +163,7 @@ function checkReceiptNoInFirstBillData(receipt_no,payment) {
} }
} }
if (payment) { if (payment) {
return json_data[0]["payment"]; return status; //json_data[0]["payment"];
}else{ }else{
return status; return status;
} }

View File

@@ -45,13 +45,13 @@ class Crm::DiningQueuesController < BaseCrmController
respond_to do |format| respond_to do |format|
if @dining_queue.save if @dining_queue.save
unique_code = "QueueNoPdf" # unique_code = "QueueNoPdf"
# get printer info # # get printer info
print_settings = PrintSetting.find_by_unique_code(unique_code) # print_settings = PrintSetting.find_by_unique_code(unique_code)
printer = Printer::ReceiptPrinter.new(print_settings) # printer = Printer::ReceiptPrinter.new(print_settings)
printer.print_queue_no(print_settings,@dining_queue) # printer.print_queue_no(print_settings,@dining_queue)
format.html { redirect_to crm_dining_queues_path, notice: 'Queue was successfully created.' } format.html { redirect_to crm_dining_queues_path, notice: 'Queue was successfully created.' }
format.json { render :show, status: :created, location: @dining_queue } format.json { render :show, status: :created, location: @dining_queue }

View File

@@ -33,13 +33,13 @@ class Crm::HomeController < BaseCrmController
end end
unique_code="CrmOrderPdf" # unique_code="CrmOrderPdf"
print_settings = PrintSetting.find_by_unique_code(unique_code) # print_settings = PrintSetting.find_by_unique_code(unique_code)
printer = Printer::ReceiptPrinter.new(print_settings) # printer = Printer::ReceiptPrinter.new(print_settings)
printer.print_crm_order(@booking,order_items,print_settings) # printer.print_crm_order(@booking,order_items,print_settings)
end end

View File

@@ -17,14 +17,14 @@ class Oqs::EditController < BaseOqsController
order_item.save order_item.save
# print # print
assigned_item = AssignedOrderItem.find_by_instance_code(order_item.item_instance_code) # assigned_item = AssignedOrderItem.find_by_instance_code(order_item.item_instance_code)
# order queue stations # # order queue stations
oqs = assigned_item.order_queue_station # oqs = assigned_item.order_queue_station
unique_code="OrderItemPdf" # unique_code="OrderItemPdf"
print_settings=PrintSetting.find_by_unique_code(unique_code) # print_settings=PrintSetting.find_by_unique_code(unique_code)
order_queue_printer= Printer::OrderQueuePrinter.new(print_settings) # order_queue_printer= Printer::OrderQueuePrinter.new(print_settings)
order_queue_printer.print_order_item(print_settings, oqs, order_item.order_id, order_items_id, print_status=" (Updated)" ) # order_queue_printer.print_order_item(print_settings, oqs, order_item.order_id, order_items_id, print_status=" (Updated)" )
end end
end end

View File

@@ -1,61 +1,61 @@
class Oqs::PrintController < ApplicationController class Oqs::PrintController < ApplicationController
# Print Order Item # Print Order Item
def print def print
unique_code="OrderItemPdf" # unique_code="OrderItemPdf"
assigned_item_id = params[:id] # assigned_item_id = params[:id]
options = params[:options] # options = params[:options]
assigned_item = AssignedOrderItem.find(assigned_item_id) # assigned_item = AssignedOrderItem.find(assigned_item_id)
assigned_items = AssignedOrderItem.where("item_code='" + assigned_item.item_code + "' AND " + "order_id='" + assigned_item.order_id + "'"); # assigned_items = AssignedOrderItem.where("item_code='" + assigned_item.item_code + "' AND " + "order_id='" + assigned_item.order_id + "'");
# order queue stations # # order queue stations
oqs = assigned_item.order_queue_station # oqs = assigned_item.order_queue_station
order_item = OrderItem.where("order_id='#{assigned_item.order_id}' AND item_instance_code='#{assigned_item.instance_code}'").first() # order_item = OrderItem.where("order_id='#{assigned_item.order_id}' AND item_instance_code='#{assigned_item.instance_code}'").first()
# Check Printed # # Check Printed
print_status = assigned_item.print_status == true ? " (Re-Print)" : "" # print_status = assigned_item.print_status == true ? " (Re-Print)" : ""
# print when complete click # # print when complete click
print_settings = PrintSetting.find_by_unique_code(unique_code) # print_settings = PrintSetting.find_by_unique_code(unique_code)
order_queue_printer = Printer::OrderQueuePrinter.new(print_settings) # order_queue_printer = Printer::OrderQueuePrinter.new(print_settings)
order_queue_printer.print_order_item(print_settings,oqs, assigned_item.order_id, order_item.order_items_id, print_status, options ) # order_queue_printer.print_order_item(print_settings,oqs, assigned_item.order_id, order_item.order_items_id, print_status, options )
# update print status for completed same order items # # update print status for completed same order items
assigned_items.each do |ai| # assigned_items.each do |ai|
ai.print_status=true # ai.print_status=true
ai.save # ai.save
end # end
end end
# Print Order Details with booking id # Print Order Details with booking id
def print_order_summary def print_order_summary
unique_code="OrderSummaryPdf" # unique_code="OrderSummaryPdf"
assigned_item_id = params[:id] # assigned_item_id = params[:id]
table_name = params[:table_name] # table_name = params[:table_name]
assigned_item = AssignedOrderItem.find(assigned_item_id) # assigned_item = AssignedOrderItem.find(assigned_item_id)
assigned_items = AssignedOrderItem.where("item_code='" + assigned_item.item_code + "' AND " + "order_id='" + assigned_item.order_id + "'"); # assigned_items = AssignedOrderItem.where("item_code='" + assigned_item.item_code + "' AND " + "order_id='" + assigned_item.order_id + "'");
# order queue stations # # order queue stations
oqs = assigned_item.order_queue_station # oqs = assigned_item.order_queue_station
# Check Printed # # Check Printed
print_status = assigned_item.print_status == true ? " (Re-Print)" : "" # print_status = assigned_item.print_status == true ? " (Re-Print)" : ""
# get dining # # get dining
# dining = DiningFacility.find_by_name(table_name); # # dining = DiningFacility.find_by_name(table_name);
# booking = Booking.find_by_dining_facility_id(dining.id) # # booking = Booking.find_by_dining_facility_id(dining.id)
# Get Booking ID # # Get Booking ID
booking_id = BookingOrder.where("order_id='#{assigned_item.order_id}'").pluck(:booking_id)[0] # booking_id = BookingOrder.where("order_id='#{assigned_item.order_id}'").pluck(:booking_id)[0]
# print when complete click # # print when complete click
print_settings = PrintSetting.find_by_unique_code(unique_code) # print_settings = PrintSetting.find_by_unique_code(unique_code)
order_queue_printer = Printer::OrderQueuePrinter.new(print_settings) # order_queue_printer = Printer::OrderQueuePrinter.new(print_settings)
order_queue_printer.print_booking_summary(print_settings,oqs, booking_id, print_status) # order_queue_printer.print_booking_summary(print_settings,oqs, booking_id, print_status)
# update print status for completed same order items # # update print status for completed same order items
assigned_items.each do |ai| # assigned_items.each do |ai|
ai.print_status = true # ai.print_status = true
ai.save # ai.save
end # end
end end
end end

View File

@@ -21,47 +21,51 @@ class Origami::PaymentsController < BaseOrigamiController
cashier_zone = CashierTerminalByZone.find_by_zone_id(table.zone_id) cashier_zone = CashierTerminalByZone.find_by_zone_id(table.zone_id)
cashier_terminal = CashierTerminal.find(cashier_zone.cashier_terminal_id) cashier_terminal = CashierTerminal.find(cashier_zone.cashier_terminal_id)
# Print for First Bill to Customer Rails.logger.debug ENV["SERVER_MODE"]
unique_code = "ReceiptBillPdf"
#shop detail
shop_details = Shop::ShopDetail
# customer= Customer.where('customer_id=' +.customer_id)
customer = Customer.find(sale_data.customer_id)
# rounding adjustment if ENV["SERVER_MODE"] != "cloud" #no print in cloud server
if shop_details.is_rounding_adj # Print for First Bill to Customer
a = sale_data.grand_total % 25 # Modulus unique_code = "ReceiptBillPdf"
b = sale_data.grand_total / 25 # Division #shop detail
#not calculate rounding if modulus is 0 and division is even shop_details = Shop::ShopDetail
#calculate rounding if modulus is zero or not zero and division are not even # customer= Customer.where('customer_id=' +.customer_id)
if (a != 0.0 && b%2 != 0.0) || (a==0.0 && b%2 !=0) customer = Customer.find(sale_data.customer_id)
new_total = Sale.get_rounding_adjustment(sale_data.grand_total)
rounding_adj = new_total-sale_data.grand_total # rounding adjustment
sale_data.update_attributes(grand_total: new_total,old_grand_total: sale_data.grand_total,rounding_adjustment:rounding_adj) if shop_details.is_rounding_adj
a = sale_data.grand_total % 25 # Modulus
b = sale_data.grand_total / 25 # Division
#not calculate rounding if modulus is 0 and division is even
#calculate rounding if modulus is zero or not zero and division are not even
if (a != 0.0 && b%2 != 0.0) || (a==0.0 && b%2 !=0)
new_total = Sale.get_rounding_adjustment(sale_data.grand_total)
rounding_adj = new_total-sale_data.grand_total
sale_data.update_attributes(grand_total: new_total,old_grand_total: sale_data.grand_total,rounding_adjustment:rounding_adj)
end
end end
#end rounding adjustment
# get member information
rebate = MembershipSetting.find_by_rebate(1)
if customer.membership_id != nil && rebate
member_info = Customer.get_member_account(customer)
# current_balance = SaleAudit.paymal_search(sale_id)
current_balance = 0
end end
#end rounding adjustment # get printer info
print_settings=PrintSetting.find_by_unique_code(unique_code)
# get member information # find order id by sale id
rebate = MembershipSetting.find_by_rebate(1) # sale_order = SaleOrder.find_by_sale_id(@sale_data.sale_id)
if customer.membership_id != nil && rebate
member_info = Customer.get_member_account(customer) # Calculate price_by_accounts
# current_balance = SaleAudit.paymal_search(sale_id) item_price_by_accounts = SaleItem.calculate_price_by_accounts(sale_items)
current_balance = 0 discount_price_by_accounts = SaleItem.get_discount_price_by_accounts(sale_items)
printer = Printer::ReceiptPrinter.new(print_settings)
printer.print_receipt_bill(print_settings,cashier_terminal,sale_items,sale_data,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info, shop_details, "Frt",current_balance,nil)
end end
# get printer info
print_settings=PrintSetting.find_by_unique_code(unique_code)
# find order id by sale id
# sale_order = SaleOrder.find_by_sale_id(@sale_data.sale_id)
# Calculate price_by_accounts
item_price_by_accounts = SaleItem.calculate_price_by_accounts(sale_items)
discount_price_by_accounts = SaleItem.get_discount_price_by_accounts(sale_items)
printer = Printer::ReceiptPrinter.new(print_settings)
printer.print_receipt_bill(print_settings,cashier_terminal,sale_items,sale_data,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info, shop_details, "Frt",current_balance,nil)
end end
def create def create
@@ -106,40 +110,42 @@ class Origami::PaymentsController < BaseOrigamiController
cashier_terminal = CashierTerminal.find(cashier_zone.cashier_terminal_id) cashier_terminal = CashierTerminal.find(cashier_zone.cashier_terminal_id)
# For Print # For Print
unique_code = "ReceiptBillPdf" if ENV["SERVER_MODE"] != "cloud" #no print in cloud server
customer= Customer.find(saleObj.customer_id) unique_code = "ReceiptBillPdf"
customer= Customer.find(saleObj.customer_id)
# get member information # get member information
rebate = MembershipSetting.find_by_rebate(1) rebate = MembershipSetting.find_by_rebate(1)
credit_data = SalePayment.find_by_sale_id_and_payment_method(sale_id,'creditnote') credit_data = SalePayment.find_by_sale_id_and_payment_method(sale_id,'creditnote')
if customer.membership_id != nil && rebate && credit_data.nil? if customer.membership_id != nil && rebate && credit_data.nil?
member_info = Customer.get_member_account(customer) member_info = Customer.get_member_account(customer)
rebate_amount = Customer.get_membership_transactions(customer,saleObj.receipt_no) rebate_amount = Customer.get_membership_transactions(customer,saleObj.receipt_no)
current_balance = SaleAudit.paymal_search(sale_id) current_balance = SaleAudit.paymal_search(sale_id)
end
#for card sale data
card_data = Array.new
card_sale_trans_ref_no = Sale.getCardSaleTrans(sale_id)
if !card_sale_trans_ref_no.nil?
card_sale_trans_ref_no.each do |cash_sale_trans|
card_res_date = cash_sale_trans.res_date.strftime("%Y-%m-%d").to_s
card_res_time = cash_sale_trans.res_time.strftime("%H:%M").to_s
card_no = cash_sale_trans.pan.last(4)
card_no = card_no.rjust(19,"**** **** **** ")
card_data.push({'res_date' => card_res_date, 'res_time' => card_res_time, 'batch_no' => cash_sale_trans.batch_no, 'trace' => cash_sale_trans.trace, 'pan' => card_no, 'app' => cash_sale_trans.app, 'tid' => cash_sale_trans.terminal_id, 'app_code' => cash_sale_trans.app_code, 'ref_no' => cash_sale_trans.ref_no, 'mid' => cash_sale_trans.merchant_id})
end end
#for card sale data
card_data = Array.new
card_sale_trans_ref_no = Sale.getCardSaleTrans(sale_id)
if !card_sale_trans_ref_no.nil?
card_sale_trans_ref_no.each do |cash_sale_trans|
card_res_date = cash_sale_trans.res_date.strftime("%Y-%m-%d").to_s
card_res_time = cash_sale_trans.res_time.strftime("%H:%M").to_s
card_no = cash_sale_trans.pan.last(4)
card_no = card_no.rjust(19,"**** **** **** ")
card_data.push({'res_date' => card_res_date, 'res_time' => card_res_time, 'batch_no' => cash_sale_trans.batch_no, 'trace' => cash_sale_trans.trace, 'pan' => card_no, 'app' => cash_sale_trans.app, 'tid' => cash_sale_trans.terminal_id, 'app_code' => cash_sale_trans.app_code, 'ref_no' => cash_sale_trans.ref_no, 'mid' => cash_sale_trans.merchant_id})
end
end
# get printer info
print_settings=PrintSetting.find_by_unique_code(unique_code)
# Calculate Food and Beverage Total
item_price_by_accounts = SaleItem.calculate_price_by_accounts(saleObj.sale_items)
discount_price_by_accounts = SaleItem.get_discount_price_by_accounts(saleObj.sale_items)
printer = Printer::ReceiptPrinter.new(print_settings)
printer.print_receipt_bill(print_settings,cashier_terminal,saleObj.sale_items,saleObj,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details, "Paid",current_balance,card_data)
end end
# get printer info
print_settings=PrintSetting.find_by_unique_code(unique_code)
# Calculate Food and Beverage Total
item_price_by_accounts = SaleItem.calculate_price_by_accounts(saleObj.sale_items)
discount_price_by_accounts = SaleItem.get_discount_price_by_accounts(saleObj.sale_items)
printer = Printer::ReceiptPrinter.new(print_settings)
printer.print_receipt_bill(print_settings,cashier_terminal,saleObj.sale_items,saleObj,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details, "Paid",current_balance,card_data)
end end
end end
@@ -244,40 +250,42 @@ class Origami::PaymentsController < BaseOrigamiController
cashier_zone = CashierTerminalByZone.find_by_zone_id(table.zone_id) cashier_zone = CashierTerminalByZone.find_by_zone_id(table.zone_id)
cashier_terminal = CashierTerminal.find(cashier_zone.cashier_terminal_id) cashier_terminal = CashierTerminal.find(cashier_zone.cashier_terminal_id)
unique_code = "ReceiptBillPdf" if ENV["SERVER_MODE"] != "cloud" #no print in cloud server
customer= Customer.find(saleObj.customer_id) unique_code = "ReceiptBillPdf"
customer= Customer.find(saleObj.customer_id)
#shop detail #shop detail
shop_details = Shop::ShopDetail shop_details = Shop::ShopDetail
# get member information # get member information
rebate = MembershipSetting.find_by_rebate(1) rebate = MembershipSetting.find_by_rebate(1)
if customer.membership_id != nil && rebate if customer.membership_id != nil && rebate
member_info = Customer.get_member_account(customer) member_info = Customer.get_member_account(customer)
rebate_amount = Customer.get_membership_transactions(customer,saleObj.receipt_no) rebate_amount = Customer.get_membership_transactions(customer,saleObj.receipt_no)
current_balance = SaleAudit.paymal_search(sale_id) current_balance = SaleAudit.paymal_search(sale_id)
end
#for card sale data
card_data = Array.new
card_sale_trans_ref_no = Sale.getCardSaleTrans(sale_id)
if !card_sale_trans_ref_no.nil?
card_sale_trans_ref_no.each do |cash_sale_trans|
card_res_date = cash_sale_trans.res_date.strftime("%Y-%m-%d").to_s
card_res_time = cash_sale_trans.res_time.strftime("%H:%M").to_s
card_no = cash_sale_trans.pan.last(4)
card_no = card_no.rjust(19,"**** **** **** ")
card_data.push({'res_date' => card_res_date, 'res_time' => card_res_time, 'batch_no' => cash_sale_trans.batch_no, 'trace' => cash_sale_trans.trace, 'pan' => card_no, 'app' => cash_sale_trans.app, 'tid' => cash_sale_trans.terminal_id, 'app_code' => cash_sale_trans.app_code, 'ref_no' => cash_sale_trans.ref_no, 'mid' => cash_sale_trans.merchant_id})
end end
#for card sale data
card_data = Array.new
card_sale_trans_ref_no = Sale.getCardSaleTrans(sale_id)
if !card_sale_trans_ref_no.nil?
card_sale_trans_ref_no.each do |cash_sale_trans|
card_res_date = cash_sale_trans.res_date.strftime("%Y-%m-%d").to_s
card_res_time = cash_sale_trans.res_time.strftime("%H:%M").to_s
card_no = cash_sale_trans.pan.last(4)
card_no = card_no.rjust(19,"**** **** **** ")
card_data.push({'res_date' => card_res_date, 'res_time' => card_res_time, 'batch_no' => cash_sale_trans.batch_no, 'trace' => cash_sale_trans.trace, 'pan' => card_no, 'app' => cash_sale_trans.app, 'tid' => cash_sale_trans.terminal_id, 'app_code' => cash_sale_trans.app_code, 'ref_no' => cash_sale_trans.ref_no, 'mid' => cash_sale_trans.merchant_id})
end
end
# get printer info
print_settings=PrintSetting.find_by_unique_code(unique_code)
# Calculate price_by_accounts
item_price_by_accounts = SaleItem.calculate_price_by_accounts(saleObj.sale_items)
discount_price_by_accounts = SaleItem.get_discount_price_by_accounts(saleObj.sale_items)
printer = Printer::ReceiptPrinter.new(print_settings)
printer.print_receipt_bill(print_settings,cashier_terminal,saleObj.sale_items,saleObj,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details, "Re-print",current_balance,card_data)
end end
# get printer info
print_settings=PrintSetting.find_by_unique_code(unique_code)
# Calculate price_by_accounts
item_price_by_accounts = SaleItem.calculate_price_by_accounts(saleObj.sale_items)
discount_price_by_accounts = SaleItem.get_discount_price_by_accounts(saleObj.sale_items)
printer = Printer::ReceiptPrinter.new(print_settings)
printer.print_receipt_bill(print_settings,cashier_terminal,saleObj.sale_items,saleObj,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details, "Re-print",current_balance,card_data)
end end
def foc def foc
@@ -314,20 +322,22 @@ class Origami::PaymentsController < BaseOrigamiController
# Re-call Sale Data # Re-call Sale Data
saleObj = Sale.find(sale_id) saleObj = Sale.find(sale_id)
unique_code = "ReceiptBillPdf" if ENV["SERVER_MODE"] != "cloud" #no print in cloud server
customer= Customer.find(saleObj.customer_id) unique_code = "ReceiptBillPdf"
customer= Customer.find(saleObj.customer_id)
#shop detail #shop detail
shop_details = Shop::ShopDetail shop_details = Shop::ShopDetail
# get printer info # get printer info
print_settings=PrintSetting.find_by_unique_code(unique_code) print_settings=PrintSetting.find_by_unique_code(unique_code)
# Calculate Food and Beverage Total # Calculate Food and Beverage Total
item_price_by_accounts = SaleItem.calculate_price_by_accounts(saleObj.sale_items) item_price_by_accounts = SaleItem.calculate_price_by_accounts(saleObj.sale_items)
discount_price_by_accounts = SaleItem.get_discount_price_by_accounts(saleObj.sale_items) discount_price_by_accounts = SaleItem.get_discount_price_by_accounts(saleObj.sale_items)
printer = Printer::ReceiptPrinter.new(print_settings) printer = Printer::ReceiptPrinter.new(print_settings)
printer.print_receipt_bill(print_settings,cashier_terminal,saleObj.sale_items,saleObj,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details, "FOC",nil,nil) printer.print_receipt_bill(print_settings,cashier_terminal,saleObj.sale_items,saleObj,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details, "FOC",nil,nil)
end
end end
end end

View File

@@ -55,24 +55,24 @@ class Origami::ShiftsController < BaseOrigamiController
end end
unique_code = "CloseCashierPdf" # unique_code = "CloseCashierPdf"
shop_details = Shop.find(1) # shop_details = Shop.find(1)
#get tax # #get tax
shift_obj = ShiftSale.where('id =?',@shift.id) # shift_obj = ShiftSale.where('id =?',@shift.id)
@sale_taxes = Sale.get_separate_tax(shift_obj,from=nil,to=nil,type='') # @sale_taxes = Sale.get_separate_tax(shift_obj,from=nil,to=nil,type='')
#other payment details for mpu or visa like card # #other payment details for mpu or visa like card
@other_payment = ShiftSale.get_by_shift_other_payment(@shift) # @other_payment = ShiftSale.get_by_shift_other_payment(@shift)
# Calculate price_by_accounts # # Calculate price_by_accounts
@total_amount_by_account = ShiftSale.calculate_total_price_by_accounts(@shift,'amount') # @total_amount_by_account = ShiftSale.calculate_total_price_by_accounts(@shift,'amount')
@total_discount_by_account = ShiftSale.calculate_total_price_by_accounts(@shift,'discount') # @total_discount_by_account = ShiftSale.calculate_total_price_by_accounts(@shift,'discount')
@total_member_discount = ShiftSale.get_total_member_discount(@shift) # @total_member_discount = ShiftSale.get_total_member_discount(@shift)
# get printer info # # get printer info
print_settings = PrintSetting.find_by_unique_code(unique_code) # print_settings = PrintSetting.find_by_unique_code(unique_code)
printer = Printer::CashierStationPrinter.new(print_settings) # printer = Printer::CashierStationPrinter.new(print_settings)
printer.print_close_cashier(print_settings,cashier_terminal,@shift,shop_details,@sale_taxes,@other_payment,@total_amount_by_account,@total_discount_by_account,@total_member_discount) # printer.print_close_cashier(print_settings,cashier_terminal,@shift,shop_details,@sale_taxes,@other_payment,@total_amount_by_account,@total_discount_by_account,@total_member_discount)
end end

View File

@@ -76,26 +76,27 @@ class Origami::VoidController < BaseOrigamiController
cashier_zone = CashierTerminalByZone.find_by_zone_id(table.zone_id) cashier_zone = CashierTerminalByZone.find_by_zone_id(table.zone_id)
cashier_terminal = CashierTerminal.find(cashier_zone.cashier_terminal_id) cashier_terminal = CashierTerminal.find(cashier_zone.cashier_terminal_id)
unique_code = "ReceiptBillPdf" if ENV["SERVER_MODE"] != "cloud" #no print in cloud server
customer= Customer.find(sale.customer_id) unique_code = "ReceiptBillPdf"
customer= Customer.find(sale.customer_id)
#shop detail #shop detail
shop_details = Shop.find(1) shop_details = Shop.find(1)
# get member information # get member information
rebate = MembershipSetting.find_by_rebate(1) rebate = MembershipSetting.find_by_rebate(1)
if customer.membership_id != nil && rebate if customer.membership_id != nil && rebate
member_info = Customer.get_member_account(customer) member_info = Customer.get_member_account(customer)
rebate_amount = Customer.get_membership_transactions(customer,saleObj.receipt_no) rebate_amount = Customer.get_membership_transactions(customer,saleObj.receipt_no)
current_balance = SaleAudit.paymal_search(sale_id) end
# get printer info
print_settings=PrintSetting.find_by_unique_code(unique_code)
# Calculate Food and Beverage Total
item_price_by_accounts = SaleItem.calculate_price_by_accounts(sale.sale_items)
discount_price_by_accounts = SaleItem.get_discount_price_by_accounts(sale.sale_items)
printer = Printer::ReceiptPrinter.new(print_settings)
printer.print_receipt_bill(print_settings,cashier_terminal,sale.sale_items,sale,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details, "VOID",current_balance,nil)
end end
# get printer info
print_settings=PrintSetting.find_by_unique_code(unique_code)
# Calculate Food and Beverage Total
item_price_by_accounts = SaleItem.calculate_price_by_accounts(sale.sale_items)
discount_price_by_accounts = SaleItem.get_discount_price_by_accounts(sale.sale_items)
printer = Printer::ReceiptPrinter.new(print_settings)
printer.print_receipt_bill(print_settings,cashier_terminal,sale.sale_items,sale,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details, "VOID",current_balance,nil)
#end print #end print

View File

@@ -78,22 +78,13 @@ class OrderQueueStation < ApplicationRecord
end end
end end
if oqs.auto_print # if oqs.auto_print
if oqs_order_items.length > 0 # if oqs_order_items.length > 0
print_slip(oqs, order, oqs_order_items) # print_slip(oqs, order, oqs_order_items)
is_auto_printed = true # is_auto_printed = true
end # end
end # end
end end
# if oqs.id == oqpbz.order_queue_station_id
# # Auto Printing
# if oqs.auto_print
# if oqs_order_items.length > 0
# print_slip(oqs, order, oqs_order_items)
# is_auto_printed = true
# end
# end
# end
end end
# end # end
end end
@@ -101,33 +92,32 @@ class OrderQueueStation < ApplicationRecord
private private
#Print order_items in 1 slip #Print order_items in 1 slip
def print_slip(oqs, order, order_items) def print_slip(oqs, order, order_items)
unique_code="OrderSummaryPdf" # unique_code="OrderSummaryPdf"
print_settings=PrintSetting.find_by_unique_code(unique_code) # print_settings=PrintSetting.find_by_unique_code(unique_code)
order_queue_printer= Printer::OrderQueuePrinter.new(print_settings) # order_queue_printer= Printer::OrderQueuePrinter.new(print_settings)
order_queue_printer.print_order_summary(print_settings, oqs,order.order_id, order_items, print_status="") # order_queue_printer.print_order_summary(print_settings, oqs,order.order_id, order_items, print_status="")
AssignedOrderItem.where("order_id = '#{ order.order_id }'").find_each do |ai|
# update print status for order items
ai.print_status=true
ai.save
end
# AssignedOrderItem.where("order_id = '#{ order.order_id }'").find_each do |ai|
# # update print status for order items
# ai.print_status=true
# ai.save
# end
end end
#Print order_item in 1 slip per item #Print order_item in 1 slip per item
def print_slip_item(oqs, assigned_item) def print_slip_item(oqs, assigned_item)
unique_code="OrderItemPdf" # unique_code="OrderItemPdf"
order_item = OrderItem.where("order_id='#{assigned_item.order_id}' AND item_instance_code='#{assigned_item.instance_code}'").first() # order_item = OrderItem.where("order_id='#{assigned_item.order_id}' AND item_instance_code='#{assigned_item.instance_code}'").first()
# print when complete click # # print when complete click
print_settings=PrintSetting.find_by_unique_code(unique_code) # print_settings=PrintSetting.find_by_unique_code(unique_code)
order_queue_printer= Printer::OrderQueuePrinter.new(print_settings) # order_queue_printer= Printer::OrderQueuePrinter.new(print_settings)
order_queue_printer.print_order_item(print_settings, oqs,item.order_id, order_item.order_items_id, print_status="" ) # order_queue_printer.print_order_item(print_settings, oqs,item.order_id, order_item.order_items_id, print_status="" )
# update print status for completed same order items # # update print status for completed same order items
assigned_order_item.each do |ai| # assigned_order_item.each do |ai|
ai.print_status=true # ai.print_status=true
ai.save # ai.save
end # end
end end
end end

View File

@@ -94,7 +94,7 @@ class Printer::ReceiptPrinter < Printer::PrinterWorker
# stock check # stock check
def print_stock_check_result(print_settings,stockcheck, stockcheck_items,checker_name, shop_details) def print_stock_check_result(print_settings,stockcheck, stockcheck_items,checker_name, shop_details)
pdf = StockResultPdf.new(print_settings,stockcheck, stockcheck_items,checker_name, shop_details) pdf = StockResultPdf.new(print_settings,stockcheck, stockcheck_items,checker_name, shop_details)
pdf.render_file "tmp/print_stock_check_result.pdf" pdf.render_file "tmp/print_stock_check_result.pdf"
self.print("tmp/print_stock_check_result.pdf") self.print("tmp/print_stock_check_result.pdf")
end end
@@ -114,7 +114,7 @@ class Printer::ReceiptPrinter < Printer::PrinterWorker
#Generate PDF #Generate PDF
#Print #Print
pdf = CrmOrderPdf.new(booking,order_items,setting) pdf = CrmOrderPdf.new(booking,order_items,setting)
pdf.render_file "tmp/print_crm_order.pdf" pdf.render_file "tmp/print_crm_order.pdf"
self.print("tmp/print_crm_order.pdf") self.print("tmp/print_crm_order.pdf")
end end

View File

@@ -168,9 +168,8 @@
<div class="col-lg-1 col-md-1 col-sm-1"> <div class="col-lg-1 col-md-1 col-sm-1">
<!-- OQS Buttons --> <!-- OQS Buttons -->
<a href="<%= dashboard_path %>" class="btn btn-sm btn-block btn-default waves-effect" role="button" aria-haspopup="true"><i class="material-icons">reply</i> Back </a> <a href="<%= dashboard_path %>" class="btn btn-sm btn-block btn-default waves-effect" role="button" aria-haspopup="true"><i class="material-icons">reply</i> Back </a>
<button type="button" title="Print Order Item" id="print_order_item" class="btn bg-blue btn-block btn-lg waves-effect">Print</a> <!-- <button type="button" title="Print Order Item" id="print_order_item" class="btn bg-blue btn-block btn-lg waves-effect">Print</a>
<button type="button" class="btn bg-blue btn-block btn-lg waves-effect" id="print_order_summary">Print <br/>Order<br/>Summary</button> <button type="button" class="btn bg-blue btn-block btn-lg waves-effect" id="print_order_summary">Print <br/>Order<br/>Summary</button> -->
<!-- <button type="button" class="" id="print_order_summary">Print <br/>Order<br/>Summary</button> -->
</div> </div>
</div> </div>

View File

@@ -395,12 +395,10 @@
<button type="button" id="commissions" class="btn btn-block bg-blue waves-effect">Commissions</button> <button type="button" id="commissions" class="btn btn-block bg-blue waves-effect">Commissions</button>
<button type="button" id="in_duties" class="btn btn-block bg-blue waves-effect">In Duties</button> <button type="button" id="in_duties" class="btn btn-block bg-blue waves-effect">In Duties</button>
<!-- first bill not used in cloud -->
<%if @membership.discount && @obj_sale.customer.membership_id %> <% if ENV["SERVER_MODE"] != "cloud" %>
<button type="button" class="btn btn-block bg-blue waves-effect" data-toggle="modal" data-target="#paymentModal">First Bill</button>
<%else%>
<button type="button" id="first_bill" class="btn btn-block bg-blue waves-effect">First Bill</button> <button type="button" id="first_bill" class="btn btn-block bg-blue waves-effect">First Bill</button>
<%end%> <% end %>
<button type="button" id="pay" class="btn btn-block bg-blue waves-effect">Pay</button> <button type="button" id="pay" class="btn btn-block bg-blue waves-effect">Pay</button>
<button type="button" id="void" class="btn btn-block bg-blue waves-effect" active="<%= can? :overall_void, :void %>"> Void</button> <button type="button" id="void" class="btn btn-block bg-blue waves-effect" active="<%= can? :overall_void, :void %>"> Void</button>
<% end %> <% end %>
@@ -410,6 +408,7 @@
<% else %> <% else %>
<button type="button" id="check_in" class="btn btn-block bg-blue waves-effect"><%= t("views.btn.check_in") %></button> <button type="button" id="check_in" class="btn btn-block bg-blue waves-effect"><%= t("views.btn.check_in") %></button>
<% end %> <% end %>
<input type="hidden" id="server_mode" value="<%= ENV["SERVER_MODE"] %>">
<span class="hidden" id="member_discount"><%= @membership.discount%></span> <span class="hidden" id="member_discount"><%= @membership.discount%></span>
<span class="hidden" id="membership_id"><%= @obj_sale.customer.membership_id rescue 0%></span> <span class="hidden" id="membership_id"><%= @obj_sale.customer.membership_id rescue 0%></span>
<div class="modal fade" id="paymentModal" tabindex="-1" role="dialog"> <div class="modal fade" id="paymentModal" tabindex="-1" role="dialog">
@@ -449,11 +448,14 @@
if(($("#receipt_no").html()!=undefined) && ($("#receipt_no").html()!="")){ if(($("#receipt_no").html()!=undefined) && ($("#receipt_no").html()!="")){
receipt_no = ($("#receipt_no").html()).trim(); receipt_no = ($("#receipt_no").html()).trim();
} }
// console.log(checkReceiptNoInFirstBillData(receipt_no)); // console.log(checkReceiptNoInFirstBillData(receipt_no));
if(checkReceiptNoInFirstBillData(receipt_no,"")){ if ($("#server_mode").val() != "cloud") { // first bill not used in cloud
$("#pay").show(); if(checkReceiptNoInFirstBillData(receipt_no,"")){
}else{ $("#pay").show();
$("#pay").hide(); }else{
$("#pay").hide();
}
} }
/* end check first bill or not*/ /* end check first bill or not*/
@@ -524,12 +526,12 @@
}); });
$('#re-print').click(function () { // $('#re-print').click(function () {
var sale_id = $('#sale_id').val(); // var sale_id = $('#sale_id').val();
window.location.href = '/origami/' + sale_id + "/reprint" // window.location.href = '/origami/' + sale_id + "/reprint"
return false; // return false;
}); // });
// Add Other Charges // Add Other Charges
$('#other-charges').click(function () { $('#other-charges').click(function () {
@@ -582,53 +584,10 @@
type: "GET", type: "GET",
url: ajax_url, url: ajax_url,
success: function (result) { success: function (result) {
receipt_no = ($("#receipt_no").html()).trim(); location.reload();
if((receipt_no!=undefined) && (receipt_no!=""))
createReceiptNoInFirstBillData(receipt_no,"");
location.reload();
} }
}); });
}); });
$(".choose_payment").on('click', function () {
$( "#loading_wrapper").show();
var sale_id = $('#sale_id').val();
type = $('.payment_method').val();
if (type != "Credit") {
calculate_member_discount(sale_id,type);
}
var ajax_url = "/origami/sale/" + sale_id + "/first_bill";
$.ajax({
type: "GET",
url: ajax_url,
success: function (result) {
$( "#loading_wrapper" ).hide();
receipt_no = ($("#receipt_no").html()).trim();
if((receipt_no!=undefined) && (receipt_no!=""))
createReceiptNoInFirstBillData(receipt_no,type);
location.reload();
}
});
});
function calculate_member_discount(sale_id,type) {
var sub_total = $('#sub-total').text();
if (type == "Cash") {
is_card = false
}else{
is_card = true
}
$.ajax({
type: "POST",
url: "/origami/" + sale_id + "/member_discount",
data: {'sale_id':sale_id, 'sub_total':sub_total,'is_card':is_card },
async: false,
success:function(result){
}
});
}
// $('#pay').on('click', function () { // $('#pay').on('click', function () {
// var sale_id = $('#sale_id').val(); // var sale_id = $('#sale_id').val();

View File

@@ -26,20 +26,22 @@
</div> </div>
</div> </div>
</div> </div>
<input type="hidden" id="server_mode" value="<%= ENV["SERVER_MODE"] %>">
<script type="text/javascript"> <script type="text/javascript">
/* start check first bill or not*/ /* start check first bill or not*/
var receipt_no = ""; var receipt_no = "";
if(($("#receipt_no").html()!=undefined) && ($("#receipt_no").html()!="")){ if(($("#receipt_no").html()!=undefined) && ($("#receipt_no").html()!="")){
receipt_no = ($("#receipt_no").html()).trim(); receipt_no = ($("#receipt_no").html()).trim();
} }
if ($("#server_mode").val() != "cloud") { // first bill not used in cloud
payment_type = checkReceiptNoInFirstBillData(receipt_no,"payment"); payment_type = checkReceiptNoInFirstBillData(receipt_no,"payment");
if(payment_type) { if(payment_type) {
$(".others-payment").hide(); $(".others-payment").hide();
$(payment_type).each(function(i){ $(payment_type).each(function(i){
$("."+payment_type[i]).show(); $("."+payment_type[i]).show();
}); });
} }
}
/* end check first bill or not*/ /* end check first bill or not*/
$('.others-payment').on('click',function(){ $('.others-payment').on('click',function(){

View File

@@ -298,7 +298,7 @@
<button type="button" class="btn bg-red btn-block" id="void" active="<%= can? :overall_void, :void %>"> Void </button> <button type="button" class="btn bg-red btn-block" id="void" active="<%= can? :overall_void, :void %>"> Void </button>
<!-- Waiter Buttons --> <!-- Waiter Buttons -->
</div> </div>
<input type="hidden" id="server_mode" value="<%= ENV["SERVER_MODE"] %>">
</div> </div>
</div> </div>
@@ -310,20 +310,21 @@
receipt_no = ($("#receipt_no").html()).trim(); receipt_no = ($("#receipt_no").html()).trim();
} }
payment_type = checkReceiptNoInFirstBillData(receipt_no,"payment") if ($("#server_mode").val() != "cloud") { // first bill not used in cloud
// console.log(jQuery.inArray("Credit", payment_type)) payment_type = checkReceiptNoInFirstBillData(receipt_no,"payment")
// console.log(payment_type)
if(parseInt(jQuery.inArray("Credit", payment_type)) == -1){ if(parseInt(jQuery.inArray("Credit", payment_type)) == -1){
$("#credit_payment").hide(); $("#credit_payment").hide();
} else{ } else{
$("#credit_payment").show(); $("#credit_payment").show();
} }
if(parseInt(jQuery.inArray("MPU", payment_type)) > 0 || parseInt(jQuery.inArray("VISA", payment_type)) > 0 || parseInt(jQuery.inArray("JCB", payment_type)) > 0 || parseInt(jQuery.inArray("Master", payment_type)) > 0 || parseInt(jQuery.inArray("UNIONPAY", payment_type)) > 0 || parseInt(jQuery.inArray("Redeem", payment_type)) > 0){ if(parseInt(jQuery.inArray("MPU", payment_type)) > 0 || parseInt(jQuery.inArray("VISA", payment_type)) > 0 || parseInt(jQuery.inArray("JCB", payment_type)) > 0 || parseInt(jQuery.inArray("Master", payment_type)) > 0 || parseInt(jQuery.inArray("UNIONPAY", payment_type)) > 0 || parseInt(jQuery.inArray("Redeem", payment_type)) > 0){
$("#card_payment").show(); $("#card_payment").show();
} else{ } else{
$("#card_payment").hide(); $("#card_payment").hide();
} }
}
/* end check first bill or not*/ /* end check first bill or not*/
var dining_id = "<%= @sale_data.bookings[0].dining_facility_id %>"; var dining_id = "<%= @sale_data.bookings[0].dining_facility_id %>";

View File

@@ -374,16 +374,14 @@
<button type="button" id="in_duties" class="btn btn-block bg-blue waves-effect">In Duties</button> <button type="button" id="in_duties" class="btn btn-block bg-blue waves-effect">In Duties</button>
<!-- <button type="button" class="btn bg-blue btn-block" id='move' disabled="">Move</button> --> <!-- <button type="button" class="btn bg-blue btn-block" id='move' disabled="">Move</button> -->
<!-- <button type="button" id="request_bills" class="btn bg-blue btn-block" disabled> Req.Bill</button> --> <!-- <button type="button" id="request_bills" class="btn bg-blue btn-block" disabled> Req.Bill</button> -->
<%if @membership.discount && @obj_sale.customer.membership_id %> <!-- first bill not used in cloud -->
<button type="button" class="btn btn-block bg-blue waves-effect" data-toggle="modal" data-target="#paymentModal">First Bill</button> <% if ENV["SERVER_MODE"] != "cloud" %>
<%else%>
<button type="button" id="first_bill" class="btn btn-block bg-blue waves-effect">First Bill</button> <button type="button" id="first_bill" class="btn btn-block bg-blue waves-effect">First Bill</button>
<%end%> <% end %>
<button type="button" id="pay" class="btn bg-blue btn-block">Pay</button> <button type="button" id="pay" class="btn bg-blue btn-block">Pay</button>
<button type="button" id="void" class="btn bg-blue btn-block" > Void </button> <button type="button" id="void" class="btn bg-blue btn-block" > Void </button>
<% end %> <% end %>
<input type="hidden" id="server_mode" value="<%= ENV["SERVER_MODE"] %>">
<span class="hidden" id="member_discount"><%= @membership.discount%></span> <span class="hidden" id="member_discount"><%= @membership.discount%></span>
<span class="hidden" id="membership_id"><%= @obj_sale.customer.membership_id rescue 0%></span> <span class="hidden" id="membership_id"><%= @obj_sale.customer.membership_id rescue 0%></span>
<div class="modal fade" id="paymentModal" tabindex="-1" role="dialog"> <div class="modal fade" id="paymentModal" tabindex="-1" role="dialog">
@@ -455,10 +453,12 @@ $(document).ready(function(){
receipt_no = ($("#receipt_no").html()).trim(); receipt_no = ($("#receipt_no").html()).trim();
} }
// console.log(checkReceiptNoInFirstBillData(receipt_no)); // console.log(checkReceiptNoInFirstBillData(receipt_no));
if(checkReceiptNoInFirstBillData(receipt_no,"")){ if ($("#server_mode").val() != "cloud") { // first bill not used in cloud
$("#pay").show(); if(checkReceiptNoInFirstBillData(receipt_no,"")){
}else{ $("#pay").show();
$("#pay").hide(); }else{
$("#pay").hide();
}
} }
/* end check first bill or not*/ /* end check first bill or not*/

View File

@@ -201,7 +201,7 @@
<% if @sale.sale_status != 'void' %> <% if @sale.sale_status != 'void' %>
<button type="button" id="void" class="btn bg-danger btn-block">VOID</button> <button type="button" id="void" class="btn bg-danger btn-block">VOID</button>
<% end %> <% end %>
<button type="button" id="re-print" class="btn bg-blue btn-block">Re.Print</button> <!-- <button type="button" id="re-print" class="btn bg-blue btn-block">Re.Print</button> -->
</div> </div>
</div> </div>
</div> </div>
@@ -271,10 +271,10 @@ $('#back').on('click',function(){
}); });
}); });
$('#re-print').click(function() { // $('#re-print').click(function() {
var sale_id = $('#sale_id').val(); // var sale_id = $('#sale_id').val();
window.location.href = '/origami/'+ sale_id + "/reprint" // window.location.href = '/origami/'+ sale_id + "/reprint"
return false; // return false;
}); // });
</script> </script>

View File

@@ -24,7 +24,7 @@ test:
# instead read values from the environment. # instead read values from the environment.
production: production:
secret_key_base: c4bc81065013f9a3506d385bcbd49586c42e586488144b0de90c7da36867de9fa880f46b5c4f86f0ce9b7c783bb5a73bdb0e5605a47716567294390e726d3e22 secret_key_base: c4bc81065013f9a3506d385bcbd49586c42e586488144b0de90c7da36867de9fa880f46b5c4f86f0ce9b7c783bb5a73bdb0e5605a47716567294390e726d3e22
sx_provision_url: provision.zsai.ws/api #192.168.1.94:3002 sx_provision_url: connect.smartsales.asia/api #192.168.1.147:3002/api
server_mode: cloud server_mode: cloud
cipher_type: AES-256-CBC cipher_type: AES-256-CBC
sx_key: Wh@t1$C2L sx_key: Wh@t1$C2L

11
config/shops.json Normal file
View File

@@ -0,0 +1,11 @@
{
"data": [
{
"lookup": "osaka1-7.zsai.ws",
"value": {
"key": "wwF9Zx9q/LfxSDqSNHYXvfu1eGsBqFEFXoXqGWrEirA=\n",
"iv": "l1rUEZFcPNHrTHWgaODkYQ==\n"
}
}
]
}