Merge branch 'r-1902001-01' of gitlab.com:code2lab/SXRestaurant into r-1902001-01
This commit is contained in:
2
Gemfile
2
Gemfile
@@ -41,7 +41,7 @@ gem 'rack-cors'
|
||||
# image upload
|
||||
gem 'carrierwave', '~> 1.0'
|
||||
gem 'mini_magick'
|
||||
gem 'jquery-fileupload-rails'
|
||||
gem 'jquery-fileupload-rails', '~> 0.4.7'
|
||||
|
||||
#Report and Printing gems
|
||||
gem 'cups'
|
||||
|
||||
264
Gemfile.lock
264
Gemfile.lock
@@ -1,83 +1,82 @@
|
||||
GIT
|
||||
remote: https://github.com/capistrano/rbenv.git
|
||||
revision: c029e4128e4a8f25adda35795f5729bd4f62e51f
|
||||
revision: b8807f3bbb3f424ac42cc8838a38822e028d0aa3
|
||||
specs:
|
||||
capistrano-rbenv (2.1.3)
|
||||
capistrano-rbenv (2.1.4)
|
||||
capistrano (~> 3.1)
|
||||
sshkit (~> 1.3)
|
||||
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
actioncable (5.1.4)
|
||||
actionpack (= 5.1.4)
|
||||
actioncable (5.1.7)
|
||||
actionpack (= 5.1.7)
|
||||
nio4r (~> 2.0)
|
||||
websocket-driver (~> 0.6.1)
|
||||
actionmailer (5.1.4)
|
||||
actionpack (= 5.1.4)
|
||||
actionview (= 5.1.4)
|
||||
activejob (= 5.1.4)
|
||||
actionmailer (5.1.7)
|
||||
actionpack (= 5.1.7)
|
||||
actionview (= 5.1.7)
|
||||
activejob (= 5.1.7)
|
||||
mail (~> 2.5, >= 2.5.4)
|
||||
rails-dom-testing (~> 2.0)
|
||||
actionpack (5.1.4)
|
||||
actionview (= 5.1.4)
|
||||
activesupport (= 5.1.4)
|
||||
actionpack (5.1.7)
|
||||
actionview (= 5.1.7)
|
||||
activesupport (= 5.1.7)
|
||||
rack (~> 2.0)
|
||||
rack-test (>= 0.6.3)
|
||||
rails-dom-testing (~> 2.0)
|
||||
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
||||
actionview (5.1.4)
|
||||
activesupport (= 5.1.4)
|
||||
actionview (5.1.7)
|
||||
activesupport (= 5.1.7)
|
||||
builder (~> 3.1)
|
||||
erubi (~> 1.4)
|
||||
rails-dom-testing (~> 2.0)
|
||||
rails-html-sanitizer (~> 1.0, >= 1.0.3)
|
||||
activejob (5.1.4)
|
||||
activesupport (= 5.1.4)
|
||||
activejob (5.1.7)
|
||||
activesupport (= 5.1.7)
|
||||
globalid (>= 0.3.6)
|
||||
activemodel (5.1.4)
|
||||
activesupport (= 5.1.4)
|
||||
activerecord (5.1.4)
|
||||
activemodel (= 5.1.4)
|
||||
activesupport (= 5.1.4)
|
||||
activemodel (5.1.7)
|
||||
activesupport (= 5.1.7)
|
||||
activerecord (5.1.7)
|
||||
activemodel (= 5.1.7)
|
||||
activesupport (= 5.1.7)
|
||||
arel (~> 8.0)
|
||||
activesupport (5.1.4)
|
||||
activesupport (5.1.7)
|
||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||
i18n (~> 0.7)
|
||||
i18n (>= 0.7, < 2)
|
||||
minitest (~> 5.1)
|
||||
tzinfo (~> 1.1)
|
||||
aescrypt (1.0.0)
|
||||
airbrussh (1.3.0)
|
||||
airbrussh (1.3.3)
|
||||
sshkit (>= 1.6.1, != 1.7.0)
|
||||
arel (8.0.0)
|
||||
axlsx (2.0.1)
|
||||
htmlentities (~> 4.3.1)
|
||||
nokogiri (>= 1.4.1)
|
||||
rubyzip (~> 1.0.0)
|
||||
axlsx_rails (0.5.1)
|
||||
axlsx_rails (0.5.2)
|
||||
actionpack (>= 3.1)
|
||||
axlsx (>= 2.0.1)
|
||||
bcrypt (3.1.11)
|
||||
bindex (0.5.0)
|
||||
bcrypt (3.1.13)
|
||||
bindex (0.8.1)
|
||||
builder (3.2.3)
|
||||
byebug (9.1.0)
|
||||
byebug (11.0.1)
|
||||
cancancan (1.17.0)
|
||||
capistrano (3.10.1)
|
||||
capistrano (3.11.1)
|
||||
airbrussh (>= 1.0.0)
|
||||
i18n
|
||||
rake (>= 10.0.0)
|
||||
sshkit (>= 1.9.0)
|
||||
capistrano-bundler (1.3.0)
|
||||
capistrano-bundler (1.6.0)
|
||||
capistrano (~> 3.1)
|
||||
sshkit (~> 1.2)
|
||||
capistrano-rails (1.3.1)
|
||||
capistrano-rails (1.4.0)
|
||||
capistrano (~> 3.1)
|
||||
capistrano-bundler (~> 1.1)
|
||||
carrierwave (1.2.1)
|
||||
carrierwave (1.3.1)
|
||||
activemodel (>= 4.0.0)
|
||||
activesupport (>= 4.0.0)
|
||||
mime-types (>= 1.16)
|
||||
chartkick (2.2.5)
|
||||
chartkick (3.2.1)
|
||||
chronic (0.10.2)
|
||||
chunky_png (1.3.11)
|
||||
coffee-rails (4.2.2)
|
||||
@@ -87,46 +86,45 @@ GEM
|
||||
coffee-script-source
|
||||
execjs
|
||||
coffee-script-source (1.12.2)
|
||||
concurrent-ruby (1.0.5)
|
||||
connection_pool (2.2.1)
|
||||
crass (1.0.2)
|
||||
concurrent-ruby (1.1.5)
|
||||
connection_pool (2.2.2)
|
||||
crass (1.0.4)
|
||||
cups (0.1.10)
|
||||
database_cleaner (1.6.2)
|
||||
database_cleaner (1.7.0)
|
||||
diff-lcs (1.3)
|
||||
erubi (1.7.0)
|
||||
erubi (1.8.0)
|
||||
execjs (2.7.0)
|
||||
factory_girl (4.9.0)
|
||||
activesupport (>= 3.0.0)
|
||||
factory_girl_rails (4.9.0)
|
||||
factory_girl (~> 4.9.0)
|
||||
railties (>= 3.0.0)
|
||||
faker (1.8.4)
|
||||
i18n (~> 0.5)
|
||||
ffi (1.9.18)
|
||||
filterrific (2.1.2)
|
||||
font-awesome-rails (4.7.0.2)
|
||||
railties (>= 3.2, < 5.2)
|
||||
globalid (0.4.1)
|
||||
faker (2.2.2)
|
||||
i18n (~> 1.6.0)
|
||||
ffi (1.11.1)
|
||||
filterrific (5.2.1)
|
||||
font-awesome-rails (4.7.0.5)
|
||||
railties (>= 3.2, < 6.1)
|
||||
globalid (0.4.2)
|
||||
activesupport (>= 4.2.0)
|
||||
htmlentities (4.3.4)
|
||||
httparty (0.15.6)
|
||||
httparty (0.15.7)
|
||||
multi_xml (>= 0.5.2)
|
||||
i18n (0.9.1)
|
||||
i18n (1.6.0)
|
||||
concurrent-ruby (~> 1.0)
|
||||
jbuilder (2.7.0)
|
||||
jbuilder (2.9.1)
|
||||
activesupport (>= 4.2.0)
|
||||
multi_json (>= 1.2)
|
||||
jquery-fileupload-rails (0.4.7)
|
||||
actionpack (>= 3.1)
|
||||
railties (>= 3.1)
|
||||
sass (>= 3.2)
|
||||
jquery-rails (4.3.1)
|
||||
jquery-rails (4.3.5)
|
||||
rails-dom-testing (>= 1, < 3)
|
||||
railties (>= 4.2.0)
|
||||
thor (>= 0.14, < 2.0)
|
||||
jquery-ui-rails (6.0.1)
|
||||
railties (>= 3.2.16)
|
||||
json (2.1.0)
|
||||
json (2.2.0)
|
||||
kaminari (1.0.1)
|
||||
activesupport (>= 4.1.0)
|
||||
kaminari-actionview (= 1.0.1)
|
||||
@@ -142,39 +140,38 @@ GEM
|
||||
listen (3.0.8)
|
||||
rb-fsevent (~> 0.9, >= 0.9.4)
|
||||
rb-inotify (~> 0.9, >= 0.9.7)
|
||||
loofah (2.1.1)
|
||||
loofah (2.2.3)
|
||||
crass (~> 1.0.2)
|
||||
nokogiri (>= 1.5.9)
|
||||
mail (2.7.0)
|
||||
mail (2.7.1)
|
||||
mini_mime (>= 0.1.1)
|
||||
material_icons (2.2.1)
|
||||
railties (>= 3.2)
|
||||
method_source (0.9.0)
|
||||
mime-types (3.1)
|
||||
method_source (0.9.2)
|
||||
mime-types (3.3)
|
||||
mime-types-data (~> 3.2015)
|
||||
mime-types-data (3.2016.0521)
|
||||
mini_magick (4.8.0)
|
||||
mini_mime (1.0.0)
|
||||
mini_portile2 (2.3.0)
|
||||
minitest (5.10.3)
|
||||
momentjs-rails (2.17.1)
|
||||
mime-types-data (3.2019.0904)
|
||||
mini_magick (4.9.5)
|
||||
mini_mime (1.0.2)
|
||||
mini_portile2 (2.4.0)
|
||||
minitest (5.11.3)
|
||||
momentjs-rails (2.20.1)
|
||||
railties (>= 3.1)
|
||||
multi_json (1.12.2)
|
||||
multi_xml (0.6.0)
|
||||
mysql2 (0.4.10)
|
||||
nested_form (0.3.2)
|
||||
net-scp (1.2.1)
|
||||
net-ssh (>= 2.6.5)
|
||||
net-ssh (4.2.0)
|
||||
nio4r (2.1.0)
|
||||
nokogiri (1.8.1)
|
||||
mini_portile2 (~> 2.3.0)
|
||||
net-scp (2.0.0)
|
||||
net-ssh (>= 2.6.5, < 6.0.0)
|
||||
net-ssh (5.2.0)
|
||||
nio4r (2.5.1)
|
||||
nokogiri (1.10.4)
|
||||
mini_portile2 (~> 2.4.0)
|
||||
pdf-core (0.7.0)
|
||||
pdfjs_viewer-rails (0.2.0)
|
||||
pdfjs_viewer-rails (0.3.1)
|
||||
json (> 1.8.4)
|
||||
rails (> 4.2.0)
|
||||
sass-rails (~> 5.0)
|
||||
pg (0.21.0)
|
||||
pg (1.1.4)
|
||||
prawn (2.2.2)
|
||||
pdf-core (~> 0.7.0)
|
||||
ttfunk (~> 1.5)
|
||||
@@ -183,40 +180,40 @@ GEM
|
||||
rqrcode (>= 0.4.1)
|
||||
prawn-table (0.2.2)
|
||||
prawn (>= 1.3.0, < 3.0.0)
|
||||
puma (3.10.0)
|
||||
rack (2.0.3)
|
||||
rack-cors (1.0.2)
|
||||
rack-protection (2.0.0)
|
||||
puma (3.12.1)
|
||||
rack (2.0.7)
|
||||
rack-cors (1.0.3)
|
||||
rack-protection (2.0.7)
|
||||
rack
|
||||
rack-test (0.7.0)
|
||||
rack-test (1.1.0)
|
||||
rack (>= 1.0, < 3)
|
||||
rails (5.1.4)
|
||||
actioncable (= 5.1.4)
|
||||
actionmailer (= 5.1.4)
|
||||
actionpack (= 5.1.4)
|
||||
actionview (= 5.1.4)
|
||||
activejob (= 5.1.4)
|
||||
activemodel (= 5.1.4)
|
||||
activerecord (= 5.1.4)
|
||||
activesupport (= 5.1.4)
|
||||
rails (5.1.7)
|
||||
actioncable (= 5.1.7)
|
||||
actionmailer (= 5.1.7)
|
||||
actionpack (= 5.1.7)
|
||||
actionview (= 5.1.7)
|
||||
activejob (= 5.1.7)
|
||||
activemodel (= 5.1.7)
|
||||
activerecord (= 5.1.7)
|
||||
activesupport (= 5.1.7)
|
||||
bundler (>= 1.3.0)
|
||||
railties (= 5.1.4)
|
||||
railties (= 5.1.7)
|
||||
sprockets-rails (>= 2.0.0)
|
||||
rails-dom-testing (2.0.3)
|
||||
activesupport (>= 4.2.0)
|
||||
nokogiri (>= 1.6)
|
||||
rails-html-sanitizer (1.0.3)
|
||||
loofah (~> 2.0)
|
||||
railties (5.1.4)
|
||||
actionpack (= 5.1.4)
|
||||
activesupport (= 5.1.4)
|
||||
rails-html-sanitizer (1.2.0)
|
||||
loofah (~> 2.2, >= 2.2.2)
|
||||
railties (5.1.7)
|
||||
actionpack (= 5.1.7)
|
||||
activesupport (= 5.1.7)
|
||||
method_source
|
||||
rake (>= 0.8.7)
|
||||
thor (>= 0.18.1, < 2.0)
|
||||
rake (12.2.1)
|
||||
rb-fsevent (0.10.2)
|
||||
rb-inotify (0.9.10)
|
||||
ffi (>= 0.5.0, < 2)
|
||||
rake (12.3.3)
|
||||
rb-fsevent (0.10.3)
|
||||
rb-inotify (0.10.0)
|
||||
ffi (~> 1.0)
|
||||
redis (3.3.5)
|
||||
roo (1.13.2)
|
||||
nokogiri
|
||||
@@ -224,31 +221,31 @@ GEM
|
||||
spreadsheet (> 0.6.4)
|
||||
rqrcode (0.10.1)
|
||||
chunky_png (~> 1.0)
|
||||
rspec-core (3.7.0)
|
||||
rspec-support (~> 3.7.0)
|
||||
rspec-expectations (3.7.0)
|
||||
rspec-core (3.8.2)
|
||||
rspec-support (~> 3.8.0)
|
||||
rspec-expectations (3.8.4)
|
||||
diff-lcs (>= 1.2.0, < 2.0)
|
||||
rspec-support (~> 3.7.0)
|
||||
rspec-mocks (3.7.0)
|
||||
rspec-support (~> 3.8.0)
|
||||
rspec-mocks (3.8.1)
|
||||
diff-lcs (>= 1.2.0, < 2.0)
|
||||
rspec-support (~> 3.7.0)
|
||||
rspec-rails (3.7.1)
|
||||
rspec-support (~> 3.8.0)
|
||||
rspec-rails (3.8.2)
|
||||
actionpack (>= 3.0)
|
||||
activesupport (>= 3.0)
|
||||
railties (>= 3.0)
|
||||
rspec-core (~> 3.7.0)
|
||||
rspec-expectations (~> 3.7.0)
|
||||
rspec-mocks (~> 3.7.0)
|
||||
rspec-support (~> 3.7.0)
|
||||
rspec-support (3.7.0)
|
||||
ruby-ole (1.2.12.1)
|
||||
rspec-core (~> 3.8.0)
|
||||
rspec-expectations (~> 3.8.0)
|
||||
rspec-mocks (~> 3.8.0)
|
||||
rspec-support (~> 3.8.0)
|
||||
rspec-support (3.8.2)
|
||||
ruby-ole (1.2.12.2)
|
||||
rubyzip (1.0.0)
|
||||
sass (3.5.3)
|
||||
sass (3.7.4)
|
||||
sass-listen (~> 4.0.0)
|
||||
sass-listen (4.0.0)
|
||||
rb-fsevent (~> 0.9, >= 0.9.4)
|
||||
rb-inotify (~> 0.9, >= 0.9.7)
|
||||
sass-rails (5.0.6)
|
||||
sass-rails (5.0.7)
|
||||
railties (>= 4.0.0, < 6)
|
||||
sass (~> 3.1)
|
||||
sprockets (>= 2.8, < 4.0)
|
||||
@@ -256,57 +253,56 @@ GEM
|
||||
tilt (>= 1.1, < 3)
|
||||
schema_to_scaffold (0.8.0)
|
||||
activesupport (>= 3.2.1)
|
||||
shoulda-matchers (3.1.2)
|
||||
shoulda-matchers (3.1.3)
|
||||
activesupport (>= 4.0.0)
|
||||
sidekiq (5.0.5)
|
||||
concurrent-ruby (~> 1.0)
|
||||
connection_pool (~> 2.2, >= 2.2.0)
|
||||
sidekiq (5.2.7)
|
||||
connection_pool (~> 2.2, >= 2.2.2)
|
||||
rack (>= 1.5.0)
|
||||
rack-protection (>= 1.5.0)
|
||||
redis (>= 3.3.4, < 5)
|
||||
simple_form (3.5.0)
|
||||
actionpack (> 4, < 5.2)
|
||||
activemodel (> 4, < 5.2)
|
||||
spreadsheet (1.1.4)
|
||||
redis (>= 3.3.5, < 5)
|
||||
simple_form (4.1.0)
|
||||
actionpack (>= 5.0)
|
||||
activemodel (>= 5.0)
|
||||
spreadsheet (1.2.4)
|
||||
ruby-ole (>= 1.0)
|
||||
spring (2.0.2)
|
||||
activesupport (>= 4.2)
|
||||
spring (2.1.0)
|
||||
spring-watcher-listen (2.0.1)
|
||||
listen (>= 2.7, < 4.0)
|
||||
spring (>= 1.2, < 3.0)
|
||||
sprockets (3.7.1)
|
||||
sprockets (3.7.2)
|
||||
concurrent-ruby (~> 1.0)
|
||||
rack (> 1, < 3)
|
||||
sprockets-rails (3.2.1)
|
||||
actionpack (>= 4.0)
|
||||
activesupport (>= 4.0)
|
||||
sprockets (>= 3.0.0)
|
||||
sshkit (1.15.1)
|
||||
sshkit (1.20.0)
|
||||
net-scp (>= 1.1.2)
|
||||
net-ssh (>= 2.8.0)
|
||||
tether-rails (1.4.0)
|
||||
rails (>= 3.1)
|
||||
thor (0.20.0)
|
||||
thor (0.20.3)
|
||||
thread_safe (0.3.6)
|
||||
tilt (2.0.8)
|
||||
tilt (2.0.9)
|
||||
to_xls-rails (1.3.1)
|
||||
spreadsheet (>= 0.8.5)
|
||||
ttfunk (1.5.1)
|
||||
turbolinks (5.0.1)
|
||||
turbolinks-source (~> 5)
|
||||
turbolinks-source (5.0.3)
|
||||
tzinfo (1.2.4)
|
||||
turbolinks (5.2.0)
|
||||
turbolinks-source (~> 5.2)
|
||||
turbolinks-source (5.2.0)
|
||||
tzinfo (1.2.5)
|
||||
thread_safe (~> 0.1)
|
||||
uglifier (3.2.0)
|
||||
uglifier (4.1.20)
|
||||
execjs (>= 0.3.0, < 3)
|
||||
web-console (3.5.1)
|
||||
web-console (3.7.0)
|
||||
actionview (>= 5.0)
|
||||
activemodel (>= 5.0)
|
||||
bindex (>= 0.4.0)
|
||||
railties (>= 5.0)
|
||||
websocket-driver (0.6.5)
|
||||
websocket-extensions (>= 0.1.0)
|
||||
websocket-extensions (0.1.2)
|
||||
whenever (0.9.7)
|
||||
websocket-extensions (0.1.4)
|
||||
whenever (1.0.0)
|
||||
chronic (>= 0.6.3)
|
||||
|
||||
PLATFORMS
|
||||
@@ -334,7 +330,7 @@ DEPENDENCIES
|
||||
font-awesome-rails (~> 4.7, >= 4.7.0.2)
|
||||
httparty (~> 0.15.5)
|
||||
jbuilder (~> 2.5)
|
||||
jquery-fileupload-rails
|
||||
jquery-fileupload-rails (~> 0.4.7)
|
||||
jquery-rails
|
||||
jquery-ui-rails
|
||||
kaminari (~> 1.0.1)
|
||||
@@ -375,4 +371,4 @@ RUBY VERSION
|
||||
ruby 2.4.1p111
|
||||
|
||||
BUNDLED WITH
|
||||
2.0.1
|
||||
2.0.2
|
||||
|
||||
@@ -298,13 +298,6 @@ select.form-control {
|
||||
|
||||
/* Discount */
|
||||
|
||||
.discount-item-row {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
tr.discount-item-row:hover {
|
||||
background-color: #e3e3e3 !important;
|
||||
}
|
||||
.required abbr{
|
||||
color: red !important;
|
||||
}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
class HomeController < ApplicationController
|
||||
class HomeController < ApplicationController
|
||||
# layout "application", except: [:index, :show]
|
||||
# skip_before_action :authenticate, only: [:index, :show, :create, :update, :destroy]
|
||||
# skip_before_action :authenticate, only: [:index, :show, :create, :update, :destroy]
|
||||
|
||||
before_action :check_user, only: :dashboard
|
||||
|
||||
# Special check for only dashboard
|
||||
def check_user
|
||||
def check_user
|
||||
if current_user.nil?
|
||||
redirect_to root_path
|
||||
end
|
||||
@@ -42,8 +42,8 @@ class HomeController < ApplicationController
|
||||
route_by_role(@employee)
|
||||
else
|
||||
flash[:notice] ="Invalid PIN for Employee. Please try again!"
|
||||
render :show
|
||||
end
|
||||
render :show
|
||||
end
|
||||
end
|
||||
|
||||
def create
|
||||
@@ -117,7 +117,8 @@ class HomeController < ApplicationController
|
||||
@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)
|
||||
|
||||
logger.debug 'hourly_sales<>><><><<<<<<>><<<><><><><><><><><><<>><'
|
||||
logger.debug @hourly_sales.to_json
|
||||
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)")
|
||||
@employee_sales = []
|
||||
@@ -145,7 +146,7 @@ class HomeController < ApplicationController
|
||||
if payment.payment_method == "mpu" || payment.payment_method == "visa" || payment.payment_method == "master" || payment.payment_method == "jcb" || payment.payment_method == "unionpay" || payment.payment_method == "alipay"
|
||||
pay = Sale.payment_sale('card', today, current_user,@from,@to,@from_time,@to_time)
|
||||
@sale_data.push({'card' => pay.payment_amount})
|
||||
else
|
||||
else
|
||||
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
|
||||
@@ -154,7 +155,7 @@ class HomeController < ApplicationController
|
||||
@summ_sale = Sale.summary_sale_receipt(today,current_user,@from,@to,@from_time,@to_time)
|
||||
@total_customer, @total_dinein, @total_takeaway, @total_membership = Sale.total_customer(today,current_user,@from,@to,@from_time,@to_time)
|
||||
# @total_other_customer = Sale.total_other_customer(today,current_user)
|
||||
|
||||
|
||||
@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
|
||||
@@ -168,7 +169,7 @@ class HomeController < ApplicationController
|
||||
end
|
||||
|
||||
@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)
|
||||
@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()
|
||||
@@ -231,7 +232,7 @@ 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]
|
||||
|
||||
@@ -243,8 +244,8 @@ class HomeController < ApplicationController
|
||||
# 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')
|
||||
from = DateTime.parse(from).utc.getlocal.strftime('%Y-%m-%d')
|
||||
to = DateTime.parse(to).utc.getlocal.strftime('%Y-%m-%d')
|
||||
end
|
||||
|
||||
return from, to, from_time, to_time
|
||||
|
||||
@@ -7,14 +7,14 @@ class Inventory::InventoryController < BaseInventoryController
|
||||
@inventory_definitions = InventoryDefinition.get_by_category(filter)
|
||||
|
||||
end
|
||||
|
||||
|
||||
def show
|
||||
inventory_definition_id = params[:inventory_definition_id]
|
||||
inventory = InventoryDefinition.find(inventory_definition_id)
|
||||
|
||||
@stock_journals = StockJournal.where(item_code: inventory.item_code)
|
||||
@stock_journals = StockJournal.where(item_code: inventory.item_code).order("id DESC")
|
||||
@stock_journals = Kaminari.paginate_array(@stock_journals).page(params[:page]).per(20)
|
||||
|
||||
|
||||
respond_to do |format|
|
||||
format.html
|
||||
format.xls
|
||||
|
||||
@@ -3,6 +3,8 @@ class Origami::DiscountsController < BaseOrigamiController
|
||||
|
||||
#discount page show from origami index with selected order
|
||||
def index
|
||||
# get printer info
|
||||
@print_settings = PrintSetting.get_precision_delimiter()
|
||||
@webview = false
|
||||
if check_mobile
|
||||
@webview = true
|
||||
|
||||
@@ -17,7 +17,8 @@ class Origami::HomeController < BaseOrigamiController
|
||||
|
||||
# origami table detail
|
||||
def show
|
||||
|
||||
# get printer info
|
||||
@print_settings = PrintSetting.get_precision_delimiter()
|
||||
@webview = check_mobile
|
||||
|
||||
@tables = Table.unscoped.all.active.order('status desc')
|
||||
|
||||
@@ -180,7 +180,7 @@ class Origami::PaymentsController < BaseOrigamiController
|
||||
else
|
||||
sp.kbz_edit_sale_payment(sp.received_amount.to_f, current_user)
|
||||
end
|
||||
|
||||
|
||||
# end
|
||||
|
||||
if !path.include? ("credit_payment")
|
||||
@@ -304,6 +304,12 @@ class Origami::PaymentsController < BaseOrigamiController
|
||||
|
||||
#end
|
||||
end
|
||||
logger.debug 'saleObj++++++++++++++++++++++++++'
|
||||
logger.debug saleObj.to_json
|
||||
if !saleObj.nil?
|
||||
# InventoryJob.perform_now(self.id)
|
||||
InventoryDefinition.calculate_product_count(saleObj)
|
||||
end
|
||||
end
|
||||
|
||||
# status, filename, sale_receipt_no, printer_name = Payment.pay(getCloudDomain, cash, sale_id, member_info, type, tax_type, path, latest_order_no, shop_detail, current_user, nil, nil)
|
||||
@@ -741,6 +747,10 @@ class Origami::PaymentsController < BaseOrigamiController
|
||||
end
|
||||
end
|
||||
# end
|
||||
if !saleObj.nil?
|
||||
#InventoryJob.perform_now(self.id)
|
||||
InventoryDefinition.calculate_product_count(saleObj)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -2,9 +2,9 @@ class Origami::SalesController < BaseOrigamiController
|
||||
def show
|
||||
@webview = false
|
||||
if check_mobile
|
||||
@webview = true
|
||||
@webview = true
|
||||
end
|
||||
|
||||
|
||||
@tables = Table.unscoped.all.active.order('status desc')
|
||||
@rooms = Room.unscoped.all.active.order('status desc')
|
||||
@complete = Sale.completed_sale("cashier")
|
||||
@@ -29,14 +29,11 @@ class Origami::SalesController < BaseOrigamiController
|
||||
sale_data = []
|
||||
table = DiningFacility.find(dining)
|
||||
existing_booking = Booking.find_by_sale_id(sale_id)
|
||||
table.bookings.active.where("DATE_FORMAT(created_at,'%Y-%m-%d') = '#{DateTime.now.strftime('%Y-%m-%d')}' OR DATE_FORMAT(created_at,'%Y-%m-%d') = '#{Date.today.prev_day}' ").each do |booking|
|
||||
# if !booking.checkout_at.nil?
|
||||
# existing_booking.update_attributes(checkout_at: checkout_at)
|
||||
# end
|
||||
if booking.sale_id.nil?
|
||||
table.bookings.active.where("DATE_FORMAT(created_at,'%Y-%m-%d') = '#{DateTime.now.strftime('%Y-%m-%d')}' OR DATE_FORMAT(created_at,'%Y-%m-%d') = '#{Date.today.prev_day}' ").each do |booking|
|
||||
if booking.sale_id.nil?
|
||||
order_array = []
|
||||
booking.booking_orders.each do |booking_order|
|
||||
|
||||
|
||||
booking.booking_status = 'moved'
|
||||
order = Order.find(booking_order.order_id)
|
||||
order.status = 'billed'
|
||||
@@ -60,16 +57,15 @@ class Origami::SalesController < BaseOrigamiController
|
||||
booking.save
|
||||
|
||||
order_array.push(order.order_id)
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
receipt_no = Sale.find(sale_id).receipt_no
|
||||
action_by = current_user.name
|
||||
type = "ADD_TO_EXISTING"
|
||||
|
||||
|
||||
remark = "#{action_by} add to existing order #{order_array} to Receipt No=>#{receipt_no} in #{table.name}"
|
||||
sale_audit = SaleAudit.record_audit_sale(sale_id,remark,action_by,type )
|
||||
|
||||
|
||||
booking_order = BookingOrder.where('booking_id=?',booking)
|
||||
booking_order.each do |bo|
|
||||
bo.booking_id = existing_booking.booking_id
|
||||
@@ -77,10 +73,6 @@ class Origami::SalesController < BaseOrigamiController
|
||||
end
|
||||
end
|
||||
end
|
||||
if !sale_data.empty?
|
||||
# InventoryJob.perform_now(self.id)
|
||||
InventoryDefinition.calculate_product_count(nil,sale_data)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
@@ -8,7 +8,6 @@ class Origami::VoidController < BaseOrigamiController
|
||||
access_code = params[:access_code]
|
||||
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)
|
||||
|
||||
200
app/controllers/reports/hourly_saleitem_controller.bk.rb
Normal file
200
app/controllers/reports/hourly_saleitem_controller.bk.rb
Normal file
@@ -0,0 +1,200 @@
|
||||
class Reports::HourlySaleitemController < BaseReportController
|
||||
authorize_resource :class => false
|
||||
def index
|
||||
|
||||
@account = Account.all
|
||||
from, to = get_date_range_from_params
|
||||
|
||||
shift_sale_range = ''
|
||||
|
||||
shift = ''
|
||||
if params[:shift_name].to_i != 0
|
||||
|
||||
shift_sale_range = Sale.get_by_shift_sale_by_item(from,to,Sale::SALE_STATUS_COMPLETED)
|
||||
|
||||
shift_sale = ShiftSale.find(params[:shift_name])
|
||||
if to.blank?
|
||||
shift = ShiftSale.where('shift_started_at = ? and shift_closed_at is NULL ',shift_sale.shift_started_at)
|
||||
else
|
||||
if shift_sale.shift_closed_at.blank?
|
||||
shift = ShiftSale.where('shift_started_at = ? and shift_closed_at is NULL',shift_sale.shift_started_at)
|
||||
else
|
||||
shift = ShiftSale.where('shift_started_at = ? and shift_closed_at = ? ',shift_sale.shift_started_at, shift_sale.shift_closed_at)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
account_type = params[:account_type]
|
||||
@type = params[:sale_type]
|
||||
@sale_data, @other_charges,@product, @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,account_type)
|
||||
logger.debug 'product>>>>>>>>>>>>>>>>>>>>>>>>>>'
|
||||
# logger.debug @sale_data.group_by {|s| s.date_format }.collect{|key,qty| {"Date" =>key , "total_qty" => qty.sum{|d| d.qty.to_i}}}
|
||||
|
||||
@hourly_total_qty = @sale_data.group_by {|s| s.date_format }.collect{|key,qty| {"date" => key , "total_qty" => qty.sum{|d| d.qty.to_i}}}
|
||||
logger.debug @hourly_total_qty
|
||||
|
||||
@sale_taxes = Sale.get_separate_tax(shift_sale_range,shift,from,to,nil)
|
||||
|
||||
@account_cate_count = Hash.new {|hash, key| hash[key] = 0}
|
||||
@sale_data.each {|acc_cate| @account_cate_count[acc_cate.account_id] += 1}
|
||||
|
||||
|
||||
@menu_cate_count = Hash.new {|hash, key| hash[key] = 0}
|
||||
@sale_data.each {|cate| @menu_cate_count[cate.account_id] += 1}
|
||||
|
||||
|
||||
@totalByAccount = Hash.new {|hash, key| hash[key] = 0}
|
||||
@sale_data.each {|acc| @totalByAccount[acc.account_id] += acc.grand_total}
|
||||
|
||||
@from = from
|
||||
@to = to
|
||||
|
||||
# get printer info
|
||||
@print_settings = PrintSetting.get_precision_delimiter()
|
||||
|
||||
if shift.present?
|
||||
shift.each do |sh|
|
||||
@shift_from = sh.shift_started_at.nil? ? '-' : sh.shift_started_at.utc.getlocal.strftime("%e %b %I:%M%p")
|
||||
@shift_to = sh.shift_closed_at.nil? ? '-' : sh.shift_closed_at.utc.getlocal.strftime("%e %b %I:%M%p")
|
||||
@shift_data = sh
|
||||
end
|
||||
end
|
||||
|
||||
respond_to do |format|
|
||||
format.html
|
||||
format.xls
|
||||
end
|
||||
end
|
||||
|
||||
def show
|
||||
from, to, report_type = get_date_range_from_params
|
||||
@sale_data = Sale.get_by_shift_sale_by_item(from,to,Sale::SALE_STATUS_COMPLETED)
|
||||
sale_data = @sale_data
|
||||
date_arr = Array.new
|
||||
@sale_data.each do |sale|
|
||||
local_opening_date = sale.opening_date.nil? ? '-' : sale.opening_date.utc.getlocal.strftime("%e %b %I:%M%p")
|
||||
local_closing_date = sale.closing_date.nil? ? '-' : sale.closing_date.utc.getlocal.strftime("%e %b %I:%M%p")
|
||||
opening_date = sale.opening_date.nil? ? '-' : sale.opening_date.utc
|
||||
closing_date = sale.closing_date.nil? ? '-' : sale.closing_date.utc
|
||||
shift_id = sale.id.nil? ? '-' : sale.id
|
||||
str = {:shift_id => shift_id, :local_opening_date => local_opening_date, :local_closing_date => local_closing_date, :opening_date => opening_date, :closing_date => closing_date}
|
||||
date_arr.push(str)
|
||||
logger.debug 'show date arr####################'
|
||||
logger.debug date_arr
|
||||
end
|
||||
|
||||
# @totalByAccount = Hash.new {|hash, key| hash[key] = 0}
|
||||
# @sale_data.each {|acc| @totalByAccount[acc.account_id] += acc.grand_total}
|
||||
|
||||
out = {:status => 'ok', :message => date_arr}
|
||||
|
||||
respond_to do |format|
|
||||
format.json { render json: out }
|
||||
end
|
||||
end
|
||||
|
||||
def print_sale_items
|
||||
from, to = get_date_range_from_params
|
||||
|
||||
shift_sale_range = ''
|
||||
|
||||
shift = ''
|
||||
shift_name = 'All Shift'
|
||||
if params[:shift_name].to_i != 0
|
||||
|
||||
shift_sale_range = Sale.get_by_shift_sale_by_item(from,to,Sale::SALE_STATUS_COMPLETED)
|
||||
|
||||
shift_sale = ShiftSale.find(params[:shift_name])
|
||||
if to.blank?
|
||||
shift = ShiftSale.where('shift_started_at = ? and shift_closed_at is NULL ',shift_sale.shift_started_at)
|
||||
else
|
||||
if shift_sale.shift_closed_at.blank?
|
||||
shift = ShiftSale.where('shift_started_at = ? and shift_closed_at is NULL',shift_sale.shift_started_at)
|
||||
else
|
||||
shift = ShiftSale.where('shift_started_at = ? and shift_closed_at = ? ',shift_sale.shift_started_at, shift_sale.shift_closed_at)
|
||||
end
|
||||
end
|
||||
|
||||
sh_name = "#{shift_sale.shift_started_at.utc.getlocal.strftime('%d %B %l:%M%p')} - #{shift_sale.shift_closed_at.utc.getlocal.strftime('%d %B %l:%M%p')}"
|
||||
employee = Employee.find(shift_sale.employee_id)
|
||||
shift_name = employee.nil? ? sh_name : "#{sh_name} (#{employee.name})"
|
||||
end
|
||||
|
||||
shop_details = shop_detail
|
||||
account_type = params[:account_type]
|
||||
@type = params[:period_type]
|
||||
period_name = get_period_name(params[:period])
|
||||
|
||||
@sale_data, @other_charges,@product, @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,account_type)
|
||||
other_charges = Sale.get_other_charges()
|
||||
if shift.present?
|
||||
@total_other_charges = other_charges.where("sales.shift_sale_id IN (?) and sale_status='completed'",shift.to_a)
|
||||
else
|
||||
@total_other_charges = other_charges.where("sales.receipt_date between ? and ? and sale_status='completed'",from,to)
|
||||
end
|
||||
|
||||
# get printer info
|
||||
print_settings = PrintSetting.find_by_unique_code('SaleItemsPdf') # SaleItemsPdf
|
||||
print_settings_star = PrintSetting.find_by_unique_code('SaleItemsStarPdf')
|
||||
|
||||
# if print_settings.nil? && print_settings_star.nil?
|
||||
# @print_setting = PrintSetting.new(name: "SaleItemsPdf", unique_code: "SaleItemsPdf", template: "",font: "Zawgyi-One", header_font_size: "10", item_font_size: "8", printer_name: "", api_settings: "", brand_name: nil, printer_type: nil, page_width: "210", page_height: "1450", print_copies: "1", precision: "0", delimiter: "0", heading_space: "5" )
|
||||
# @print_setting.save
|
||||
# end
|
||||
|
||||
if print_settings.nil?
|
||||
if !print_settings_star.nil?
|
||||
printer = Printer::CashierStationPrinter.new(print_settings_star)
|
||||
printer.print_sale_items_report(print_settings_star, shop_details, period_name, @type, account_type, from, to, shift_name, @sale_data, @total_other_charges)
|
||||
end
|
||||
else
|
||||
printer = Printer::CashierStationPrinter.new(print_settings)
|
||||
printer.print_sale_items_report(print_settings, shop_details, period_name, @type, account_type, from, to, shift_name, @sale_data, @total_other_charges)
|
||||
end
|
||||
|
||||
respond_to do |format|
|
||||
format.html { redirect_to '/en/reports/saleitem/', notice: 'Printing Completed.'}
|
||||
format
|
||||
end
|
||||
end
|
||||
|
||||
def get_period_name(period)
|
||||
period_name = '-'
|
||||
unless period.nil? or period.blank?
|
||||
case period.to_i
|
||||
when PERIOD["today"]
|
||||
period_name = "Today"
|
||||
|
||||
when PERIOD["yesterday"]
|
||||
period_name = "Yesterday"
|
||||
|
||||
when PERIOD["this_week"]
|
||||
period_name = "This Week"
|
||||
|
||||
when PERIOD["last_week"]
|
||||
period_name = "Last Week"
|
||||
|
||||
when PERIOD["last_7"]
|
||||
period_name = "Last 7 days"
|
||||
|
||||
when PERIOD["this_month"]
|
||||
period_name = "This Month"
|
||||
|
||||
when PERIOD["last_month"]
|
||||
period_name = "Last Month"
|
||||
|
||||
when PERIOD["last_30"]
|
||||
period_name = "Last 30 Days"
|
||||
|
||||
when PERIOD["this_year"]
|
||||
period_name = "This Year"
|
||||
|
||||
when PERIOD["last_year"]
|
||||
period_name = "Last Year"
|
||||
|
||||
end
|
||||
end
|
||||
return period_name
|
||||
end
|
||||
|
||||
end
|
||||
198
app/controllers/reports/hourly_saleitem_controller.rb
Normal file
198
app/controllers/reports/hourly_saleitem_controller.rb
Normal file
@@ -0,0 +1,198 @@
|
||||
class Reports::HourlySaleitemController < BaseReportController
|
||||
authorize_resource :class => false
|
||||
def index
|
||||
|
||||
@account = Account.all
|
||||
from, to = get_date_range_from_params
|
||||
|
||||
shift_sale_range = ''
|
||||
|
||||
shift = ''
|
||||
if params[:shift_name].to_i != 0
|
||||
|
||||
shift_sale_range = Sale.get_by_shift_sale_by_item(from,to,Sale::SALE_STATUS_COMPLETED)
|
||||
|
||||
shift_sale = ShiftSale.find(params[:shift_name])
|
||||
if to.blank?
|
||||
shift = ShiftSale.where('shift_started_at = ? and shift_closed_at is NULL ',shift_sale.shift_started_at)
|
||||
else
|
||||
if shift_sale.shift_closed_at.blank?
|
||||
shift = ShiftSale.where('shift_started_at = ? and shift_closed_at is NULL',shift_sale.shift_started_at)
|
||||
else
|
||||
shift = ShiftSale.where('shift_started_at = ? and shift_closed_at = ? ',shift_sale.shift_started_at, shift_sale.shift_closed_at)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
account_type = params[:account_type]
|
||||
@type = params[:sale_type]
|
||||
@sale_data, @other_charges,@product, @discount_data , @cash_data , @card_data , @credit_data , @foc_data , @grand_total , @change_amount = Sale.get_by_hourly_items(shift_sale_range,shift, from, to, Sale::SALE_STATUS_COMPLETED,@type,account_type)
|
||||
# logger.debug 'product>>>>>>>>>>>>>>>>>>>>>>>>>>'
|
||||
# logger.debug @sale_data.group(:date_format)
|
||||
|
||||
@sale_taxes = Sale.get_separate_tax(shift_sale_range,shift,from,to,nil)
|
||||
|
||||
@account_cate_count = Hash.new {|hash, key| hash[key] = 0}
|
||||
@sale_data.each {|acc_cate| @account_cate_count[acc_cate.account_id] += 1}
|
||||
|
||||
|
||||
@menu_cate_count = Hash.new {|hash, key| hash[key] = 0}
|
||||
@sale_data.each {|cate| @menu_cate_count[cate.account_id] += 1}
|
||||
|
||||
|
||||
@totalByAccount = Hash.new {|hash, key| hash[key] = 0}
|
||||
@sale_data.each {|acc| @totalByAccount[acc.account_id] += acc.grand_total}
|
||||
|
||||
@from = from
|
||||
@to = to
|
||||
|
||||
# get printer info
|
||||
@print_settings = PrintSetting.get_precision_delimiter()
|
||||
|
||||
if shift.present?
|
||||
shift.each do |sh|
|
||||
@shift_from = sh.shift_started_at.nil? ? '-' : sh.shift_started_at.utc.getlocal.strftime("%e %b %I:%M%p")
|
||||
@shift_to = sh.shift_closed_at.nil? ? '-' : sh.shift_closed_at.utc.getlocal.strftime("%e %b %I:%M%p")
|
||||
@shift_data = sh
|
||||
end
|
||||
end
|
||||
# @hourly_total_qty = @sale_data.group_by {|s| s.date_format }.collect{|key,qty| {"date" => key , "total_qty" => qty.sum{|d| d.qty.to_i}}}
|
||||
@hourly_total_qty = @sale_data.group_by(&:date_format).map { |k,v|{"date" => k , "total_qty" => v.count }}
|
||||
|
||||
puts @hourly_total_qty.to_json
|
||||
respond_to do |format|
|
||||
format.html
|
||||
format.xls
|
||||
end
|
||||
end
|
||||
|
||||
def show
|
||||
from, to, report_type = get_date_range_from_params
|
||||
@sale_data = Sale.get_by_shift_sale_by_item(from,to,Sale::SALE_STATUS_COMPLETED)
|
||||
sale_data = @sale_data
|
||||
date_arr = Array.new
|
||||
@sale_data.each do |sale|
|
||||
local_opening_date = sale.opening_date.nil? ? '-' : sale.opening_date.utc.getlocal.strftime("%e %b %I:%M%p")
|
||||
local_closing_date = sale.closing_date.nil? ? '-' : sale.closing_date.utc.getlocal.strftime("%e %b %I:%M%p")
|
||||
opening_date = sale.opening_date.nil? ? '-' : sale.opening_date.utc
|
||||
closing_date = sale.closing_date.nil? ? '-' : sale.closing_date.utc
|
||||
shift_id = sale.id.nil? ? '-' : sale.id
|
||||
str = {:shift_id => shift_id, :local_opening_date => local_opening_date, :local_closing_date => local_closing_date, :opening_date => opening_date, :closing_date => closing_date}
|
||||
date_arr.push(str)
|
||||
end
|
||||
|
||||
# @totalByAccount = Hash.new {|hash, key| hash[key] = 0}
|
||||
# @sale_data.each {|acc| @totalByAccount[acc.account_id] += acc.grand_total}
|
||||
|
||||
out = {:status => 'ok', :message => date_arr}
|
||||
|
||||
respond_to do |format|
|
||||
format.json { render json: out }
|
||||
end
|
||||
end
|
||||
|
||||
def print_sale_items
|
||||
from, to = get_date_range_from_params
|
||||
|
||||
shift_sale_range = ''
|
||||
|
||||
shift = ''
|
||||
shift_name = 'All Shift'
|
||||
if params[:shift_name].to_i != 0
|
||||
|
||||
shift_sale_range = Sale.get_by_shift_sale_by_item(from,to,Sale::SALE_STATUS_COMPLETED)
|
||||
|
||||
shift_sale = ShiftSale.find(params[:shift_name])
|
||||
if to.blank?
|
||||
shift = ShiftSale.where('shift_started_at = ? and shift_closed_at is NULL ',shift_sale.shift_started_at)
|
||||
else
|
||||
if shift_sale.shift_closed_at.blank?
|
||||
shift = ShiftSale.where('shift_started_at = ? and shift_closed_at is NULL',shift_sale.shift_started_at)
|
||||
else
|
||||
shift = ShiftSale.where('shift_started_at = ? and shift_closed_at = ? ',shift_sale.shift_started_at, shift_sale.shift_closed_at)
|
||||
end
|
||||
end
|
||||
|
||||
sh_name = "#{shift_sale.shift_started_at.utc.getlocal.strftime('%d %B %l:%M%p')} - #{shift_sale.shift_closed_at.utc.getlocal.strftime('%d %B %l:%M%p')}"
|
||||
employee = Employee.find(shift_sale.employee_id)
|
||||
shift_name = employee.nil? ? sh_name : "#{sh_name} (#{employee.name})"
|
||||
end
|
||||
|
||||
shop_details = shop_detail
|
||||
account_type = params[:account_type]
|
||||
@type = params[:period_type]
|
||||
period_name = get_period_name(params[:period])
|
||||
|
||||
@sale_data, @other_charges,@product, @discount_data , @cash_data , @card_data , @credit_data , @foc_data , @grand_total , @change_amount = Sale.get_by_hourly_items(shift_sale_range,shift, from, to, Sale::SALE_STATUS_COMPLETED,@type,account_type)
|
||||
other_charges = Sale.get_other_charges()
|
||||
if shift.present?
|
||||
@total_other_charges = other_charges.where("sales.shift_sale_id IN (?) and sale_status='completed'",shift.to_a)
|
||||
else
|
||||
@total_other_charges = other_charges.where("sales.receipt_date between ? and ? and sale_status='completed'",from,to)
|
||||
end
|
||||
|
||||
# get printer info
|
||||
print_settings = PrintSetting.find_by_unique_code('SaleItemsPdf') # SaleItemsPdf
|
||||
print_settings_star = PrintSetting.find_by_unique_code('SaleItemsStarPdf')
|
||||
|
||||
# if print_settings.nil? && print_settings_star.nil?
|
||||
# @print_setting = PrintSetting.new(name: "SaleItemsPdf", unique_code: "SaleItemsPdf", template: "",font: "Zawgyi-One", header_font_size: "10", item_font_size: "8", printer_name: "", api_settings: "", brand_name: nil, printer_type: nil, page_width: "210", page_height: "1450", print_copies: "1", precision: "0", delimiter: "0", heading_space: "5" )
|
||||
# @print_setting.save
|
||||
# end
|
||||
|
||||
if print_settings.nil?
|
||||
if !print_settings_star.nil?
|
||||
printer = Printer::CashierStationPrinter.new(print_settings_star)
|
||||
printer.print_sale_items_report(print_settings_star, shop_details, period_name, @type, account_type, from, to, shift_name, @sale_data, @total_other_charges)
|
||||
end
|
||||
else
|
||||
printer = Printer::CashierStationPrinter.new(print_settings)
|
||||
printer.print_sale_items_report(print_settings, shop_details, period_name, @type, account_type, from, to, shift_name, @sale_data, @total_other_charges)
|
||||
end
|
||||
|
||||
respond_to do |format|
|
||||
format.html { redirect_to '/en/reports/saleitem/', notice: 'Printing Completed.'}
|
||||
format
|
||||
end
|
||||
end
|
||||
|
||||
def get_period_name(period)
|
||||
period_name = '-'
|
||||
unless period.nil? or period.blank?
|
||||
case period.to_i
|
||||
when PERIOD["today"]
|
||||
period_name = "Today"
|
||||
|
||||
when PERIOD["yesterday"]
|
||||
period_name = "Yesterday"
|
||||
|
||||
when PERIOD["this_week"]
|
||||
period_name = "This Week"
|
||||
|
||||
when PERIOD["last_week"]
|
||||
period_name = "Last Week"
|
||||
|
||||
when PERIOD["last_7"]
|
||||
period_name = "Last 7 days"
|
||||
|
||||
when PERIOD["this_month"]
|
||||
period_name = "This Month"
|
||||
|
||||
when PERIOD["last_month"]
|
||||
period_name = "Last Month"
|
||||
|
||||
when PERIOD["last_30"]
|
||||
period_name = "Last 30 Days"
|
||||
|
||||
when PERIOD["this_year"]
|
||||
period_name = "This Year"
|
||||
|
||||
when PERIOD["last_year"]
|
||||
period_name = "Last Year"
|
||||
|
||||
end
|
||||
end
|
||||
return period_name
|
||||
end
|
||||
|
||||
end
|
||||
@@ -54,8 +54,7 @@ class Reports::SaleitemController < BaseReportController
|
||||
@shift_data = sh
|
||||
end
|
||||
end
|
||||
|
||||
respond_to do |format|
|
||||
respond_to do |format|
|
||||
format.html
|
||||
format.xls
|
||||
end
|
||||
|
||||
@@ -46,6 +46,5 @@ class Reports::StockCheckController < BaseReportController
|
||||
format.json { render json: out }
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -30,9 +30,6 @@ class Settings::EmployeesController < ApplicationController
|
||||
# POST /employees
|
||||
# POST /employees.json
|
||||
def create
|
||||
puts "puts ssssssssssssssssssssssssss"
|
||||
puts employee_params.to_json
|
||||
|
||||
@employee = Employee.new(employee_params)
|
||||
|
||||
respond_to do |format|
|
||||
|
||||
@@ -64,6 +64,8 @@ class AssignedOrderItem < ApplicationRecord
|
||||
|
||||
private
|
||||
def generate_custom_id
|
||||
self.assigned_order_item_id = SeedGenerator.generate_id(self.class.name, "AOI")
|
||||
if self.assigned_order_item_id.nil?
|
||||
self.assigned_order_item_id = SeedGenerator.generate_id(self.class.name, "AOI")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -122,6 +122,8 @@ class Booking < ApplicationRecord
|
||||
|
||||
private
|
||||
def generate_custom_id
|
||||
self.booking_id = SeedGenerator.generate_id(self.class.name, "BKI")
|
||||
if self.booking_id.nil?
|
||||
self.booking_id = SeedGenerator.generate_id(self.class.name, "BKI")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -35,7 +35,7 @@ class InventoryDefinition < ApplicationRecord
|
||||
end
|
||||
|
||||
def self.check_balance(item,inventory_definition) # item => saleItemOBj
|
||||
stock = StockJournal.where('item_code=?', item.item_instance_code).order("id DESC").first
|
||||
stock = StockJournal.where('item_code=?', item.item_instance_code).order("id DESC").first
|
||||
unless stock.nil?
|
||||
modify_balance(item, stock, inventory_definition)
|
||||
else
|
||||
@@ -44,20 +44,69 @@ class InventoryDefinition < ApplicationRecord
|
||||
end
|
||||
|
||||
def self.modify_balance(item, stock, inventory_definition) #saleitemObj
|
||||
void_qty = 0
|
||||
if item.product_name.downcase.include?("void")
|
||||
void_qty = item.qty.abs.to_i
|
||||
end
|
||||
check_item = StockCheckItem.where('item_code=?', item.item_instance_code).order("id DESC").first
|
||||
if stock.balance.to_i >= item.qty
|
||||
puts ">> stock is greater than order qty"
|
||||
StockJournal.add_to_journal(item, stock.balance, "ok", inventory_definition)
|
||||
if item.qty.to_i > 0
|
||||
StockJournal.add_to_journal(item, stock.balance, "ok", inventory_definition)
|
||||
if !void_qty.nil? | void_qty != 0
|
||||
check_item.different = check_item.different - item.qty
|
||||
check_item.save
|
||||
end
|
||||
else
|
||||
if item.product_name.downcase.include?("void")
|
||||
StockJournal.add_to_journal(item, stock.balance, "void", inventory_definition)
|
||||
check_item.different = check_item.different + void_qty
|
||||
check_item.save
|
||||
end
|
||||
end
|
||||
else
|
||||
puts " << stock is less than order qty"
|
||||
data = item
|
||||
extra_qty = item.qty.to_i - stock.balance.to_i
|
||||
if stock.balance.to_i > 0
|
||||
item.qty = stock.balance.to_i
|
||||
StockJournal.add_to_journal(item, stock.balance, "ok", inventory_definition)
|
||||
data.qty = extra_qty
|
||||
StockJournal.add_to_journal(data, 0, "out of stock", inventory_definition)
|
||||
if item.qty.to_i > 0
|
||||
StockJournal.add_to_journal(item, stock.balance, "ok", inventory_definition)
|
||||
check_item.different = check_item.different - item.qty
|
||||
check_item.save
|
||||
data.qty = extra_qty
|
||||
StockJournal.add_to_journal(data, 0, "out of stock", inventory_definition)
|
||||
if !void_qty.nil? | void_qty != 0
|
||||
check_item.different = check_item.different - item.qty
|
||||
check_item.save
|
||||
else
|
||||
check_item.different = check_item.different + void_qty
|
||||
check_item.save
|
||||
end
|
||||
else
|
||||
if item.product_name.downcase.include?("void")
|
||||
StockJournal.add_to_journal(item, stock.balance, "void", inventory_definition)
|
||||
check_item.different = check_item.different + void_qty
|
||||
check_item.save
|
||||
end
|
||||
end
|
||||
else
|
||||
StockJournal.add_to_journal(item, stock.balance, "out of stock", inventory_definition)
|
||||
if item.qty.to_i > 0
|
||||
StockJournal.add_to_journal(item, stock.balance, "out of stock", inventory_definition)
|
||||
if !void_qty.nil? | void_qty != 0
|
||||
check_item.different = check_item.different - item.qty
|
||||
check_item.save
|
||||
else
|
||||
check_item.different = check_item.different + void_qty
|
||||
check_item.save
|
||||
end
|
||||
else
|
||||
if item.product_name.downcase.include?("void")
|
||||
StockJournal.add_to_journal(item, stock.balance, "void", inventory_definition)
|
||||
check_item.different = check_item.different + void_qty
|
||||
check_item.save
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -72,17 +121,24 @@ class InventoryDefinition < ApplicationRecord
|
||||
" JOIN menu_categories mc ON mc.id = mi.menu_category_id ")
|
||||
.where("mc.id=#{cat_id}")
|
||||
.group("mi.menu_category_id,inventory_definitions.item_code")
|
||||
.order("mi.menu_category_id desc")
|
||||
.order("mi.menu_category_id desc")
|
||||
end
|
||||
|
||||
def self.get_by_category(filter)
|
||||
least_stock = "SELECT (CASE WHEN stock_journals.remark != 'out of stock'
|
||||
THEN (SELECT min(balance) FROM stock_journals
|
||||
WHERE item_code = inventory_definitions.item_code AND remark != 'out of stock'
|
||||
ORDER BY created_at DESC LIMIT 1) ELSE 0 END)
|
||||
FROM stock_journals
|
||||
WHERE stock_journals.item_code = inventory_definitions.item_code
|
||||
ORDER BY stock_journals.created_at DESC LIMIT 1"
|
||||
# THEN (SELECT min(balance) FROM stock_journals
|
||||
# least_stock = "SELECT (CASE WHEN stock_journals.remark != 'out of stock'
|
||||
# THEN (SELECT balance FROM stock_journals
|
||||
# WHERE item_code = inventory_definitions.item_code AND remark != 'out of stock'
|
||||
# ORDER BY created_at DESC LIMIT 1) ELSE 0 END)
|
||||
# FROM stock_journals
|
||||
# WHERE stock_journals.item_code = inventory_definitions.item_code
|
||||
# ORDER BY stock_journals.created_at DESC LIMIT 1"
|
||||
least_stock = "(SELECT
|
||||
(SELECT balance FROM stock_journals WHERE item_code = inventory_definitions.item_code
|
||||
ORDER BY id DESC LIMIT 1)
|
||||
FROM stock_journals
|
||||
WHERE stock_journals.item_code = inventory_definitions.item_code
|
||||
ORDER BY stock_journals.created_at DESC LIMIT 1)"
|
||||
|
||||
@inventory_definitions = InventoryDefinition.select("inventory_definitions.*,
|
||||
(CASE WHEN sj.credit IS NULL THEN 0 ELSE sj.credit END) as credit,
|
||||
@@ -92,13 +148,13 @@ class InventoryDefinition < ApplicationRecord
|
||||
mii.item_instance_name as instance_name," +
|
||||
"mc.name as menu_category_name,mc.id as menu_category_id "
|
||||
)
|
||||
.joins(" LEFT JOIN stock_journals sj ON sj.inventory_definition_id=inventory_definitions.id")
|
||||
.joins(" LEFT JOIN stock_journals sj ON sj.inventory_definition_id=inventory_definitions.id")
|
||||
.joins("JOIN menu_item_instances mii ON mii.item_instance_code = inventory_definitions.item_code" +
|
||||
" JOIN menu_items mi ON mi.id = mii.menu_item_id" +
|
||||
" JOIN menu_categories mc ON mc.id = mi.menu_category_id ")
|
||||
.joins(" JOIN accounts acc ON acc.id = mi.account_id")
|
||||
.where("inventory_definitions.item_code LIKE ? OR inventory_definitions.min_order_level LIKE ?
|
||||
OR inventory_definitions.max_stock_level LIKE ? OR sj.balance LIKE ? OR mi.name LIKE ?
|
||||
.where("inventory_definitions.item_code LIKE ? OR inventory_definitions.min_order_level LIKE ?
|
||||
OR inventory_definitions.max_stock_level LIKE ? OR sj.balance LIKE ? OR mi.name LIKE ?
|
||||
OR mii.item_instance_name LIKE ? OR mc.name LIKE ?","%#{filter}%","%#{filter}%","%#{filter}%",
|
||||
"%#{filter}%","%#{filter}%","%#{filter}%","%#{filter}%")
|
||||
.group("mi.menu_category_id,inventory_definitions.item_code")
|
||||
|
||||
@@ -41,14 +41,14 @@ class Order < ApplicationRecord
|
||||
:booking_status => "assign" })
|
||||
end
|
||||
#end extra time
|
||||
|
||||
|
||||
if self.table_id.to_i > 0
|
||||
table = DiningFacility.find(self.table_id)
|
||||
table.update_attributes(status:"occupied")
|
||||
# table.status = "occupied"
|
||||
# table.save
|
||||
end
|
||||
|
||||
|
||||
else
|
||||
booking = Booking.find(self.booking_id)
|
||||
#add extra time
|
||||
@@ -56,7 +56,7 @@ class Order < ApplicationRecord
|
||||
if !booking.checkout_at.nil?
|
||||
new_time = booking.checkout_at + self.extra_time.to_i
|
||||
booking.update_attributes(checkout_at: new_time)
|
||||
end
|
||||
end
|
||||
end
|
||||
#end extra time
|
||||
end
|
||||
@@ -74,7 +74,7 @@ class Order < ApplicationRecord
|
||||
#Send order to queue one it done!
|
||||
# if self.source != "quick_service"
|
||||
# process_order_queue
|
||||
# end
|
||||
# end
|
||||
|
||||
#send order to broadcast job
|
||||
# send_order_broadcast(booking)
|
||||
@@ -138,7 +138,7 @@ class Order < ApplicationRecord
|
||||
ordered_list.each do |item|
|
||||
|
||||
menu_item = MenuItem.search_by_item_code(item[:item_instance_code])
|
||||
|
||||
|
||||
# For Product while item code not in menu item
|
||||
if menu_item.nil?
|
||||
menu_item = Product.search_by_product_code(item[:item_instance_code])
|
||||
@@ -148,7 +148,7 @@ class Order < ApplicationRecord
|
||||
# Rails.logger.debug menu_item
|
||||
set_order_items = Array.new
|
||||
##If menu Item set item - must add child items to order as well, where price is only take from menu_item
|
||||
if (menu_item[:type] == "SetMenuItem")
|
||||
if (menu_item[:type] == "SetMenuItem")
|
||||
if (item.include? 'sub_items') || (item.include? :sub_items)
|
||||
item[:sub_items].each do |si|
|
||||
# Retrive instance's Price
|
||||
@@ -286,7 +286,7 @@ class Order < ApplicationRecord
|
||||
# Counter number of quantityf
|
||||
end
|
||||
|
||||
|
||||
|
||||
#Process order items and send to order queue
|
||||
def self.pay_process_order_queue(id,table_id)
|
||||
# if ENV["SERVER_MODE"] != 'cloud'
|
||||
@@ -294,7 +294,7 @@ class Order < ApplicationRecord
|
||||
if !sidekiq.nil?
|
||||
OrderQueueProcessorJob.perform_later(id, table_id)
|
||||
else
|
||||
order = Order.find(id)
|
||||
order = Order.find(id)
|
||||
if order
|
||||
oqs = OrderQueueStation.new
|
||||
oqs.process_order(order, table_id)
|
||||
@@ -314,11 +314,11 @@ class Order < ApplicationRecord
|
||||
# OrderBroadcastJob.perform_later(table,type)
|
||||
if ENV["SERVER_MODE"] == 'cloud'
|
||||
from = request.subdomain + "." + request.domain
|
||||
else
|
||||
else
|
||||
from = ""
|
||||
end
|
||||
ActionCable.server.broadcast "order_channel",table: table,type:type,from:from
|
||||
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
@@ -434,7 +434,7 @@ class Order < ApplicationRecord
|
||||
if from.present? && to.present?
|
||||
order = Order.where("DATE_FORMAT(date,'%d-%m-%Y') >= ?" + " AND DATE_FORMAT(date,'%d-%m-%Y') <= ?", from,to)
|
||||
query = order.where(keyword)
|
||||
else
|
||||
else
|
||||
where("order_id LIKE ? OR status LIKE ? OR order_type LIKE ? OR source='#{filter}'","%#{filter}%","%#{filter}%","%#{filter}%")
|
||||
end
|
||||
end
|
||||
@@ -442,12 +442,12 @@ class Order < ApplicationRecord
|
||||
def self.send_customer_view(booking)
|
||||
@status = ""
|
||||
@data_array = Array.new
|
||||
if(!booking.sale_id.nil?)
|
||||
if(!booking.sale_id.nil?)
|
||||
sale = Sale.find(booking.sale_id)
|
||||
if sale.sale_status != "completed" && sale.sale_status != 'void'
|
||||
@data_array.push(sale)
|
||||
@status = "sale"
|
||||
@data_obj = sale
|
||||
@data_obj = sale
|
||||
end
|
||||
else
|
||||
|
||||
@@ -474,7 +474,7 @@ class Order < ApplicationRecord
|
||||
end
|
||||
if ENV["SERVER_MODE"] == 'cloud'
|
||||
from = request.subdomain + "." + request.domain
|
||||
else
|
||||
else
|
||||
from = ""
|
||||
end
|
||||
ActionCable.server.broadcast "second_display_channel",data: @data_array,status:@status,from:from
|
||||
@@ -484,11 +484,11 @@ class Order < ApplicationRecord
|
||||
def self.process_order_queue(order_id,table_id,source)
|
||||
print_status = nil
|
||||
cup_status = nil
|
||||
|
||||
|
||||
#Send to background job for processing
|
||||
order = Order.find(order_id)
|
||||
order = Order.find(order_id)
|
||||
sidekiq = Lookup.find_by_lookup_type("sidekiq")
|
||||
|
||||
|
||||
if ENV["SERVER_MODE"] != 'cloud'
|
||||
cup_status = `#{"sudo service cups status"}`
|
||||
print_status = check_cup_status(cup_status)
|
||||
@@ -526,7 +526,7 @@ class Order < ApplicationRecord
|
||||
else
|
||||
if ENV["SERVER_MODE"] != 'cloud'
|
||||
|
||||
msg = ' Print Error ! Please contact to service'
|
||||
msg = ' Print Error ! Please contact to service'
|
||||
ActionCable.server.broadcast "call_waiter_channel",table: msg,time:'print_error'
|
||||
end
|
||||
if !sidekiq.nil?
|
||||
@@ -557,7 +557,9 @@ class Order < ApplicationRecord
|
||||
private
|
||||
|
||||
def generate_custom_id
|
||||
self.order_id = SeedGenerator.generate_id(self.class.name, "ODR")
|
||||
if self.order_id.nil?
|
||||
self.order_id = SeedGenerator.generate_id(self.class.name, "ODR")
|
||||
end
|
||||
end
|
||||
|
||||
def set_order_date
|
||||
|
||||
@@ -97,6 +97,8 @@ class OrderItem < ApplicationRecord
|
||||
|
||||
private
|
||||
def generate_custom_id
|
||||
self.order_items_id = SeedGenerator.generate_id(self.class.name, "ODI")
|
||||
if self.order_items_id.nil?
|
||||
self.order_items_id = SeedGenerator.generate_id(self.class.name, "ODI")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -84,9 +84,9 @@ class Sale < ApplicationRecord
|
||||
link_order_sale(order.order_id)
|
||||
end
|
||||
# InventoryJob.perform_now(self.id)
|
||||
InventoryDefinition.calculate_product_count(saleObj)
|
||||
# InventoryDefinition.calculate_product_count(saleObj)
|
||||
|
||||
|
||||
|
||||
|
||||
# dining charges
|
||||
charges = DiningCharge.where('dining_facility_id=?',booking.dining_facility_id).take
|
||||
@@ -452,6 +452,7 @@ class Sale < ApplicationRecord
|
||||
self.total_amount = subtotal_price
|
||||
self.total_discount = total_discount
|
||||
self.grand_total = (self.total_amount - self.total_discount) + self.total_tax
|
||||
self.grand_total_round
|
||||
#compute rounding adjustment
|
||||
adjust_rounding
|
||||
|
||||
@@ -460,7 +461,8 @@ class Sale < ApplicationRecord
|
||||
end
|
||||
|
||||
#compute - invoice total
|
||||
def compute_by_sale_items(sale_id, sale_itemss, total_discount,discount_type=nil,order_source=nil,tax_type=nil)
|
||||
def compute_by_sale_items(sale_id, sale_itemss, total_discount,discount_type=nil,order_source=nil,tax_type=nil,type=nil)
|
||||
shop = Shop.first
|
||||
sale = Sale.find(sale_id)
|
||||
sales_items = sale_itemss
|
||||
|
||||
@@ -471,19 +473,23 @@ class Sale < ApplicationRecord
|
||||
|
||||
sales_items.each do |item|
|
||||
#compute each item and added to total
|
||||
subtotal_price = subtotal_price + item.price
|
||||
subtotal_price = subtotal_price + item.price
|
||||
|
||||
# check for item is taxable and calculate
|
||||
if item.is_taxable
|
||||
total_taxable = total_taxable + item.taxable_price
|
||||
end
|
||||
end
|
||||
|
||||
compute_tax(sale, total_taxable, total_discount, order_source, tax_type)
|
||||
|
||||
sale.total_amount = subtotal_price
|
||||
sale.total_discount = total_discount
|
||||
sale.grand_total = (sale.total_amount - sale.total_discount) + sale.total_tax
|
||||
if type =="foc"
|
||||
sale.grand_total = 0
|
||||
else
|
||||
sale.grand_total = (sale.total_amount - sale.total_discount) + sale.total_tax
|
||||
sale.grand_total_round
|
||||
end
|
||||
|
||||
if discount_type == "member_discount"
|
||||
sale.discount_type = discount_type
|
||||
end
|
||||
@@ -519,6 +525,7 @@ class Sale < ApplicationRecord
|
||||
self.total_amount = subtotal_price
|
||||
self.total_discount = total_discount
|
||||
self.grand_total = (self.total_amount - self.total_discount) + self.total_tax
|
||||
self.grand_total_round
|
||||
#compute rounding adjustment
|
||||
adjust_rounding
|
||||
|
||||
@@ -1084,13 +1091,15 @@ def self.get_item_query(type)
|
||||
elsif type == "promotion"
|
||||
sale_type = "#{check_product} and i.status = 'promotion'"
|
||||
end
|
||||
query = Sale.select("acc.title as account_name,
|
||||
query = Sale.select("sales.sale_id,acc.title as account_name,
|
||||
i.item_instance_code as item_code,i.account_id as account_id, " +
|
||||
"SUM(i.qty * i.unit_price) as grand_total,
|
||||
SUM(i.qty) as total_item,i.qty as qty," +
|
||||
"i.status as status_type,i.remark as remark,"+
|
||||
"i.unit_price,i.price as price,i.product_name as product_name, " +
|
||||
"i.menu_category_name,i.menu_category_code as menu_category_id ")
|
||||
"i.menu_category_name,i.menu_category_code as menu_category_id, " +
|
||||
"date_format(CONVERT_TZ(receipt_date,'+00:00', '+06:30'), '%I %p')
|
||||
as date_format")
|
||||
|
||||
query = query.joins("JOIN sale_items i ON i.sale_id = sales.sale_id" +
|
||||
" JOIN shift_sales sh ON sh.`id` = sales.shift_sale_id")
|
||||
@@ -1182,7 +1191,6 @@ def self.get_by_shift_items(shift_sale_range, shift, from, to, status,type,accou
|
||||
|
||||
else
|
||||
query = query.where("sales.receipt_date between ? and ? #{account_type} and sale_status='completed'",from,to)
|
||||
|
||||
if type.nil? || type == 'all' || type == "other"
|
||||
other_charges = other_charges.where("sales.receipt_date between ? and ? and sale_status='completed'",from,to)
|
||||
end
|
||||
@@ -1639,6 +1647,13 @@ end
|
||||
end
|
||||
|
||||
def self.hourly_sales(today,current_user,from,to,from_time,to_time)
|
||||
logger.debug 'hourly_sales<<<<<<<<<<<<<<<<<<<<<<<<'
|
||||
logger.debug today
|
||||
logger.debug current_user.to_json
|
||||
logger.debug from
|
||||
logger.debug to
|
||||
logger.debug from_time
|
||||
logger.debug to_time
|
||||
if (!from.nil? && !to.nil?) && (from != "" && to!="")
|
||||
if current_user.nil?
|
||||
query = Sale.hourly_sale_data(today,nil,from,to,from_time,to_time)
|
||||
@@ -2804,9 +2819,155 @@ def self.employee_sale(today,shift=nil,from=nil,to=nil,from_time=nil,to_time=nil
|
||||
return query
|
||||
end
|
||||
|
||||
# Start hourly sale item report
|
||||
def self.get_by_hourly_items(shift_sale_range, shift, from, to, status,type,account_type)
|
||||
# date_type_selection = get_sql_function_for_report_type(report_type)
|
||||
if account_type.blank?
|
||||
account_type = ''
|
||||
else
|
||||
account_type = " and acc.title = '#{account_type}'"
|
||||
end
|
||||
|
||||
query = self.get_hourly_item_query(type)
|
||||
|
||||
discount_query = 0
|
||||
total_card_amount = 0
|
||||
total_cash_amount = 0
|
||||
total_credit_amount = 0
|
||||
total_foc_amount = 0
|
||||
total_grand_total = 0
|
||||
|
||||
if type.nil? || type == 'all' || type == "other"
|
||||
other_charges = self.get_other_charges()
|
||||
end
|
||||
product = self.get_product_sale()
|
||||
|
||||
if shift.present?
|
||||
query = query.where("sales.shift_sale_id IN (?) #{account_type} and sale_status='completed'",shift.to_a)
|
||||
if type.nil? || type == 'all' || type == "other"
|
||||
other_charges = other_charges.where("sales.shift_sale_id IN (?) and sale_status='completed'",shift.to_a)
|
||||
end
|
||||
product = product.where("sales.shift_sale_id IN (?) and sale_status='completed'",shift.to_a)
|
||||
discount_query = Sale.where("sales.shift_sale_id in (?) and sale_status= 'completed' ", shift.to_a).sum(:total_discount)
|
||||
change_amount = Sale.where("sales.shift_sale_id in (?) and sale_status= 'completed' ", shift.to_a).sum(:amount_changed)
|
||||
sale_cash = Sale.select("SUM(case when (sale_payments.payment_method ='mpu' or sale_payments.payment_method = 'visa' or sale_payments.payment_method = 'master' or sale_payments.payment_method = 'jcb' or sale_payments.payment_method = 'paypar' or sale_payments.payment_method = 'unionpay' or sale_payments.payment_method = 'alipay' or sale_payments.payment_method = 'paymal' or sale_payments.payment_method = 'dinga' or sale_payments.payment_method = 'JunctionPay' or sale_payments.payment_method = 'giftvoucher') then (sale_payments.payment_amount) else 0 end) as card_amount,
|
||||
SUM(case when (sale_payments.payment_method='cash') then (sale_payments.payment_amount) else 0 end) as cash_amount,
|
||||
SUM(case when (sale_payments.payment_method='creditnote') then (sale_payments.payment_amount) else 0 end) as credit_amount,
|
||||
SUM(case when (sale_payments.payment_method='foc') then (sale_payments.payment_amount) else 0 end) as foc_amount")
|
||||
.joins("join sale_payments on sale_payments.sale_id = sales.sale_id")
|
||||
.where("sales.shift_sale_id in (?) and sale_status = 'completed' and sale_payments.payment_amount != 0 ", shift.to_a)
|
||||
sale_cash.each do |s_c|
|
||||
total_cash_amount += s_c.cash_amount.to_f
|
||||
total_card_amount += s_c.card_amount.to_f
|
||||
total_credit_amount += s_c.credit_amount.to_f
|
||||
total_foc_amount += s_c.foc_amount.to_f
|
||||
end
|
||||
total_grand_total = total_cash_amount.to_f + total_card_amount.to_f + total_credit_amount.to_f
|
||||
|
||||
### => get all sales range in shift_sales
|
||||
elsif shift_sale_range.present?
|
||||
query = query.where("sales.shift_sale_id IN (?) #{account_type} and sale_status='completed'",shift_sale_range.to_a)
|
||||
if type.nil? || type == 'all' || type == "other"
|
||||
other_charges = other_charges.where("sales.shift_sale_id IN (?) and sale_status='completed'",shift_sale_range.to_a)
|
||||
end
|
||||
product = product.where("sales.shift_sale_id IN (?) and sale_status='completed'",shift_sale_range.to_a)
|
||||
discount_query = Sale.where("sales.shift_sale_id IN (?) and sale_status ='completed'", shift_sale_range.to_a).sum(:total_discount)
|
||||
change_amount = Sale.where("sales.shift_sale_id IN (?) and sale_status ='completed'", shift_sale_range.to_a).sum(:amount_changed)
|
||||
sale_cash = Sale.select("SUM(case when (sale_payments.payment_method = 'mpu' or sale_payments.payment_method = 'visa' or sale_payments.payment_method = 'master' or sale_payments.payment_method = 'jcb' or sale_payments.payment_method = 'paypar' or sale_payments.payment_method = 'unionpay' or sale_payments.payment_method = 'alipay' sale_payments.payment_method = 'paymal' or sale_payments.payment_method = 'dinga' or sale_payments.payment_method = 'JunctionPay' or sale_payments.payment_method = 'giftvoucher') then (sale_payments.payment_amount) else 0 end) as card_amount,
|
||||
SUM(case when (sale_payments.payment_method='cash') then (sale_payments.payment_amount) else 0 end) as cash_amount,
|
||||
SUM(case when (sale_payments.payment_method='creditnote') then (sale_payments.payment_amount) else 0 end) as credit_amount,
|
||||
SUM(case when (sale_payments.payment_method='foc') then (sale_payments.payment_amount) else 0 end) as foc_amount")
|
||||
.joins("join sale_payments on sale_payments.sale_id = sales.sale_id")
|
||||
.where("sales.shift_sale_id in (?) and sale_status = 'completed' and sale_payments.payment_amount != 0 ", shift_sale_range.to_a)
|
||||
sale_cash.each do |s_c|
|
||||
total_cash_amount += s_c.cash_amount.to_f
|
||||
total_card_amount += s_c.card_amount.to_f
|
||||
total_credit_amount += s_c.credit_amount.to_f
|
||||
total_foc_amount += s_c.foc_amount.to_f
|
||||
end
|
||||
|
||||
total_grand_total = total_cash_amount.to_f + total_card_amount.to_f + total_credit_amount.to_f
|
||||
|
||||
else
|
||||
query = query.where("sales.receipt_date between ? and ? #{account_type} and sale_status='completed'",from,to)
|
||||
if type.nil? || type == 'all' || type == "other"
|
||||
other_charges = other_charges.where("sales.receipt_date between ? and ? and sale_status='completed'",from,to)
|
||||
end
|
||||
product = product.where("sales.receipt_date between ? and ? and sale_status='completed'",from,to)
|
||||
|
||||
discount_query = Sale.where("sales.receipt_date between ? and ? and sale_status ='completed'", from,to).sum(:total_discount)
|
||||
change_amount = Sale.where("sales.receipt_date between ? and ? and sale_status ='completed'", from,to).sum(:amount_changed)
|
||||
sale_cash = Sale.select("SUM(case when (sale_payments.payment_method = 'mpu' or sale_payments.payment_method = 'visa' or sale_payments.payment_method = 'master' or sale_payments.payment_method = 'jcb' or sale_payments.payment_method = 'paypar' or sale_payments.payment_method = 'unionpay' or sale_payments.payment_method = 'alipay' or sale_payments.payment_method = 'paymal' or sale_payments.payment_method = 'dinga' or sale_payments.payment_method = 'JunctionPay' or sale_payments.payment_method = 'giftvoucher') then (sale_payments.payment_amount) else 0 end) as card_amount,
|
||||
SUM(case when (sale_payments.payment_method='cash') then (sale_payments.payment_amount) else 0 end) as cash_amount,
|
||||
SUM(case when (sale_payments.payment_method='creditnote') then (sale_payments.payment_amount) else 0 end) as credit_amount,
|
||||
SUM(case when (sale_payments.payment_method='foc') then (sale_payments.payment_amount) else 0 end) as foc_amount")
|
||||
.joins("join sale_payments on sale_payments.sale_id = sales.sale_id")
|
||||
.where("sales.receipt_date between ? and ? and sale_status = 'completed' and sale_payments.payment_amount != 0 ", from,to)
|
||||
sale_cash.each do |s_c|
|
||||
total_cash_amount += s_c.cash_amount.to_f
|
||||
total_card_amount += s_c.card_amount.to_f
|
||||
total_credit_amount += s_c.credit_amount.to_f
|
||||
total_foc_amount += s_c.foc_amount.to_f
|
||||
end
|
||||
total_grand_total = total_cash_amount.to_f + total_card_amount.to_f + total_credit_amount.to_f
|
||||
|
||||
end
|
||||
|
||||
return query,other_charges, product, discount_query , total_cash_amount , total_card_amount , total_credit_amount , total_foc_amount , total_grand_total , change_amount
|
||||
end
|
||||
|
||||
def self.get_hourly_item_query(type)
|
||||
check_product = "i.menu_category_name != 'product'"
|
||||
if type == "revenue"
|
||||
sale_type = "i.qty > 0 and status IS NULL"
|
||||
elsif type == "all" || type.nil?
|
||||
sale_type = "#{check_product}"
|
||||
elsif type == "discount"
|
||||
sale_type = "#{check_product} and i.status = 'Discount'"
|
||||
elsif type == "foc"
|
||||
sale_type = "#{check_product} and i.status = 'foc' and i.item_instance_code IS NOT NULL and i.qty > 0"
|
||||
elsif type == "void"
|
||||
sale_type = "#{check_product} and i.status = 'void' and i.item_instance_code IS NOT NULL and i.qty > 0"
|
||||
elsif type == "other"
|
||||
sale_type = "#{check_product} and i.item_instance_code IS NULL"
|
||||
elsif type == "promotion"
|
||||
sale_type = "#{check_product} and i.status = 'promotion'"
|
||||
end
|
||||
query = Sale.select("sales.sale_id,acc.title as account_name,
|
||||
i.item_instance_code as item_code,i.account_id as account_id, " +
|
||||
"SUM(i.qty * i.unit_price) as grand_total,
|
||||
SUM(i.qty) as total_item,i.qty as qty," +
|
||||
"i.status as status_type,i.remark as remark,"+
|
||||
"i.unit_price,i.price as price,i.product_name as product_name, " +
|
||||
"i.menu_category_name,i.menu_category_code as menu_category_id, " +
|
||||
"date_format(CONVERT_TZ(receipt_date,'+00:00', '+06:30'), '%I %p')
|
||||
as date_format")
|
||||
|
||||
query = query.joins("JOIN sale_items i ON i.sale_id = sales.sale_id" +
|
||||
" JOIN shift_sales sh ON sh.`id` = sales.shift_sale_id")
|
||||
# "JOIN employee_accesses ea ON ea.`employee_id` = sales.cashier_id ")
|
||||
query = query.joins(" JOIN accounts acc ON acc.id = i.account_id")
|
||||
query = query.where("#{sale_type}")
|
||||
query = query.group("acc.title,i.account_id,i.menu_category_code,i.item_instance_code,i.product_name,i.unit_price")
|
||||
.order("date_format asc")
|
||||
# query = query.order("i.menu_category_name asc, SUM(i.qty) desc")
|
||||
end
|
||||
|
||||
# End hourly sale item report
|
||||
|
||||
|
||||
#not to show decimal in grand total
|
||||
def grand_total_round
|
||||
print_settings = PrintSetting.get_precision_delimiter()
|
||||
if !print_settings.nil?
|
||||
self.grand_total =self.grand_total.round(print_settings.precision.to_i)
|
||||
end
|
||||
end
|
||||
private
|
||||
|
||||
def generate_custom_id
|
||||
self.sale_id = SeedGenerator.generate_id(self.class.name, "SAL")
|
||||
if self.sale_id.nil?
|
||||
self.sale_id = SeedGenerator.generate_id(self.class.name, "SAL")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -176,6 +176,8 @@ class SaleAudit < ApplicationRecord
|
||||
|
||||
private
|
||||
def generate_custom_id
|
||||
self.sale_audit_id = SeedGenerator.generate_id(self.class.name, "SAI")
|
||||
if self.sale_audit_id.nil?
|
||||
self.sale_audit_id = SeedGenerator.generate_id(self.class.name, "SAI")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -85,8 +85,10 @@ class SaleItem < ApplicationRecord
|
||||
# sale_item.is_taxable = 1
|
||||
# sale_item.sale_id = sale_id
|
||||
# sale_item.save
|
||||
sale = Sale.find(sale_id)
|
||||
sale.compute_by_sale_items(sale.id, sale.sale_items, sale.total_discount)
|
||||
if type != "foc"
|
||||
sale = Sale.find(sale_id)
|
||||
sale.compute_by_sale_items(sale.id, sale.sale_items, sale.total_discount)
|
||||
end
|
||||
end
|
||||
|
||||
def self.get_order_items_details(sale_id)
|
||||
@@ -223,6 +225,8 @@ class SaleItem < ApplicationRecord
|
||||
|
||||
private
|
||||
def generate_custom_id
|
||||
self.sale_item_id = SeedGenerator.generate_id(self.class.name, "SLI")
|
||||
if self.sale_item_id.nil?
|
||||
self.sale_item_id = SeedGenerator.generate_id(self.class.name, "SLI")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -34,7 +34,9 @@ class SaleOrder < ApplicationRecord
|
||||
private
|
||||
def generate_sale_order_id
|
||||
# self.class.name
|
||||
saleOrderId = SeedGenerator.generate_id(self.class.name, 'SOI')
|
||||
self.sale_order_id = saleOrderId
|
||||
if self.sale_order_id.nil?
|
||||
self.sale_order_id = SeedGenerator.generate_id(self.class.name, 'SOI')
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
@@ -82,7 +82,6 @@ class SalePayment < ApplicationRecord
|
||||
amount_due = amount_due - payment.payment_amount
|
||||
end
|
||||
end
|
||||
|
||||
if (amount_due >= 0)
|
||||
payment_status = false
|
||||
membership_data = nil
|
||||
@@ -395,7 +394,6 @@ class SalePayment < ApplicationRecord
|
||||
|
||||
self.payment_status = "paid"
|
||||
payment_status = self.save!
|
||||
|
||||
if !payment_for
|
||||
sale_update_payment_status(self.received_amount,status)
|
||||
end
|
||||
@@ -420,6 +418,8 @@ class SalePayment < ApplicationRecord
|
||||
sale_items.each do|item|
|
||||
SaleItem.update_existing_item(item.qty, item, self.sale.sale_id, "foc", item.unit_price, item.price)
|
||||
end
|
||||
sale = Sale.find(self.sale.sale_id)
|
||||
sale.compute_by_sale_items(sale.id, sale.sale_items, sale.total_discount,'','','',"foc")
|
||||
|
||||
self.payment_method = "foc"
|
||||
self.payment_amount = self.received_amount
|
||||
@@ -661,7 +661,6 @@ class SalePayment < ApplicationRecord
|
||||
method_status = true
|
||||
end
|
||||
end
|
||||
|
||||
if (self.sale.grand_total <= all_received_amount) && method_status
|
||||
if is_credit == 0
|
||||
self.sale.payment_status = "paid"
|
||||
@@ -1065,6 +1064,8 @@ class SalePayment < ApplicationRecord
|
||||
|
||||
private
|
||||
def generate_custom_id
|
||||
self.sale_payment_id = SeedGenerator.generate_id(self.class.name, "SPI")
|
||||
if self.sale_payment_id.nil?
|
||||
self.sale_payment_id = SeedGenerator.generate_id(self.class.name, "SPI")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -34,6 +34,8 @@ class SaleTax < ApplicationRecord
|
||||
|
||||
private
|
||||
def generate_custom_id
|
||||
self.sale_tax_id = SeedGenerator.generate_id(self.class.name, "STI")
|
||||
if self.sale_tax_id.nil?
|
||||
self.sale_tax_id = SeedGenerator.generate_id(self.class.name, "STI")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -2,7 +2,14 @@ class StockCheckItem < ApplicationRecord
|
||||
belongs_to :stock_check
|
||||
|
||||
def create(stock_id, item)
|
||||
journal_id, balance = StockCheckItem.find_journal(item['sku'])
|
||||
# check_item = StockCheckItem.find_by_item_code(item['sku'])
|
||||
check_item = StockCheckItem.where('item_code=?', item_code).order("id DESC").first
|
||||
if check_item.nil?
|
||||
balance = 0
|
||||
else
|
||||
balance = check_item.different
|
||||
end
|
||||
journal_id = StockCheckItem.find_journal(item['sku'])
|
||||
remark, different = StockCheckItem.stock_different(item['qty'], balance )
|
||||
self.stock_check_id = stock_id
|
||||
self.item_code = item['sku']
|
||||
@@ -24,13 +31,14 @@ class StockCheckItem < ApplicationRecord
|
||||
end
|
||||
|
||||
def self.stock_different(stock_check_qty, journal_balance)
|
||||
if stock_check_qty.to_i == journal_balance.to_i
|
||||
return 'match', stock_check_qty
|
||||
elsif stock_check_qty.to_i > journal_balance.to_i
|
||||
return 'missing order item', stock_check_qty.to_i - journal_balance.to_i
|
||||
elsif stock_check_qty.to_i < journal_balance.to_i
|
||||
return 'missing stock', stock_check_qty.to_i - journal_balance.to_i
|
||||
end
|
||||
# if stock_check_qty.to_i == journal_balance.to_i
|
||||
# return 'match', stock_check_qty
|
||||
# elsif stock_check_qty.to_i > journal_balance.to_i
|
||||
# return 'missing order item', stock_check_qty.to_i - journal_balance.to_i
|
||||
# elsif stock_check_qty.to_i < journal_balance.to_i
|
||||
# return 'missing stock', stock_check_qty.to_i - journal_balance.to_i
|
||||
# end
|
||||
return 'add new stock', stock_check_qty.to_i + journal_balance.to_i
|
||||
end
|
||||
|
||||
def self.get_transaction(from, to, item_code)
|
||||
|
||||
@@ -5,32 +5,56 @@ class StockJournal < ApplicationRecord
|
||||
|
||||
def self.add_to_journal(item, balance, stock_message, inventory_definition) # item => saleObj | balance => Stock journal
|
||||
journal = StockJournal.new
|
||||
journal.credit = balance
|
||||
if item.qty < 0
|
||||
credit_balance = item.qty.abs.to_i
|
||||
debit = 0
|
||||
else
|
||||
credit_balance = balance
|
||||
debit = item.qty
|
||||
end
|
||||
|
||||
journal.credit = credit_balance
|
||||
balance = calculate_balance(balance, item)
|
||||
|
||||
journal.item_code = item.item_instance_code
|
||||
journal.inventory_definition_id = inventory_definition.id
|
||||
journal.debit = debit
|
||||
journal.balance = balance
|
||||
journal.remark = stock_message
|
||||
journal.trans_ref = item.id
|
||||
journal.trans_type = StockJournal::SALES_TRANS
|
||||
journal.save
|
||||
|
||||
|
||||
|
||||
balance = calculate_balance(balance, item.qty)
|
||||
|
||||
journal.item_code = item.item_instance_code
|
||||
journal.inventory_definition_id = inventory_definition.id
|
||||
journal.debit = item.qty
|
||||
journal.balance = balance
|
||||
journal.remark = stock_message
|
||||
journal.trans_ref = item.id
|
||||
journal.trans_type = StockJournal::SALES_TRANS
|
||||
journal.save
|
||||
end
|
||||
|
||||
def self.calculate_balance(balance, qty)
|
||||
return balance.to_i - qty.to_i
|
||||
def self.calculate_balance(balance, item)
|
||||
if item.product_name.downcase.include?("void")
|
||||
logger.debug 'balance++++++++++++++++++'
|
||||
logger.debug balance
|
||||
logger.debug 'qty+++++++++++++++++++++++'
|
||||
logger.debug item.qty
|
||||
return balance.to_i + item.qty.abs.to_i
|
||||
else
|
||||
return balance.to_i - item.qty.to_i
|
||||
end
|
||||
end
|
||||
|
||||
def self.from_stock_check(item)
|
||||
stock_journal = StockJournal.where('item_code=?', item.item_code).order("id DESC").first
|
||||
if stock_journal.nil?
|
||||
old_blance = 0
|
||||
else
|
||||
old_blance = stock_journal.balance
|
||||
end
|
||||
definition_id = InventoryDefinition.find_by_item_code(item.item_code)
|
||||
journal = StockJournal.new
|
||||
journal.item_code = item.item_code
|
||||
journal.inventory_definition_id = definition_id.id
|
||||
journal.debit = 0
|
||||
journal.credit = item.stock_count
|
||||
journal.balance = item.stock_count
|
||||
journal.balance = item.stock_count + old_blance.to_i
|
||||
journal.remark = StockJournal::STOCK_CHECK_TRANS
|
||||
journal.trans_ref = item.id
|
||||
journal.trans_type = StockJournal::STOCK_CHECK_TRANS
|
||||
@@ -43,7 +67,7 @@ class StockJournal < ApplicationRecord
|
||||
.joins("join menu_item_instances mii on mii.item_instance_code=stock_journals.item_code")
|
||||
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
|
||||
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")
|
||||
|
||||
@@ -29,4 +29,4 @@ if @status == true
|
||||
else
|
||||
json.status false
|
||||
json.error_message @error_message
|
||||
end
|
||||
end
|
||||
|
||||
@@ -124,6 +124,7 @@
|
||||
<% end %>
|
||||
</td>
|
||||
<td><%= crm_customer.card_no rescue '-' %></td>
|
||||
<td><%= crm_customer.paypar_account_no rescue '-' %></td>
|
||||
<td>
|
||||
<% if crm_customer.membership_id.nil? && !crm_customer.membership_type.nil? && !crm_customer.membership_type.blank? && !crm_customer.paypar_account_no.blank? && !crm_customer.paypar_account_no.nil? %>
|
||||
<%= link_to t("views.btn.sync"), crm_customer_sync_path(crm_customer), :class => "btn btn-md bg-green waves-effect" %>
|
||||
|
||||
@@ -10,16 +10,16 @@
|
||||
<!-- <th><%= t("views.right_panel.detail.created_by") %></th>
|
||||
<th><%= t("views.right_panel.detail.created_time") %></th> -->
|
||||
</tr>
|
||||
<% cate_arr = Array.new %>
|
||||
<% cate_arr = Array.new %>
|
||||
<%
|
||||
count = 0
|
||||
@inventory_definitions.each do |item|
|
||||
count = 0
|
||||
@inventory_definitions.each do |item|
|
||||
count += 1
|
||||
%>
|
||||
%>
|
||||
|
||||
<tr>
|
||||
|
||||
<% if !cate_arr.include?(item.menu_category_id) %>
|
||||
<% if !cate_arr.include?(item.menu_category_id) %>
|
||||
<td><%= item.menu_category_name %></td>
|
||||
<% cate_arr.push(item.menu_category_id) %>
|
||||
<% else %>
|
||||
@@ -72,4 +72,4 @@
|
||||
window.location.href = '/inventory/'+ID+'/show';
|
||||
});
|
||||
|
||||
</script>
|
||||
</script>
|
||||
|
||||
@@ -103,9 +103,9 @@
|
||||
<li>
|
||||
<a href="<%= reports_saleitem_index_path %>">Sale Items</a>
|
||||
</li>
|
||||
<li>
|
||||
<!-- <li>
|
||||
<a href="<%= reports_product_sale_index_path %>">Product Sale</a>
|
||||
</li>
|
||||
</li> -->
|
||||
<% if order_reservation %>
|
||||
<li>
|
||||
<a href="<%= reports_order_reservation_index_path %>"><%= t("views.right_panel.detail.order_reservation") %></a>
|
||||
@@ -286,9 +286,12 @@
|
||||
<li>
|
||||
<a href="<%= reports_saleitem_index_path %>">Sale Items</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="<%= reports_product_sale_index_path %>">Product Sale</a>
|
||||
<li>
|
||||
<a href="<%= reports_hourly_saleitem_index_path %>">Hourly Sale Items</a>
|
||||
</li>
|
||||
<!-- <li>
|
||||
<a href="<%= reports_product_sale_index_path %>">Product Sale</a>
|
||||
</li> -->
|
||||
<% if order_reservation %>
|
||||
<li>
|
||||
<a href="<%= reports_order_reservation_index_path %>"><%= t("views.right_panel.detail.order_reservation") %></a>
|
||||
|
||||
@@ -2,6 +2,20 @@
|
||||
<div id="loading_wrapper" style="display:none;">
|
||||
<div id="loading"></div>
|
||||
</div>
|
||||
<% if !@print_settings.nil? %>
|
||||
<% 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
|
||||
%>
|
||||
<% end %>
|
||||
<div class="row">
|
||||
<!-- Column One -->
|
||||
<div class="col-lg-6 col-md-6 col-sm-6">
|
||||
@@ -50,6 +64,7 @@
|
||||
<tr class="item-row" id=<%= sale_item.sale_item_id %> >
|
||||
<td style="width:60%; text-align:left">
|
||||
<span id="item-account-type" class="hidden"><%=sale_item.account_id%></span>
|
||||
<span id="item-account-qty" class="hidden"><%=sale_item.qty%></span>
|
||||
<span id="item-name-price"><%=sale_item.product_name%>@<%=sale_item.unit_price%></span>
|
||||
</td>
|
||||
<td style="width:20%; text-align:right">
|
||||
@@ -71,7 +86,7 @@
|
||||
<table class="table" id="order-charges-table" border="0">
|
||||
<tr>
|
||||
<td class="charges-name"><strong>Sub Total:</strong></td>
|
||||
<td class="item-attr"><strong id="order-sub-total"><%=sub_total%></strong></td>
|
||||
<td class="item-attr"><strong id="order-sub-total"><%= number_with_precision(sub_total, precision: precision.to_i ) rescue number_with_precision(0, precision: precision.to_i ) %></strong></td>
|
||||
</tr>
|
||||
<!-- <tr>
|
||||
<td class="charges-name"><strong>Food:</strong></td>
|
||||
@@ -88,15 +103,15 @@
|
||||
<td class="charges-name"><strong>Discount:</strong></td>
|
||||
<%end%>
|
||||
|
||||
<td class="item-attr">(<strong id="order-discount"><%=@sale_data.total_discount rescue 0%></strong>)</td>
|
||||
<td class="item-attr">(<strong id="order-discount"><%= number_with_precision(@sale_data.total_discount, precision: precision.to_i ) rescue number_with_precision(0, precision: precision.to_i ) %></strong>)</td>
|
||||
</tr>
|
||||
<tr class="hidden">
|
||||
<td class="charges-name"><strong>Tax:</strong></td>
|
||||
<td class="item-attr"><strong id="order-Tax"><%=@sale_data.total_tax rescue 0%></strong></td>
|
||||
<td class="item-attr"><strong id="order-Tax"><%= number_with_precision(@sale_data.total_tax, precision: precision.to_i ) rescue number_with_precision(0, precision: precision.to_i ) %></strong></td>
|
||||
</tr>
|
||||
<tr class="hidden">
|
||||
<td class="charges-name"><strong>Grand Total:</strong></td>
|
||||
<td class="item-attr"><strong id="order-grand-total"><%=@sale_data.grand_total rescue 0%></strong></td>
|
||||
<td class="item-attr"><strong id="order-grand-total"><%= number_with_precision(@sale_data.grand_total, precision: precision.to_i ) rescue number_with_precision(0, precision: precision.to_i ) %></strong></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
@@ -313,10 +328,13 @@ var cashier_type = "<%= @cashier_type %>";
|
||||
// Select Sale Item
|
||||
$('.item-row').on('click',function(){
|
||||
if($(this).hasClass('selected-item') == true){
|
||||
$(this).removeClass('selected-item');
|
||||
$(this).removeClass('selected-item');
|
||||
}
|
||||
else {
|
||||
$(this).addClass('selected-item');
|
||||
if(parseInt($(this).children().find("#item-account-qty").text()) >0 && parseInt($(this).children().find("#item-total-price").text()) >0){
|
||||
|
||||
$(this).addClass('selected-item');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -326,14 +344,16 @@ var cashier_type = "<%= @cashier_type %>";
|
||||
$(this).removeClass('selected-item');
|
||||
}
|
||||
else {
|
||||
$(this).addClass('selected-item');
|
||||
if(parseInt($(this).children().find("#item-account-qty").text()) >0 && parseInt($(this).children().find("#item-total-price").text()) >0){
|
||||
|
||||
$(this).addClass('selected-item');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Select for account types
|
||||
$(".accounts-type").on('click', function(e){
|
||||
var account_id = $(this).attr('id').substr(8);
|
||||
|
||||
if($(this).hasClass('selected-account') == true){
|
||||
$(this).removeClass('selected-account');
|
||||
$(".item-row").each(function(i){
|
||||
@@ -346,7 +366,12 @@ var cashier_type = "<%= @cashier_type %>";
|
||||
$(this).addClass('selected-account');
|
||||
$(".item-row").each(function(i){
|
||||
if($(this).children().find("#item-account-type").text() == account_id){
|
||||
$(this).addClass("selected-item");
|
||||
if(parseInt($(this).children().find("#item-account-qty").text()) >0 && parseInt($(this).children().find("#item-total-price").text()) >0){
|
||||
$(this).addClass("selected-item");
|
||||
}
|
||||
else{
|
||||
console.log("discount item");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -701,7 +726,7 @@ function calculate_overall_discount(type, amount){
|
||||
}
|
||||
}
|
||||
|
||||
$("#order-discount").text(total_discount);
|
||||
$("#order-discount").text(parseFloat(total_discount).toFixed(<%= precision.to_i %>));
|
||||
}
|
||||
|
||||
/* Calculate Items Discount*/
|
||||
@@ -849,7 +874,7 @@ function calculate_item_discount(type, amount, sale_items, account_types){
|
||||
// }
|
||||
}
|
||||
|
||||
$("#order-sub-total").text(parseFloat(sub_total).toFixed(2));
|
||||
$("#order-sub-total").text(parseFloat(sub_total).toFixed(<%= precision.to_i %>));
|
||||
}else{
|
||||
$("#discount-amountErr").html("Discount is greater than sub total!");
|
||||
}
|
||||
|
||||
@@ -2,6 +2,20 @@
|
||||
<div id="loading_wrapper" style="display:none;">
|
||||
<div id="loading"></div>
|
||||
</div>
|
||||
<% if !@print_settings.nil? %>
|
||||
<% 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
|
||||
%>
|
||||
<% end %>
|
||||
<div class="row clearfix">
|
||||
<!-- Column One -->
|
||||
<div class="col-lg-6 col-md-6 col-sm-6">
|
||||
@@ -350,7 +364,7 @@
|
||||
<table class="table" id="order-charges-table" border="0">
|
||||
<tr>
|
||||
<td class="charges-name"><strong>Sub Total:</strong></td>
|
||||
<td class="item-attr"><strong id="sub-total"><%= sub_total %></strong></td>
|
||||
<td class="item-attr"><strong id="sub-total"><%= number_with_precision(sub_total, precision: precision.to_i ) rescue number_with_precision(0, precision: precision.to_i ) %></strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<%if @obj_sale != nil && @obj_sale.discount_type == 'member_discount'%>
|
||||
@@ -359,7 +373,7 @@
|
||||
<td class="charges-name"><strong>Discount:</strong></td>
|
||||
<%end%>
|
||||
|
||||
<td class="item-attr"><strong id="order-discount">(<%= @obj_sale.total_discount rescue 0%>)</strong></td>
|
||||
<td class="item-attr"><strong id="order-discount">(<%= number_with_precision(@obj_sale.total_discount, precision: precision.to_i ) rescue number_with_precision(0, precision: precision.to_i ) %>)</strong></td>
|
||||
</tr>
|
||||
<% if @status_sale == "sale" %>
|
||||
<tr>
|
||||
@@ -382,15 +396,15 @@
|
||||
<button class="btn btn-link waves-effect bg-info change_tax">Change Tax</button>
|
||||
<% end %>
|
||||
</td>
|
||||
<td class="item-attr"><strong id="order-Tax"><%= @obj_sale.total_tax rescue 0%></strong></td>
|
||||
<td class="item-attr"><strong id="order-Tax"><%= number_with_precision(@obj_sale.total_tax, precision: precision.to_i ) rescue number_with_precision(0, precision: precision.to_i )%></strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="charges-name"><strong>Rounding Adj:</strong></td>
|
||||
<td class="item-attr"><strong id="order-round-adj"><%= @obj_sale.rounding_adjustment rescue 0%></strong></td>
|
||||
<td class="item-attr"><strong id="order-round-adj"><%= number_with_precision(@obj_sale.rounding_adjustment, precision: precision.to_i ) rescue number_with_precision(0, precision: precision.to_i )%></strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="charges-name"><strong>Grand Total:</strong></td>
|
||||
<td class="item-attr"><strong id="order-grand-total"><%= @obj_sale.grand_total rescue 0%></strong></td>
|
||||
<td class="item-attr"><strong id="order-grand-total"><%= number_with_precision(@obj_sale.grand_total, precision: precision.to_i ) rescue number_with_precision(0, precision: precision.to_i ) %></strong></td>
|
||||
</tr>
|
||||
<% end %>
|
||||
<tr class="rebate_amount"></tr>
|
||||
@@ -1251,6 +1265,7 @@
|
||||
closeOnConfirm: false
|
||||
}, function (isConfirm) {
|
||||
if (isConfirm) {
|
||||
$('.confirm').prop("disabled",true);
|
||||
var sale_id = $("#sale_id").val();//"<%= @obj_sale.sale_id rescue "" %>"
|
||||
var ajax_url = "/origami/sale/" + sale_id + '/cashier/void';
|
||||
var remark = $("#remark").val();
|
||||
|
||||
@@ -1511,6 +1511,7 @@ $(document).ready(function(){
|
||||
closeOnConfirm: false
|
||||
}, function (isConfirm) {
|
||||
if (isConfirm) {
|
||||
$('.confirm').prop("disabled",true);
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "/origami/payment/"+cashier_type+"/foc",
|
||||
@@ -1558,6 +1559,7 @@ $(document).ready(function(){
|
||||
closeOnConfirm: false
|
||||
}, function (isConfirm) {
|
||||
if (isConfirm) {
|
||||
$('.confirm').prop("disabled",true);
|
||||
var sale_id = $('#sale_id').text();
|
||||
var remark = $("#remark").val();
|
||||
var ajax_url = "/origami/sale/" + sale_id +'/'+cashier_type+ '/void';
|
||||
@@ -1602,6 +1604,7 @@ $(document).ready(function(){
|
||||
closeOnConfirm: false
|
||||
}, function (isConfirm) {
|
||||
if (isConfirm) {
|
||||
$('.confirm').prop("disabled",true);
|
||||
var url = "/origami/sale/" + sale_id +'/'+cashier_type+'/waste_and_spoilage';
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
|
||||
@@ -0,0 +1,146 @@
|
||||
<div class="p-l-15">
|
||||
<%= form_tag report_path, :method => :get, :id=>"frm_report", :class => "form" do %>
|
||||
<% if period_type != false %>
|
||||
<div class="row">
|
||||
<div class="col-lg-2 col-md-2 col-sm-2 mbl-style">
|
||||
<label class="font-14 mbl_lbl"><%= 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>
|
||||
<!-- <input type="hidden" name="report_type" value="sale_item" id="sel_sale_type"> -->
|
||||
<div class="col-lg-2 col-md-2 col-sm-2 col-mbl-view mbl-style">
|
||||
<label class="font-14 mbl_lbl">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="promotion">Promotion Only</option>
|
||||
<option value="other">Other Amount Only</option>
|
||||
</select>
|
||||
</div>
|
||||
<!-- <div class="col-lg-2 col-md-2 col-sm-2 col-mbl-view mbl-style">
|
||||
<label class="font-14 mbl_lbl"><%= t("views.right_panel.detail.select_account") %></label>
|
||||
|
||||
<select name="account_type" id="account_type" class="form-control">
|
||||
<option value = "">Select Account</option>
|
||||
<% @account.each do |acc| %>
|
||||
<option value="<%=acc.title%>" class="<%=acc.title%>" > <%=acc.title%></option>
|
||||
<%end %>
|
||||
</select>
|
||||
</div> -->
|
||||
<div class="col-lg-2 col-md-2 col-sm-2 col-mbl-view mbl-style">
|
||||
<!-- <label class="">Select Shift Period</label> -->
|
||||
<label class="font-14 mbl_lbl"><%= 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-2 col-md-2 col-sm-2 col-mbl-view mbl-style">
|
||||
<label class="font-14 mbl_lbl"><%= 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>
|
||||
<div class="col-lg-2 col-md-2 col-sm-2 mbl-style">
|
||||
<label class="font-14 mbl_lbl">All Shift</label>
|
||||
<select class="form-control select" name="shift_name" id="shift_name" >
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-lg-12 col-md-12 col-sm-12 margin-top-20 mbl-right-btn">
|
||||
<br>
|
||||
<input type="submit" value="Generate Report" class='btn btn-primary float_right'>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
$(function(){
|
||||
$('#custom_excel').hide();
|
||||
|
||||
$('#custom_excel').click(function(){
|
||||
var url = $('#custom_excel').attr('data-url');
|
||||
$('#frm_report').attr('action',url)
|
||||
$('#frm_report').submit();
|
||||
// window.location = url;
|
||||
});
|
||||
|
||||
var item = $('#item').val();
|
||||
var payment_type = $('#payment_type');
|
||||
|
||||
$("#account_type").val("<%=params[:account_type]%>");
|
||||
|
||||
if(item == 'order'){
|
||||
$('#cashier').hide();
|
||||
$('#waiter').show();
|
||||
if(payment_type){
|
||||
$('#payment_type').hide();
|
||||
}
|
||||
}
|
||||
else if(item == 'sale'){
|
||||
$('#waiter').hide();
|
||||
$('#cashier').show();
|
||||
}
|
||||
else{
|
||||
$('#waiter').hide();
|
||||
$('#cashier').show();
|
||||
$("#item").val('sale');
|
||||
}
|
||||
});
|
||||
|
||||
<% 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);
|
||||
<% end %>
|
||||
|
||||
$("#from").val("<%=params[:from] rescue '-'%>");
|
||||
$("#to").val("<%=params[:to] rescue '-'%>");
|
||||
$("#sel_period").val(<%=params[:period] rescue '-'%>);
|
||||
var sale_type = "<%=params[:sale_type]%>";
|
||||
$("#sel_sale_type").val(sale_type);
|
||||
|
||||
|
||||
<% if params[:period_type] == 1 || params[:period_type] == "1" %>
|
||||
$("#rd_period_type_1").attr("checked","checked");
|
||||
<% else %>
|
||||
$("#rd_period_type_0").attr("checked","checked");
|
||||
<% end %>
|
||||
$(".btn-group button").removeClass("active");
|
||||
<% report_type = params[:report_type].blank? ? "0" : params[:report_type] %>
|
||||
$("#btn_report_type_<%= report_type %>").addClass("active");
|
||||
|
||||
$('#item').change(function(){
|
||||
var item = $('#item').val();
|
||||
var payment_type = $('#payment_type');
|
||||
|
||||
if(item == 'sale'){
|
||||
$('#waiter').hide();
|
||||
$('#cashier').show();
|
||||
if(payment_type){
|
||||
$('#payment_type').show();
|
||||
}
|
||||
}
|
||||
else{
|
||||
$('#cashier').hide();
|
||||
$('#waiter').show();
|
||||
if(payment_type){
|
||||
$('#payment_type').hide();
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
121
app/views/reports/hourly_saleitem/index.bk.html.erb
Normal file
121
app/views/reports/hourly_saleitem/index.bk.html.erb
Normal file
@@ -0,0 +1,121 @@
|
||||
<div class="container-fluid">
|
||||
<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.waste_spoilage_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,:payments => true, :report_path =>reports_waste_and_spoilage_index_path} %>
|
||||
<hr />
|
||||
<div class="text-right">
|
||||
<a href="javascript:export_to('<%=reports_waste_and_spoilage_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">
|
||||
|
||||
<table class="table table-striped" border="0">
|
||||
<% time_arr = Array.new %>
|
||||
<% menu_cat_arr = Array.new %>
|
||||
<% footer_arr = Array.new %>
|
||||
<% count = 0 %>
|
||||
<% waste_and_spoil_item_count = 0%>
|
||||
<% total_qty = 0 %>
|
||||
<% time_count = 0 %>
|
||||
<% @sale_data.each do |sale| %>
|
||||
<% if !time_arr.include?(sale.date_format) %>
|
||||
<% time_count = time_count + 1 %>
|
||||
<thead>
|
||||
<td> </td>
|
||||
<tr>
|
||||
<td >
|
||||
<strong>Time :<%= sale.date_format %></strong>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td colspan="3" style="text-align:right"><strong>Date : </strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Menu Category</strong></td>
|
||||
<td><strong>Item Code</strong></td>
|
||||
<td><strong>Item Name</strong></td>
|
||||
<td><strong>Qty</strong></td>
|
||||
<td><strong>Price</strong></td>
|
||||
<td><strong>Total Price</strong></td>
|
||||
</tr>
|
||||
</thead>
|
||||
<% time_arr.push(sale.date_format) %>
|
||||
<% menu_cat_arr.clear %>
|
||||
<% count = 0 %>
|
||||
<% end %>
|
||||
<tbody>
|
||||
<!-- all total qty sum -->
|
||||
<% if sale.status_type != "Discount" && sale.status_type != "foc" && sale.status_type != "promotion"
|
||||
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 %>
|
||||
<% if sale.status_type =="promotion" && @type == "promotion"
|
||||
total_qty += sale.total_item*(-1)
|
||||
end %>
|
||||
<!-- end all total qty -->
|
||||
<% if !sale.item_code.nil?%>
|
||||
<% waste_and_spoil_item_count += sale.qty.to_i %>
|
||||
<tr>
|
||||
<% if !menu_cat_arr.include?(sale.menu_category_name) %>
|
||||
<td><%= sale.menu_category_name %></td>
|
||||
<% menu_cat_arr.push(sale.menu_category_name) %>
|
||||
<% else %>
|
||||
<td> </td>
|
||||
<% end %>
|
||||
<td><%= sale.item_code %></td>
|
||||
<td><%= sale.product_name %></td>
|
||||
<td><%= sale.total_item.to_i %></td>
|
||||
<td><%= sale.unit_price %></td>
|
||||
<td><%= sale.price %></td>
|
||||
<td><%= sale.date_format %></td>
|
||||
</tr>
|
||||
<% end %>
|
||||
|
||||
|
||||
<!-- new tr -->
|
||||
|
||||
<% @hourly_total_qty.each do |qty| %>
|
||||
<% qty_count = qty["total_qty"] %>
|
||||
<% logger.debug ' qty count+++++++++++++++++++++++++' %>
|
||||
<% logger.debug qty_count %>
|
||||
<% #logger.debug ' normal count+++++++++++++++++++++++++' %>
|
||||
<% #logger.debug sale.sale_items.count %>
|
||||
<% end %>
|
||||
|
||||
<% count = count + 1 %>
|
||||
<% logger.debug 'count ------------------------------------' %>
|
||||
<% logger.debug count %>
|
||||
<% if sale.sale_items.count == count %>
|
||||
<tr style="border-top:2px solid grey;">
|
||||
<td colspan="3"> </td>
|
||||
<td>Total Qty:</td>
|
||||
<td><span><%= total_qty%></span></td>
|
||||
<td style="border-bottom:2px solid grey;">Grand Total:</td>
|
||||
<td style="border-bottom:2px solid grey;"><span></span></td>
|
||||
</tr>
|
||||
<% footer_arr.push(sale.sale_id) %>
|
||||
<% end %>
|
||||
</tbody>
|
||||
<% end %>
|
||||
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
293
app/views/reports/hourly_saleitem/index.html.erb
Normal file
293
app/views/reports/hourly_saleitem/index.html.erb
Normal file
@@ -0,0 +1,293 @@
|
||||
<div class="container-fluid">
|
||||
<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.hourly_saleitem_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,:payments => true, :report_path =>reports_hourly_saleitem_index_path} %>
|
||||
<hr />
|
||||
<div class="text-right">
|
||||
<a href="javascript:export_to('<%=reports_hourly_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">
|
||||
|
||||
<table class="table table-striped" border="0">
|
||||
<% time_arr = Array.new %>
|
||||
<% acc_arr = Array.new %>
|
||||
<% sale_item_count =0 %>
|
||||
<% menu_cat_arr = Array.new %>
|
||||
<% footer_arr = Array.new %>
|
||||
<% count = 0 %>
|
||||
<% waste_and_spoil_item_count = 0%>
|
||||
<% total_qty = 0 %>
|
||||
<% time_count = 0 %>
|
||||
<% grand_total = 0 %>
|
||||
<% @sale_data.each do |sale| %>
|
||||
<% if !time_arr.include?(sale.date_format) %>
|
||||
<% sale_item_count =1 %>
|
||||
<% time_count = time_count + 1 %>
|
||||
<thead>
|
||||
<td> </td>
|
||||
<tr>
|
||||
<td>
|
||||
<strong>Time :<%= sale.date_format %></strong>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td colspan="3" style="text-align:right"><strong></strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Menu Category</strong></td>
|
||||
<td><strong>Item Code</strong></td>
|
||||
<td><strong>Item Name</strong></td>
|
||||
<td><strong>Qty</strong></td>
|
||||
<td><strong>Price</strong></td>
|
||||
<td><strong>Total Price</strong></td>
|
||||
</tr>
|
||||
</thead>
|
||||
<% time_arr.push(sale.date_format) %>
|
||||
<% menu_cat_arr.clear %>
|
||||
<% count = 0 %>
|
||||
<% else %>
|
||||
<% sale_item_count =sale_item_count +1 %>
|
||||
<% end %>
|
||||
<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
|
||||
%>
|
||||
<!-- all total qty sum -->
|
||||
<% if sale.status_type != "Discount" && sale.status_type != "foc" && sale.status_type != "promotion"
|
||||
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 %>
|
||||
<% if sale.status_type =="promotion" && @type == "promotion"
|
||||
total_qty += sale.total_item*(-1)
|
||||
end %>
|
||||
|
||||
<!-- end all total qty -->
|
||||
<% if sale.status_type == "foc" && sale.grand_total < 0
|
||||
grand_total += sale.grand_total*(-1)
|
||||
end %>
|
||||
|
||||
<% if sale.status_type == "Discount" && sale.grand_total < 0
|
||||
grand_total += sale.grand_total*(-1)
|
||||
end %>
|
||||
|
||||
<% if sale.status_type == "promotion" && sale.grand_total < 0
|
||||
grand_total += sale.grand_total*(-1)
|
||||
end %>
|
||||
|
||||
<% grand_total += sale.grand_total %>
|
||||
|
||||
<% if !sale.item_code.nil?%>
|
||||
<% waste_and_spoil_item_count += sale.qty.to_i %>
|
||||
<tr>
|
||||
<% if !menu_cat_arr.include?(sale.menu_category_name) %>
|
||||
<td><%= sale.menu_category_name %></td>
|
||||
<% menu_cat_arr.push(sale.menu_category_name) %>
|
||||
<% else %>
|
||||
<td> </td>
|
||||
<% end %>
|
||||
<td><%= sale.item_code %></td>
|
||||
<td><%= sale.product_name %></td>
|
||||
<td><%= sale.total_item.to_i %></td>
|
||||
<td><%= sale.unit_price.to_i %></td>
|
||||
<td><%= sale.grand_total.to_i %></td>
|
||||
<td><%= sale.date_format %></td>
|
||||
</tr>
|
||||
<% end %>
|
||||
<!-- new tr -->
|
||||
<% count = count + 1 %>
|
||||
<% @hourly_total_qty.each do |hr| %>
|
||||
<% if hr["date"].to_s == sale.date_format.to_s && hr["total_qty"].to_i ==sale_item_count%>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2" style="text-align:right"> <strong>Total Qty: </strong></td>
|
||||
<td>
|
||||
<span class="underline" style="text-align:right">
|
||||
<strong><%= total_qty.to_i %></strong>
|
||||
<% total_qty = 0%>
|
||||
</span></td>
|
||||
<td style="text-align:right"> <strong>Grand Total: </strong></td>
|
||||
<td >
|
||||
<span class="underline" style="text-align:right">
|
||||
<strong><%= grand_total.to_i %></strong>
|
||||
<% grand_total = 0 %>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<% footer_arr.push(sale.sale_id) %>
|
||||
<% else %>
|
||||
|
||||
<% end %>
|
||||
<% end %>
|
||||
</tbody>
|
||||
<% end %>
|
||||
</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_sale_item_path %>';
|
||||
console.log(url)
|
||||
$.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);
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
function print_sale_items(){
|
||||
var period = $('#sel_period').val();
|
||||
var type = $('#sel_sale_type').val();
|
||||
var account = $('#account_type').val();
|
||||
var from = $('#from').val();
|
||||
var to = $('#to').val();
|
||||
var shift = $('#shift_name').val();
|
||||
// var flag = false;
|
||||
// alert($('#row_count').val())
|
||||
|
||||
// if (flag == true) {
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "<%= reports_print_sale_items_path %>",
|
||||
data: "period="+period+"&period_type="+type+"&account_type="+account+"&from="+from+"&to="+to+"&shift_name="+shift,
|
||||
success: function(data){
|
||||
if (data != null){
|
||||
location.reload();
|
||||
}
|
||||
$("#loader").hide();
|
||||
}
|
||||
});
|
||||
// }
|
||||
}
|
||||
</script>
|
||||
146
app/views/reports/hourly_saleitem/index.xls.erb
Normal file
146
app/views/reports/hourly_saleitem/index.xls.erb
Normal file
@@ -0,0 +1,146 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Content-type" content="application/vnd.ms-excel; charset=UTF-8">
|
||||
</head>
|
||||
<body>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="margin-top-20">
|
||||
<div class="card">
|
||||
<div class="table-responsive">
|
||||
<div class="margin-top-20">
|
||||
<div class="card">
|
||||
|
||||
<table class="table table-striped" border="0">
|
||||
<% time_arr = Array.new %>
|
||||
<% acc_arr = Array.new %>
|
||||
<% sale_item_count =0 %>
|
||||
<% menu_cat_arr = Array.new %>
|
||||
<% footer_arr = Array.new %>
|
||||
<% count = 0 %>
|
||||
<% waste_and_spoil_item_count = 0%>
|
||||
<% total_qty = 0 %>
|
||||
<% time_count = 0 %>
|
||||
<% grand_total = 0 %>
|
||||
<% @sale_data.each do |sale| %>
|
||||
<% if !time_arr.include?(sale.date_format) %>
|
||||
<% sale_item_count =1 %>
|
||||
<% time_count = time_count + 1 %>
|
||||
<thead>
|
||||
<td> </td>
|
||||
<tr>
|
||||
<td>
|
||||
<strong>Time :<%= sale.date_format %></strong>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td colspan="3" style="text-align:right"><strong></strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Menu Category</strong></td>
|
||||
<td><strong>Item Code</strong></td>
|
||||
<td><strong>Item Name</strong></td>
|
||||
<td><strong>Qty</strong></td>
|
||||
<td><strong>Price</strong></td>
|
||||
<td><strong>Total Price</strong></td>
|
||||
</tr>
|
||||
</thead>
|
||||
<% time_arr.push(sale.date_format) %>
|
||||
<% menu_cat_arr.clear %>
|
||||
<% count = 0 %>
|
||||
<% else %>
|
||||
<% sale_item_count =sale_item_count +1 %>
|
||||
<% end %>
|
||||
<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
|
||||
%>
|
||||
<!-- all total qty sum -->
|
||||
<% if sale.status_type != "Discount" && sale.status_type != "foc" && sale.status_type != "promotion"
|
||||
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 %>
|
||||
<% if sale.status_type =="promotion" && @type == "promotion"
|
||||
total_qty += sale.total_item*(-1)
|
||||
end %>
|
||||
|
||||
<!-- end all total qty -->
|
||||
<% if sale.status_type == "foc" && sale.grand_total < 0
|
||||
grand_total += sale.grand_total*(-1)
|
||||
end %>
|
||||
|
||||
<% if sale.status_type == "Discount" && sale.grand_total < 0
|
||||
grand_total += sale.grand_total*(-1)
|
||||
end %>
|
||||
|
||||
<% if sale.status_type == "promotion" && sale.grand_total < 0
|
||||
grand_total += sale.grand_total*(-1)
|
||||
end %>
|
||||
|
||||
<% grand_total += sale.grand_total %>
|
||||
|
||||
<% if !sale.item_code.nil?%>
|
||||
<% waste_and_spoil_item_count += sale.qty.to_i %>
|
||||
<tr>
|
||||
<% if !menu_cat_arr.include?(sale.menu_category_name) %>
|
||||
<td><%= sale.menu_category_name %></td>
|
||||
<% menu_cat_arr.push(sale.menu_category_name) %>
|
||||
<% else %>
|
||||
<td> </td>
|
||||
<% end %>
|
||||
<td><%= sale.item_code %></td>
|
||||
<td><%= sale.product_name %></td>
|
||||
<td><%= sale.total_item.to_i %></td>
|
||||
<td><%= sale.unit_price.to_i %></td>
|
||||
<td><%= sale.grand_total.to_i %></td>
|
||||
<td><%= sale.date_format %></td>
|
||||
</tr>
|
||||
<% end %>
|
||||
<!-- new tr -->
|
||||
<% count = count + 1 %>
|
||||
<% @hourly_total_qty.each do |hr| %>
|
||||
<% if hr["date"].to_s == sale.date_format.to_s && hr["total_qty"].to_i ==sale_item_count%>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2" style="text-align:right"> <strong>Total Qty: </strong></td>
|
||||
<td>
|
||||
<span class="underline" style="text-align:right">
|
||||
<strong><%= total_qty.to_i %></strong>
|
||||
<% total_qty = 0%>
|
||||
</span></td>
|
||||
<td style="text-align:right"> <strong>Grand Total: </strong></td>
|
||||
<td >
|
||||
<span class="underline" style="text-align:right">
|
||||
<strong><%= grand_total.to_i %></strong>
|
||||
<% grand_total = 0 %>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<% footer_arr.push(sale.sale_id) %>
|
||||
<% else %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</tbody>
|
||||
<% end %>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -95,7 +95,6 @@
|
||||
total_qty += sale.total_item*(-1)
|
||||
end %>
|
||||
<!-- end all total qty -->
|
||||
|
||||
<% if sale.status_type == "foc" && sale.grand_total < 0
|
||||
total_item_foc += sale.grand_total*(-1)
|
||||
end %>
|
||||
@@ -249,9 +248,21 @@
|
||||
<td colspan="3"> </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>
|
||||
<td><%= t("views.right_panel.detail.total") %> <%= t("views.right_panel.detail.amount") %></td>
|
||||
<td><span><%= number_with_precision(grand_total , precision:precision.to_i,delimiter:delimiter)%></span></td>
|
||||
</tr>
|
||||
<% if @type =="" || @type =="all" || @type.nil? %>
|
||||
<tr class="foc_payment">
|
||||
<td colspan="5"> </td>
|
||||
<td>Total FOC Amount</td>
|
||||
<td><span><%= number_with_precision(@foc_data , precision:precision.to_i,delimiter:delimiter)%></span></td>
|
||||
</tr>
|
||||
<tr class="foc_payment" style="border-top:2px solid grey;border-bottom:2px solid grey;">
|
||||
<td colspan="5"> </td>
|
||||
<td style="border-bottom:2px solid grey;"><%= t("views.right_panel.detail.net_amount") %></td>
|
||||
<td style="border-bottom:2px solid grey;"><span><%= number_with_precision(grand_total -@foc_data , precision:precision.to_i,delimiter:delimiter)%></span></td>
|
||||
</tr>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% if @type == "other"%>
|
||||
|
||||
@@ -296,6 +307,7 @@
|
||||
|
||||
<script>
|
||||
$(function(){
|
||||
|
||||
var check_arr = [];
|
||||
var search = '<%= params[:period_type] %>';
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
</tr>
|
||||
<% end %>
|
||||
<tr>
|
||||
<th> </th>
|
||||
<th><%= t("views.right_panel.header.account_name") %></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>
|
||||
@@ -89,31 +89,19 @@
|
||||
<% 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"> </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> </td>
|
||||
<% if !cate_arr.include?(sale.menu_category_id) %>
|
||||
<td><%= sale.account_name %></td>
|
||||
<td><%= sale.menu_category_name %></td>
|
||||
<% cate_arr.push(sale.menu_category_id) %>
|
||||
<% else %>
|
||||
<td> </td>
|
||||
<% end %>
|
||||
<td><%= sale.item_code rescue '-' %></td>
|
||||
<td><%= sale.product_name rescue '-' %></td>
|
||||
<% if sale.status_type != "Discount" %>
|
||||
@@ -143,13 +131,6 @@
|
||||
sub_qty += sale.total_item
|
||||
end %>
|
||||
<% if count == value %>
|
||||
<tr>
|
||||
<td colspan="3"> </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%>
|
||||
@@ -238,6 +219,18 @@
|
||||
<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>
|
||||
<% if @type =="" || @type =="all" %>
|
||||
<tr>
|
||||
<td colspan="5"> </td>
|
||||
<td>Total FOC Amount</td>
|
||||
<td><span><%= number_with_precision(@foc_data , precision:precision.to_i,delimiter:delimiter)%></span></td>
|
||||
</tr>
|
||||
<tr style="border-top:2px solid grey;border-bottom:2px solid grey;">
|
||||
<td colspan="5"> </td>
|
||||
<td style="border-bottom:2px solid grey;"><%= t("views.right_panel.detail.net_amount") %></td>
|
||||
<td style="border-bottom:2px solid grey;"><span><%= number_with_precision(grand_total -@foc_data , precision:precision.to_i,delimiter:delimiter)%></span></td>
|
||||
</tr>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% if @type == "other"%>
|
||||
|
||||
@@ -279,4 +272,17 @@
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
<script type="text/javascript">
|
||||
$(function(){
|
||||
var type =<%=@type %>;
|
||||
console.log(type);
|
||||
$('.foc_payment').hide();
|
||||
if (type =="" || type =="all" ){
|
||||
$('.foc_payment').show();
|
||||
}
|
||||
else{
|
||||
$('.foc_payment').hide();
|
||||
}
|
||||
});
|
||||
</script>
|
||||
99
app/views/reports/waste_and_spoilage/index-bk.html.erb
Normal file
99
app/views/reports/waste_and_spoilage/index-bk.html.erb
Normal file
@@ -0,0 +1,99 @@
|
||||
<div class="container-fluid">
|
||||
<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.waste_spoilage_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,:payments => true, :report_path =>reports_waste_and_spoilage_index_path} %>
|
||||
<hr />
|
||||
<div class="text-right">
|
||||
<a href="javascript:export_to('<%=reports_waste_and_spoilage_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">
|
||||
|
||||
<table class="table table-striped" border="0">
|
||||
<h5 class="p-l-10 p-t-10">Report For <%= @sale_type? @sale_type : 'Waste' %></h5>
|
||||
<% receipt_arr = Array.new %>
|
||||
<% menu_cat_arr = Array.new %>
|
||||
<% footer_arr = Array.new %>
|
||||
<% count = 0 %>
|
||||
<% waste_and_spoil_item_count = 0%>
|
||||
<% @sale_data.each do |sale| %>
|
||||
<% if !receipt_arr.include?(sale.receipt_no) %>
|
||||
<thead>
|
||||
<td> </td>
|
||||
<tr>
|
||||
<td >
|
||||
<strong>Receipt No :<%= sale.receipt_no %></strong>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td colspan="3" style="text-align:right"><strong>Date : <%= sale.created_at.utc.getlocal.strftime("%e,%b %Y %I:%M %p") %></strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Menu Category</strong></td>
|
||||
<td><strong>Item Name</strong></td>
|
||||
<td><strong>Item Code</strong></td>
|
||||
<td><strong>Qty</strong></td>
|
||||
<td><strong>Price</strong></td>
|
||||
<td><strong>Total Price</strong></td>
|
||||
</tr>
|
||||
</thead>
|
||||
<% receipt_arr.push(sale.receipt_no) %>
|
||||
<% menu_cat_arr.clear %>
|
||||
<% count = 0 %>
|
||||
<% end %>
|
||||
|
||||
<tbody>
|
||||
<% if !sale.item_instance_code.nil?%>
|
||||
<% waste_and_spoil_item_count += sale.qty.to_i %>
|
||||
<tr>
|
||||
<% if !menu_cat_arr.include?(sale.name) %>
|
||||
<td><%= sale.name %></td>
|
||||
<% menu_cat_arr.push(sale.name) %>
|
||||
<% else %>
|
||||
<td> </td>
|
||||
<% end %>
|
||||
<td><%= sale.product_name %></td>
|
||||
<td><%= sale.product_code %></td>
|
||||
<td><%= sale.qty.to_i %></td>
|
||||
<td><%= sale.unit_price %></td>
|
||||
<td><%= sale.price %></td>
|
||||
</tr>
|
||||
<% end %>
|
||||
|
||||
<% count = count + 1 %>
|
||||
<% if sale.sale_items.count == count %>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2" style="text-align:right"> <strong>Total Qty: </strong></td>
|
||||
<td>
|
||||
<span class="underline" style="text-align:right">
|
||||
<strong><%= waste_and_spoil_item_count %></strong>
|
||||
<% waste_and_spoil_item_count = 0%>
|
||||
</span></td>
|
||||
<td style="text-align:right"> <strong>Grand Total: </strong></td>
|
||||
<td >
|
||||
<span class="underline" style="text-align:right">
|
||||
<strong><%= sale.grand_total %></strong>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<% footer_arr.push(sale.sale_id) %>
|
||||
<% end %>
|
||||
</tbody>
|
||||
<% end %>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -18,46 +18,47 @@
|
||||
</div>
|
||||
<div class="margin-top-20">
|
||||
<div class="card">
|
||||
|
||||
|
||||
<table class="table table-striped" border="0">
|
||||
<h5 class="p-l-10 p-t-10">Report For <%= @sale_type? @sale_type : 'Waste' %></h5>
|
||||
<% receipt_arr = Array.new %>
|
||||
<% menu_cat_arr = Array.new %>
|
||||
<% footer_arr = Array.new %>
|
||||
<% count = 0 %>
|
||||
<% waste_and_spoil_item_count = 0%>
|
||||
|
||||
<% @sale_data.each do |sale| %>
|
||||
<% if !receipt_arr.include?(sale.receipt_no) %>
|
||||
<thead>
|
||||
<td> </td>
|
||||
|
||||
<thead>
|
||||
<!-- <td> </td>
|
||||
<tr>
|
||||
<td >
|
||||
<strong>Receipt No :<%= sale.receipt_no %></strong>
|
||||
</td>
|
||||
<strong>Receipt No :</strong>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td colspan="3" style="text-align:right"><strong>Date : <%= sale.created_at.utc.getlocal.strftime("%e,%b %Y %I:%M %p") %></strong></td>
|
||||
</tr>
|
||||
<td></td>
|
||||
<td colspan="3" style="text-align:right"><strong>Date : </strong></td>
|
||||
</tr> -->
|
||||
<tr>
|
||||
<td><strong>Menu Category</strong></td>
|
||||
<td><strong>Item Name</strong></td>
|
||||
<td><strong>Item Code</strong></td>
|
||||
<td><strong>Qty</strong></td>
|
||||
<td><strong>Price</strong></td>
|
||||
<td><strong>Total Price</strong></td>
|
||||
<td><strong>Total Price</strong></td>
|
||||
</tr>
|
||||
</thead>
|
||||
<% receipt_arr.push(sale.receipt_no) %>
|
||||
<% menu_cat_arr.clear %>
|
||||
<% count = 0 %>
|
||||
<% end %>
|
||||
|
||||
|
||||
|
||||
<tbody>
|
||||
<% if !sale.item_instance_code.nil?%>
|
||||
<% receipt_arr = Array.new %>
|
||||
<% menu_cat_arr = Array.new %>
|
||||
<% footer_arr = Array.new %>
|
||||
<% count = 0 %>
|
||||
<% waste_and_spoil_item_count = 0%>
|
||||
<% grand_total = 0%>
|
||||
<% unless @sale_data.blank? %>
|
||||
<% @sale_data.each do |sale| %>
|
||||
<% if !sale.item_instance_code.nil?%>
|
||||
<% waste_and_spoil_item_count += sale.qty.to_i %>
|
||||
<% grand_total += sale.grand_total.to_i %>
|
||||
<% end %>
|
||||
<tr>
|
||||
<% if !menu_cat_arr.include?(sale.name) %>
|
||||
<% if !menu_cat_arr.include?(sale.name) %>
|
||||
<td><%= sale.name %></td>
|
||||
<% menu_cat_arr.push(sale.name) %>
|
||||
<% else %>
|
||||
@@ -68,33 +69,35 @@
|
||||
<td><%= sale.qty.to_i %></td>
|
||||
<td><%= sale.unit_price %></td>
|
||||
<td><%= sale.price %></td>
|
||||
</tr>
|
||||
<% end %>
|
||||
|
||||
</tr>
|
||||
|
||||
|
||||
<% count = count + 1 %>
|
||||
<% if sale.sale_items.count == count %>
|
||||
<% if @sale_data.length == count %>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="2" style="text-align:right"> <strong>Total Qty: </strong></td>
|
||||
<td colspan="2" style="text-align:right"> <strong>Total Qty: </strong></td>
|
||||
<td>
|
||||
<span class="underline" style="text-align:right">
|
||||
<strong><%= waste_and_spoil_item_count %></strong>
|
||||
<% waste_and_spoil_item_count = 0%>
|
||||
</span></td>
|
||||
<td style="text-align:right"> <strong>Grand Total: </strong></td>
|
||||
<td >
|
||||
<td >
|
||||
<span class="underline" style="text-align:right">
|
||||
<strong><%= sale.grand_total %></strong>
|
||||
<strong><%= grand_total %></strong>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
</tr>
|
||||
<% footer_arr.push(sale.sale_id) %>
|
||||
<% end %>
|
||||
</tbody>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</tbody>
|
||||
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -4,13 +4,13 @@ default: &default
|
||||
pool: 5
|
||||
timeout: 5000
|
||||
encoding: unicode
|
||||
username: wunna
|
||||
password: admin123
|
||||
username: nlh
|
||||
password: 7812co2Y
|
||||
port: 5432
|
||||
|
||||
development:
|
||||
<<: *default
|
||||
database: SXDatabase
|
||||
database: sxdemo
|
||||
production:
|
||||
<<: *default
|
||||
database: paymal
|
||||
|
||||
@@ -8,3 +8,4 @@ stdout_redirect "#{application_path}/log/puma.stdout.log", "#{application_path}/
|
||||
port ENV.fetch("PORT") { 62158 }
|
||||
workers 2
|
||||
preload_app!
|
||||
threads 1,1
|
||||
|
||||
@@ -523,6 +523,7 @@ scope "(:locale)", locale: /en|mm/ do
|
||||
resources :receipt_no_detail
|
||||
resources :dailysale, :only => [:index, :show]
|
||||
resources :saleitem, :only => [:index, :show]
|
||||
resources :hourly_saleitem, :only => [:index, :show]
|
||||
resources :shiftsale, :only => [:index, :show]
|
||||
resources :credit_payment, :only => [:index, :show]
|
||||
resources :void_sale, :only => [:index, :show]
|
||||
@@ -537,6 +538,7 @@ scope "(:locale)", locale: /en|mm/ do
|
||||
resources :card_settle_tran
|
||||
|
||||
get "saleitem/get_shift_by_date", to: "saleitem#show", as: "get_shift_by_sale_item"
|
||||
get "hourly_saleitem/get_shift_by_date", to: "hourly_saleitem#show", as: "get_shift_by_hourly_saleitem"
|
||||
get "receipt_no/get_shift_by_date", to: "receipt_no#get_shift_by_date", as: "get_shift_by_date"
|
||||
get "order_reservation/get_shift_by_date", to: "order_reservation#show", as: "get_shift_by_order_reservation"
|
||||
get "induty/get_shift_by_date", to: "induty#show", as: "get_shift_by_induty"
|
||||
|
||||
Reference in New Issue
Block a user