merge with master

This commit is contained in:
Yan
2018-03-29 16:33:38 +06:30
87 changed files with 2898 additions and 4371 deletions

2
.gitignore vendored
View File

@@ -26,7 +26,7 @@ capybara-*.html
/public/assets/*
/public/uploads/*
/public/swf/*
/public/receipts
/public/receipts/
/coverage/
/spec/tmp/*
*.orig

View File

@@ -10,7 +10,7 @@ ruby 2.4.1p111
* Membership Details
Osaka =>
Auth Token => wu8YvlLmah0CL => New => v3
=> rj0MJ0XI5GsKZehE => Old => v
=> rj0MJ0XI5GsKZehE => Old => v2
=> code2lab => Old
Merchant account => RxzaYyAGzm7VqAZ4hKnv
@@ -25,6 +25,7 @@ BITP
Campaign Id => {"campaign_type_id": 1}
java -jar ~/Documents/Jade.jar http://192.168.1.88:3002
java -jar ~/Documents/c2l_jade.jar http://192.168.1.151:3002
Person and Extra Time
category_code = SPL... //for menu categories special
@@ -103,6 +104,9 @@ For Sidekiq
1) If you want to use sidekiq
=> Create New Lookups => lookup_type = sidekiq, Name = sidekiq , Value = 1 or 0
For Clear Menu
1) rake clear:menu # menu,menu item,menu category,menu item instance,account,item option,item attribute,item set
For Check CUp status
###please open
sudo cat /etc/sudoers

View File

@@ -36,7 +36,7 @@ $(function() {
image_path = "/image/logo.png";
}
row = '<div class="card custom-card testimonial-card animated fadeInRight" style="">'
row = '<div class="card custom-card testimonial-card fadeInRight" style="">'
+'<div class="custom-card-head card-head row" style="line-height:14px;margin:0px;">'
+'<div class="col-md-9">'+ product[field].name +'</div>'
+"<div class='col-md-3 add_icon' data-item-code='"
@@ -181,7 +181,7 @@ $(function() {
}
}
row = '<div class="card custom-card testimonial-card animated fadeInRight" style="height:100%;background-image:url(../../'+image_path+');background-repeat: no-repeat;">'
row = '<div class="card custom-card testimonial-card fadeInRight" style="height:100%;background-image:url(../../'+image_path+');background-repeat: no-repeat;">'
+'<div class="custom-card-head card-head row" style="line-height:14px;margin:0px;" style="">'
+'<div class="col-md-9">'+ menu_items[field].name +'</div>'
+"<div class='col-md-3 "+menu_item_box+"' data-item-code='"
@@ -700,7 +700,7 @@ $(function() {
$('.add_to_order').attr('data-attributes',JSON.stringify(attribute_arr));
$('.add_to_order').attr('data-options',JSON.stringify(option_arr));
var item_data = $(this);
item = get_item(item_data);
item = get_item(item_data,"add_to_order");
customer_display_view(item,"add");
show_item_detail(item_data,"add_to_order");
calculate_sub_total();
@@ -710,7 +710,7 @@ $(function() {
// click plus icon for add
$(document).on('click', '.add_icon', function(event){
var item_data = $(this);
item = get_item(item_data);
item = get_item(item_data,"add_icon");
customer_display_view(item,"add");
show_item_detail(item_data,"add_icon");
calculate_sub_total();
@@ -745,8 +745,6 @@ $(function() {
item_code = $(item_row[i]).attr('data-code');
instance_code = $(item_row[i]).attr('data-instance-code');
r_option = $(item_row[i]).attr('data-opt');
console.log(r_option)
console.log(d_option)
if (item_code == data.attr('data-item-code') && instance_code == data.attr('data-instance-code')&&r_option == d_option) {
if (qty > 1) {
qty = parseInt($(item_row[i]).children('#item_qty').text()) + qty;
@@ -1182,7 +1180,7 @@ console.log(d_option)
for(var i in data) {
row = '<li class="menu_category fadeInTop animated" data-id="'+data[i].id+'">'
row = '<li class="menu_category fadeInTop" data-id="'+data[i].id+'">'
+'<a class="nav-link" data-toggle="tab" href="" role="tab">'+ data[i].name+'</a>'
+'</li>' ;
$(sub_category).append(row);
@@ -1195,7 +1193,7 @@ console.log(d_option)
}
/* Get Item rows */
function get_item(data){
function get_item(data,click_type){
var sale_items = [];
var sale_item = {};
@@ -1206,6 +1204,8 @@ console.log(d_option)
sale_item.instance_code = data.attr('data-instance-code')
sale_item.attributes = data.attr('data-attributes')
sale_item.options = data.attr('data-options')
sale_item.opt = data.attr('data-opt')
sale_item.click_type = click_type
sale_item.instance = data.attr('data-instance')
sale_items.push(sale_item);

View File

@@ -30,11 +30,20 @@ App.checkin = App.cable.subscriptions.create('SecondDisplayViewChannel', {
instance = "("+items[i].instance+")";
}
d_option = items[i].options;
if (d_option){
option_name = "-"+items[i].options;
// d_option = items[i].options;
// if (d_option){
// option_name = "-"+items[i].options;
// }else{
// option_name = '';
// }
d_option = items[i].opt;
if (items[i].click_type != "add_icon"){
option_name = "-"+items[i].options;
data_option = items[i].options ;
}else{
option_name = '';
option_name = ' ';
data_option = '[]';
}
var rowCount = $('.second_display_items tbody tr').length+1;
@@ -68,7 +77,8 @@ App.checkin = App.cable.subscriptions.create('SecondDisplayViewChannel', {
+instance+ "' data-code='"+items[i].item_code+"' data-instance-code='"
+items[i].instance_code+"' data-attributes='"
+items[i].attributes+"' data-options ='"
+items[i].options+"' data-row ='"+rowCount+ "'>"
+data_option+"' data-opt ='"
+items[i].options+"' data-row ='"+rowCount+ "'>"
+'<td class="item-cell-no">'+rowCount+'</td>'
+'<td class="item-cell-name" id="item_name" >' + items[i].name+ ' ' + instance + ' ' + option_name +'</td>'
+'<td class="item-cell-qty" id="item_qty">' + qty + '</td>'

View File

@@ -9,7 +9,8 @@ $(document).ready(function() {
color: 'rgba(0,0,0,0.5)',
alwaysVisible: false,
borderRadius: '0',
railBorderRadius: '0'
railBorderRadius: '0',
touchScrollStep : 25
});
$('#order-detail-slimscroll').slimScroll({
@@ -18,7 +19,18 @@ $(document).ready(function() {
color: 'rgba(0,0,0,0.5)',
alwaysVisible: false,
borderRadius: '0',
railBorderRadius: '0'
railBorderRadius: '0',
touchScrollStep : 25
});
$('#menu-slimscroll').slimScroll({
height: height-$('#menu-slimscroll').attr('data-height'),
size: '5px',
color: 'rgba(0,0,0,0.5)',
alwaysVisible: false,
borderRadius: '0',
railBorderRadius: '0',
touchScrollStep : 25
});
// $('.delete').click(function(){

View File

@@ -198,6 +198,18 @@ select.form-control {
background-color: blue !important;
}
.selected-payment {
color: #fff !important;
background-color: blue !important;
}
.payment_btn {
white-space: normal !important;
margin-bottom: 15px;
margin-right: 15px;
color:#fff !important;
# background-color: green !important;
}
/* Reciept Style */
#order-charges-table td {
border-top: none !important;
@@ -399,7 +411,7 @@ i.logout_icon{
/* Start Is Member Modal */
#is_memberModal .modal-body {
height: 200px !important;
height: 260px !important;
}
#is_memberModal .btn {

View File

@@ -67,8 +67,8 @@ class Api::OrdersController < Api::ApiController
end
}
#end extra time
puts params[:order_items]
puts "ITEM aaaaaaaaaaaaaaaaaaa"
puts params[:order_items]
puts "ORDER ITEMS"
# begin
@order = Order.new
@order.source = params[:order_source]
@@ -172,9 +172,9 @@ class Api::OrdersController < Api::ApiController
# Update customer info, Guest Info
# Input Params
# order_id , order_items {[item_code, item_instance_code , qty, option, variants]}
def update
# def update
end
# end
def order_params
params.permits(:order_source, :booking_id,:order_type,
@@ -199,4 +199,59 @@ class Api::OrdersController < Api::ApiController
end
return status
end
def update
Rails.logger.debug "Booking ID - " + params[:booking_id].to_s
if checkin_checkout_time(params[:booking_id])
Rails.logger.debug "Order Item ID - " + params[:order_item_id].to_s
order_items_id = params[:order_item_id]
qty_weight = params[:quantity].to_f
remarks = params[:remark]
order_item = OrderItem.find(order_items_id)
before_updated_qty = order_item.qty
order_item.item_order_by = current_login_employee.name
order_item.qty = qty_weight
order_item.remark = remarks
order_item.save
if ENV["SERVER_MODE"] != "cloud" #no print in cloud server
# print
assigned_item = AssignedOrderItem.find_by_instance_code(order_item.item_instance_code)
# order queue stations
oqs = assigned_item.order_queue_station
order_slim_pdf = Lookup.collection_of("print_settings") #print_settings with name:OrderSlimPdf
unique_code="OrderItemPdf"
if !order_slim_pdf.empty?
order_slim_pdf.each do |order_item_slim|
if order_item_slim[0] == 'OrderSlimPdf'
if order_item_slim[1] == '1'
unique_code="OrderItemSlimPdf"
else
unique_code="OrderItemPdf"
end
elsif order_item_slim[0] == 'OrderSetPdf'
if order_item_slim[1] == '1'
unique_code="OrderSetItemPdf"
else
unique_code="OrderItemPdf"
end
end
end
end
print_settings=PrintSetting.find_by_unique_code(unique_code)
order_queue_printer= Printer::OrderQueuePrinter.new(print_settings)
order_queue_printer.print_order_item(print_settings, oqs, order_item.order_id, order_items_id, print_status=" (Cancelled)", before_updated_qty )
end
return return_json_status_with_code(200, "updated successfully!")
else
return return_json_status_with_code(406, "Checkout time is over!")
end
end
end

View File

@@ -80,63 +80,78 @@ class HomeController < ApplicationController
end
def dashboard
@from, @to = get_date_range_from_params
@from, @to, @from_time, @to_time = get_date_range_from_params
@shop = Shop.first
today = DateTime.now.strftime('%Y-%m-%d')
@orders = Sale::where("payment_status='new' and sale_status='bill' and DATE_FORMAT(receipt_date,'%Y-%m-%d') = '#{today}'").count()
@sales = Sale::where("payment_status='paid' and sale_status='completed' and DATE_FORMAT(receipt_date,'%Y-%m-%d') = '#{today}'").count()
@top_products = Sale.top_products(today,@from,@to).sum('i.qty')
@bottom_products = Sale.bottom_products(today,@from,@to).sum('i.qty')
@hourly_sales = Sale.hourly_sales(today,@from,@to).sum(:grand_total)
if !@from.nil? && !@to.nil?
if !@from_time.nil? && @to_time.nil?
@orders = Sale::where("payment_status='new' and sale_status='bill' and DATE_FORMAT(receipt_date,'%Y-%m-%d') between '#{@from}' and '#{@to}' and DATE_FORMAT(CONVERT_TZ(receipt_date,'+00:00','+06:30'),'%H:%m') between '#{@from_time}' and '#{@to_time}'").count()
else
@orders = Sale::where("payment_status='new' and sale_status='bill' and DATE_FORMAT(receipt_date,'%Y-%m-%d') between '#{@from}' and '#{@to}'").count()
end
else
@orders = Sale::where("payment_status='new' and sale_status='bill' and DATE_FORMAT(receipt_date,'%Y-%m-%d') = '#{today}'").count()
end
if !@from.nil? && !@to.nil?
if !@from_time.nil? && @to_time.nil?
@sales = Sale::where("payment_status='paid' and sale_status='completed' and DATE_FORMAT(receipt_date,'%Y-%m-%d') between '#{@from}' and '#{@to}' and DATE_FORMAT(CONVERT_TZ(receipt_date,'+00:00','+06:30'),'%H:%m') between '#{@from_time}' and '#{@to_time}'").count()
else
@sales = Sale::where("payment_status='paid' and sale_status='completed' and DATE_FORMAT(receipt_date,'%Y-%m-%d') between '#{@from}' and '#{@to}'").count()
end
else
@sales = Sale::where("payment_status='paid' and sale_status='completed' and DATE_FORMAT(receipt_date,'%Y-%m-%d') = '#{today}'").count()
end
@top_products = Sale.top_products(today,current_user,@from,@to,@from_time,@to_time).sum('i.qty')
@bottom_products = Sale.bottom_products(today,current_user,@from,@to,@from_time,@to_time).sum('i.qty')
@hourly_sales = Sale.hourly_sales(today,current_user,@from,@to,@from_time,@to_time).sum(:grand_total)
# .group_by_hour(:created_at, :time_zone => 'Asia/Rangoon',format: '%I:%p')
# .sum(:grand_total)
@employee_sales = Sale.employee_sales(today,@from,@to)
@employee_sales = Sale.employee_sales(today,current_user,@from,@to,@from_time,@to_time)
.sum('(CASE WHEN sp.payment_method="cash" THEN (sp.payment_amount - sales.amount_changed) ELSE sp.payment_amount END)')
@inventories = StockJournal.inventory_balances(today,@from,@to).sum(:balance)
@inventories = StockJournal.inventory_balances(today,@from,@to,@from_time,@to_time).sum(:balance)
@total_sale = Sale.total_sale(today,current_user,@from,@to)
@total_count = Sale.total_count(today,current_user,@from,@to)
@total_card = Sale.total_card_sale(today,current_user,@from,@to)
@total_credit = Sale.credit_payment(today,current_user,@from,@to)
@total_sale = Sale.total_sale(today,current_user,@from,@to,@from_time,@to_time)
@total_count = Sale.total_count(today,current_user,@from,@to,@from_time,@to_time)
@total_card = Sale.total_card_sale(today,current_user,@from,@to,@from_time,@to_time)
@total_credit = Sale.credit_payment(today,current_user,@from,@to,@from_time,@to_time)
@sale_data = Array.new
@total_payment_methods = Sale.total_payment_methods(today,current_user,@from,@to)
@total_payment_methods = Sale.total_payment_methods(today,current_user,@from,@to,@from_time,@to_time)
if !@total_payment_methods.nil?
@total_payment_methods.each do |payment|
if payment.payment_method == "mpu" || payment.payment_method == "visa" || payment.payment_method == "master" || payment.payment_method == "jcb"
pay = Sale.payment_sale('card', today, current_user,@from,@to)
if payment.payment_method == "mpu" || payment.payment_method == "visa" || payment.payment_method == "master" || payment.payment_method == "jcb" || payment.payment_method == "unionpay"
pay = Sale.payment_sale('card', today, current_user,@from,@to,@from_time,@to_time)
@sale_data.push({'card' => pay.payment_amount})
else
pay = Sale.payment_sale(payment.payment_method, today, current_user,@from,@to)
pay = Sale.payment_sale(payment.payment_method, today, current_user,@from,@to,@from_time,@to_time)
@sale_data.push({payment.payment_method => pay.payment_amount})
end
end
end
@summ_sale = Sale.summary_sale_receipt(today,current_user,@from,@to)
@total_customer = Sale.total_customer(today,current_user,@from,@to)
@total_dinein = Sale.total_dinein(today,current_user,@from,@to)
@total_takeaway = Sale.total_takeaway(today,current_user,@from,@to)
@total_other_customer = Sale.total_other_customer(today,current_user,@from,@to)
@total_membership = Sale.total_membership(today,current_user,@from,@to)
@summ_sale = Sale.summary_sale_receipt(today,current_user,@from,@to,@from_time,@to_time)
@total_customer = Sale.total_customer(today,current_user,@from,@to,@from_time,@to_time)
@total_dinein = Sale.total_dinein(today,current_user,@from,@to,@from_time,@to_time)
@total_takeaway = Sale.total_takeaway(today,current_user,@from,@to,@from_time,@to_time)
@total_other_customer = Sale.total_other_customer(today,current_user,@from,@to,@from_time,@to_time)
@total_membership = Sale.total_membership(today,current_user,@from,@to,@from_time,@to_time)
@total_order = Sale.total_order(today,current_user,@from,@to)
@total_accounts = Sale.total_account(today,current_user,@from,@to)
@total_order = Sale.total_order(today,current_user,@from,@to,@from_time,@to_time)
@total_accounts = Sale.total_account(today,current_user,@from,@to,@from_time,@to_time)
@account_data = Array.new
if !@total_accounts.nil?
@total_accounts.each do |account|
acc = Sale.account_data(account.account_id, today,current_user,@from,@to)
acc = Sale.account_data(account.account_id, today,current_user,@from,@to,@from_time,@to_time)
if !acc.nil?
@account_data.push({account.title => acc.cnt_acc, account.title + '_amount' => acc.total_acc})
end
end
end
@top_items = Sale.top_items(today,current_user,@from,@to)
@total_foc_items = Sale.total_foc_items(today,current_user,@from,@to)
@top_items = Sale.top_items(today,current_user,@from,@to,@from_time,@to_time)
@total_foc_items = Sale.total_foc_items(today,current_user,@from,@to,@from_time,@to_time)
# get printer info
@print_settings = PrintSetting.get_precision_delimiter()
@@ -190,18 +205,23 @@ class HomeController < ApplicationController
def get_date_range_from_params
from = params[:from]
to = params[:to]
to = params[:to]
from_time = params[:from_time]
to_time = params[:to_time]
if from.present? && to.present?
f_date = DateTime.parse(from)
t_date = DateTime.parse(to)
f_time = Time.mktime(f_date.year,f_date.month,f_date.day,f_date.hour,f_date.min,f_date.sec)
t_time = Time.mktime(t_date.year,t_date.month,t_date.day,t_date.hour,t_date.min,t_date.sec)
from = f_time.beginning_of_day.utc.getlocal
to = t_time.end_of_day.utc.getlocal
# f_date = DateTime.parse(from)
# t_date = DateTime.parse(to)
# f_time = Time.mktime(f_date.year,f_date.month,f_date.day,f_date.hour,f_date.min,f_date.sec)
# t_time = Time.mktime(t_date.year,t_date.month,t_date.day,t_date.hour,t_date.min,t_date.sec)
# from = f_time.beginning_of_day.utc.getlocal
# to = t_time.end_of_day.utc.getlocal
from = DateTime.parse(from).utc.getlocal.strftime('%Y-%m-%d')
to = DateTime.parse(to).utc.getlocal.strftime('%Y-%m-%d')
end
return from, to
return from, to, from_time, to_time
end
#Shop Name in Navbor

View File

@@ -3,6 +3,7 @@ class Oqs::EditController < BaseOqsController
assigned_item_id = params[:id]
@link_type = params[:type]
@dining_type = nil
@booking = nil
if params[:type] == 'oqs'
assigned_item = AssignedOrderItem.find(assigned_item_id)
@order_item = OrderItem.where("order_id='#{ assigned_item.order_id }' AND item_instance_code='#{ assigned_item.instance_code }'")

View File

@@ -1,6 +1,6 @@
class Origami::AddordersController < BaseOrigamiController
# before_action :set_dining, only: [:detail]
def index
@tables = Table.all.active.order('zone_id asc').group("zone_id")
@rooms = Room.all.active.order('zone_id asc').group("zone_id")

View File

@@ -98,10 +98,10 @@ class Origami::CustomersController < BaseOrigamiController
def update_sale_by_customer
id = params[:sale_id][0,3]
customer_id = params[:customer_id]
customer = Customer.find(customer_id)
id = params[:sale_id][0,3]
customer_id = params[:customer_id]
customer = Customer.find(customer_id)
order_source = params[:type]
# Check and find with card no
# if(!customer_id.include? "CUS")
# customer = Customer.find_by_paypar_account_no(customer_id)
@@ -135,7 +135,7 @@ class Origami::CustomersController < BaseOrigamiController
if status == true
render json: JSON.generate({:status => true})
if(id == "SAL")
sale.compute_by_sale_items(sale.sale_id, sale.sale_items, sale.total_discount)
sale.compute_by_sale_items(sale.sale_id, sale.sale_items, sale.total_discount, nil, order_source)
end
else
render json: JSON.generate({:status => false, :error_message => "Record not found"})

View File

@@ -20,10 +20,12 @@ class Origami::DiscountsController < BaseOrigamiController
#discount page show from origami index with selected order
def create
order_source = params[:cashier_type]
sale_id = params[:sale_id]
discount_items = JSON.parse(params[:discount_items])
overall_discount = params[:overall_discount]
sub_total = params[:sub_total]
if Sale.exists?(sale_id)
sale = Sale.find(sale_id)
@@ -82,7 +84,7 @@ class Origami::DiscountsController < BaseOrigamiController
sale_audit = SaleAudit.record_audit_discount(sale.sale_id,sale.cashier_id, action_by,remark,"OVERALLDISCOUNT" )
end
sale.compute_by_sale_items(sale_id, sale.sale_items, overall_discount.to_f)
sale.compute_by_sale_items(sale_id, sale.sale_items, overall_discount.to_f, nil,order_source)
if !table.nil?
result = {:status=> "Success", :table_id => table_id, :table_type => table.type }
else
@@ -102,6 +104,7 @@ class Origami::DiscountsController < BaseOrigamiController
# Remove selected discount Items
def remove_discount_items
order_source = params[:cashier_type]
sale_id = params[:sale_id]
discount_items = JSON.parse(params[:discount_items])
if Sale.exists?(sale_id)
@@ -136,7 +139,7 @@ class Origami::DiscountsController < BaseOrigamiController
# sale.grand_total = (sale.total_amount - sale.total_discount) + sale.total_tax;
# sale.save
# Re-calc All Amount in Sale
sale.compute_by_sale_items(sale_id, sale.sale_items, sale.total_discount)
sale.compute_by_sale_items(sale_id, sale.sale_items, sale.total_discount, nil, order_source)
if table.nil?
result = {:status=> "Success"}
else
@@ -158,6 +161,7 @@ class Origami::DiscountsController < BaseOrigamiController
# Remove all discount Items
def remove_all_discount
sale_id = params[:id]
order_source = params[:type]
if Sale.exists?(sale_id)
sale = Sale.find(sale_id)
@@ -197,7 +201,7 @@ class Origami::DiscountsController < BaseOrigamiController
sale_audit = SaleAudit.record_audit_discount(sale.sale_id,sale.cashier_id, action_by,remark,"REMOVEALLDISCOUNT" )
# Re-calc All Amount in Sale
sale.compute_by_sale_items(sale_id, sale.sale_items, 0)
sale.compute_by_sale_items(sale_id, sale.sale_items, 0, nil, order_source)
if table.nil?
result = {:status=> "Success"}
else
@@ -218,7 +222,7 @@ class Origami::DiscountsController < BaseOrigamiController
# Member Discount
def member_discount
order_source = params[:cashier_type]
sale_id = params[:sale_id]
is_card = params[:is_card]
sub_total = params[:sub_total]
@@ -297,7 +301,7 @@ class Origami::DiscountsController < BaseOrigamiController
if response["discount_bonus_earned"]
discount_amount = discount_amount + response["discount_bonus_earned"]
end
sale.compute_by_sale_items(sale_id, sale.sale_items, discount_amount, 'member_discount')
sale.compute_by_sale_items(sale_id, sale.sale_items, discount_amount, 'member_discount', order_source)
result = {:status=> "Success",:title=>"Member Discount", :table_id => table_id,:table_type => table_type }
elsif response["status"] == "500"
result = {:status=> response["error"],:title=>"Alert", :table_id => table_id,:table_type => table_type }

View File

@@ -19,6 +19,7 @@ class Origami::OtherChargesController < BaseOrigamiController
sale_id = params[:sale_id]
other_charges_items = JSON.parse(params[:other_charges_items])
sub_total = params[:sub_total]
cashier_type = params[:cashier_type]
if Sale.exists?(sale_id)
sale = Sale.find(sale_id)
@@ -68,7 +69,7 @@ class Origami::OtherChargesController < BaseOrigamiController
end
# Re-calc All Amount in Sale
sale.compute_by_sale_items(sale_id, sale.sale_items, sale.total_discount)
sale.compute_by_sale_items(sale_id, sale.sale_items, sale.total_discount, nil, cashier_type)
end
if !table.nil?
dining = {:table_id => table_id, :table_type => table.type }

View File

@@ -208,19 +208,7 @@ class Origami::PaymentsController < BaseOrigamiController
render json: JSON.generate({:status => saleObj.rebate_status, :message => "Can't Rebate coz of Sever Error ", :filename => filename, :receipt_no => sale_receipt_no, :printer_name => printer_name})
if params[:type] == "quick_service"
booking = Booking.find_by_sale_id(sale_id)
if booking.dining_facility_id.to_i>0
table_id = booking.dining_facility_id
else
table_id = 0
end
booking.booking_orders.each do |order|
Order.pay_process_order_queue(order.order_id,table_id)
end
# end
end
#end
end
end
@@ -241,13 +229,15 @@ class Origami::PaymentsController < BaseOrigamiController
@junctionpaycount = 0.0
@credit = 0.0
@sale_data = Sale.find_by_sale_id(sale_id)
@balance = 0.00
@balance = 0
@accountable_type = ''
@table_no = ''
@dining = ''
@shop = Shop::ShopDetail #show shop info
@customer_lists = Customer.where("customer_id = 'CUS-000000000001' or customer_id = 'CUS-000000000002'")
saleObj = Sale.find(sale_id)
#total customer with individual total amount
@@ -297,10 +287,11 @@ class Origami::PaymentsController < BaseOrigamiController
#get customer amount
@customer = Customer.find(@sale_data.customer_id)
accounts = @customer.tax_profiles
# accounts = @customer.tax_profiles
accounts = TaxProfile.where("group_type = ?",@cashier_type).order("order_by ASC")
@account_arr =[]
accounts.each do |acc|
account = TaxProfile.find(acc)
account = TaxProfile.find(acc.id)
@account_arr.push(account)
end
@@ -311,7 +302,7 @@ class Origami::PaymentsController < BaseOrigamiController
if response["status"]==true
response["account_data"].each do |res|
if res["accountable_type"] == "RebateAccount" || res["accountable_type"] == "RebatebonusAccount"
@balance += res["balance"]
@balance = @balance.to_f + res["balance"].to_f
# @accountable_type = res["accountable_type"]
@accountable_type = "Rebate Balance"
end
@@ -443,7 +434,6 @@ class Origami::PaymentsController < BaseOrigamiController
sale_payment = SalePayment.new
sale_payment.process_payment(saleObj, current_user.name, cash, "foc" ,remark)
# For Cashier by Zone
bookings = Booking.where("sale_id='#{sale_id}'")
# if bookings.count > 1
@@ -465,7 +455,7 @@ class Origami::PaymentsController < BaseOrigamiController
# Re-call Sale Data
saleObj = Sale.find(sale_id)
if ENV["SERVER_MODE"] != "cloud" #no print in cloud server
# if ENV["SERVER_MODE"] != "cloud" #no print in cloud server
unique_code = "ReceiptBillPdf"
customer= Customer.find(saleObj.customer_id)
@@ -479,7 +469,17 @@ class Origami::PaymentsController < BaseOrigamiController
discount_price_by_accounts = SaleItem.get_discount_price_by_accounts(saleObj.sale_items)
printer = Printer::ReceiptPrinter.new(print_settings)
printer.print_receipt_bill(print_settings,cashier_terminal,saleObj.sale_items,saleObj,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details, "FOC",nil,nil)
filename, sale_receipt_no, printer_name = printer.print_receipt_bill(print_settings,cashier_terminal,saleObj.sale_items,saleObj,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details, "FOC",nil,nil)
result = {
:status => true,
:filepath => filename,
:printer_model => print_settings.brand_name,
:printer_url => print_settings.api_settings
}
# Mobile Print
render :json => result.to_json
if params[:type] == "quick_service"
booking = Booking.find_by_sale_id(sale_id)
@@ -493,7 +493,7 @@ class Origami::PaymentsController < BaseOrigamiController
Order.pay_process_order_queue(order.order_id,table_id)
end
end
end
# end
end
end
@@ -539,6 +539,15 @@ class Origami::PaymentsController < BaseOrigamiController
printer = Printer::ReceiptPrinter.new(print_settings)
printer.print_receipt_pdf(filename,receipt_no,print_settings.print_copies,printer_name)
render :json => {status: true}
result = {
:status => true,
:filepath => filename,
:printer_model => print_settings.brand_name,
:printer_url => print_settings.api_settings
}
# Mobile Print
render :json => result.to_json
# render :json => {status: true}
end
end

View File

@@ -1,6 +1,12 @@
class Origami::QuickServiceController < ApplicationController
# before_action :set_dining, only: [:detail]
before_action :check_user
def check_user
if current_user.nil?
redirect_to root_path
end
end
def index
today = DateTime.now
day = Date.today.wday
@@ -211,6 +217,11 @@ class Origami::QuickServiceController < ApplicationController
end
end
def check_user
if current_user.nil?
redirect_to root_path
end
end
# this can always true
def check_order_with_booking(booking)
if booking.sale.sale_status == "completed" || booking.sale.sale_status == "new"

View File

@@ -1,5 +1,11 @@
class Origami::RequestBillsController < ApplicationController
before_action :check_user
def check_user
if current_user.nil?
redirect_to root_path
end
end
# Print Request Bill and add to sale tables
def print
@sale = Sale.new

View File

@@ -3,7 +3,7 @@ class Origami::ShiftsController < BaseOrigamiController
end
def show
@type = params[:type]
@cashier_type = params[:type]
@shift = ShiftSale.current_open_shift(current_user.id)
#for bank integration
bank_integration = Lookup.collection_of('bank_integration')

View File

@@ -3,6 +3,7 @@ class Origami::SplitBillController < BaseOrigamiController
def index
dining_id = params[:dining_id]
@cashier_type = params[:type]
@table = DiningFacility.find(dining_id)
@booking = @table.get_booking
@orders = Array.new
@@ -76,6 +77,7 @@ class Origami::SplitBillController < BaseOrigamiController
end
def create
cashier_type = params[:cashier_type]
order_ids = params[:order_ids]
arr_order_ids = nil
if !params[:arr_order_ids].nil?
@@ -111,7 +113,7 @@ class Origami::SplitBillController < BaseOrigamiController
if booking
if booking.sale_id.nil?
sale = Sale.new
status, sale_id = sale.generate_invoice_from_booking(params[:booking_id], current_user, current_user)
status, sale_id = sale.generate_invoice_from_booking(params[:booking_id], current_user, current_user, cashier_type)
sale_data = Sale.find_by_sale_id(sale_id)
else
status = true
@@ -233,7 +235,7 @@ class Origami::SplitBillController < BaseOrigamiController
puts "order_id_count < 1"
new_order_status = true
order_items.each do |order_item|
orderItem = OrderItem.find_by_order_id(order_id)
orderItem = OrderItem.find(order_item["id"])
if !orderItem.nil?
if order_item["id"] == orderItem.order_items_id
if orderItem.qty.to_f != order_item['qty'].to_f
@@ -324,7 +326,7 @@ class Origami::SplitBillController < BaseOrigamiController
end
sale = Sale.new
status, sale_id = sale.generate_invoice_from_booking(booking.booking_id, current_user, current_user)
status, sale_id = sale.generate_invoice_from_booking(booking.booking_id, current_user, current_user, cashier_type)
end
Promotion.promo_activate(sale)

View File

@@ -31,6 +31,8 @@ class Origami::TableInvoicesController < BaseOrigamiController
def show
@table = DiningFacility.find(params[:table_id])
@membership = MembershipSetting::MembershipSetting
@payment_methods = PaymentMethodSetting.all
shop = Shop::ShopDetail
@sale_array = Array.new
@table.bookings.each do |booking|

View File

@@ -87,8 +87,6 @@ class Origami::VoidController < BaseOrigamiController
if bookings[0].dining_facility_id.to_i>0
table = DiningFacility.find(bookings[0].dining_facility_id)
end
end
if bookings[0].dining_facility_id.to_i > 0
@@ -100,7 +98,7 @@ class Origami::VoidController < BaseOrigamiController
end
if ENV["SERVER_MODE"] != "cloud" #no print in cloud server
# if ENV["SERVER_MODE"] != "cloud" #no print in cloud server
unique_code = "ReceiptBillPdf"
customer= Customer.find(sale.customer_id)
@@ -120,9 +118,17 @@ class Origami::VoidController < BaseOrigamiController
item_price_by_accounts = SaleItem.calculate_price_by_accounts(sale.sale_items)
discount_price_by_accounts = SaleItem.get_discount_price_by_accounts(sale.sale_items)
printer = Printer::ReceiptPrinter.new(print_settings)
printer.print_receipt_bill(print_settings,cashier_terminal,sale.sale_items,sale,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details, "VOID",current_balance,nil)
end
printer = Printer::ReceiptPrinter.new(print_settings)
filename, sale_receipt_no, printer_name = printer.print_receipt_bill(print_settings,cashier_terminal,sale.sale_items,sale,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details, "VOID",current_balance,nil)
result = {
:filepath => filename,
:printer_model => print_settings.brand_name,
:printer_url => print_settings.api_settings
}
# Mobile Print
render :json => result.to_json
# end
#end print

View File

@@ -0,0 +1,130 @@
class Origami::WasteSpoileController < BaseOrigamiController
def index
end
def waste_and_spoile
sale_id = params[:sale_id]
remark = params[:remark]
order_source = params[:type] #tax profile source
if Sale.exists?(sale_id)
sale = Sale.find_by_sale_id(sale_id)
if sale.discount_type == "member_discount"
sale.update_attributes(total_discount: 0)
sale.compute_by_sale_items(sale_id, sale.sale_items,0,order_source)
end
sale.payment_status = remark
sale.sale_status = remark
sale.save
# add to sale item with foc
sale_items = SaleItem.where("sale_id='#{ sale_id }' and status is null")
sale_items.each do|item|
SaleItem.update_existing_item(item.qty, item, sale_id, remark, item.unit_price, item.price)
end
if sale.bookings[0].dining_facility_id.to_i > 0
table_avaliable = true
table_count = 0
table = sale.bookings[0].dining_facility
table.bookings.each do |booking|
if booking.booking_status != 'moved'
if booking.sale_id
if booking.sale.sale_status != 'completed' && booking.sale.sale_status != 'void'
table_avaliable = false
table_count += 1
else
table_avaliable = true
end
else
table_avaliable = false
table_count += 1
end
end
end
if table_avaliable && table_count == 0
table.status = 'available'
table.save
end
else
table = nil
end
# FOr Sale Audit
action_by = current_user.name
# remark = "Void Sale ID #{sale_id} | Receipt No #{sale.receipt_no} | Receipt No #{sale.receipt_no} | Table ->#{table.name}"
sale_audit = SaleAudit.record_audit_for_edit(sale_id,sale.cashier_id, action_by,remark,remark )
# For Print
member_info = nil
rebate_amount = nil
current_balance = nil
# For Cashier by Zone
bookings = Booking.where("sale_id='#{sale_id}'")
if bookings.count > 1
# for Multiple Booking
if bookings[0].dining_facility_id.to_i>0
table = DiningFacility.find(bookings[0].dining_facility_id)
end
end
if bookings[0].dining_facility_id.to_i > 0
cashier_zone = CashierTerminalByZone.find_by_zone_id(table.zone_id)
cashier_terminal = CashierTerminal.find(cashier_zone.cashier_terminal_id)
else
shift = ShiftSale.find(sale.shift_sale_id)
cashier_terminal = CashierTerminal.find(shift.cashier_terminal_id)
end
# if ENV["SERVER_MODE"] != "cloud" #no print in cloud server
unique_code = "ReceiptBillPdf"
customer= Customer.find(sale.customer_id)
#shop detail
shop_details = Shop.find(1)
# get member information
rebate = MembershipSetting.find_by_rebate(1)
if customer.membership_id != nil && rebate
member_info = Customer.get_member_account(customer)
rebate_amount = Customer.get_membership_transactions(customer,sale.receipt_no)
current_balance = SaleAudit.paymal_search(sale_id)
end
# get printer info
print_settings=PrintSetting.find_by_unique_code(unique_code)
# Calculate Food and Beverage Total
item_price_by_accounts = SaleItem.calculate_price_by_accounts(sale.sale_items)
discount_price_by_accounts = SaleItem.get_discount_price_by_accounts(sale.sale_items)
printer = Printer::ReceiptPrinter.new(print_settings)
filename, sale_receipt_no, printer_name = printer.print_receipt_bill(print_settings,cashier_terminal,sale.sale_items,sale,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_details, "VOID",current_balance,nil)
result = {
:filepath => filename,
:printer_model => print_settings.brand_name,
:printer_url => print_settings.api_settings
}
# Mobile Print
render :json => result.to_json
# end
#end print
# update complete order items in oqs
SaleOrder.where("sale_id = '#{ sale_id }'").find_each do |sodr|
AssignedOrderItem.where("order_id = '#{ sodr.order_id }'").find_each do |aoi|
aoi.delivery_status = 1
aoi.save
end
end
end
end
end

View File

@@ -15,7 +15,8 @@ class Reports::SaleitemController < BaseReportController
shift = ShiftSale.where('shift_started_at = ? and shift_closed_at = ? ',shift_sale.shift_started_at, shift_sale.shift_closed_at)
end
end
@sale_data, @other_charges,@discount_data , @cash_data , @card_data , @credit_data , @foc_data , @grand_total , @change_amount = Sale.get_by_shift_items(shift_sale_range,shift, from, to, Sale::SALE_STATUS_COMPLETED)
@type = params[:sale_type]
@sale_data, @other_charges,@discount_data , @cash_data , @card_data , @credit_data , @foc_data , @grand_total , @change_amount = Sale.get_by_shift_items(shift_sale_range,shift, from, to, Sale::SALE_STATUS_COMPLETED,@type)
@sale_taxes = Sale.get_separate_tax(shift_sale_range,shift,from,to,nil)

View File

@@ -1,6 +1,7 @@
class Settings::CommissionersController < ApplicationController
load_and_authorize_resource except: [:create]
before_action :set_commissioner, only: [:show, :edit, :update, :destroy]
before_action :check_user
# GET /commissioners
# GET /commissioners.json
@@ -82,7 +83,11 @@ class Settings::CommissionersController < ApplicationController
end
render json: @transactions
end
def check_user
if current_user.nil?
redirect_to root_path
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_commissioner

View File

@@ -1,6 +1,7 @@
class Settings::CommissionsController < ApplicationController
load_and_authorize_resource except: [:create]
before_action :set_commission, only: [:show, :edit, :update, :destroy]
before_action :check_user
# GET /commissions
# GET /commissions.json
@@ -68,6 +69,12 @@ class Settings::CommissionsController < ApplicationController
# end
end
def check_user
if current_user.nil?
redirect_to root_path
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_commission

View File

@@ -72,8 +72,11 @@ class Settings::MenusController < ApplicationController
end
def import
Menu.import(params[:file])
redirect_to settings_menus_path, notice: "imported"
if params[:file]
Menu.import(params[:file])
redirect_to settings_menus_path, notice: "Menu was successfully Imported"
end
end
private

View File

@@ -1,6 +1,7 @@
class Settings::OrderQueueStationsController < ApplicationController
load_and_authorize_resource except: [:create]
before_action :set_settings_order_queue_station, only: [:show, :edit, :update, :destroy]
before_action :check_user
# GET /settings/order_queue_stations
# GET /settings/order_queue_stations.json
@@ -67,6 +68,12 @@ class Settings::OrderQueueStationsController < ApplicationController
# end
end
def check_user
if current_user.nil?
redirect_to root_path
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_settings_order_queue_station

View File

@@ -1,6 +1,7 @@
class Settings::ProductsController < ApplicationController
load_and_authorize_resource except: [:create]
before_action :set_settings_product, only: [:show, :edit, :update, :destroy]
before_action :check_user
# GET /settings/products
# GET /settings/products.json
@@ -65,6 +66,12 @@ load_and_authorize_resource except: [:create]
# end
end
def check_user
if current_user.nil?
redirect_to root_path
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_settings_product

View File

@@ -1,6 +1,7 @@
class Settings::PromotionProductsController < ApplicationController
before_action :set_promotion, only: [:show, :edit, :update, :destroy,:new]
before_action :set_promotion_product, only: [:show, :edit, :update, :destroy]
before_action :check_user
# GET /promotion_products
# GET /promotion_products.json
@@ -63,6 +64,12 @@ class Settings::PromotionProductsController < ApplicationController
# end
end
def check_user
if current_user.nil?
redirect_to root_path
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_promotion

View File

@@ -1,6 +1,7 @@
class Settings::PromotionsController < ApplicationController
load_and_authorize_resource except: [:create]
before_action :set_promotion, only: [:show, :edit, :update, :destroy]
before_action :check_user
# GET /promotions
# GET /promotions.json
@@ -119,6 +120,12 @@ class Settings::PromotionsController < ApplicationController
render json: res
end
def check_user
if current_user.nil?
redirect_to root_path
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_promotion

View File

@@ -1,6 +1,7 @@
class Transactions::CreditNotesController < ApplicationController
before_action :set_transactions_sale, only: [:show, :edit, :update, :destroy]
before_action :check_user
# GET /transactions/sales
# GET /transactions/sales.json
@@ -25,12 +26,18 @@ class Transactions::CreditNotesController < ApplicationController
@credit_notes = 0
end
end
puts "sssssssssssss"
puts @credit_notes.to_json
respond_to do |format|
format.html # index.html.erb
format.json { render json: @credit_notes }
end
end
end
end
def check_user
if current_user.nil?
redirect_to root_path
end
end
end

View File

@@ -1,5 +1,7 @@
class Transactions::OrdersController < ApplicationController
load_and_authorize_resource except: [:create]
before_action :check_user
def index
filter = params[:filter]
@@ -39,4 +41,10 @@ class Transactions::OrdersController < ApplicationController
end
end
def check_user
if current_user.nil?
redirect_to root_path
end
end
end

View File

@@ -1,20 +1,30 @@
class Transactions::SalesController < ApplicationController
load_and_authorize_resource except: [:create]
before_action :set_transactions_sale, only: [:show, :edit, :update, :destroy]
before_action :check_user
# GET /transactions/sales
# GET /transactions/sales.json
def index
receipt_no = params[:receipt_no]
from = params[:from]
to = params[:to]
# from = params[:from]
# to = params[:to]
from, to = get_date_range_from_params
@shift = ''
if params[:shift_name].to_i != 0
@shift = ShiftSale.find(params[:shift_name])
end
if receipt_no.nil? && from.nil? && to.nil?
@sales = Sale.where("NOT sale_status = 'void' " ).order("sale_id desc")
if @shift.blank?
@sales = Sale.where("NOT sale_status='new'").order("sale_id desc")
else
@sales = Sale.where("NOT sale_status='new' and shift_sale_id ='#{@shift.id}'").order("sale_id desc")
end
@sales = Kaminari.paginate_array(@sales).page(params[:page]).per(20)
else
sale = Sale.search(receipt_no,from,to)
sale = Sale.search(receipt_no,from,to,@shift)
if sale.count > 0
@sales = sale
@sales = Kaminari.paginate_array(@sales).page(params[:page]).per(20)
@@ -25,6 +35,12 @@ class Transactions::SalesController < ApplicationController
@receipt_no = receipt_no
@from = from
@to = to
if @shift.present?
@shift_from = @shift.shift_started_at.nil? ? '-' : @shift.shift_started_at.utc.getlocal.strftime("%e %b %I:%M%p")
@shift_to = @shift.shift_closed_at.nil? ? '-' : @shift.shift_closed_at.utc.getlocal.strftime("%e %b %I:%M%p")
@shift_data = @shift
end
# if receipt_no.nil? && search_date.nil?
# @sales = Sale.where("NOT sale_status = 'void' " ).order("sale_id desc").limit(500)
@@ -45,6 +61,24 @@ class Transactions::SalesController < ApplicationController
# end
# end
@sale_audits = []
@sale_item_audits = []
if @sales != 0
@sales.each do |sale|
sale_audit = SaleAudit.where("(action = 'SALEPAYMENT' or action = 'SALEVOID') and sale_id = ? and remark IS NOT NULL",sale.sale_id)
if !sale_audit.nil?
sale_audit.each do |audit|
@sale_audits.push({sale.sale_id => audit.remark})
end
end
sale_item_audit = SaleAudit.where("(action LIKE '%ITEM%') and sale_id = ?",sale.sale_id)
if !sale_item_audit.nil? && sale_item_audit.count > 0
@sale_item_audits.push({sale.sale_id => sale_item_audit.count})
end
end
end
respond_to do |format|
format.html # index.html.erb
format.json { render json: @sales }
@@ -129,6 +163,80 @@ class Transactions::SalesController < ApplicationController
end
end
# date range
PERIOD = {
"today" => 0,
"yesterday" => 1,
"this_week" => 2,
"last_week" => 3,
"last_7" => 4,
"this_month" => 5,
"last_month" => 6,
"last_30" => 7,
"this_year" => 8,
"last_year" => 9
}
def get_date_range_from_params
period_type = params[:period_type]
period = params[:period]
from = params[:from]
to = params[:to]
day_ref = Time.now.utc.getlocal
if from.present? && to.present?
f_date = DateTime.parse(from)
t_date = DateTime.parse(to)
f_time = Time.mktime(f_date.year,f_date.month,f_date.day,f_date.hour,f_date.min,f_date.sec)
t_time = Time.mktime(t_date.year,t_date.month,t_date.day,t_date.hour,t_date.min,t_date.sec)
from = f_time.beginning_of_day.utc.getlocal
to = t_time.end_of_day.utc.getlocal
else
case period.to_i
when PERIOD["today"]
from = day_ref.beginning_of_day.utc
to = day_ref.end_of_day.utc
when PERIOD["yesterday"]
from = (day_ref - 1.day).beginning_of_day.utc
to = (day_ref - 1.day).end_of_day.utc
when PERIOD["this_week"]
from = Time.now.beginning_of_week.utc
to = Time.now.utc
when PERIOD["last_week"]
from = (day_ref - 7.day).beginning_of_week.utc
to = (day_ref - 7.day).end_of_week.utc
when PERIOD["last_7"]
from = (day_ref - 7.day).utc
to = Time.now.utc
when PERIOD["this_month"]
from = Time.now.beginning_of_month.utc
to = Time.now.utc
when PERIOD["last_month"]
from = (day_ref - 1.month).beginning_of_month.utc
to = (day_ref - 1.month).end_of_month.utc
when PERIOD["last_30"]
from = (day_ref - 30.day).utc
to = Time.now.utc
when PERIOD["this_year"]
from = Time.now.beginning_of_year.utc
to = Time.now.utc
when PERIOD["last_year"]
from = (day_ref - 1.year).beginning_of_year.utc
to = (day_ref - 1.year).end_of_year.utc
end
end
return from, to
end
def check_user
if current_user.nil?
redirect_to root_path
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_transactions_sale

View File

@@ -1,6 +1,7 @@
class Transactions::ShiftSalesController < ApplicationController
load_and_authorize_resource except: [:create]
before_action :set_transactions_shift_sale, only: [:show, :edit, :update, :destroy]
before_action :check_user
def index
@@ -53,6 +54,12 @@ class Transactions::ShiftSalesController < ApplicationController
end
end
def check_user
if current_user.nil?
redirect_to root_path
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_transactions_shift_sale

View File

@@ -0,0 +1,28 @@
class Transactions::SurveysController < ApplicationController
def index
filter = params[:filter]
from = params[:from]
to = params[:to]
if filter.nil? && from.nil? && to.nil?
surveys = Survey.all
else
surveys = Survey.search(filter,from,to)
end
if !surveys.nil?
@surveys = Kaminari.paginate_array(surveys).page(params[:page]).per(20)
else
@surveys = []
end
@filter = filter
@from = from
@to = to
respond_to do |format|
format.html # index.html.erb
format.json { render json: @surveys }
end
end
end

View File

@@ -105,7 +105,7 @@ class Ability
can :show, :home
can :read, Order
can :update, Order
can :menage, Booking
can :manage, Booking
can :manage, OrderQueueStation
can :read, Sale
can :update, Sale

View File

@@ -12,7 +12,7 @@ class InventoryDefinition < ApplicationRecord
end
def self.find_product_in_inventory(item)
product = InventoryDefinition.find_by_item_code(item.product_code)
product = InventoryDefinition.find_by_item_code(item.item_instance_code)
if product.nil?
return false, nil
else
@@ -21,7 +21,7 @@ class InventoryDefinition < ApplicationRecord
end
def self.check_balance(item,inventory_definition) # item => saleItemOBj
stock = StockJournal.where('item_code=?', item.product_code).order('created_at desc').take
stock = StockJournal.where('item_code=?', item.item_instance_code).order('created_at desc').take
unless stock.nil?
modify_balance(item, stock, inventory_definition)
else

View File

@@ -1,7 +1,7 @@
class License
include HTTParty
base_uri "connect.smartsales.dev/api"
base_uri "connect.smartsales.asia/api"
attr_accessor :name, :address_1, :address_2, :township, :city, :country, :email, :phone, :fax, :logo, :subdomain,
:plan_activation_date, :plan_next_renewal_date, :plan_max_products,:plan_max_customers, :plan_active_connections,

View File

@@ -46,30 +46,98 @@ class Menu < ApplicationRecord
end
def self.import(file)
spreadsheet = Roo::Spreadsheet.open(file.path)
spreadsheet = open_spreadsheet(file)
sheet_count = spreadsheet.sheets.count-1
for i in 0..sheet_count do
header = spreadsheet.sheet(i).row(1)
sheet_name = spreadsheet.sheets[i]
spreadsheet = Roo::Excelx.new(file.path)
# Use the extension option if the extension is ambiguous.
spreadsheet = Roo::Spreadsheet.open(file.path, extension: :xlsx)
puts spreadsheet.info
header = spreadsheet.row(1)
(2..spreadsheet.last_row).each do |i|
row = Hash[[header,spreadsheet.row(i)].transpose]
menu = Menu.new
menu.name = row["name"]
menu.is_active = row["is_active"]
menu.valid_days = row["valid_days"]
menu.valid_time_from = row["valid_time_from"]
menu.valid_time_to = row["valid_time_to"]
menu.created_by = row["created_by"]
menu.save
(2..spreadsheet.sheet(i).last_row).each do |ii|
row = Hash[[header,spreadsheet.sheet(i).row(ii)].transpose]
if sheet_name == "Account"
# Account.create(id:row["id"], title: row["title"],account_type: row["account_type"],discount: row["discount"],point: row["point"],bonus: row["bonus"],rebate: row["rebate"])
account = Account.find_by_id(row["id"])
if account
Account.create(title: row["title"],account_type: row["account_type"],discount: row["discount"],point: row["point"],bonus: row["bonus"],rebate: row["rebate"])
else
Account.create(id:row["id"], title: row["title"],account_type: row["account_type"],discount: row["discount"],point: row["point"],bonus: row["bonus"],rebate: row["rebate"])
end
elsif sheet_name == "Item Set"
# ItemSet.create(id:row["id"], name: row[name], alt_name: row[alt_name], min_selectable_qty: row[min_selectable_qty], max_selectable_qty: row[max_selectable_qty])
item_set = ItemSet.find_by_id(row["id"])
if item_set
ItemSet.create( name: row[name], alt_name: row[alt_name], min_selectable_qty: row[min_selectable_qty], max_selectable_qty: row[max_selectable_qty])
else
ItemSet.create(id:row["id"], name: row[name], alt_name: row[alt_name], min_selectable_qty: row[min_selectable_qty], max_selectable_qty: row[max_selectable_qty])
end
elsif sheet_name == "Menu Item Options"
# MenuItemOption.create(id:row["id"], option_type: row["option_type"],name: row["name"],value: row["value"])
item_options = MenuItemOption.find_by_id(row["id"])
if item_options
MenuItemOption.create( option_type: row["option_type"],name: row["name"],value: row["value"])
else
MenuItemOption.create(id:row["id"], option_type: row["option_type"],name: row["name"],value: row["value"])
end
elsif sheet_name == "Menu Item Attributes"
# MenuItemAttribute.create(id:row["id"], attribute_type: row["attribute_type"],name: row["name"],value: row["value"])
item_attributes = MenuItemAttribute.find_by_id(row["id"])
if item_attributes
MenuItemAttribute.create( attribute_type: row["attribute_type"],name: row["name"],value: row["value"])
else
MenuItemAttribute.create(id:row["id"], attribute_type: row["attribute_type"],name: row["name"],value: row["value"])
end
elsif sheet_name == "Menu"
menu = Menu.find_by_id(row["id"])
if menu
Menu.create(name: row["name"], is_active: row["is_active"], valid_days: row["valid_days"],valid_time_from: row["valid_time_from"], valid_time_to: row["valid_time_to"], created_by: row["created_by"])
else
Menu.create(id:row["id"], name: row["name"], is_active: row["is_active"], valid_days: row["valid_days"],valid_time_from: row["valid_time_from"], valid_time_to: row["valid_time_to"], created_by: row["created_by"])
end
elsif sheet_name == "Menu Category"
# MenuCategory.create(id:row["id"], menu_id: row["menu_id"], code: row["code"], name: row["name"], alt_name: row["alt_name"], order_by: row["order_by"], created_by: row["created_by"], menu_category_id: row["menu_category_id"], is_available: row["is_available"])
menu_category = MenuCategory.find_by_id(row["id"])
if menu_category
MenuCategory.create(menu_id: row["menu_id"], code: row["code"], name: row["name"], alt_name: row["alt_name"], order_by: row["order_by"], created_by: row["created_by"], menu_category_id: row["menu_category_id"], is_available: row["is_available"])
else
MenuCategory.create(id:row["id"], menu_id: row["menu_id"], code: row["code"], name: row["name"], alt_name: row["alt_name"], order_by: row["order_by"], created_by: row["created_by"], menu_category_id: row["menu_category_id"], is_available: row["is_available"])
end
elsif sheet_name == "Menu Item"
# MenuItem.create(id:row["id"], item_code: row["item_code"], name: row["name"], alt_name: row["alt_name"], image_path: row["image_path"], description: row["description"], information: row["information"], unit: row["unit"], type: row["type"], menu_category_id: row["menu_category_id"], item_attributes: row["item_attributes"], item_options: row["item_options"], account_id: row["account_id"], min_qty: row["min_qty"], taxable: row["taxable"], is_sub_item: row["is_sub_item"], is_available: row["is_available"], created_by: row["created_by"])
menu_item = MenuItem.find_by_id(row["id"])
if menu_item
MenuItem.create(item_code: row["item_code"], name: row["name"], alt_name: row["alt_name"], image_path: row["image_path"], description: row["description"], information: row["information"], unit: row["unit"], type: row["type"], menu_category_id: row["menu_category_id"], item_attributes: JSON.parse(row["item_attributes"]), item_options: JSON.parse(row["item_options"]), account_id: row["account_id"], min_qty: row["min_qty"], taxable: row["taxable"], is_sub_item: row["is_sub_item"], is_available: row["is_available"], created_by: row["created_by"])
else
MenuItem.create(id:row["id"], item_code: row["item_code"], name: row["name"], alt_name: row["alt_name"], image_path: row["image_path"], description: row["description"], information: row["information"], unit: row["unit"], type: row["type"], menu_category_id: row["menu_category_id"], item_attributes: JSON.parse(row["item_attributes"]), item_options: JSON.parse(row["item_options"]), account_id: row["account_id"], min_qty: row["min_qty"], taxable: row["taxable"], is_sub_item: row["is_sub_item"], is_available: row["is_available"], created_by: row["created_by"])
end
elsif sheet_name == "Menu Item Instance"
# MenuItemInstance.create(id:row["id"], menu_item_id: row["menu_item_id"].to_i, item_instance_code: row["item_instance_code"], item_instance_name: row["item_instance_name"], item_attributes: row["item_attributes"], price: row["price"], is_on_promotion: row["is_on_promotion"], promotion_price: row["promotion_price"], is_available: row["is_available"], is_default: row["is_default"])
item_instance = MenuItemInstance.find_by_id(row["id"])
if item_instance
MenuItemInstance.create(menu_item_id: row["menu_item_id"].to_i, item_instance_code: row["item_instance_code"], item_instance_name: row["item_instance_name"], item_attributes: JSON.parse(row["item_attributes"]), price: row["price"], is_on_promotion: row["is_on_promotion"], promotion_price: row["promotion_price"], is_available: row["is_available"], is_default: row["is_default"])
else
MenuItemInstance.create(id:row["id"], menu_item_id: row["menu_item_id"].to_i, item_instance_code: row["item_instance_code"], item_instance_name: row["item_instance_name"], item_attributes: JSON.parse(row["item_attributes"]), price: row["price"], is_on_promotion: row["is_on_promotion"], promotion_price: row["promotion_price"], is_available: row["is_available"], is_default: row["is_default"])
end
elsif sheet_name == "Menu Instance Item Set"
# MenuInstanceItemSet.create(id:row["id"], item_set_id: row["item_set_id"], menu_item_instance_id: row["menu_item_instance_id"])
menu_instance_set = MenuInstanceItemSet.find_by_id(row["id"])
if menu_instance_set
MenuInstanceItemSet.create(item_set_id: row["item_set_id"], menu_item_instance_id: row["menu_item_instance_id"])
else
MenuInstanceItemSet.create(id:row["id"], item_set_id: row["item_set_id"], menu_item_instance_id: row["menu_item_instance_id"])
end
elsif sheet_name == "Menu Item Set"
# MenuItemSet.create(id:row["id"], item_set_id: row["item_set_id"], menu_item_id: row["menu_item_id"])
menu_item_set = MenuItemSet.find_by_id(row["id"])
if menu_item_set
MenuItemSet.create(item_set_id: row["item_set_id"], menu_item_id: row["menu_item_id"])
else
MenuItemSet.create(id:row["id"], item_set_id: row["item_set_id"], menu_item_id: row["menu_item_id"])
end
end
end
end
end
def self.open_spreadsheet(file)

View File

@@ -1,7 +1,7 @@
class MenuCategory < ApplicationRecord
# before_create :generate_menu_category_code
belongs_to :menu , counter_cache: true
belongs_to :menu
has_many :children, :class_name => "MenuCategory", foreign_key: "menu_category_id"
belongs_to :parent, :class_name => "MenuCategory", foreign_key: "menu_category_id", optional: true
has_many :menu_items

View File

@@ -262,11 +262,11 @@ class Printer::ReceiptPrinter < Printer::PrinterWorker
def print_receipt_pdf(filename,receipt_no,print_copies,printer_name)
count = print_copies.to_i
# if count == 0
# self.print("public"+filename, printer_name)
# self.print(filename, printer_name)
# else
begin
if count == 1
self.print("public"+filename, printer_name)
self.print(filename, printer_name)
else
filename = "public/receipts/receipt_bill_#{receipt_no}_#{count}.pdf"
self.print(filename, printer_name)

File diff suppressed because it is too large Load Diff

View File

@@ -38,7 +38,8 @@ class SaleItem < ApplicationRecord
sale_item.product_alt_name = item.product_alt_name
sale_item.account_id = item.account_id
sale_item.status = type
if type == "foc" || type == "promotion" || type == "void"
sale_item.remark = type
if type == "foc" || type == "promotion" || type == "void" || type == "waste" || type == "spoile"
sale_item.qty = qty * (-1)
else
sale_item.qty = qty

View File

@@ -208,8 +208,7 @@ class SalePayment < ApplicationRecord
self.outstanding_amount = self.sale.grand_total.to_f - self.received_amount.to_f
self.payment_status = "paid"
payment_method = self.save!
sale_update_payment_status(self.received_amount)
sale_update_payment_status(self.received_amount)
return payment_status
end
@@ -325,7 +324,7 @@ class SalePayment < ApplicationRecord
sObj = Sale.find(self.sale_id)
is_credit = 0
is_foc = 0
is_cash = false
method_status = false
sObj.sale_payments.each do |spay|
all_received_amount += spay.payment_amount.to_f
if spay.payment_method == "creditnote"
@@ -334,12 +333,12 @@ class SalePayment < ApplicationRecord
if spay.payment_method == "foc"
is_foc = 1
end
if spay.payment_method.to_s == "cash"
is_cash = true
if spay.payment_method == "cash" || spay.payment_method == "foc" || spay.payment_method == "creditnote"
method_status = true
end
end
if (self.sale.grand_total <= all_received_amount) && is_cash
if (self.sale.grand_total <= all_received_amount) && method_status
if is_credit == 0
self.sale.payment_status = "paid"
else
@@ -386,7 +385,7 @@ class SalePayment < ApplicationRecord
elsif paid_amount.to_f > 0 #|| paid_amount != "0.0"
table_update_status(sObj)
update_shift
elsif is_cash && paid_amount.to_f == 0
elsif method_status && paid_amount.to_f == 0
table_update_status(sObj)
update_shift
end

View File

@@ -8,7 +8,7 @@ class StockJournal < ApplicationRecord
balance = calculate_balance(balance, item.qty)
journal = StockJournal.new
journal.item_code = item.product_code
journal.item_code = item.item_instance_code
journal.inventory_definition_id = inventory_definition.id
journal.debit = item.qty
journal.balance = balance
@@ -36,12 +36,16 @@ class StockJournal < ApplicationRecord
journal.save
end
def self.inventory_balances(today,from,to)
def self.inventory_balances(today,from,to,from_time,to_time)
if !from.nil? && !to.nil?
query = StockJournal.select("mii.item_instance_name as item_instance_name,balance")
.joins("join menu_item_instances mii on mii.item_instance_code=stock_journals.item_code")
.where("stock_journals.created_at between '#{from}' and '#{to}'")
.group("mii.item_instance_name")
if !from_time.nil? && !to_time.nil?
query = query.where("DATE_FORMAT(CONVERT_TZ(stock_journals.created_at,'+00:00','+06:30'),'%Y-%m-%d') between '#{from}' and '#{to}'")
else
query = query.where("DATE_FORMAT(CONVERT_TZ(stock_journals.created_at,'+00:00','+06:30'),'%Y-%m-%d') between '#{from}' and '#{to}' and DATE_FORMAT(CONVERT_TZ(stock_journals.created_at,'+00:00','+06:30'),'%H:%M') between '#{from_time}' and '#{to_time}'")
end
query = query.group("mii.item_instance_name")
.order("mii.item_instance_name ASC")
else
query = StockJournal.select("mii.item_instance_name as item_instance_name,balance")

View File

@@ -1,2 +1,17 @@
class Survey < ApplicationRecord
def self.search(filter,from,to)
if filter.blank?
keyword = ''
else
keyword = "dining_name LIKE ?","%#{filter}%"
end
if from.present? && to.present?
survey = Survey.where("DATE_FORMAT(created_at,'%d-%m-%Y') >= ?" + " AND DATE_FORMAT(created_at,'%d-%m-%Y') <= ?", from,to)
query = survey.where(keyword)
else
where("dining_name LIKE ?", "%#{filter}%")
end
end
end

View File

@@ -110,7 +110,7 @@ class OrderItemPdf < Prawn::Document
end
if alt_name
if !(order_item.alt_name).empty?
if order_item.alt_name
move_down 4
font("public/fonts/NotoSansCJKtc-Regular.ttf") do
text "(#{order_item.alt_name})", :size => self.item_font_size,:align => :left, :inline_format => true

View File

@@ -110,7 +110,7 @@ class OrderItemSlimPdf < Prawn::Document
end
# if alt_name
# if !(order_item_slim.alt_name).empty?
# if order_item_slim.alt_name
# move_down 1
# font("public/fonts/NotoSansCJKtc-Regular.ttf") do
# text "(#{order_item_slim.alt_name})", :size => self.item_font_size,:align => :left, :inline_format => true

View File

@@ -109,7 +109,7 @@ class OrderSetItemPdf < Prawn::Document
end
if alt_name
if !(order_set_item.alt_name).empty?
if order_set_item.alt_name
move_down 4
font("public/fonts/NotoSansCJKtc-Regular.ttf") do
text "(#{order_set_item.alt_name})", :size => self.item_font_size,:align => :left, :inline_format => true

View File

@@ -68,16 +68,48 @@
<!-- Date range for dashboard -->
<div class="row clearfix">
<div class="col-lg-4 col-md-4 col-sm-4">
<%
if !@from.nil?
from_date = DateTime.parse(@from).utc.getlocal.strftime("%d-%m-%Y")
else
from_date = Time.now.utc.getlocal.strftime('%d-%m-%Y')
end
if !@to.nil?
to_date = DateTime.parse(@to).utc.getlocal.strftime("%d-%m-%Y")
else
to_date = Time.now.utc.getlocal.strftime('%d-%m-%Y')
end
if !@from_time.nil?
from_time = @from_time
else
from_time = ''
end
if !@to_time.nil?
to_time = @to_time
else
to_time = ''
end
%>
<div class="col-lg-3 col-md-3 col-sm-3">
<label class="font-14"><%= t("views.right_panel.detail.from") %></label>
<input data-behaviour='datepicker' class="form-control datepicker" name="from" id="from" type="text" value="<%= Time.now.utc.strftime('%d-%m-%Y') %>" placeholder="From date" style="height: 35px;">
<input data-behaviour='datepicker' class="form-control datepicker" name="from" id="from" type="text" value="<%= from_date %>" placeholder="From date" style="height: 35px;">
<span id="fromErr" style="color:red;"></span>
</div>
<div class="col-lg-4 col-md-4 col-sm-4">
<div class="col-lg-3 col-md-3 col-sm-3">
<label class="font-14"><%= t("views.right_panel.detail.to") %></label>
<input data-behaviour='datepicker' class="form-control datepicker" name="to" id="to" type="text" value="<%= Time.now.utc.strftime('%d-%m-%Y') %>" placeholder="To date" style="height: 35px;">
<input data-behaviour='datepicker' class="form-control datepicker" name="to" id="to" type="text" value="<%= to_date %>" placeholder="To date" style="height: 35px;">
<span id="toErr" style="color:red;"></span>
</div>
<div class="col-lg-2 col-md-2 col-sm-2">
<label class="font-14"><%= t("views.right_panel.detail.from_time") %></label>
<input data-behaviour='timepicker' class="form-control timepicker" name="from_time" id="from_time" type="text" value="<%= from_time %>" placeholder="From Time" style="height: 35px;">
<span id="from_timeErr" style="color:red;"></span>
</div>
<div class="col-lg-2 col-md-2 col-sm-2">
<label class="font-14"><%= t("views.right_panel.detail.to_time") %></label>
<input data-behaviour='timepicker' class="form-control timepicker" name="to_time" id="to_time" type="text" value="<%= to_time %>" placeholder="To time" style="height: 35px;">
<span id="to_timeErr" style="color:red;"></span>
</div>
<div class="col-lg-2 col-md-2 col-sm-2">
<label></label><br>
<input type="button" value="Generate" class='btn btn-primary btn_generate'>
@@ -340,21 +372,53 @@
$('.btn_generate').on('click',function(){
var from = $("#from").val();
var to = $("#to").val();
var from_time = $("#from_time").val();
var to_time = $("#to_time").val();
if(check(from,to,from_time,to_time)){
var params = '?';
if((from!='' && to!='') && (from_time!='' && to_time!='')){
params += 'from='+from+'&to='+to+'&from_time='+from_time+'&to_time='+to_time;
}else{
params += 'from='+from+'&to='+to;
}
window.location.href = '/dashboard'+params;
}
});
function check(from,to,from_time,to_time){
var status = true;
if((from=='') && (to=='')){
status = false;
$('#fromErr').html("can't be blank");
$('#toErr').html("can't be blank");
}else if((from!='') && (to=='')){
status = false;
$('#fromErr').html("");
$('#toErr').html("can't be blank");
}else if((from=='') && (to!='')){
status = false;
$('#fromErr').html("can't be blank");
$('#toErr').html("");
}else{
status = true;
$('#fromErr').html("");
$('#toErr').html("");
}
if((from!='') && (to!='')){
window.location.href = '/dashboard?from='+from+'&to='+to;
if(((from_time=='') && (to_time=='')) || ((from_time!='') && (to_time!=''))){
status = true;
$('#from_timeErr').html("");
$('#to_timeErr').html("");
}else if((from_time!='') && (to_time=='')){
status = false;
$('#from_timeErr').html("");
$('#to_timeErr').html("can't be blank");
}else if((from_time=='') && (to_time!='')){
status = false;
$('#from_timeErr').html("can't be blank");
$('#to_timeErr').html("");
}
});
return status;
}
</script>

5
app/views/layouts/_left_sidebar.html.erb Executable file → Normal file
View File

@@ -109,6 +109,11 @@
<a href="<%= transactions_shift_sales_path %>"><%= (t :shiftsale) %></a>
</li>
<% end %>
<% if can? :menage, Survey %>
<li>
<a href="<%= transactions_surveys_path %>"><%= t("views.right_panel.detail.survey") %></a>
</li>
<% end %>
</ul>
</li>
<% if can? :index, :dailysale %>

View File

@@ -112,7 +112,10 @@ $(document).ready(function(){
var remarks = $("textarea[name='remarks']").val();
var order_items_id = $(this).attr('data-id');
var params = { 'order_items_id': order_items_id, 'qty_weight': qty_weight, 'remarks': remarks }
var booking_id = '<%= @booking.booking_id %>';
var booking_id = '';
<% if !@booking.nil? %>
booking_id = '<%= @booking.booking_id %>';
<% end %>
$.ajax({
type: 'POST',
@@ -144,7 +147,10 @@ $(document).ready(function(){
});
$('#back').on('click', function () {
var booking_id = '<%= @booking.booking_id %>';
var booking_id = '';
<% if !@booking.nil? %>
booking_id = '<%= @booking.booking_id %>';
<% end %>
<% if !@link_type.nil? %>
<% if @link_type == 'oqs' %>
window.location.href = '/oqs';

View File

@@ -35,6 +35,7 @@
<%end%>
</ul>
</li>
<div id="menu-slimscroll" data-height="0">
<ul class="nav nav-tabs flex-column category_list" role="tablist" id="ul-navbar">
<li class="nav-item product" data-ref="<%= origami_get_all_product_path %>">
<a class="nav-link" data-toggle="tab" href="" role="tab">Products</a>
@@ -80,14 +81,15 @@
<% end %>
<%end %>
</ul>
</div>
</div>
<div class="col-md-7 col-lg-7 col-sm-7 m-t-10" >
<div class="card">
<div class="card-block">
<div id="custom-slimscroll">
<div class="card-block" style="">
<div class="card-text" id="custom-slimscroll">
<div class="card-columns custom-card-columns menu_items_list" style="column-gap: 0.5rem;">
<!-- append data -->
<% @menu.each do |menu| %>
@@ -199,7 +201,7 @@
</div>
<div class="card-block">
<div class="card-text" id="order-detail-slimscroll" data-height="180">
<div class="card-text" id="order-detail-slimscroll" data-height="140">
<table class="table table-striped summary-items" id="order-items-table" >
<thead>
<tr>

View File

@@ -22,7 +22,7 @@
<div class="icon" >
<i class="material-icons">arrow_forward</i>
</div>
<div class="text font-20 m-l-5" style="line-height: 80px;">Quick Service</div>
<div class="text font-20 m-l-5" style="line-height: 80px;"><%= t :quick_service %></div>
</div>
</div>
<div class="col-lg-3 col-md-3 col-sm-4 col-xs-12 cashier_view">
@@ -30,7 +30,7 @@
<div class="icon" >
<i class="material-icons">arrow_forward</i>
</div>
<div class="text font-20 m-l-5" style="line-height: 80px;">Cashier</div>
<div class="text font-20 m-l-5" style="line-height: 80px;"><%= t :dine_in_order %></div>
</div>
</div>
</div>

View File

@@ -414,7 +414,7 @@ var cashier_type = "<%= @cashier_type %>";
var sub_total = $('#order-sub-total').text();
var ajax_url = "/origami/" + sale_id + "/discount";
var params = { 'sale_id': sale_id, 'sub_total': sub_total, 'discount_items': discount_items, 'overall_discount': overall_discount };
var params = { 'cashier_type' : cashier_type,'sale_id': sale_id, 'sub_total': sub_total, 'discount_items': discount_items, 'overall_discount': overall_discount };
$.ajax({
type: "POST",
@@ -465,7 +465,7 @@ var cashier_type = "<%= @cashier_type %>";
}
}
var params = { 'sale_id': sale_id, 'discount_items': JSON.stringify(discount_items) };
var params = { 'cashier_type': cashier_type,'sale_id': sale_id, 'discount_items': JSON.stringify(discount_items) };
$.ajax({
type: "POST",
url: "/origami/" + sale_id + "/remove_discount_items",
@@ -496,7 +496,7 @@ var cashier_type = "<%= @cashier_type %>";
var sale_id = $('#sale-id').text();
$.ajax({
type: "GET",
url: "/origami/" + sale_id + "/remove_all_discount",
url: "/origami/" + sale_id + "/" + cashier_type + "/remove_all_discount",
success: function(result){
swal({
title: "Information!",
@@ -532,7 +532,7 @@ var cashier_type = "<%= @cashier_type %>";
// var params = {'sale_id':sale_id, 'sub_total':sub_total, 'account_types':account_types };
var params = {'sale_id':sale_id, 'sub_total':sub_total };
var params = {'cashier_type': cashier_type,'sale_id':sale_id, 'sub_total':sub_total };
$.ajax({
type: "POST",

View File

@@ -488,6 +488,11 @@
<button type="button" class="btn btn-block bg-blue waves-effect" id='edit' <%= (can? :edit, :sale_edit)? ' ': 'disabled=' %> active="true">Edit</button>
<button type="button" class="btn btn-block bg-blue waves-effect" data-toggle="modal" data-target="#voidModal" <%= (can? :overall_void, :void)? ' ': 'disabled=' %> > Void</button>
<% end %>
<% if current_login_employee.role != "waiter" %>
<button type="button" class="btn btn-block bg-blue waves-effect" data-toggle="modal" data-target="#waste_spoileModal" > Waste & Spoile</button>
<% end %>
<button type="button" id="discount" class="btn btn-block bg-blue waves-effect" <%= (can? :index, :discount)? ' ': 'disabled=' %> active="true">Discount</button>
<button type="button" id="other-charges" class="btn btn-block bg-blue waves-effect">Charges</button>
@@ -498,15 +503,13 @@
<% end %>
<% if current_login_employee.role != "waiter" %>
<!-- first bill not used in cloud -->
<% if ENV["SERVER_MODE"] == "cloud" %>
<button type="button" id="first_bill" class="btn btn-block bg-blue waves-effect">First Bill</button>
<% else %>
<%if @membership.discount && @obj_sale.customer.membership_id %>
<button type="button" class="btn btn-block bg-blue waves-effect" data-toggle="modal" data-target="#paymentModal">First Bill</button>
<%else%>
<button type="button" id="first_bill" class="btn btn-block bg-blue waves-effect">First Bill</button>
<%end%>
<% end %>
<button type="button" id="pay" class="btn btn-block bg-blue waves-effect">Pay</button>
<% end %>
<% end %>
@@ -522,30 +525,31 @@
<span class="hidden" id="member_discount"><%= @membership.discount%></span>
<span class="hidden" id="membership_id"><%= @obj_sale.customer.membership_id rescue 0%></span>
<div class="modal fade" id="paymentModal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="paymentModalLabel">Choose Payment Method</h4>
</div>
<div class="modal-body">
<select class="form-control show-tick payment_method" multiple="true" id="payment_method" >
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="paymentModalLabel">Choose Payment Method</h4>
</div>
<div class="modal-body">
<!-- <select class="form-control show-tick payment_method" multiple="true" id="payment_method" > -->
<!-- <option value="Cash">Cash</option> -->
<option value="Credit">Credit</option>
<% @payment_methods.each do |pay| %>
<option value="<%= pay.payment_method %>">
<%= pay.payment_method %>
</option>
<%end %>
<button class='btn waves-effect payment_btn green' data-type='Credit' data-value='Credit'>Credit</button>
<% @payment_methods.each do |pay| %>
<!-- <option value="<%= pay.payment_method %>">
<%= pay.payment_method %>
</option> -->
<button class='btn btn-lg waves-effect payment_btn green' data-type='<%= pay.payment_method %>' data-value='<%= pay.payment_method %>'><%= pay.payment_method %></button>
<%end %>
</select>
</div>
<div class="modal-footer p-r-30">
<button type="button" class="btn btn-link btn-danger waves-effect" data-dismiss="modal">CLOSE</button>
<!-- </select> -->
</div>
<div class="modal-footer p-r-30">
<button type="button" class="btn btn-link btn-danger waves-effect" data-dismiss="modal">CLOSE</button>
&nbsp; &nbsp;
<button type="button" class="btn btn-link bg-blue waves-effect choose_payment">SAVE</button>
</div>
</div>
<button type="button" class="btn btn-link bg-blue waves-effect choose_payment">SAVE</button>
</div>
</div>
</div>
</div>
</div>
</div>
@@ -570,6 +574,32 @@
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal fade" id="waste_spoileModal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="waste_spoileModalLabel">Are you sure Waste or Spoile ?</h4>
</div>
<div class="modal-body">
<div class="row p-r-20">
<div class="col-md-3">
<button type="button" class="btn btn-lg bg-red waves-effect " data-status="waste" value="waste" id="btn_waste" onclick="waste_and_spoilage('waste')"><strong>Waste</strong></button>
</div>
<div class="col-md-3">
<button type="button" class="btn btn-lg bg-red waves-effect " data-status="spoile" value="spoile" id="btn_spoile" onclick="waste_and_spoilage('spoile')"><strong>Spoile</strong></button>
</div>
<div class="col-md-3">
<button type="button" class="btn btn-lg bg-blue waves-effect" data-dismiss="modal"><strong>CLOSE</strong></button>
</div>
</div>
</div>
<div class="modal-footer ">
</div>
</div>
</div>
@@ -726,10 +756,10 @@
createReceiptNoInFirstBillData(receipt_no,"");
// For Server Print - from jade
//if ($("#server_mode").val() == "cloud") {
if ($("#server_mode").val() == "cloud") {
code2lab.printFile(result.filepath.substr(6), result.printer_url);
// }
}
// console.log(result);
// code2lab.printBill(result.filepath, result.printer_model, result.printer_url);
location.reload();
@@ -737,11 +767,27 @@
});
});
// click select option icon for add
$(document).on('click', '.payment_btn', function(event){
active = $(this).hasClass('selected-payment');
value = $(this).data('value');
type = $(this).data('type');
group = $(this).data('group');
payments = $(".payment_btn");
if (active) {
$(this).removeClass('selected-payment');
}else{
$(this).addClass('selected-payment');
}
}); //End selecct attribute buttom
$(".choose_payment").on('click', function () {
$( "#loading_wrapper").show();
var sale_id = $('#sale_id').val();
type = $('.payment_method').val();
// type = $('.payment_method').val();
type = get_selected_attributes('selected-payment');
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) {
calculate_member_discount(sale_id,"Card");
@@ -759,7 +805,11 @@
receipt_no = ($("#receipt_no").html()).trim();
if((receipt_no!=undefined) && (receipt_no!=""))
createReceiptNoInFirstBillData(receipt_no,type);
location.reload();
// For Server Print - from jade
if ($("#server_mode").val() == "cloud") {
code2lab.printFile(result.filepath.substr(6), result.printer_url);
}
location.reload();
}
});
});
@@ -809,7 +859,7 @@
//split bill process
$('#split_bills').click(function(){
var dining_id = "<%= @dining.id %>";
window.location.href = '/origami/table/' + dining_id + "/split_bills";
window.location.href = '/origami/table/' + dining_id + "/" + cashier_type +"/split_bills";
});
$('#move').on('click', function () {
@@ -920,8 +970,12 @@
type: 'POST',
url: ajax_url,
data: "remark="+ remark + "&sale_id=" + sale_id,
success: function () {
window.location.href = '/origami/';
success: function (result) {
// For Server Print - from jade
if ($("#server_mode").val() == "cloud") {
code2lab.printFile(result.filepath.substr(6), result.printer_url);
}
window.location.href = '/origami/';
}
});
}
@@ -979,4 +1033,48 @@
window.location.href = '/oqs/'+ assigned_order_item_id + "/edit/"+dining_id;
}
});
// Get Selected Class
function get_selected_attributes(selected_class) {
var item_row = $('.'+selected_class);
var attribute_arr = [];
$(item_row).each(function(i){
value = $(item_row[i]).attr('data-value');
str = value;
attribute_arr.push(str);
});
return attribute_arr;
}
function waste_and_spoilage(remark) {
swal({
title: "Alert",
text: "Are you sure want to " + remark +" ?",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "Yes, " +remark+ " it!",
closeOnConfirm: false
}, function (isConfirm) {
if (isConfirm) {
var sale_id = "<%= @obj_sale.sale_id rescue "" %>"
var url = "/origami/sale/" + sale_id + '/cashier/waste_and_spoilage';
console.log(url)
$.ajax({
type: 'POST',
url: url,
data: "remark="+ remark + "&sale_id=" + sale_id,
success: function (result) {
console.log(result)
// For Server Print - from jade
// if ($("#server_mode").val() == "cloud") {
// code2lab.printFile(result.filepath.substr(6), result.printer_url);
// }
// window.location.href = '/origami/';
}
});
}
});
}
</script>

View File

@@ -308,7 +308,7 @@ var cashier_type = "<%= @cashier_type %>";
var other_charges_items = JSON.stringify(get_other_item_rows());
var ajax_url = "/origami/" + sale_id + "/other_charges";
var params = { 'sale_id': sale_id, 'sub_total': sub_total, 'other_charges_items': other_charges_items };
var params = { 'cashier_type' : cashier_type,'sale_id': sale_id, 'sub_total': sub_total, 'other_charges_items': other_charges_items };
$.ajax({
type: "POST",

View File

@@ -100,10 +100,10 @@
<td class="charges-name"><strong>Tax
(<% @i = 0
@account_arr.each do |ct| %>
<%=ct.name%>
<% if @account_arr.count != @i+1%>
+ <% @i =+1 %>
<%end%>
<%=ct.name%>
<% if @account_arr.count != @i+1%>
+ <% @i =+1 %>
<%end%>
<%end %>)
</strong></td>
<td class="item-attr"><strong><span><%= number_with_precision(@sale_data.total_tax, precision: precision.to_i ) rescue number_with_precision(0, precision: precision.to_i )%></span></strong></td>
@@ -420,11 +420,11 @@
</div>
<div class="modal-footer ">
<div class="row m-b-10 m-r-30">
<% if ENV["SERVER_MODE"] != 'cloud' %>
<div class="col-md-5 m-r-20">
<button type="button" class="btn btn-link bg-red waves-effect print_receipt">Print</button>
</div>
<% end %>
<div class="col-md-5">
<button type="button" class="btn btn-link bg-blue waves-effect btn_pdf_close" data-dismiss="modal">CLOSE</button>
</div>
@@ -445,6 +445,17 @@
<div class="modal-body">
<input type="hidden" name="paypar_account_no" id="paypar_account_no" />
<input type="hidden" name="qr_code" id="qr_code" />
<div class="row text-center m-t-20">
<% if !@customer_lists.nil? %>
<% @customer_lists.each do |cus| %>
<% if cus.customer_id != @customer.id %>
<div class="col-lg-6 col-md-6 col-sm-6 col-xs-6">
<button type="button" class="btn btn-lg btn-link bg-primary waves-effect btn_customer_assign" data-id='<%= cus.customer_id %>'><%= cus.name %></button>
</div>
<% end %>
<% end %>
<% end %>
</div>
<div class="row text-center m-t-20">
<div class="col-lg-6 col-md-6 col-sm-6 col-xs-6">
<button type="button" class="btn btn-lg btn-link bg-primary waves-effect btn_member">Card Member</button>
@@ -486,9 +497,9 @@ var customer_name = "<%= @customer.name %>";
$(document).ready(function(){
//start customer modal popup
if((cashier_type=='quick_service') && (customer_id!=undefined) && (customer_id!=null) && (customer_id!="")){
if((customer_id == 'CUS-000000000001') && (customer_name == 'WALK-IN')){
// if((customer_id == 'CUS-000000000001') && (customer_name == 'WALK-IN')){
$("#is_memberModal").modal({show : true, backdrop: false, keyboard : false});
}
// }
}
/* start check first bill or not*/
@@ -623,7 +634,7 @@ var customer_name = "<%= @customer.name %>";
$("#sale_receipt_no").val(result.receipt_no);
$("#filename").val(result.filename);
$("#printer_name").val(result.printer_name);
$("#receipt_pdf").attr("src", result.filename);
$("#receipt_pdf").attr("src", result.filename.substring(6));
$("#pdfModal").modal({show : true, backdrop : false, keyboard : false});
$("#pdfModalLabel").text("Sale Completed");
$("#changed_amount").text("");
@@ -710,8 +721,12 @@ var customer_name = "<%= @customer.name %>";
type: 'POST',
url: ajax_url,
data: "remark="+ remark + "&sale_id=" + sale_id,
success: function () {
success: function (result) {result
customer_display_view(null,"reload");
// For Server Print - from jade
if ($("#server_mode").val() == "cloud") {
code2lab.printFile(result.filepath.substr(6), result.printer_url);
}
if (cashier_type=="cashier") {
window.location.href = '/origami';
}else{
@@ -922,6 +937,10 @@ var customer_name = "<%= @customer.name %>";
title: "Information!",
text: 'Thank You !',
}, function () {
// For Server Print - from jade
if ($("#server_mode").val() == "cloud") {
code2lab.printFile(result.filepath.substr(6), result.printer_url);
}
if (cashier_type=="cashier") {
window.location.href = '/origami';
}else{
@@ -997,6 +1016,10 @@ var customer_name = "<%= @customer.name %>";
data: params,
success:function(result){
console.log(result);
// For Server Print - from jade
if ($("#server_mode").val() == "cloud") {
code2lab.printFile(result.filepath.substr(6), result.printer_url);
}
if (cashier_type=="cashier") {
window.location.href = '/origami';
}else{
@@ -1130,4 +1153,11 @@ var customer_name = "<%= @customer.name %>";
$("#sxModal .btn_cancel").on('click',function(){
$("#sxModal").hide();
});
$(".btn_customer_assign").on('click', function(){
var customer_id = $(this).attr('data-id');
var customer_name = $(this).text();
var sale_id = $("#sale_id").text() || 0;
update_sale("", customer_id, customer_name, sale_id);
});
</script>

View File

@@ -465,15 +465,15 @@
<% end %>
<% if current_login_employee.role != "waiter" %>
<!-- first bill not used in cloud -->
<% if ENV["SERVER_MODE"] == "cloud" %>
<!--<% if ENV["SERVER_MODE"] == "cloud" %>
<button type="button" id="first_bill" class="btn btn-block bg-blue waves-effect">First Bill</button>
<% else %>
<% else %>-->
<%if @membership.discount && @obj_sale.customer.membership_id %>
<button type="button" class="btn btn-block bg-blue waves-effect" data-toggle="modal" data-target="#paymentModal">First Bill</button>
<%else%>
<button type="button" id="first_bill" class="btn btn-block bg-blue waves-effect">First Bill</button>
<%end%>
<%end%>
<!-- <%end%>-->
<button type="button" id="pay" class="btn bg-blue btn-block">Pay</button>
<% end %>
<!-- <button type="button" id="void" class="btn bg-blue btn-block" > Void </button> -->
@@ -489,16 +489,13 @@
<h4 class="modal-title" id="paymentModalLabel">Choose Payment</h4>
</div>
<div class="modal-body">
<select class="form-control show-tick payment_method" multiple="true" id="payment_method" >
<option value="Cash">Cash</option>
<option value="Credit">Credit</option>
<button class='btn waves-effect payment_btn green' data-type='Credit' data-value='Credit'>Credit</button>
<% @payment_methods.each do |pay| %>
<option value="<%= pay.payment_method %>">
<%= pay.payment_method %>
</option>
<%end %>
</select>
<!-- <option value="<%= pay.payment_method %>">
<%= pay.payment_method %>
</option> -->
<button class='btn btn-lg waves-effect payment_btn green' data-type='<%= pay.payment_method %>' data-value='<%= pay.payment_method %>'><%= pay.payment_method %></button>
<%end %>
</div>
<div class="modal-footer p-r-30">
<button type="button" class="btn btn-link btn-danger waves-effect" data-dismiss="modal">CLOSE</button>
@@ -680,6 +677,21 @@ $(document).ready(function(){
});
// click select option icon for add
$(document).on('click', '.payment_btn', function(event){
active = $(this).hasClass('selected-payment');
value = $(this).data('value');
type = $(this).data('type');
group = $(this).data('group');
payments = $(".payment_btn");
if (active) {
$(this).removeClass('selected-payment');
}else{
$(this).addClass('selected-payment');
}
}); //End selecct attribute buttom
// Print for first bill
$("#first_bill").on('click', function(){
var sale_id = $('#sale_id').val();
@@ -691,7 +703,10 @@ $("#first_bill").on('click', function(){
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();
}
});
@@ -701,7 +716,9 @@ $(".choose_payment").on('click', function () {
$( "#loading_wrapper").show();
var sale_id = $('#sale_id').val();
type = $('.payment_method').val();
type = get_selected_attributes('selected-payment');
// type = $('.payment_method').val();
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) {
calculate_member_discount(sale_id,"Card");
@@ -719,6 +736,12 @@ $(".choose_payment").on('click', function () {
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") {
code2lab.printFile(result.filepath.substr(6), result.printer_url);
}
location.reload();
}
});
@@ -776,7 +799,7 @@ $('#request_bills').click(function() {
//split bill process
$('#split_bills').click(function(){
var dining_id = "<%= @room.id %>";
window.location.href = '/origami/room/' + dining_id + "/split_bills";
window.location.href = '/origami/room/' + dining_id + "/" + cashier_type + "/split_bills";
});
$('#move').on('click',function(){
@@ -945,4 +968,15 @@ $('#add_invoice').on('click',function(){
window.location.href = '/oqs/'+ assigned_order_item_id + "/edit/"+dining_id;
}
});
// Get Selected Class
function get_selected_attributes(selected_class) {
var item_row = $('.'+selected_class);
var attribute_arr = [];
$(item_row).each(function(i){
value = $(item_row[i]).attr('data-value');
str = value;
attribute_arr.push(str);
});
return attribute_arr;
}
</script>

View File

@@ -58,7 +58,7 @@
</div>
</div>
<script>
var type = '<%= @type %>';
var cashier_type = '<%= @cashier_type %>';
$('#close_cashier').on('click',function(){
var amount = $('#closing_balance_amount').val();
var shift_id = "<%= @shift.id rescue ""%>"
@@ -73,7 +73,7 @@
});
$('#back').on('click',function(){
if(type!='quick_service'){
if(cashier_type!='quick_service'){
window.location.href = '/origami';
}else{
window.location.href = '/origami/quick_service';
@@ -95,7 +95,7 @@
closeOnCancel: false,
allowOutsideClick: false
}, function () {
window.location.href = '/origami/shift/'+type+'/close';
window.location.href = '/origami/shift/'+cashier_type+'/close';
});
}
});
@@ -120,7 +120,7 @@
closeOnCancel: false,
allowOutsideClick: false
}, function () {
window.location.href = '/origami/shift/'+type+'/close';
window.location.href = '/origami/shift/'+cashier_type+'/close';
});
}
}
@@ -184,7 +184,7 @@
closeOnCancel: false,
allowOutsideClick: false
}, function () {
window.location.href = '/origami/shift/close';
window.location.href = '/origami/shift/'+cashier_type+'/close';
});
// reqCBBankAlipaySettlement();
}

View File

@@ -333,6 +333,7 @@
<script type="text/javascript">
var split_sale_id = "";
var split_receipt_no = "";
var cashier_type = '<%= @cashier_type %>';
$(document).ready(function(){
$('#back').on('click',function(){
backToOrigami();
@@ -658,7 +659,7 @@ function orderItemSplitBillProcess(cnt_items){
type: "POST",
url: ajax_url,
dataType: 'JSON',
data: {'dining_id' : dining_id, 'type': type, 'customer_id' : customer_id, 'booking_id' : booking_id, 'order_ids' : order_ids, 'arr_order_ids': JSON.stringify(arr_order_ids), 'order_items' : JSON.stringify(order_items), 'orders' : ''},
data: {'cashier_type':cashier_type,'dining_id' : dining_id, 'type': type, 'customer_id' : customer_id, 'booking_id' : booking_id, 'order_ids' : order_ids, 'arr_order_ids': JSON.stringify(arr_order_ids), 'order_items' : JSON.stringify(order_items), 'orders' : ''},
success: function (result) {
if (!result.status) {
swal("Information!", result.error_message);
@@ -691,7 +692,7 @@ function orderSplitBillProcess(cnt_orders){
type: "POST",
url: ajax_url,
dataType: 'JSON',
data: {'dining_id' : dining_id, 'type': type, 'customer_id' : customer_id, 'booking_id' : booking_id, 'order_ids' : [], 'order_items' : '', 'orders' : JSON.stringify(orders), 'arr_order_ids': []},
data: {'cashier_type':cashier_type,'dining_id' : dining_id, 'type': type, 'customer_id' : customer_id, 'booking_id' : booking_id, 'order_ids' : [], 'order_items' : '', 'orders' : JSON.stringify(orders), 'arr_order_ids': []},
success: function (result) {
if (!result.status) {
swal("Information!", result.error_message);

View File

@@ -156,6 +156,15 @@
<!-- Column Three -->
<div class="col-lg-1 col-md-1 col-sm-1">
<button id="back" type="button" class="btn btn-block btn-lg bg-default"> <i class="material-icons">reply</i> <%= t("views.btn.back") %>
<% if ENV["SERVER_MODE"] == "cloud" %>
<button type="button" id="first_bill" class="btn btn-block bg-blue waves-effect">First Bill</button>
<% else %>
<%if @membership.discount && @sale.customer.membership_id %>
<button type="button" class="btn btn-block bg-blue waves-effect" data-toggle="modal" data-target="#paymentModal">First Bill</button>
<%else%>
<button type="button" id="first_bill" class="btn btn-block bg-blue waves-effect">First Bill</button>
<%end%>
<% end %>
<button type="button" id="pay" class="btn bg-blue btn-block">Pay</button>
<button type="button" class="btn bg-deep-purple btn-block" data-toggle="modal" data-target="#focModal" <%= (can? :foc, :payment)? ' ': 'disabled=' %> active="true"> FOC </button>
<button type="button" data-toggle="modal" data-target="#voidModal" class="btn bg-danger btn-block" <%= (can? :overall_void, :void)? ' ': 'disabled=' %> > Void </button>
@@ -163,6 +172,38 @@
</div>
</div>
<!-- membership paymentmodal -->
<input type="hidden" id="server_mode" value="<%= ENV["SERVER_MODE"] %>">
<span class="hidden" id="member_discount"><%= @membership.discount%></span>
<span class="hidden" id="membership_id"><%= @sale.customer.membership_id rescue 0%></span>
<div class="modal fade" id="paymentModal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="paymentModalLabel">Choose Payment</h4>
</div>
<div class="modal-body">
<select class="form-control show-tick payment_method" multiple="true" id="payment_method" >
<option value="Cash">Cash</option>
<option value="Credit">Credit</option>
<% @payment_methods.each do |pay| %>
<option value="<%= pay.payment_method %>">
<%= pay.payment_method %>
</option>
<%end %>
</select>
</div>
<div class="modal-footer p-r-30">
<button type="button" class="btn btn-link btn-danger waves-effect" data-dismiss="modal">CLOSE</button>
&nbsp; &nbsp;
<button type="button" class="btn btn-link bg-blue waves-effect choose_payment">SAVE</button>
</div>
</div>
</div>
</div>
<!-- membership paymentmodal -->
<div class="modal fade" id="voidModal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
@@ -212,6 +253,24 @@
</div>
<script>
$(document).ready(function(){
/* start check first bill or not*/
var receipt_no = "";
if(($("#receipt_no").html()!=undefined) && ($("#receipt_no").html()!="")){
receipt_no = ($("#receipt_no").html()).trim();
}
discount="<%= @membership.discount%>"
if ($("#server_mode").val() != "cloud") { // first bill not used in cloud
if (discount) {
if(checkReceiptNoInFirstBillData(receipt_no,"")){
$("#pay").show();
}else{
$("#pay").hide();
}
}
}
/* end check first bill or not*/
$(".tables").on('click', function(){
var dining_id = $(this).attr("data-id");
window.location.href = '/origami/table/<%= @table.id %>/table_invoice/' + dining_id;
@@ -222,6 +281,68 @@ $(document).ready(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,"");
location.reload();
}
});
});
$(".choose_payment").on('click', function () {
$( "#loading_wrapper").show();
var sale_id = '<%= @sale.id %>';
type = $('.payment_method').val();
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) {
calculate_member_discount(sale_id,"Card");
}else{
calculate_member_discount(sale_id,"Cash");
}
}
var ajax_url = "/origami/sale/" + sale_id + "/first_bill";
$.ajax({
type: "GET",
url: ajax_url,
success: function (result) {
$( "#loading_wrapper" ).hide();
receipt_no = ($("#receipt_no").html()).trim();
if((receipt_no!=undefined) && (receipt_no!=""))
createReceiptNoInFirstBillData(receipt_no,type);
location.reload();
}
});
});
function calculate_member_discount(sale_id,type) {
var sub_total = $('#sub-total').text();
if (type == "Cash") {
is_card = false
}else{
is_card = true
}
$.ajax({
type: "POST",
url: "/origami/" + sale_id + "/member_discount",
data: {'sale_id':sale_id, 'sub_total':sub_total,'is_card':is_card },
async: false,
success:function(result){
}
});
}
$('#pay').on('click',function() {
var sale_id = '<%= @sale.id %>';

View File

@@ -58,14 +58,14 @@
<% total_qty = 0 %>
<% @sale_data.each do |sale| %>
<% grand_total += sale.grand_total %>
<% if sale.status_type != "Discount" && sale.status_type != "foc"
total_qty += sale.total_item
end %>
<% if sale.status_type == "foc" && sale.price > 0
total_qty += sale.total_item
end %>
<% grand_total += sale.grand_total %>
<% if sale.status_type != "Discount" && sale.status_type != "foc"
total_qty += sale.total_item
end %>
<% if sale.status_type == "foc" && sale.price > 0
total_qty += sale.total_item
end %>
<% if !sale.status_type %>
<tr>
<td>&nbsp;</td>
<% if !cate_arr.include?(sale.menu_category_id) %>
@@ -81,8 +81,9 @@
<td><%= number_with_precision(sale.unit_price , precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
<td><%= number_with_precision(sale.grand_total , precision:precision.to_i,delimiter:delimiter) rescue '-' %></td>
</tr>
<!-- sub total -->
<!-- end sub total -->
<!-- sub total -->
<!-- end sub total -->
<% end %>
<% end %>
<tr>
<td colspan="3"></td>

View File

@@ -23,31 +23,40 @@
<% total_qty = 0 %>
<% @sale_data.each do |sale| %>
<% grand_total += sale.grand_total %>
<% if sale.status_type != "Discount" && sale.status_type != "foc"
total_qty += sale.total_item
grand_total += sale.grand_total
end %>
<% if sale.status_type == "foc" && sale.price > 0
total_qty += sale.total_item
grand_total += sale.grand_total
end %>
<tr>
<td>&nbsp;</td>
<td><%= sale.menu_category_name %></td>
<td><%= sale.item_code rescue '-' %></td>
<td><%= sale.product_name rescue '-' %></td>
<td><%= sale.total_item rescue '-' %></td>
<td><%= sale.unit_price rescue '-' %></td>
<td><%= sale.grand_total rescue '-' %></td>
</tr>
<% if !sale.status_type %>
<tr>
<td>&nbsp;</td>
<% if !cate_arr.include?(sale.menu_category_id) %>
<td><%= sale.menu_category_name %></td>
<% cate_arr.push(sale.menu_category_id) %>
<% else %>
<% cate_arr = Array.new %>
<td>&nbsp;</td>
<% end %>
<td><%= sale.item_code rescue '-' %></td>
<td><%= sale.product_name rescue '-' %></td>
<td><%= sale.total_item rescue ' ' %></td>
<td><%= sale.unit_price rescue ' ' %></td>
<td><%= sale.grand_total rescue ' ' %></td>
</tr>
<!-- sub total -->
<!-- end sub total -->
<% end %>
<% end %>
<tr>
<td colspan="3"></td>
<td><strong>Total</strong></td>
<td><strong><%= total_qty %></strong></td>
<td><strong><%= total_qty rescue ' ' %></strong></td>
<td></td>
<td><strong><%= grand_total rescue '-' %></strong></td>
<td><strong><%= grand_total rescue ' ' %></strong></td>
</tr>
<% end %>
</tbody>

View File

@@ -18,13 +18,25 @@
<option value="9">Last year</option>
</select>
</div>
<!-- <input type="hidden" name="report_type" value="sale_item" id="sel_sale_type"> -->
<div class="col-lg-3 col-md-3 col-sm-3">
<!-- <input type="hidden" name="report_type" value="sale_item" id="sel_sale_type"> -->
<div class="col-lg-2 col-md-2 col-sm-2">
<label class="font-14">Select Type</label>
<select name="sale_type" id="sel_sale_type" class="form-control">
<option value="">Select Type</option>
<option value="revenue" selected>Revenue Only</option>
<option value="all">All Type</option>
<option value="discount">Discount Only</option>
<option value="void">Void Only</option>
<option value="foc">Foc Only</option>
<option value="other">Other Amount Only</option>
</select>
</div>
<div class="col-lg-2 col-md-2 col-sm-2">
<!-- <label class="">Select Shift Period</label> -->
<label class="font-14"><%= t("views.right_panel.detail.from") %></label>
<input data-behaviour='datepicker' class="form-control m-t-3 datepicker" name="from" id="from" type="text" placeholder="From date" style="height: 32px;">
</div>
<div class="col-lg-3 col-md-3 col-sm-3">
<div class="col-lg-2 col-md-2 col-sm-2">
<label class="font-14"><%= t("views.right_panel.detail.to") %></label>
<input data-behaviour='datepicker' class="form-control m-t-3 datepicker" name="to" id="to" type="text" placeholder="To date" style="height: 32px;">
</div>
@@ -52,7 +64,7 @@
$('#frm_report').attr('action',url)
$('#frm_report').submit();
// window.location = url;
});
});
var item = $('#item').val();
var payment_type = $('#payment_type');
@@ -76,17 +88,18 @@
});
<% if params[:shift_name].to_i > 0%>
shift_id = '<%= params[:shift_name] %>'
local_date = '<%= @shift_from %> - <%= @shift_to %> '
var shift = $('#shift_name');
str = '<option value="'+ shift_id +'" '+ 'selected = "selected"' +'>' + local_date + '</option>';
shift.append(str);
shift_id = '<%= params[:shift_name] %>'
local_date = '<%= @shift_from %> - <%= @shift_to %> '
var shift = $('#shift_name');
str = '<option value="'+ shift_id +'" '+ 'selected = "selected"' +'>' + local_date + '</option>';
shift.append(str);
<% end %>
$("#from").val("<%=params[:from] rescue '-'%>");
$("#to").val("<%=params[:to] rescue '-'%>");
$("#sel_period").val(<%=params[:period] rescue '-'%>);
$("#sel_sale_type").val(<%=params[:sale_type] rescue '-'%>);
var sale_type = "<%=params[:sale_type]%>";
$("#sel_sale_type").val(sale_type);
<% if params[:period_type] == 1 || params[:period_type] == "1" %>

View File

@@ -57,8 +57,7 @@
delimiter = ""
end
%>
<% unless @sale_data.blank? %>
<% acc_arr = Array.new %>
<% acc_arr = Array.new %>
<% cate_arr = Array.new %>
<% sub_qty = 0 %>
@@ -75,24 +74,29 @@
<% total_item_foc = 0 %>
<% total_item_dis = 0.0 %>
<% total_tax = 0 %>
<% unless @sale_data.blank? %>
<% @sale_data.each do |sale| %>
<!-- all total qty sum -->
<% if sale.status_type != "Discount" && sale.status_type != "foc"
total_qty += sale.total_item
end %>
<% if sale.status_type == "foc" && sale.price > 0
total_qty += sale.total_item
end %>
<% if sale.status_type == "Discount"
total_qty += sale.total_item*(-1)
end %>
<!-- end all total qty -->
<% if sale.status_type == "foc" && sale.grand_total < 0
<% if sale.status_type == "foc" && sale.grand_total < 0
total_item_foc += sale.grand_total*(-1)
end %>
<% if sale.status_type == "Discount" && sale.grand_total < 0
total_item_dis += sale.grand_total*(-1)
end %>
<% if !acc_arr.include?(sale.account_id) %>
<tr>
<td><b><%= sale.account_name %></b></td>
@@ -119,7 +123,12 @@
<% end %>
<td><%= sale.item_code rescue '-' %></td>
<td><%= sale.product_name rescue '-' %></td>
<td><%= sale.total_item rescue '-' %></td>
<% if sale.status_type != "Discount" %>
<td><%= sale.total_item rescue '-' %></td>
<%else%>
<td><%= sale.total_item*(-1) rescue '-' %></td>
<% end %>
<td><%= number_with_precision(sale.unit_price , precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
<td><%= number_with_precision(sale.grand_total , precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
</tr>
@@ -130,10 +139,12 @@
<% count = count + 1 %>
<% sub_total += sale.grand_total %>
<% #sub_qty += sale.total_item %>
<% if sale.status_type!="Discount" && (!sale.product_name.include? "FOC")
<% if sale.status_type !="Discount" && (!sale.product_name.include? "FOC")
sub_qty += sale.total_item
end %>
<% if sale.status_type =="Discount"
sub_qty += sale.total_item*(-1)
end %>
<% if count == value %>
<tr>
<td colspan="3">&nbsp;</td>
@@ -151,7 +162,8 @@
<!-- end sub total -->
<% end %>
<!--Other Charges -->
<% if @other_charges.present? %>
<% if @type == "other"%>
<tr>
<td><b>Other Charges</b></td>
<td colspan="4">&nbsp;</td>
@@ -191,55 +203,38 @@
<td style="border-bottom:2px solid grey;"><span><%= number_with_precision(grand_total , precision:precision.to_i,delimiter:delimiter)%></span></td>
</tr>
<% end %>
<tr>
<td colspan="5">&nbsp;</td>
<td><%= t("views.right_panel.detail.foc_item") %> <%= t("views.right_panel.detail.amount") %></td>
<td><span><%= number_with_precision(total_item_foc , precision:precision.to_i,delimiter:delimiter) %></span></td>
</tr>
<tr>
<td colspan="5">&nbsp;</td>
<td style="border-bottom:2px solid grey;"><%= t("views.right_panel.detail.item_discount") %> <%= t("views.right_panel.detail.amount") %></td>
<td style="border-bottom:2px solid grey;"><span><%= number_with_precision(total_item_dis , precision:precision.to_i,delimiter:delimiter) %></span></td>
</tr>
<tr>
<td colspan="5">&nbsp;</td>
<td><%= t("views.right_panel.detail.foc_sales") %></td>
<td>
<span><%= number_with_precision(@foc_data, precision:precision.to_i, delimiter:delimiter) %></span>
</td>
</tr>
<tr>
<td colspan="5">&nbsp;</td>
<td style="border-bottom:2px solid grey;"><%= t("views.right_panel.detail.discount") %> <%= t("views.right_panel.detail.amount") %></td>
<td style="border-bottom:2px solid grey;">
<span>
<%= number_with_precision(@discount_data , precision: precision.to_i,delimiter: delimiter) %>
</span>
</td>
</tr>
<% if @type == "other"%>
<% @sale_taxes.each do |tax| %>
<!-- <tr>
<td colspan="5">&nbsp;</td>
<td><%= tax.tax_name %></td>
<td><%= tax.st_amount.round(2) %>
<%total_tax += tax.st_amount%>
</td>
</tr> -->
<% end %>
<tr>
<td colspan="5">&nbsp;</td>
<td style="border-top:2px solid grey;">Net Amount</td>
<!-- <td><span class="double_underline"><%= grand_total.to_f - @discount_data.to_f%></span></td> -->
<td style="border-top:2px solid grey;"><%= number_with_precision(grand_total.to_f - @discount_data.to_f , precision:precision.to_i,delimiter:delimiter)%></td>
</tr>
<!-- <tr>
<td colspan="5">&nbsp;</td>
<td>Grand Total</td>
<td><span class="double_underline"><%= @grand_total - @change_amount%></span></td>
</tr> -->
<tr>
<td><b>Other Charges</b></td>
<td colspan="4">&nbsp;</td>
<td></td>
</tr>
<% @other_charges.each do |other| %>
<% if other.total_item > 0
total_qty += other.total_item
end %>
<% grand_total +=other.grand_total%>
<tr>
<td>&nbsp;</td>
<td>Other Charges</td>
<td><%= other.item_code rescue '-' %></td>
<td><%= other.product_name rescue '-' %></td>
<td><%= other.total_item rescue '-' %></td>
<td> <%= number_with_precision(other.unit_price , precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
<td> <%= number_with_precision(other.grand_total , precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
</tr>
<!-- sub total -->
<% other_sub_total += other.grand_total %>
<!-- end sub total -->
<% end %>
<tr>
<td colspan="5">&nbsp;</td>
<td><%= t("views.right_panel.detail.sub_total") %></td>
<td ><span><%= number_with_precision(other_sub_total , precision:precision.to_i,delimiter:delimiter)%></span></td>
</tr>
<%end%>
</tbody>
</table>
</div>

View File

@@ -27,10 +27,22 @@
</tr>
</thead>
<tbody>
<% unless @sale_data.blank? %>
<% acc_arr = Array.new %>
<% if @print_settings.precision.to_i > 0
precision = @print_settings.precision
else
precision = 0
end
#check delimiter
if @print_settings.delimiter
delimiter = ","
else
delimiter = ""
end
%>
<% acc_arr = Array.new %>
<% cate_arr = Array.new %>
<% sub_qty = 0 %>
<% sub_total = 0 %>
<% other_sub_total = 0 %>
<% count = 0 %>
@@ -42,14 +54,29 @@
<% total_amount = 0 %>
<% discount = 0 %>
<% total_item_foc = 0 %>
<% total_item_dis = 0 %>
<% total_item_dis = 0.0 %>
<% total_tax = 0 %>
<% unless @sale_data.blank? %>
<% @sale_data.each do |sale| %>
<% if sale.total_item > 0
<!-- all total qty sum -->
<!--
<% if sale.status_type != "Discount" && sale.status_type != "foc"
total_qty += sale.total_item
end %>
<% if sale.status_type == "foc" && sale.price > 0
total_qty += sale.total_item
end %>
-->
<!-- end all total qty -->
<!--
<% if sale.status_type == "foc" && sale.grand_total < 0
total_item_foc += sale.grand_total*(-1)
end %>
<% if sale.status_type == "Discount" && sale.grand_total < 0
total_item_dis += sale.grand_total*(-1)
end %>
-->
<% if !acc_arr.include?(sale.account_id) %>
<tr>
<td><b><%= sale.account_name %></b></td>
@@ -58,7 +85,7 @@
<td>
<% @totalByAccount.each do |account, total| %>
<% if sale.account_id == account %>
<b><%= total %></b>
<b><%= number_with_precision(total, precision:precision.to_i,delimiter:delimiter) %></b>
<% grand_total += total %>
<% end %>
<% end %>
@@ -77,95 +104,110 @@
<td><%= sale.item_code rescue '-' %></td>
<td><%= sale.product_name rescue '-' %></td>
<td><%= sale.total_item rescue '-' %></td>
<td><%= sale.unit_price rescue '-' %></td>
<td><%= sale.grand_total rescue '-' %></td>
<td><%= number_with_precision(sale.unit_price , precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
<td><%= number_with_precision(sale.grand_total , precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
</tr>
<!-- sub total -->
<% @menu_cate_count.each do |key,value| %>
<% if sale.menu_category_id == key %>
<% @menu_cate_count.each do |key,value| %>
<% if sale.account_id == key %>
<% count = count + 1 %>
<% sub_total += sale.grand_total %>
<% #sub_qty += sale.total_item %>
<% if sale.status_type!="Discount" && (!sale.product_name.include? "FOC")
sub_qty += sale.total_item
end %>
<% if count == value %>
<tr>
<td colspan="5">&nbsp;</td>
<td colspan="3">&nbsp;</td>
<td><b>Total <%= sale.account_name %> Qty </b> </td>
<td><b><%= sub_qty %></b></td>
<td><%= t("views.right_panel.detail.sub_total") %></td>
<td ><span class="underline"><%= sub_total %></span></td>
<td ><span class="underline"><%= number_with_precision(sub_total , precision:precision.to_i,delimiter:delimiter)%> </span></td>
</tr>
<% if sale.status_type === "foc"
total_item_foc += sale.grand_total
end %>
<% if sale.status_type === "Discount"
total_item_dis += sale.grand_total
end %>
<% sub_total = 0.0%>
<% sub_qty = 0 %>
<% count = 0%>
<% end %>
<% end %>
<% end %>
<% end %>
<!-- end sub total -->
<% end %>
<% end %>
<!--Other Charges -->
<tr>
<td><b>Other Charges</b></td>
<td colspan="4">&nbsp;</td>
<td></td>
</tr>
<% @other_charges.each do |other| %>
<% if other.total_item > 0
total_qty += other.total_item
end %>
<% grand_total +=other.grand_total%>
<tr>
<td>&nbsp;</td>
<td>Other Charges</td>
<td><%= other.item_code rescue '-' %></td>
<td><%= other.product_name rescue '-' %></td>
<td><%= other.total_item rescue '-' %></td>
<td><%= other.unit_price rescue '-' %></td>
<td><%= other.grand_total rescue '-' %></td>
<% if @type == "other"%>
<tr>
<td><b>Other Charges</b></td>
<td colspan="4">&nbsp;</td>
<td></td>
</tr>
<!-- sub total -->
<% other_sub_total += other.grand_total %>
<!-- end sub total -->
<% end %>
<tr>
<td colspan="5">&nbsp;</td>
<td><%= t("views.right_panel.detail.sub_total") %></td>
<td ><span class="underline"><%= other_sub_total %></span></td>
</tr>
<% @other_charges.each do |other| %>
<% if other.total_item > 0
total_qty += other.total_item
end %>
<% grand_total +=other.grand_total%>
<tr>
<td>&nbsp;</td>
<td>Other Charges</td>
<td><%= other.item_code rescue '-' %></td>
<td><%= other.product_name rescue '-' %></td>
<td><%= other.total_item rescue '-' %></td>
<td> <%= number_with_precision(other.unit_price , precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
<td> <%= number_with_precision(other.grand_total , precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
</tr>
<!-- sub total -->
<% other_sub_total += other.grand_total %>
<!-- end sub total -->
<% end %>
<tr>
<td colspan="5">&nbsp;</td>
<td><%= t("views.right_panel.detail.sub_total") %></td>
<td ><span><%= number_with_precision(other_sub_total , precision:precision.to_i,delimiter:delimiter)%></span></td>
</tr>
<%end%>
<!-- End Other Charges -->
<tr style="border-top:2px solid grey;">
<td colspan="3">&nbsp;</td>
<td><%= t("views.right_panel.detail.total") %> <%= t("views.right_panel.detail.item") %></td>
<td><span><%= total_qty%></span></td>
<td><%= t("views.right_panel.detail.net_amount") %></td>
<td><span><%= grand_total%></span></td>
<td style="border-bottom:2px solid grey;"><%= t("views.right_panel.detail.total") %> <%= t("views.right_panel.detail.amount") %></td>
<td style="border-bottom:2px solid grey;"><span><%= number_with_precision(grand_total , precision:precision.to_i,delimiter:delimiter)%></span></td>
</tr>
<% end %>
<tr>
<td colspan="5">&nbsp;</td>
<td><%= t("views.right_panel.detail.foc_item") %> <%= t("views.right_panel.detail.amount") %></td>
<td><span><%= total_item_foc %></span></td>
</tr>
<tr>
<td colspan="5">&nbsp;</td>
<td><%= t("views.right_panel.detail.item_discount") %> <%= t("views.right_panel.detail.amount") %></td>
<td><span><%= total_item_dis %></span></td>
</tr>
<tr>
<td colspan="5">&nbsp;</td>
<td><%= t("views.right_panel.detail.foc_sales") %></td>
<td><span><%= @foc_data %></span></td>
</tr>
<tr>
<td colspan="5">&nbsp;</td>
<td><%= t("views.right_panel.detail.discount") %> <%= t("views.right_panel.detail.amount") %></td>
<td><span><%= @discount_data %></span></td>
</tr>
<% if @type == "other"%>
<tr>
<td><b>Other Charges</b></td>
<td colspan="4">&nbsp;</td>
<td></td>
</tr>
<% @other_charges.each do |other| %>
<% if other.total_item > 0
total_qty += other.total_item
end %>
<% grand_total +=other.grand_total%>
<tr>
<td>&nbsp;</td>
<td>Other Charges</td>
<td><%= other.item_code rescue '-' %></td>
<td><%= other.product_name rescue '-' %></td>
<td><%= other.total_item rescue '-' %></td>
<td> <%= number_with_precision(other.unit_price , precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
<td> <%= number_with_precision(other.grand_total , precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
</tr>
<!-- sub total -->
<% other_sub_total += other.grand_total %>
<!-- end sub total -->
<% end %>
<tr>
<td colspan="5">&nbsp;</td>
<td><%= t("views.right_panel.detail.sub_total") %></td>
<td ><span><%= number_with_precision(other_sub_total , precision:precision.to_i,delimiter:delimiter)%></span></td>
</tr>
<%end%>
</tbody>
</table>
</div>

View File

@@ -0,0 +1,366 @@
<div class="page-header">
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item active"><%= t("views.right_panel.detail.sale_item_report") %></li>
<span class="float-right">
<%= link_to 'Back', dashboard_path %>
</span>
</ol>
</div>
<div class="row">
<div class="col-md-12">
<%= render :partial=>'shift_sale_report_filter',
:locals=>{ :period_type => true, :shift_name => true, :report_path =>reports_saleitem_index_path} %>
<hr />
<div class="text-right">
<a href="javascript:export_to('<%=reports_saleitem_index_path%>.xls')" class = "btn btn-info wave-effects "><%= t("views.btn.exp_to_excel") %></a>
</div>
<div class="margin-top-20">
<div class="card">
<div class="table-responsive">
<table class="table table-striped" id="items_table" border="0">
<thead>
<tr>
<th colspan="7"> <%= t("views.right_panel.detail.from_date") %> : <%= @from.utc.getlocal.strftime("%Y-%b-%d") rescue '-' %> - <%= t("views.right_panel.detail.to_date") %> : <%= @to.utc.getlocal.strftime("%Y-%b-%d") rescue '-'%></th>
</tr>
<% if @shift_from %>
<tr>
<% if @shift_data.employee %>
<% cashier_name = !@shift_data.nil? ? @shift_data.employee.name : '-' %>
<% end %>
<th colspan="7"> <%= t("views.right_panel.detail.shift_name") %> = <%= @shift_from %> - <%= @shift_to %> ( <%= cashier_name %> )</th>
</tr>
<% end %>
<tr>
<th>&nbsp;</th>
<th><%= t("views.right_panel.header.menu_category") %></th>
<th><%= t("views.right_panel.detail.code") %></th>
<th><%= t("views.right_panel.detail.product") %></th>
<th><%= t("views.right_panel.detail.total") %> <%= t("views.right_panel.detail.item") %></th>
<th><%= t("views.right_panel.detail.unit_price") %></th>
<th><%= t("views.right_panel.detail.revenue") %></th>
</tr>
</thead>
<tbody>
<% if @print_settings.precision.to_i > 0
precision = @print_settings.precision
else
precision = 0
end
#check delimiter
if @print_settings.delimiter
delimiter = ","
else
delimiter = ""
end
%>
<% unless @sale_data.blank? %>
<% acc_arr = Array.new %>
<% cate_arr = Array.new %>
<% sub_qty = 0 %>
<% sub_total = 0 %>
<% other_sub_total = 0 %>
<% count = 0 %>
<% total_price = 0 %>
<% cate_count = 0 %>
<% acc_count = 0 %>
<% grand_total = 0 %>
<% total_qty = 0 %>
<% total_amount = 0 %>
<% discount = 0 %>
<% total_item_foc = 0 %>
<% total_item_dis = 0.0 %>
<% total_tax = 0 %>
<% @sale_data.each do |sale| %>
<!-- all total qty sum -->
<% if sale.status_type != "Discount" && sale.status_type != "foc"
total_qty += sale.total_item
end %>
<% if sale.status_type == "foc" && sale.price > 0
total_qty += sale.total_item
end %>
<!-- end all total qty -->
<% if sale.status_type == "foc" && sale.grand_total < 0
total_item_foc += sale.grand_total*(-1)
end %>
<% if sale.status_type == "Discount" && sale.grand_total < 0
total_item_dis += sale.grand_total*(-1)
end %>
<% if !acc_arr.include?(sale.account_id) %>
<tr>
<td><b><%= sale.account_name %></b></td>
<td colspan="4">&nbsp;</td>
<td><%= t("views.right_panel.detail.total_price_by") %> <%= sale.account_name %></td>
<td>
<% @totalByAccount.each do |account, total| %>
<% if sale.account_id == account %>
<b><%= number_with_precision(total, precision:precision.to_i,delimiter:delimiter) %></b>
<% grand_total += total %>
<% end %>
<% end %>
</td>
</tr>
<% acc_arr.push(sale.account_id) %>
<% end %>
<tr>
<td>&nbsp;</td>
<% if !cate_arr.include?(sale.menu_category_id) %>
<td><%= sale.menu_category_name %></td>
<% cate_arr.push(sale.menu_category_id) %>
<% else %>
<td>&nbsp;</td>
<% end %>
<td><%= sale.item_code rescue '-' %></td>
<td><%= sale.product_name rescue '-' %></td>
<td><%= sale.total_item rescue '-' %></td>
<td><%= number_with_precision(sale.unit_price , precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
<td><%= number_with_precision(sale.grand_total , precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
</tr>
<!-- sub total -->
<% @menu_cate_count.each do |key,value| %>
<% if sale.account_id == key %>
<% count = count + 1 %>
<% sub_total += sale.grand_total %>
<% #sub_qty += sale.total_item %>
<% if sale.status_type!="Discount" && (!sale.product_name.include? "FOC")
sub_qty += sale.total_item
end %>
<% if count == value %>
<tr>
<td colspan="3">&nbsp;</td>
<td><b>Total <%= sale.account_name %> Qty </b> </td>
<td><b><%= sub_qty %></b></td>
<td><%= t("views.right_panel.detail.sub_total") %></td>
<td ><span class="underline"><%= number_with_precision(sub_total , precision:precision.to_i,delimiter:delimiter)%> </span></td>
</tr>
<% sub_total = 0.0%>
<% sub_qty = 0 %>
<% count = 0%>
<% end %>
<% end %>
<% end %>
<!-- end sub total -->
<% end %>
<!--Other Charges -->
<% if @other_charges.present? %>
<tr>
<td><b>Other Charges</b></td>
<td colspan="4">&nbsp;</td>
<td></td>
</tr>
<% @other_charges.each do |other| %>
<% if other.total_item > 0
total_qty += other.total_item
end %>
<% grand_total +=other.grand_total%>
<tr>
<td>&nbsp;</td>
<td>Other Charges</td>
<td><%= other.item_code rescue '-' %></td>
<td><%= other.product_name rescue '-' %></td>
<td><%= other.total_item rescue '-' %></td>
<td> <%= number_with_precision(other.unit_price , precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
<td> <%= number_with_precision(other.grand_total , precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
</tr>
<!-- sub total -->
<% other_sub_total += other.grand_total %>
<!-- end sub total -->
<% end %>
<tr>
<td colspan="5">&nbsp;</td>
<td><%= t("views.right_panel.detail.sub_total") %></td>
<td ><span><%= number_with_precision(other_sub_total , precision:precision.to_i,delimiter:delimiter)%></span></td>
</tr>
<%end%>
<!-- End Other Charges -->
<tr style="border-top:2px solid grey;">
<td colspan="3">&nbsp;</td>
<td><%= t("views.right_panel.detail.total") %> <%= t("views.right_panel.detail.item") %></td>
<td><span><%= total_qty%></span></td>
<td style="border-bottom:2px solid grey;"><%= t("views.right_panel.detail.total") %> <%= t("views.right_panel.detail.amount") %></td>
<td style="border-bottom:2px solid grey;"><span><%= number_with_precision(grand_total , precision:precision.to_i,delimiter:delimiter)%></span></td>
</tr>
<% end %>
<tr>
<td colspan="5">&nbsp;</td>
<td><%= t("views.right_panel.detail.foc_item") %> <%= t("views.right_panel.detail.amount") %></td>
<td><span><%= number_with_precision(total_item_foc , precision:precision.to_i,delimiter:delimiter) %></span></td>
</tr>
<tr>
<td colspan="5">&nbsp;</td>
<td style="border-bottom:2px solid grey;"><%= t("views.right_panel.detail.item_discount") %> <%= t("views.right_panel.detail.amount") %></td>
<td style="border-bottom:2px solid grey;"><span><%= number_with_precision(total_item_dis , precision:precision.to_i,delimiter:delimiter) %></span></td>
</tr>
<tr>
<td colspan="5">&nbsp;</td>
<td><%= t("views.right_panel.detail.foc_sales") %></td>
<td>
<span><%= number_with_precision(@foc_data, precision:precision.to_i, delimiter:delimiter) %></span>
</td>
</tr>
<tr>
<td colspan="5">&nbsp;</td>
<td style="border-bottom:2px solid grey;"><%= t("views.right_panel.detail.discount") %> <%= t("views.right_panel.detail.amount") %></td>
<td style="border-bottom:2px solid grey;">
<span>
<%= number_with_precision(@discount_data , precision: precision.to_i,delimiter: delimiter) %>
</span>
</td>
</tr>
<% @sale_taxes.each do |tax| %>
<!-- <tr>
<td colspan="5">&nbsp;</td>
<td><%= tax.tax_name %></td>
<td><%= tax.st_amount.round(2) %>
<%total_tax += tax.st_amount%>
</td>
</tr> -->
<% end %>
<tr>
<td colspan="5">&nbsp;</td>
<td style="border-top:2px solid grey;">Net Amount</td>
<!-- <td><span class="double_underline"><%= grand_total.to_f - @discount_data.to_f%></span></td> -->
<td style="border-top:2px solid grey;"><%= number_with_precision(grand_total.to_f - @discount_data.to_f , precision:precision.to_i,delimiter:delimiter)%></td>
</tr>
<!-- <tr>
<td colspan="5">&nbsp;</td>
<td>Grand Total</td>
<td><span class="double_underline"><%= @grand_total - @change_amount%></span></td>
</tr> -->
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<script>
$(function(){
var check_arr = [];
var search = '<%= params[:period_type] %>';
if(search){
if(parseInt(search) == 0){
search_by_period();
}
else{
search_by_date();
}
}else{
search_by_period();
}
$('#sel_period').change(function(){
search_by_period();
});
function search_by_period(){
var period = $('#sel_period').val();
var period_type = 0;
var from = "";
var to = "";
show_shift_name(period,period_type,from,to,'shift_item');
}
// OK button is clicked
$('#from').bootstrapMaterialDatePicker().on('beforeChange', function(e, date){
new_date = new Date(date) ;
month = parseInt(new_date.getMonth()+1)
from = new_date.getDate() + "-" + month + "-" + new_date.getFullYear();
$('#from').val(from)
search_by_date();
});
$('#to').bootstrapMaterialDatePicker().on('beforeChange', function(e, date){
new_date = new Date(date) ;
month = parseInt(new_date.getMonth()+1)
to = new_date.getDate() + "-" + month + "-" + new_date.getFullYear();
$('#to').val(to)
search_by_date();
});
function search_by_date(){
from = $("#from").val();
to = $("#to").val();
var period = 0;
var period_type = 1;
if(to != '' && from != ''){
shift_name = from + ',' + to;
check_arr.push(to);
console.log(check_arr.length)
if(check_arr.length == 1){
show_shift_name(period,period_type,from,to,'shift_item');
}
if(check_arr.length == 3){
check_arr = [];
}
}
}
function show_shift_name(period,period_type,from,to,shift_item){
var shift = $('#shift_name');
if (from == '' && to == '') {
from = $("#from").val();
to = $("#to").val();
}
shift.empty();
var selected = '';
var str = '';
var param_shift = '<%= params[:shift_name]%>';
url = '<%= reports_get_shift_by_date_path %>';
$.get(url, {period :period, period_type :period_type, from :from, to :to, report_type :shift_item} , function(data){
console.log(data)
str = '<option value="0">--- All Shift ---</option>';
$(data.message).each(function(index){
var local_date = data.message[index].local_opening_date + ' - ' + data.message[index].local_closing_date;
var sh_date = data.message[index].opening_date + ' - ' + data.message[index].closing_date;
var shift_id = data.message[index].shift_id ;
if(param_shift != ''){
if(shift_id == param_shift){
selected = 'selected = "selected"';
}
else{
selected = '';
}
}
else{
selected = '';
}
str += '<option value="'+ shift_id +'" '+ selected +'>' + local_date + '</option>';
// console.log(sh_date)
})
shift.append(str);
});
}
});
</script>

View File

@@ -7,12 +7,6 @@
</span>
</ol>
</div>
<h4>Import</h4>
<%= form_tag import_settings_menus_path, multipart:true do%>
<%=file_field_tag :file%>
<%=submit_tag "Import CSV"%>
<%end%>
<%= link_to "Export users as spreadsheet", settings_menus_path(format: "xlsx") %>
<div class="row">
<div class="col-xs-12 col-sm-12 col-md-2 col-lg-2">
<br><br>
@@ -30,7 +24,16 @@
</div>
<div class="col-xs-12 col-sm-12 col-md-7 col-lg-7">
<div class="m-b-10 clearfix">
<div class="float-left">
<%= form_tag import_settings_menus_path,class:"col-md-", multipart:true do%>
<%=file_field_tag :file, :class => "img-thumbnail col-md-7" %>
<%=submit_tag "Import",:class => 'btn btn-primary btn-lg waves-effect' %>
<%end%>
</div>
<%= link_to t("views.btn.new"),new_settings_menu_path,:class => 'btn btn-primary btn-lg float-right waves-effect"' %>
<%= link_to "Export", settings_menus_path(format: "xlsx"),:class => 'btn btn-info btn-lg waves-effect float-right m-r-10' %>
</div>
<div class="card">
<table class="table table-striped">

View File

@@ -1,6 +1,7 @@
wb = xlsx_package.workbook
wb.styles do |s|
date = s.add_style(:format_code => "yyyy-mm-dd", :border => Axlsx::STYLE_THIN_BORDER)
time_format = wb.styles.add_style :format_code => 'hh:mm:ss'
wrap_text = s.add_style :sz => 11,
:alignment => { :horizontal => :left,:vertical => :center ,
:wrap_text => true}
@@ -12,75 +13,74 @@ wb.styles do |s|
:alignment => { :horizontal => :left,
:vertical => :center ,
:header_text => true}
wb.add_worksheet(name: "Menu") do |sheet|
sheet.add_row %w( name is_active valid_days valid_time_from valid_time_to created_by ), :style=>header_text
@settings_menus.each do |menu|
sheet.add_row [ menu.name, menu.is_active, menu.valid_days, menu.valid_time_from,menu.valid_time_to, menu.created_by], :style=>[date,wrap_text]
end
end
wb.add_worksheet(name: "Menu Category") do |sheet|
sheet.add_row %w(menu_id code name alt_name order_by created_by menu_category_id is_available created_at updated_at), :style=>header_text
MenuCategory.all.each do |mc|
sheet.add_row [mc.menu_id, mc.code, mc.name, mc.alt_name, mc.order_by, mc.created_by, mc.menu_category_id, mc.is_available, mc.created_at, mc.updated_at], :style=>wrap_text
end
end
wb.add_worksheet(name: "Menu Item") do |sheet|
sheet.add_row %w(item_code name alt_name image_path description information unit type menu_category_id item_attributes item_options account_id _qty taxable is_sub_item is_available created_by created_at updated_at), :style=>header_text
MenuItem.all.each do |mi|
sheet.add_row [mi.item_code, mi.name, mi.alt_name, mi.image_path, mi.description, mi.information, mi.unit, mi.type, mi.menu_category_id, mi.item_attributes, mi.item_options, mi.account_id, mi.min_qty, mi.taxable, mi.is_sub_item, mi.is_available, mi.created_by, mi.created_at, mi.updated_at], :style=>wrap_text
end
end
wb.add_worksheet(name: "Menu Item Instance") do |sheet|
sheet.add_row %w(menu_item_id item_instance_code item_instance_name item_attributes price is_on_promotion promotion_price is_available is_default created_at updated_at), :style=>header_text
MenuItemInstance.all.each do |mii|
sheet.add_row [mii.menu_item_id, mii.item_instance_code, mii.item_instance_name, mii.item_attributes, mii.price, mii.is_on_promotion, mii.promotion_price, mii.is_available, mii.is_default, mii.created_at, mii.updated_at], :style=>wrap_text
end
end
wb.add_worksheet(name: "Menu Options") do |sheet|
sheet.add_row %w(option_type name value created_at updated_at), :style=>header_text
MenuItemOption.all.each do |option|
sheet.add_row [option.option_type, option.name, option.value, option.created_at, option.updated_at], :style=>wrap_text
end
end
wb.add_worksheet(name: "Item Attributes") do |sheet|
sheet.add_row %w(attribute_type name value created_at updated_at), :style=>header_text
MenuItemAttribute.all.each do |attr|
sheet.add_row [ attr.attribute_type,attr.name,attr.value,attr.created_at,attr.updated_at], :style=>wrap_text
end
end
wb.add_worksheet(name: "Account") do |sheet|
sheet.add_row %w(title account_type discount point bonus rebate created_at updated_at), :style=>header_text
wb.add_worksheet(name: "Account") do |sheet|
sheet.add_row %w(id title account_type discount point bonus rebate), :style=>header_text
Account.all.each do |acc|
sheet.add_row [acc.title,acc.account_type,acc.discount,acc.point,acc.bonus,acc.rebate,acc.created_at,acc.updated_at], :style=>wrap_text
sheet.add_row [acc.id, acc.title,acc.account_type,acc.discount,acc.point,acc.bonus,acc.rebate], :style=>wrap_text
end
end
wb.add_worksheet(name: "Item Set") do |sheet|
sheet.add_row %w(name alt_name min_selectable_qty max_selectable_qty created_at updated_at), :style=>header_text
sheet.add_row %w(id name alt_name min_selectable_qty max_selectable_qty), :style=>header_text
ItemSet.all.each do |set|
sheet.add_row [set.name, set.alt_name, set.min_selectable_qty, set.max_selectable_qty, set.created_at, set.updated_at], :style=>wrap_text
sheet.add_row [set.id,set.name, set.alt_name, set.min_selectable_qty, set.max_selectable_qty], :style=>wrap_text
end
end
wb.add_worksheet(name: "Menu Item Options") do |sheet|
sheet.add_row %w(id option_type name value), :style=>header_text
MenuItemOption.all.each do |option|
sheet.add_row [option.id, option.option_type, option.name, option.value], :style=>wrap_text
end
end
wb.add_worksheet(name: "Menu Item Attributes") do |sheet|
sheet.add_row %w(id attribute_type name value), :style=>header_text
MenuItemAttribute.all.each do |attr|
sheet.add_row [attr.id, attr.attribute_type,attr.name,attr.value], :style=>wrap_text
end
end
wb.add_worksheet(name: "Menu") do |sheet|
sheet.add_row %w( id name is_active valid_days valid_time_from valid_time_to created_by ), :style=>header_text
@settings_menus.each do |menu|
sheet.add_row [ menu.id, menu.name, menu.is_active, menu.valid_days, menu.valid_time_from,menu.valid_time_to, menu.created_by], :style=>[wrap_text,time_format]
end
end
wb.add_worksheet(name: "Menu Category") do |sheet|
sheet.add_row %w(id menu_id code name alt_name order_by created_by menu_category_id is_available), :style=>header_text
MenuCategory.all.each do |mc|
sheet.add_row [mc.id, mc.menu_id, mc.code, mc.name, mc.alt_name, mc.order_by, mc.created_by, mc.menu_category_id, mc.is_available], :style=>wrap_text
end
end
wb.add_worksheet(name: "Menu Item") do |sheet|
sheet.add_row %w(id item_code name alt_name image_path description information unit type menu_category_id item_attributes item_options account_id min_qty taxable is_sub_item is_available created_by), :style=>header_text
MenuItem.all.each do |mi|
sheet.add_row [mi.id,mi.item_code, mi.name, mi.alt_name, mi.image_path, mi.description, mi.information, mi.unit, mi.type, mi.menu_category_id, mi.item_attributes, mi.item_options, mi.account_id, mi.min_qty, mi.taxable, mi.is_sub_item, mi.is_available, mi.created_by], :style=>wrap_text
end
end
wb.add_worksheet(name: "Menu Item Instance") do |sheet|
sheet.add_row %w(id menu_item_id item_instance_code item_instance_name item_attributes price is_on_promotion promotion_price is_available is_default), :style=>header_text
MenuItemInstance.all.each do |mii|
sheet.add_row [mii.id, mii.menu_item_id, mii.item_instance_code, mii.item_instance_name, mii.item_attributes, mii.price, mii.is_on_promotion, mii.promotion_price, mii.is_available, mii.is_default], :style=>wrap_text
end
end
wb.add_worksheet(name: "Menu Instance Item Set") do |sheet|
sheet.add_row %w(item_set_id menu_item_instance_id created_at updated_at), :style=>header_text
sheet.add_row %w(id item_set_id menu_item_instance_id), :style=>header_text
MenuInstanceItemSet.all.each do |miis|
sheet.add_row [miis.item_set_id, miis.menu_item_instance_id, miis.created_at, miis.updated_at], :style=>wrap_text
sheet.add_row [miis.id ,miis.item_set_id, miis.menu_item_instance_id], :style=>wrap_text
end
end
wb.add_worksheet(name: "Menu Item Set") do |sheet|
sheet.add_row %w(item_set_id menu_item_id created_at updated_at), :style=>header_text
sheet.add_row %w(id item_set_id menu_item_id), :style=>header_text
MenuItemSet.all.each do |mis|
sheet.add_row [mis.item_set_id, mis.menu_item_id, mis.created_at, mis.updated_at], :style=>wrap_text
sheet.add_row [mis.id,mis.item_set_id, mis.menu_item_id], :style=>wrap_text
end
end
end
end

165
app/views/transactions/sales/index.html.erb Executable file → Normal file
View File

@@ -17,17 +17,41 @@
<td colspan="8">
<%= form_tag transactions_sales_path, :method => :get do %>
<div class="row clearfix">
<div class="col-lg-4 col-md-4 col-sm-4 col-xs-4">
<div class="col-lg-2 col-md-2 col-sm-2 col-xs-2">
<label><%= t("views.right_panel.detail.enter_keyboards") %></label>
<input type="text" id="receipt_no" name="receipt_no" class="form-control" placeholder="Receipt No/Cashier Name/Status" style="margin-right: 10px">
<input type="text" id="receipt_no" name="receipt_no" class="form-control" placeholder="Receipt No/Cashier Name/Status" style="margin-right: 10px;height: 34px;">
</div>
<div class="col-lg-3 col-md-3 col-sm-3 col-xs-3">
<label class=""><%= t("views.right_panel.detail.from") %></label>
<input class="form-control datepicker" name="from" id="from" type="text" placeholder="From date">
<div class="col-lg-2 col-md-2 col-sm-2">
<label class="font-14"><%= t("views.right_panel.detail.select_period") %></label>
<select name="period" id="sel_period" class="form-control">
<option value=""><%= t("views.right_panel.detail.select_period") %></option>
<option value="0">Today</option>
<option value="1">Yesterday</option>
<option value="2">This week</option>
<option value="3">Last week</option>
<option value="4">Last 7 days</option>
<option value="5">This month</option>
<option value="6">Last month</option>
<option value="7">Last 30 days</option>
<option value="8">This year</option>
<option value="9">Last year</option>
</select>
</div>
<div class="col-lg-3 col-md-3 col-sm-3 col-xs-3">
<div class="col-lg-2 col-md-2 col-sm-2 col-xs-2">
<label class=""><%= t("views.right_panel.detail.from") %></label>
<input class="form-control datepicker" name="from" id="from" type="text" placeholder="From date" style="height: 34px;">
</div>
<div class="col-lg-2 col-md-2 col-sm-2 col-xs-2">
<label class=""><%= t("views.right_panel.detail.to") %></label>
<input class="form-control datepicker" name="to" id="to" type="text" placeholder="To date">
<input class="form-control datepicker" name="to" id="to" type="text" placeholder="To date" style="height: 34px;">
</div>
<div class="col-lg-2 col-md-2 col-sm-2">
<label class="font-14"><%= t("views.right_panel.detail.all_shift") %></label>
<select class="form-control select" name="shift_name" id="shift_name" >
</select>
</div>
<div class="col-lg-1 col-md-1 col-sm-1 col-xs-1">
@@ -59,6 +83,7 @@
<th><%= t("views.right_panel.detail.grand_total") %></th>
<th><%= t :cashier %></th>
<th><%= t("views.right_panel.detail.sales_status") %></th>
<th><%= t("views.right_panel.detail.remark") %></th>
<th><%= t("views.right_panel.detail.receipt_date") %></th>
</tr>
</thead>
@@ -67,7 +92,16 @@
<% if @sales != 0 %>
<% @sales.each do |sale| %>
<tr>
<td><%= link_to sale.sale_id, transactions_sale_path(sale) %></td>
<td>
<% if !@sale_item_audits.nil? %>
<% @sale_item_audits.each do |audit| %>
<%if audit.include?(sale.sale_id) %>
<span style="color:#2196f3;">*</span>
<% end %>
<% end %>
<% end %>
<%= link_to sale.sale_id, transactions_sale_path(sale) %>
</td>
<td><%= sale.receipt_no %></td>
<td><%= sale.total_discount %></td>
<td><%= sale.total_tax %></td>
@@ -75,11 +109,20 @@
<td><%= sale.grand_total rescue '-' %></td>
<td><%= sale.cashier_name rescue '-' %></td>
<td> <%= sale.sale_status %> </td>
<td>
<% if !@sale_audits.nil? %>
<% @sale_audits.each do |audit| %>
<%if audit.include?(sale.sale_id) %>
<%= audit[sale.sale_id] %>
<% end %>
<% end %>
<% end %>
</td>
<td> <%= sale.receipt_date.utc.getlocal.strftime("%d-%m-%Y %I:%M %p") %> </td>
</tr>
<% end %>
<% else %>
<tr><td colspan="8"><strong><p style="text-align: center">There is no data for search....</p></strong></td></tr>
<tr><td colspan="10"><strong><p style="text-align: center">There is no data for search....</p></strong></td></tr>
<% end %>
</tbody>
</table>
@@ -97,9 +140,107 @@
<script type="text/javascript">
$(function(){
$("#receipt_no").val("<%=params[:receipt_no]%>");
$("#from").val("<%=params[:from]%>");
$("#to").val("<%=params[:to]%>");
$('#receipt_no').val("<%= params[:receipt_no] %>");
$('#from').val("<%= params[:from] %>");
$('#to').val("<%= params[:to] %>");
$('#sel_period').val("<%= params[:period] %>");
var check_arr = [];
search_by_period();
$('#sel_period').change(function(){
search_by_period();
});
function search_by_period(){
var period = $('#sel_period').val();
var period_type = 0;
var from = "";
var to = "";
show_shift_name(period,period_type,from,to,'shift_item');
}
// OK button is clicked
$('#from').bootstrapMaterialDatePicker().on('beforeChange', function(e, date){
new_date = new Date(date) ;
month = parseInt(new_date.getMonth()+1)
from = new_date.getDate() + "-" + month + "-" + new_date.getFullYear();
$('#from').val(from);
search_by_date();
});
$('#to').bootstrapMaterialDatePicker().on('beforeChange', function(e, date){
new_date = new Date(date) ;
month = parseInt(new_date.getMonth()+1)
to = new_date.getDate() + "-" + month + "-" + new_date.getFullYear();
$('#to').val(to);
search_by_date();
});
function search_by_date(){
from = $("#from").val();
to = $("#to").val();
var period = 0;
var period_type = 1;
if(to != '' && from != ''){
shift_name = from + ',' + to;
check_arr.push(to);
console.log(check_arr.length)
if(check_arr.length == 1){
show_shift_name(period,period_type,from,to,'shift_item');
}
if(check_arr.length == 3){
check_arr = [];
}
}
}
function show_shift_name(period,period_type,from,to,shift_item){
var shift = $('#shift_name');
if (from == '' && to == '') {
from = $("#from").val();
to = $("#to").val();
}
shift.empty();
var str = '';
var param_shift = '';
var param_shift = '<%= params[:shift_name] rescue '-'%>';
url = '<%= reports_get_shift_by_date_path %>';
$.get(url, {period :period, period_type :period_type, from :from, to :to, report_type :shift_item} , function(data){
str = '<option value="0">--- All Shift ---</option>';
$(data.message).each(function(index){
var local_date = data.message[index].local_opening_date + ' - ' + data.message[index].local_closing_date;
var sh_date = data.message[index].opening_date + ' - ' + data.message[index].closing_date;
var shift_id = data.message[index].shift_id ;
if(param_shift != ''){
if(shift_id == param_shift){
selected = 'selected = "selected"';
}
else{
selected = '';
}
}else{
selected = '';
}
str += '<option value="'+ shift_id +'" '+ selected +'>' + local_date + '</option>';
// console.log(sh_date)
})
shift.append(str);
});
}
});
</script>

View File

@@ -52,7 +52,7 @@
<td><%= @sale.receipt_no %></td>
<td><%= @sale.cashier_name rescue '-' %></td>
<td> <%= @sale.sale_status %> </td>
<td> <%= @sale.requested_at.strftime("%m-%d-%Y %H:%M %p") %> </td>
<td colspan="2"> <%= @sale.requested_at.strftime("%m-%d-%Y %H:%M %p") %> </td>
</tr>
<tr style="border-top:2px solid #000">
<th><%= t :sale %> <%= t("views.right_panel.detail.item_txt") %> <%= t("views.right_panel.detail.name_txt2") %></th>
@@ -60,6 +60,7 @@
<th><%= t("views.right_panel.detail.unit_price") %></th>
<th><%= t("views.right_panel.detail.total_price") %></th>
<th><%= t("views.right_panel.detail.created_at") %></th>
<th><%= t("views.right_panel.detail.remark") %></th>
</tr>
<% @sale.sale_items.each do |s| %>
@@ -69,42 +70,43 @@
<td><%= number_with_precision(s.price, :precision => 2, :delimiter => ',') rescue ' '%></td>
<td><%= number_with_precision(s.qty * s.price, :precision => 2, :delimiter => ',') rescue ' '%></td>
<td><%=l s.created_at.utc.getlocal , :format => :short rescue ' ' %></td>
<td><%=s.remark rescue ' '%></td>
</tr>
<% end %>
<tr style="border-top:2px solid #000">
<td colspan=2 style="text-align:center"></td>
<td><%= t("views.right_panel.detail.total") %></td>
<td colspan="2"><%= number_with_precision(@sale.total_amount, :precision => 2, :delimiter => ',') rescue ' '%></td>
<td colspan="3"><%= number_with_precision(@sale.total_amount, :precision => 2, :delimiter => ',') rescue ' '%></td>
</tr>
<tr>
<td colspan=2 style="text-align:center"></td>
<td><%= t("views.right_panel.detail.discount") %></td>
<td colspan="2"><%= number_with_precision(@sale.total_discount, :precision => 2, :delimiter => ',') rescue ' '%></td>
<td colspan="3"><%= number_with_precision(@sale.total_discount, :precision => 2, :delimiter => ',') rescue ' '%></td>
</tr>
<% @sale.sale_taxes.each do |r|%>
<tr>
<td colspan=2 style="text-align:center"></td>
<td><%= r.tax_name %> </td>
<td colspan="2"><%= number_with_precision(r.tax_payable_amount, :precision => 2, :delimiter => ',') rescue ' '%></td>
<td colspan="3"><%= number_with_precision(r.tax_payable_amount, :precision => 2, :delimiter => ',') rescue ' '%></td>
</tr>
<% end %>
<tr>
<td colspan=2 style="text-align:center"></td>
<td><%= t("views.right_panel.detail.grand_total") %></td>
<td colspan="2"><%= number_with_precision(@sale.grand_total, :precision => 2, :delimiter => ',') rescue ' '%></td>
<td colspan="3"><%= number_with_precision(@sale.grand_total, :precision => 2, :delimiter => ',') rescue ' '%></td>
</tr>
<tr><td colspan="5">&nbsp;<td></tr>
<tr>
<td colspan=2 style="text-align:center"></td>
<td><%= t("views.right_panel.detail.total_pay_amount") %></td>
<td colspan="2"><%= number_with_precision(@sale.amount_received, :precision => 2, :delimiter => ',') rescue ' '%></td>
<td colspan="3"><%= number_with_precision(@sale.amount_received, :precision => 2, :delimiter => ',') rescue ' '%></td>
</tr>
<% @sale_receivables.each do |r|%>
<tr>
<td colspan=2 style="text-align:center"></td>
<td> <%= r.payment_method.capitalize rescue ' '%> Payment</td>
<td colspan="2"><%= number_with_precision(r.payment_amount, :precision => 2, :delimiter => ',') rescue ' '%>
<td colspan="3"><%= number_with_precision(r.payment_amount, :precision => 2, :delimiter => ',') rescue ' '%>
</td>
</tr>
@@ -114,7 +116,7 @@
<tr>
<td colspan=2 style="text-align:center"></td>
<td><%= t("views.right_panel.detail.change") %></td>
<td colspan="2"><%= number_with_precision(@sale.amount_changed, :precision => 2, :delimiter => ',') rescue ' '%></td>
<td colspan="3"><%= number_with_precision(@sale.amount_changed, :precision => 2, :delimiter => ',') rescue ' '%></td>
</tr>
</tbody>
@@ -258,9 +260,3 @@
</div>

View File

@@ -0,0 +1,113 @@
<div class="page-header">
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>"><%= t("views.right_panel.button.home") %></a></li>
<li class="breadcrumb-item active"><%= t("views.right_panel.detail.survey") %></li>
<span class="float-right">
<%= link_to 'Back', dashboard_path %>
</span>
</ol>
</div>
<div class="row">
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<div class="main-box-body clearfix p-l-15 p-r-15">
<%= form_tag transactions_surveys_path, :method => :get do %>
<div class="row clearfix">
<div class="col-lg-3 col-md-3 col-sm-3 col-xs-3">
<label class="form-control-label"><%= t("views.right_panel.button.search_keyboard") %></label>
<input type="text" id="dining_name" name="filter" placeholder="Dining Name" class="form-control input-md" >
</div>
<div class="col-lg-2 col-md-2 col-sm-2 col-xs-2">
<label class="form-control-label"><%= t("views.right_panel.detail.from") %></label>
<input class="form-control datepicker" name="from" id="from" type="text" placeholder="From date">
</div>
<div class="col-lg-2 col-md-2 col-sm-2 col-xs-2">
<label class="form-control-label"><%= t("views.right_panel.detail.to") %></label>
<input class="form-control datepicker" name="to" id="to" type="text" placeholder="To date">
</div>
<div class="form-group col-lg-1 col-md-1 col-sm-1 col-xs-1">
<label > &nbsp;</label>
<br> <input type="submit" value="Search" class='btn btn-primary btn-md'>
</div>
</div>
<% end %>
<div class="card">
<div class="table-responsive">
<table class="table table-bordered table-striped table-hover">
<thead>
<th><%= t("views.right_panel.detail.dining") %></th>
<th><%= t("views.right_panel.detail.receipt_no") %></th>
<th><%= t("views.right_panel.detail.created_by") %></th>
<th><%= t("views.right_panel.detail.child") %></th>
<th><%= t("views.right_panel.detail.adult") %></th>
<th><%= t("views.right_panel.detail.male") %></th>
<th><%= t("views.right_panel.detail.female") %></th>
<th><%= t("views.right_panel.detail.total") %> <%= t :customer %>
<th><%= t("views.right_panel.detail.local") %></th>
</th>
<th><%= t("views.right_panel.detail.foreigner") %></th>
</thead>
<tbody>
<% total_child = 0 %>
<% total_adult = 0 %>
<% total_male = 0 %>
<% total_female = 0 %>
<% total_local = 0 %>
<% total_customer = 0 %>
<% if !@surveys.nil? %>
<% @surveys.each do |survey| %>
<% total_child = total_child.to_i + survey.child.to_i %>
<% total_adult = total_adult.to_i + survey.adult.to_i %>
<% total_male = total_male.to_i + survey.male.to_i %>
<% total_female = total_female.to_i + survey.female.to_i %>
<% total_local = total_local.to_i + survey.local.to_i %>
<% total_customer = total_customer.to_i + survey.total_customer.to_i %>
<tr>
<td><%= survey.dining_name rescue ' '%></td>
<td><%= survey.receipt_no rescue '-'%></td>
<td><%= survey.created_by rescue ' '%></td>
<td><%= survey.child rescue ' '%></td>
<td><%= survey.adult rescue ' '%></td>
<td><%= survey.male rescue ' '%></td>
<td><%= survey.female rescue ' '%></td>
<td><%= survey.total_customer rescue ' '%></td>
<td><%= survey.local rescue ' '%></td>
<td>
<% if !survey.foreigner.nil? %>
<% JSON.parse(survey.foreigner).each do |foreign| %>
<% foreigner_lists = foreign.split(",") %>
<% if !foreigner_lists.empty? %>
<% foreigner_lists.each do |fgn| %>
<% if !fgn.scan(/\D/).empty? %>
<%= fgn %> :<% end %> <%= fgn.to_i unless fgn.match(/[^[:digit:]]+/) %><br>
<% end %>
<% end %>
<% end %>
<% end %>
</td>
</tr>
<% end %>
<% end %>
<tr>
<td colspan="3"><strong><%= t("views.right_panel.detail.total") %></strong></td>
<td><strong><%= total_child %></strong></td>
<td><strong><%= total_adult %></strong></td>
<td><strong><%= total_male %></strong></td>
<td><strong><%= total_female %></strong></td>
<td><strong><%= total_customer %></strong></td>
<td colspan="2"><strong><%= total_local %></strong></td>
</tr>
</tbody>
</table>
<br>
<%if !@orders.nil?%>
<%= paginate @surveys %>
<%end%>
</div>
</div>
</div>
</div>
</div>

Binary file not shown.

8
config/locales/en.yml Executable file → Normal file
View File

@@ -72,6 +72,8 @@ en:
payment: "Payment"
backend: "Backend"
date_time: "DateTime"
dine_in_order: "Dine In Order"
quick_service: "Quick Service"
views:
btn:
@@ -450,7 +452,11 @@ en:
additional_parameter: "Additional parameter"
lookup: "Lookup"
product_sale_report: "Product Sale"
group_type: "Group Type"
dining: "Dining"
child: "Child"
adult: "Adult"
foreigner: "Foreigner"
local: "Local"
code_txt: "code "
charge_txt: "charge"

14
config/locales/mm.yml Executable file → Normal file
View File

@@ -65,8 +65,10 @@ mm:
sale_audits: "အရောင်းပြင်ဆင်ခြင်းများ"
bottom: "အရောင်းအနဲဆုံး"
payment: "ငွေပေးချေမှု"
backend: "Backend"
date_time: "DateTime"
backend: "နောက်ကွယ်"
date_time: "ရက်စွဲအချိန်"
dine_in_order: "Dine In Order"
quick_service: "Quick Service"
views:
btn:
@@ -444,8 +446,12 @@ mm:
additional_parameter: "ထပ်ဖြည့်အကြောင်းအရာ"
survey: "ခြုံငုံလေ့လာခြင်း"
lookup: "သတ်မှတ်ချက်များ"
product_sale_report: "Product Sale"
group_type: "Group Type"
product_sale_report: "ကုန်ပစ္စည်းရောင်းရမှုအစီရင်ခံစာ"
dining: "ဆိုင်စား"
child: "ကလေး"
adult: "လူကြီး"
foreigner: "နိုင်ငံခြားသား"
local: "နိုင်ငံသား"
code_txt: "ကုတ်ဒ် "
charge_txt: "ကောက်ခံသည်"

View File

@@ -55,6 +55,7 @@ scope "(:locale)", locale: /en|mm/ do
post "bill" => "bill#create"
end
get 'view_orders' => "orders#view_orders"
post "update_order_item" => "orders#update"
#Current active bookings
resources :bookings, only: [:index, :show, :create, :update]
@@ -77,6 +78,8 @@ scope "(:locale)", locale: /en|mm/ do
post "check_in" => "check_in_process#check_in_process"
post "request_time" => "check_in_process#request_time"
post "call_waiter" => "call_waiters#index"
#---------Waste and Spoile --------------#
post 'sale/:sale_id/:type/waste_and_spoilage' => 'waste_spoile#waste_and_spoilage'
end
@@ -84,6 +87,7 @@ scope "(:locale)", locale: /en|mm/ do
#--------- Cashier ------------#
namespace :origami do
get "dashboard" => "dashboard#index"
get "quick_service" => "quick_service#index"
@@ -95,9 +99,6 @@ scope "(:locale)", locale: /en|mm/ do
get "quick_service/modify_order/:sale_id" => "quick_service#modify_order"
post 'quick_service/update_modify_order' => "quick_service#update_modify_order", :defaults => { :format => 'json' }
resources :second_display
post '/customer_view' => "second_display#customer_view",:as => "customer_view", :defaults => { :format => 'json' }
resources :cash_ins, only: [:new, :create]
resources :cash_outs, only: [:new, :create]
@@ -140,7 +141,7 @@ scope "(:locale)", locale: /en|mm/ do
# Discount
get "/:id/:type/discount" => "discounts#index"
post "/:id/discount" => "discounts#create"
get "/:id/remove_all_discount" => "discounts#remove_all_discount"
get "/:id/:type/remove_all_discount" => "discounts#remove_all_discount"
post "/:id/remove_discount_items" => "discounts#remove_discount_items"
# Discount for Member
@@ -177,7 +178,6 @@ scope "(:locale)", locale: /en|mm/ do
post 'payment/master' => "master#create"
post 'payment/visa' => "visa#create"
post 'payment/unionpay' => "unionpay#create"
post 'payment/junctionpay' => "junction_pay#create"
post 'payment/paypar' => 'paypar_payments#create'
post 'payment/credit' => 'credit_payments#create'
post 'payment/voucher' => 'voucher_payments#create'
@@ -189,13 +189,14 @@ scope "(:locale)", locale: /en|mm/ do
get 'sale/:sale_id/:type/payment/others_payment/Master' => "master#index"
get 'sale/:sale_id/:type/payment/others_payment/JCB' => "jcb#index"
get 'sale/:sale_id/:type/payment/others_payment/UNIONPAY' => "unionpay#index"
get 'sale/:sale_id/:type/payment/others_payment/JUNCTIONPAY' => "junction_pay#index"
get 'sale/:sale_id/:type/payment/others_payment/Redeem' => "redeem_payments#index"
get 'sale/:sale_id/:type/payment/others_payment/Voucher' => "voucher#index"
#---------Void --------------#
post 'sale/:sale_id/:type/void' => 'void#overall_void'
#---------Multiple Invoices --------------#
get 'table/:table_id/table_invoices' => "table_invoices#index", :as => "table_invoice_index"
get 'table/:table_id/table_invoice/:invoice_id' => "table_invoices#show", :as => "table_invoice_show"
@@ -240,12 +241,16 @@ scope "(:locale)", locale: /en|mm/ do
post "bank_integration/sale_trans", to: "bank_integration#sale_trans", as:"sale_trans"
#split bill
get '/table/:dining_id/split_bills' => 'split_bill#index'
get '/room/:dining_id/split_bills' => 'split_bill#index'
get '/table/:dining_id/:type/split_bills' => 'split_bill#index'
get '/room/:dining_id/:type/split_bills' => 'split_bill#index'
post '/split_bills', to: 'split_bill#create', as:"order_item_split_bills"
post '/split_bills/equal_person', to: 'split_bill#update_sale'
resources :second_display #second display routes
post '/customer_view' => "second_display#customer_view",:as => "customer_view", :defaults => { :format => 'json' }
end
#--------- Waiter/Ordering Station ------------#
@@ -291,16 +296,14 @@ scope "(:locale)", locale: /en|mm/ do
#--------- System Settings ------------#
namespace :settings do
resources :shops do
resources :display_images
end
resources :shops
#employees
resources :employees
#menu
resources :menus do
#menu_categories
collection { post :import }
collection do
post :import
end
resources :menu_categories, only: [:new, :create, :edit, :delete]
end
@@ -386,6 +389,7 @@ scope "(:locale)", locale: /en|mm/ do
resources :credit_notes
resources :bookings
resources :shift_sales
resources :surveys
get "/sales/:sale_id/manual_complete_sale" => "manual_sales#manual_complete_sale", :as => "manual_complete_sale"
get "/sales/:sale_id/void" => "manual_sales#void", :as => "void"
@@ -437,8 +441,9 @@ scope "(:locale)", locale: /en|mm/ do
#----------- Print Setup --------#
resources :print_settings
get '/get_printer_options/:printer_name' => 'print_settings#get_printer_options'
resources :commissioners
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
end

View File

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

View File

@@ -8,7 +8,7 @@
---
:concurrency: 25
:pidfile: ./tmp/pids/sidekiq.pid
:pidfile: ./tmp/sidekiq.pid
:logfile: ./log/sidekiq.log
:queues:
- default

View File

@@ -20,4 +20,26 @@ namespace :clear do
SeedGenerator.where("id > 1").update(:current => 0, :next => 1)
puts "Clear Data Done."
end
desc "Clear Menu"
task :menu => :environment do
MenuItemOption.destroy_all
MenuItemAttribute.destroy_all
MenuItemSet.destroy_all
MenuInstanceItemSet.destroy_all
ItemSet.destroy_all
MenuItemInstance.destroy_all
MenuItem.destroy_all
MenuCategory.destroy_all
Menu.destroy_all
Account.destroy_all
puts "Clear all Menu Done."
end
end

View File

@@ -1,483 +0,0 @@
%PDF-1.3
%ÿÿÿÿ
1 0 obj
<< /Creator <feff0050007200610077006e>
/Producer <feff0050007200610077006e>
>>
endobj
2 0 obj
<< /Type /Catalog
/Pages 3 0 R
>>
endobj
3 0 obj
<< /Type /Pages
/Count 1
/Kids [5 0 R]
>>
endobj
4 0 obj
<< /Length 4242
>>
stream
q
BT
48.975 1417.82 Td
/F1.0 10 Tf
[<4f53414b41204f4853484f2854> 120 <616d77> 10 <6529>] TJ
ET
BT
10.268 1402.696 Td
/F1.0 8 Tf
[<4e6f> 40 <2e203235362c204b> 50 <79> 20 <61696b6b6173616e20526f61642c2054> 120 <616d77> 10 <652054> 120 <6f> 15 <776e73686970> 35 <2c2059> 140 <616e676f6e>] TJ
ET
BT
71.904 1388.448 Td
/F1.0 8 Tf
[<54> 120 <656c3a2030392d323538363736363131>] TJ
ET
0.0 1379.944 m
210.0 1379.944 l
S
0.0 1379.944 m
210.0 1379.944 l
S
BT
0.0 1367.2 Td
/F1.0 8 Tf
[<52656365697074204e6f3a2032303138303231392d3735>] TJ
ET
BT
0.0 1347.2 Td
/F1.0 8 Tf
[<54> 120 <6162> 20 <6c65202d207432>] TJ
ET
BT
100.0 1347.2 Td
/F1.0 8 Tf
[<573a2043617368696572>] TJ
ET
BT
160.216 1347.2 Td
/F1.0 8 Tf
[<433a2043617368696572>] TJ
ET
BT
0.0 1327.2 Td
/F1.0 8 Tf
[<44617465203a2031392d30322d323031382831303a323920414d2d31303a333620414d29>] TJ
ET
0.0 1312.944 m
210.0 1312.944 l
S
BT
0.0 1302.2 Td
/F1.0 8 Tf
[<4974656d73>] TJ
ET
BT
106.656 1302.2 Td
/F1.0 8 Tf
[<5072> -15 <696365>] TJ
ET
BT
138.276 1302.2 Td
/F1.0 8 Tf
[<517479>] TJ
ET
BT
187.176 1302.2 Td
/F1.0 8 Tf
[<54> 120 <6f74616c>] TJ
ET
0.0 1292.944 m
210.0 1292.944 l
S
BT
0.0 1282.2 Td
/F1.0 8 Tf
[<56> 80 <6f646b61202d>] TJ
ET
BT
93.864 1282.2 Td
/F1.0 8 Tf
[<31302c3030302e30>] TJ
ET
BT
138.94 1282.2 Td
/F1.0 8 Tf
[<312e30>] TJ
ET
BT
172.864 1282.2 Td
/F1.0 8 Tf
[<31302c3030302e30>] TJ
ET
BT
0.0 1267.952 Td
/F1.0 8 Tf
[<746573745f6974656d31202d>] TJ
ET
BT
0.0 1258.704 Td
/F1.0 8 Tf
[<74657374315f736d616c6c>] TJ
ET
BT
98.312 1267.952 Td
/F1.0 8 Tf
[<312c3030302e30>] TJ
ET
BT
138.94 1267.952 Td
/F1.0 8 Tf
[<312e30>] TJ
ET
BT
177.312 1267.952 Td
/F1.0 8 Tf
[<312c3030302e30>] TJ
ET
0.0 1250.2 m
210.0 1250.2 l
S
BT
0.0 1239.456 Td
/F1.0 8 Tf
[<5375622054> 120 <6f74616c>] TJ
ET
BT
170.864 1239.456 Td
/F1.0 8 Tf
[<31312c3030302e30>] TJ
ET
BT
0.0 1225.208 Td
/F1.0 8 Tf
[<4f76> 25 <6572> 10 <616c6c20446973636f756e743a>] TJ
ET
BT
181.104 1225.208 Td
/F1.0 8 Tf
[<2820302e302029>] TJ
ET
BT
0.0 1210.96 Td
/F1.0 8 Tf
[<536572> -30 <76696365204368617267657320282031302529>] TJ
ET
BT
175.312 1210.96 Td
/F1.0 8 Tf
[<312c3130302e30>] TJ
ET
BT
0.0 1196.712 Td
/F1.0 8 Tf
[<436f6d6d65726369616c2054> 120 <6178202820352529>] TJ
ET
BT
181.984 1196.712 Td
/F1.0 8 Tf
[<3535302e30>] TJ
ET
BT
0.0 1181.028 Td
/F2.0 10 Tf
[<4772616e642054> 80 <6f74616c>] TJ
ET
BT
163.08 1181.028 Td
/F2.0 10 Tf
[<31322c3635302e30>] TJ
ET
0.0 1171.308 m
210.0 1171.308 l
S
BT
0.0 1160.564 Td
/F1.0 8 Tf
[<436173682050> 40 <61> 30 <796d656e74>] TJ
ET
BT
170.864 1160.564 Td
/F1.0 8 Tf
[<31322c3635302e30>] TJ
ET
BT
0.0 1146.316 Td
/F1.0 8 Tf
[<4368616e676520416d6f756e74>] TJ
ET
BT
190.88 1146.316 Td
/F1.0 8 Tf
[<302e30>] TJ
ET
BT
0.0 1127.068 Td
/F1.0 8 Tf
[<437573746f6d6572204e616d65>] TJ
ET
BT
169.064 1127.068 Td
/F1.0 8 Tf
[<57> 50 <414c4b2d494e>] TJ
ET
0.0 1118.564 m
210.0 1118.564 l
S
BT
0.0 1107.82 Td
/F1.0 8 Tf
[<54> 120 <6f74616c2046> 30 <6f6f6420446973636f756e7473>] TJ
ET
BT
185.552 1107.82 Td
/F1.0 8 Tf
[<28302e3029>] TJ
ET
BT
0.0 1098.572 Td
/F1.0 8 Tf
[<54> 120 <6f74616c204265> 30 <76> 25 <6572> 10 <61676520446973636f756e7473>] TJ
ET
BT
185.552 1098.572 Td
/F1.0 8 Tf
[<28302e3029>] TJ
ET
BT
0.0 1089.324 Td
/F1.0 8 Tf
[<54> 120 <6f74616c2050726f6475637420446973636f756e7473>] TJ
ET
BT
185.552 1089.324 Td
/F1.0 8 Tf
[<28302e3029>] TJ
ET
0.0 1080.82 m
210.0 1080.82 l
S
BT
0.0 1070.076 Td
/F1.0 8 Tf
[<46> 30 <6f6f64>] TJ
ET
BT
175.312 1070.076 Td
/F1.0 8 Tf
[<312c3030302e30>] TJ
ET
BT
0.0 1060.828 Td
/F1.0 8 Tf
[<4265> 30 <76> 25 <6572> 10 <616765>] TJ
ET
BT
170.864 1060.828 Td
/F1.0 8 Tf
[<31302c3030302e30>] TJ
ET
BT
0.0 1051.58 Td
/F1.0 8 Tf
[<50726f64756374>] TJ
ET
BT
190.88 1051.58 Td
/F1.0 8 Tf
[<302e30>] TJ
ET
0.0 1043.076 m
210.0 1043.076 l
S
BT
0.0 1031.614 Td
/F1.0 9 Tf
[<53706c69742042696c6c2066> 30 <6f72203020706572736f6e73>] TJ
ET
BT
0.0 1017.332 Td
/F1.0 8 Tf
[<416d6f756e7420447565202870657220706572736f6e29>] TJ
ET
BT
193.104 1017.332 Td
/F1.0 8 Tf
[<496e66>] TJ
ET
0.0 1008.828 m
210.0 1008.828 l
S
BT
0.0 996.648 Td
/F2.0 10 Tf
[<50> 30 <616964>] TJ
ET
BT
102.0 998.084 Td
/F1.0 8 Tf
[<5468616e6b2059> 140 <6f7521205365652079> 20 <6f7520416761696e>] TJ
ET
Q
endstream
endobj
5 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 210 1450]
/CropBox [0 0 210 1450]
/BleedBox [0 0 210 1450]
/TrimBox [0 0 210 1450]
/ArtBox [0 0 210 1450]
/Contents 4 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font << /F1.0 6 0 R
/F2.0 7 0 R
>>
>>
>>
endobj
6 0 obj
<< /Type /Font
/Subtype /Type1
/BaseFont /Helvetica
/Encoding /WinAnsiEncoding
>>
endobj
7 0 obj
<< /Type /Font
/Subtype /Type1
/BaseFont /Helvetica-Bold
/Encoding /WinAnsiEncoding
>>
endobj
xref
0 8
0000000000 65535 f
0000000015 00000 n
0000000109 00000 n
0000000158 00000 n
0000000215 00000 n
0000004509 00000 n
0000004792 00000 n
0000004889 00000 n
trailer
<< /Size 8
/Root 2 0 R
/Info 1 0 R
>>
startxref
4991
%%EOF

View File

@@ -1,455 +0,0 @@
%PDF-1.3
%ÿÿÿÿ
1 0 obj
<< /Creator <feff0050007200610077006e>
/Producer <feff0050007200610077006e>
>>
endobj
2 0 obj
<< /Type /Catalog
/Pages 3 0 R
>>
endobj
3 0 obj
<< /Type /Pages
/Count 1
/Kids [5 0 R]
>>
endobj
4 0 obj
<< /Length 4003
>>
stream
q
BT
48.975 1417.82 Td
/F1.0 10 Tf
[<4f53414b41204f4853484f2854> 120 <616d77> 10 <6529>] TJ
ET
BT
10.268 1402.696 Td
/F1.0 8 Tf
[<4e6f> 40 <2e203235362c204b> 50 <79> 20 <61696b6b6173616e20526f61642c2054> 120 <616d77> 10 <652054> 120 <6f> 15 <776e73686970> 35 <2c2059> 140 <616e676f6e>] TJ
ET
BT
71.904 1388.448 Td
/F1.0 8 Tf
[<54> 120 <656c3a2030392d323538363736363131>] TJ
ET
0.0 1379.944 m
210.0 1379.944 l
S
0.0 1379.944 m
210.0 1379.944 l
S
BT
0.0 1367.2 Td
/F1.0 8 Tf
[<52656365697074204e6f3a207177> 10 <65722d32303138303330372d3737>] TJ
ET
BT
0.0 1347.2 Td
/F1.0 8 Tf
[<54> 120 <6162> 20 <6c65202d207431>] TJ
ET
BT
100.0 1347.2 Td
/F1.0 8 Tf
[<573a2043617368696572>] TJ
ET
BT
160.216 1347.2 Td
/F1.0 8 Tf
[<433a2043617368696572>] TJ
ET
BT
0.0 1327.2 Td
/F1.0 8 Tf
[<44617465203a2030372d30332d323031382830353a333320504d2d30353a353020504d29>] TJ
ET
0.0 1312.944 m
210.0 1312.944 l
S
BT
0.0 1302.2 Td
/F1.0 8 Tf
[<4974656d73>] TJ
ET
BT
106.656 1302.2 Td
/F1.0 8 Tf
[<5072> -15 <696365>] TJ
ET
BT
138.276 1302.2 Td
/F1.0 8 Tf
[<517479>] TJ
ET
BT
187.176 1302.2 Td
/F1.0 8 Tf
[<54> 120 <6f74616c>] TJ
ET
0.0 1292.944 m
210.0 1292.944 l
S
BT
0.0 1282.2 Td
/F1.0 8 Tf
[<746573745f6974656d31202d>] TJ
ET
BT
0.0 1272.952 Td
/F1.0 8 Tf
[<74657374315f736d616c6c>] TJ
ET
BT
98.312 1282.2 Td
/F1.0 8 Tf
[<312c3030302e30>] TJ
ET
BT
138.94 1282.2 Td
/F1.0 8 Tf
[<312e30>] TJ
ET
BT
177.312 1282.2 Td
/F1.0 8 Tf
[<312c3030302e30>] TJ
ET
0.0 1264.448 m
210.0 1264.448 l
S
BT
0.0 1253.704 Td
/F1.0 8 Tf
[<5375622054> 120 <6f74616c>] TJ
ET
BT
175.312 1253.704 Td
/F1.0 8 Tf
[<312c3030302e30>] TJ
ET
BT
0.0 1239.456 Td
/F1.0 8 Tf
[<4f76> 25 <6572> 10 <616c6c20446973636f756e743a>] TJ
ET
BT
181.104 1239.456 Td
/F1.0 8 Tf
[<2820302e302029>] TJ
ET
BT
0.0 1225.208 Td
/F1.0 8 Tf
[<536572> -30 <76696365204368617267657320282031302529>] TJ
ET
BT
181.984 1225.208 Td
/F1.0 8 Tf
[<3130302e30>] TJ
ET
BT
0.0 1210.96 Td
/F1.0 8 Tf
[<436f6d6d65726369616c2054> 120 <6178202820352529>] TJ
ET
BT
186.432 1210.96 Td
/F1.0 8 Tf
[<35302e30>] TJ
ET
BT
0.0 1195.276 Td
/F2.0 10 Tf
[<4772616e642054> 80 <6f74616c>] TJ
ET
BT
168.64 1195.276 Td
/F2.0 10 Tf
[<312c3135302e30>] TJ
ET
0.0 1185.556 m
210.0 1185.556 l
S
BT
0.0 1174.812 Td
/F1.0 8 Tf
[<436173682050> 40 <61> 30 <796d656e74>] TJ
ET
BT
175.312 1174.812 Td
/F1.0 8 Tf
[<312c3135302e30>] TJ
ET
BT
0.0 1160.564 Td
/F1.0 8 Tf
[<4368616e676520416d6f756e74>] TJ
ET
BT
190.88 1160.564 Td
/F1.0 8 Tf
[<302e30>] TJ
ET
BT
0.0 1141.316 Td
/F1.0 8 Tf
[<437573746f6d6572204e616d65>] TJ
ET
BT
169.064 1141.316 Td
/F1.0 8 Tf
[<57> 50 <414c4b2d494e>] TJ
ET
0.0 1132.812 m
210.0 1132.812 l
S
BT
0.0 1122.068 Td
/F1.0 8 Tf
[<54> 120 <6f74616c2046> 30 <6f6f6420446973636f756e7473>] TJ
ET
BT
185.552 1122.068 Td
/F1.0 8 Tf
[<28302e3029>] TJ
ET
BT
0.0 1112.82 Td
/F1.0 8 Tf
[<54> 120 <6f74616c204265> 30 <76> 25 <6572> 10 <61676520446973636f756e7473>] TJ
ET
BT
185.552 1112.82 Td
/F1.0 8 Tf
[<28302e3029>] TJ
ET
BT
0.0 1103.572 Td
/F1.0 8 Tf
[<54> 120 <6f74616c2050726f6475637420446973636f756e7473>] TJ
ET
BT
185.552 1103.572 Td
/F1.0 8 Tf
[<28302e3029>] TJ
ET
0.0 1095.068 m
210.0 1095.068 l
S
BT
0.0 1084.324 Td
/F1.0 8 Tf
[<46> 30 <6f6f64>] TJ
ET
BT
175.312 1084.324 Td
/F1.0 8 Tf
[<312c3030302e30>] TJ
ET
BT
0.0 1075.076 Td
/F1.0 8 Tf
[<4265> 30 <76> 25 <6572> 10 <616765>] TJ
ET
BT
190.88 1075.076 Td
/F1.0 8 Tf
[<302e30>] TJ
ET
BT
0.0 1065.828 Td
/F1.0 8 Tf
[<50726f64756374>] TJ
ET
BT
190.88 1065.828 Td
/F1.0 8 Tf
[<302e30>] TJ
ET
0.0 1057.324 m
210.0 1057.324 l
S
BT
0.0 1045.862 Td
/F1.0 9 Tf
[<53706c69742042696c6c2066> 30 <6f72203020706572736f6e73>] TJ
ET
BT
0.0 1031.58 Td
/F1.0 8 Tf
[<416d6f756e7420447565202870657220706572736f6e29>] TJ
ET
BT
193.104 1031.58 Td
/F1.0 8 Tf
[<496e66>] TJ
ET
0.0 1023.076 m
210.0 1023.076 l
S
BT
0.0 1010.896 Td
/F2.0 10 Tf
[<50> 30 <616964>] TJ
ET
BT
102.0 1012.332 Td
/F1.0 8 Tf
[<5468616e6b2059> 140 <6f7521205365652079> 20 <6f7520416761696e>] TJ
ET
Q
endstream
endobj
5 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 210 1450]
/CropBox [0 0 210 1450]
/BleedBox [0 0 210 1450]
/TrimBox [0 0 210 1450]
/ArtBox [0 0 210 1450]
/Contents 4 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font << /F1.0 6 0 R
/F2.0 7 0 R
>>
>>
>>
endobj
6 0 obj
<< /Type /Font
/Subtype /Type1
/BaseFont /Helvetica
/Encoding /WinAnsiEncoding
>>
endobj
7 0 obj
<< /Type /Font
/Subtype /Type1
/BaseFont /Helvetica-Bold
/Encoding /WinAnsiEncoding
>>
endobj
xref
0 8
0000000000 65535 f
0000000015 00000 n
0000000109 00000 n
0000000158 00000 n
0000000215 00000 n
0000004270 00000 n
0000004553 00000 n
0000004650 00000 n
trailer
<< /Size 8
/Root 2 0 R
/Info 1 0 R
>>
startxref
4752
%%EOF

View File

@@ -1,455 +0,0 @@
%PDF-1.3
%ÿÿÿÿ
1 0 obj
<< /Creator <feff0050007200610077006e>
/Producer <feff0050007200610077006e>
>>
endobj
2 0 obj
<< /Type /Catalog
/Pages 3 0 R
>>
endobj
3 0 obj
<< /Type /Pages
/Count 1
/Kids [5 0 R]
>>
endobj
4 0 obj
<< /Length 4003
>>
stream
q
BT
48.975 1417.82 Td
/F1.0 10 Tf
[<4f53414b41204f4853484f2854> 120 <616d77> 10 <6529>] TJ
ET
BT
10.268 1402.696 Td
/F1.0 8 Tf
[<4e6f> 40 <2e203235362c204b> 50 <79> 20 <61696b6b6173616e20526f61642c2054> 120 <616d77> 10 <652054> 120 <6f> 15 <776e73686970> 35 <2c2059> 140 <616e676f6e>] TJ
ET
BT
71.904 1388.448 Td
/F1.0 8 Tf
[<54> 120 <656c3a2030392d323538363736363131>] TJ
ET
0.0 1379.944 m
210.0 1379.944 l
S
0.0 1379.944 m
210.0 1379.944 l
S
BT
0.0 1367.2 Td
/F1.0 8 Tf
[<52656365697074204e6f3a207177> 10 <65722d32303138303330372d3738>] TJ
ET
BT
0.0 1347.2 Td
/F1.0 8 Tf
[<54> 120 <6162> 20 <6c65202d207431>] TJ
ET
BT
100.0 1347.2 Td
/F1.0 8 Tf
[<573a2043617368696572>] TJ
ET
BT
160.216 1347.2 Td
/F1.0 8 Tf
[<433a2043617368696572>] TJ
ET
BT
0.0 1327.2 Td
/F1.0 8 Tf
[<44617465203a2030372d30332d323031382830363a303320504d2d30363a303420504d29>] TJ
ET
0.0 1312.944 m
210.0 1312.944 l
S
BT
0.0 1302.2 Td
/F1.0 8 Tf
[<4974656d73>] TJ
ET
BT
106.656 1302.2 Td
/F1.0 8 Tf
[<5072> -15 <696365>] TJ
ET
BT
138.276 1302.2 Td
/F1.0 8 Tf
[<517479>] TJ
ET
BT
187.176 1302.2 Td
/F1.0 8 Tf
[<54> 120 <6f74616c>] TJ
ET
0.0 1292.944 m
210.0 1292.944 l
S
BT
0.0 1282.2 Td
/F1.0 8 Tf
[<746573745f6974656d31202d>] TJ
ET
BT
0.0 1272.952 Td
/F1.0 8 Tf
[<74657374315f736d616c6c>] TJ
ET
BT
98.312 1282.2 Td
/F1.0 8 Tf
[<312c3030302e30>] TJ
ET
BT
138.94 1282.2 Td
/F1.0 8 Tf
[<312e30>] TJ
ET
BT
177.312 1282.2 Td
/F1.0 8 Tf
[<312c3030302e30>] TJ
ET
0.0 1264.448 m
210.0 1264.448 l
S
BT
0.0 1253.704 Td
/F1.0 8 Tf
[<5375622054> 120 <6f74616c>] TJ
ET
BT
175.312 1253.704 Td
/F1.0 8 Tf
[<312c3030302e30>] TJ
ET
BT
0.0 1239.456 Td
/F1.0 8 Tf
[<4f76> 25 <6572> 10 <616c6c20446973636f756e743a>] TJ
ET
BT
181.104 1239.456 Td
/F1.0 8 Tf
[<2820302e302029>] TJ
ET
BT
0.0 1225.208 Td
/F1.0 8 Tf
[<536572> -30 <76696365204368617267657320282031302529>] TJ
ET
BT
181.984 1225.208 Td
/F1.0 8 Tf
[<3130302e30>] TJ
ET
BT
0.0 1210.96 Td
/F1.0 8 Tf
[<436f6d6d65726369616c2054> 120 <6178202820352529>] TJ
ET
BT
186.432 1210.96 Td
/F1.0 8 Tf
[<35302e30>] TJ
ET
BT
0.0 1195.276 Td
/F2.0 10 Tf
[<4772616e642054> 80 <6f74616c>] TJ
ET
BT
168.64 1195.276 Td
/F2.0 10 Tf
[<312c3135302e30>] TJ
ET
0.0 1185.556 m
210.0 1185.556 l
S
BT
0.0 1174.812 Td
/F1.0 8 Tf
[<436173682050> 40 <61> 30 <796d656e74>] TJ
ET
BT
175.312 1174.812 Td
/F1.0 8 Tf
[<312c3135302e30>] TJ
ET
BT
0.0 1160.564 Td
/F1.0 8 Tf
[<4368616e676520416d6f756e74>] TJ
ET
BT
190.88 1160.564 Td
/F1.0 8 Tf
[<302e30>] TJ
ET
BT
0.0 1141.316 Td
/F1.0 8 Tf
[<437573746f6d6572204e616d65>] TJ
ET
BT
169.064 1141.316 Td
/F1.0 8 Tf
[<57> 50 <414c4b2d494e>] TJ
ET
0.0 1132.812 m
210.0 1132.812 l
S
BT
0.0 1122.068 Td
/F1.0 8 Tf
[<54> 120 <6f74616c2046> 30 <6f6f6420446973636f756e7473>] TJ
ET
BT
185.552 1122.068 Td
/F1.0 8 Tf
[<28302e3029>] TJ
ET
BT
0.0 1112.82 Td
/F1.0 8 Tf
[<54> 120 <6f74616c204265> 30 <76> 25 <6572> 10 <61676520446973636f756e7473>] TJ
ET
BT
185.552 1112.82 Td
/F1.0 8 Tf
[<28302e3029>] TJ
ET
BT
0.0 1103.572 Td
/F1.0 8 Tf
[<54> 120 <6f74616c2050726f6475637420446973636f756e7473>] TJ
ET
BT
185.552 1103.572 Td
/F1.0 8 Tf
[<28302e3029>] TJ
ET
0.0 1095.068 m
210.0 1095.068 l
S
BT
0.0 1084.324 Td
/F1.0 8 Tf
[<46> 30 <6f6f64>] TJ
ET
BT
175.312 1084.324 Td
/F1.0 8 Tf
[<312c3030302e30>] TJ
ET
BT
0.0 1075.076 Td
/F1.0 8 Tf
[<4265> 30 <76> 25 <6572> 10 <616765>] TJ
ET
BT
190.88 1075.076 Td
/F1.0 8 Tf
[<302e30>] TJ
ET
BT
0.0 1065.828 Td
/F1.0 8 Tf
[<50726f64756374>] TJ
ET
BT
190.88 1065.828 Td
/F1.0 8 Tf
[<302e30>] TJ
ET
0.0 1057.324 m
210.0 1057.324 l
S
BT
0.0 1045.862 Td
/F1.0 9 Tf
[<53706c69742042696c6c2066> 30 <6f72203020706572736f6e73>] TJ
ET
BT
0.0 1031.58 Td
/F1.0 8 Tf
[<416d6f756e7420447565202870657220706572736f6e29>] TJ
ET
BT
193.104 1031.58 Td
/F1.0 8 Tf
[<496e66>] TJ
ET
0.0 1023.076 m
210.0 1023.076 l
S
BT
0.0 1010.896 Td
/F2.0 10 Tf
[<50> 30 <616964>] TJ
ET
BT
102.0 1012.332 Td
/F1.0 8 Tf
[<5468616e6b2059> 140 <6f7521205365652079> 20 <6f7520416761696e>] TJ
ET
Q
endstream
endobj
5 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 210 1450]
/CropBox [0 0 210 1450]
/BleedBox [0 0 210 1450]
/TrimBox [0 0 210 1450]
/ArtBox [0 0 210 1450]
/Contents 4 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font << /F1.0 6 0 R
/F2.0 7 0 R
>>
>>
>>
endobj
6 0 obj
<< /Type /Font
/Subtype /Type1
/BaseFont /Helvetica
/Encoding /WinAnsiEncoding
>>
endobj
7 0 obj
<< /Type /Font
/Subtype /Type1
/BaseFont /Helvetica-Bold
/Encoding /WinAnsiEncoding
>>
endobj
xref
0 8
0000000000 65535 f
0000000015 00000 n
0000000109 00000 n
0000000158 00000 n
0000000215 00000 n
0000004270 00000 n
0000004553 00000 n
0000004650 00000 n
trailer
<< /Size 8
/Root 2 0 R
/Info 1 0 R
>>
startxref
4752
%%EOF

View File

@@ -1,455 +0,0 @@
%PDF-1.3
%ÿÿÿÿ
1 0 obj
<< /Creator <feff0050007200610077006e>
/Producer <feff0050007200610077006e>
>>
endobj
2 0 obj
<< /Type /Catalog
/Pages 3 0 R
>>
endobj
3 0 obj
<< /Type /Pages
/Count 1
/Kids [5 0 R]
>>
endobj
4 0 obj
<< /Length 4003
>>
stream
q
BT
48.975 1417.82 Td
/F1.0 10 Tf
[<4f53414b41204f4853484f2854> 120 <616d77> 10 <6529>] TJ
ET
BT
10.268 1402.696 Td
/F1.0 8 Tf
[<4e6f> 40 <2e203235362c204b> 50 <79> 20 <61696b6b6173616e20526f61642c2054> 120 <616d77> 10 <652054> 120 <6f> 15 <776e73686970> 35 <2c2059> 140 <616e676f6e>] TJ
ET
BT
71.904 1388.448 Td
/F1.0 8 Tf
[<54> 120 <656c3a2030392d323538363736363131>] TJ
ET
0.0 1379.944 m
210.0 1379.944 l
S
0.0 1379.944 m
210.0 1379.944 l
S
BT
0.0 1367.2 Td
/F1.0 8 Tf
[<52656365697074204e6f3a207177> 10 <65722d32303138303330372d3739>] TJ
ET
BT
0.0 1347.2 Td
/F1.0 8 Tf
[<54> 120 <6162> 20 <6c65202d207432>] TJ
ET
BT
100.0 1347.2 Td
/F1.0 8 Tf
[<573a2043617368696572>] TJ
ET
BT
160.216 1347.2 Td
/F1.0 8 Tf
[<433a2043617368696572>] TJ
ET
BT
0.0 1327.2 Td
/F1.0 8 Tf
[<44617465203a2030372d30332d323031382830363a303620504d2d30363a303620504d29>] TJ
ET
0.0 1312.944 m
210.0 1312.944 l
S
BT
0.0 1302.2 Td
/F1.0 8 Tf
[<4974656d73>] TJ
ET
BT
106.656 1302.2 Td
/F1.0 8 Tf
[<5072> -15 <696365>] TJ
ET
BT
138.276 1302.2 Td
/F1.0 8 Tf
[<517479>] TJ
ET
BT
187.176 1302.2 Td
/F1.0 8 Tf
[<54> 120 <6f74616c>] TJ
ET
0.0 1292.944 m
210.0 1292.944 l
S
BT
0.0 1282.2 Td
/F1.0 8 Tf
[<746573745f6974656d31202d>] TJ
ET
BT
0.0 1272.952 Td
/F1.0 8 Tf
[<74657374315f736d616c6c>] TJ
ET
BT
98.312 1282.2 Td
/F1.0 8 Tf
[<312c3030302e30>] TJ
ET
BT
138.94 1282.2 Td
/F1.0 8 Tf
[<312e30>] TJ
ET
BT
177.312 1282.2 Td
/F1.0 8 Tf
[<312c3030302e30>] TJ
ET
0.0 1264.448 m
210.0 1264.448 l
S
BT
0.0 1253.704 Td
/F1.0 8 Tf
[<5375622054> 120 <6f74616c>] TJ
ET
BT
175.312 1253.704 Td
/F1.0 8 Tf
[<312c3030302e30>] TJ
ET
BT
0.0 1239.456 Td
/F1.0 8 Tf
[<4f76> 25 <6572> 10 <616c6c20446973636f756e743a>] TJ
ET
BT
181.104 1239.456 Td
/F1.0 8 Tf
[<2820302e302029>] TJ
ET
BT
0.0 1225.208 Td
/F1.0 8 Tf
[<536572> -30 <76696365204368617267657320282031302529>] TJ
ET
BT
181.984 1225.208 Td
/F1.0 8 Tf
[<3130302e30>] TJ
ET
BT
0.0 1210.96 Td
/F1.0 8 Tf
[<436f6d6d65726369616c2054> 120 <6178202820352529>] TJ
ET
BT
186.432 1210.96 Td
/F1.0 8 Tf
[<35302e30>] TJ
ET
BT
0.0 1195.276 Td
/F2.0 10 Tf
[<4772616e642054> 80 <6f74616c>] TJ
ET
BT
168.64 1195.276 Td
/F2.0 10 Tf
[<312c3135302e30>] TJ
ET
0.0 1185.556 m
210.0 1185.556 l
S
BT
0.0 1174.812 Td
/F1.0 8 Tf
[<436173682050> 40 <61> 30 <796d656e74>] TJ
ET
BT
175.312 1174.812 Td
/F1.0 8 Tf
[<312c3135302e30>] TJ
ET
BT
0.0 1160.564 Td
/F1.0 8 Tf
[<4368616e676520416d6f756e74>] TJ
ET
BT
190.88 1160.564 Td
/F1.0 8 Tf
[<302e30>] TJ
ET
BT
0.0 1141.316 Td
/F1.0 8 Tf
[<437573746f6d6572204e616d65>] TJ
ET
BT
169.064 1141.316 Td
/F1.0 8 Tf
[<57> 50 <414c4b2d494e>] TJ
ET
0.0 1132.812 m
210.0 1132.812 l
S
BT
0.0 1122.068 Td
/F1.0 8 Tf
[<54> 120 <6f74616c2046> 30 <6f6f6420446973636f756e7473>] TJ
ET
BT
185.552 1122.068 Td
/F1.0 8 Tf
[<28302e3029>] TJ
ET
BT
0.0 1112.82 Td
/F1.0 8 Tf
[<54> 120 <6f74616c204265> 30 <76> 25 <6572> 10 <61676520446973636f756e7473>] TJ
ET
BT
185.552 1112.82 Td
/F1.0 8 Tf
[<28302e3029>] TJ
ET
BT
0.0 1103.572 Td
/F1.0 8 Tf
[<54> 120 <6f74616c2050726f6475637420446973636f756e7473>] TJ
ET
BT
185.552 1103.572 Td
/F1.0 8 Tf
[<28302e3029>] TJ
ET
0.0 1095.068 m
210.0 1095.068 l
S
BT
0.0 1084.324 Td
/F1.0 8 Tf
[<46> 30 <6f6f64>] TJ
ET
BT
175.312 1084.324 Td
/F1.0 8 Tf
[<312c3030302e30>] TJ
ET
BT
0.0 1075.076 Td
/F1.0 8 Tf
[<4265> 30 <76> 25 <6572> 10 <616765>] TJ
ET
BT
190.88 1075.076 Td
/F1.0 8 Tf
[<302e30>] TJ
ET
BT
0.0 1065.828 Td
/F1.0 8 Tf
[<50726f64756374>] TJ
ET
BT
190.88 1065.828 Td
/F1.0 8 Tf
[<302e30>] TJ
ET
0.0 1057.324 m
210.0 1057.324 l
S
BT
0.0 1045.862 Td
/F1.0 9 Tf
[<53706c69742042696c6c2066> 30 <6f72203020706572736f6e73>] TJ
ET
BT
0.0 1031.58 Td
/F1.0 8 Tf
[<416d6f756e7420447565202870657220706572736f6e29>] TJ
ET
BT
193.104 1031.58 Td
/F1.0 8 Tf
[<496e66>] TJ
ET
0.0 1023.076 m
210.0 1023.076 l
S
BT
0.0 1010.896 Td
/F2.0 10 Tf
[<50> 30 <616964>] TJ
ET
BT
102.0 1012.332 Td
/F1.0 8 Tf
[<5468616e6b2059> 140 <6f7521205365652079> 20 <6f7520416761696e>] TJ
ET
Q
endstream
endobj
5 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 210 1450]
/CropBox [0 0 210 1450]
/BleedBox [0 0 210 1450]
/TrimBox [0 0 210 1450]
/ArtBox [0 0 210 1450]
/Contents 4 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font << /F1.0 6 0 R
/F2.0 7 0 R
>>
>>
>>
endobj
6 0 obj
<< /Type /Font
/Subtype /Type1
/BaseFont /Helvetica
/Encoding /WinAnsiEncoding
>>
endobj
7 0 obj
<< /Type /Font
/Subtype /Type1
/BaseFont /Helvetica-Bold
/Encoding /WinAnsiEncoding
>>
endobj
xref
0 8
0000000000 65535 f
0000000015 00000 n
0000000109 00000 n
0000000158 00000 n
0000000215 00000 n
0000004270 00000 n
0000004553 00000 n
0000004650 00000 n
trailer
<< /Size 8
/Root 2 0 R
/Info 1 0 R
>>
startxref
4752
%%EOF

View File

@@ -1,455 +0,0 @@
%PDF-1.3
%ÿÿÿÿ
1 0 obj
<< /Creator <feff0050007200610077006e>
/Producer <feff0050007200610077006e>
>>
endobj
2 0 obj
<< /Type /Catalog
/Pages 3 0 R
>>
endobj
3 0 obj
<< /Type /Pages
/Count 1
/Kids [5 0 R]
>>
endobj
4 0 obj
<< /Length 4003
>>
stream
q
BT
48.975 1417.82 Td
/F1.0 10 Tf
[<4f53414b41204f4853484f2854> 120 <616d77> 10 <6529>] TJ
ET
BT
10.268 1402.696 Td
/F1.0 8 Tf
[<4e6f> 40 <2e203235362c204b> 50 <79> 20 <61696b6b6173616e20526f61642c2054> 120 <616d77> 10 <652054> 120 <6f> 15 <776e73686970> 35 <2c2059> 140 <616e676f6e>] TJ
ET
BT
71.904 1388.448 Td
/F1.0 8 Tf
[<54> 120 <656c3a2030392d323538363736363131>] TJ
ET
0.0 1379.944 m
210.0 1379.944 l
S
0.0 1379.944 m
210.0 1379.944 l
S
BT
0.0 1367.2 Td
/F1.0 8 Tf
[<52656365697074204e6f3a207177> 10 <65722d32303138303330372d3830>] TJ
ET
BT
0.0 1347.2 Td
/F1.0 8 Tf
[<54> 120 <6162> 20 <6c65202d207432>] TJ
ET
BT
100.0 1347.2 Td
/F1.0 8 Tf
[<573a2043617368696572>] TJ
ET
BT
160.216 1347.2 Td
/F1.0 8 Tf
[<433a2043617368696572>] TJ
ET
BT
0.0 1327.2 Td
/F1.0 8 Tf
[<44617465203a2030372d30332d323031382830363a303720504d2d30363a303720504d29>] TJ
ET
0.0 1312.944 m
210.0 1312.944 l
S
BT
0.0 1302.2 Td
/F1.0 8 Tf
[<4974656d73>] TJ
ET
BT
106.656 1302.2 Td
/F1.0 8 Tf
[<5072> -15 <696365>] TJ
ET
BT
138.276 1302.2 Td
/F1.0 8 Tf
[<517479>] TJ
ET
BT
187.176 1302.2 Td
/F1.0 8 Tf
[<54> 120 <6f74616c>] TJ
ET
0.0 1292.944 m
210.0 1292.944 l
S
BT
0.0 1282.2 Td
/F1.0 8 Tf
[<746573745f6974656d31202d>] TJ
ET
BT
0.0 1272.952 Td
/F1.0 8 Tf
[<74657374315f736d616c6c>] TJ
ET
BT
98.312 1282.2 Td
/F1.0 8 Tf
[<312c3030302e30>] TJ
ET
BT
138.94 1282.2 Td
/F1.0 8 Tf
[<312e30>] TJ
ET
BT
177.312 1282.2 Td
/F1.0 8 Tf
[<312c3030302e30>] TJ
ET
0.0 1264.448 m
210.0 1264.448 l
S
BT
0.0 1253.704 Td
/F1.0 8 Tf
[<5375622054> 120 <6f74616c>] TJ
ET
BT
175.312 1253.704 Td
/F1.0 8 Tf
[<312c3030302e30>] TJ
ET
BT
0.0 1239.456 Td
/F1.0 8 Tf
[<4f76> 25 <6572> 10 <616c6c20446973636f756e743a>] TJ
ET
BT
181.104 1239.456 Td
/F1.0 8 Tf
[<2820302e302029>] TJ
ET
BT
0.0 1225.208 Td
/F1.0 8 Tf
[<536572> -30 <76696365204368617267657320282031302529>] TJ
ET
BT
181.984 1225.208 Td
/F1.0 8 Tf
[<3130302e30>] TJ
ET
BT
0.0 1210.96 Td
/F1.0 8 Tf
[<436f6d6d65726369616c2054> 120 <6178202820352529>] TJ
ET
BT
186.432 1210.96 Td
/F1.0 8 Tf
[<35302e30>] TJ
ET
BT
0.0 1195.276 Td
/F2.0 10 Tf
[<4772616e642054> 80 <6f74616c>] TJ
ET
BT
168.64 1195.276 Td
/F2.0 10 Tf
[<312c3135302e30>] TJ
ET
0.0 1185.556 m
210.0 1185.556 l
S
BT
0.0 1174.812 Td
/F1.0 8 Tf
[<436173682050> 40 <61> 30 <796d656e74>] TJ
ET
BT
175.312 1174.812 Td
/F1.0 8 Tf
[<312c3135302e30>] TJ
ET
BT
0.0 1160.564 Td
/F1.0 8 Tf
[<4368616e676520416d6f756e74>] TJ
ET
BT
190.88 1160.564 Td
/F1.0 8 Tf
[<302e30>] TJ
ET
BT
0.0 1141.316 Td
/F1.0 8 Tf
[<437573746f6d6572204e616d65>] TJ
ET
BT
169.064 1141.316 Td
/F1.0 8 Tf
[<57> 50 <414c4b2d494e>] TJ
ET
0.0 1132.812 m
210.0 1132.812 l
S
BT
0.0 1122.068 Td
/F1.0 8 Tf
[<54> 120 <6f74616c2046> 30 <6f6f6420446973636f756e7473>] TJ
ET
BT
185.552 1122.068 Td
/F1.0 8 Tf
[<28302e3029>] TJ
ET
BT
0.0 1112.82 Td
/F1.0 8 Tf
[<54> 120 <6f74616c204265> 30 <76> 25 <6572> 10 <61676520446973636f756e7473>] TJ
ET
BT
185.552 1112.82 Td
/F1.0 8 Tf
[<28302e3029>] TJ
ET
BT
0.0 1103.572 Td
/F1.0 8 Tf
[<54> 120 <6f74616c2050726f6475637420446973636f756e7473>] TJ
ET
BT
185.552 1103.572 Td
/F1.0 8 Tf
[<28302e3029>] TJ
ET
0.0 1095.068 m
210.0 1095.068 l
S
BT
0.0 1084.324 Td
/F1.0 8 Tf
[<46> 30 <6f6f64>] TJ
ET
BT
175.312 1084.324 Td
/F1.0 8 Tf
[<312c3030302e30>] TJ
ET
BT
0.0 1075.076 Td
/F1.0 8 Tf
[<4265> 30 <76> 25 <6572> 10 <616765>] TJ
ET
BT
190.88 1075.076 Td
/F1.0 8 Tf
[<302e30>] TJ
ET
BT
0.0 1065.828 Td
/F1.0 8 Tf
[<50726f64756374>] TJ
ET
BT
190.88 1065.828 Td
/F1.0 8 Tf
[<302e30>] TJ
ET
0.0 1057.324 m
210.0 1057.324 l
S
BT
0.0 1045.862 Td
/F1.0 9 Tf
[<53706c69742042696c6c2066> 30 <6f72203020706572736f6e73>] TJ
ET
BT
0.0 1031.58 Td
/F1.0 8 Tf
[<416d6f756e7420447565202870657220706572736f6e29>] TJ
ET
BT
193.104 1031.58 Td
/F1.0 8 Tf
[<496e66>] TJ
ET
0.0 1023.076 m
210.0 1023.076 l
S
BT
0.0 1010.896 Td
/F2.0 10 Tf
[<50> 30 <616964>] TJ
ET
BT
102.0 1012.332 Td
/F1.0 8 Tf
[<5468616e6b2059> 140 <6f7521205365652079> 20 <6f7520416761696e>] TJ
ET
Q
endstream
endobj
5 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 210 1450]
/CropBox [0 0 210 1450]
/BleedBox [0 0 210 1450]
/TrimBox [0 0 210 1450]
/ArtBox [0 0 210 1450]
/Contents 4 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font << /F1.0 6 0 R
/F2.0 7 0 R
>>
>>
>>
endobj
6 0 obj
<< /Type /Font
/Subtype /Type1
/BaseFont /Helvetica
/Encoding /WinAnsiEncoding
>>
endobj
7 0 obj
<< /Type /Font
/Subtype /Type1
/BaseFont /Helvetica-Bold
/Encoding /WinAnsiEncoding
>>
endobj
xref
0 8
0000000000 65535 f
0000000015 00000 n
0000000109 00000 n
0000000158 00000 n
0000000215 00000 n
0000004270 00000 n
0000004553 00000 n
0000004650 00000 n
trailer
<< /Size 8
/Root 2 0 R
/Info 1 0 R
>>
startxref
4752
%%EOF

View File

@@ -1,455 +0,0 @@
%PDF-1.3
%ÿÿÿÿ
1 0 obj
<< /Creator <feff0050007200610077006e>
/Producer <feff0050007200610077006e>
>>
endobj
2 0 obj
<< /Type /Catalog
/Pages 3 0 R
>>
endobj
3 0 obj
<< /Type /Pages
/Count 1
/Kids [5 0 R]
>>
endobj
4 0 obj
<< /Length 4005
>>
stream
q
BT
48.975 1417.82 Td
/F1.0 10 Tf
[<4f53414b41204f4853484f2854> 120 <616d77> 10 <6529>] TJ
ET
BT
10.268 1402.696 Td
/F1.0 8 Tf
[<4e6f> 40 <2e203235362c204b> 50 <79> 20 <61696b6b6173616e20526f61642c2054> 120 <616d77> 10 <652054> 120 <6f> 15 <776e73686970> 35 <2c2059> 140 <616e676f6e>] TJ
ET
BT
71.904 1388.448 Td
/F1.0 8 Tf
[<54> 120 <656c3a2030392d323538363736363131>] TJ
ET
0.0 1379.944 m
210.0 1379.944 l
S
0.0 1379.944 m
210.0 1379.944 l
S
BT
0.0 1367.2 Td
/F1.0 8 Tf
[<52656365697074204e6f3a207177> 10 <65722d32303138303330372d3831>] TJ
ET
BT
0.0 1347.2 Td
/F1.0 8 Tf
[<54> 120 <6162> 20 <6c65202d207432>] TJ
ET
BT
100.0 1347.2 Td
/F1.0 8 Tf
[<573a2043617368696572>] TJ
ET
BT
160.216 1347.2 Td
/F1.0 8 Tf
[<433a2043617368696572>] TJ
ET
BT
0.0 1327.2 Td
/F1.0 8 Tf
[<44617465203a2030372d30332d323031382830363a303920504d2d30363a303920504d29>] TJ
ET
0.0 1312.944 m
210.0 1312.944 l
S
BT
0.0 1302.2 Td
/F1.0 8 Tf
[<4974656d73>] TJ
ET
BT
106.656 1302.2 Td
/F1.0 8 Tf
[<5072> -15 <696365>] TJ
ET
BT
138.276 1302.2 Td
/F1.0 8 Tf
[<517479>] TJ
ET
BT
187.176 1302.2 Td
/F1.0 8 Tf
[<54> 120 <6f74616c>] TJ
ET
0.0 1292.944 m
210.0 1292.944 l
S
BT
0.0 1282.2 Td
/F1.0 8 Tf
[<746573745f6974656d32202d>] TJ
ET
BT
0.0 1272.952 Td
/F1.0 8 Tf
[<74657374315f736d616c32>] TJ
ET
BT
98.312 1282.2 Td
/F1.0 8 Tf
[<322c3032302e30>] TJ
ET
BT
138.94 1282.2 Td
/F1.0 8 Tf
[<312e30>] TJ
ET
BT
177.312 1282.2 Td
/F1.0 8 Tf
[<322c3032302e30>] TJ
ET
0.0 1264.448 m
210.0 1264.448 l
S
BT
0.0 1253.704 Td
/F1.0 8 Tf
[<5375622054> 120 <6f74616c>] TJ
ET
BT
175.312 1253.704 Td
/F1.0 8 Tf
[<322c3032302e30>] TJ
ET
BT
0.0 1239.456 Td
/F1.0 8 Tf
[<4f76> 25 <6572> 10 <616c6c20446973636f756e743a>] TJ
ET
BT
181.104 1239.456 Td
/F1.0 8 Tf
[<2820302e302029>] TJ
ET
BT
0.0 1225.208 Td
/F1.0 8 Tf
[<536572> -30 <76696365204368617267657320282031302529>] TJ
ET
BT
181.984 1225.208 Td
/F1.0 8 Tf
[<3230322e30>] TJ
ET
BT
0.0 1210.96 Td
/F1.0 8 Tf
[<436f6d6d65726369616c2054> 120 <6178202820352529>] TJ
ET
BT
181.984 1210.96 Td
/F1.0 8 Tf
[<3130312e30>] TJ
ET
BT
0.0 1195.276 Td
/F2.0 10 Tf
[<4772616e642054> 80 <6f74616c>] TJ
ET
BT
168.64 1195.276 Td
/F2.0 10 Tf
[<322c3332332e30>] TJ
ET
0.0 1185.556 m
210.0 1185.556 l
S
BT
0.0 1174.812 Td
/F1.0 8 Tf
[<436173682050> 40 <61> 30 <796d656e74>] TJ
ET
BT
175.312 1174.812 Td
/F1.0 8 Tf
[<322c3332332e30>] TJ
ET
BT
0.0 1160.564 Td
/F1.0 8 Tf
[<4368616e676520416d6f756e74>] TJ
ET
BT
190.88 1160.564 Td
/F1.0 8 Tf
[<302e30>] TJ
ET
BT
0.0 1141.316 Td
/F1.0 8 Tf
[<437573746f6d6572204e616d65>] TJ
ET
BT
169.064 1141.316 Td
/F1.0 8 Tf
[<57> 50 <414c4b2d494e>] TJ
ET
0.0 1132.812 m
210.0 1132.812 l
S
BT
0.0 1122.068 Td
/F1.0 8 Tf
[<54> 120 <6f74616c2046> 30 <6f6f6420446973636f756e7473>] TJ
ET
BT
185.552 1122.068 Td
/F1.0 8 Tf
[<28302e3029>] TJ
ET
BT
0.0 1112.82 Td
/F1.0 8 Tf
[<54> 120 <6f74616c204265> 30 <76> 25 <6572> 10 <61676520446973636f756e7473>] TJ
ET
BT
185.552 1112.82 Td
/F1.0 8 Tf
[<28302e3029>] TJ
ET
BT
0.0 1103.572 Td
/F1.0 8 Tf
[<54> 120 <6f74616c2050726f6475637420446973636f756e7473>] TJ
ET
BT
185.552 1103.572 Td
/F1.0 8 Tf
[<28302e3029>] TJ
ET
0.0 1095.068 m
210.0 1095.068 l
S
BT
0.0 1084.324 Td
/F1.0 8 Tf
[<46> 30 <6f6f64>] TJ
ET
BT
175.312 1084.324 Td
/F1.0 8 Tf
[<322c3032302e30>] TJ
ET
BT
0.0 1075.076 Td
/F1.0 8 Tf
[<4265> 30 <76> 25 <6572> 10 <616765>] TJ
ET
BT
190.88 1075.076 Td
/F1.0 8 Tf
[<302e30>] TJ
ET
BT
0.0 1065.828 Td
/F1.0 8 Tf
[<50726f64756374>] TJ
ET
BT
190.88 1065.828 Td
/F1.0 8 Tf
[<302e30>] TJ
ET
0.0 1057.324 m
210.0 1057.324 l
S
BT
0.0 1045.862 Td
/F1.0 9 Tf
[<53706c69742042696c6c2066> 30 <6f72203020706572736f6e73>] TJ
ET
BT
0.0 1031.58 Td
/F1.0 8 Tf
[<416d6f756e7420447565202870657220706572736f6e29>] TJ
ET
BT
193.104 1031.58 Td
/F1.0 8 Tf
[<496e66>] TJ
ET
0.0 1023.076 m
210.0 1023.076 l
S
BT
0.0 1010.896 Td
/F2.0 10 Tf
[<50> 30 <616964>] TJ
ET
BT
102.0 1012.332 Td
/F1.0 8 Tf
[<5468616e6b2059> 140 <6f7521205365652079> 20 <6f7520416761696e>] TJ
ET
Q
endstream
endobj
5 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 210 1450]
/CropBox [0 0 210 1450]
/BleedBox [0 0 210 1450]
/TrimBox [0 0 210 1450]
/ArtBox [0 0 210 1450]
/Contents 4 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font << /F1.0 6 0 R
/F2.0 7 0 R
>>
>>
>>
endobj
6 0 obj
<< /Type /Font
/Subtype /Type1
/BaseFont /Helvetica
/Encoding /WinAnsiEncoding
>>
endobj
7 0 obj
<< /Type /Font
/Subtype /Type1
/BaseFont /Helvetica-Bold
/Encoding /WinAnsiEncoding
>>
endobj
xref
0 8
0000000000 65535 f
0000000015 00000 n
0000000109 00000 n
0000000158 00000 n
0000000215 00000 n
0000004272 00000 n
0000004555 00000 n
0000004652 00000 n
trailer
<< /Size 8
/Root 2 0 R
/Info 1 0 R
>>
startxref
4754
%%EOF

View File

@@ -1,455 +0,0 @@
%PDF-1.3
%ÿÿÿÿ
1 0 obj
<< /Creator <feff0050007200610077006e>
/Producer <feff0050007200610077006e>
>>
endobj
2 0 obj
<< /Type /Catalog
/Pages 3 0 R
>>
endobj
3 0 obj
<< /Type /Pages
/Count 1
/Kids [5 0 R]
>>
endobj
4 0 obj
<< /Length 4012
>>
stream
q
BT
48.975 1417.82 Td
/F1.0 10 Tf
[<4f53414b41204f4853484f2854> 120 <616d77> 10 <6529>] TJ
ET
BT
10.268 1402.696 Td
/F1.0 8 Tf
[<4e6f> 40 <2e203235362c204b> 50 <79> 20 <61696b6b6173616e20526f61642c2054> 120 <616d77> 10 <652054> 120 <6f> 15 <776e73686970> 35 <2c2059> 140 <616e676f6e>] TJ
ET
BT
71.904 1388.448 Td
/F1.0 8 Tf
[<54> 120 <656c3a2030392d323538363736363131>] TJ
ET
0.0 1379.944 m
210.0 1379.944 l
S
0.0 1379.944 m
210.0 1379.944 l
S
BT
0.0 1367.2 Td
/F1.0 8 Tf
[<52656365697074204e6f3a207177> 10 <65722d32303138303330372d3832>] TJ
ET
BT
0.0 1347.2 Td
/F1.0 8 Tf
[<54> 120 <6162> 20 <6c65202d207431>] TJ
ET
BT
100.0 1347.2 Td
/F1.0 8 Tf
[<573a2043617368696572>] TJ
ET
BT
160.216 1347.2 Td
/F1.0 8 Tf
[<433a2043617368696572>] TJ
ET
BT
0.0 1327.2 Td
/F1.0 8 Tf
[<44617465203a2030372d30332d323031382830363a313320504d2d30363a313320504d29>] TJ
ET
0.0 1312.944 m
210.0 1312.944 l
S
BT
0.0 1302.2 Td
/F1.0 8 Tf
[<4974656d73>] TJ
ET
BT
106.656 1302.2 Td
/F1.0 8 Tf
[<5072> -15 <696365>] TJ
ET
BT
138.276 1302.2 Td
/F1.0 8 Tf
[<517479>] TJ
ET
BT
187.176 1302.2 Td
/F1.0 8 Tf
[<54> 120 <6f74616c>] TJ
ET
0.0 1292.944 m
210.0 1292.944 l
S
BT
0.0 1282.2 Td
/F1.0 8 Tf
[<746573745f6974656d31202d>] TJ
ET
BT
0.0 1272.952 Td
/F1.0 8 Tf
[<74657374315f736d616c6c>] TJ
ET
BT
98.312 1282.2 Td
/F1.0 8 Tf
[<312c3030302e30>] TJ
ET
BT
138.94 1282.2 Td
/F1.0 8 Tf
[<312e30>] TJ
ET
BT
177.312 1282.2 Td
/F1.0 8 Tf
[<312c3030302e30>] TJ
ET
0.0 1264.448 m
210.0 1264.448 l
S
BT
0.0 1253.704 Td
/F1.0 8 Tf
[<5375622054> 120 <6f74616c>] TJ
ET
BT
175.312 1253.704 Td
/F1.0 8 Tf
[<312c3030302e30>] TJ
ET
BT
0.0 1239.456 Td
/F1.0 8 Tf
[<4f76> 25 <6572> 10 <616c6c20446973636f756e743a>] TJ
ET
BT
181.104 1239.456 Td
/F1.0 8 Tf
[<2820302e302029>] TJ
ET
BT
0.0 1225.208 Td
/F1.0 8 Tf
[<536572> -30 <76696365204368617267657320282031302529>] TJ
ET
BT
181.984 1225.208 Td
/F1.0 8 Tf
[<3130302e30>] TJ
ET
BT
0.0 1210.96 Td
/F1.0 8 Tf
[<436f6d6d65726369616c2054> 120 <6178202820352529>] TJ
ET
BT
186.432 1210.96 Td
/F1.0 8 Tf
[<35302e30>] TJ
ET
BT
0.0 1195.276 Td
/F2.0 10 Tf
[<4772616e642054> 80 <6f74616c>] TJ
ET
BT
168.64 1195.276 Td
/F2.0 10 Tf
[<312c3135302e30>] TJ
ET
0.0 1185.556 m
210.0 1185.556 l
S
BT
0.0 1174.812 Td
/F1.0 8 Tf
[<436173682050> 40 <61> 30 <796d656e74>] TJ
ET
BT
175.312 1174.812 Td
/F1.0 8 Tf
[<322c3330302e30>] TJ
ET
BT
0.0 1160.564 Td
/F1.0 8 Tf
[<4368616e676520416d6f756e74>] TJ
ET
BT
175.312 1160.564 Td
/F1.0 8 Tf
[<312c3135302e30>] TJ
ET
BT
0.0 1141.316 Td
/F1.0 8 Tf
[<437573746f6d6572204e616d65>] TJ
ET
BT
169.064 1141.316 Td
/F1.0 8 Tf
[<57> 50 <414c4b2d494e>] TJ
ET
0.0 1132.812 m
210.0 1132.812 l
S
BT
0.0 1122.068 Td
/F1.0 8 Tf
[<54> 120 <6f74616c2046> 30 <6f6f6420446973636f756e7473>] TJ
ET
BT
185.552 1122.068 Td
/F1.0 8 Tf
[<28302e3029>] TJ
ET
BT
0.0 1112.82 Td
/F1.0 8 Tf
[<54> 120 <6f74616c204265> 30 <76> 25 <6572> 10 <61676520446973636f756e7473>] TJ
ET
BT
185.552 1112.82 Td
/F1.0 8 Tf
[<28302e3029>] TJ
ET
BT
0.0 1103.572 Td
/F1.0 8 Tf
[<54> 120 <6f74616c2050726f6475637420446973636f756e7473>] TJ
ET
BT
185.552 1103.572 Td
/F1.0 8 Tf
[<28302e3029>] TJ
ET
0.0 1095.068 m
210.0 1095.068 l
S
BT
0.0 1084.324 Td
/F1.0 8 Tf
[<46> 30 <6f6f64>] TJ
ET
BT
175.312 1084.324 Td
/F1.0 8 Tf
[<312c3030302e30>] TJ
ET
BT
0.0 1075.076 Td
/F1.0 8 Tf
[<4265> 30 <76> 25 <6572> 10 <616765>] TJ
ET
BT
190.88 1075.076 Td
/F1.0 8 Tf
[<302e30>] TJ
ET
BT
0.0 1065.828 Td
/F1.0 8 Tf
[<50726f64756374>] TJ
ET
BT
190.88 1065.828 Td
/F1.0 8 Tf
[<302e30>] TJ
ET
0.0 1057.324 m
210.0 1057.324 l
S
BT
0.0 1045.862 Td
/F1.0 9 Tf
[<53706c69742042696c6c2066> 30 <6f72203020706572736f6e73>] TJ
ET
BT
0.0 1031.58 Td
/F1.0 8 Tf
[<416d6f756e7420447565202870657220706572736f6e29>] TJ
ET
BT
193.104 1031.58 Td
/F1.0 8 Tf
[<496e66>] TJ
ET
0.0 1023.076 m
210.0 1023.076 l
S
BT
0.0 1010.896 Td
/F2.0 10 Tf
[<50> 30 <616964>] TJ
ET
BT
102.0 1012.332 Td
/F1.0 8 Tf
[<5468616e6b2059> 140 <6f7521205365652079> 20 <6f7520416761696e>] TJ
ET
Q
endstream
endobj
5 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 210 1450]
/CropBox [0 0 210 1450]
/BleedBox [0 0 210 1450]
/TrimBox [0 0 210 1450]
/ArtBox [0 0 210 1450]
/Contents 4 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font << /F1.0 6 0 R
/F2.0 7 0 R
>>
>>
>>
endobj
6 0 obj
<< /Type /Font
/Subtype /Type1
/BaseFont /Helvetica
/Encoding /WinAnsiEncoding
>>
endobj
7 0 obj
<< /Type /Font
/Subtype /Type1
/BaseFont /Helvetica-Bold
/Encoding /WinAnsiEncoding
>>
endobj
xref
0 8
0000000000 65535 f
0000000015 00000 n
0000000109 00000 n
0000000158 00000 n
0000000215 00000 n
0000004279 00000 n
0000004562 00000 n
0000004659 00000 n
trailer
<< /Size 8
/Root 2 0 R
/Info 1 0 R
>>
startxref
4761
%%EOF

View File

@@ -1,455 +0,0 @@
%PDF-1.3
%ÿÿÿÿ
1 0 obj
<< /Creator <feff0050007200610077006e>
/Producer <feff0050007200610077006e>
>>
endobj
2 0 obj
<< /Type /Catalog
/Pages 3 0 R
>>
endobj
3 0 obj
<< /Type /Pages
/Count 1
/Kids [5 0 R]
>>
endobj
4 0 obj
<< /Length 4003
>>
stream
q
BT
48.975 1417.82 Td
/F1.0 10 Tf
[<4f53414b41204f4853484f2854> 120 <616d77> 10 <6529>] TJ
ET
BT
10.268 1402.696 Td
/F1.0 8 Tf
[<4e6f> 40 <2e203235362c204b> 50 <79> 20 <61696b6b6173616e20526f61642c2054> 120 <616d77> 10 <652054> 120 <6f> 15 <776e73686970> 35 <2c2059> 140 <616e676f6e>] TJ
ET
BT
71.904 1388.448 Td
/F1.0 8 Tf
[<54> 120 <656c3a2030392d323538363736363131>] TJ
ET
0.0 1379.944 m
210.0 1379.944 l
S
0.0 1379.944 m
210.0 1379.944 l
S
BT
0.0 1367.2 Td
/F1.0 8 Tf
[<52656365697074204e6f3a207177> 10 <65722d32303138303330372d3833>] TJ
ET
BT
0.0 1347.2 Td
/F1.0 8 Tf
[<54> 120 <6162> 20 <6c65202d207431>] TJ
ET
BT
100.0 1347.2 Td
/F1.0 8 Tf
[<573a2043617368696572>] TJ
ET
BT
160.216 1347.2 Td
/F1.0 8 Tf
[<433a2043617368696572>] TJ
ET
BT
0.0 1327.2 Td
/F1.0 8 Tf
[<44617465203a2030372d30332d323031382830363a313720504d2d30363a313720504d29>] TJ
ET
0.0 1312.944 m
210.0 1312.944 l
S
BT
0.0 1302.2 Td
/F1.0 8 Tf
[<4974656d73>] TJ
ET
BT
106.656 1302.2 Td
/F1.0 8 Tf
[<5072> -15 <696365>] TJ
ET
BT
138.276 1302.2 Td
/F1.0 8 Tf
[<517479>] TJ
ET
BT
187.176 1302.2 Td
/F1.0 8 Tf
[<54> 120 <6f74616c>] TJ
ET
0.0 1292.944 m
210.0 1292.944 l
S
BT
0.0 1282.2 Td
/F1.0 8 Tf
[<746573745f6974656d31202d>] TJ
ET
BT
0.0 1272.952 Td
/F1.0 8 Tf
[<74657374315f736d616c6c>] TJ
ET
BT
98.312 1282.2 Td
/F1.0 8 Tf
[<312c3030302e30>] TJ
ET
BT
138.94 1282.2 Td
/F1.0 8 Tf
[<312e30>] TJ
ET
BT
177.312 1282.2 Td
/F1.0 8 Tf
[<312c3030302e30>] TJ
ET
0.0 1264.448 m
210.0 1264.448 l
S
BT
0.0 1253.704 Td
/F1.0 8 Tf
[<5375622054> 120 <6f74616c>] TJ
ET
BT
175.312 1253.704 Td
/F1.0 8 Tf
[<312c3030302e30>] TJ
ET
BT
0.0 1239.456 Td
/F1.0 8 Tf
[<4f76> 25 <6572> 10 <616c6c20446973636f756e743a>] TJ
ET
BT
181.104 1239.456 Td
/F1.0 8 Tf
[<2820302e302029>] TJ
ET
BT
0.0 1225.208 Td
/F1.0 8 Tf
[<536572> -30 <76696365204368617267657320282031302529>] TJ
ET
BT
181.984 1225.208 Td
/F1.0 8 Tf
[<3130302e30>] TJ
ET
BT
0.0 1210.96 Td
/F1.0 8 Tf
[<436f6d6d65726369616c2054> 120 <6178202820352529>] TJ
ET
BT
186.432 1210.96 Td
/F1.0 8 Tf
[<35302e30>] TJ
ET
BT
0.0 1195.276 Td
/F2.0 10 Tf
[<4772616e642054> 80 <6f74616c>] TJ
ET
BT
168.64 1195.276 Td
/F2.0 10 Tf
[<312c3135302e30>] TJ
ET
0.0 1185.556 m
210.0 1185.556 l
S
BT
0.0 1174.812 Td
/F1.0 8 Tf
[<436173682050> 40 <61> 30 <796d656e74>] TJ
ET
BT
175.312 1174.812 Td
/F1.0 8 Tf
[<312c3135302e30>] TJ
ET
BT
0.0 1160.564 Td
/F1.0 8 Tf
[<4368616e676520416d6f756e74>] TJ
ET
BT
190.88 1160.564 Td
/F1.0 8 Tf
[<302e30>] TJ
ET
BT
0.0 1141.316 Td
/F1.0 8 Tf
[<437573746f6d6572204e616d65>] TJ
ET
BT
169.064 1141.316 Td
/F1.0 8 Tf
[<57> 50 <414c4b2d494e>] TJ
ET
0.0 1132.812 m
210.0 1132.812 l
S
BT
0.0 1122.068 Td
/F1.0 8 Tf
[<54> 120 <6f74616c2046> 30 <6f6f6420446973636f756e7473>] TJ
ET
BT
185.552 1122.068 Td
/F1.0 8 Tf
[<28302e3029>] TJ
ET
BT
0.0 1112.82 Td
/F1.0 8 Tf
[<54> 120 <6f74616c204265> 30 <76> 25 <6572> 10 <61676520446973636f756e7473>] TJ
ET
BT
185.552 1112.82 Td
/F1.0 8 Tf
[<28302e3029>] TJ
ET
BT
0.0 1103.572 Td
/F1.0 8 Tf
[<54> 120 <6f74616c2050726f6475637420446973636f756e7473>] TJ
ET
BT
185.552 1103.572 Td
/F1.0 8 Tf
[<28302e3029>] TJ
ET
0.0 1095.068 m
210.0 1095.068 l
S
BT
0.0 1084.324 Td
/F1.0 8 Tf
[<46> 30 <6f6f64>] TJ
ET
BT
175.312 1084.324 Td
/F1.0 8 Tf
[<312c3030302e30>] TJ
ET
BT
0.0 1075.076 Td
/F1.0 8 Tf
[<4265> 30 <76> 25 <6572> 10 <616765>] TJ
ET
BT
190.88 1075.076 Td
/F1.0 8 Tf
[<302e30>] TJ
ET
BT
0.0 1065.828 Td
/F1.0 8 Tf
[<50726f64756374>] TJ
ET
BT
190.88 1065.828 Td
/F1.0 8 Tf
[<302e30>] TJ
ET
0.0 1057.324 m
210.0 1057.324 l
S
BT
0.0 1045.862 Td
/F1.0 9 Tf
[<53706c69742042696c6c2066> 30 <6f72203020706572736f6e73>] TJ
ET
BT
0.0 1031.58 Td
/F1.0 8 Tf
[<416d6f756e7420447565202870657220706572736f6e29>] TJ
ET
BT
193.104 1031.58 Td
/F1.0 8 Tf
[<496e66>] TJ
ET
0.0 1023.076 m
210.0 1023.076 l
S
BT
0.0 1010.896 Td
/F2.0 10 Tf
[<50> 30 <616964>] TJ
ET
BT
102.0 1012.332 Td
/F1.0 8 Tf
[<5468616e6b2059> 140 <6f7521205365652079> 20 <6f7520416761696e>] TJ
ET
Q
endstream
endobj
5 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [0 0 210 1450]
/CropBox [0 0 210 1450]
/BleedBox [0 0 210 1450]
/TrimBox [0 0 210 1450]
/ArtBox [0 0 210 1450]
/Contents 4 0 R
/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font << /F1.0 6 0 R
/F2.0 7 0 R
>>
>>
>>
endobj
6 0 obj
<< /Type /Font
/Subtype /Type1
/BaseFont /Helvetica
/Encoding /WinAnsiEncoding
>>
endobj
7 0 obj
<< /Type /Font
/Subtype /Type1
/BaseFont /Helvetica-Bold
/Encoding /WinAnsiEncoding
>>
endobj
xref
0 8
0000000000 65535 f
0000000015 00000 n
0000000109 00000 n
0000000158 00000 n
0000000215 00000 n
0000004270 00000 n
0000004553 00000 n
0000004650 00000 n
trailer
<< /Size 8
/Root 2 0 R
/Info 1 0 R
>>
startxref
4752
%%EOF