Merge branch 'r-1902001-01' into customer_report

This commit is contained in:
Thein Lin Kyaw
2020-09-10 10:07:18 +06:30
209 changed files with 2277 additions and 1920 deletions

View File

@@ -18,7 +18,7 @@ gem 'pg'
gem 'mysql2', '~> 0.5.2' gem 'mysql2', '~> 0.5.2'
#Use PosgreSQL #Use PosgreSQL
gem "select2-rails"
# redis server for cable # redis server for cable
gem 'redis', '~> 3.0' gem 'redis', '~> 3.0'

View File

@@ -264,6 +264,7 @@ GEM
tilt (>= 1.1, < 3) tilt (>= 1.1, < 3)
schema_to_scaffold (0.8.0) schema_to_scaffold (0.8.0)
activesupport (>= 3.2.1) activesupport (>= 3.2.1)
select2-rails (4.0.13)
shoulda-matchers (3.1.3) shoulda-matchers (3.1.3)
activesupport (>= 4.0.0) activesupport (>= 4.0.0)
sidekiq (5.2.7) sidekiq (5.2.7)
@@ -367,6 +368,7 @@ DEPENDENCIES
rubyzip (= 1.0.0) rubyzip (= 1.0.0)
sass-rails (~> 5.0) sass-rails (~> 5.0)
schema_to_scaffold schema_to_scaffold
select2-rails
shoulda-matchers (~> 3.1) shoulda-matchers (~> 3.1)
sidekiq sidekiq
simple_form simple_form

View File

@@ -77,6 +77,9 @@ For Using Star Printer
**_ Need to change these print settings 1) settings/print_settings/unique_code => OrderItemStarPdf 2) settings/print_settings/unique_code => ReceiptBillStarPdf 3) settings/print_settings/unique_code => SaleItemsStarPdf **_ Need to change these print settings 1) settings/print_settings/unique_code => OrderItemStarPdf 2) settings/print_settings/unique_code => ReceiptBillStarPdf 3) settings/print_settings/unique_code => SaleItemsStarPdf
_** Other print settings aren't need to change. _** Other print settings aren't need to change.
For Cloud ActionCable Print
settings/lookups => { type: print_settings, name: ActionCable, value: 1 }
For Show Sale Items Summary at CloseCashierPrint 1) settings/print_settings For Show Sale Items Summary at CloseCashierPrint 1) settings/print_settings
a) Check => Shift Sale Items a) Check => Shift Sale Items

View File

@@ -402,17 +402,17 @@ $(document).on('turbolinks:load', function() {
url: '/oqs/print/print/'+assigned_item_id, url: '/oqs/print/print/'+assigned_item_id,
data: params, data: params,
success: function(result){ success: function(result){
// For Server Print - from jade if (!$('#print_settings').data('action-cable')) {
if ($("#server_mode").val() == "cloud") { // For Server Print - from jade
if(typeof code2lab != 'undefined'){ if ($("#server_mode").val() == "cloud") {
code2lab.printFile(result.filepath.substr(6), result.printer_url); if(typeof code2lab != 'undefined'){
} code2lab.printFile(result.filepath.substr(6), result.printer_url);
} }
location.reload(); }
}
location.reload();
} }
}); });
}); });
// Print Order Summary // Print Order Summary
@@ -428,13 +428,15 @@ $(document).on('turbolinks:load', function() {
url: '/oqs/print/print_order_summary/'+assigned_item_id, url: '/oqs/print/print_order_summary/'+assigned_item_id,
data: params, data: params,
success: function(result){ success: function(result){
// For Server Print - from jade if (!$('#print_settings').data('action-cable')) {
if ($("#server_mode").val() == "cloud") { // For Server Print - from jade
if(typeof code2lab != 'undefined'){ if ($("#server_mode").val() == "cloud") {
code2lab.printFile(result.filepath.substr(6), result.printer_url); if(typeof code2lab != 'undefined'){
} code2lab.printFile(result.filepath.substr(6), result.printer_url);
} }
location.reload(); }
}
location.reload();
} }
}); });
}); });

View File

@@ -36,6 +36,7 @@
//= require custom.js //= require custom.js
//= require jquery-fileupload/basic //= require jquery-fileupload/basic
//= require induties/induties.js //= require induties/induties.js
//= require select2
$(document).ready(function() { $(document).ready(function() {
$('.count-to').countTo(); $('.count-to').countTo();

View File

@@ -752,25 +752,27 @@ function print_receipt(){
url: "/origami/sale/"+sale_id+"/doemal_order/payment/print", url: "/origami/sale/"+sale_id+"/doemal_order/payment/print",
data: params, data: params,
success:function(result){ success:function(result){
// For Server Print - from jade if (!$('#print_settings').data('action-cable')) {
if ($("#server_mode").val() == "cloud") { // For Server Print - from jade
if(typeof code2lab != 'undefined'){ if ($("#server_mode").val() == "cloud") {
code2lab.printFile(result.filepath.substr(6), result.printer_url); if(typeof code2lab != 'undefined'){
code2lab.printFile(result.filepath.substr(6), result.printer_url);
}
window.location.href = '/origami/order_reservation';
}
else{
swal({
title: "Print Success",
text: "Complete Order",
type: 'success',
html: true,
closeOnConfirm: false,
closeOnCancel: false,
allowOutsideClick: false
}, function () {
window.location.href = '/origami/order_reservation';
});
} }
window.location.href = '/origami/order_reservation';
}
else{
swal({
title: "Print Success",
text: "Complete Order",
type: 'success',
html: true,
closeOnConfirm: false,
closeOnCancel: false,
allowOutsideClick: false
}, function () {
window.location.href = '/origami/order_reservation';
});
} }
} }
}); });

View File

@@ -12,6 +12,8 @@
@import "BSBMaterial/themes/all-themes"; @import "BSBMaterial/themes/all-themes";
@import "reset"; @import "reset";
@import "induties/assign_in_duties"; @import "induties/assign_in_duties";
@import "select2";
@import "select2-material";
/*@import "bootstrap-select/css/bootstrap-select.min";*/ /*@import "bootstrap-select/css/bootstrap-select.min";*/

View File

@@ -0,0 +1,231 @@
.select2-container--material {
width: 100% !important; }
.select2-container--material .select2-selection--single {
background-color: transparent;
border: none;
border-bottom: 1px solid rgba(0,0,0,0.26);
border-radius: 0;
box-shadow: none;
box-sizing: content-box;
height: auto;
margin: 0;
outline: none;
padding: 0.46875rem 0 0.40625rem 0;
transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; }
.select2-container--material .select2-selection--single .select2-selection__rendered {
color: #444;
font-size: 1rem;
line-height: 18px;
padding-left: 0; }
.select2-container--material .select2-selection--single .select2-selection__clear {
cursor: pointer;
float: right;
font-weight: bold; }
.select2-container--material .select2-selection--single .select2-selection__placeholder {
color: #999; }
.select2-container--material .select2-selection--single .select2-selection__arrow {
height: 20px;
margin: 0.5rem 0 0.2rem 0;
position: absolute;
line-height: 1rem;
top: 1px;
right: 1px;
width: 20px; }
.select2-container--material .select2-selection--single .select2-selection__arrow b {
border-color: #888 transparent transparent transparent;
border-style: solid;
border-width: 5px 4px 0 4px;
height: 0;
left: 50%;
margin-left: -4px;
margin-top: -2px;
position: absolute;
top: 50%;
width: 0; }
.select2-container--material[dir="rtl"] .select2-selection--single .select2-selection__clear {
float: left; }
.select2-container--material[dir="rtl"] .select2-selection--single .select2-selection__arrow {
left: 1px;
right: auto; }
.select2-container--material.select2-container--disabled .select2-selection--single {
background-color: #eee;
cursor: default; }
.select2-container--material.select2-container--disabled .select2-selection--single .select2-selection__clear {
display: none; }
.select2-container--material.select2-container--open .select2-selection--single .select2-selection__arrow b {
border-color: transparent transparent #888 transparent;
border-width: 0 4px 5px 4px; }
.select2-container--material .select2-selection--multiple {
background-color: transparent;
border: none;
border-bottom: 1px solid #ced4da;
border-radius: 0;
box-shadow: none;
box-sizing: content-box;
cursor: text;
height: auto;
margin: 0;
outline: none;
padding: 5px 0 0 0;
transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; }
.select2-container--material .select2-selection--multiple .select2-selection__rendered {
box-sizing: border-box;
list-style: none;
margin: 0;
padding: 0 5px;
width: 100%; }
.select2-container--material .select2-selection--multiple .select2-selection__rendered li {
list-style: none; }
.select2-container--material .select2-selection--multiple .select2-selection__placeholder {
color: #999;
margin-top: 5px;
float: left; }
.select2-container--material .select2-selection--multiple .select2-selection__clear {
cursor: pointer;
float: right;
font-weight: bold;
margin-top: 5px;
margin-right: 10px; }
.select2-container--material .select2-selection--multiple .select2-selection__choice {
background-color: #ffca28;
border-radius: 16px;
color: rgba(0, 0, 0, 0.6);
cursor: default;
float: left;
margin-right: 5px;
margin-top: 6px;
padding: 0 12px; }
.select2-container--material .select2-selection--multiple .select2-selection__choice__remove {
cursor: pointer;
display: inline-block;
font-weight: bold;
float: right;
margin-left: 5px; }
.select2-container--material .select2-selection--multiple .select2-selection__choice__remove:hover {
color: #333; }
.select2-container--material[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--material[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--material[dir="rtl"] .select2-selection--multiple .select2-search--inline {
float: right; }
.select2-container--material[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
margin-left: 5px;
margin-right: auto; }
.select2-container--material[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove {
margin-left: 2px;
margin-right: auto; }
.select2-container--material.select2-container--disabled .select2-selection--multiple {
background-color: #eee;
cursor: default; }
.select2-container--material.select2-container--disabled .select2-selection__choice__remove {
display: none; }
.select2-container--material.select2-container--open.select2-container--above .select2-selection--single, .select2-container--material.select2-container--open.select2-container--above .select2-selection--multiple {
border-top-left-radius: 0;
border-top-right-radius: 0; }
.select2-container--material.select2-container--open.select2-container--below .select2-selection--single, .select2-container--material.select2-container--open.select2-container--below .select2-selection--multiple {
border-bottom-left-radius: 0;
border-bottom-right-radius: 0; }
.select2-container--material.select2-container--focus .select2-selection--single {
transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
outline: 0; }
.select2-container--material.select2-container--focus .select2-selection--multiple {
transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
outline: 0; }
.select2-container--material .select2-search--dropdown .select2-search__field {
border: none;
border-bottom: 1px solid #ced4da;
border-radius: 0;
outline: none; }
.select2-container--material .select2-search--dropdown .select2-search__field:focus:not([readonly]) {
box-shadow: 0 1px 0 0 #ced4da;
border-bottom: 1px solid #ced4da; }
.select2-container--material .select2-search--inline .select2-search__field {
background: transparent;
border: none !important;
outline: 0;
box-shadow: none !important;
-webkit-appearance: textfield; }
.select2-container--material .select2-results > .select2-results__options {
overflow-y: auto; }
.select2-container--material .select2-results__option[role=group] {
padding: 0; }
.select2-container--material .select2-results__option[aria-disabled=true] {
color: #999; }
.select2-container--material .select2-results__option[aria-selected=true] {
background-color: #ddd; }
.select2-container--material .select2-results__option .select2-results__option {
padding-left: 1em; }
.select2-container--material .select2-results__option .select2-results__option .select2-results__group {
padding-left: 0; }
.select2-container--material .select2-results__option .select2-results__option .select2-results__option {
margin-left: -1em;
padding-left: 2em; }
.select2-container--material .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
margin-left: -2em;
padding-left: 3em; }
.select2-container--material .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
margin-left: -3em;
padding-left: 4em; }
.select2-container--material .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
margin-left: -4em;
padding-left: 5em; }
.select2-container--material .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
margin-left: -5em;
padding-left: 6em; }
.select2-container--material .select2-results__option--highlighted[aria-selected] {
background-color: #3f729b;
color: white; }
.select2-container--material .select2-results__group {
cursor: default;
display: block;
padding: 6px; }
.select2-dropdown {
background-color: white;
border: 1px solid #ced4da;
border-radius: 4px;
box-sizing: border-box;
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
display: block;
position: absolute;
left: -100000px;
width: 100%;
z-index: 1051;
-webkit-box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); }
.select2-results {
display: block; }
.select2-results__options {
list-style: none;
margin: 0;
padding: 0; }
.select2-results__option {
padding: 6px;
user-select: none;
-webkit-user-select: none; }
.select2-results__option[aria-selected] {
cursor: pointer; }
.select2-container--open .select2-dropdown {
left: 0; }
.select2-container--open .select2-dropdown--above {
border-bottom: none;
border-bottom-left-radius: 0;
border-bottom-right-radius: 0; }
.select2-container--open .select2-dropdown--below {
border-top: none;
border-top-left-radius: 0;
border-top-right-radius: 0; }
.select2-search--dropdown {
display: block;
padding: 4px; }
.select2-search--dropdown .select2-search__field {
padding: 4px;
width: 100%;
box-sizing: border-box; }
.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button {
-webkit-appearance: none; }
.select2-search--dropdown.select2-search--hide {
display: none; }

View File

@@ -0,0 +1,10 @@
class PrintChannel < ApplicationCable::Channel
def subscribed
stream_from "print_channel_#{params[:shop_code]}"
end
def unsubscribed
# Any cleanup needed when channel is unsubscribed
stop_all_streams
end
end

View File

@@ -28,6 +28,4 @@ class Api::CallWaitersController < Api::ApiController
printer = Printer::ReceiptPrinter.new(print_settings) printer = Printer::ReceiptPrinter.new(print_settings)
printer.print_call_waiter(print_settings,@table,@time,@shop) printer.print_call_waiter(print_settings,@table,@time,@shop)
end end
end end

View File

@@ -27,7 +27,7 @@ private
crm_root_path crm_root_path
elsif current_user.role == "account" elsif current_user.role == "account"
reports_dailysale_index_path reports_dailysale_index_path
elsif @current_user.role == "kitchen" elsif current_user.role == "kitchen"
oqs_root_path oqs_root_path
else else
login_path login_path

View File

@@ -51,7 +51,6 @@ class Oqs::PrintController < ApplicationController
ai.save ai.save
end end
# filename, receipt_no, cashier_printer = printer.print_receipt_bill(print_settings, false, nil,cashier_terminal,sale_items,sale_data,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info, shop_detail, "Frt",current_balance,nil,other_amount)
if ENV["SERVER_MODE"] == "cloud" if ENV["SERVER_MODE"] == "cloud"
result = { result = {
:filepath => filename, :filepath => filename,
@@ -119,7 +118,6 @@ class Oqs::PrintController < ApplicationController
ai.save ai.save
end end
# filename, receipt_no, cashier_printer = printer.print_receipt_bill(print_settings, false, nil,cashier_terminal,sale_items,sale_data,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info, shop_detail, "Frt",current_balance,nil,other_amount)
if ENV["SERVER_MODE"] == "cloud" if ENV["SERVER_MODE"] == "cloud"
result = { result = {
:filepath => filename, :filepath => filename,

View File

@@ -30,45 +30,40 @@ class Origami::HomeController < BaseOrigamiController
@status_order = "" @status_order = ""
@status_sale = "" @status_sale = ""
@sale_array = Array.new
@shop = shop_detail @shop = shop_detail
@membership = MembershipSetting::MembershipSetting @membership = MembershipSetting::MembershipSetting
@payment_methods = PaymentMethodSetting.all @payment_methods = PaymentMethodSetting.all
@dining_booking = @dining.current_bookings
@order_items = Array.new @sale_array = @dining.current_sales
@dining_booking.each do |booking| if (booking = @dining.current_checkin_booking)
if @obj_sale || @booking.blank? @booking = booking
@booking = booking @order_items = booking.order_items
end @obj_order = booking.orders.first
end
if booking.sale_id if (booking = @dining.current_checkout_booking)
@obj_sale = booking.sale @booking = booking
@sale_array.push(@obj_sale) @obj_sale = booking.sale
@sale_taxes = @obj_sale.sale_taxes @sale_taxes = @obj_sale.sale_taxes
@status_sale = 'sale' @status_sale = 'sale'
else end
@order_items += booking.order_items
@obj_order = booking.orders.first
end
if @obj_sale || @customer.blank? if @obj_sale || @customer.blank?
if obj = @obj_sale || @obj_order if obj = @obj_sale || @obj_order
@customer = obj.customer @customer = obj.customer
@date = obj.created_at @date = obj.created_at
end
end end
end
if @obj_sale if @obj_sale
@status_order = 'sale' @status_order = 'sale'
else elsif @obj_order
@status_order = 'order' @status_order = 'order'
end end
if (@obj_sale || @account_arr.blank?) && @customer if (@obj_sale || @account_arr.blank?) && @customer
@account_arr = TaxProfile.find_by(id: @customer.tax_profiles) @account_arr = TaxProfile.find_by(id: @customer.tax_profiles)
end
end end
#for bank integration #for bank integration

View File

@@ -132,14 +132,6 @@ class Origami::PaymentsController < BaseOrigamiController
) )
end 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 customer = saleObj.customer
# get member information # get member information
@@ -197,12 +189,17 @@ class Origami::PaymentsController < BaseOrigamiController
card_balance_amount = SaleAudit.getCardBalanceAmount(sale_id) card_balance_amount = SaleAudit.getCardBalanceAmount(sale_id)
# get printer info # 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 # 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)
other_amount = SaleItem.calculate_other_charges(sale_items) other_amount = SaleItem.calculate_other_charges(sale_items)
credit_pdf = Lookup.find_by_lookup_type("credit_pdf") credit_pdf = Lookup.find_by_lookup_type("credit_pdf")
if (path.include? ("credit_payment")) && !credit_pdf.nil? && credit_pdf.value.to_i == 1 if (path.include? ("credit_payment")) && !credit_pdf.nil? && credit_pdf.value.to_i == 1
printed_status = 'credit_payment' printed_status = 'credit_payment'
else else
@@ -211,13 +208,10 @@ class Origami::PaymentsController < BaseOrigamiController
printer = Printer::ReceiptPrinter.new(print_settings) 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) 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)
# if !saleObj.nil?
#end # InventoryJob.perform_now(self.id)
# InventoryDefinition.calculate_product_count(saleObj)
if !saleObj.nil? # end
# InventoryJob.perform_now(self.id)
# InventoryDefinition.calculate_product_count(saleObj)
end
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) # 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)
@@ -275,7 +269,7 @@ class Origami::PaymentsController < BaseOrigamiController
@payment_methods = PaymentMethodSetting.where(is_active: true).pluck(:payment_method) @payment_methods = PaymentMethodSetting.where(is_active: true).pluck(:payment_method)
@cash = payments.inject(0) { |sum, payment| sum + payment[1] if payment[0] == 'cash' } @cash = payments.inject(0) { |sum, payment| sum + payment[1] if payment[0] == 'cash' }
@credit = payments.inject(0) { |sum, payment| sum + payment[1] if payment[0] == 'creditnote' } @credit = payments.inject(0) { |sum, payment| payment[0] == 'creditnote' ? sum + payment[1] : sum }
@other_payments = payments.select { |payment| !['cash', 'creditnote', 'foc'].include? payment[0] }.map { |method, amount| [ @payment_methods.find { |payment_method| payment_method.parameterize == method }, amount ] } @other_payments = payments.select { |payment| !['cash', 'creditnote', 'foc'].include? payment[0] }.map { |method, amount| [ @payment_methods.find { |payment_method| payment_method.parameterize == method }, amount ] }
@other_payment = @other_payments.sum { |payment| payment[1] } @other_payment = @other_payments.sum { |payment| payment[1] }
@@ -610,34 +604,13 @@ class Origami::PaymentsController < BaseOrigamiController
cashier_type = params[:type] cashier_type = params[:type]
if cashier_type.strip.downcase == "doemal_order" if cashier_type.strip.downcase == "doemal_order"
unique_code = "ReceiptBillOrderPdf" print_settings = PrintSetting.where(unique_code: 'ReceiptBillOrderPdf').first
else else
receipt_bill_a5_pdf = Lookup.collection_of("print_settings") #print_settings with name:ReceiptBillA5Pdf print_settings = PrintSetting.where("unique_code REGEXP ?", "receipt.*bill.*pdf").first
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
end end
# 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_receipt_pdf(filename,receipt_no,print_settings.print_copies,printer_name) printer.print_receipt_pdf(filename,receipt_no,print_settings.print_copies,printer_name)

View File

@@ -67,10 +67,7 @@ class Origami::ShiftsController < BaseOrigamiController
end end
end end
if ENV["SERVER_MODE"] != "cloud" #no print in cloud server # if ENV["SERVER_MODE"] != "cloud" #no print in cloud server
# if !close_cashier_print[0].nil? # if !close_cashier_print[0].nil?
# @close_cashier_print = close_cashier_print[0][1] # @close_cashier_print = close_cashier_print[0][1]
# end # end
@@ -90,13 +87,11 @@ class Origami::ShiftsController < BaseOrigamiController
end end
shop_details = shop_detail shop_details = shop_detail
#get tax #get tax
shift_obj = ShiftSale.where('id =?',@shift.id) shift_obj = ShiftSale.where('id = ?', @shift.id)
sale_items = ''
@lookup = Lookup.shift_sale_items_lookup_value @lookup = Lookup.shift_sale_items_lookup_value
if @lookup.to_i == 1 if @lookup.to_i == 1
@sale_items = Sale.get_shift_sale_items(@shift.id) @sale_items = Sale.get_shift_sale_items(@shift.id)
other_charges = Sale.get_other_charges() @total_other_charges_info = ShiftSale.get_other_charges(@shift)
@total_other_charges_info = other_charges.where("sales.shift_sale_id IN (?) and sale_status='completed'",@shift)
end end
@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='')
@total_waste = Sale.get_total_waste(shift_id).sum(:grand_total) @total_waste = Sale.get_total_waste(shift_id).sum(:grand_total)
@@ -118,16 +113,11 @@ class Origami::ShiftsController < BaseOrigamiController
printer = Printer::CashierStationPrinter.new(print_settings) printer = Printer::CashierStationPrinter.new(print_settings)
# print close cashier setting # print close cashier setting
close_cashier_print = Lookup.collection_of('close_cashier_print') if Lookup.collection_of('close_cashier_print').any? { |l| l == ['CloseCashierPrint', '1'] }
if close_cashier_print.empty? printer.print_close_cashier(print_settings, cashier_terminal, @shift, @sale_items, @total_other_charges_info, shop_details, @sale_taxes, @other_payment, @total_amount_by_account, @total_discount_by_account, @total_member_discount, @total_dinein, @total_takeway, @total_other_charges, @total_waste, @total_spoile, @total_credit_payments, @payment_methods)
@settings_lookup = Lookup.new(lookup_type: "close_cashier_print", name: "CloseCashierPrint", value: "1") end
@settings_lookup.save # end
end
find_close_cashier_print = Lookup.collection_of('close_cashier_print')
if find_close_cashier_print[0][1].to_i > 0
printer.print_close_cashier(print_settings,cashier_terminal,@shift, @sale_items, @total_other_charges_info, shop_details,@sale_taxes,@other_payment,@total_amount_by_account,@total_discount_by_account,@total_member_discount,@total_dinein,@total_takeway,@total_other_charges,@total_waste,@total_spoile,@total_credit_payments,@payment_methods)
end
end
end end
Employee.logout(session[:session_token]) Employee.logout(session[:session_token])
session[:session_token] = nil session[:session_token] = nil

View File

@@ -53,28 +53,31 @@ class Reports::ShiftsaleController < BaseReportController
@shift = ShiftSale.find_by_id(shift_id) @shift = ShiftSale.find_by_id(shift_id)
shift_obj = ShiftSale.where('id =?',shift_id) shift_obj = ShiftSale.where('id =?',shift_id)
close_cashier_pdf = Lookup.collection_of("print_settings")
if ENV["SERVER_MODE"] != "cloud" #no print in cloud server unique_code = "CloseCashierPdf"
close_cashier_pdf = Lookup.collection_of("print_settings") if !close_cashier_pdf.empty?
close_cashier_pdf.each do |close_cashier|
unique_code = "CloseCashierPdf" if close_cashier[0] == 'CloseCashierCustomisePdf'
if close_cashier[1] == '1'
if !close_cashier_pdf.empty? unique_code="CloseCashierCustomisePdf"
close_cashier_pdf.each do |close_cashier| else
if close_cashier[0] == 'CloseCashierCustomisePdf' unique_code="CloseCashierPdf"
if close_cashier[1] == '1'
unique_code="CloseCashierCustomisePdf"
else
unique_code="CloseCashierPdf"
end
end end
end end
end end
end
shop_details = shop_detail shop_details = shop_detail
cashier_terminal = @shift.cashier_terminal cashier_terminal = @shift.cashier_terminal
@lookup = Lookup.shift_sale_items_lookup_value
if @lookup.to_i == 1
@sale_items = Sale.get_shift_sale_items(@shift.id)
@total_other_charges_info = ShiftSale.get_other_charges(@shift)
end
@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='')
@total_waste = Sale.get_total_waste(shift_id).sum(:grand_total) @total_waste = Sale.get_total_waste(shift_id).sum(:grand_total)
@total_spoile = Sale.get_total_spoile(shift_id).sum(:grand_total) @total_spoile = Sale.get_total_spoile(shift_id).sum(:grand_total)
@@ -96,14 +99,10 @@ class Reports::ShiftsaleController < BaseReportController
printer = Printer::CashierStationPrinter.new(print_settings) printer = Printer::CashierStationPrinter.new(print_settings)
# printer.print_close_cashier(print_settings,cashier_terminal,@shift, nil, shop_details,@sale_taxes,@other_payment,@total_amount_by_account,@total_discount_by_account,@total_member_discount,@total_dinein,@total_takeway,@total_other_charges,@total_waste,@total_spoile,@total_credit_payments) # printer.print_close_cashier(print_settings,cashier_terminal,@shift, nil, shop_details,@sale_taxes,@other_payment,@total_amount_by_account,@total_discount_by_account,@total_member_discount,@total_dinein,@total_takeway,@total_other_charges,@total_waste,@total_spoile,@total_credit_payments)
printer.print_close_cashier(print_settings,cashier_terminal,@shift, @sale_items, @total_other_charges_info, shop_details,@sale_taxes,@other_payment,@total_amount_by_account,@total_discount_by_account,@total_member_discount,@total_dinein,@total_takeway,@total_other_charges,@total_waste,@total_spoile,@total_credit_payments,@payment_methods) printer.print_close_cashier(print_settings, cashier_terminal, @shift, @sale_items, @total_other_charges_info, shop_details, @sale_taxes, @other_payment, @total_amount_by_account, @total_discount_by_account, @total_member_discount, @total_dinein, @total_takeway, @total_other_charges, @total_waste, @total_spoile, @total_credit_payments, @payment_methods)
respond_to do |format| respond_to do |format|
format.html { redirect_to '/en/reports/shiftsale/', notice: 'Printing Completed.'} format.html { redirect_to '/en/reports/shiftsale/', notice: 'Printing Completed.'}
format
end
end end
end end
end end

View File

@@ -1,2 +1,5 @@
module PrintSettingsHelper module PrintSettingsHelper
def print_settings
tag.div id: 'print_settings', class: 'hidden', data: { action_cable: Lookup.collection_of('print_settings').any? { |x| x == ["ActionCable", "1"] } }
end
end end

View File

@@ -58,9 +58,9 @@ class Booking < ApplicationRecord
end end
end end
scope :active, -> {where("booking_status != 'moved'")} scope :active, -> { where('booking_status != ?', 'moved') }
scope :today, -> {where("created_at >= #{Time.now.utc}")} scope :today, -> { where('created_at >= ?', Time.now) }
scope :assign, -> { where(booking_status: 'assign')} scope :assign, -> { where(booking_status: 'assign') }
def self.sync_booking_records(bookings) def self.sync_booking_records(bookings)
if !bookings.nil? if !bookings.nil?
@@ -171,6 +171,15 @@ class Booking < ApplicationRecord
return @orders, @order_items, @sales, @sale_items, @sale_taxes, @sale_payments, @sale_orders, @sale_audits, @bookings, @assigned_order_items, @shift_sales return @orders, @order_items, @sales, @sale_items, @sale_taxes, @sale_payments, @sale_orders, @sale_audits, @bookings, @assigned_order_items, @shift_sales
end end
def self.get_booking_id(order_no)
booking = Booking.joins(" JOIN booking_orders bo ON bo.booking_id = bookings.booking_id")
.joins(" JOIN orders o ON o.order_id=bo.order_id")
.where("o.order_id='#{order_no}'")
.first()
return booking.booking_id
end
private private
def generate_custom_id def generate_custom_id
if self.booking_id.nil? if self.booking_id.nil?

View File

@@ -176,7 +176,7 @@ class OrderQueueStation < ApplicationRecord
end end
def move_print_pdf(change_to,current_user,change_from,order_items,oqs) def move_print_pdf(change_to,current_user,change_from,order_items,oqs)
if ENV["SERVER_MODE"] != "cloud" #no print in cloud server # if ENV["SERVER_MODE"] != "cloud" #no print in cloud server
# get printer info # get printer info
@from = (DiningFacility.find(change_from)).name @from = (DiningFacility.find(change_from)).name
@to = (DiningFacility.find(change_to)).name @to = (DiningFacility.find(change_to)).name
@@ -197,6 +197,6 @@ class OrderQueueStation < ApplicationRecord
printer.print_move_table(print_settings,@to,@from ,@shop,@date,@type,@moved_by,order_items,oqs) printer.print_move_table(print_settings,@to,@from ,@shop,@date,@type,@moved_by,order_items,oqs)
# end # end
# end # end
end # end
end end
end end

View File

@@ -38,66 +38,108 @@ class Printer::CashierStationPrinter < Printer::PrinterWorker
# self.print(filename, cashier_terminal.printer_name) # self.print(filename, cashier_terminal.printer_name)
# end # end
def print_close_cashier(printer_settings,cashier_terminal,shift_sale, sale_items, total_other_charges_info,shop_details,sale_taxes,other_payment,amount,discount,member_discount,total_dinein,total_takeway,total_other_charges,total_waste,total_spoile,total_credit_payments,payment_methods) def print_close_cashier(printer_settings, cashier_terminal, shift_sale, sale_items, total_other_charges_info, shop_details, sale_taxes, other_payment, amount, discount, member_discount, total_dinein, total_takeway, total_other_charges, total_waste, total_spoile, total_credit_payments, payment_methods)
if Lookup.collection_of('print_settings').none? { |x| x == ["ActionCable", "1"] }
if !sale_items.blank? or !sale_items.nil?
@account_cate_count = Hash.new {|hash, key| hash[key] = 0}
sale_items.each {|acc_cate| @account_cate_count[acc_cate.account_id] += 1}
if !sale_items.blank? or !sale_items.nil? @menu_cate_count = Hash.new {|hash, key| hash[key] = 0}
@account_cate_count = Hash.new {|hash, key| hash[key] = 0} sale_items.each {|cate| @menu_cate_count[cate.menu_category_id] += 1}
sale_items.each {|acc_cate| @account_cate_count[acc_cate.account_id] += 1}
@totalByAccount = Hash.new {|hash, key| hash[key] = 0}
sale_items.each {|acc| @totalByAccount[acc.account_id] += acc.grand_total}
end
@menu_cate_count = Hash.new {|hash, key| hash[key] = 0} #Use CUPS service
sale_items.each {|cate| @menu_cate_count[cate.menu_category_id] += 1} #Generate PDF
#Print
cashier = shift_sale.employee.name
shift_name = shift_sale.shift_started_at.utc.getlocal.strftime("%d-%m-%Y %I:%M %p") + "_" + shift_sale.shift_closed_at.utc.getlocal.strftime("%d-%m-%Y %I:%M %p")
filename = "tmp/close_cashier_#{cashier}_#{shift_name}.pdf"
pdf = CloseCashierPdf.new(printer_settings, shift_sale, sale_items, total_other_charges_info, @account_cate_count, @menu_cate_count, @totalByAccount, shop_details, sale_taxes, other_payment, amount, discount, member_discount, total_dinein, total_takeway, total_other_charges, total_waste, total_spoile, total_credit_payments, payment_methods)
close_cashier_pdf = Lookup.collection_of("print_settings") #print_settings with name:CloseCashierPdf
if !close_cashier_pdf.empty?
@totalByAccount = Hash.new {|hash, key| hash[key] = 0} close_cashier_pdf.each do |close_cashier|
sale_items.each {|acc| @totalByAccount[acc.account_id] += acc.grand_total} if close_cashier[0] == 'CloseCashierCustomisePdf'
end if close_cashier[1] == '1'
pdf = CloseCashierCustomisePdf.new(printer_settings, shift_sale, shop_details, sale_taxes, other_payment, amount, discount, member_discount, total_dinein, total_takeway, total_other_charges, total_waste, total_spoile, total_credit_payments)
#Use CUPS service else
#Generate PDF pdf = CloseCashierPdf.new(printer_settings, shift_sale, sale_items, total_other_charges_info, @account_cate_count, @menu_cate_count, @totalByAccount, shop_details, sale_taxes, other_payment, amount,discount, member_discount, total_dinein, total_takeway, total_other_charges, total_waste, total_spoile, total_credit_payments, payment_methods)
#Print end
cashier = shift_sale.employee.name
shift_name = shift_sale.shift_started_at.utc.getlocal.strftime("%d-%m-%Y %I:%M %p") + "_" + shift_sale.shift_closed_at.utc.getlocal.strftime("%d-%m-%Y %I:%M %p")
filename = "tmp/close_cashier_#{cashier}_#{shift_name}.pdf"
pdf = CloseCashierPdf.new(printer_settings,shift_sale, sale_items, total_other_charges_info, @account_cate_count, @menu_cate_count, @totalByAccount, shop_details,sale_taxes,other_payment,amount,discount,member_discount,total_dinein,total_takeway,total_other_charges,total_waste,total_spoile,total_credit_payments,payment_methods)
close_cashier_pdf = Lookup.collection_of("print_settings") #print_settings with name:CloseCashierPdf
if !close_cashier_pdf.empty?
close_cashier_pdf.each do |close_cashier|
if close_cashier[0] == 'CloseCashierCustomisePdf'
if close_cashier[1] == '1'
pdf = CloseCashierCustomisePdf.new(printer_settings,shift_sale,shop_details,sale_taxes,other_payment,amount,discount,member_discount,total_dinein,total_takeway,total_other_charges,total_waste,total_spoile,total_credit_payments)
else
pdf = CloseCashierPdf.new(printer_settings,shift_sale, sale_items, total_other_charges_info, @account_cate_count, @menu_cate_count, @totalByAccount, shop_details,sale_taxes,other_payment,amount,discount,member_discount,total_dinein,total_takeway,total_other_charges,total_waste,total_spoile,total_credit_payments,payment_methods)
end end
end end
end end
end
pdf.render_file filename
#no print in cloud server pdf.render_file filename
if ENV["SERVER_MODE"] != "cloud" #no print in cloud server
self.print(filename, cashier_terminal.printer_name) if ENV["SERVER_MODE"] != "cloud"
self.print(filename, cashier_terminal.printer_name)
end
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,
shift_sale: shift_sale,
cashier_terminal: cashier_terminal,
shift_employee: shift_sale.employee,
sale_items: sale_items,
other_charges: total_other_charges_info,
sale_taxes: sale_taxes,
other_payment: other_payment,
total_amount_by_account: amount,
total_discount_by_account: discount,
total_member_discount: member_discount,
total_waste: total_waste,
total_spoile: total_spoile,
total_other_charges: total_other_charges,
total_credit_payments: total_credit_payments
}
)
end end
end end
def print_sale_items_report(print_settings, shop_details, period_name, type, account, from_date, to_date, shift_name, sale_items, total_other_charges) def print_sale_items_report(print_settings, shop_details, period_name, type, account, from_date, to_date, shift_name, sale_items, total_other_charges)
filename = "tmp/reports_sale_items.pdf" if Lookup.collection_of('print_settings').none? { |x| x == ["ActionCable", "1"] }
filename = "tmp/reports_sale_items.pdf"
if print_settings.unique_code == "SaleItemsPdf" if print_settings.unique_code == "SaleItemsPdf"
pdf = SaleItemsPdf.new(print_settings, shop_details, period_name, type, account, from_date, to_date, shift_name, sale_items, total_other_charges) pdf = SaleItemsPdf.new(print_settings, shop_details, period_name, type, account, from_date, to_date, shift_name, sale_items, total_other_charges)
puts 'Printing!!!!' end
end
if print_settings.unique_code == "SaleItemsStarPdf"
pdf = SaleItemsStarPdf.new(print_settings, shop_details, period_name, type, account, from_date, to_date, shift_name, sale_items, total_other_charges)
puts 'PrintingStar!!!!'
end
pdf.render_file filename if print_settings.unique_code == "SaleItemsStarPdf"
pdf = SaleItemsStarPdf.new(print_settings, shop_details, period_name, type, account, from_date, to_date, shift_name, sale_items, total_other_charges)
end
#no print in cloud server pdf.render_file filename
if ENV["SERVER_MODE"] != "cloud"
self.print(filename, print_settings.printer_name) #no print in cloud server
if ENV["SERVER_MODE"] != "cloud"
self.print(filename, print_settings.printer_name)
end
else
ActionCable.server.broadcast("print_channel_#{Shop.current_shop.shop_code}",
queue: print_settings.printer_name,
unique_code: print_settings.unique_code,
print_copies: print_settings.print_copies,
data: {
sale_items: sale_items.as_json,
total_other_charges: total_other_charges,
shop_details:shop_details.as_json,
sale_details: {
period: period_name,
type: type,
account: account,
from_date: from_date,
to_date: to_date,
shift: shift_name,
},
}
)
end end
end end
#sqa #sqa

View File

@@ -1,80 +1,66 @@
class Printer::OrderQueuePrinter < Printer::PrinterWorker class Printer::OrderQueuePrinter < Printer::PrinterWorker
def print_order_item(print_settings, oqs, order_id, order_item_id, print_status, before_updated_qty="", options="") def print_order_item(print_settings, oqs, order_id, order_item_id, print_status, before_updated_qty="", options="")
# Must be one print booking_id = Booking.get_booking_id(order_id)
if print_settings.print_copies == 0 order_item = print_query('order_item', order_item_id).first #OrderItem.find_by_item_code(item_code)
print_settings.print_copies = 1
print_settings.save! if Lookup.collection_of('print_settings').none? { |x| x == ["ActionCable", "1"] }
# Must be one print
if print_settings.print_copies == 0
print_settings.print_copies = 1
print_settings.save!
end
options = order_item.options
# check for item not to show
pdf = print_settings.unique_code.constantize.new(print_settings, order_item, print_status, options, oqs.use_alternate_name, before_updated_qty)
shop = Shop.current_shop
directory_name = "public/orders_#{shop.shop_code}"
Dir.mkdir(directory_name) unless File.exists?(directory_name)
filename = directory_name + "/order_item_#{order_id}_#{order_item_id}" + ".pdf"
pdf.render_file filename
if ENV["SERVER_MODE"] != "cloud"
self.print(filename, oqs.printer_name)
end
else
ActionCable.server.broadcast("print_channel_#{Shop.current_shop.shop_code}",
queue: oqs.printer_name,
unique_code: print_settings.unique_code,
print_copies: print_settings.print_copies,
data: {
order_item: order_item.as_json(methods: :type),
print_status: print_status.gsub(/[()]/, ""),
booking_id: booking_id,
precision: print_settings.precision
}
)
end end
order_item = print_query('order_item', order_item_id) #OrderItem.find_by_item_code(item_code)
options = order_item[0].options
# check for item not to show
# if order_item[0].price != 0
pdf = print_settings.unique_code.constantize.new(print_settings,order_item[0], print_status, options, oqs.use_alternate_name, before_updated_qty)
# end
shop = Shop.current_shop
directory_name = 'public/orders_'+shop.shop_code
Dir.mkdir(directory_name) unless File.exists?(directory_name)
filename = directory_name + "/order_item_#{order_id}_#{order_item_id}" + ".pdf"
pdf.render_file filename
if ENV["SERVER_MODE"] != "cloud"
self.print(filename, oqs.printer_name)
end
#For print copy
# pdf.render_file filename.gsub(".","-copy.")
# self.print(filename.gsub(".","-copy."), oqs.printer_name)
return filename, order_id, oqs.printer_name return filename, order_id, oqs.printer_name
end end
# Query for per order # Query for per order
def print_order_summary(print_settings, oqs, order_id, order_items, print_status, before_updated_qty="", options="") def print_order_summary(print_settings, oqs, order_id, order_items, print_status, before_updated_qty="", options="")
#Use CUPS service booking_id = Booking.get_booking_id(order_id) #order[0].order_id
#Generate PDF order = print_query('order_summary', order_id)
#Print
# Must be one print
if print_settings.print_copies == 0
print_settings.print_copies = 1
print_settings.save!
end
shop = Shop.current_shop if Lookup.collection_of('print_settings').none? { |x| x == ["ActionCable", "1"] }
directory_name = "public/orders_#{shop.shop_code}" #Use CUPS service
Dir.mkdir(directory_name) unless File.exists?(directory_name) #Generate PDF
#Print
# For Print Per Item # Must be one print
if oqs.cut_per_item if print_settings.print_copies == 0
print_settings.print_copies = 1
order_items.each do |odi| print_settings.save!
odi_item = print_query('order_item', odi.order_items_id)
filename = directory_name + "/order_item_#{order_id}.pdf"
# filename = "tmp/order_item_#{order_id}" + ".pdf"
# For Item Options
options = odi.options == "[]" ? "" : odi.options
# check for item not to show
#if odi.price != 0
pdf = print_settings.unique_code.constantize.new(print_settings, odi_item[0], print_status, options, oqs.use_alternate_name, before_updated_qty)
# pdf.render_file "tmp/order_item.pdf"
pdf.render_file filename
#no print in cloud server
if ENV["SERVER_MODE"] != "cloud"
self.print(filename, oqs.printer_name)
# self.print(filename.gsub(".","-copy."), oqs.printer_name)
end
#end
end end
# For Print Order Summary
else shop = Shop.current_shop
order = print_query('order_summary', order_id) directory_name = "public/orders_#{shop.shop_code}"
Dir.mkdir(directory_name) unless File.exists?(directory_name)
filename = directory_name + "/order_summary_#{order_id}.pdf" filename = directory_name + "/order_summary_#{order_id}.pdf"
# filename = "tmp/order_summary_#{order_id}" + ".pdf" # filename = "tmp/order_summary_#{order_id}" + ".pdf"
@@ -85,15 +71,26 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker
if ENV["SERVER_MODE"] != "cloud" if ENV["SERVER_MODE"] != "cloud"
self.print(filename, oqs.printer_name) self.print(filename, oqs.printer_name)
end end
#For print copy else
# pdf.render_file filename.gsub(".","-copy.") ActionCable.server.broadcast("print_channel_#{Shop.current_shop.shop_code}",
# self.print(filename.gsub(".","-copy."), oqs.printer_name) queue: oqs.printer_name,
unique_code: print_settings.unique_code,
print_copies: print_settings.print_copies,
data: {
order_item: order_items,
order: order.as_json(methods: :type),
print_status: "",
booking_id: booking_id,
precision: print_settings.precision
}
)
end end
return filename, order_id, oqs.printer_name return filename, order_id, oqs.printer_name
end end
# Print for orders in booking # Print for orders in booking
def print_booking_summary(print_settings, oqs, booking_id, print_status,before_updated_qty="") def print_booking_summary(print_settings, oqs, booking_id, print_status, before_updated_qty="")
# Must be one print # Must be one print
if print_settings.print_copies == 0 if print_settings.print_copies == 0
print_settings.print_copies = 1 print_settings.print_copies = 1
@@ -173,37 +170,51 @@ class Printer::OrderQueuePrinter < Printer::PrinterWorker
# Check in-out time # Check in-out time
def print_check_in_out(print_settings, cashier_terminal, booking, table) def print_check_in_out(print_settings, cashier_terminal, booking, table)
#Use CUPS service if Lookup.collection_of('print_settings').none? { |x| x == ["ActionCable", "1"] }
#Generate PDF #Use CUPS service
#Print #Generate PDF
sale_id = booking.sale_id #Print
filename = "tmp/check_in_out_#{sale_id}" + ".pdf" sale_id = booking.sale_id
filename = "tmp/check_in_out_#{sale_id}" + ".pdf"
pdf = CheckInOutPdf.new(print_settings,booking, table) pdf = CheckInOutPdf.new(print_settings,booking, table)
print_setting = PrintSetting.all
# if order_item[0].price != 0 print_setting = PrintSetting.all
if !print_setting.empty?
print_setting.each do |print_settings| # if order_item[0].price != 0
if print_settings.unique_code == 'CheckInOutPdf' if !print_setting.empty?
pdf = CheckInOutPdf.new(print_settings,booking, table) print_setting.each do |print_settings|
if print_settings.unique_code == 'CheckInOutPdf'
pdf = CheckInOutPdf.new(print_settings,booking, table)
end
end end
end end
end
pdf.render_file filename pdf.render_file filename
# Must be one print # Must be one print
if print_settings.print_copies == 0 if print_settings.print_copies == 0
print_settings.print_copies = 1 print_settings.print_copies = 1
print_settings.save! print_settings.save!
end end
# print_settings.print_copies = 1 # print_settings.print_copies = 1
# print_settings.save! # print_settings.save!
#no print in cloud server #no print in cloud server
if ENV["SERVER_MODE"] != "cloud" if ENV["SERVER_MODE"] != "cloud"
self.print(filename, print_settings.printer_name) self.print(filename, print_settings.printer_name)
end
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: {
booking: booking,
table: table,
table_type: table.type,
}
)
end end
end end
end end

View File

@@ -91,10 +91,10 @@ class Printer::ReceiptPrinter < Printer::PrinterWorker
#Bill Receipt Print #Bill Receipt Print
def print_receipt_bill(printer_settings, kbz_pay_status, qr_code, cashier_terminal,sale_items,sale_data, customer_name, item_price_by_accounts, discount_price_by_accounts, member_info = nil,rebate_amount=nil,shop_details, printed_status,balance,card_data,other_amount,latest_order_no,card_balance_amount,order_reservation) def print_receipt_bill(printer_settings, kbz_pay_status, qr_code, cashier_terminal,sale_items,sale_data, customer_name, item_price_by_accounts, discount_price_by_accounts, member_info = nil,rebate_amount=nil,shop_details, printed_status,balance,card_data,other_amount,latest_order_no,card_balance_amount,order_reservation)
#Use CUPS service if Lookup.collection_of('print_settings').none? { |x| x == ["ActionCable", "1"] }
#Generate PDF #Use CUPS service
#Print #Generate PDF
if printer_settings #Print
if !printer_settings.unique_code.match?(/receiptbillorder/i) if !printer_settings.unique_code.match?(/receiptbillorder/i)
if Lookup.collection_of("print_settings").any? { |x| x == ["ReceiptBillA5Pdf", "1"] } #print_settings with name:ReceiptBillA5Pdf 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) 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)
@@ -109,48 +109,97 @@ class Printer::ReceiptPrinter < Printer::PrinterWorker
# print as print copies in printer setting # print as print copies in printer setting
count = printer_settings.print_copies count = printer_settings.print_copies
# override print copies for print worker loop directory_name = 'public/receipts'
# print_settings.print_copies = 1 Dir.mkdir(directory_name) unless File.exists?(directory_name)
# print_settings.save! Rails.logger.debug "############## dir::" + directory_name
end
directory_name = 'public/receipts' filename = "#{directory_name}/receipt_bill_#{sale_data.receipt_no}#{count != 1 ? "_#{count}" : ''}.pdf"
Dir.mkdir(directory_name) unless File.exists?(directory_name) pdf.render_file filename
Rails.logger.debug "############## dir::" + directory_name
if count == 1 if printed_status != 'Paid' || !Lookup.where(lookup_type: "ReceiptPdfView").pluck(:value).include?('1')
filename = directory_name + "/receipt_bill_#{sale_data.receipt_no}.pdf" #no print in cloud server
pdf.render_file filename puts "SERVER_MODE #{ENV["SERVER_MODE"]}"
if printed_status != 'Paid' && printed_status != 'credit_payment' if ENV["SERVER_MODE"] != "cloud"
#no print in cloud server self.print(filename, cashier_terminal.printer_name)
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
end end
end end
Rails.logger.debug "############## filename::" + filename
return filename, sale_data.receipt_no, cashier_terminal.printer_name Rails.logger.debug "############## filename::" + filename
else
if printed_status != 'Paid' || !Lookup.where(lookup_type: "ReceiptPdfView").pluck(:value).include?('1')
sale_payments = SalePayment
.select(:payment_method, 'SUM(`sale_payments`.`payment_amount`) AS `payment_amount`')
.where(sale_id: sale_data.sale_id).group(:payment_method)
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_payments.as_json
},
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 end
# 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) stock_items= []
pdf.render_file "tmp/print_stock_check_result.pdf" if stockcheck_items.length > 0
#no print in cloud server stockcheck_items.each do |sc|
if ENV["SERVER_MODE"] != "cloud" stock_item= {
self.print("tmp/print_stock_check_result.pdf") count: sc.stock_count.to_s,
item_name: MenuItemInstance.get_item_name(sc.item_code)
}
stock_items.push(stock_item)
end
end
if Lookup.collection_of('print_settings').none? { |x| x == ["ActionCable", "1"] }
pdf = StockCheckPdf.new(print_settings,stockcheck, stockcheck_items,checker_name, shop_details)
pdf.render_file "tmp/print_stock_check_result.pdf"
#no print in cloud server
if ENV["SERVER_MODE"] != "cloud"
self.print("tmp/print_stock_check_result.pdf")
end end
else
ActionCable.server.broadcast("print_channel_#{Shop.current_shop.shop_code}",
queue: print_settings.printer_name,
unique_code: print_settings.unique_code,
print_copies: print_settings.print_copies,
data: {
stockcheck: stockcheck,
stockcheck_items: stock_items,
checker_name: checker_name,
shop_details: shop_details,
}
)
end
end end
#Queue No Print #Queue No Print
@@ -167,21 +216,40 @@ class Printer::ReceiptPrinter < Printer::PrinterWorker
end end
#Move Table Print #Move Table Print
def print_move_table(printer_settings,to,from,shop_detail,date,type,moved_by,order_items,oqs) def print_move_table(printer_settings, to, from, shop_detail, date, type, moved_by, order_items, oqs)
#Use CUPS service if Lookup.collection_of('print_settings').none? { |x| x == ["ActionCable", "1"] }
#Generate PDF #Use CUPS service
#Print #Generate PDF
#Print
pdf = MoveTablePdf.new(printer_settings, to, from, shop_detail, date, type, moved_by, order_items)
pdf.render_file "tmp/print_move_table.pdf"
pdf = MoveTablePdf.new(printer_settings,to,from,shop_detail,date,type,moved_by,order_items) if ENV["SERVER_MODE"] != "cloud"
pdf.render_file "tmp/print_move_table.pdf" if oqs.print_copy
self.print("tmp/print_move_table.pdf",oqs.printer_name)
if oqs.print_copy else
self.print("tmp/print_move_table.pdf",oqs.printer_name) print_settings.print_copies = 1
print_settings.save!
#no print in cloud server
self.print("tmp/print_move_table.pdf", oqs.printer_name)
end
end
else else
print_settings.print_copies = 1 ActionCable.server.broadcast("print_channel_#{Shop.current_shop.shop_code}",
print_settings.save! queue: oqs.station_name,
#no print in cloud server unique_code: print_settings.unique_code,
self.print("tmp/print_move_table.pdf", oqs.printer_name) print_copies: print_settings.print_copies,
data: {
type: type,
body: {
to: to,
from: from,
date: date,
moved_by: moved_by,
order_items: order_items.as_json,
},
}
)
end end
end end
@@ -200,14 +268,29 @@ class Printer::ReceiptPrinter < Printer::PrinterWorker
#Queue No Print #Queue No Print
def print_call_waiter(printer_settings,table,time,shop_detail) def print_call_waiter(printer_settings,table,time,shop_detail)
#Use CUPS service if Lookup.collection_of('print_settings').none? { |x| x == ["ActionCable", "1"] }
#Generate PDF #Use CUPS service
#Print #Generate PDF
pdf = CallWaiterPdf.new(printer_settings,table,time,shop_detail) #Print
pdf.render_file "tmp/print_call_waiter.pdf" pdf = CallWaiterPdf.new(printer_settings,table,time,shop_detail)
#no print in cloud server
if ENV["SERVER_MODE"] != "cloud" pdf.render_file "tmp/print_call_waiter.pdf"
self.print("tmp/print_call_waiter.pdf") #no print in cloud server
if ENV["SERVER_MODE"] != "cloud"
self.print("tmp/print_call_waiter.pdf")
end
else
ActionCable.server.broadcast("print_channel_#{Shop.current_shop.shop_code}",
queue: print_settings.printer_name,
unique_code: print_settings.unique_code,
print_copies: print_settings.print_copies,
data: {
shop_name: shop_detail.name,
name: print_settings.name,
table: table.name,
time: time,
}
)
end end
end end
@@ -217,18 +300,18 @@ class Printer::ReceiptPrinter < Printer::PrinterWorker
# if count == 0 # if count == 0
# self.print(filename, printer_name) # self.print(filename, printer_name)
# else # else
if count == 1 if count == 1
#no print in cloud server #no print in cloud server
if ENV["SERVER_MODE"] != "cloud" if ENV["SERVER_MODE"] != "cloud"
self.print(filename, printer_name) self.print(filename, printer_name)
end end
else else
filename = "public/receipts/receipt_bill_#{receipt_no}_#{count}.pdf" filename = "public/receipts/receipt_bill_#{receipt_no}_#{count}.pdf"
# no print in cloud server # no print in cloud server
if ENV["SERVER_MODE"] != "cloud" if ENV["SERVER_MODE"] != "cloud"
self.print(filename, printer_name) self.print(filename, printer_name)
end end
end end
# end # end
end end

View File

@@ -764,7 +764,7 @@ class Sale < ApplicationRecord
SUM(case when (sale_payments.payment_method='foc') then sale_payments.payment_amount else 0 end) as foc_amount") SUM(case when (sale_payments.payment_method='foc') then sale_payments.payment_amount else 0 end) as foc_amount")
.sale_payments_with_audit_except_void_between(from, to) .sale_payments_with_audit_except_void_between(from, to)
.where("(sale_status = ? OR sale_status = ?) AND sales.receipt_date between ? AND ? ", 'completed', 'void', from, to) .where("(sale_status = ? OR sale_status = ?) AND sales.receipt_date between ? AND ? ", 'completed', 'void', from, to)
.group("sale_id").to_sql .group("sale_id")
sale_taxes = Sale.select('sales.sale_id, sale_taxes.tax_name') sale_taxes = Sale.select('sales.sale_id, sale_taxes.tax_name')
.joins(:sale_taxes) .joins(:sale_taxes)
@@ -789,13 +789,13 @@ class Sale < ApplicationRecord
(IFNULL(SUM(case when (sale_status='completed') then grand_total else 0 end),0)) + (IFNULL(SUM(case when (sale_status='completed') then total_discount else 0 end),0)) as gross_sale, (IFNULL(SUM(case when (sale_status='completed') then grand_total else 0 end),0)) + (IFNULL(SUM(case when (sale_status='completed') then total_discount else 0 end),0)) as gross_sale,
CAST((CONVERT_TZ(receipt_date,'+00:00','+06:30')) AS DATE) as sale_date, CAST((CONVERT_TZ(receipt_date,'+00:00','+06:30')) AS DATE) as sale_date,
#{payment_methods.map { |method| pm = method == 'paypar' ? 'redeem' : method; "SUM(`#{pm}`) as `#{pm}`"}.push('').join(', ')} #{payment_methods.map { |method| pm = method == 'paypar' ? 'redeem' : method; "SUM(`#{pm}`) as `#{pm}`"}.push('').join(', ')}
SUM(cash_amount) as cash_amount, SUM(`cash_amount`) as `cash_amount`,
SUM(credit_amount) as credit_amount, SUM(`credit_amount`) as `credit_amount`,
SUM(foc_amount) as foc_amount SUM(`foc_amount`) as `foc_amount`
FROM ( FROM (
#{sales} #{sales.to_sql}
) as s ) as s
JOIN (#{sale_taxes.to_sql}) AS st ON s.sale_id = st.sale_id LEFT JOIN (#{sale_taxes.to_sql}) AS st ON s.sale_id = st.sale_id
GROUP BY DATE(CONVERT_TZ(receipt_date,'+00:00','+06:30'))").to_hash.map(&:symbolize_keys) GROUP BY DATE(CONVERT_TZ(receipt_date,'+00:00','+06:30'))").to_hash.map(&:symbolize_keys)
return daily_total return daily_total
end end
@@ -974,7 +974,7 @@ def self.get_by_shift_items(shift_sale_range, shift, from, to, status,type,accou
product = product.where("sales.shift_sale_id IN (?) and sale_status='completed'",shift.to_a) product = product.where("sales.shift_sale_id IN (?) and sale_status='completed'",shift.to_a)
discount_query = Sale.where("sales.shift_sale_id in (?) and sale_status= 'completed' ", shift.to_a).sum(:total_discount) discount_query = Sale.where("sales.shift_sale_id in (?) and sale_status= 'completed' ", shift.to_a).sum(:total_discount)
change_amount = Sale.where("sales.shift_sale_id in (?) and sale_status= 'completed' ", shift.to_a).sum(:amount_changed) change_amount = Sale.where("sales.shift_sale_id in (?) and sale_status= 'completed' ", shift.to_a).sum(:amount_changed)
sale_cash = Sale.select("SUM(case when (sale_payments.payment_method IN (#{payment_methods.empty? ? '""' : payment_methods.map{ |pm| "\"#{pm}\"" }.join(', ') })) then (sale_payments.payment_amount) else 0 end) as card_amount, sale_cash = select(Sale.column_names).select("SUM(case when (sale_payments.payment_method IN (#{payment_methods.empty? ? '""' : payment_methods.map{ |pm| "\"#{pm}\"" }.join(', ') })) then (sale_payments.payment_amount) else 0 end) as card_amount,
SUM(case when (sale_payments.payment_method='cash') then (sale_payments.payment_amount) else 0 end) as cash_amount, SUM(case when (sale_payments.payment_method='cash') then (sale_payments.payment_amount) else 0 end) as cash_amount,
SUM(case when (sale_payments.payment_method='creditnote') then (sale_payments.payment_amount) else 0 end) as credit_amount, SUM(case when (sale_payments.payment_method='creditnote') then (sale_payments.payment_amount) else 0 end) as credit_amount,
SUM(case when (sale_payments.payment_method='foc') then (sale_payments.payment_amount) else 0 end) as foc_amount") SUM(case when (sale_payments.payment_method='foc') then (sale_payments.payment_amount) else 0 end) as foc_amount")
@@ -997,7 +997,7 @@ def self.get_by_shift_items(shift_sale_range, shift, from, to, status,type,accou
product = product.where("sales.shift_sale_id IN (?) and sale_status='completed'",shift_sale_range.to_a) product = product.where("sales.shift_sale_id IN (?) and sale_status='completed'",shift_sale_range.to_a)
discount_query = Sale.where("sales.shift_sale_id IN (?) and sale_status ='completed'", shift_sale_range.to_a).sum(:total_discount) discount_query = Sale.where("sales.shift_sale_id IN (?) and sale_status ='completed'", shift_sale_range.to_a).sum(:total_discount)
change_amount = Sale.where("sales.shift_sale_id IN (?) and sale_status ='completed'", shift_sale_range.to_a).sum(:amount_changed) change_amount = Sale.where("sales.shift_sale_id IN (?) and sale_status ='completed'", shift_sale_range.to_a).sum(:amount_changed)
sale_cash = Sale.select("SUM(case when (sale_payments.payment_method IN (#{payment_methods.empty? ? '""' : payment_methods.map{ |pm| "\"#{pm}\"" }.join(', ') })) then (sale_payments.payment_amount) else 0 end) as card_amount, sale_cash = select(Sale.column_names).select("SUM(case when (sale_payments.payment_method IN (#{payment_methods.empty? ? '""' : payment_methods.map{ |pm| "\"#{pm}\"" }.join(', ') })) then (sale_payments.payment_amount) else 0 end) as card_amount,
SUM(case when (sale_payments.payment_method='cash') then (sale_payments.payment_amount) else 0 end) as cash_amount, SUM(case when (sale_payments.payment_method='cash') then (sale_payments.payment_amount) else 0 end) as cash_amount,
SUM(case when (sale_payments.payment_method='creditnote') then (sale_payments.payment_amount) else 0 end) as credit_amount, SUM(case when (sale_payments.payment_method='creditnote') then (sale_payments.payment_amount) else 0 end) as credit_amount,
SUM(case when (sale_payments.payment_method='foc') then (sale_payments.payment_amount) else 0 end) as foc_amount") SUM(case when (sale_payments.payment_method='foc') then (sale_payments.payment_amount) else 0 end) as foc_amount")
@@ -1021,7 +1021,7 @@ def self.get_by_shift_items(shift_sale_range, shift, from, to, status,type,accou
discount_query = Sale.where("sales.receipt_date between ? and ? and sale_status ='completed'", from,to).sum(:total_discount) discount_query = Sale.where("sales.receipt_date between ? and ? and sale_status ='completed'", from,to).sum(:total_discount)
change_amount = Sale.where("sales.receipt_date between ? and ? and sale_status ='completed'", from,to).sum(:amount_changed) change_amount = Sale.where("sales.receipt_date between ? and ? and sale_status ='completed'", from,to).sum(:amount_changed)
sale_cash = Sale.select("SUM(case when (sale_payments.payment_method IN (#{payment_methods.empty? ? '""' : payment_methods.map{ |pm| "\"#{pm}\"" }.join(', ') })) then (sale_payments.payment_amount) else 0 end) as card_amount, sale_cash = select(Sale.column_names).select("SUM(case when (sale_payments.payment_method IN (#{payment_methods.empty? ? '""' : payment_methods.map{ |pm| "\"#{pm}\"" }.join(', ') })) then (sale_payments.payment_amount) else 0 end) as card_amount,
SUM(case when (sale_payments.payment_method='cash') then (sale_payments.payment_amount) else 0 end) as cash_amount, SUM(case when (sale_payments.payment_method='cash') then (sale_payments.payment_amount) else 0 end) as cash_amount,
SUM(case when (sale_payments.payment_method='creditnote') then (sale_payments.payment_amount) else 0 end) as credit_amount, SUM(case when (sale_payments.payment_method='creditnote') then (sale_payments.payment_amount) else 0 end) as credit_amount,
SUM(case when (sale_payments.payment_method='foc') then (sale_payments.payment_amount) else 0 end) as foc_amount") SUM(case when (sale_payments.payment_method='foc') then (sale_payments.payment_amount) else 0 end) as foc_amount")
@@ -1080,7 +1080,7 @@ def self.get_staff_meal_items(shift_sale_range, shift, from, to, status, account
product = product.where("sales.shift_sale_id IN (?) and sale_status='completed'",shift.to_a) product = product.where("sales.shift_sale_id IN (?) and sale_status='completed'",shift.to_a)
discount_query = Sale.where("sales.shift_sale_id in (?) and sale_status= 'completed' ", shift.to_a).sum(:total_discount) discount_query = Sale.where("sales.shift_sale_id in (?) and sale_status= 'completed' ", shift.to_a).sum(:total_discount)
change_amount = Sale.where("sales.shift_sale_id in (?) and sale_status= 'completed' ", shift.to_a).sum(:amount_changed) change_amount = Sale.where("sales.shift_sale_id in (?) and sale_status= 'completed' ", shift.to_a).sum(:amount_changed)
sale_cash = Sale.select("SUM(case when (sale_payments.payment_method IN (#{payment_methods.empty? ? '""' : payment_methods.map{ |pm| "\"#{pm}\"" }.join(', ') })) then (sale_payments.payment_amount) else 0 end) as card_amount, sale_cash = select(Sale.column_names).select("SUM(case when (sale_payments.payment_method IN (#{payment_methods.empty? ? '""' : payment_methods.map{ |pm| "\"#{pm}\"" }.join(', ') })) then (sale_payments.payment_amount) else 0 end) as card_amount,
SUM(case when (sale_payments.payment_method='cash') then (sale_payments.payment_amount) else 0 end) as cash_amount, SUM(case when (sale_payments.payment_method='cash') then (sale_payments.payment_amount) else 0 end) as cash_amount,
SUM(case when (sale_payments.payment_method='creditnote') then (sale_payments.payment_amount) else 0 end) as credit_amount, SUM(case when (sale_payments.payment_method='creditnote') then (sale_payments.payment_amount) else 0 end) as credit_amount,
SUM(case when (sale_payments.payment_method='foc') then (sale_payments.payment_amount) else 0 end) as foc_amount") SUM(case when (sale_payments.payment_method='foc') then (sale_payments.payment_amount) else 0 end) as foc_amount")
@@ -1103,7 +1103,7 @@ def self.get_staff_meal_items(shift_sale_range, shift, from, to, status, account
product = product.where("sales.shift_sale_id IN (?) and sale_status='completed'",shift_sale_range.to_a) product = product.where("sales.shift_sale_id IN (?) and sale_status='completed'",shift_sale_range.to_a)
discount_query = Sale.where("sales.shift_sale_id IN (?) and sale_status ='completed'", shift_sale_range.to_a).sum(:total_discount) discount_query = Sale.where("sales.shift_sale_id IN (?) and sale_status ='completed'", shift_sale_range.to_a).sum(:total_discount)
change_amount = Sale.where("sales.shift_sale_id IN (?) and sale_status ='completed'", shift_sale_range.to_a).sum(:amount_changed) change_amount = Sale.where("sales.shift_sale_id IN (?) and sale_status ='completed'", shift_sale_range.to_a).sum(:amount_changed)
sale_cash = Sale.select("SUM(case when (sale_payments.payment_method IN (#{payment_methods.empty? ? '""' : payment_methods.map{ |pm| "\"#{pm}\"" }.join(', ') })) then (sale_payments.payment_amount) else 0 end) as card_amount, sale_cash = select(Sale.column_names).select("SUM(case when (sale_payments.payment_method IN (#{payment_methods.empty? ? '""' : payment_methods.map{ |pm| "\"#{pm}\"" }.join(', ') })) then (sale_payments.payment_amount) else 0 end) as card_amount,
SUM(case when (sale_payments.payment_method='cash') then (sale_payments.payment_amount) else 0 end) as cash_amount, SUM(case when (sale_payments.payment_method='cash') then (sale_payments.payment_amount) else 0 end) as cash_amount,
SUM(case when (sale_payments.payment_method='creditnote') then (sale_payments.payment_amount) else 0 end) as credit_amount, SUM(case when (sale_payments.payment_method='creditnote') then (sale_payments.payment_amount) else 0 end) as credit_amount,
SUM(case when (sale_payments.payment_method='foc') then (sale_payments.payment_amount) else 0 end) as foc_amount") SUM(case when (sale_payments.payment_method='foc') then (sale_payments.payment_amount) else 0 end) as foc_amount")
@@ -1127,7 +1127,7 @@ def self.get_staff_meal_items(shift_sale_range, shift, from, to, status, account
discount_query = Sale.where("sales.receipt_date between ? and ? and sale_status ='completed'", from,to).sum(:total_discount) discount_query = Sale.where("sales.receipt_date between ? and ? and sale_status ='completed'", from,to).sum(:total_discount)
change_amount = Sale.where("sales.receipt_date between ? and ? and sale_status ='completed'", from,to).sum(:amount_changed) change_amount = Sale.where("sales.receipt_date between ? and ? and sale_status ='completed'", from,to).sum(:amount_changed)
sale_cash = Sale.select("SUM(case when (sale_payments.payment_method IN (#{payment_methods.empty? ? '""' : payment_methods.map{ |pm| "\"#{pm}\"" }.join(', ') })) then (sale_payments.payment_amount) else 0 end) as card_amount, sale_cash = select(Sale.column_names).select("SUM(case when (sale_payments.payment_method IN (#{payment_methods.empty? ? '""' : payment_methods.map{ |pm| "\"#{pm}\"" }.join(', ') })) then (sale_payments.payment_amount) else 0 end) as card_amount,
SUM(case when (sale_payments.payment_method='cash') then (sale_payments.payment_amount) else 0 end) as cash_amount, SUM(case when (sale_payments.payment_method='cash') then (sale_payments.payment_amount) else 0 end) as cash_amount,
SUM(case when (sale_payments.payment_method='creditnote') then (sale_payments.payment_amount) else 0 end) as credit_amount, SUM(case when (sale_payments.payment_method='creditnote') then (sale_payments.payment_amount) else 0 end) as credit_amount,
SUM(case when (sale_payments.payment_method='foc') then (sale_payments.payment_amount) else 0 end) as foc_amount") SUM(case when (sale_payments.payment_method='foc') then (sale_payments.payment_amount) else 0 end) as foc_amount")

View File

@@ -1,14 +1,12 @@
class SeedGenerator < ApplicationRecord class SeedGenerator < ApplicationRecord
# Generate ID for Tables # Generate ID for Tables
def self.generate_id(model, prefix) def self.generate_id(model, prefix)
model_name = self.get_model_name(model)
prefix ||= '' prefix ||= ''
prefix << '-' if prefix.present? prefix << '-' if prefix.present?
if ENV["SERVER_MODE"] == 'cloud' if ENV["SERVER_MODE"] == 'cloud'
prefix << 'C' prefix << 'C'
else # else
prefix << 'L' prefix << 'L'
end end
@@ -16,14 +14,12 @@ class SeedGenerator < ApplicationRecord
prefix << shop.shop_code prefix << shop.shop_code
end end
seed = self.update_seed(model_name) seed = self.update_seed(model)
length = 16 - prefix.length length = 16 - prefix.length
prefix + seed.to_s.rjust(length, '0') prefix + seed.to_s.rjust(length, '0')
end end
def self.generate_ids(model, prefix, count = 1) def self.generate_ids(model, prefix, count = 1)
model_name = self.get_model_name(model)
prefix ||= '' prefix ||= ''
prefix << '-' if prefix.present? prefix << '-' if prefix.present?
@@ -37,7 +33,7 @@ class SeedGenerator < ApplicationRecord
prefix << shop.shop_code prefix << shop.shop_code
end end
start = self.update_seed(model_name, count) start = self.update_seed(model, count)
stop = start + count - 1 stop = start + count - 1
length = 16 - prefix.length length = 16 - prefix.length
(start..stop).map { |c| prefix + c.to_s.rjust(length, '0') } (start..stop).map { |c| prefix + c.to_s.rjust(length, '0') }
@@ -127,7 +123,8 @@ class SeedGenerator < ApplicationRecord
def self.update_seed(model, count = 1) def self.update_seed(model, count = 1)
SeedGenerator.transaction do SeedGenerator.transaction do
seed = SeedGenerator.lock.find_by_model(model) seed = SeedGenerator.lock.find_by_model(get_model_name(model)) ||
SeedGenerator.lock.find_by_model(model)
seed.next = seed.next + (count * seed.increase_by) seed.next = seed.next + (count * seed.increase_by)
seed.current = seed.next - seed.increase_by seed.current = seed.next - seed.increase_by
seed.save! seed.save!

View File

@@ -152,7 +152,7 @@ class ShiftSale < ApplicationRecord
def self.get_by_shift_other_payment(shift) def self.get_by_shift_other_payment(shift)
payment_methods = SalePayment.where.not(payment_method: ['cash', 'creditnote', 'foc']).distinct.pluck(:payment_method) payment_methods = SalePayment.where.not(payment_method: ['cash', 'creditnote', 'foc']).distinct.pluck(:payment_method)
shift_other_payments = Sale.select("sales.sale_id,sale_payments.payment_method as name") shift_other_payments = Sale.select("sales.sale_id, sale_payments.payment_method as name")
if payment_methods.present? if payment_methods.present?
shift_other_payments = shift_other_payments.select("#{payment_methods.map { |method| "SUM(case when (sale_payments.payment_method='#{method}') then sale_payments.payment_amount else 0 end) as `#{method == 'paypar' ? 'redeem' : method}`"}.join(', ')}") shift_other_payments = shift_other_payments.select("#{payment_methods.map { |method| "SUM(case when (sale_payments.payment_method='#{method}') then sale_payments.payment_amount else 0 end) as `#{method == 'paypar' ? 'redeem' : method}`"}.join(', ')}")
end end
@@ -210,6 +210,11 @@ class ShiftSale < ApplicationRecord
.first() .first()
end end
def self.get_other_charges(shift)
query = SaleItem.joins("JOIN sales as s ON s.sale_id = sale_items.sale_id")
.where('shift_sale_id =? and s.sale_status = "completed" and sale_items.product_code = "Other Charges" and sale_items.item_instance_code is null',shift.id)
end
def self.search(filter,from,to) def self.search(filter,from,to)
if filter.blank? if filter.blank?
keyword = '' keyword = ''

View File

@@ -8,7 +8,7 @@ class Shop < ApplicationRecord
accepts_nested_attributes_for :display_images accepts_nested_attributes_for :display_images
def file_data=(input_data) def file_data=(input_data)
self.data = input_data.read self.data = input_data.read
end end
def self.current_shop def self.current_shop

View File

@@ -597,7 +597,8 @@ class CloseCashierPdf < Prawn::Document
def other_charges_detail(total_other_charges) def other_charges_detail(total_other_charges)
total_charges = 0 total_charges = 0
total_charges_items = 0 total_charges_items = 0
p "total other charges<========================="
p total_other_charges
unless total_other_charges.nil? unless total_other_charges.nil?
y_position = cursor y_position = cursor
bounding_box([0,y_position], :width =>self.page_width - 10, :height => 20) do bounding_box([0,y_position], :width =>self.page_width - 10, :height => 20) do
@@ -611,6 +612,7 @@ class CloseCashierPdf < Prawn::Document
total_other_charges.each do |charges| total_other_charges.each do |charges|
move_down 3 move_down 3
p charges['product_name']
add_item_line(charges['product_name'], charges['unit_price'].to_i, charges['total_item'].to_i, charges['grand_total'].to_i) add_item_line(charges['product_name'], charges['unit_price'].to_i, charges['total_item'].to_i, charges['grand_total'].to_i)
total_charges_items += charges['total_item'].to_i total_charges_items += charges['total_item'].to_i

View File

@@ -309,146 +309,144 @@ class ReceiptBillPdf < Prawn::Document
end end
def all_total(sale_data,precision,delimiter,printed_status) def all_total(sale_data,precision,delimiter,printed_status)
move_down line_move move_down line_move
item_name_width = self.item_width item_name_width = self.item_width
y_position = cursor y_position = cursor
if sale_data.discount_type == 'member_discount' if sale_data.discount_type == 'member_discount'
dis_type = "Member Discount:" dis_type = "Member Discount:"
else
dis_type = "Overall Discount:"
end
bounding_box([0,y_position], :width =>self.item_description_width, :height => self.item_height) do
text "#{ dis_type }", :size => self.item_font_size,:align => :left
end
bounding_box([self.item_description_width,y_position], :width =>self.label_width) do
text "( #{number_format(sale_data.total_discount, :precision => precision.to_i, :delimiter => delimiter)} )" , :size => self.item_font_size,:align => :right
end
service_tax_desc = ""
service_tax_amount = 0
service_tax_rate = 0
com_tax_desc = ""
com_tax_amount = 0
com_tax_rate = 0
if sale_data.sale_taxes.length > 0
incl_tax = ""
if sale_data.tax_type == "inclusive"
incl_tax = "Incl."
end
find_lookup = Lookup.find_by_lookup_type('show_total_before_tax')
if find_lookup.nil? || find_lookup == nil
lookup = Lookup.new(lookup_type: 'show_total_before_tax', name: 'Show Total Before Tax', value: '0')
lookup.save
end
check_lookup_type = Lookup.find_by_lookup_type('show_total_before_tax')
if check_lookup_type.value == '1'
sale_data.sale_taxes.each do |st|
if (st.tax_name.include? "Service")
service_tax_desc = st.tax_name
service_tax_amount = st.tax_payable_amount
if incl_tax
service_tax_rate = st.tax_rate.to_i
end
end
if (st.tax_name.include? "Commercial")
com_tax_desc = st.tax_name
com_tax_amount = st.tax_payable_amount
if incl_tax
com_tax_rate = st.tax_rate.to_i
end
end
end
move_down line_move
y_position = cursor
bounding_box([0,y_position], :width =>self.item_description_width, :height => self.item_height) do
text "#{ service_tax_desc } (#{incl_tax} #{ service_tax_rate }%)", :size => self.item_font_size,:align => :left
end
bounding_box([self.item_description_width,y_position], :width =>self.label_width) do
text "#{number_format(service_tax_amount, :precision => precision.to_i, :delimiter => delimiter)}" , :size => self.item_font_size,:align => :right
end
move_down line_move
y_position = cursor
stroke_horizontal_rule
bounding_box([0,y_position], :width =>self.item_description_width, :height => self.item_height) do
text "Total Before Tax", :size => self.item_font_size,:align => :left
end
bounding_box([self.item_description_width,y_position], :width =>self.label_width) do
text "#{service_tax_amount.to_i + @sub_total.to_i}" , :size => self.item_font_size,:align => :right
end
move_down line_move
y_position = cursor
bounding_box([0,y_position], :width =>self.item_description_width, :height => self.item_height) do
text "#{ com_tax_desc } (#{incl_tax} #{ com_tax_rate.to_i }%)", :size => self.item_font_size,:align => :left
end
bounding_box([self.item_description_width,y_position], :width =>self.label_width) do
text "#{number_format(com_tax_amount, :precision => precision.to_i, :delimiter => delimiter)}" , :size => self.item_font_size,:align => :right
end
else else
dis_type = "Overall Discount:" sale_data.sale_taxes.each do |st|
end move_down line_move
bounding_box([0,y_position], :width =>self.item_description_width, :height => self.item_height) do
text "#{ dis_type }", :size => self.item_font_size,:align => :left
end
bounding_box([self.item_description_width,y_position], :width =>self.label_width) do
text "( #{number_format(sale_data.total_discount, :precision => precision.to_i, :delimiter => delimiter)} )" , :size => self.item_font_size,:align => :right
end
service_tax_desc = ""
service_tax_amount = 0
service_tax_rate = 0
com_tax_desc = ""
com_tax_amount = 0
com_tax_rate = 0
if sale_data.sale_taxes.length > 0
incl_tax = ""
if sale_data.tax_type == "inclusive"
incl_tax = "Incl."
end
find_lookup = Lookup.find_by_lookup_type('show_total_before_tax')
if find_lookup.nil? || find_lookup == nil
lookup = Lookup.new(lookup_type: 'show_total_before_tax', name: 'Show Total Before Tax', value: '0')
lookup.save
end
check_lookup_type = Lookup.find_by_lookup_type('show_total_before_tax')
if check_lookup_type.value == '1'
sale_data.sale_taxes.each do |st|
if (st.tax_name.include? "Service")
service_tax_desc = st.tax_name
service_tax_amount = st.tax_payable_amount
if incl_tax
service_tax_rate = st.tax_rate.to_i
end
end
if (st.tax_name.include? "Commercial")
com_tax_desc = st.tax_name
com_tax_amount = st.tax_payable_amount
if incl_tax
com_tax_rate = st.tax_rate.to_i
end
end
end
move_down line_move
y_position = cursor
bounding_box([0,y_position], :width =>self.item_description_width, :height => self.item_height) do
text "#{ service_tax_desc } (#{incl_tax} #{ service_tax_rate }%)", :size => self.item_font_size,:align => :left
end
bounding_box([self.item_description_width,y_position], :width =>self.label_width) do
text "#{number_format(service_tax_amount, :precision => precision.to_i, :delimiter => delimiter)}" , :size => self.item_font_size,:align => :right
end
move_down line_move
y_position = cursor
stroke_horizontal_rule
bounding_box([0,y_position], :width =>self.item_description_width, :height => self.item_height) do
text "Total Before Tax", :size => self.item_font_size,:align => :left
end
bounding_box([self.item_description_width,y_position], :width =>self.label_width) do
text "#{service_tax_amount.to_i + @sub_total.to_i}" , :size => self.item_font_size,:align => :right
end
move_down line_move
y_position = cursor
bounding_box([0,y_position], :width =>self.item_description_width, :height => self.item_height) do
text "#{ com_tax_desc } (#{incl_tax} #{ com_tax_rate.to_i }%)", :size => self.item_font_size,:align => :left
end
bounding_box([self.item_description_width,y_position], :width =>self.label_width) do
text "#{number_format(com_tax_amount, :precision => precision.to_i, :delimiter => delimiter)}" , :size => self.item_font_size,:align => :right
end
else
sale_data.sale_taxes.each do |st|
move_down line_move
y_position = cursor
bounding_box([0,y_position], :width =>self.item_description_width, :height => self.item_height) do
text "#{ st.tax_name } (#{incl_tax} #{ st.tax_rate.to_i }%)", :size => self.item_font_size,:align => :left
end
bounding_box([self.item_description_width,y_position], :width =>self.label_width) do
text "#{number_format(st.tax_payable_amount, :precision => precision.to_i, :delimiter => delimiter)}" , :size => self.item_font_size,:align => :right
end
end
end
else
end
# move_down 5
# y_position = cursor
# bounding_box([0,y_position], :width =>self.item_description_width, :height => self.item_height) do
# text "Total Tax", :size => self.item_font_size,:align => :left
# end
# bounding_box([self.item_description_width,y_position], :width =>self.label_width) do
# text "( " +"#{sale_data.total_tax}" +" )" , :size => self.item_font_size,:align => :right
# end
if sale_data.rounding_adjustment != 0.0
move_down line_move
y_position = cursor y_position = cursor
bounding_box([0,y_position], :width =>self.item_description_width, :height => self.item_height) do bounding_box([0,y_position], :width =>self.item_description_width, :height => self.item_height) do
text "Rounding Adjustment", :size => self.item_font_size,:align => :left text "#{ st.tax_name } (#{incl_tax} #{ st.tax_rate.to_i }%)", :size => self.item_font_size,:align => :left
end end
bounding_box([self.item_description_width,y_position], :width =>self.label_width) do bounding_box([self.item_description_width,y_position], :width =>self.label_width) do
text "#{sale_data.rounding_adjustment}", :size => self.item_font_size,:align => :right text "#{number_format(st.tax_payable_amount, :precision => precision.to_i, :delimiter => delimiter)}" , :size => self.item_font_size,:align => :right
end end
end
end end
end
# move_down 5
# y_position = cursor
# bounding_box([0,y_position], :width =>self.item_description_width, :height => self.item_height) do
# text "Total Tax", :size => self.item_font_size,:align => :left
# end
# bounding_box([self.item_description_width,y_position], :width =>self.label_width) do
# text "( " +"#{sale_data.total_tax}" +" )" , :size => self.item_font_size,:align => :right
# end
if sale_data.rounding_adjustment != 0.0
move_down line_move move_down line_move
y_position = cursor y_position = cursor
move_down line_move
bounding_box([0,y_position], :width =>self.item_description_width) do bounding_box([0,y_position], :width =>self.item_description_width, :height => self.item_height) do
text "Grand Total",:style => :bold, :size => self.header_font_size,:align => :left text "Rounding Adjustment", :size => self.item_font_size,:align => :left
end end
bounding_box([self.item_description_width,y_position], :width =>self.label_width) do bounding_box([self.item_description_width,y_position], :width =>self.label_width) do
text "#{number_format(sale_data.grand_total, :precision => precision.to_i, :delimiter => delimiter)}" , :style => :bold, :size => self.header_font_size,:align => :right text "#{sale_data.rounding_adjustment}", :size => self.item_font_size,:align => :right
end end
move_down line_move end
sale_payment(sale_data,precision,delimiter,printed_status) move_down line_move
y_position = cursor
move_down line_move
bounding_box([0,y_position], :width =>self.item_description_width) do
text "Grand Total",:style => :bold, :size => self.header_font_size,:align => :left
end
bounding_box([self.item_description_width,y_position], :width =>self.label_width) do
text "#{number_format(sale_data.grand_total, :precision => precision.to_i, :delimiter => delimiter)}" , :style => :bold, :size => self.header_font_size,:align => :right
end
move_down line_move
sale_payment(sale_data,precision,delimiter,printed_status)
end end
def sale_payment(sale_data,precision,delimiter,printed_status) def sale_payment(sale_data,precision,delimiter,printed_status)
stroke_horizontal_rule stroke_horizontal_rule
#move_down line_move #move_down line_move
# sql = "SELECT SUM(payment_amount) # sql = "SELECT SUM(payment_amount)
# FROM sale_payments where payment_method='creditnote' # FROM sale_payments where payment_method='creditnote'
# and sale_id='#{sale_data.sale_id}'" # and sale_id='#{sale_data.sale_id}'"
if printed_status == 'credit_payment' if printed_status == 'credit_payment'
sale_payments = SalePayment.select(:payment_amount, :payment_method, :updated_at) sale_payments = SalePayment.select(:payment_amount, :payment_method, :updated_at)
.where("sale_id = '#{sale_data.sale_id}' AND payment_method != 'creditnote'") .where("sale_id = '#{sale_data.sale_id}' AND payment_method != 'creditnote'")
else else
sql = SalePayment.select("(SUM(payment_amount))").where("payment_method='creditnote' and sale_id='#{sale_data.sale_id}'").to_sql sql = SalePayment.select("(SUM(payment_amount))").where("payment_method='creditnote' and sale_id='#{sale_data.sale_id}'").to_sql
# sql1 = "SELECT CASE WHEN s.amount_changed > 0 and (s.amount_received - s.amount_changed) = s.grand_total THEN ( SELECT SUM(payment_amount) # sql1 = "SELECT CASE WHEN s.amount_changed > 0 and (s.amount_received - s.amount_changed) = s.grand_total THEN ( SELECT SUM(payment_amount)
# FROM sale_payments where payment_method='creditnote' # FROM sale_payments where payment_method='creditnote'
@@ -466,38 +464,38 @@ class ReceiptBillPdf < Prawn::Document
where sa.sale_id='#{sale_data.sale_id}')) = 0 where sa.sale_id='#{sale_data.sale_id}')) = 0
THEN payment_method!='creditnote' ELSE 1 END) AND sale_id = ?", sale_data.sale_id) THEN payment_method!='creditnote' ELSE 1 END) AND sale_id = ?", sale_data.sale_id)
.group("payment_method") .group("payment_method")
end end
sale_payments.each do |payment| sale_payments.each do |payment|
y_position = cursor y_position = cursor
if payment.payment_method == "paypar" if payment.payment_method == "paypar"
bounding_box([0,y_position], :width =>self.item_description_width, :height => self.item_height) do bounding_box([0,y_position], :width =>self.item_description_width, :height => self.item_height) do
text "Redeem Payment", :size => self.item_font_size,:align => :left text "Redeem Payment", :size => self.item_font_size,:align => :left
end end
elsif printed_status == 'credit_payment' elsif printed_status == 'credit_payment'
text "#{payment.payment_method.capitalize} Payment on #{payment.updated_at.strftime('%d-%m-%Y')}", :left_margin => -10, :size => self.item_font_size,:align => :left text "#{payment.payment_method.capitalize} Payment on #{payment.updated_at.strftime('%d-%m-%Y')}", :left_margin => -10, :size => self.item_font_size,:align => :left
else else
bounding_box([0,y_position], :width =>self.item_description_width, :height => self.item_height) do bounding_box([0,y_position], :width =>self.item_description_width, :height => self.item_height) do
text "#{payment.payment_method.capitalize} Payment", :size => self.item_font_size,:align => :left text "#{payment.payment_method.capitalize} Payment", :size => self.item_font_size,:align => :left
end end
end end
bounding_box([self.item_description_width,y_position], :width =>self.label_width) do bounding_box([self.item_description_width,y_position], :width =>self.label_width) do
text "#{number_format(payment.payment_amount, :precision => precision.to_i, :delimiter => delimiter)}" , :size => self.item_font_size,:align => :right text "#{number_format(payment.payment_amount, :precision => precision.to_i, :delimiter => delimiter)}" , :size => self.item_font_size,:align => :right
end
move_down line_move
end end
if sale_data.amount_received > 0 move_down line_move
y_position = cursor end
move_down line_move if sale_data.amount_received > 0
bounding_box([0,y_position], :width =>self.item_description_width, :height => self.item_height) do y_position = cursor
text "Change Amount", :size => self.item_font_size,:align => :left move_down line_move
end bounding_box([0,y_position], :width =>self.item_description_width, :height => self.item_height) do
bounding_box([self.item_description_width,y_position], :width =>self.label_width) do text "Change Amount", :size => self.item_font_size,:align => :left
text "#{number_format(sale_data.amount_changed, :precision => precision.to_i, :delimiter => delimiter)}" , :size => self.item_font_size,:align => :right
end
# move_down line_move
end end
bounding_box([self.item_description_width,y_position], :width =>self.label_width) do
text "#{number_format(sale_data.amount_changed, :precision => precision.to_i, :delimiter => delimiter)}" , :size => self.item_font_size,:align => :right
end
# move_down line_move
end
end end
# show member information # show member information

View File

@@ -1,4 +1,4 @@
class StockResultPdf < Prawn::Document class StockCheckPdf < Prawn::Document
attr_accessor :label_width, :price_column_width, :page_width, :page_height, :margin, :price_width, :item_width, :header_font_size, :item_font_size, :item_height, :qty_width, :total_width, :item_description_width, :text_width attr_accessor :label_width, :price_column_width, :page_width, :page_height, :margin, :price_width, :item_width, :header_font_size, :item_font_size, :item_height, :qty_width, :total_width, :item_description_width, :text_width
def initialize(printer_settings, stockcheck, stockcheck_items, checker_name, shop_details) def initialize(printer_settings, stockcheck, stockcheck_items, checker_name, shop_details)

View File

@@ -262,10 +262,7 @@
$("#paypar_account_no").on('focus', function(e){ $("#paypar_account_no").on('focus', function(e){
if($(this).val() == ''){ if($(this).val() == ''){
$("#sxModal").show(); $("#sxModal").show();
setTimeout(function(){ getCardNo();
getCardNo();
$("#sxModal").hide();
},100);
} }
}); });
@@ -289,6 +286,7 @@
$("#paypar_account_no").val(cardNo); $("#paypar_account_no").val(cardNo);
$("#search").val(cardNo); $("#search").val(cardNo);
$("#type").val("card"); $("#type").val("card");
$("#filter_form").submit();
}else{ }else{
if($.inArray(cardNo, paypar_account_no) !== -1){ if($.inArray(cardNo, paypar_account_no) !== -1){
swal({ swal({
@@ -309,6 +307,7 @@
} }
} }
} }
$("#sxModal").hide();
} }
$("#sxModal .btn_cancel").on('click',function(){ $("#sxModal .btn_cancel").on('click',function(){

View File

@@ -1,9 +1,9 @@
<!-- <div class="page-header"> <!-- <div class="page-header">
<ul class="breadcrumb"> <ul class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item active"><%= t :crm %></li> --> <li class="breadcrumb-item active"><%= t :crm %></li> -->
<!-- <li class="breadcrumb-item"><a href="<%= dashboard_path %>">Home</a></li> --> <!-- <li class="breadcrumb-item"><a href="<%= root_path %>">Home</a></li> -->
<!-- <span class="float-right"> <!-- <span class="float-right">
<%= link_to 'Back', dashboard_path %> <%= link_to 'Back', dashboard_path %>
</span> </span>
@@ -161,26 +161,13 @@
$(document).ready(function () { $(document).ready(function () {
$("#oqs_loading_wrapper").show(); $("#oqs_loading_wrapper").show();
localStorage.setItem("member_card",false); localStorage.setItem("member_card",false);
/*$('.datepicker').datepicker({
format : 'dd-mm-yyyy',
autoclose: true
});
$('.datepicker').attr('ReadOnly','true');
$('.datepicker').css('cursor','pointer');*/
// Read Card Reader // Read Card Reader
$("#member_acc_no").on('click', function(e){ $("#member_acc_no").on('click', function(e){
localStorage.setItem("member_card",true); localStorage.setItem("member_card",true);
var cardNo = "";
$("#sxModal").show(); $("#sxModal").show();
setTimeout(function(){ getCardNo();
getCardNo();
$("#sxModal").hide();
$("#filter_form").submit();
},100);
}); });
// QR Code Reader // QR Code Reader
$("#qr_code").on('click', function(e){ $("#qr_code").on('click', function(e){
var code = ""; var code = "";
@@ -240,88 +227,85 @@
/*customer UI tab btn*/ /*customer UI tab btn*/
$(document).on('click',".customer_tr",function(){ $(document).on('click',".customer_tr",function(){
// if(this.checked){ // if(this.checked){
$(this).closest('tr').find('.checkbox_check').prop( "checked", true ); $(this).closest('tr').find('.checkbox_check').prop( "checked", true );
//$( "#checkbox_check" ).prop( "checked", true ); //$( "#checkbox_check" ).prop( "checked", true );
var sale_id = $("#sale_id").val() || 0; var sale_id = $("#sale_id").val() || 0;
var customer_id = $(this).attr('data-ref'); var customer_id = $(this).attr('data-ref');
if(sale_id != 0){ if(sale_id != 0){
// var url = "/"+customer_id; // var url = "/"+customer_id;
update_sale(customer_id,sale_id); update_sale(customer_id,sale_id);
}else{ }else{
var url = "customers/" + customer_id + "/edit"; var url = "customers/" + customer_id + "/edit";
} }
$("#customer_tax_profiles").children().removeAttr("selected").css({'color':'#000','background':'none'}); $("#customer_tax_profiles").children().removeAttr("selected").css({'color':'#000','background':'none'});
$.ajax({ $.ajax({
type: "GET", type: "GET",
url: url, url: url,
data: {}, data: {},
dataType: "json", dataType: "json",
success: function(data) { success: function(data) {
// Selected for Taxes // Selected for Taxes
var taxes = JSON.stringify(data.tax_profiles); var taxes = JSON.stringify(data.tax_profiles);
var parse_taxes = JSON.parse(taxes); var parse_taxes = JSON.parse(taxes);
$.each(parse_taxes, function(i, value){ $.each(parse_taxes, function(i, value){
$("#customer_tax_profiles option[value='" + value + "']").attr("selected","selected").css({'color':'#fff','background':'#215d9c'}); $("#customer_tax_profiles option[value='" + value + "']").attr("selected","selected").css({'color':'#fff','background':'#215d9c'});
}); });
$('#customer_id').val(data.id); $('#customer_id').val(data.id);
$('#customer_name').val(data.name); $('#customer_name').val(data.name);
$('#customer_company').val(data.company); $('#customer_company').val(data.company);
$('#customer_contact_no').val(data.contact_no); $('#customer_contact_no').val(data.contact_no);
$('#customer_email').val(data.email); $('#customer_email').val(data.email);
$('#customer_salutation').val(data.salutation); $('#customer_salutation').val(data.salutation);
$('#customer_nrc_no').val(data.nrc_no); $('#customer_nrc_no').val(data.nrc_no);
$('#customer_card_no').val(data.card_no); $('#customer_card_no').val(data.card_no);
$('#customer_type').val(data.customer_type); $('#customer_type').val(data.customer_type);
$('#paypar_account_no').val(data.paypar_account_no); $('#paypar_account_no').val(data.paypar_account_no);
$('#customer_address').val(data.address); $('#customer_address').val(data.address);
$('#customer_date_of_birth').val(data.date_of_birth); $('#customer_date_of_birth').val(data.date_of_birth);
if(data.image_path.url!=undefined && data.image_path.url!=null){ if(data.image_path.url!=undefined && data.image_path.url!=null){
$('.menu-item-img .img-thumbnail').attr('src',data.image_path.url); $('.menu-item-img .img-thumbnail').attr('src',data.image_path.url);
} }
$('#customer_membership_type').val(data.membership_type); $('#customer_membership_type').val(data.membership_type);
$('.selectpicker > option[value="'+data.membership_type+'"]').attr('selected','selected'); $('.selectpicker > option[value="'+data.membership_type+'"]').attr('selected','selected');
if (data.gender == 'Male') { if (data.gender == 'Male') {
$('.male').prop( "checked", true ) $('.male').prop( "checked", true )
}else{ }else{
$('.female').prop( "checked", true ) $('.female').prop( "checked", true )
} }
if(data.salutation == 'Mr') { if(data.salutation == 'Mr') {
$('.mr').prop( "checked", true ) $('.mr').prop( "checked", true )
}else if(data.salutation == 'Miss') { }else if(data.salutation == 'Miss') {
$('.miss').prop( "checked", true ) $('.miss').prop( "checked", true )
}else if(data.salutation == 'Mrs'){ }else if(data.salutation == 'Mrs'){
$('.mrs').prop( "checked", true ) $('.mrs').prop( "checked", true )
}else{ }else{
$('.mdm').prop( "checked", true ) $('.mdm').prop( "checked", true )
} }
$('.membership_authentication_code').val(data.membership_authentication_code); $('.membership_authentication_code').val(data.membership_authentication_code);
$('#update_customer').removeAttr('disabled').val(''); $('#update_customer').removeAttr('disabled').val('');
$('#update_customer').attr('value', 'Update'); $('#update_customer').attr('value', 'Update');
$('#submit_customer').attr('disabled','disabled'); $('#submit_customer').attr('disabled','disabled');
$("#new_customer").attr('class', 'simple_form edit_customer'); $("#new_customer").attr('class', 'simple_form edit_customer');
var id = "edit_customer_"+customer_id; var id = "edit_customer_"+customer_id;
$("#new_customer").attr('id', id); $("#new_customer").attr('id', id);
$(".edit_customer").attr('id', id); $(".edit_customer").attr('id', id);
$(".edit_customer").attr('action', '/crm/customers/' + $('#customer_id').val()); $(".edit_customer").attr('action', '/crm/customers/' + $('#customer_id').val());
$(".edit_customer").attr('action', '/crm/customers/' + $('#customer_id').val()); $(".edit_customer").attr('action', '/crm/customers/' + $('#customer_id').val());
$(".patch_method").html('<input type="hidden" name="_method" value="patch">'); $(".patch_method").html('<input type="hidden" name="_method" value="patch">');
//$(".edit_customer").attr('method', 'PATCH'); //$(".edit_customer").attr('method', 'PATCH');
} }
}); });
// }else{
// }
}) })
function update_sale(customer_id,sale_id) { function update_sale(customer_id,sale_id) {

View File

@@ -1,9 +1,9 @@
<div class="container-fluid"> <div class="container-fluid">
<div class="page-header"> <div class="page-header">
<ul class="breadcrumb"> <ul class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>">Home</a></li> <li class="breadcrumb-item"><a href="<%= root_path %>">Home</a></li>
<li class="breadcrumb-item active">CRM</li> <li class="breadcrumb-item active">CRM</li>
<!-- <li class="breadcrumb-item"><a href="<%= dashboard_path %>">Home</a></li> --> <!-- <li class="breadcrumb-item"><a href="<%= root_path %>">Home</a></li> -->
<span class="float-right"> <span class="float-right">
<%= link_to 'Back', crm_customers_path %> <%= link_to 'Back', crm_customers_path %>
</span> </span>
@@ -240,4 +240,3 @@
</div> </div>
</div> </div>

View File

@@ -1,11 +1,11 @@
<div class="container-fluid"> <div class="container-fluid">
<div class="page-header"> <div class="page-header">
<ul class="breadcrumb"> <ul class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>">Home</a></li> <li class="breadcrumb-item"><a href="<%= root_path %>">Home</a></li>
<li class="breadcrumb-item"><a href="<%= crm_dining_queues_path %>">Queue</a></li> <li class="breadcrumb-item"><a href="<%= crm_dining_queues_path %>">Queue</a></li>
<li class="breadcrumb-item active">Assign Queue <%=@queue.queue_no%></li> <li class="breadcrumb-item active">Assign Queue <%=@queue.queue_no%></li>
<span class="float-right"> <span class="float-right">
<%= link_to 'Back', dashboard_path %> <%= link_to 'Back', root_path %>
</span> </span>
</ul> </ul>
</div> </div>

View File

@@ -1,10 +1,10 @@
<div class="container-fluid"> <div class="container-fluid">
<div class="page-header"> <div class="page-header">
<ul class="breadcrumb"> <ul class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item active"><%= t("en.queue") %></li> <li class="breadcrumb-item active"><%= t("en.queue") %></li>
<span class="float-right"> <span class="float-right">
<%= link_to 'Back', dashboard_path %> <%= link_to 'Back', root_path %>
</span> </span>
</ul> </ul>
</div> </div>

View File

@@ -1,7 +1,7 @@
<div class="container-fluid"> <div class="container-fluid">
<div class="page-header"> <div class="page-header">
<ul class="breadcrumb"> <ul class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item"><a href="<%= crm_dining_queues_path %>"><%= t("en.queue") %></a></li> <li class="breadcrumb-item"><a href="<%= crm_dining_queues_path %>"><%= t("en.queue") %></a></li>
<li class="breadcrumb-item active"><%= t("views.btn.new") %></li> <li class="breadcrumb-item active"><%= t("views.btn.new") %></li>
<span class="float-right"> <span class="float-right">

View File

@@ -1,6 +1,6 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item active"><%= t :inventory %></li> <li class="breadcrumb-item active"><%= t :inventory %></li>
<span class="float-right"> <span class="float-right">
<%= link_to t('.back', :default => t("views.btn.back")), dashboard_path %> <%= link_to t('.back', :default => t("views.btn.back")), dashboard_path %>

View File

@@ -1,6 +1,6 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item active"><%= t :inventory %></li> <li class="breadcrumb-item active"><%= t :inventory %></li>
<span class="float-right"> <span class="float-right">
<%= link_to t('.back', :default => t("views.btn.back")), inventory_path %> <%= link_to t('.back', :default => t("views.btn.back")), inventory_path %>

View File

@@ -1,6 +1,6 @@
<!-- <div class="page-header"> <!-- <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item"><a href="<%= inventory_path %>"><%= t :inventory %></a></li> <li class="breadcrumb-item"><a href="<%= inventory_path %>"><%= t :inventory %></a></li>
<li class="breadcrumb-item active"><%= t("views.btn.new") %></li> <li class="breadcrumb-item active"><%= t("views.btn.new") %></li>
<span class="float-right"> <span class="float-right">

View File

@@ -1,6 +1,6 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item active"><%= t("views.right_panel.detail.stock_check") %></li> <li class="breadcrumb-item active"><%= t("views.right_panel.detail.stock_check") %></li>
<span class="float-right"> <span class="float-right">
<%= link_to t('.back', :default => t("views.btn.back")), inventory_path %> <%= link_to t('.back', :default => t("views.btn.back")), inventory_path %>

View File

@@ -1,6 +1,6 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item"><a href="<%=inventory_stock_checks_path%>"></a><%= t("views.right_panel.detail.stock_check") %></li> <li class="breadcrumb-item"><a href="<%=inventory_stock_checks_path%>"></a><%= t("views.right_panel.detail.stock_check") %></li>
<li class="breadcrumb-item active"><%= t :details %></li> <li class="breadcrumb-item active"><%= t :details %></li>
<span class="float-right"> <span class="float-right">

View File

@@ -17,15 +17,9 @@
<!-- <a href="javascript:void(0);" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false"></a> --> <!-- <a href="javascript:void(0);" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false"></a> -->
<%if current_login_employee.role !="waiter" %> <%if current_login_employee.role !="waiter" %>
<a href="javascript:void(0);" class="bars"></a> <a href="javascript:void(0);" class="bars"></a>
<% if current_login_employee.role == "administrator" || current_login_employee.role == "manager" || current_login_employee.role == "account" %> <a class="navbar-brand mbl_view" href="<%= root_path %>" style="margin-left: 20px;">
<a class="navbar-brand mbl_view" href="<%=dashboard_path%>" style="margin-left: 20px;">
<% elsif current_login_employee.role == "supervisor" || current_login_employee.role == "cashier" || current_login_employee.role == "waiter" %>
<a class="navbar-brand mbl_view" href="<%=origami_dashboard_path%>" style="margin-left: 20px;">
<%else%>
<a class="navbar-brand mbl_view" href="" style="margin-left: 20px;">
<% end %>
<% else %> <% else %>
<a class="navbar-brand m-0 mbl_view" href="<%= origami_dashboard_path%>"> <a class="navbar-brand m-0 mbl_view" href="<%= root_path %>">
<%end%> <%end%>
<img src="<%= asset_path('SX-Logo-small.png') %>" width="40" height="40" alt="Logo" /> <img src="<%= asset_path('SX-Logo-small.png') %>" width="40" height="40" alt="Logo" />
<span class="navbar-brand-txt">SX Restaurant</span> <span class="navbar-brand-txt">SX Restaurant</span>

View File

@@ -1,7 +1,7 @@
<!-- <div class="page-header"> <!-- <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>">Home</a></li> <li class="breadcrumb-item"><a href="<%= root_path %>">Home</a></li>
<li class="breadcrumb-item active">OQS</li> <li class="breadcrumb-item active">OQS</li>
<span class="float-right"> <span class="float-right">
<%= link_to 'Back', oqs_root_path %> <%= link_to 'Back', oqs_root_path %>

View File

@@ -195,6 +195,8 @@
</div> </div>
<input type="hidden" id="server_mode" value="<%=ENV["SERVER_MODE"]%>"> <input type="hidden" id="server_mode" value="<%=ENV["SERVER_MODE"]%>">
<%= print_settings %>
<script type="text/javascript"> <script type="text/javascript">
$(document).on('turbolinks:load', function() { $(document).on('turbolinks:load', function() {
$('#back').on('click', function () { $('#back').on('click', function () {
@@ -202,8 +204,6 @@
}); });
}); });
document.getElementById("defaultOpen").click(); document.getElementById("defaultOpen").click();
</script> </script>
<style type="text/css"> <style type="text/css">

View File

@@ -1,15 +1,17 @@
<!-- <div class="container-fluid"> <!-- <div class="container-fluid">
<div class="page-header"> <div class="page-header">
<ul class="breadcrumb"> <ul class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>">Home</a></li> <li class="breadcrumb-item"><a href="<%= root_path %>">Home</a></li>
<li class="breadcrumb-item active">CRM</li> --> <li class="breadcrumb-item active">CRM</li> -->
<!-- <li class="breadcrumb-item"><a href="<%= dashboard_path %>">Home</a></li> --> <!-- <li class="breadcrumb-item"><a href="<%= root_path %>">Home</a></li> -->
<!-- <span class="float-right"> <!-- <span class="float-right">
<%= link_to 'Back', dashboard_path %> <%= link_to 'Back', dashboard_path %>
</span> </span>
</ul> </ul>
</div> --> </div> -->
<div id="loading_wrapper" style="display:none;">
<div id="loading"></div>
</div>
<div class="row"> <div class="row">
<div class="col-lg-12 col-md-12 col-sm-12"> <div class="col-lg-12 col-md-12 col-sm-12">
@@ -352,12 +354,12 @@
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div id="sxModal"> <div id="sxModal">
<div id="sxModal-Content"><h3>Card Tap</h3></div> <div id="sxModal-Content"><h3>Card Tap</h3></div>
<div class="m-r-20" align="right"> <div class="m-r-20" align="right">
<button type="button" class="btn btn-lg btn-link bg-red waves-effect btn_cancel">Cancel</button> <button type="button" class="btn btn-lg btn-link bg-red waves-effect btn_cancel">Cancel</button>
</div> </div>
</div> </div>
</div> </div>
@@ -366,6 +368,8 @@
var page = "<%= @page %>"; var page = "<%= @page %>";
var paypar_account_no = []; var paypar_account_no = [];
$(function() { $(function() {
setHeaderBreadCrumb(_CUSTOMERS_);
paypar_account_no = JSON.parse('<%= @paypar_accountno.to_json.html_safe %>', function (key, value) { paypar_account_no = JSON.parse('<%= @paypar_accountno.to_json.html_safe %>', function (key, value) {
var type; var type;
if (value && typeof value === 'object') { if (value && typeof value === 'object') {
@@ -376,7 +380,7 @@
} }
return value; return value;
}); });
console.log(paypar_account_no);
/* check webview loaded*/ /* check webview loaded*/
var webview = <%= @webview %>; var webview = <%= @webview %>;
showHideNavbar(webview); showHideNavbar(webview);
@@ -394,57 +398,15 @@
$("#paypar_account_no").on('focus', function(e){ $("#paypar_account_no").on('focus', function(e){
if($(this).val() == ''){ if($(this).val() == ''){
$("#sxModal").show(); $("#sxModal").show();
setTimeout(function(){ getCardNo();
getCardNo();
$("#sxModal").hide();
},100);
} }
}); });
$(document).ready(function () {
setHeaderBreadCrumb(_CUSTOMERS_);
});
// Read Card Reader // Read Card Reader
$("#member_acc_no").on('click', function(e){ $("#member_acc_no").on('click', function(e){
localStorage.setItem("member_card",true); localStorage.setItem("member_card",true);
var cardNo = "";
var customer_id = '';
var customer_name = '';
var sale_id = $("#sale_id").val() || 0;
var customer_mamber_card_no = 0;
$("#sxModal").show(); $("#sxModal").show();
setTimeout(function(){ getCardNo();
getCardNo();
$("#sxModal").hide();
customer_mamber_card_no = $("#search").val();
if(sale_id != 0 && customer_mamber_card_no != 0){
$.ajax({
type: "POST",
url: "/origami/"+sale_id+"/get_customer" ,
data: { filter : customer_mamber_card_no ,type :"card"},
dataType: "json",
success: function(data) {
if (data[0].customer_id == false) {
swal("Alert!", data[0].message, "error");
// $.alert({
// title: 'Alert!',
// content: data[0].message,
// type: 'red',
// typeAnimated: true,
// btnClass: 'btn-danger',
// });
}else{
customer_id = data[0].customer_id;
customer_name = data[0].name;
update_sale(customer_id, customer_name,sale_id);
}
}
});
}
},100);
}); });
/*new customer UI func:*/ /*new customer UI func:*/
@@ -453,7 +415,6 @@
//Wizard //Wizard
$('a[data-toggle="tab"]').on('show.bs.tab', function (e) { $('a[data-toggle="tab"]').on('show.bs.tab', function (e) {
var $target = $(e.target); var $target = $(e.target);
if ($target.parent().hasClass('disabled')) { if ($target.parent().hasClass('disabled')) {
@@ -467,6 +428,7 @@
nextTab($active); nextTab($active);
$('.wizard .nav-tabs li.active .connecting-line').css({"border-bottom-left-radius": 0, "border-top-left-radius": 0}); $('.wizard .nav-tabs li.active .connecting-line').css({"border-bottom-left-radius": 0, "border-top-left-radius": 0});
}); });
$(".prev-step").click(function (e) { $(".prev-step").click(function (e) {
var $active = $('.wizard .nav-tabs li a.active'); var $active = $('.wizard .nav-tabs li a.active');
@@ -478,17 +440,19 @@
/*customer UI tab btn*/ /*customer UI tab btn*/
function nextTab(elem) { function nextTab(elem) {
$(elem).parent().next().find('a[data-toggle="tab"]').click(); $(elem).parent().next().find('a[data-toggle="tab"]').click();
} }
function prevTab(elem) { function prevTab(elem) {
$(elem).parent().prev().find('a[data-toggle="tab"]').click(); $(elem).parent().prev().find('a[data-toggle="tab"]').click();
} }
/*customer UI tab btn*/ /*customer UI tab btn*/
// Read NFC card no from java // Read NFC card no from java
function getCardNo(){ function getCardNo(){
code2lab.readNFC(); if (typeof code2lab != 'undefined') {
code2lab.readNFC();
}
} }
// get CardNo from Java // get CardNo from Java
@@ -499,6 +463,7 @@
$("#paypar_account_no").val(cardNo); $("#paypar_account_no").val(cardNo);
$("#search").val(cardNo); $("#search").val(cardNo);
$("#type").val("card"); $("#type").val("card");
get_customer();
}else{ }else{
if($.inArray(cardNo, paypar_account_no) !== -1){ if($.inArray(cardNo, paypar_account_no) !== -1){
swal({ swal({
@@ -519,47 +484,76 @@
} }
} }
} }
$("#sxModal").hide();
}
function get_customer() {
var cardNo = "";
var customer_id = '';
var customer_name = '';
var sale_id = $("#sale_id").val() || 0;
var customer_mamber_card_no = $("#search").val();
if(sale_id != 0 && customer_mamber_card_no != 0){
$('#loading_wrapper').show();
$.ajax({
type: "POST",
url: "/origami/"+sale_id+"/get_customer" ,
data: { filter : customer_mamber_card_no ,type :"card"},
dataType: "json",
success: function(data) {
if (data[0].customer_id == false) {
swal("Alert!", data[0].message, "error");
}else{
customer_id = data[0].customer_id;
customer_name = data[0].name;
update_sale(customer_id, customer_name,sale_id);
}
$('#loading_wrapper').hide();
}
});
}
} }
// QR Code Reader // QR Code Reader
$("#qr_code").on('click', function(e){ $("#qr_code").on('click', function(e){
var code = ""; var code = "";
var customer_id = ''; var customer_id = '';
var customer_name = ''; var customer_name = '';
var sale_id = $("#sale_id").val() || 0; var sale_id = $("#sale_id").val() || 0;
var customer_mamber_card_no = 0; var customer_mamber_card_no = 0;
setTimeout(function(){ setTimeout(function(){
code=getQRCode(); code=getQRCode();
setQRCode(code); setQRCode(code);
}, 100); }, 100);
customer_mamber_card_no = $("#search").val(); customer_mamber_card_no = $("#search").val();
if(sale_id != 0 && customer_mamber_card_no != 0){ if(sale_id != 0 && customer_mamber_card_no != 0){
$.ajax({ $.ajax({
type: "POST", type: "POST",
url: "/origami/"+sale_id+"/get_customer" , url: "/origami/"+sale_id+"/get_customer" ,
data: { filter : customer_mamber_card_no ,type :"card"}, data: { filter : customer_mamber_card_no ,type :"card"},
dataType: "json", dataType: "json",
success: function(data) { success: function(data) {
if (data[0].customer_id == false) { if (data[0].customer_id == false) {
swal("Alert!", data[0].message, "error"); swal("Alert!", data[0].message, "error");
// $.alert({ // $.alert({
// title: 'Alert!', // title: 'Alert!',
// content: data[0].message, // content: data[0].message,
// type: 'red', // type: 'red',
// typeAnimated: true, // typeAnimated: true,
// btnClass: 'btn-danger', // btnClass: 'btn-danger',
// }); // });
}else{ }else{
customer_id = data[0].customer_id; customer_id = data[0].customer_id;
customer_name = data[0].name; customer_name = data[0].name;
update_sale(customer_id, customer_name,sale_id); update_sale(customer_id, customer_name,sale_id);
}
} }
}); }
} });
}
}); });
// Read qrcode from java // Read qrcode from java
@@ -574,81 +568,75 @@
} }
$(document).on('click',".customer_tr",function(){ $(document).on('click',".customer_tr",function(){
// if(this.checked){ $(this).closest('tr').find('.checkbox_check').prop( "checked", true );
$(this).closest('tr').find('.checkbox_check').prop( "checked", true ); var sale_id = $("#sale_id").val() || 0;
var sale_id = $("#sale_id").val() || 0; var customer_id = $(this).attr('data-ref');
var customer_id = $(this).attr('data-ref'); var customer_name = $(this).children("td:nth-child(3)").text();
var customer_name = $(this).children("td:nth-child(3)").text();
console.log(sale_id);
if(sale_id != 0){
// var url = "/"+customer_id;
update_sale(customer_id, customer_name,sale_id);
}else{
var url = "customers/"+customer_id; if(sale_id != 0){
} update_sale(customer_id, customer_name,sale_id);
}else{
var url = "customers/"+customer_id;
}
// Need To Clean? // Need To Clean?
$.ajax({ $.ajax({
type: "GET", type: "GET",
url: url, url: url,
data: {}, data: {},
dataType: "json", dataType: "json",
success: function(data) { success: function(data) {
var taxes = JSON.stringify(data.tax_profiles); var taxes = JSON.stringify(data.tax_profiles);
var parse_taxes = JSON.parse(taxes); var parse_taxes = JSON.parse(taxes);
$.each(parse_taxes, function(i, value){ $.each(parse_taxes, function(i, value){
$("#customer_tax_profiles option[value='" + value + "']").attr("selected","selected"); $("#customer_tax_profiles option[value='" + value + "']").attr("selected","selected");
}); });
$('#customer_id').val(data.id); $('#customer_id').val(data.id);
$('#customer_name').val(data.name); $('#customer_name').val(data.name);
$('#customer_company').val(data.company); $('#customer_company').val(data.company);
$('#customer_contact_no').val(data.contact_no); $('#customer_contact_no').val(data.contact_no);
$('#customer_email').val(data.email); $('#customer_email').val(data.email);
$('#customer_date_of_birth').val(data.date_of_birth); $('#customer_date_of_birth').val(data.date_of_birth);
$('#customer_membership_type').val(data.membership_type); $('#customer_membership_type').val(data.membership_type);
$('.select > option[value="'+data.membership_id+'"]').attr('selected','selected'); $('.select > option[value="'+data.membership_id+'"]').attr('selected','selected');
$('.membership_authentication_code').val(data.membership_authentication_code); $('.membership_authentication_code').val(data.membership_authentication_code);
$('#customer_card_no').val(data.card_no); $('#customer_card_no').val(data.card_no);
$('#customer_type').val(data.customer_type); $('#customer_type').val(data.customer_type);
$('#customer_salutation').val(data.salutation); $('#customer_salutation').val(data.salutation);
$('#customer_nrc_no').val(data.nrc_no); $('#customer_nrc_no').val(data.nrc_no);
$('#paypar_account_no').val(data.paypar_account_no); $('#paypar_account_no').val(data.paypar_account_no);
if (data.gender == 'Male') { if (data.gender == 'Male') {
$('.male').prop( "checked", true ) $('.male').prop( "checked", true )
}else{ }else{
$('.female').prop( "checked", true ) $('.female').prop( "checked", true )
} }
if (data.salutation == 'Mr') { if (data.salutation == 'Mr') {
$('.mr').prop( "checked", true ) $('.mr').prop( "checked", true )
} else if(data.salutation == 'Miss') { } else if(data.salutation == 'Miss') {
$('.miss').prop( "checked", true ) $('.miss').prop( "checked", true )
}else if(data.salutation == 'Mrs'){ }else if(data.salutation == 'Mrs'){
$('.mrs').prop( "checked", true ) $('.mrs').prop( "checked", true )
}else{ }else{
$('.mdm').prop( "checked", true ) $('.mdm').prop( "checked", true )
} }
$('#update_customer').removeAttr('disabled').val(''); $('#update_customer').removeAttr('disabled').val('');
$('#update_customer').attr('value', 'Update'); $('#update_customer').attr('value', 'Update');
// $('#submit_customer').attr('disabled','disabled'); // $('#submit_customer').attr('disabled','disabled');
$("#new_customer").attr('class', 'simple_form edit_customer'); $("#new_customer").attr('class', 'simple_form edit_customer');
var id = "edit_customer_"+$('#customer_id').val(); var id = "edit_customer_"+$('#customer_id').val();
$("#new_customer").attr('id', id); $("#new_customer").attr('id', id);
$(".edit_customer").attr('action', '/crm/customers/' + $('#customer_id').val()); $(".edit_customer").attr('action', '/crm/customers/' + $('#customer_id').val());
$(".edit_customer").attr('action', '/crm/customers/' + $('#customer_id').val()); $(".edit_customer").attr('action', '/crm/customers/' + $('#customer_id').val());
$(".patch_method").append('<input type="hidden" name="_method" value="patch">'); $(".patch_method").append('<input type="hidden" name="_method" value="patch">');
//$(".edit_customer").attr('method', 'PATCH'); //$(".edit_customer").attr('method', 'PATCH');
} }
}); });
// }else{ })
// }
})
function update_sale(customer_id, customer_name, sale_id) { function update_sale(customer_id, customer_name, sale_id) {
var customer=""; var customer="";
@@ -658,13 +646,14 @@
swal({ swal({
title: "Confirmation !", title: "Confirmation !",
text: 'Are You Sure to assign this customer' + customer + '!', text: 'Are you sure to assign this customer' + customer + '!',
showCancelButton: true, showCancelButton: true,
confirmButtonColor: "green", confirmButtonColor: "green",
confirmButtonText: "Yes!", confirmButtonText: "Yes!",
cancelButtonClass: 'btn btn-danger', cancelButtonClass: 'btn btn-danger',
closeOnConfirm: false, closeOnConfirm: true,
}, function () { }, function () {
$( "#loading_wrapper").show();
$.ajax({ $.ajax({
type: "POST", type: "POST",
url: "/origami/"+sale_id+"/"+cashier_type+"/customers/update_sale" , url: "/origami/"+sale_id+"/"+cashier_type+"/customers/update_sale" ,

View File

@@ -106,19 +106,14 @@
<div class="col-lg-1 col-md-1 col-sm-1"> <div class="col-lg-1 col-md-1 col-sm-1">
<button type="button" class="btn bg-default m-t-10 btn-lg btn-block" onclick="window.location.href = '/origami/sale/<%= @sale_id %>/<%= @cashier_type %>/payment/others_payment';"> <i class="material-icons m-t--5">reply</i>Back </button> <button type="button" class="btn bg-default m-t-10 btn-lg btn-block" onclick="window.location.href = '/origami/sale/<%= @sale_id %>/<%= @cashier_type %>/payment/others_payment';"> <i class="material-icons m-t--5">reply</i>Back </button>
</div> </div>
<div id="sxModal">
<div id="sxModal-Content"><h3>Card Tap</h3></div>
<div class="m-r-20" align="right">
<button type="button" class="btn btn-lg btn-link bg-red waves-effect btn_cancel">Cancel</button>
</div>
</div>
</div> </div>
<div id="sxModal">
<div id="sxModal-Content"><h3>Card Tap</h3></div> <div id="sxModal">
<div class="m-r-20" align="right"> <div id="sxModal-Content"><h3>Card Tap</h3></div>
<button type="button" class="btn btn-lg btn-link bg-red waves-effect btn_cancel">Cancel</button> <div class="m-r-20" align="right">
</div> <button type="button" class="btn btn-lg btn-link bg-red waves-effect btn_cancel">Cancel</button>
</div> </div>
</div>
</div> </div>
<!-- customer light box --> <!-- customer light box -->
@@ -252,75 +247,9 @@
// Read Card Reader // Read Card Reader
$(".btn_member").on('click', function(){ $(".btn_member").on('click', function(){
var cardNo = "";
var customer_id = '';
var customer_name = '';
var membership_id = '';
var membership_type = '';
var sale_id = $("#sale_id").text() || 0;
var receipt_no = $("#receipt_no").text() || 0;
var customer_mamber_card_no = 0;
$("#is_paymemberModal").hide(); $("#is_paymemberModal").hide();
$("#sxModal").show(); $("#sxModal").show();
setTimeout(function(){ getCardNo();
getCardNo();
$("#sxModal").hide();
customer_mamber_card_no = $("#paypar_account_no").val();
if(sale_id != 0 && customer_mamber_card_no != 0){
$.ajax({
type: "POST",
url: "/origami/"+sale_id+"/send_account" ,
data: { account_no : customer_mamber_card_no, amount : payment_amount, receipt_no : receipt_no},
dataType: "json",
success: function(data) {
console.log(data)
if (data.status == true) {
var valid_amount = parseFloat(data.old_balance_amount) - parseFloat(data.reload_amount);
$("#valid_amount").val((valid_amount > 0) ? parseFloat(valid_amount) : 0);
$.ajax({
type: "POST",
url: "<%=origami_payment_dinga_path%>",
data: {payment_amount:payment_amount,membership_id:0,sale_id:sale_id,transaction_ref:data.transaction_ref,account_no :customer_mamber_card_no},
success: function(result){
console.log(result)
if(result.status == true){
swal({
title: "Information!",
text: result.message,
html: true,
closeOnConfirm: false,
closeOnCancel: false,
allowOutsideClick: false
}, function () {
window.location.href = '/origami/sale/'+ sale_id + "/"+cashier_type+"/payment";
});
}else{
swal ( "Opps",result.message ,"warning" );
}
}
});
}else{
swal({
title: 'Oops',
text: data.message.toString(),
type: 'error',
html: true,
closeOnConfirm: false,
closeOnCancel: false,
allowOutsideClick: false
}, function () {
window.location.href = '/origami/sale/'+ sale_id +"/"+cashier_type + "/payment/others_payment/DINGA";
});
}
}
});
}
},100);
}); });
// Read NFC card no from java // Read NFC card no from java
@@ -332,7 +261,71 @@
function setCardNo(cardNo){ function setCardNo(cardNo){
if(cardNo.length == 16){ if(cardNo.length == 16){
$("#paypar_account_no").val(cardNo); $("#paypar_account_no").val(cardNo);
send_account();
} }
$("#sxModal").hide();
}
function send_account() {
var cardNo = "";
var customer_id = '';
var customer_name = '';
var membership_id = '';
var membership_type = '';
var sale_id = $("#sale_id").text() || 0;
var receipt_no = $("#receipt_no").text() || 0;
var customer_mamber_card_no = $("#paypar_account_no").val();
if(sale_id != 0 && customer_mamber_card_no != 0){
$.ajax({
type: "POST",
url: "/origami/"+sale_id+"/send_account" ,
data: { account_no : customer_mamber_card_no, amount : payment_amount, receipt_no : receipt_no},
dataType: "json",
success: function(data) {
console.log(data)
if (data.status == true) {
var valid_amount = parseFloat(data.old_balance_amount) - parseFloat(data.reload_amount);
$("#valid_amount").val((valid_amount > 0) ? parseFloat(valid_amount) : 0);
$.ajax({
type: "POST",
url: "<%=origami_payment_dinga_path%>",
data: {payment_amount:payment_amount,membership_id:0,sale_id:sale_id,transaction_ref:data.transaction_ref,account_no :customer_mamber_card_no},
success: function(result){
console.log(result)
if(result.status == true){
swal({
title: "Information!",
text: result.message,
html: true,
closeOnConfirm: false,
closeOnCancel: false,
allowOutsideClick: false
}, function () {
window.location.href = '/origami/sale/'+ sale_id + "/"+cashier_type+"/payment";
});
}else{
swal ( "Opps",result.message ,"warning" );
}
}
});
}else{
swal({
title: 'Oops',
text: data.message.toString(),
type: 'error',
html: true,
closeOnConfirm: false,
closeOnCancel: false,
allowOutsideClick: false
}, function () {
window.location.href = '/origami/sale/'+ sale_id +"/"+cashier_type + "/payment/others_payment/DINGA";
});
}
}
});
}
} }
// QR Code Reader // QR Code Reader

View File

@@ -239,7 +239,7 @@
<div class="col-lg-8 col-md-8 col-sm-8"> <div class="col-lg-8 col-md-8 col-sm-8">
&nbsp; Receipt No: <span id="receipt_no"> &nbsp; Receipt No: <span id="receipt_no">
<% if @status_sale == 'sale' %> <% if @status_sale == 'sale' %>
<%= @sale_array[0].receipt_no rescue '' %> <%= @obj_sale.receipt_no rescue '' %>
<% end %> <% end %>
</span> </span>
<br> <br>
@@ -266,8 +266,8 @@
<div class="row p-l-5 p-r-5"> <div class="row p-l-5 p-r-5">
<div class="col-lg-6 col-md-6 col-sm-6"> <div class="col-lg-6 col-md-6 col-sm-6">
<% if @status_sale == 'sale' %> <% if @status_sale == 'sale' %>
<p class="hidden customer-id"><%= @sale_array[0].customer_id rescue '' %></p> <p class="hidden customer-id"><%= @obj_sale.customer_id rescue '' %></p>
&nbsp; Customer : <%= @sale_array[0].customer.name rescue '' %> &nbsp; Customer : <%= @obj_sale.customer.name rescue '' %>
<% elsif @status_order == 'order' <% elsif @status_order == 'order'
%> %>
<p class="hidden customer-id"><%= @customer.customer_id rescue "" %></p> <p class="hidden customer-id"><%= @customer.customer_id rescue "" %></p>
@@ -291,9 +291,9 @@
<% count = 0 <% count = 0
sub_total = 0 sub_total = 0
if @status_sale == "sale" if @status_sale == "sale"
@sale_array[0].sale_items.each do |sale_item| @obj_sale.sale_items.each do |sale_item|
sub_total = sub_total + sale_item.price%> sub_total = sub_total + sale_item.price%>
<input type="hidden" id="sale_id" value="<%= @sale_array[0].sale_id %>"> <input type="hidden" id="sale_id" value="<%= @obj_sale.sale_id %>">
<%count += 1 %> <%count += 1 %>
<tr> <tr>
<td><%= count %></td> <td><%= count %></td>
@@ -455,7 +455,7 @@
<% end %> <% end %>
<% @sale_array.each do |sale| <% @sale_array.each do |sale|
if @sale_array.size > 1 if @sale_array.size > 1
unless sale.receipt_no == @sale_array[0].receipt_no unless sale.receipt_no == @obj_sale.receipt_no
%> %>
<table class="table table-striped"> <table class="table table-striped">
<tr> <tr>
@@ -529,7 +529,7 @@
<button type="button" id="other-charges" class="btn btn-block bg-blue waves-effect">Charges</button> <button type="button" id="other-charges" class="btn btn-block bg-blue waves-effect">Charges</button>
<% if !@split_bill.nil? %> <% if !@split_bill.nil? %>
<% if @split_bill == '1' && (!(@order_items.nil?) || !(@order_items.empty?)) %> <% if @split_bill == '1' && (@orde_items.present?) %>
<button type="button" id="split_bills" class="btn btn-block bg-blue waves-effect">Split Bill</button> <button type="button" id="split_bills" class="btn btn-block bg-blue waves-effect">Split Bill</button>
<% end %> <% end %>
<% end %> <% end %>
@@ -597,6 +597,8 @@
</div> </div>
</div> </div>
<%= print_settings %>
<div class="modal fade" id="voidModal" tabindex="-1" role="dialog"> <div class="modal fade" id="voidModal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document"> <div class="modal-dialog" role="document">
<div class="modal-content"> <div class="modal-content">
@@ -972,13 +974,15 @@
if((receipt_no!=undefined) && (receipt_no!="")) if((receipt_no!=undefined) && (receipt_no!=""))
createReceiptNoInFirstBillData(receipt_no,""); createReceiptNoInFirstBillData(receipt_no,"");
// For Server Print - from jade if (!$('#print_settings').data('action-cable')) {
if ($("#server_mode").val() == "cloud") { // For Server Print - from jade
if(typeof code2lab != 'undefined'){ if ($("#server_mode").val() == "cloud") {
code2lab.printFile(result.filepath.substr(6), result.printer_url); if(typeof code2lab != 'undefined'){
code2lab.printFile(result.filepath.substr(6), result.printer_url);
}
} }
} }
location.reload(); location.reload();
} }
}); });
} }
@@ -1003,80 +1007,82 @@
$(".choose_payment").on('click', function () { $(".choose_payment").on('click', function () {
$( "#loading_wrapper").show(); $( "#loading_wrapper").show();
var sale_id = $('#sale_id').val(); var sale_id = $('#sale_id').val();
// type = $('.payment_method').val(); // type = $('.payment_method').val();
type = get_selected_attributes('selected-payment'); type = get_selected_attributes('selected-payment');
var tax_type = localStorage.getItem("tax_type") ? localStorage.getItem("tax_type") : 'all'; var tax_type = localStorage.getItem("tax_type") ? localStorage.getItem("tax_type") : 'all';
if(parseInt(jQuery.inArray("Credit", type)) == -1){ if(parseInt(jQuery.inArray("Credit", type)) == -1){
if (parseInt(jQuery.inArray("MPU", type)) != -1 || parseInt(jQuery.inArray("VISA", type)) != -1 || parseInt(jQuery.inArray("JCB", type)) != -1 || parseInt(jQuery.inArray("Master", type)) != -1 || parseInt(jQuery.inArray("UNIONPAY", type)) != -1 || parseInt(jQuery.inArray("Redeem", type)) != -1 || parseInt(jQuery.inArray("PAYMAL",type))!= -1) { if (parseInt(jQuery.inArray("MPU", type)) != -1 || parseInt(jQuery.inArray("VISA", type)) != -1 || parseInt(jQuery.inArray("JCB", type)) != -1 || parseInt(jQuery.inArray("Master", type)) != -1 || parseInt(jQuery.inArray("UNIONPAY", type)) != -1 || parseInt(jQuery.inArray("Redeem", type)) != -1 || parseInt(jQuery.inArray("PAYMAL",type))!= -1) {
if(!location.pathname.includes("credit_payment")){ if(!location.pathname.includes("credit_payment")){
calculate_member_discount(sale_id,"Card",tax_type); calculate_member_discount(sale_id,"Card",tax_type);
} }
}else{ }else{
if(!location.pathname.includes("credit_payment")){ if(!location.pathname.includes("credit_payment")){
calculate_member_discount(sale_id,"Cash",tax_type); calculate_member_discount(sale_id,"Cash",tax_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);
if (!$('#print_settings').data('action-cable')) {
// For Server Print - from jade
if ($("#server_mode").val() == "cloud") {
if(typeof code2lab != 'undefined'){
code2lab.printFile(result.filepath.substr(6), result.printer_url);
} }
} }
} }
var ajax_url = "/origami/sale/" + sale_id + "/first_bill"; location.reload();
$.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);
// For Server Print - from jade
if ($("#server_mode").val() == "cloud") {
if(typeof code2lab != 'undefined'){
code2lab.printFile(result.filepath.substr(6), result.printer_url);
}
}
location.reload();
}
});
}); });
function calculate_member_discount(sale_id,type,tax_type) { function calculate_member_discount(sale_id,type,tax_type) {
var sub_total = $('#sub-total').text(); var sub_total = $('#sub-total').text();
if (type == "Cash") { if (type == "Cash") {
is_card = false is_card = false
}else{ } else {
is_card = true is_card = true
} }
$.ajax({ $.ajax({
type: "POST", type: "POST",
url: "/origami/" + sale_id + "/member_discount", url: "/origami/" + sale_id + "/member_discount",
data: {'sale_id':sale_id, 'sub_total':sub_total,'is_card':is_card,'cashier_type':'cashier','tax_type':tax_type }, data: {'sale_id':sale_id, 'sub_total':sub_total,'is_card':is_card,'cashier_type':'cashier','tax_type':tax_type },
async: false, async: false,
success:function(result){ success:function(result){
} }
}); });
} }
$('#pay').on('click', function () { $('#pay').on('click', function () {
var sale_id = $('#sale_id').val(); var sale_id = $('#sale_id').val();
var data_order = $(this).data("order"); var data_order = $(this).data("order");
if (data_order) { if (data_order) {
swal({ swal({
title: "Alert! This Receipt has another item", title: "Alert! This Receipt has another item",
text: "Are you sure want to pay this receipt !", text: "Are you sure want to pay this receipt !",
type: "warning", type: "warning",
showCancelButton: true, showCancelButton: true,
confirmButtonColor: "#DD6B55", confirmButtonColor: "#DD6B55",
confirmButtonText: "Yes, Pay it !", confirmButtonText: "Yes, Pay it !",
closeOnConfirm: false closeOnConfirm: false
}, function (isConfirm) { }, function (isConfirm) {
if (isConfirm) { if (isConfirm) {
window.location.href = '/origami/sale/' + sale_id + "/cashier/payment"; window.location.href = '/origami/sale/' + sale_id + "/cashier/payment";
} }
}); });
}else{ } else {
window.location.href = '/origami/sale/' + sale_id + "/cashier/payment"; window.location.href = '/origami/sale/' + sale_id + "/cashier/payment";
} }
}); });
// $('#kbz_query').on('click', function(){ // $('#kbz_query').on('click', function(){
@@ -1105,33 +1111,33 @@
var current_checkin_induties_count =localStorage.getItem("current_checkin_induties_count"); var current_checkin_induties_count =localStorage.getItem("current_checkin_induties_count");
localStorage.removeItem("current_checkin_induties_count"); localStorage.removeItem("current_checkin_induties_count");
if(order_id!=undefined && order_id!=null && order_id!=""){ if(order_id!=undefined && order_id!=null && order_id!=""){
if($('#request_bills').is(":visible")) { if ($('#request_bills').is(":visible")) {
$('#request_bills').prop("disabled",true); $('#request_bills').prop("disabled",true);
} }
$.ajax({ $.ajax({
type: "GET", type: "GET",
url: ajax_url, url: ajax_url,
data: {current_checkin_induties_count: current_checkin_induties_count}, data: {current_checkin_induties_count: current_checkin_induties_count},
success: function (result) { success: function (result) {
if (!result.status) { if (!result.status) {
swal({ swal({
title: 'Oops', title: 'Oops',
text: result.error_message, text: result.error_message,
type: 'error', type: 'error',
html: true, html: true,
closeOnConfirm: false, closeOnConfirm: false,
closeOnCancel: false, closeOnCancel: false,
allowOutsideClick: false allowOutsideClick: false
}, function (isConfirm) { }, function (isConfirm) {
if(isConfirm){ if(isConfirm){
location.reload();
}
});
}
else {
location.reload(); location.reload();
} }
});
} }
else {
location.reload();
}
}
}); });
}else{ }else{
swal("Opps","There is no orders!","warning"); swal("Opps","There is no orders!","warning");
@@ -1167,24 +1173,24 @@
// var tax_type = localStorage.getItem("tax_type"); // var tax_type = localStorage.getItem("tax_type");
var tax_type = $("#check_tax").val(); var tax_type = $("#check_tax").val();
$.ajax({ $.ajax({
type: "POST", type: "POST",
url: ajax_url, url: ajax_url,
data: 'dining_id=' + dining_id + "&sale_id=" + sale_id + "&tax_type=" + tax_type, data: 'dining_id=' + dining_id + "&sale_id=" + sale_id + "&tax_type=" + tax_type,
success: function (result) { success: function (result) {
swal({ swal({
title: "Information!", title: "Information!",
text: "Invoice updated", text: "Invoice updated",
html: true, html: true,
closeOnConfirm: false, closeOnConfirm: false,
closeOnCancel: false, closeOnCancel: false,
allowOutsideClick: false allowOutsideClick: false
}, function () { }, function () {
$("#first_bill").removeAttr('disabled'); $("#first_bill").removeAttr('disabled');
$("#pay").removeAttr('disabled'); $("#pay").removeAttr('disabled');
window.location.reload(); window.location.reload();
}); });
$("#loading_wrapper").hide(); $("#loading_wrapper").hide();
} }
}); });
}) })
@@ -1259,7 +1265,7 @@
closeOnConfirm: false closeOnConfirm: false
}, function (isConfirm) { }, function (isConfirm) {
if (isConfirm) { if (isConfirm) {
$('.confirm').prop("disabled",true); $('.confirm').prop("disabled", true);
var sale_id = $("#sale_id").val();//"<%= @obj_sale.sale_id rescue "" %>" var sale_id = $("#sale_id").val();//"<%= @obj_sale.sale_id rescue "" %>"
var ajax_url = "/origami/sale/" + sale_id + '/cashier/void'; var ajax_url = "/origami/sale/" + sale_id + '/cashier/void';
var remark = $("#remark").val(); var remark = $("#remark").val();
@@ -1269,13 +1275,15 @@
url: ajax_url, url: ajax_url,
data: "remark="+ remark + "&sale_id=" + sale_id+ "&access_code=" + access_code, data: "remark="+ remark + "&sale_id=" + sale_id+ "&access_code=" + access_code,
success: function (result) { success: function (result) {
// For Server Print - from jade if (!$('#print_settings').data('action-cable')) {
if ($("#server_mode").val() == "cloud") { // For Server Print - from jade
if(typeof code2lab != 'undefined'){ if ($("#server_mode").val() == "cloud") {
code2lab.printFile(result.filepath.substr(6), result.printer_url); if(typeof code2lab != 'undefined'){
code2lab.printFile(result.filepath.substr(6), result.printer_url);
}
}
} }
} window.location.href = '/origami/';
window.location.href = '/origami/';
} }
}); });
} }
@@ -1378,13 +1386,15 @@
data: "remark="+ remark + "&sale_id=" + sale_id, data: "remark="+ remark + "&sale_id=" + sale_id,
success: function (result) { success: function (result) {
console.log(result) console.log(result)
// For Server Print - from jade if (!$('#print_settings').data('action-cable')) {
if ($("#server_mode").val() == "cloud") { // For Server Print - from jade
if(typeof code2lab != 'undefined'){ if ($("#server_mode").val() == "cloud") {
code2lab.printFile(result.filepath.substr(6), result.printer_url); if(typeof code2lab != 'undefined'){
code2lab.printFile(result.filepath.substr(6), result.printer_url);
}
}
} }
} window.location.href = '/origami/';
window.location.href = '/origami/';
} }
}); });
} }

View File

@@ -28,7 +28,7 @@
end end
%> %>
<!-- end count function --> <!-- end count function -->
<input type="hidden" id="server_mode" value="<%= ENV["SERVER_MODE"] %>">
<% if request.user_agent.include? "Mobile" %> <% if request.user_agent.include? "Mobile" %>
<div class="row m-t-10" style="margin-left: 0.2rem"> <div class="row m-t-10" style="margin-left: 0.2rem">
<% else %> <% else %>
@@ -565,6 +565,10 @@
<p id="order_id" class="hidden"></p> <p id="order_id" class="hidden"></p>
<p id="status" class="hidden"></p> <p id="status" class="hidden"></p>
<%= print_settings %>
<input type="hidden" id="server_mode" value="<%= ENV["SERVER_MODE"] %>">
<div class="modal fade" id="waiting_timeModal" tabindex="-1" role="dialog"> <div class="modal fade" id="waiting_timeModal" tabindex="-1" role="dialog">
<div class="modal-dialog modal-md" role="document"> <div class="modal-dialog modal-md" role="document">
<div class="modal-content"> <div class="modal-content">

View File

@@ -110,11 +110,11 @@
</div> </div>
<div id="sxModal"> <div id="sxModal">
<div id="sxModal-Content"><h3>Card Tap</h3></div> <div id="sxModal-Content"><h3>Card Tap</h3></div>
<div class="m-r-20" align="right"> <div class="m-r-20" align="right">
<button type="button" class="btn btn-lg btn-link bg-red waves-effect btn_cancel">Cancel</button> <button type="button" class="btn btn-lg btn-link bg-red waves-effect btn_cancel">Cancel</button>
</div> </div>
</div> </div>
</div> </div>
<!-- customer light box --> <!-- customer light box -->
@@ -248,75 +248,9 @@
// Read Card Reader // Read Card Reader
$(".btn_member").on('click', function(){ $(".btn_member").on('click', function(){
var cardNo = "";
var sale_id = $("#sale_id").text() || 0;
var receipt_no = $("#receipt_no").val() || "";
var customer_mamber_card_no = 0;
var payment_amount = parseFloat($("#used_amount").text());
$("#is_paymemberModal").hide(); $("#is_paymemberModal").hide();
$("#sxModal").show(); $("#sxModal").show();
setTimeout(function(){ getCardNo();
getCardNo();
$("#sxModal").hide();
customer_mamber_card_no = $("#paypar_account_no").val();
if (customer_mamber_card_no == 0) {
customer_mamber_card_no = $("#membership_id").text() || 0;
}
if(sale_id != 0 && customer_mamber_card_no !=0){
$.ajax({
type: "POST",
url: "/origami/"+sale_id+"/send_account" ,
data: { account_no : customer_mamber_card_no, amount : payment_amount, receipt_no : receipt_no},
dataType: "json",
success: function(data) {
if (data.status == true) {
var valid_amount = parseFloat(data.old_balance_amount) - parseFloat(data.reload_amount);
$("#valid_amount").val((valid_amount > 0) ? parseFloat(valid_amount) : 0);
$.ajax({
type: "POST",
url: "<%=origami_payment_paymal_path%>",
data: {payment_amount:payment_amount,membership_id:0,sale_id:sale_id,transaction_ref:data.transaction_ref,account_no:customer_mamber_card_no},
success: function(result){
if(result.status == true){
swal({
title: "Information!",
text: result.message,
html: true,
closeOnConfirm: false,
closeOnCancel: false,
allowOutsideClick: false
}, function () {
window.location.href = '/origami/sale/'+ sale_id + "/"+cashier_type+"/payment";
});
}else{
swal ( "Opps",result.message ,"warning" );
}
}
});
}else{
swal({
title: 'Oops',
text: data.message.toString(),
type: 'error',
html: true,
closeOnConfirm: false,
closeOnCancel: false,
allowOutsideClick: false
}, function () {
window.location.href = '/origami/sale/'+ sale_id +"/"+cashier_type + "/payment/others_payment/PAYMAL";
});
}
}
});
}else{
swal("Opp","Please Check Member","warning")
}
},100);
}); });
// Read NFC card no from java // Read NFC card no from java
@@ -329,6 +263,71 @@
if(cardNo.length == 16){ if(cardNo.length == 16){
$("#paypar_account_no").val(cardNo); $("#paypar_account_no").val(cardNo);
} }
$("#sxModal").hide();
}
function send_account() {
var cardNo = "";
var sale_id = $("#sale_id").text() || 0;
var receipt_no = $("#receipt_no").val() || "";
var payment_amount = parseFloat($("#used_amount").text());
var customer_mamber_card_no = $("#paypar_account_no").val();
if (customer_mamber_card_no == 0) {
customer_mamber_card_no = $("#membership_id").text() || 0;
}
if(sale_id != 0 && customer_mamber_card_no !=0){
$.ajax({
type: "POST",
url: "/origami/"+sale_id+"/send_account" ,
data: { account_no : customer_mamber_card_no, amount : payment_amount, receipt_no : receipt_no},
dataType: "json",
success: function(data) {
if (data.status == true) {
var valid_amount = parseFloat(data.old_balance_amount) - parseFloat(data.reload_amount);
$("#valid_amount").val((valid_amount > 0) ? parseFloat(valid_amount) : 0);
$.ajax({
type: "POST",
url: "<%=origami_payment_paymal_path%>",
data: {payment_amount:payment_amount,membership_id:0,sale_id:sale_id,transaction_ref:data.transaction_ref,account_no:customer_mamber_card_no},
success: function(result){
if(result.status == true){
swal({
title: "Information!",
text: result.message,
html: true,
closeOnConfirm: false,
closeOnCancel: false,
allowOutsideClick: false
}, function () {
window.location.href = '/origami/sale/'+ sale_id + "/"+cashier_type+"/payment";
});
}else{
swal ( "Opps",result.message ,"warning" );
}
}
});
}else{
swal({
title: 'Oops',
text: data.message.toString(),
type: 'error',
html: true,
closeOnConfirm: false,
closeOnCancel: false,
allowOutsideClick: false
}, function () {
window.location.href = '/origami/sale/'+ sale_id +"/"+cashier_type + "/payment/others_payment/PAYMAL";
});
}
}
});
}else{
swal("Opp","Please Check Member","warning")
}
} }
// QR Code Reader // QR Code Reader

View File

@@ -315,6 +315,9 @@
</div> </div>
<input type="hidden" id="server_mode" value="<%= ENV["SERVER_MODE"] %>"> <input type="hidden" id="server_mode" value="<%= ENV["SERVER_MODE"] %>">
</div> </div>
<%= print_settings %>
<div class="modal fade" id="voidModal" tabindex="-1" role="dialog"> <div class="modal fade" id="voidModal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document"> <div class="modal-dialog" role="document">
<div class="modal-content"> <div class="modal-content">
@@ -723,6 +726,7 @@ $(document).ready(function(){
data: "cash="+ cash + "&sale_id=" + sale_id + "&type=" + cashier_type + "&tax_type=" + tax_type + "&is_kbz=" + is_kbz, data: "cash="+ cash + "&sale_id=" + sale_id + "&type=" + cashier_type + "&tax_type=" + tax_type + "&is_kbz=" + is_kbz,
success:function(result){ success:function(result){
/* start delete receipt no in first bill*/ /* start delete receipt no in first bill*/
console.log(result);
if(($("#receipt_no").html()!=undefined) && ($("#receipt_no").html()!="")){ if(($("#receipt_no").html()!=undefined) && ($("#receipt_no").html()!="")){
var receipt_no = ($("#receipt_no").html()).trim(); var receipt_no = ($("#receipt_no").html()).trim();
deleteReceiptNoInFirstBillData(receipt_no); deleteReceiptNoInFirstBillData(receipt_no);
@@ -737,33 +741,29 @@ $(document).ready(function(){
var msg = ''; var msg = '';
} }
$("#loading_wrapper" ).hide(); $("#changed_amount").text("");
if(location.pathname.includes("credit_payment")){ 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(); payment_success_alert();
}else{ } else {
//PDF lightbox data //PDF lightbox data;
var pdfPath = "/en/pdfjs/minimal?file=" + result.filename.substring(6); var pdfPath = "/en/pdfjs/minimal?file=" + result.filename.substring(6)
$("#sale_receipt_no").val(result.receipt_no); $("#sale_receipt_no").val(result.receipt_no);
$("#filename").val(result.filename); $("#filename").val(result.filename);
$("#printer_name").val(result.printer_name); $("#printer_name").val(result.printer_name);
$("#receipt_pdf").attr("src", pdfPath); $("#receipt_pdf").attr("src", pdfPath);
$("#changed_amount").text(""); $("#pdfModal").modal({show : true, backdrop : false, keyboard : false});
if($('#balance').text() < 0){ $("#pdfModalLabel").text("Sale Completed");
<% 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();
}
} }
$("#loading_wrapper").hide();
} }
}); });
} }
@@ -1007,6 +1007,7 @@ $(document).ready(function(){
if($('#pay').is(":visible")) { if($('#pay').is(":visible")) {
$('#pay').prop("disabled",true); $('#pay').prop("disabled",true);
} }
$("#loading_wrapper" ).show();
var sale_id = $('#sale_id').text(); var sale_id = $('#sale_id').text();
var filename = $("#filename").val(); var filename = $("#filename").val();
@@ -1018,31 +1019,35 @@ $(document).ready(function(){
url: "/origami/sale/"+sale_id+"/"+cashier_type+"/payment/print", url: "/origami/sale/"+sale_id+"/"+cashier_type+"/payment/print",
data: params, data: params,
success:function(result){ success:function(result){
// For Server Print - from jade if (!$('#print_settings').data('action-cable')) {
// For Server Print - from jade
if ($("#server_mode").val() == "cloud") { if ($("#server_mode").val() == "cloud") {
if(typeof code2lab != 'undefined'){ if(typeof code2lab != 'undefined'){
code2lab.printFile(result.filepath.substr(6), result.printer_url); code2lab.printFile(result.filepath.substr(6), result.printer_url);
} }
} }
}
if (pdf_view ==1) { if (pdf_view ==1) {
var flag = localStorage.getItem("trans_flag"); var flag = localStorage.getItem("trans_flag");
localStorage.removeItem("trans_flag"); localStorage.removeItem("trans_flag");
if((flag!=null) && (flag != "true")){ if((flag!=null) && (flag != "true")){
window.location.href = "/transactions/sales/"+sale_id; window.location.href = "/transactions/sales/"+sale_id;
}else{
if (cashier_type=="cashier") {
window.location.href = '/origami';
}else{ }else{
if (cashier_type=="cashier") { window.location.href = '/origami/'+cashier_type;
window.location.href = '/origami'; if (cashier_type=="quick_service"){
}else{ customer_display_view(null,"reload");
window.location.href = '/origami/'+cashier_type;
if (cashier_type=="quick_service"){
customer_display_view(null,"reload");
}
} }
} }
}else{
payment_success_alert();
} }
}else{
payment_success_alert();
}
$("#loading_wrapper" ).hide();
} }
}); });
} }
@@ -1104,42 +1109,9 @@ $(document).ready(function(){
// Read Card Reader // Read Card Reader
$(".btn_member").on('click', function(){ $(".btn_member").on('click', function(){
var cardNo = "";
var customer_id = '';
var customer_name = '';
var membership_id = '';
var membership_type = '';
var sale_id = $("#sale_id").text() || 0;
var customer_mamber_card_no = 0;
$("#is_memberModal").hide(); $("#is_memberModal").hide();
$("#sxModal").show(); $("#sxModal").show();
setTimeout(function(){ getCardNo();
getCardNo();
$("#sxModal").hide();
customer_mamber_card_no = $("#paypar_account_no").val();
if(sale_id != 0 && customer_mamber_card_no != 0){
$.ajax({
type: "POST",
url: "/origami/"+sale_id+"/get_customer" ,
data: { filter : customer_mamber_card_no ,type :"card"},
dataType: "json",
success: function(data) {
if (data[0].customer_id == false) {
swal("Alert!", data[0].message, "error");
}else{
customer_id = data[0].customer_id;
customer_name = data[0].name;
membership_id = data[0].membership_id;
membership_type = data[0].membership_type;
update_sale(membership_id, customer_id, customer_name,sale_id);
}
}
});
}
},100);
}); });
// Read NFC card no from java // Read NFC card no from java
@@ -1153,6 +1125,132 @@ $(document).ready(function(){
function setCardNo(cardNo){ function setCardNo(cardNo){
if(cardNo.length == 16){ if(cardNo.length == 16){
$("#paypar_account_no").val(cardNo); $("#paypar_account_no").val(cardNo);
if (cashier_type == "food_court") {
send_account();
} else {
get_customer();
}
}
$("#sxModal").hide();
}
function get_customer() {
var cardNo = "";
var customer_id = '';
var customer_name = '';
var membership_id = '';
var membership_type = '';
var sale_id = $("#sale_id").text() || 0;
var customer_mamber_card_no = $("#paypar_account_no").val();
if(sale_id != 0 && customer_mamber_card_no != 0){
$('#loading_wrapper').show();
$.ajax({
type: "POST",
url: "/origami/"+sale_id+"/get_customer" ,
data: { filter : customer_mamber_card_no ,type :"card"},
dataType: "json",
success: function(data) {
if (data[0].customer_id == false) {
swal("Alert!", data[0].message, "error");
}else{
customer_id = data[0].customer_id;
customer_name = data[0].name;
membership_id = data[0].membership_id;
membership_type = data[0].membership_type;
update_sale(membership_id, customer_id, customer_name,sale_id);
}
$('#loading_wrapper').hide();
}
});
}
}
function send_account() {
var cardNo = "";
var sale_id = $("#sale_id").text() || 0;
var receipt_no = "";
if(($("#receipt_no").html()!=undefined) && ($("#receipt_no").html()!="")){
receipt_no = ($("#receipt_no").html()).trim();
}
var payment_amount = parseFloat($("#grand_total").text());
var customer_mamber_card_no = $("#paypar_account_no").val();
if (customer_mamber_card_no == 0) {
customer_mamber_card_no = $("#membership_id").text() || 0;
}
if(sale_id != 0 && customer_mamber_card_no !=0){
$.ajax({
type: "POST",
url: "/origami/"+sale_id+"/send_account" ,
data: { account_no : customer_mamber_card_no, amount : payment_amount, receipt_no : receipt_no},
dataType: "json",
success: function(data) {
if (data.status == true) {
var valid_amount = parseFloat(data.old_balance_amount) - parseFloat(data.reload_amount);
// $("#valid_amount").val((valid_amount > 0) ? parseFloat(valid_amount) : 0);
$.ajax({
type: "POST",
url: "<%=origami_payment_paymal_path%>",
data: {payment_amount:payment_amount,membership_id:0,sale_id:sale_id,transaction_ref:data.transaction_ref,account_no:customer_mamber_card_no},
success: function(result){
if(result.status == true){
swal({
title: "Information!",
text: result.message,
html: true,
closeOnConfirm: false,
closeOnCancel: false,
allowOutsideClick: false
}, function () {
window.location.href = '/origami/sale/'+ sale_id + "/"+cashier_type+"/payment";
});
}else{
swal({
title: 'Oops',
text: result.message,
type: 'warning',
html: true,
closeOnConfirm: false,
closeOnCancel: false,
allowOutsideClick: false
}, function () {
window.location.href = '/origami/sale/'+ sale_id +"/"+cashier_type + "/payment";
});
}
}
});
}else{
swal({
title: 'Oops',
text: data.message.toString(),
type: 'error',
html: true,
closeOnConfirm: false,
closeOnCancel: false,
allowOutsideClick: false
}, function () {
window.location.href = '/origami/sale/'+ sale_id +"/"+cashier_type + "/payment";
});
}
}
});
}else{
swal({
title: 'Oops',
text: 'Please Check Member',
type: 'warning',
html: true,
closeOnConfirm: false,
closeOnCancel: false,
allowOutsideClick: false
}, function () {
window.location.href = '/origami/sale/'+ sale_id +"/"+cashier_type + "/payment";
});
} }
} }
@@ -1211,6 +1309,7 @@ $(document).ready(function(){
cancelButtonClass: 'btn btn-danger', cancelButtonClass: 'btn btn-danger',
closeOnConfirm: false, closeOnConfirm: false,
}, function () { }, function () {
$('#loading_wrapper').show();
$.ajax({ $.ajax({
type: "POST", type: "POST",
url: "/origami/"+sale_id+"/"+cashier_type+"/customers/update_sale" , url: "/origami/"+sale_id+"/"+cashier_type+"/customers/update_sale" ,
@@ -1322,11 +1421,13 @@ $(document).ready(function(){
swal({ swal({
title: "Information!", title: "Information!",
text: 'Thank You !', text: 'Thank You !',
}, function () { }, function () {
// For Server Print - from jade if (!$('#print_settings').data('action-cable')) {
if ($("#server_mode").val() == "cloud") { // For Server Print - from jade
if(typeof code2lab != 'undefined'){ if ($("#server_mode").val() == "cloud") {
code2lab.printFile(result.filepath.substr(6), result.printer_url); if(typeof code2lab != 'undefined'){
code2lab.printFile(result.filepath.substr(6), result.printer_url);
}
} }
} }
var flag = localStorage.getItem("trans_flag"); var flag = localStorage.getItem("trans_flag");
@@ -1339,7 +1440,7 @@ $(document).ready(function(){
window.location.href = '/origami/'+cashier_type; window.location.href = '/origami/'+cashier_type;
} }
} }
}); });
} }
} }
}); });
@@ -1369,24 +1470,26 @@ $(document).ready(function(){
data: "remark="+ remark + "&sale_id=" + sale_id+ "&access_code=" + access_code, data: "remark="+ remark + "&sale_id=" + sale_id+ "&access_code=" + access_code,
success: function (result) {result success: function (result) {result
customer_display_view(null,"reload"); customer_display_view(null,"reload");
// For Server Print - from jade if (!$('#print_settings').data('action-cable')) {
if ($("#server_mode").val() == "cloud") { // For Server Print - from jade
if(typeof code2lab != 'undefined'){ if ($("#server_mode").val() == "cloud") {
code2lab.printFile(result.filepath.substr(6), result.printer_url); if(typeof code2lab != 'undefined'){
} code2lab.printFile(result.filepath.substr(6), result.printer_url);
} }
var flag = localStorage.getItem("trans_flag"); }
if((flag!=null) && (flag != "true")){ }
window.location.href = '/transactions/sales/'+sale_id; var flag = localStorage.getItem("trans_flag");
}else{ if((flag!=null) && (flag != "true")){
if (cashier_type=="cashier") { window.location.href = '/transactions/sales/'+sale_id;
window.location.href = '/origami'; }else{
}else{ if (cashier_type=="cashier") {
window.location.href = '/origami/'+cashier_type; window.location.href = '/origami';
} }else{
} window.location.href = '/origami/'+cashier_type;
} }
}) }
}
})
} }
}); });
}); });
@@ -1412,10 +1515,12 @@ $(document).ready(function(){
data: "remark="+ remark + "&sale_id=" + sale_id+ "&access_code=" + access_code, data: "remark="+ remark + "&sale_id=" + sale_id+ "&access_code=" + access_code,
success: function (result) { success: function (result) {
// console.log(result) // console.log(result)
// For Server Print - from jade if (!$('#print_settings').data('action-cable')) {
if ($("#server_mode").val() == "cloud") { // For Server Print - from jade
if(typeof code2lab != 'undefined'){ if ($("#server_mode").val() == "cloud") {
code2lab.printFile(result.filepath.substr(6), result.printer_url); if(typeof code2lab != 'undefined'){
code2lab.printFile(result.filepath.substr(6), result.printer_url);
}
} }
} }
var flag = localStorage.getItem("trans_flag"); var flag = localStorage.getItem("trans_flag");
@@ -1500,104 +1605,15 @@ $(document).ready(function(){
$("#customer_name").on("click",function(){ $("#customer_name").on("click",function(){
//start customer modal popup //start customer modal popup
if((cashier_type=='quick_service' || cashier_type=='food_court') && (customer_id!=undefined) && (customer_id!=null) && (customer_id!="")){ if((cashier_type=='quick_service' || cashier_type=='food_court') && (customer_id!=undefined) && (customer_id!=null) && (customer_id!="")){
$("#is_memberModal").modal({show : true, backdrop: false, keyboard : false}); $("#is_memberModal").modal({show : true, backdrop: false, keyboard : false});
} }
}); });
// Read Card Reader - Paymal payment for FoodCourt // Read Card Reader - Paymal payment for FoodCourt
$(".btn_paymal_member").on('click', function (){ $(".btn_paymal_member").on('click', function (){
var cardNo = "";
var sale_id = $("#sale_id").text() || 0;
var receipt_no = "";
if(($("#receipt_no").html()!=undefined) && ($("#receipt_no").html()!="")){
receipt_no = ($("#receipt_no").html()).trim();
}
var customer_mamber_card_no = 0;
var payment_amount = parseFloat($("#grand_total").text());
$("#is_paymemberModal").hide(); $("#is_paymemberModal").hide();
$("#sxModal").show(); $("#sxModal").show();
setTimeout(function(){ getCardNo();
getCardNo();
$("#sxModal").hide();
customer_mamber_card_no = $("#paypar_account_no").val();
if (customer_mamber_card_no == 0) {
customer_mamber_card_no = $("#membership_id").text() || 0;
}
if(sale_id != 0 && customer_mamber_card_no !=0){
$.ajax({
type: "POST",
url: "/origami/"+sale_id+"/send_account" ,
data: { account_no : customer_mamber_card_no, amount : payment_amount, receipt_no : receipt_no},
dataType: "json",
success: function(data) {
if (data.status == true) {
var valid_amount = parseFloat(data.old_balance_amount) - parseFloat(data.reload_amount);
// $("#valid_amount").val((valid_amount > 0) ? parseFloat(valid_amount) : 0);
$.ajax({
type: "POST",
url: "<%=origami_payment_paymal_path%>",
data: {payment_amount:payment_amount,membership_id:0,sale_id:sale_id,transaction_ref:data.transaction_ref,account_no:customer_mamber_card_no},
success: function(result){
if(result.status == true){
swal({
title: "Information!",
text: result.message,
html: true,
closeOnConfirm: false,
closeOnCancel: false,
allowOutsideClick: false
}, function () {
window.location.href = '/origami/sale/'+ sale_id + "/"+cashier_type+"/payment";
});
}else{
swal({
title: 'Oops',
text: result.message,
type: 'warning',
html: true,
closeOnConfirm: false,
closeOnCancel: false,
allowOutsideClick: false
}, function () {
window.location.href = '/origami/sale/'+ sale_id +"/"+cashier_type + "/payment";
});
}
}
});
}else{
swal({
title: 'Oops',
text: data.message.toString(),
type: 'error',
html: true,
closeOnConfirm: false,
closeOnCancel: false,
allowOutsideClick: false
}, function () {
window.location.href = '/origami/sale/'+ sale_id +"/"+cashier_type + "/payment";
});
}
}
});
}else{
swal({
title: 'Oops',
text: 'Please Check Member',
type: 'warning',
html: true,
closeOnConfirm: false,
closeOnCancel: false,
allowOutsideClick: false
}, function () {
window.location.href = '/origami/sale/'+ sale_id +"/"+cashier_type + "/payment";
});
}
},100);
}); });
// QR Code Reader // QR Code Reader

View File

@@ -234,6 +234,8 @@
</div> </div>
</div> </div>
<%= print_settings %>
<div class="modal fade" id="voidModal" tabindex="-1" role="dialog"> <div class="modal fade" id="voidModal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document"> <div class="modal-dialog" role="document">
<div class="modal-content"> <div class="modal-content">
@@ -326,9 +328,11 @@ $(document).ready(function(){
type: "GET", type: "GET",
url: ajax_url, url: ajax_url,
success: function (result) { success: function (result) {
if ($("#server_mode").val() == "cloud") { if (!$('#print_settings').data('action-cable')) {
if(typeof code2lab != 'undefined'){ if ($("#server_mode").val() == "cloud") {
code2lab.printFile(result.filepath.substr(6), result.printer_url); if(typeof code2lab != 'undefined'){
code2lab.printFile(result.filepath.substr(6), result.printer_url);
}
} }
} }
location.reload(); location.reload();
@@ -396,9 +400,11 @@ $(document).ready(function(){
url: ajax_url, url: ajax_url,
data: "remark="+ remark + "&sale_id=" + sale_id+ "&access_code=" + access_code, data: "remark="+ remark + "&sale_id=" + sale_id+ "&access_code=" + access_code,
success: function (result) { success: function (result) {
// For Server Print - from jade if (!$('#print_settings').data('action-cable')) {
if ($("#server_mode").val() == "cloud") { // For Server Print - from jade
code2lab.printFile(result.filepath.substr(6), result.printer_url); if ($("#server_mode").val() == "cloud") {
code2lab.printFile(result.filepath.substr(6), result.printer_url);
}
} }
window.location.href = '/origami/'+cashier_type; window.location.href = '/origami/'+cashier_type;
} }
@@ -437,9 +443,11 @@ function check_emp_access_code(access_code,type) {
type: "GET", type: "GET",
url: ajax_url, url: ajax_url,
success: function (result) { success: function (result) {
if ($("#server_mode").val() == "cloud") { if (!$('#print_settings').data('action-cable')) {
if(typeof code2lab != 'undefined'){ if ($("#server_mode").val() == "cloud") {
code2lab.printFile(result.filepath.substr(6), result.printer_url); if(typeof code2lab != 'undefined'){
code2lab.printFile(result.filepath.substr(6), result.printer_url);
}
} }
} }
location.reload(); location.reload();

View File

@@ -624,6 +624,8 @@
</div> </div>
</div> </div>
<%= print_settings %>
<div class="modal fade" id="voidModal" tabindex="-1" role="dialog"> <div class="modal fade" id="voidModal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document"> <div class="modal-dialog" role="document">
<div class="modal-content"> <div class="modal-content">
@@ -1067,10 +1069,12 @@ $("#first_bill").on('click', function(){
receipt_no = ($("#receipt_no").html()).trim(); receipt_no = ($("#receipt_no").html()).trim();
if((receipt_no!=undefined) && (receipt_no!="")) if((receipt_no!=undefined) && (receipt_no!=""))
createReceiptNoInFirstBillData(receipt_no,""); createReceiptNoInFirstBillData(receipt_no,"");
// For Server Print - from jade if (!$('#print_settings').data('action-cable')) {
if ($("#server_mode").val() == "cloud") { // For Server Print - from jade
if(typeof code2lab != 'undefined'){ if ($("#server_mode").val() == "cloud") {
code2lab.printFile(result.filepath.substr(6), result.printer_url); if(typeof code2lab != 'undefined'){
code2lab.printFile(result.filepath.substr(6), result.printer_url);
}
} }
} }
location.reload(); location.reload();
@@ -1107,13 +1111,14 @@ $(".choose_payment").on('click', function () {
if((receipt_no!=undefined) && (receipt_no!="")) if((receipt_no!=undefined) && (receipt_no!=""))
createReceiptNoInFirstBillData(receipt_no,type); createReceiptNoInFirstBillData(receipt_no,type);
// For Server Print - from jade if (!$('#print_settings').data('action-cable')) {
if ($("#server_mode").val() == "cloud") { // For Server Print - from jade
if(typeof code2lab != 'undefined'){ if ($("#server_mode").val() == "cloud") {
code2lab.printFile(result.filepath.substr(6), result.printer_url); if(typeof code2lab != 'undefined'){
code2lab.printFile(result.filepath.substr(6), result.printer_url);
}
} }
} }
location.reload(); location.reload();
} }
}); });
@@ -1350,13 +1355,15 @@ $('#add_invoice').on('click',function(){
url: ajax_url, url: ajax_url,
data: "remark="+ remark + "&sale_id=" + sale_id+ "&access_code=" + access_code, data: "remark="+ remark + "&sale_id=" + sale_id+ "&access_code=" + access_code,
success: function (result) { success: function (result) {
// For Server Print - from jade if (!$('#print_settings').data('action-cable')) {
if ($("#server_mode").val() == "cloud") { // For Server Print - from jade
if(typeof code2lab != 'undefined'){ if ($("#server_mode").val() == "cloud") {
code2lab.printFile(result.filepath.substr(6), result.printer_url); if(typeof code2lab != 'undefined'){
code2lab.printFile(result.filepath.substr(6), result.printer_url);
}
}
} }
} window.location.href = '/origami/';
window.location.href = '/origami/';
} }
}); });
} }
@@ -1442,13 +1449,15 @@ $('#add_invoice').on('click',function(){
data: "remark="+ remark + "&sale_id=" + sale_id, data: "remark="+ remark + "&sale_id=" + sale_id,
success: function (result) { success: function (result) {
console.log(result) console.log(result)
// For Server Print - from jade if (!$('#print_settings').data('action-cable')) {
if ($("#server_mode").val() == "cloud") { // For Server Print - from jade
if(typeof code2lab != 'undefined'){ if ($("#server_mode").val() == "cloud") {
code2lab.printFile(result.filepath.substr(6), result.printer_url); if(typeof code2lab != 'undefined'){
code2lab.printFile(result.filepath.substr(6), result.printer_url);
}
}
} }
} window.location.href = '/origami/';
window.location.href = '/origami/';
} }
}); });
} }

View File

@@ -314,6 +314,8 @@
</div> </div>
</div> </div>
<%= print_settings %>
<div class="modal fade" id="voidModal" tabindex="-1" role="dialog"> <div class="modal fade" id="voidModal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document"> <div class="modal-dialog" role="document">
<div class="modal-content"> <div class="modal-content">
@@ -440,9 +442,11 @@ $('#reprint').on('click', function () {
type: "GET", type: "GET",
url: ajax_url, url: ajax_url,
success: function (result) { success: function (result) {
if ($("#server_mode").val() == "cloud") { if (!$('#print_settings').data('action-cable')) {
if(typeof code2lab != 'undefined'){ if ($("#server_mode").val() == "cloud") {
code2lab.printFile(result.filepath.substr(6), result.printer_url); if(typeof code2lab != 'undefined'){
code2lab.printFile(result.filepath.substr(6), result.printer_url);
}
} }
} }
location.reload(); location.reload();
@@ -474,35 +478,37 @@ $('#back').on('click',function(){
// }); // });
$(document).on('click', '.access_modal', function(event){ $(document).on('click', '.access_modal', function(event){
type = $(this).data("type"); type = $(this).data("type");
$(".ok").attr("data-action",type); $(".ok").attr("data-action",type);
$('#AccessCodeModal').modal('show'); $('#AccessCodeModal').modal('show');
}); });
$('#void').on('click', function () {
$('#void').on('click', function () {
var access_code = localStorage.getItem("access_code"); var access_code = localStorage.getItem("access_code");
swal({ swal({
title: "Alert", title: "Alert",
text: "Are you sure want to Void?", text: "Are you sure want to Void?",
type: "warning", type: "warning",
showCancelButton: true, showCancelButton: true,
confirmButtonColor: "#DD6B55", confirmButtonColor: "#DD6B55",
confirmButtonText: "Yes, void it!", confirmButtonText: "Yes, void it!",
closeOnConfirm: false closeOnConfirm: false
}, function (isConfirm) { }, function (isConfirm) {
if (isConfirm) { if (isConfirm) {
var sale_id = $('#sale_id').val(); $('.confirm').prop("disabled", true);
var ajax_url = "/origami/sale/" + sale_id +'/'+'cashier'+ '/void'; var sale_id = $('#sale_id').val();
$.ajax({ var ajax_url = "/origami/sale/" + sale_id +'/'+'cashier'+ '/void';
type: 'POST', $.ajax({
url: ajax_url, type: 'POST',
data: {'access_code':access_code}, url: ajax_url,
success: function () { data: {'access_code':access_code},
window.location.href = '/origami/sale/'+sale_id; success: function () {
} window.location.href = '/origami/sale/'+sale_id;
});
} }
}); });
}); }
});
});
function check_emp_access_code(access_code,type) { function check_emp_access_code(access_code,type) {
var url = "/origami/check_emp_access_code/" + access_code ; var url = "/origami/check_emp_access_code/" + access_code ;
@@ -542,10 +548,12 @@ $(document).on('click', '.access_modal', function(event){
type: "GET", type: "GET",
url: ajax_url, url: ajax_url,
success: function (result) { success: function (result) {
// For Server Print - from jade if (!$('#print_settings').data('action-cable')) {
if ($("#server_mode").val() == "cloud") { // For Server Print - from jade
if(typeof code2lab != 'undefined'){ if ($("#server_mode").val() == "cloud") {
code2lab.printFile(result.filepath.substr(6), result.printer_url); if(typeof code2lab != 'undefined'){
code2lab.printFile(result.filepath.substr(6), result.printer_url);
}
} }
} }
location.reload(); location.reload();

View File

@@ -1,6 +1,6 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item"><a href="<%= settings_accounts_path %>"><%= t("views.right_panel.detail.account") %></a></li> <li class="breadcrumb-item"><a href="<%= settings_accounts_path %>"><%= t("views.right_panel.detail.account") %></a></li>
<li class="breadcrumb-item active"><%= t("views.btn.edit") %></li> <li class="breadcrumb-item active"><%= t("views.btn.edit") %></li>
<span class="float-right"> <span class="float-right">

View File

@@ -1,7 +1,7 @@
<!-- --> <!-- -->
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item"><a href="<%= settings_accounts_path %>"><%= t("views.right_panel.detail.account") %></a></li> <li class="breadcrumb-item"><a href="<%= settings_accounts_path %>"><%= t("views.right_panel.detail.account") %></a></li>
<li class="breadcrumb-item active"><%= t :details %></li> <li class="breadcrumb-item active"><%= t :details %></li>
<span class="float-right"> <span class="float-right">

View File

@@ -164,6 +164,8 @@
</div> </div>
</div> </div>
<%= print_settings %>
<!-- membership paymentmodal --> <!-- membership paymentmodal -->
<input type="hidden" id="server_mode" value="<%= ENV["SERVER_MODE"] %>"> <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>
@@ -243,7 +245,6 @@
</div> </div>
</div> </div>
</div> </div>
<input type="hidden" id="server_mode" value="<%= ENV["SERVER_MODE"] %>">
<div class="modal fade" id="AccessCodeModal" tabindex="-1" role="dialog"> <div class="modal fade" id="AccessCodeModal" tabindex="-1" role="dialog">
<div class="modal-dialog modal-sm" role="document"> <div class="modal-dialog modal-sm" role="document">
@@ -303,31 +304,6 @@ $(document).ready(function(){
}) })
}); });
// $('#pay').on('click',function() {
// window.location.href = '/origami/sale/<%= @sale.id %>/payment';
// });
// Print for first bill
// $("#first_bill").on('click', function () {
// var sale_id = '<%= @sale.id %>';
// var ajax_url = "/origami/sale/" + sale_id + "/first_bill";
// $.ajax({
// type: "GET",
// url: ajax_url,
// success: function (result) {
// receipt_no = ($("#receipt_no").html()).trim();
// if((receipt_no!=undefined) && (receipt_no!=""))
// createReceiptNoInFirstBillData(receipt_no,"");
// // For Server Print - from jade
// if ($("#server_mode").val() == "cloud") {
// code2lab.printFile(result.filepath.substr(6), result.printer_url);
// }
// location.reload();
// }
// });
// });
// Print for first bill // Print for first bill
$("#first_bill").on('click', function () { $("#first_bill").on('click', function () {
swal({ swal({
@@ -353,11 +329,12 @@ $(document).ready(function(){
receipt_no = ($("#receipt_no").html()).trim(); receipt_no = ($("#receipt_no").html()).trim();
if((receipt_no!=undefined) && (receipt_no!="")) if((receipt_no!=undefined) && (receipt_no!=""))
createReceiptNoInFirstBillData(receipt_no,""); createReceiptNoInFirstBillData(receipt_no,"");
if (!$('#print_settings').data('action-cable')) {
// For Server Print - from jade // For Server Print - from jade
if ($("#server_mode").val() == "cloud") { if ($("#server_mode").val() == "cloud") {
if(typeof code2lab != 'undefined'){ if(typeof code2lab != 'undefined'){
code2lab.printFile(result.filepath.substr(6), result.printer_url); code2lab.printFile(result.filepath.substr(6), result.printer_url);
}
} }
} }
location.reload(); location.reload();
@@ -385,17 +362,20 @@ $(document).ready(function(){
type: "GET", type: "GET",
url: ajax_url, url: ajax_url,
success: function (result) { success: function (result) {
$( "#loading_wrapper" ).hide(); $( "#loading_wrapper" ).hide();
receipt_no = ($("#receipt_no").html()).trim(); receipt_no = ($("#receipt_no").html()).trim();
if((receipt_no!=undefined) && (receipt_no!="")) if((receipt_no!=undefined) && (receipt_no!=""))
createReceiptNoInFirstBillData(receipt_no,type); createReceiptNoInFirstBillData(receipt_no,type);
// For Server Print - from jade
if ($("#server_mode").val() == "cloud") { if (!$('#print_settings').data('action-cable')) {
if(typeof code2lab != 'undefined'){ // For Server Print - from jade
code2lab.printFile(result.filepath.substr(6), result.printer_url); if ($("#server_mode").val() == "cloud") {
} if(typeof code2lab != 'undefined'){
code2lab.printFile(result.filepath.substr(6), result.printer_url);
} }
location.reload(); }
}
location.reload();
} }
}); });
}); });
@@ -463,13 +443,15 @@ $('#void').on('click',function () {
url: ajax_url, url: ajax_url,
data: "remark="+ remark + "&sale_id=" + sale_id + "&access_code=" + access_code , data: "remark="+ remark + "&sale_id=" + sale_id + "&access_code=" + access_code ,
success: function (result) { success: function (result) {
if (!$('#print_settings').data('action-cable')) {
// For Server Print - from jade // For Server Print - from jade
if ($("#server_mode").val() == "cloud") { if ($("#server_mode").val() == "cloud") {
if(typeof code2lab != 'undefined'){ if(typeof code2lab != 'undefined'){
code2lab.printFile(result.filepath.substr(6), result.printer_url); code2lab.printFile(result.filepath.substr(6), result.printer_url);
} }
} }
window.location.href = '/origami'; }
window.location.href = '/origami';
} }
}); });
} }
@@ -499,17 +481,19 @@ $('#foc').click(function() {
success:function(result){ success:function(result){
if (cash >= 0) { if (cash >= 0) {
swal({ swal({
title: "Information!", title: "Information!",
text: 'Thank You !', text: 'Thank You !',
}, function () { }, function () {
// For Server Print - from jade if (!$('#print_settings').data('action-cable')) {
// For Server Print - from jade
if ($("#server_mode").val() == "cloud") { if ($("#server_mode").val() == "cloud") {
if(typeof code2lab != 'undefined'){ if(typeof code2lab != 'undefined'){
code2lab.printFile(result.filepath.substr(6), result.printer_url); code2lab.printFile(result.filepath.substr(6), result.printer_url);
} }
} }
window.location.href = '/origami'; }
}); window.location.href = '/origami';
});
} }
} }
}); });
@@ -531,31 +515,30 @@ $(document).on('click', '.access_modal', function(event){
url: url, url: url,
data: {}, data: {},
success: function (result) { success: function (result) {
console.log(result) if (result.status == true) {
if (result.status == true) {
createAccessCode(code); createAccessCode(code);
if (type == "edit") { if (type == "edit") {
}else if(type == "void"){ } else if(type == "void") {
$('#AccessCodeModal').modal('hide'); $('#AccessCodeModal').modal('hide');
$('#voidModal').modal('show'); $('#voidModal').modal('show');
// overall_void(); // overall_void();
}else if(type == "waste") { } else if(type == "waste") {
// $('#AccessCodeModal').modal('hide'); // $('#AccessCodeModal').modal('hide');
// $('#focModal').modal('show'); // $('#focModal').modal('show');
waste_and_spoilage("waste") waste_and_spoilage("waste")
}else if(type == "spoile") { } else if(type == "spoile") {
// $('#AccessCodeModal').modal('hide'); // $('#AccessCodeModal').modal('hide');
// $('#voidModal').modal('show'); // $('#voidModal').modal('show');
waste_and_spoilage("spoile") waste_and_spoilage("spoile")
}else if(type == "foc"){ } else if(type == "foc") {
$('#AccessCodeModal').modal('hide'); $('#AccessCodeModal').modal('hide');
$('#focModal').modal('show'); $('#focModal').modal('show');
// overall_foc(); // overall_foc();
} }
}else{ } else {
swal("Opps",result.message,"warning") swal("Opps",result.message,"warning")
} }
} }
}); });
} }

View File

@@ -5,7 +5,7 @@
<%= simple_form_for(@print_setting) do |f| %> <%= simple_form_for(@print_setting) do |f| %>
<%= f.error_notification %> <%= f.error_notification %>
<div class="form-inputs"> <div class="form-inputs p-l-10">
<%= f.input :name %> <%= f.input :name %>
<%= f.input :unique_code %> <%= f.input :unique_code %>
<%= f.input :template %> <%= f.input :template %>
@@ -13,11 +13,8 @@
<%= f.input :header_font_size %> <%= f.input :header_font_size %>
<%= f.input :item_font_size %> <%= f.input :item_font_size %>
<% if(@server_mode != 'cloud') %> <%= f.input :printer_name, :as => :select, :collection => Printer::PrinterWorker.printers, include_blank: "Please Select", class: "mdb-select md-form" %>
<%= f.input :printer_name, :as => :select, :collection => Printer::PrinterWorker.printers, include_blank: "Please Select" %>
<% else %>
<%= f.input :printer_name, :as => :select, :collection => [], include_blank: "Please Select" %>
<% end %>
<%= f.input :brand_name %> <%= f.input :brand_name %>
<%= f.input :printer_type %> <%= f.input :printer_type %>
<%= f.input :api_settings %> <%= f.input :api_settings %>
@@ -45,7 +42,7 @@
</div> </div>
<div class="form-actions"> <div class="form-actions p-l-10">
<%= f.submit "Submit",:class => 'btn btn-primary btn-lg waves-effect' %> <%= f.submit "Submit",:class => 'btn btn-primary btn-lg waves-effect' %>
</div> </div>
<% end %> <% end %>
@@ -87,7 +84,7 @@
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function(){ $(document).ready(function(){
var serverMode = "<%= @server_mode %>"; var serverMode = "<%= @server_mode %>";
if(serverMode == 'cloud'){ if(serverMode == 'cloud' && typeof code2lab != 'undefined'){
var printers = code2lab.getPrinters(); var printers = code2lab.getPrinters();
var printerInfo = JSON.parse([printers]); var printerInfo = JSON.parse([printers]);
var select = $("#print_setting_printer_name"); var select = $("#print_setting_printer_name");
@@ -100,6 +97,8 @@
}); });
} }
$('#print_setting_printer_name option:first').attr('disabled', true);
if ($('#sale_items').val() == '1') { if ($('#sale_items').val() == '1') {
$('#sale_items').prop('checked', true); $('#sale_items').prop('checked', true);
} }
@@ -121,6 +120,11 @@
$("#print_setting_api_settings").val($(this).val()); $("#print_setting_api_settings").val($(this).val());
} }
}); });
$("#print_setting_printer_name").select2({
theme: 'material',
tags: true
})
}); });
function isNumberKey(evt) { function isNumberKey(evt) {

View File

@@ -1,6 +1,6 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item"><a href="<%= print_settings_path %>"><%= t("views.right_panel.header.print_settings") %></a></li> <li class="breadcrumb-item"><a href="<%= print_settings_path %>"><%= t("views.right_panel.header.print_settings") %></a></li>
<li class="breadcrumb-item active"><%= t("views.btn.edit") %></li> <li class="breadcrumb-item active"><%= t("views.btn.edit") %></li>
<span class="float-right"> <span class="float-right">
@@ -10,5 +10,3 @@
</div> </div>
<%= render 'form', print_setting: @print_setting %> <%= render 'form', print_setting: @print_setting %>

View File

@@ -2,7 +2,7 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item active"><%= t("views.right_panel.header.print_settings") %></li> <li class="breadcrumb-item active"><%= t("views.right_panel.header.print_settings") %></li>
<span class="float-right"> <span class="float-right">
<%= link_to t('.back', :default => t("views.btn.back")), dashboard_path %> <%= link_to t('.back', :default => t("views.btn.back")), dashboard_path %>

View File

@@ -1,6 +1,6 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item"><a href="<%= print_settings_path %>"><%= t("views.right_panel.header.print_settings") %></a></li> <li class="breadcrumb-item"><a href="<%= print_settings_path %>"><%= t("views.right_panel.header.print_settings") %></a></li>
<li class="breadcrumb-item active"><%= t("views.btn.new") %></li> <li class="breadcrumb-item active"><%= t("views.btn.new") %></li>
<span class="float-right"> <span class="float-right">

View File

@@ -1,6 +1,6 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item"><a href="<%= print_settings_path %>"><%= t("views.right_panel.header.print_settings") %></a></li> <li class="breadcrumb-item"><a href="<%= print_settings_path %>"><%= t("views.right_panel.header.print_settings") %></a></li>
<li class="breadcrumb-item active"><%= t :details %></li> <li class="breadcrumb-item active"><%= t :details %></li>
<span class="float-right"> <span class="float-right">

View File

@@ -1,6 +1,6 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item active"><%= t("views.right_panel.detail.cb_payments") %></li> <li class="breadcrumb-item active"><%= t("views.right_panel.detail.cb_payments") %></li>
<span class="float-right"> <span class="float-right">
<%= link_to 'Back', dashboard_path %> <%= link_to 'Back', dashboard_path %>

View File

@@ -1,6 +1,6 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item active"><%= t("views.right_panel.detail.cb_payments") %></li> <li class="breadcrumb-item active"><%= t("views.right_panel.detail.cb_payments") %></li>
<span class="float-right"> <span class="float-right">
<%= link_to 'Back', dashboard_path %> <%= link_to 'Back', dashboard_path %>

View File

@@ -1,6 +1,6 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item active"><%= t("views.right_panel.detail.commission_report") %></li> <li class="breadcrumb-item active"><%= t("views.right_panel.detail.commission_report") %></li>
<span class="float-right"> <span class="float-right">
<%= link_to 'Back', dashboard_path %> <%= link_to 'Back', dashboard_path %>

View File

@@ -1,6 +1,6 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item active"><%= t("views.right_panel.detail.credit_payment_report") %></li> <li class="breadcrumb-item active"><%= t("views.right_panel.detail.credit_payment_report") %></li>
<span class="float-right"> <span class="float-right">
<%= link_to 'Back', dashboard_path %> <%= link_to 'Back', dashboard_path %>

View File

@@ -1,7 +1,7 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item active"><%= t("views.right_panel.detail.daily_sale_report") %></li> <li class="breadcrumb-item active"><%= t("views.right_panel.detail.daily_sale_report") %></li>
<span class="float-right"> <span class="float-right">
<%= link_to 'Back', dashboard_path %> <%= link_to 'Back', dashboard_path %>

View File

@@ -1,7 +1,7 @@
<div class="container-fluid"> <div class="container-fluid">
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item active"><%= t("views.right_panel.detail.waste_spoilage_report") %></li> <li class="breadcrumb-item active"><%= t("views.right_panel.detail.waste_spoilage_report") %></li>
<span class="float-right"> <span class="float-right">
<%= link_to 'Back', dashboard_path %> <%= link_to 'Back', dashboard_path %>

View File

@@ -1,7 +1,7 @@
<div class="container-fluid"> <div class="container-fluid">
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item active"><%= t("views.right_panel.detail.hourly_saleitem_report") %></li> <li class="breadcrumb-item active"><%= t("views.right_panel.detail.hourly_saleitem_report") %></li>
<span class="float-right"> <span class="float-right">
<%= link_to 'Back', dashboard_path %> <%= link_to 'Back', dashboard_path %>

View File

@@ -1,6 +1,6 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item active"><%= t("views.right_panel.detail.induty_report") %></li> <li class="breadcrumb-item active"><%= t("views.right_panel.detail.induty_report") %></li>
<span class="float-right"> <span class="float-right">
<%= link_to 'Back', dashboard_path %> <%= link_to 'Back', dashboard_path %>

View File

@@ -1,6 +1,6 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item active"><%= t("views.right_panel.detail.order_reservation_report") %></li> <li class="breadcrumb-item active"><%= t("views.right_panel.detail.order_reservation_report") %></li>
<span class="float-right"> <span class="float-right">
<%= link_to 'Back', dashboard_path %> <%= link_to 'Back', dashboard_path %>

View File

@@ -1,6 +1,6 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item active">Payment Method Report</li> <li class="breadcrumb-item active">Payment Method Report</li>
<span class="float-right"> <span class="float-right">
<%= link_to 'Back', dashboard_path %> <%= link_to 'Back', dashboard_path %>

View File

@@ -1,6 +1,6 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item active"><%= t("views.right_panel.detail.product_sale_report") %></li> <li class="breadcrumb-item active"><%= t("views.right_panel.detail.product_sale_report") %></li>
<span class="float-right"> <span class="float-right">
<%= link_to 'Back', dashboard_path %> <%= link_to 'Back', dashboard_path %>

View File

@@ -1,6 +1,6 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item active"><%= t("views.right_panel.detail.receipt_no_report") %></li> <li class="breadcrumb-item active"><%= t("views.right_panel.detail.receipt_no_report") %></li>
<span class="float-right"> <span class="float-right">
<%= link_to 'Back', dashboard_path %> <%= link_to 'Back', dashboard_path %>

View File

@@ -1,7 +1,7 @@
<div class="container-fluid"> <div class="container-fluid">
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item active"><%= t("views.right_panel.detail.receipt_no_report") %> Details</li> <li class="breadcrumb-item active"><%= t("views.right_panel.detail.receipt_no_report") %> Details</li>
<span class="float-right"> <span class="float-right">
<%= link_to 'Back', dashboard_path %> <%= link_to 'Back', dashboard_path %>

View File

@@ -1,6 +1,6 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item active"><%= t("views.right_panel.detail.sale_item_report") %></li> <li class="breadcrumb-item active"><%= t("views.right_panel.detail.sale_item_report") %></li>
<span class="float-right"> <span class="float-right">
<%= link_to 'Back', dashboard_path %> <%= link_to 'Back', dashboard_path %>

View File

@@ -1,6 +1,6 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item active"><%= t("views.right_panel.detail.shift_sale_report") %></li> <li class="breadcrumb-item active"><%= t("views.right_panel.detail.shift_sale_report") %></li>
<span class="float-right"> <span class="float-right">
<%= link_to 'Back', dashboard_path %> <%= link_to 'Back', dashboard_path %>

View File

@@ -1,6 +1,6 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item active"><%= t("views.right_panel.detail.staff_meal_report") %></li> <li class="breadcrumb-item active"><%= t("views.right_panel.detail.staff_meal_report") %></li>
<span class="float-right"> <span class="float-right">
<%= link_to 'Back', dashboard_path %> <%= link_to 'Back', dashboard_path %>

View File

@@ -1,6 +1,6 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>">Home</a></li> <li class="breadcrumb-item"><a href="<%= root_path %>">Home</a></li>
<li class="breadcrumb-item active">Stock Check Report</li> <li class="breadcrumb-item active">Stock Check Report</li>
<span class="float-right"> <span class="float-right">
<%= link_to 'Back', dashboard_path %> <%= link_to 'Back', dashboard_path %>

View File

@@ -1,6 +1,6 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item active"><%= t("views.right_panel.detail.void_sale_report") %></li> <li class="breadcrumb-item active"><%= t("views.right_panel.detail.void_sale_report") %></li>
<span class="float-right"> <span class="float-right">
<%= link_to 'Back', dashboard_path %> <%= link_to 'Back', dashboard_path %>

View File

@@ -1,7 +1,7 @@
<div class="container-fluid"> <div class="container-fluid">
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item active"><%= t("views.right_panel.detail.waste_spoilage_report") %></li> <li class="breadcrumb-item active"><%= t("views.right_panel.detail.waste_spoilage_report") %></li>
<span class="float-right"> <span class="float-right">
<%= link_to 'Back', dashboard_path %> <%= link_to 'Back', dashboard_path %>

View File

@@ -1,7 +1,7 @@
<div class="container-fluid"> <div class="container-fluid">
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item active"><%= t("views.right_panel.detail.waste_spoilage_report") %></li> <li class="breadcrumb-item active"><%= t("views.right_panel.detail.waste_spoilage_report") %></li>
<span class="float-right"> <span class="float-right">
<%= link_to 'Back', dashboard_path %> <%= link_to 'Back', dashboard_path %>

View File

@@ -1,6 +1,6 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item"><a href="<%= settings_accounts_path %>"><%= t("views.right_panel.detail.account") %></a></li> <li class="breadcrumb-item"><a href="<%= settings_accounts_path %>"><%= t("views.right_panel.detail.account") %></a></li>
<li class="breadcrumb-item active"><%= t("views.btn.edit") %></li> <li class="breadcrumb-item active"><%= t("views.btn.edit") %></li>
<span class="float-right"> <span class="float-right">

View File

@@ -1,9 +1,9 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item active"><%= t("views.right_panel.detail.account") %></li> <li class="breadcrumb-item active"><%= t("views.right_panel.detail.account") %></li>
<span class="float-right"> <span class="float-right">
<%= link_to t('.back', :default => t("views.btn.back")), dashboard_path %> <%= link_to t('.back', :default => t("views.btn.back")), root_path %>
</span> </span>
</ol> </ol>
</div> </div>
@@ -74,4 +74,3 @@
</div> </div>
</div> </div>
</div> </div>

View File

@@ -1,6 +1,6 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item"><a href="<%= settings_accounts_path %>"><%= t("views.right_panel.detail.account") %></a></li> <li class="breadcrumb-item"><a href="<%= settings_accounts_path %>"><%= t("views.right_panel.detail.account") %></a></li>
<li class="breadcrumb-item active"><%= t("views.btn.new") %></li> <li class="breadcrumb-item active"><%= t("views.btn.new") %></li>
<span class="float-right"> <span class="float-right">

View File

@@ -1,7 +1,7 @@
<!-- --> <!-- -->
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item"><a href="<%= settings_accounts_path %>"><%= t("views.right_panel.detail.account") %></a></li> <li class="breadcrumb-item"><a href="<%= settings_accounts_path %>"><%= t("views.right_panel.detail.account") %></a></li>
<li class="breadcrumb-item active"><%= t :details %></li> <li class="breadcrumb-item active"><%= t :details %></li>
<span class="float-right"> <span class="float-right">

View File

@@ -1,6 +1,6 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>">Home</a></li> <li class="breadcrumb-item"><a href="<%= root_path %>">Home</a></li>
<li class="breadcrumb-item"><a href="<%= settings_commissions_path %>">Commissions</a></li> <li class="breadcrumb-item"><a href="<%= settings_commissions_path %>">Commissions</a></li>
<li class="breadcrumb-item active"><%= @commission.name %></li> <li class="breadcrumb-item active"><%= @commission.name %></li>
<span class="float-right"> <span class="float-right">

View File

@@ -12,11 +12,9 @@
<%= f.input :auto_print_receipt %> <%= f.input :auto_print_receipt %>
<%= f.label "Select Zones", :class => 'control-label' %> <%= f.label "Select Zones", :class => 'control-label' %>
<%= f.collection_check_boxes :zone_ids , Zone.all, :id, :name , :class => 'checkbox form-group'%> <%= f.collection_check_boxes :zone_ids , Zone.all, :id, :name , :class => 'checkbox form-group'%>
<% if(@server_mode != 'cloud') %>
<%= f.input :printer_name, :as => :select, :collection => Printer::PrinterWorker.printers, include_blank: false %> <%= f.input :printer_name, :as => :select, :collection => Printer::PrinterWorker.printers, include_blank: "Please Select", class: "mdb-select md-form" %>
<% else %>
<%= f.input :printer_name, :as => :select, :collection => [], include_blank: false %>
<% end %>
<%= f.input :font %> <%= f.input :font %>
<%= f.input :font_size %> <%= f.input :font_size %>
<%= f.input :show_tax %> <%= f.input :show_tax %>
@@ -24,7 +22,7 @@
<%= f.input :show_guest_info %> <%= f.input :show_guest_info %>
</div> </div>
<div class="form-actions"> <div class="form-actions p-l-10">
<%= f.submit "Submit",:class => 'btn btn-primary btn-lg waves-effect' %> <%= f.submit "Submit",:class => 'btn btn-primary btn-lg waves-effect' %>
</div> </div>
<% end %> <% end %>
@@ -65,7 +63,7 @@
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function(){ $(document).ready(function(){
var serverMode = "<%= @server_mode %>"; var serverMode = "<%= @server_mode %>";
if(serverMode == 'cloud'){ if(serverMode == 'cloud' && typeof code2lab != 'undefined'){
var printers = code2lab.getPrinters(); var printers = code2lab.getPrinters();
var printerInfo = JSON.parse([printers]); var printerInfo = JSON.parse([printers]);
var select = $("#cashier_terminal_printer_name"); var select = $("#cashier_terminal_printer_name");
@@ -77,5 +75,12 @@
.text(value.deviceName)); .text(value.deviceName));
}); });
} }
$('#cashier_terminal_printer_name option:first').attr('disabled', true);
$("#cashier_terminal_printer_name").select2({
theme: 'material',
tags: true
})
}); });
</script> </script>

View File

@@ -1,6 +1,6 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item"><a href="<%= settings_cashier_terminals_path %>"><%= t("views.right_panel.header.cashier_terminal") %></a></li> <li class="breadcrumb-item"><a href="<%= settings_cashier_terminals_path %>"><%= t("views.right_panel.header.cashier_terminal") %></a></li>
<li class="breadcrumb-item active"><%= t("views.btn.edit") %></li> <li class="breadcrumb-item active"><%= t("views.btn.edit") %></li>
<span class="float-right"> <span class="float-right">

View File

@@ -1,9 +1,9 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item active"><%= t("views.right_panel.header.cashier_terminal") %></li> <li class="breadcrumb-item active"><%= t("views.right_panel.header.cashier_terminal") %></li>
<span class="float-right"> <span class="float-right">
<%= link_to t('.back', :default => t("views.btn.back")), dashboard_path %> <%= link_to t('.back', :default => t("views.btn.back")), root_path %>
</span> </span>
</ol> </ol>
</div> </div>

View File

@@ -1,6 +1,6 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item"><a href="<%= settings_cashier_terminals_path %>"><%= t("views.right_panel.header.cashier_terminal") %></a></li> <li class="breadcrumb-item"><a href="<%= settings_cashier_terminals_path %>"><%= t("views.right_panel.header.cashier_terminal") %></a></li>
<li class="breadcrumb-item active"><%= t("views.btn.new") %></li> <li class="breadcrumb-item active"><%= t("views.btn.new") %></li>
<span class="float-right"> <span class="float-right">

View File

@@ -1,6 +1,6 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item"><a href="<%= settings_cashier_terminals_path %>"><%= t("views.right_panel.header.cashier_terminal") %></a></li> <li class="breadcrumb-item"><a href="<%= settings_cashier_terminals_path %>"><%= t("views.right_panel.header.cashier_terminal") %></a></li>
<li class="breadcrumb-item active"><%= t :details %></li> <li class="breadcrumb-item active"><%= t :details %></li>
<span class="float-right"> <span class="float-right">

View File

@@ -1,7 +1,7 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item"><a href="<%= settings_commissioners_path %>"><%= t("en.commissioners") %></a></li> <li class="breadcrumb-item"><a href="<%= settings_commissioners_path %>"><%= t("en.commissioners") %></a></li>
<li class="breadcrumb-item active"><%= t("views.btn.edit") %></li> <li class="breadcrumb-item active"><%= t("views.btn.edit") %></li>
<span class="float-right"> <span class="float-right">

View File

@@ -1,9 +1,9 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item active"><%= t("en.commissioners") %></li> <li class="breadcrumb-item active"><%= t("en.commissioners") %></li>
<span class="float-right"> <span class="float-right">
<%= link_to t('.back', :default => t("views.btn.back")), dashboard_path %> <%= link_to t('.back', :default => t("views.btn.back")), root_path %>
</span> </span>
</ol> </ol>
</div> </div>

View File

@@ -1,6 +1,6 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item"><a href="<%= settings_commissioners_path %>"><%= t("en.commissioners") %></a></li> <li class="breadcrumb-item"><a href="<%= settings_commissioners_path %>"><%= t("en.commissioners") %></a></li>
<li class="breadcrumb-item active"><%= t("views.btn.new") %></li> <li class="breadcrumb-item active"><%= t("views.btn.new") %></li>
<span class="float-right"> <span class="float-right">

View File

@@ -1,6 +1,6 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item"><a href="<%= settings_commissioners_path %>"><%= t("en.commissioners") %></a></li> <li class="breadcrumb-item"><a href="<%= settings_commissioners_path %>"><%= t("en.commissioners") %></a></li>
<li class="breadcrumb-item active"><%= t :details %></li> <li class="breadcrumb-item active"><%= t :details %></li>
<span class="float-right"> <span class="float-right">

View File

@@ -1,6 +1,6 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item"><a href="<%= settings_commissions_path %>"><%= t("en.commissions") %></a></li> <li class="breadcrumb-item"><a href="<%= settings_commissions_path %>"><%= t("en.commissions") %></a></li>
<li class="breadcrumb-item active"><%= t("views.btn.edit") %></li> <li class="breadcrumb-item active"><%= t("views.btn.edit") %></li>
<span class="float-right"> <span class="float-right">

View File

@@ -1,9 +1,9 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item active"><%= t("en.commissions") %></li> <li class="breadcrumb-item active"><%= t("en.commissions") %></li>
<span class="float-right"> <span class="float-right">
<%= link_to t('.back', :default => t("views.btn.back")), dashboard_path %> <%= link_to t('.back', :default => t("views.btn.back")), root_path %>
</span> </span>
</ol> </ol>
</div> </div>

View File

@@ -1,6 +1,6 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item"><a href="<%= settings_commissions_path %>"><%= t("en.commissions") %></a></li> <li class="breadcrumb-item"><a href="<%= settings_commissions_path %>"><%= t("en.commissions") %></a></li>
<li class="breadcrumb-item active"><%= t("views.btn.new") %></li> <li class="breadcrumb-item active"><%= t("views.btn.new") %></li>
<span class="float-right"> <span class="float-right">

View File

@@ -2,7 +2,7 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>">Home</a></li> <li class="breadcrumb-item"><a href="<%= root_path %>">Home</a></li>
<% if @table %> <% if @table %>
<li class="breadcrumb-item"><a href="<%= edit_settings_zone_table_path(@zone,@settings_dining_facility) %>">Table / Room</a></li> <li class="breadcrumb-item"><a href="<%= edit_settings_zone_table_path(@zone,@settings_dining_facility) %>">Table / Room</a></li>
<% elsif @room %> <% elsif @room %>

View File

@@ -1,7 +1,7 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>">Home</a></li> <li class="breadcrumb-item"><a href="<%= root_path %>">Home</a></li>
<% if @table %> <% if @table %>
<li class="breadcrumb-item"><a href="<%= edit_settings_zone_table_path(@zone,@settings_dining_facility) %>">Table / Room</a></li> <li class="breadcrumb-item"><a href="<%= edit_settings_zone_table_path(@zone,@settings_dining_facility) %>">Table / Room</a></li>
<% elsif @room %> <% elsif @room %>

View File

@@ -1,7 +1,7 @@
<div class="page-header"> <div class="page-header">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li> <li class="breadcrumb-item"><a href="<%= root_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item"><a href="<%= settings_employees_path %>"><%= t("views.right_panel.detail.employees") %></a></li> <li class="breadcrumb-item"><a href="<%= settings_employees_path %>"><%= t("views.right_panel.detail.employees") %></a></li>
<li class="breadcrumb-item active"><%= t("views.btn.edit") %></li> <li class="breadcrumb-item active"><%= t("views.btn.edit") %></li>
<span class="float-right"> <span class="float-right">

Some files were not shown because too many files have changed in this diff Show More