fixed receipt bill pdf with action cable
This commit is contained in:
@@ -132,14 +132,6 @@ class Origami::PaymentsController < BaseOrigamiController
|
||||
)
|
||||
end
|
||||
|
||||
# For Print
|
||||
# if ENV["SERVER_MODE"] != "cloud" #no print in cloud server
|
||||
if Lookup.collection_of("print_settings").any? { |x| x == ["ReceiptBillA5Pdf", "1"] } #print_settings with name:ReceiptBillA5Pdf
|
||||
unique_code = "ReceiptBillA5Pdf"
|
||||
else
|
||||
unique_code = PrintSetting.where("unique_code REGEXP ?", "receipt.*bill.*pdf").first.unique_code
|
||||
end
|
||||
|
||||
customer = saleObj.customer
|
||||
|
||||
# get member information
|
||||
@@ -197,12 +189,17 @@ class Origami::PaymentsController < BaseOrigamiController
|
||||
card_balance_amount = SaleAudit.getCardBalanceAmount(sale_id)
|
||||
|
||||
# get printer info
|
||||
print_settings = PrintSetting.find_by_unique_code(unique_code)
|
||||
if type.strip.downcase == 'doemal_order'
|
||||
print_settings = PrintSetting.where(unique_code: 'ReceiptBillOrderPdf').first
|
||||
else
|
||||
print_settings = PrintSetting.where("unique_code REGEXP ?", "receipt.*bill.*pdf").first
|
||||
end
|
||||
# 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)
|
||||
other_amount = SaleItem.calculate_other_charges(sale_items)
|
||||
credit_pdf = Lookup.find_by_lookup_type("credit_pdf")
|
||||
|
||||
if (path.include? ("credit_payment")) && !credit_pdf.nil? && credit_pdf.value.to_i == 1
|
||||
printed_status = 'credit_payment'
|
||||
else
|
||||
@@ -211,13 +208,10 @@ class Origami::PaymentsController < BaseOrigamiController
|
||||
|
||||
printer = Printer::ReceiptPrinter.new(print_settings)
|
||||
filename, sale_receipt_no, printer_name = printer.print_receipt_bill(print_settings, false, nil, cashier_terminal,sale_items,saleObj,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_detail, printed_status,current_balance,card_data,other_amount,latest_order_no,card_balance_amount,nil)
|
||||
|
||||
#end
|
||||
|
||||
if !saleObj.nil?
|
||||
# InventoryJob.perform_now(self.id)
|
||||
# InventoryDefinition.calculate_product_count(saleObj)
|
||||
end
|
||||
# if !saleObj.nil?
|
||||
# InventoryJob.perform_now(self.id)
|
||||
# InventoryDefinition.calculate_product_count(saleObj)
|
||||
# end
|
||||
end
|
||||
|
||||
# status, filename, sale_receipt_no, printer_name = Payment.pay(getCloudDomain, cash, sale_id, member_info, type, tax_type, path, latest_order_no, shop_detail, current_user, nil, nil)
|
||||
@@ -610,32 +604,11 @@ class Origami::PaymentsController < BaseOrigamiController
|
||||
cashier_type = params[:type]
|
||||
|
||||
if cashier_type.strip.downcase == "doemal_order"
|
||||
unique_code = "ReceiptBillOrderPdf"
|
||||
print_settings = PrintSetting.where(unique_code: 'ReceiptBillOrderPdf').first
|
||||
else
|
||||
receipt_bill_a5_pdf = Lookup.collection_of("print_settings") #print_settings with name:ReceiptBillA5Pdf
|
||||
unique_code = "ReceiptBillPdf"
|
||||
print_settings = PrintSetting.all
|
||||
if !print_settings.nil?
|
||||
print_settings.each do |setting|
|
||||
if setting.unique_code == 'ReceiptBillPdf'
|
||||
unique_code = "ReceiptBillPdf"
|
||||
elsif setting.unique_code == 'ReceiptBillStarPdf'
|
||||
unique_code = "ReceiptBillStarPdf"
|
||||
end
|
||||
end
|
||||
end
|
||||
if !receipt_bill_a5_pdf.empty?
|
||||
receipt_bill_a5_pdf.each do |receipt_bilA5|
|
||||
if receipt_bilA5[0] == 'ReceiptBillA5Pdf'
|
||||
if receipt_bilA5[1] == '1'
|
||||
unique_code = "ReceiptBillA5Pdf"
|
||||
# else
|
||||
# unique_code = "ReceiptBillPdf"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
print_settings = PrintSetting.where("unique_code REGEXP ?", "receipt.*bill.*pdf").first
|
||||
end
|
||||
|
||||
# get printer info
|
||||
print_settings = PrintSetting.find_by_unique_code(unique_code)
|
||||
printer = Printer::ReceiptPrinter.new(print_settings)
|
||||
|
||||
@@ -26,8 +26,6 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker
|
||||
if ENV["SERVER_MODE"] != "cloud"
|
||||
self.print(filename, oqs.printer_name)
|
||||
end
|
||||
|
||||
return filename, order_id, oqs.printer_name
|
||||
else
|
||||
ActionCable.server.broadcast("print_channel_#{Shop.current_shop.shop_code}",
|
||||
queue: oqs.station_name,
|
||||
@@ -41,6 +39,8 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker
|
||||
}
|
||||
)
|
||||
end
|
||||
|
||||
return filename, order_id, oqs.printer_name
|
||||
end
|
||||
|
||||
# Query for per order
|
||||
@@ -71,8 +71,6 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker
|
||||
if ENV["SERVER_MODE"] != "cloud"
|
||||
self.print(filename, oqs.printer_name)
|
||||
end
|
||||
|
||||
return filename, order_id, oqs.printer_name
|
||||
else
|
||||
ActionCable.server.broadcast("print_channel_#{Shop.current_shop.shop_code}",
|
||||
queue: oqs.station_name,
|
||||
@@ -87,6 +85,8 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker
|
||||
}
|
||||
)
|
||||
end
|
||||
|
||||
return filename, order_id, oqs.printer_name
|
||||
end
|
||||
|
||||
# Print for orders in booking
|
||||
|
||||
@@ -42,17 +42,17 @@ class Printer::PrinterWorker
|
||||
end
|
||||
|
||||
def print(file_path, printer_destination = nil )
|
||||
# if printer_destination.nil?
|
||||
# printer_destination = self.printer_destination
|
||||
# end
|
||||
#
|
||||
# copy = self.print_copies
|
||||
# #Print only when printer information is not null
|
||||
# if !self.printer_destination.nil?
|
||||
# (1..copy).each do
|
||||
# page = Cups::PrintJob.new(file_path, printer_destination)
|
||||
# page.print
|
||||
# end
|
||||
# end
|
||||
if printer_destination.nil?
|
||||
printer_destination = self.printer_destination
|
||||
end
|
||||
|
||||
copy = self.print_copies
|
||||
#Print only when printer information is not null
|
||||
if !self.printer_destination.nil?
|
||||
(1..copy).each do
|
||||
page = Cups::PrintJob.new(file_path, printer_destination)
|
||||
page.print
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -95,82 +95,70 @@ class Printer::ReceiptPrinter < Printer::PrinterWorker
|
||||
#Use CUPS service
|
||||
#Generate PDF
|
||||
#Print
|
||||
if printer_settings
|
||||
if !printer_settings.unique_code.match?(/receiptbillorder/i)
|
||||
if Lookup.collection_of("print_settings").any? { |x| x == ["ReceiptBillA5Pdf", "1"] } #print_settings with name:ReceiptBillA5Pdf
|
||||
pdf = ReceiptBillA5Pdf.new(printer_settings, sale_items, sale_data, customer_name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details,printed_status,balance,card_data,other_amount,latest_order_no,card_balance_amount)
|
||||
else
|
||||
pdf = PrintSetting.where("unique_code REGEXP ?", "receipt.*bill.*pdf").first.unique_code.constantize.new(printer_settings, kbz_pay_status, qr_code, sale_items, sale_data, customer_name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details,printed_status,balance,card_data,other_amount,latest_order_no,card_balance_amount)
|
||||
end
|
||||
if !printer_settings.unique_code.match?(/receiptbillorder/i)
|
||||
if Lookup.collection_of("print_settings").any? { |x| x == ["ReceiptBillA5Pdf", "1"] } #print_settings with name:ReceiptBillA5Pdf
|
||||
pdf = ReceiptBillA5Pdf.new(printer_settings, sale_items, sale_data, customer_name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details,printed_status,balance,card_data,other_amount,latest_order_no,card_balance_amount)
|
||||
else
|
||||
#doemal online order pdf template
|
||||
pdf = ReceiptBillOrderPdf.new(printer_settings, sale_items, sale_data, customer_name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details,printed_status,balance,card_data,other_amount,latest_order_no,card_balance_amount,order_reservation)
|
||||
pdf = PrintSetting.where("unique_code REGEXP ?", "receipt.*bill.*pdf").first.unique_code.constantize.new(printer_settings, kbz_pay_status, qr_code, sale_items, sale_data, customer_name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details,printed_status,balance,card_data,other_amount,latest_order_no,card_balance_amount)
|
||||
end
|
||||
|
||||
# print as print copies in printer setting
|
||||
count = printer_settings.print_copies
|
||||
else
|
||||
#doemal online order pdf template
|
||||
pdf = ReceiptBillOrderPdf.new(printer_settings, sale_items, sale_data, customer_name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details,printed_status,balance,card_data,other_amount,latest_order_no,card_balance_amount,order_reservation)
|
||||
end
|
||||
|
||||
# print as print copies in printer setting
|
||||
count = printer_settings.print_copies
|
||||
|
||||
directory_name = 'public/receipts'
|
||||
Dir.mkdir(directory_name) unless File.exists?(directory_name)
|
||||
Rails.logger.debug "############## dir::" + directory_name
|
||||
if count == 1
|
||||
filename = directory_name + "/receipt_bill_#{sale_data.receipt_no}.pdf"
|
||||
pdf.render_file filename
|
||||
if printed_status != 'Paid' && printed_status != 'credit_payment'
|
||||
#no print in cloud server
|
||||
if ENV["SERVER_MODE"] != "cloud"
|
||||
self.print(directory_name + "/receipt_bill_#{sale_data.receipt_no}.pdf", cashier_terminal.printer_name)
|
||||
end
|
||||
elsif printed_status == 'credit_payment'
|
||||
filename = directory_name + "/receipt_bill_credit_#{sale_data.receipt_no}.pdf"
|
||||
pdf.render_file filename
|
||||
self.print(directory_name + "/receipt_bill_credit_#{sale_data.receipt_no}.pdf", cashier_terminal.printer_name)
|
||||
end
|
||||
else
|
||||
filename = directory_name + "/receipt_bill_#{sale_data.receipt_no}_#{count}.pdf"
|
||||
pdf.render_file filename
|
||||
if printed_status != 'Paid'
|
||||
#no print in cloud server
|
||||
if ENV["SERVER_MODE"] != "cloud"
|
||||
self.print(directory_name + "/receipt_bill_#{sale_data.receipt_no}_#{count}.pdf", cashier_terminal.printer_name)
|
||||
end
|
||||
|
||||
filename = "#{directory_name}/receipt_bill_#{sale_data.receipt_no}#{count != 1 ? "_#{count}" : ''}.pdf"
|
||||
pdf.render_file filename
|
||||
if !Lookup.where(lookup_type: "ReceiptPdfView").pluck(:value).include?('1')
|
||||
#no print in cloud server
|
||||
puts "SERVER_MODE #{ENV["SERVER_MODE"]}"
|
||||
if ENV["SERVER_MODE"] != "cloud"
|
||||
self.print(filename, cashier_terminal.printer_name)
|
||||
end
|
||||
end
|
||||
|
||||
Rails.logger.debug "############## filename::" + filename
|
||||
return filename, sale_data.receipt_no, cashier_terminal.printer_name
|
||||
else
|
||||
ActionCable.server.broadcast("print_channel_#{Shop.current_shop.shop_code}",
|
||||
queue: cashier_terminal.printer_name,
|
||||
unique_code: print_settings.unique_code,
|
||||
print_copies: print_settings.print_copies,
|
||||
data: {
|
||||
shop_details: shop_details.as_json,
|
||||
body: { sale_data: sale_data,
|
||||
booking: sale_data.bookings,
|
||||
dining_facility: sale_data.bookings[0].dining_facility.as_json(methods: :type),
|
||||
sale_taxes: sale_data.sale_taxes,
|
||||
latest_order_no: latest_order_no,
|
||||
sale_items: sale_items,
|
||||
precision: print_settings.precision,
|
||||
delimiter: print_settings.delimiter,
|
||||
member_info: member_info,
|
||||
customer_name: customer_name,
|
||||
rebate_amount: rebate_amount,
|
||||
current_balance: balance,
|
||||
card_data: card_data,
|
||||
card_balance_amount: card_balance_amount,
|
||||
discount_price_by_accounts: discount_price_by_accounts,
|
||||
item_price_by_accounts: item_price_by_accounts,
|
||||
sale_payments: sale_data.sale_payments
|
||||
},
|
||||
footer: {
|
||||
printed_status: printed_status, footer_text: "Thank You! See you Again"
|
||||
if !Lookup.where(lookup_type: "ReceiptPdfView").pluck(:value).include?('1')
|
||||
ActionCable.server.broadcast("print_channel_#{Shop.current_shop.shop_code}",
|
||||
queue: cashier_terminal.printer_name,
|
||||
unique_code: print_settings.unique_code,
|
||||
print_copies: print_settings.print_copies,
|
||||
data: {
|
||||
shop_details: shop_details.as_json,
|
||||
body: { sale_data: sale_data,
|
||||
booking: sale_data.bookings,
|
||||
dining_facility: sale_data.booking.dining_facility.as_json(methods: :type),
|
||||
sale_taxes: sale_data.sale_taxes,
|
||||
latest_order_no: latest_order_no,
|
||||
sale_items: sale_items,
|
||||
precision: print_settings.precision,
|
||||
delimiter: print_settings.delimiter,
|
||||
member_info: member_info,
|
||||
customer_name: customer_name,
|
||||
rebate_amount: rebate_amount,
|
||||
current_balance: balance,
|
||||
card_data: card_data,
|
||||
card_balance_amount: card_balance_amount,
|
||||
discount_price_by_accounts: discount_price_by_accounts,
|
||||
item_price_by_accounts: item_price_by_accounts,
|
||||
sale_payments: sale_data.sale_payments
|
||||
},
|
||||
footer: {
|
||||
printed_status: printed_status, footer_text: "Thank You! See you Again"
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
return filename || '', sale_data.receipt_no, cashier_terminal.printer_name
|
||||
end
|
||||
|
||||
# stock check
|
||||
@@ -266,18 +254,18 @@ class Printer::ReceiptPrinter < Printer::PrinterWorker
|
||||
# if count == 0
|
||||
# self.print(filename, printer_name)
|
||||
# else
|
||||
if count == 1
|
||||
#no print in cloud server
|
||||
if ENV["SERVER_MODE"] != "cloud"
|
||||
self.print(filename, printer_name)
|
||||
end
|
||||
else
|
||||
filename = "public/receipts/receipt_bill_#{receipt_no}_#{count}.pdf"
|
||||
# no print in cloud server
|
||||
if ENV["SERVER_MODE"] != "cloud"
|
||||
self.print(filename, printer_name)
|
||||
end
|
||||
end
|
||||
if count == 1
|
||||
#no print in cloud server
|
||||
if ENV["SERVER_MODE"] != "cloud"
|
||||
self.print(filename, printer_name)
|
||||
end
|
||||
else
|
||||
filename = "public/receipts/receipt_bill_#{receipt_no}_#{count}.pdf"
|
||||
# no print in cloud server
|
||||
if ENV["SERVER_MODE"] != "cloud"
|
||||
self.print(filename, printer_name)
|
||||
end
|
||||
end
|
||||
# end
|
||||
end
|
||||
|
||||
|
||||
@@ -726,6 +726,7 @@ $(document).ready(function(){
|
||||
data: "cash="+ cash + "&sale_id=" + sale_id + "&type=" + cashier_type + "&tax_type=" + tax_type + "&is_kbz=" + is_kbz,
|
||||
success:function(result){
|
||||
/* start delete receipt no in first bill*/
|
||||
console.log(result);
|
||||
if(($("#receipt_no").html()!=undefined) && ($("#receipt_no").html()!="")){
|
||||
var receipt_no = ($("#receipt_no").html()).trim();
|
||||
deleteReceiptNoInFirstBillData(receipt_no);
|
||||
@@ -740,33 +741,29 @@ $(document).ready(function(){
|
||||
var msg = '';
|
||||
}
|
||||
|
||||
$("#loading_wrapper" ).hide();
|
||||
if(location.pathname.includes("credit_payment")){
|
||||
$("#changed_amount").text("");
|
||||
if($('#balance').text() < 0){
|
||||
<% if precision.to_i > 0 %>
|
||||
$("#changed_amount").text('Changed amount ' + parseFloat($('#balance').text() * (-1)).toFixed(<%= precision %>));
|
||||
<% else %>
|
||||
$("#changed_amount").text('Changed amount ' + parseFloat($('#balance').text() * (-1)));
|
||||
<% end %>
|
||||
}
|
||||
|
||||
if(location.pathname.includes("credit_payment") || pdf_view != 1){
|
||||
payment_success_alert();
|
||||
}else{
|
||||
//PDF lightbox data
|
||||
var pdfPath = "/en/pdfjs/minimal?file=" + result.filename.substring(6);
|
||||
} else {
|
||||
//PDF lightbox data;
|
||||
var pdfPath = "/en/pdfjs/minimal?file=" + result.filename.substring(6)
|
||||
$("#sale_receipt_no").val(result.receipt_no);
|
||||
$("#filename").val(result.filename);
|
||||
$("#printer_name").val(result.printer_name);
|
||||
$("#receipt_pdf").attr("src", pdfPath);
|
||||
$("#changed_amount").text("");
|
||||
if($('#balance').text() < 0){
|
||||
<% if precision.to_i > 0 %>
|
||||
$("#changed_amount").text('Changed amount ' + parseFloat($('#balance').text() * (-1)).toFixed(<%= precision %>));
|
||||
<% else %>
|
||||
$("#changed_amount").text('Changed amount ' + parseFloat($('#balance').text() * (-1)));
|
||||
<% end %>
|
||||
}
|
||||
|
||||
if (pdf_view == 1) {
|
||||
$("#pdfModal").modal({show : true, backdrop : false, keyboard : false});
|
||||
$("#pdfModalLabel").text("Sale Completed");
|
||||
}else{
|
||||
//PDF lightbox data
|
||||
print_receipt();
|
||||
}
|
||||
$("#pdfModal").modal({show : true, backdrop : false, keyboard : false});
|
||||
$("#pdfModalLabel").text("Sale Completed");
|
||||
}
|
||||
|
||||
$("#loading_wrapper").hide();
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -1010,6 +1007,7 @@ $(document).ready(function(){
|
||||
if($('#pay').is(":visible")) {
|
||||
$('#pay').prop("disabled",true);
|
||||
}
|
||||
$("#loading_wrapper" ).show();
|
||||
|
||||
var sale_id = $('#sale_id').text();
|
||||
var filename = $("#filename").val();
|
||||
@@ -1048,6 +1046,8 @@ $(document).ready(function(){
|
||||
}else{
|
||||
payment_success_alert();
|
||||
}
|
||||
|
||||
$("#loading_wrapper" ).hide();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user