Merge branch 'r-1902001-01' of gitlab.com:code2lab/SXRestaurant into r-1902001-01
This commit is contained in:
4
Gemfile
4
Gemfile
@@ -1,6 +1,6 @@
|
||||
source 'https://rubygems.org'
|
||||
|
||||
#ruby '2.4.1'
|
||||
ruby '2.6.5'
|
||||
#ruby '2.5.7'
|
||||
|
||||
git_source(:github) do |repo_name|
|
||||
@@ -15,7 +15,7 @@ gem 'rails', '~> 5.1.0'
|
||||
|
||||
#gem 'mysql2', '>= 0.3.18', '< 0.5'
|
||||
gem 'pg'
|
||||
gem 'mysql2'
|
||||
gem 'mysql2', '~> 0.5.2'
|
||||
|
||||
#Use PosgreSQL
|
||||
|
||||
|
||||
@@ -96,7 +96,6 @@ GEM
|
||||
concurrent-ruby (1.1.5)
|
||||
connection_pool (2.2.2)
|
||||
crass (1.0.5)
|
||||
cups (0.0.7)
|
||||
database_cleaner (1.7.0)
|
||||
diff-lcs (1.3)
|
||||
erubi (1.9.0)
|
||||
@@ -335,7 +334,6 @@ DEPENDENCIES
|
||||
carrierwave (~> 1.0)
|
||||
chartkick
|
||||
coffee-rails (~> 4.2)
|
||||
cups (~> 0.0.7)
|
||||
database_cleaner
|
||||
factory_girl_rails (~> 4.0)
|
||||
faker
|
||||
@@ -351,7 +349,7 @@ DEPENDENCIES
|
||||
material_icons
|
||||
mini_magick
|
||||
momentjs-rails
|
||||
mysql2
|
||||
mysql2 (~> 0.5.2)
|
||||
nested_form
|
||||
pdfjs_viewer-rails
|
||||
pg
|
||||
@@ -380,5 +378,8 @@ DEPENDENCIES
|
||||
web-console (>= 3.3.0)
|
||||
whenever
|
||||
|
||||
RUBY VERSION
|
||||
ruby 2.6.5p114
|
||||
|
||||
BUNDLED WITH
|
||||
2.0.2
|
||||
|
||||
437
README.md
437
README.md
@@ -4,161 +4,151 @@ SXRestuarant is a new Dedicate project for SmartSales Restaurant. It is improvem
|
||||
|
||||
Things you may want to cover:
|
||||
|
||||
* Ruby version
|
||||
ruby 2.4.1p111
|
||||
- Ruby version
|
||||
ruby 2.4.1p111
|
||||
|
||||
* Membership Details
|
||||
Osaka =>
|
||||
Auth Token => wu8YvlLmah0CL => New => v3
|
||||
=> rj0MJ0XI5GsKZehE => Old => v2
|
||||
=> code2lab => Old
|
||||
- Membership Details
|
||||
Osaka =>
|
||||
Auth Token => wu8YvlLmah0CL => New => v3
|
||||
=> rj0MJ0XI5GsKZehE => Old => v2
|
||||
=> code2lab => Old
|
||||
|
||||
Merchant account => RxzaYyAGzm7VqAZ4hKnv
|
||||
Campaign Id => {"campaign_type_id": 5}
|
||||
Merchant account => RxzaYyAGzm7VqAZ4hKnv
|
||||
Campaign Id => {"campaign_type_id": 5}
|
||||
|
||||
BITP
|
||||
Auth Token => pZBHXEFbGNj/G => New => V3
|
||||
iua0SjUHzRaQw
|
||||
=> rj0MJ0XI5GsKZehE => Old => V2
|
||||
=> code2lab => Old
|
||||
Auth Token => pZBHXEFbGNj/G => New => V3
|
||||
iua0SjUHzRaQw
|
||||
=> rj0MJ0XI5GsKZehE => Old => V2
|
||||
=> code2lab => Old
|
||||
|
||||
Merchant account => vWSsseoZCzxd6xcNf_uS
|
||||
Merchant account => vWSsseoZCzxd6xcNf_uS
|
||||
Campaign Id => {"campaign_type_id": 1}
|
||||
|
||||
java -jar ~/Documents/Jade.jar http://192.168.1.88:3002
|
||||
java -jar ~/Documents/c2l_jade.jar http://192.168.1.151:3002
|
||||
|
||||
Person and Extra Time
|
||||
category_code = SPL... //for menu categories special
|
||||
1) must create Person in settings/accounts
|
||||
2) must create Adult and Child in settings/item_attributes
|
||||
3) must be PSA_[a-z/0-9] for Adult and PSC_[a-z/0-9] for Child in settings/menu_categories/[cat_id]/simple_menu_items
|
||||
3) must be PSAI_[a-z/0-9] for Adult and PSCI_[a-z/0-9] for Child in settings/simple_menu_items/[item_id]/menu_item_instances
|
||||
category_code = SPL... //for menu categories special
|
||||
|
||||
1. must create Person in settings/accounts
|
||||
2. must create Adult and Child in settings/item_attributes
|
||||
3. must be PSA*[a-z/0-9] for Adult and PSC*[a-z/0-9] for Child in settings/menu_categories/[cat_id]/simple_menu_items
|
||||
4. must be PSAI*[a-z/0-9] for Adult and PSCI*[a-z/0-9] for Child in settings/simple_menu_items/[item_id]/menu_item_instances
|
||||
|
||||
For Extra Time
|
||||
item_instance_code
|
||||
* must start with 'Ext'[a..z]'_'[1..100]
|
||||
* note : don't add character after '_'
|
||||
item_instance_code
|
||||
|
||||
- must start with 'Ext'[a..z]'\_'[1..100]
|
||||
- note : don't add character after '\_'
|
||||
|
||||
For Order Printing
|
||||
1)) ********* Order Pdf *********
|
||||
1) settings/print_settings
|
||||
(a) Unique Code => OrderItemPdf & OrderSummaryPdf
|
||||
(b) Font is present => {Header font size:11, Item Font Size:9}
|
||||
Font is blank => {Header font size:12, Item Font Size:10}
|
||||
2)) ********* Order Set Pdf *********
|
||||
1) settings/print_settings
|
||||
(a) Unique Code => OrderSetItemPdf & OrderSummarySetPdf
|
||||
(b) Font is present => {Header font size:11, Item Font Size:9}
|
||||
Font is blank => {Header font size:12, Item Font Size:10}
|
||||
3)) ********* Order Slim Pdf *********
|
||||
1) settings/print_settings
|
||||
(a) Unique Code => OrderItemSlimPdf & OrderSummarySlimPdf
|
||||
(b) Font is present => {Header font size:11, Item Font Size:9}
|
||||
Font is blank => {Header font size:12, Item Font Size:10}
|
||||
4)) ********* Order Customise PDF *********
|
||||
1) settings/print_settings
|
||||
(a) Unique Code => OrderItemCustomisePdf & OrderSummaryCustomisePdf
|
||||
(b) Can change Header font size and Item Font Size as you like
|
||||
5)) ********* Order Set Pdf *********
|
||||
1) settings/print_settings
|
||||
(a) Unique Code => OrderSetItemCustomisePdf & OrderSummarySetCustomisePdf
|
||||
(b) Can change Header font size and Item Font Size as you like
|
||||
6)) ********* Order Slim Customise PDF
|
||||
1) settings/print_settings
|
||||
(a) Unique Code => OrderItemSlimCustomisePdf & OrderSummarySlimCustomisePdf
|
||||
(b) Can change Header font size and Item Font Size as you like
|
||||
For Check in-out Printing
|
||||
********* Check in-out Pdf *********
|
||||
1) settings/print_settings
|
||||
(a) Unique Code => CheckInOutPdf
|
||||
(b) Heading Space => 5
|
||||
1)) \***\*\*\*\*** Order Pdf \***\*\*\*\*** 1) settings/print_settings
|
||||
(a) Unique Code => OrderItemPdf & OrderSummaryPdf
|
||||
(b) Font is present => {Header font size:11, Item Font Size:9}
|
||||
Font is blank => {Header font size:12, Item Font Size:10}
|
||||
2)) \***\*\*\*\*** Order Set Pdf \***\*\*\*\*** 1) settings/print_settings
|
||||
(a) Unique Code => OrderSetItemPdf & OrderSummarySetPdf
|
||||
(b) Font is present => {Header font size:11, Item Font Size:9}
|
||||
Font is blank => {Header font size:12, Item Font Size:10}
|
||||
3)) \***\*\*\*\*** Order Slim Pdf \***\*\*\*\*** 1) settings/print_settings
|
||||
(a) Unique Code => OrderItemSlimPdf & OrderSummarySlimPdf
|
||||
(b) Font is present => {Header font size:11, Item Font Size:9}
|
||||
Font is blank => {Header font size:12, Item Font Size:10}
|
||||
4)) \***\*\*\*\*** Order Customise PDF \***\*\*\*\*** 1) settings/print_settings
|
||||
(a) Unique Code => OrderItemCustomisePdf & OrderSummaryCustomisePdf
|
||||
(b) Can change Header font size and Item Font Size as you like
|
||||
5)) \***\*\*\*\*** Order Set Pdf \***\*\*\*\*** 1) settings/print_settings
|
||||
(a) Unique Code => OrderSetItemCustomisePdf & OrderSummarySetCustomisePdf
|
||||
(b) Can change Header font size and Item Font Size as you like
|
||||
6)) \***\*\*\*\*** Order Slim Customise PDF 1) settings/print_settings
|
||||
(a) Unique Code => OrderItemSlimCustomisePdf & OrderSummarySlimCustomisePdf
|
||||
(b) Can change Header font size and Item Font Size as you like
|
||||
For Check in-out Printing \***\*\*\*\*** Check in-out Pdf \***\*\*\*\*** 1) settings/print_settings
|
||||
(a) Unique Code => CheckInOutPdf
|
||||
(b) Heading Space => 5
|
||||
|
||||
For ReceiptBillA5Pdf
|
||||
*** change ReceiptBillPdf to ReceiptBillA5Pdf
|
||||
1) settings/print_settings , width:680, height:1450, Header font Size:16, Item font size:14
|
||||
2) settings/lookups => { type:print_settings, name:ReceiptBillA5Pdf, value:1 }
|
||||
\*\*\* change ReceiptBillPdf to ReceiptBillA5Pdf 1) settings/print_settings , width:680, height:1450, Header font Size:16, Item font size:14 2) settings/lookups => { type:print_settings, name:ReceiptBillA5Pdf, value:1 }
|
||||
|
||||
For ReceiptBillAltName options
|
||||
1) settings/lookups => { type:print_settings, name:ReceiptBillAltName, value:1 }
|
||||
For ReceiptBillAltName options 1) settings/lookups => { type:print_settings, name:ReceiptBillAltName, value:1 }
|
||||
|
||||
For Using Star Printer
|
||||
*** Need to change these print settings
|
||||
1) settings/print_settings/unique_code => OrderItemStarPdf
|
||||
2) settings/print_settings/unique_code => ReceiptBillStarPdf
|
||||
3) settings/print_settings/unique_code => SaleItemsStarPdf
|
||||
*** Other print settings aren't need to change.
|
||||
**_ Need to change these print settings 1) settings/print_settings/unique_code => OrderItemStarPdf 2) settings/print_settings/unique_code => ReceiptBillStarPdf 3) settings/print_settings/unique_code => SaleItemsStarPdf
|
||||
_** Other print settings aren't need to change.
|
||||
|
||||
For Show Sale Items Summary at CloseCashierPrint
|
||||
1) settings/print_settings
|
||||
a) Check => Shift Sale Items
|
||||
For Show Sale Items Summary at CloseCashierPrint 1) settings/print_settings
|
||||
a) Check => Shift Sale Items
|
||||
|
||||
For Show/Hide AddOrder Button in QuickService
|
||||
1) settings/lookups => {type:quickservice_add_order, name: QuickServiceAddOrder, value:1 OR 0}
|
||||
For Show/Hide AddOrder Button in QuickService 1) settings/lookups => {type:quickservice_add_order, name: QuickServiceAddOrder, value:1 OR 0}
|
||||
|
||||
For Show Print Button in ReceiptNo Report
|
||||
1) settings/lookups => {type:reprint_receipt, name: Reprint Receipt in Report, value:1}
|
||||
For Show Print Button in ReceiptNo Report 1) settings/lookups => {type:reprint_receipt, name: Reprint Receipt in Report, value:1}
|
||||
|
||||
For Credit Payment Receipt Pdf and Print
|
||||
|
||||
1. settings/lookups => { type:credit_pdf, name: Credit Pdf, value:1 }
|
||||
|
||||
For Bank Integration setting
|
||||
1) rake db:migrate for card_sale_trans, card_settle_trans
|
||||
2) settings/lookups => { type:bank_integration, name: Bank Integration, value:1 }
|
||||
|
||||
1. rake db:migrate for card_sale_trans, card_settle_trans
|
||||
2. settings/lookups => { type:bank_integration, name: Bank Integration, value:1 }
|
||||
|
||||
For checkout time and checkout alert time
|
||||
1) checkout time => { type: checkout_time, name: 9:00 AM - 12:00 PM, value: 120 }
|
||||
2) checkout alert time => { type: checkout_alert_time, name: 8:00 AM - 12:00 PM, value: 60 }
|
||||
* you can add multiple record for checkout time and checkout alert time
|
||||
* type must be 'checkout_time' and 'checkout_alert_time'
|
||||
* you can change name and value
|
||||
* name must be time range [12hr => 8:30 AM - 1:45 PM, 24hr => 8:00 - 13:45]
|
||||
* value must be minutes[60]
|
||||
|
||||
1. checkout time => { type: checkout_time, name: 9:00 AM - 12:00 PM, value: 120 }
|
||||
2. checkout alert time => { type: checkout_alert_time, name: 8:00 AM - 12:00 PM, value: 60 }
|
||||
|
||||
- you can add multiple record for checkout time and checkout alert time
|
||||
- type must be 'checkout_time' and 'checkout_alert_time'
|
||||
- you can change name and value
|
||||
- name must be time range [12hr => 8:30 AM - 1:45 PM, 24hr => 8:00 - 13:45]
|
||||
- value must be minutes[60]
|
||||
|
||||
For call waiter pdf
|
||||
* Backend > Printer > Print Settings > New
|
||||
i) Name : Calling Waiter
|
||||
ii) Unique Code: CallWaiterPdf
|
||||
iii)Template: ...
|
||||
iv) Font: Zawgyi-One
|
||||
v) Printer: #printer name
|
||||
|
||||
Membership Actions SQL
|
||||
* update membership_actions set additional_parameter='{\"campaign_type_id\":5}' where id=10;
|
||||
- Backend > Printer > Print Settings > New
|
||||
i) Name : Calling Waiter
|
||||
ii) Unique Code: CallWaiterPdf
|
||||
iii)Template: ...
|
||||
iv) Font: Zawgyi-One
|
||||
v) Printer: #printer name
|
||||
|
||||
SQL Update after rake clear:data runned
|
||||
* update seed_generators
|
||||
i) TableBooking, Order, OrderItem, sale, SaleOrder, SaleItem, SaleTax, SalePayment, SaleAudit, AssignedOrderItem => { current:0, next:0 }
|
||||
** Note :: do not update Customer
|
||||
Membership Actions SQL \* update membership_actions set additional_parameter='{\"campaign_type_id\":5}' where id=10;
|
||||
|
||||
SQL Update after rake clear:data runned \* update seed_generators
|
||||
i) TableBooking, Order, OrderItem, sale, SaleOrder, SaleItem, SaleTax, SalePayment, SaleAudit, AssignedOrderItem => { current:0, next:0 }
|
||||
\*\* Note :: do not update Customer
|
||||
|
||||
Change type in mysql
|
||||
*run if you got font error for Myanmar, Chinese, etc...
|
||||
=> ALTER TABLE [table_name] CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci #for table
|
||||
=> ALTER DATABASE [database_name] CHARACTER SET utf8 COLLATE utf8_unicode_ci #for database
|
||||
\*run if you got font error for Myanmar, Chinese, etc...
|
||||
=> ALTER TABLE [table_name] CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci #for table
|
||||
=> ALTER DATABASE [database_name] CHARACTER SET utf8 COLLATE utf8_unicode_ci #for database
|
||||
|
||||
For split bill
|
||||
1) settings/lookups => { type:split_bill, name:SplitBill, value:1 }
|
||||
For split bill 1) settings/lookups => { type:split_bill, name:SplitBill, value:1 }
|
||||
|
||||
For Sidekiq
|
||||
1) If you want to use sidekiq
|
||||
=> Create New Lookups => lookup_type = sidekiq, Name = sidekiq , Value = 1 or 0
|
||||
For Sidekiq 1) If you want to use sidekiq
|
||||
=> Create New Lookups => lookup_type = sidekiq, Name = sidekiq , Value = 1 or 0
|
||||
|
||||
For Clear Menu
|
||||
1) rake clear:menu # menu,menu item,menu category,menu item instance,account,item option,item attribute,item set
|
||||
For Clear Menu 1) rake clear:menu # menu,menu item,menu category,menu item instance,account,item option,item attribute,item set
|
||||
|
||||
For Check CUp status
|
||||
###please open
|
||||
###please open
|
||||
sudo cat /etc/sudoers
|
||||
|
||||
### cope and parse
|
||||
|
||||
%superuser ALL=(ALL) NOPASSWD: ALL
|
||||
|
||||
<---- Extra Fields Script ----->
|
||||
DROP TABLE IF EXISTS `display_images`;
|
||||
CREATE TABLE `display_images` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
`shop_id` int(11) DEFAULT NULL,
|
||||
`image` blob,
|
||||
`created_by` varchar(255) DEFAULT NULL,
|
||||
`created_at` datetime NOT NULL,
|
||||
`updated_at` datetime NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
`shop_id` int(11) DEFAULT NULL,
|
||||
`image` blob,
|
||||
`created_by` varchar(255) DEFAULT NULL,
|
||||
`created_at` datetime NOT NULL,
|
||||
`updated_at` datetime NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
|
||||
ALTER TABLE customers
|
||||
@@ -190,118 +180,104 @@ ADD COLUMN group_type VARCHAR(255) after name;
|
||||
|
||||
<---- Extra Fields Script ----->
|
||||
For CloseCashierCustomisePdf in lookups
|
||||
*** change CloseCashierPdf to CloseCashierCustomisePdf
|
||||
1) settings/print_settings
|
||||
2) settings/lookups => { type:print_settings, name: CloseCashierCustomisePdf, value:1 }
|
||||
\*\*\* change CloseCashierPdf to CloseCashierCustomisePdf 1) settings/print_settings 2) settings/lookups => { type:print_settings, name: CloseCashierCustomisePdf, value:1 }
|
||||
|
||||
<---- Extra Fields Script ----->
|
||||
For MoveTablePdf in lookups
|
||||
*** Both Table and Room Moving ***
|
||||
1) settings/lookups => { type:print_settings, name: MoveTablePdf, value:1 }
|
||||
**_ Both Table and Room Moving _** 1) settings/lookups => { type:print_settings, name: MoveTablePdf, value:1 }
|
||||
|
||||
For MoveTablePdf in print settings
|
||||
* Backend > Printer > Print Settings > New
|
||||
i) Name : Move Table
|
||||
ii) Unique Code: MoveTablePdf
|
||||
iii)Template: ...
|
||||
iv) Font: Zawgyi-One v) Printer: #printer name
|
||||
For MoveTablePdf in print settings \* Backend > Printer > Print Settings > New
|
||||
i) Name : Move Table
|
||||
ii) Unique Code: MoveTablePdf
|
||||
iii)Template: ...
|
||||
iv) Font: Zawgyi-One v) Printer: #printer name
|
||||
|
||||
/* Tax Profile Group Types in lookups */
|
||||
1) settings/lookups => { type:tax_profiles, name: Cashier, value:cashier }
|
||||
2) settings/lookups => { type:tax_profiles, name: Quick Service, value: quick_service }
|
||||
3) settings/lookups => { type:tax_profiles, name: Doemal, value: doemal }
|
||||
4) settings/lookups => { type:tax_profiles, name: Food Court, value: food_court }
|
||||
/* Tax Profile Group Types in lookups */
|
||||
/_ Tax Profile Group Types in lookups _/
|
||||
|
||||
/*Receipt Pdf View in lookups */
|
||||
1) settings/lookups => { type:ReceiptPdfView, name: Receipt Pdf View, value:1 or 0 }
|
||||
1. settings/lookups => { type:tax_profiles, name: Cashier, value:cashier }
|
||||
2. settings/lookups => { type:tax_profiles, name: Quick Service, value: quick_service }
|
||||
3. settings/lookups => { type:tax_profiles, name: Doemal, value: doemal }
|
||||
4. settings/lookups => { type:tax*profiles, name: Food Court, value: food_court }
|
||||
/* Tax Profile Group Types in lookups \_/
|
||||
|
||||
/_Receipt Pdf View in lookups _/
|
||||
|
||||
1. settings/lookups => { type:ReceiptPdfView, name: Receipt Pdf View, value:1 or 0 }
|
||||
=> 1 is active and 0 is in-active
|
||||
|
||||
Add Kitchen Role of Employee
|
||||
=> 1) settings/lookups => { type:employee_roles, name: Kitchen, value:kitchen }
|
||||
Add Kitchen Role of Employee
|
||||
=> 1) settings/lookups => { type:employee_roles, name: Kitchen, value:kitchen }
|
||||
|
||||
Add Base URL for DOEMAL
|
||||
1) settings/lookups => { type:order_reservation, name: BaseURL, value:'{doemal url}' }
|
||||
2) settings/lookups => { type:order_reservation, name: Token, value:'{doemal token}' }
|
||||
Add Base URL for DOEMAL 1) settings/lookups => { type:order_reservation, name: BaseURL, value:'{doemal url}' } 2) settings/lookups => { type:order_reservation, name: Token, value:'{doemal token}' }
|
||||
|
||||
Add Feature for Dine-in Cashier
|
||||
** '0' means can not use dine-in cashier and '1' means can use dine-in cashier **
|
||||
=> settings/lookups => { type:dinein_cashier, name: DineInCashier, value:'{0 or 1}' }
|
||||
** '0' means can not use dine-in cashier and '1' means can use dine-in cashier **
|
||||
=> settings/lookups => { type:dinein_cashier, name: DineInCashier, value:'{0 or 1}' }
|
||||
|
||||
Add Feature for Quick Service
|
||||
** '0' means can not use quick service and '1' means can use quick service **
|
||||
=> settings/lookups => { type:quick_service, name: QuickService, value:'{0 or 1}' }
|
||||
** '0' means can not use quick service and '1' means can use quick service **
|
||||
=> settings/lookups => { type:quick_service, name: QuickService, value:'{0 or 1}' }
|
||||
|
||||
Add Feature for Order and Reservation
|
||||
** '0' means can not use order reservation and '1' means can use order reservation **
|
||||
=> settings/lookups => { type:order_reservation, name: OrderReservation, value:'{0 or 1}' }
|
||||
** '0' means can not use order reservation and '1' means can use order reservation **
|
||||
=> settings/lookups => { type:order_reservation, name: OrderReservation, value:'{0 or 1}' }
|
||||
|
||||
For Price 0 in receipt bill
|
||||
2) settings/lookups => { type:show_price, name:Show Price, value:1 }
|
||||
For Price 0 in receipt bill 2) settings/lookups => { type:show_price, name:Show Price, value:1 }
|
||||
|
||||
For Price 0 in receipt bill 2) settings/lookups => { type:order_by, name:Order By, value:name }
|
||||
|
||||
For Price 0 in receipt bill
|
||||
2) settings/lookups => { type:order_by, name:Order By, value:name }
|
||||
For Aston Request => Gift Voucher 1) settings/payment_method_settings => {payment_method:'GiftVoucher', is_active:true, ...}
|
||||
|
||||
For Aston Request => Gift Voucher
|
||||
1) settings/payment_method_settings => {payment_method:'GiftVoucher', is_active:true, ...}
|
||||
|
||||
For Login expiry time
|
||||
1) settings/lookups => {type:expity_time, name:login, value: {minutes}}
|
||||
* value should be minute only (30 / 60 / 120 / etc.)
|
||||
For Login expiry time 1) settings/lookups => {type:expity_time, name:login, value: {minutes}} \* value should be minute only (30 / 60 / 120 / etc.)
|
||||
|
||||
Menu Image (Import guideline)
|
||||
|
||||
=> First, check shop_code, is there in shops table and prefix shop_code in image name?
|
||||
=> You all must do this step
|
||||
* If there is shop_code in shops table (mark in one place/ note and set NULL for this record for a while) and prefix shop_code for image name (like (121_ABC.png)), and copy and paste images into Application/[sxrestaurant]/public/image/menu_images.
|
||||
* If there is shop_code/ no shop_code in shops table but no prefix in image name (* skip set NULL step) , copy and paste images into Application/…./image/menu_images.
|
||||
=> Second, import [menu].xlsx file in /settings/menus and then checked image is uploaded into Application/[sxrestaurant]/public/image/menu_images and insert into menu_items table in database.
|
||||
=> Last, if shop has shop_code, update marked/noted shop_code into shops table again.
|
||||
=> First, check shop_code, is there in shops table and prefix shop_code in image name?
|
||||
=> You all must do this step
|
||||
* If there is shop_code in shops table (mark in one place/ note and set NULL for this record for a while) and prefix shop_code for image name (like (121_ABC.png)), and copy and paste images into Application/[sxrestaurant]/public/image/menu_images.
|
||||
* If there is shop_code/ no shop_code in shops table but no prefix in image name (* skip set NULL step) , copy and paste images into Application/…./image/menu_images.
|
||||
=> Second, import [menu].xlsx file in /settings/menus and then checked image is uploaded into Application/[sxrestaurant]/public/image/menu_images and insert into menu_items table in database.
|
||||
=> Last, if shop has shop_code, update marked/noted shop_code into shops table again.
|
||||
|
||||
For Edit Order Open & Close
|
||||
1) settings/lookups => {type:edit_order, name:EditOrderOrigami, value: {1 or 0}}
|
||||
For Edit Order Open & Close 1) settings/lookups => {type:edit_order, name:EditOrderOrigami, value: {1 or 0}}
|
||||
|
||||
For Dashboard Settings for supervisor and cashier
|
||||
1) settings/lookups => {type:dashboard_settings, name:supervisor, value: {1 or 0}}
|
||||
2) settings/lookups => {type:dashboard_settings, name:cashier, value: {1 or 0}}
|
||||
For Dashboard Settings for supervisor and cashier 1) settings/lookups => {type:dashboard_settings, name:supervisor, value: {1 or 0}} 2) settings/lookups => {type:dashboard_settings, name:cashier, value: {1 or 0}}
|
||||
|
||||
For Customer Settings On/Off
|
||||
1) settings/lookups => {type:customer_settings, name:create, value: {1 or 0}}
|
||||
For Customer Settings On/Off 1) settings/lookups => {type:customer_settings, name:create, value: {1 or 0}}
|
||||
|
||||
For TaxProfiles On/Off
|
||||
1) settings/lookups => {type:changable_tax, name:change, value: {1 or 0}}
|
||||
For TaxProfiles On/Off 1) settings/lookups => {type:changable_tax, name:change, value: {1 or 0}}
|
||||
|
||||
For Add Kitchen Role
|
||||
1) settings/lookups => {type:employee_roles, name:Kitchen, value:kitchen}
|
||||
For Add Kitchen Role 1) settings/lookups => {type:employee_roles, name:Kitchen, value:kitchen}
|
||||
|
||||
For Food Court Settings On/Off
|
||||
** '0' means can not use food court and '1' means can use food court **
|
||||
=> settings/lookups => { type:food_court, name: FoodCourt, value:'{0 or 1}' }
|
||||
** '0' means can not use food court and '1' means can use food court **
|
||||
=> settings/lookups => { type:food_court, name: FoodCourt, value:'{0 or 1}' }
|
||||
|
||||
For Number Formats
|
||||
Precision
|
||||
=> settings/lookups => { lookup_type: number_format, name: precision, value: {0..2} }
|
||||
Delimiter
|
||||
=> settings/lookups => { lookup_type: number_format, name: delimiter, value: { ',', '\u0020', '', ... }
|
||||
Strip insignificant zeros
|
||||
=> settings/lookups => { lookup_type: number_format, name: strip_insignificant_zeros,
|
||||
value: {true: => ['1', 't', 'true', 'on', 'y', 'yes'], false: => ['0', 'f', 'false', 'off', 'n', 'no', ...] }
|
||||
Precision
|
||||
=> settings/lookups => { lookup_type: number_format, name: precision, value: {0..2} }
|
||||
Delimiter
|
||||
=> settings/lookups => { lookup_type: number_format, name: delimiter, value: { ',', '\u0020', '', ... }
|
||||
Strip insignificant zeros
|
||||
=> settings/lookups => { lookup_type: number_format, name: strip_insignificant_zeros,
|
||||
value: {true: => ['1', 't', 'true', 'on', 'y', 'yes'], false: => ['0', 'f', 'false', 'off', 'n', 'no', ...] }
|
||||
|
||||
For Booking checkin time limit
|
||||
settings/lookups =>
|
||||
{ lookup_type: checkin_time_limit, name: CheckinTimeLimit, value: total hours before checkout (e.g., '48')) }
|
||||
settings/lookups =>
|
||||
{ lookup_type: checkin_time_limit, name: CheckinTimeLimit, value: total hours before checkout (e.g., '48')) }
|
||||
|
||||
/* Customer Types in lookups */
|
||||
1) settings/lookups => { type:customer_type, name: Dinein, value:Dinein }
|
||||
2) settings/lookups => { type:customer_type, name: Takeaway, value: Takeaway }
|
||||
3) settings/lookups => { type:customer_type, name: Doemal, value: Doemal }
|
||||
4) settings/lookups => { type:customer_type, name: FoodCourt, value: FoodCourt }
|
||||
/* Tax Profile Group Types in lookups */
|
||||
/_ Customer Types in lookups _/
|
||||
|
||||
1. settings/lookups => { type:customer_type, name: Dinein, value:Dinein }
|
||||
2. settings/lookups => { type:customer_type, name: Takeaway, value: Takeaway }
|
||||
3. settings/lookups => { type:customer_type, name: Doemal, value: Doemal }
|
||||
4. settings/lookups => { type:customer*type, name: FoodCourt, value: FoodCourt }
|
||||
/* Tax Profile Group Types in lookups \_/
|
||||
|
||||
For Online Order Receipt Setting
|
||||
1) settings/lookups => { type:order_reservation, name:ReceiptBill, value: {0 or 1} }
|
||||
2) settings/print_settings => {name: ReceiptBillOrder, unique_code: ReceiptBillOrderPdf, ....}
|
||||
|
||||
1. settings/lookups => { type:order_reservation, name:ReceiptBill, value: {0 or 1} }
|
||||
2. settings/print_settings => {name: ReceiptBillOrder, unique_code: ReceiptBillOrderPdf, ....}
|
||||
|
||||
For Close Cashier Print Settings
|
||||
settings/lookups => {type:close_cashier_print, name:CloseCashierPrint, value: {0 or 1} }
|
||||
@@ -315,99 +291,94 @@ settings/lookups => {type:show_total_before_tax, name:Show Total Before Tax, val
|
||||
For Using Staff Meal
|
||||
settings/lookups => { type:customer_type, name: Staff, value:Staff }
|
||||
|
||||
* ToDo list
|
||||
- ToDo list
|
||||
|
||||
1. Migration
|
||||
2. Quick Service
|
||||
3. Order & Reservation
|
||||
|
||||
- System Dependencies
|
||||
|
||||
* System Dependencies
|
||||
- Configuration
|
||||
|
||||
* Configuration
|
||||
- Database creation
|
||||
|
||||
* Database creation
|
||||
- Database initialization
|
||||
|
||||
* Database initialization
|
||||
- How to run the test suite
|
||||
|
||||
* How to run the test suite
|
||||
|
||||
* Services (job queues, cache servers, search engines, etc.)
|
||||
|
||||
* Deployment instructions
|
||||
- Services (job queues, cache servers, search engines, etc.)
|
||||
|
||||
- Deployment instructions
|
||||
|
||||
* Features
|
||||
|
||||
1. OQS
|
||||
|
||||
1. Filter
|
||||
2. Order Item to each Stations
|
||||
3. Edit Order Item
|
||||
1. Filter
|
||||
2. Order Item to each Stations
|
||||
3. Edit Order Item
|
||||
|
||||
2. Origami(Sale)
|
||||
|
||||
1. Sale
|
||||
2. Add Customer for membership
|
||||
3. Discount and Member Discount for Sale
|
||||
4. Assign Commissioner
|
||||
5. Add other charges to Sale
|
||||
1. Sale
|
||||
2. Add Customer for membership
|
||||
3. Discount and Member Discount for Sale
|
||||
4. Assign Commissioner
|
||||
5. Add other charges to Sale
|
||||
|
||||
3. CRM
|
||||
|
||||
1. Customer Management
|
||||
1. Customer Management
|
||||
|
||||
2. Queue Management
|
||||
2. Queue Management
|
||||
|
||||
4. Backend
|
||||
|
||||
1. Dining Setup
|
||||
1. Dining Setup
|
||||
|
||||
2. Queue Station Setup
|
||||
2. Queue Station Setup
|
||||
|
||||
3. Menu Setup
|
||||
3. Menu Setup
|
||||
|
||||
4. Cashier Terminal Setup
|
||||
4. Cashier Terminal Setup
|
||||
|
||||
5. Tax Profile Setup
|
||||
5. Tax Profile Setup
|
||||
|
||||
6. Printer Setup
|
||||
6. Printer Setup
|
||||
|
||||
7. Payment Integration
|
||||
7. Payment Integration
|
||||
|
||||
8. Employee Management
|
||||
8. Employee Management
|
||||
|
||||
9. Promotion Setup
|
||||
9. Promotion Setup
|
||||
|
||||
10. Commissioner Setup
|
||||
10. Commissioner Setup
|
||||
|
||||
11. Membership Integration
|
||||
|
||||
|
||||
5. Inventory
|
||||
11. Membership Integration
|
||||
|
||||
5) Inventory
|
||||
|
||||
6. Report
|
||||
|
||||
|
||||
* UI Standard
|
||||
- UI Standard
|
||||
|
||||
1. Layout
|
||||
|
||||
1. 2-Column => Main Content - col-9, Information - col-3
|
||||
2. 3-Column => Sub Lint - col-2, Main Content - col-7, Information - col-3
|
||||
1. 2-Column => Main Content - col-9, Information - col-3
|
||||
2. 3-Column => Sub Lint - col-2, Main Content - col-7, Information - col-3
|
||||
|
||||
> Pixel
|
||||
> Pixel
|
||||
|
||||
Main Header Bar - height => 50 px
|
||||
Side Navigation - Weight => 230 px
|
||||
Main Content Padding => 15 px
|
||||
Main Header Bar - height => 50 px
|
||||
Side Navigation - Weight => 230 px
|
||||
Main Content Padding => 15 px
|
||||
|
||||
2. Color
|
||||
|
||||
> BUTTON
|
||||
> BUTTON
|
||||
|
||||
1. Submit/Add/Edit/Confirm buttons => btn-primary (theme color)
|
||||
2. Show/Detail Buttons => btn-info
|
||||
3. Delete => btn-delete
|
||||
4. Cancel/Back => btn-default
|
||||
1. Submit/Add/Edit/Confirm buttons => btn-primary (theme color)
|
||||
2. Show/Detail Buttons => btn-info
|
||||
3. Delete => btn-delete
|
||||
4. Cancel/Back => btn-default
|
||||
|
||||
@@ -326,8 +326,8 @@ function setCommPorts(comPortLists) {
|
||||
/** pay with CB bank **/
|
||||
function pay_withBank(cmd_type, payment_type, bnk_bill_amount,sale_id,receipt_no,cashier_type) {
|
||||
$("#loading_wrapper").show();
|
||||
var com_port = $("#com_port_name").val();
|
||||
reqCardSaleTrans(cmd_type, payment_type, bnk_bill_amount, sale_id, receipt_no, com_port,cashier_type);
|
||||
var com_port = $("#com_port_name").val();
|
||||
reqCardSaleTrans(cmd_type, payment_type, bnk_bill_amount, sale_id, receipt_no, com_port,cashier_type);
|
||||
}
|
||||
|
||||
//add req data to card_sale_trans table
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
box-shadow: 0 1px 5px rgba(0, 0, 0, 0.3);
|
||||
border: none;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
/*top: 0;*/
|
||||
left: 0;
|
||||
z-index: 12;
|
||||
width: 100%; }
|
||||
@@ -6649,7 +6649,7 @@ fieldset[disabled] .form-control {
|
||||
box-shadow: 0 1px 5px rgba(0, 0, 0, 0.3);
|
||||
border: none;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
/*top: 0;*/
|
||||
left: 0;
|
||||
z-index: 12;
|
||||
width: 100%; }
|
||||
|
||||
@@ -19,12 +19,13 @@ class Api::CheckInProcessController < Api::ApiController
|
||||
|
||||
table = DiningFacility.find(params[:dining_id])
|
||||
#Send to background job for processing
|
||||
if ENV["SERVER_MODE"] == 'cloud'
|
||||
from = request.subdomain + "." + request.domain
|
||||
else
|
||||
from = ""
|
||||
end
|
||||
ActionCable.server.broadcast "check_in_booking_channel",table: table,from:from
|
||||
if ENV["SERVER_MODE"] == 'cloud'
|
||||
from = request.subdomain + "." + request.domain
|
||||
else
|
||||
from = ""
|
||||
end
|
||||
ActionCable.server.broadcast "check_in_booking_channel",table: table,from:from
|
||||
|
||||
check_out_time = nil
|
||||
extra_minutes = nil
|
||||
alert_time_min = 0
|
||||
@@ -65,93 +66,59 @@ class Api::CheckInProcessController < Api::ApiController
|
||||
if params[:dining_id]
|
||||
dining_facility = DiningFacility.find(params[:dining_id])
|
||||
if dining_facility.is_active && dining_facility.status == "available"
|
||||
if params[:checkin_time]
|
||||
checkin_at = nil
|
||||
if !params[:checkin_time].empty?
|
||||
checkin_at = Time.parse(params[:checkin_time]).utc
|
||||
if dining_facility.current_checkin_booking.nil?
|
||||
if params[:checkin_time].present?
|
||||
checkin_at = Time.parse(params[:checkin_time])
|
||||
else
|
||||
checkin_at = Time.now.utc
|
||||
checkin_at = Time.now
|
||||
end
|
||||
|
||||
if !checkin_at.nil?
|
||||
if dining_facility.check_time(checkin_at, "checkin")
|
||||
booking = dining_facility.get_current_booking
|
||||
if booking.nil?
|
||||
checkout_at = nil
|
||||
lookup_checkout_time = Lookup.collection_of("checkout_time")
|
||||
today = Time.now
|
||||
if !lookup_checkout_time.empty?
|
||||
|
||||
booking = Booking.create({:dining_facility_id => params[:dining_id],:type => "TableBooking",
|
||||
:checkin_by=>current_login_employee.name,:checkin_at => checkin_at,:checkout_at =>nil, :booking_status => "assign", :reserved_at => nil, :reserved_by => nil })
|
||||
if booking.save!
|
||||
dining_facility.status = "occupied"
|
||||
dining_facility.save!
|
||||
render :json => { :status => true, :booking_id => booking.booking_id, :checkin_at => booking.checkin_at.utc.getlocal.strftime("%Y-%m-%d %H:%M:%S"), :message => "Check-in success" }
|
||||
else
|
||||
render :json => { :status => false, :error_message => "Booking does not create successfully!" }
|
||||
end
|
||||
else
|
||||
render :json => { :status => false, :error_message => "Booking already exist!" }
|
||||
lookup_checkout_time.each do |checkout_time|
|
||||
start_time, end_time = checkout_time[0].split("-").map{ |t| Time.parse(t.strip).strftime("%H:%M%p") }
|
||||
if start_time <= today.strftime("%H:%M%p") && today.strftime("%H:%M%p") <= end_time
|
||||
checkout_at = checkin_at + (checkout_time[1]).to_i.minutes
|
||||
end
|
||||
else
|
||||
render :json => { :status => false, :error_message => "Checkin time not available!" }
|
||||
end
|
||||
else
|
||||
render :json => { :status => false, :error_message => "Operation failed!" }
|
||||
end
|
||||
|
||||
booking = nil
|
||||
ActiveRecord::Base.transaction do
|
||||
booking = Booking.create({
|
||||
:dining_facility_id => params[:dining_id],
|
||||
:type => "TableBooking",
|
||||
:checkin_by => current_login_employee.name,
|
||||
:checkin_at => checkin_at,
|
||||
:checkout_at => checkout_at,
|
||||
:booking_status => "assign",
|
||||
:reserved_at => checkout_at,
|
||||
:reserved_by => current_login_employee.name })
|
||||
|
||||
dining_facility.status = "occupied"
|
||||
dining_facility.save!
|
||||
end
|
||||
|
||||
terminal = DiningFacility.find_by_id(booking.dining_facility_id)
|
||||
cashier_terminal = CashierTerminal.find_by_id(terminal.zone_id)
|
||||
|
||||
if ENV["SERVER_MODE"] != "cloud" #no print in cloud server
|
||||
unique_code = "CheckInOutPdf"
|
||||
printer = PrintSetting.find_by_unique_code(unique_code)
|
||||
|
||||
# print when complete click
|
||||
order_queue_printer = Printer::OrderQueuePrinter.new(printer)
|
||||
|
||||
if !printer.nil?
|
||||
order_queue_printer.print_check_in_out(printer, cashier_terminal, booking, dining_facility)
|
||||
end
|
||||
end
|
||||
render :json => { :status => true, :booking_id => booking.booking_id, :checkin_at => booking.checkin_at.strftime("%Y-%m-%d %H:%M"), :checkout_at => booking.checkout_at.strftime("%Y-%m-%d %H:%M") }
|
||||
else
|
||||
booking = dining_facility.current_checkout_booking
|
||||
if booking.nil?
|
||||
lookup_checkout_time = Lookup.collection_of("checkout_time")
|
||||
|
||||
if !lookup_checkout_time.empty?
|
||||
today = Time.now.utc.getlocal
|
||||
checkout_at = Time.now.utc.getlocal
|
||||
|
||||
lookup_checkout_time.each do |checkout_time|
|
||||
arr_time = checkout_time[0].split("-")
|
||||
start_time = Time.parse(arr_time[0].strip).utc.getlocal.strftime("%H:%M%p")
|
||||
end_time = Time.parse(arr_time[1].strip).utc.getlocal.strftime("%H:%M%p")
|
||||
if start_time <= today.strftime("%H:%M%p") && today.strftime("%H:%M%p") <= end_time
|
||||
checkout_at = checkout_at + (checkout_time[1]).to_i.minutes
|
||||
end
|
||||
end
|
||||
|
||||
if checkout_at.strftime("%Y-%m-%d %H:%M%p") >= today.strftime("%Y-%m-%d %H:%M%p")
|
||||
# if dining_facility.type == "Table"
|
||||
# type = "TableBooking"
|
||||
# else
|
||||
# type = "RoomBooking"
|
||||
# end
|
||||
|
||||
booking = Booking.create({:dining_facility_id => params[:dining_id],:type => "TableBooking",
|
||||
:checkin_by=>current_login_employee.name,:checkin_at => Time.now.utc,:checkout_at =>checkout_at, :booking_status => "assign", :reserved_at => checkout_at, :reserved_by => current_login_employee.name })
|
||||
if booking.save!
|
||||
dining_facility.status = "occupied"
|
||||
dining_facility.save!
|
||||
end
|
||||
terminal = DiningFacility.find_by_id(booking.dining_facility_id)
|
||||
cashier_terminal = CashierTerminal.find_by_id(terminal.zone_id)
|
||||
|
||||
if ENV["SERVER_MODE"] != "cloud" #no print in cloud server
|
||||
|
||||
unique_code = "CheckInOutPdf"
|
||||
printer = PrintSetting.find_by_unique_code(unique_code)
|
||||
|
||||
# print when complete click
|
||||
order_queue_printer = Printer::OrderQueuePrinter.new(printer)
|
||||
|
||||
if !printer.nil?
|
||||
order_queue_printer.print_check_in_out(printer, cashier_terminal, booking, dining_facility)
|
||||
end
|
||||
end
|
||||
render :json => { :status => true, :booking_id => booking.booking_id, :checkout_at => booking.checkout_at.utc.getlocal.strftime("%Y-%m-%d %H:%M") }
|
||||
else
|
||||
render :json => { :status => true }
|
||||
end
|
||||
else
|
||||
render :json => { :status => true }
|
||||
end
|
||||
else
|
||||
render :json => { :status => false, :error_message => "Booking already exist!" }
|
||||
end
|
||||
render :json => { :status => false, :error_message => "Booking already exist!" }
|
||||
end
|
||||
else
|
||||
error_message = "#{dining_facility.type} is not available!"
|
||||
@@ -161,6 +128,8 @@ class Api::CheckInProcessController < Api::ApiController
|
||||
error_message = "dining_id is required!"
|
||||
render :json => { :status => false, :error_message => error_message }
|
||||
end
|
||||
rescue ActiveRecord::RecordInvalid => exception
|
||||
render :json => { :status => false, :error_message => exception.message }
|
||||
end
|
||||
|
||||
def request_time
|
||||
|
||||
@@ -37,18 +37,16 @@ class Api::OrdersController < Api::ApiController
|
||||
@booking = table.get_booking
|
||||
end
|
||||
|
||||
@tax_profile = nil
|
||||
@tax_profile = TaxProfile.where("lower(group_type)='cashier'")
|
||||
# arr_tax = []
|
||||
|
||||
# if !arr_tax.empty?
|
||||
# @tax_profile = TaxProfile.where(:id => arr_tax)
|
||||
# else
|
||||
@tax_profile = TaxProfile.where("lower(group_type)='cashier'")
|
||||
# @tax_profile = TaxProfile.where("lower(group_type)='cashier'")
|
||||
# end
|
||||
|
||||
@shop = Shop.current_shop
|
||||
puts "Hello world"
|
||||
puts @shop.to_json
|
||||
return @shop.to_json
|
||||
end
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
class InstallController < BaseController
|
||||
skip_before_action :lookup_domain
|
||||
# skip_before_action :set_current_tenant_by_subdomain_or_name
|
||||
skip_before_action :verify_authenticity_token
|
||||
# before_action :check_license
|
||||
|
||||
def index
|
||||
end
|
||||
@@ -9,7 +8,7 @@ class InstallController < BaseController
|
||||
def activate
|
||||
flag = "<%= ENV['AES_IV'] %>"
|
||||
key_base = "<%= ENV['secret_key_base'] %>"
|
||||
|
||||
|
||||
restaurant = params[:restaurant_name]
|
||||
license_key = params[:license_key]
|
||||
# admin_user = params[:admin_user]
|
||||
@@ -18,20 +17,20 @@ class InstallController < BaseController
|
||||
db_schema = params[:db_schema]
|
||||
db_user = params[:db_user]
|
||||
db_password = params[:db_password]
|
||||
phrase = license_key
|
||||
|
||||
phrase = license_key
|
||||
|
||||
# Check Exists IV
|
||||
# if flag == "<%= ENV['AES_IV'] %>"
|
||||
# # Export for Key
|
||||
# aes = MyAesCrypt.new
|
||||
# # Export for Key
|
||||
# aes = MyAesCrypt.new
|
||||
# aes_key, aes_iv = aes.export_key(phrase)
|
||||
# else
|
||||
# else
|
||||
# aes_key = ENV["AES_KEY"]
|
||||
# aes_iv = ENV["AES_IV"]
|
||||
# end
|
||||
|
||||
@license = License.new(ENV["SX_PROVISION_URL"])
|
||||
response = @license.license_activate(restaurant, license_key, db_host, db_schema, db_user, db_password)
|
||||
@license = License.new(ENV["SX_PROVISION_URL"], request.host)
|
||||
response = @license.license_activate(restaurant, license_key, db_host, db_schema, db_user, db_password)
|
||||
if response[:status]
|
||||
redirect_to root_url, notice: response["message"]
|
||||
else
|
||||
@@ -39,28 +38,24 @@ class InstallController < BaseController
|
||||
end
|
||||
end
|
||||
|
||||
def check_license
|
||||
if License.check_license_file
|
||||
redirect_to root_url
|
||||
def lookup_domain
|
||||
if ENV["SERVER_MODE"] == "cloud"
|
||||
not_found
|
||||
elsif ENV["SERVER_MODE"] == "application"
|
||||
if check_license #(request.host)
|
||||
redirect_to root_url
|
||||
end
|
||||
elsif request.subdomains.last && request.subdomains.last != "www"
|
||||
if check_license #(request.host)
|
||||
redirect_to root_url
|
||||
elsif !check_subdomain(request.host)
|
||||
not_found
|
||||
end
|
||||
else
|
||||
not_found
|
||||
end
|
||||
end
|
||||
|
||||
# def lookup_domain
|
||||
# if request.subdomain.present? && request.subdomain != "www"
|
||||
# @license = current_license(ENV["SX_PROVISION_URL"], request.subdomain.downcase)
|
||||
# if (!@license.nil?)
|
||||
# # logger.info "Location - " + @license.name
|
||||
# ActiveRecord::Base.establish_connection(website_connection(@license))
|
||||
# # logger.info "Connecting to - " + @license.subdomain + " - "+ @license.dbhost + "@" + @license.dbschema
|
||||
# else
|
||||
# # reconnect_default_db
|
||||
# logger.info 'License is nil'
|
||||
# # redirect_to root_url(:host => request.domain) + "store_error"
|
||||
# render :json => [{ status: false, message: 'Invalid Access!'}]
|
||||
# end
|
||||
# end
|
||||
# end
|
||||
|
||||
# def current_license(url, key)
|
||||
# @license = License.new(url, key)
|
||||
|
||||
|
||||
@@ -87,7 +87,7 @@ class Origami::DiscountsController < BaseOrigamiController
|
||||
remark = "Discount Item Name ->#{sale_item.product_name}-Product Code ->#{sale_item.product_code} | Price [#{sale_item.price}] | Receipt No #{sale.receipt_no} "
|
||||
|
||||
sale_audit = SaleAudit.record_audit_discount(sale_item.sale_id,sale.cashier_name, action_by,remark,"ITEMDISCOUNT" )
|
||||
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ class Origami::OthersPaymentsController < BaseOrigamiController
|
||||
@cashier_type = params[:type]
|
||||
path = request.fullpath
|
||||
if path.include? ("credit_payment")
|
||||
@payment_method_setting = PaymentMethodSetting.where("LOWER(payment_method) in ('mpu','visa','master','jcb','unionpay','alipay') and is_active='1'")
|
||||
@payment_method_setting = PaymentMethodSetting.where("is_active='1'")
|
||||
else
|
||||
@payment_method_setting = PaymentMethodSetting.all
|
||||
end
|
||||
@@ -39,7 +39,92 @@ class Origami::OthersPaymentsController < BaseOrigamiController
|
||||
# end
|
||||
end
|
||||
|
||||
def new
|
||||
@sale_id = params[:sale_id]
|
||||
@cashier_type = params[:type]
|
||||
payment_methods = PaymentMethodSetting.pluck(:payment_method)
|
||||
if @payment_method = payment_methods.find { |m| m.parameterize == params[:method] }
|
||||
path = request.fullpath
|
||||
# limit master_amount
|
||||
if path.include? ("credit_payment")
|
||||
sale_data = Sale.get_sale_data_for_other_payment_credit(@sale_id)
|
||||
else
|
||||
sale_data = Sale.find_by_sale_id(@sale_id)
|
||||
end
|
||||
total = 0
|
||||
@shop = Shop.current_shop
|
||||
@paid_amount = 0
|
||||
@can_paid = 0
|
||||
@rounding_adj = 0
|
||||
@member_discount = 0
|
||||
@sub_total = 0
|
||||
@membership_id = nil
|
||||
@receipt_no = nil
|
||||
if !sale_data.nil?
|
||||
total = sale_data.grand_total
|
||||
|
||||
others = 0
|
||||
|
||||
if @shop.is_rounding_adj
|
||||
new_total = Sale.get_rounding_adjustment(sale_data.grand_total)
|
||||
else
|
||||
new_total = sale_data.grand_total
|
||||
end
|
||||
|
||||
@rounding_adj = new_total-sale_data.grand_total
|
||||
|
||||
if path.include? ("credit_payment")
|
||||
sale_payment_data = SalePayment.get_sale_payment_for_credit(sale_data)
|
||||
else
|
||||
sale_payment_data = sale_data.sale_payments
|
||||
end
|
||||
|
||||
sale_payment_data.each do |sale_payment|
|
||||
if sale_payment.payment_method == @payment_method.parameterize
|
||||
@paid_amount = @paid_amount + sale_payment.payment_amount
|
||||
else
|
||||
others = others + sale_payment.payment_amount
|
||||
end
|
||||
end
|
||||
@can_paid = total - @paid_amount - others
|
||||
@member_discount = MembershipSetting.find_by_discount(1)
|
||||
@sub_total = sale_data.total_amount
|
||||
@membership_id = sale_data.customer.membership_id
|
||||
#for bank integration
|
||||
@receipt_no = sale_data.receipt_no
|
||||
end
|
||||
bank_integration = Lookup.collection_of('bank_integration')
|
||||
@bank_integration = 0
|
||||
if !bank_integration[0].nil?
|
||||
@bank_integration = bank_integration[0][1]
|
||||
end
|
||||
else
|
||||
if path.include? ("credit_payment")
|
||||
redirect_to "sale/#{@sale_id}/#{@cashier_type}/payment/others_payment"
|
||||
else
|
||||
redirect_to "sale/#{@sale_id}/#{@cashier_type}/credit_payment/others_payment"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def create
|
||||
cash = params[:amount]
|
||||
sale_id = params[:sale_id]
|
||||
ref_no = params[:ref_no]
|
||||
payment_method = params[:method]
|
||||
if PaymentMethodSetting.pluck(:payment_method).map(&:parameterize).include? payment_method
|
||||
if saleObj = Sale.find(sale_id)
|
||||
shop_details = Shop.current_shop
|
||||
|
||||
path = request.fullpath
|
||||
payment_for = false
|
||||
if path.include? ("credit_payment")
|
||||
payment_for = true
|
||||
end
|
||||
sale_payment = SalePayment.new
|
||||
@status, @sale = sale_payment.process_payment(saleObj, current_user, cash, payment_method, ref_no, payment_for)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -51,7 +51,8 @@ class Origami::PaymentsController < BaseOrigamiController
|
||||
#TODO :: KBZPAY ( QR )
|
||||
# On/Off setting ( show or not qr )
|
||||
# qrCode = "00020101021202021110500346KBZ005ab0ed5c1ed09d1c4585ff1313170389160831435294600062000040732kp1e78f7efddca190042638341afb88d50200006KBZPay0106KBZPay5303MMK5802MM62170813PAY_BY_QRCODE64060002my6304FBBD"
|
||||
kbz_pay_method = PaymentMethodSetting.where(:payment_method => KbzPay::KBZ_PAY).last
|
||||
kbz_pay_method = PaymentMethodSetting.where(payment_method: KbzPay::KBZ_PAY, gateway_communication_type: ['api', 'Api'], is_active: true)
|
||||
.where.not(gateway_url: [nil, ''], auth_token: [nil, ''], merchant_account_id: [nil, '']).last
|
||||
|
||||
status = false
|
||||
qr = nil
|
||||
@@ -90,6 +91,7 @@ class Origami::PaymentsController < BaseOrigamiController
|
||||
latest_order_no = nil
|
||||
is_kbz = params[:is_kbz]
|
||||
|
||||
|
||||
if saleObj = Sale.find(sale_id)
|
||||
sale_items = SaleItem.get_all_sale_items(sale_id)
|
||||
|
||||
@@ -106,7 +108,7 @@ class Origami::PaymentsController < BaseOrigamiController
|
||||
sp.kbz_edit_sale_payment(sp.received_amount.to_f, current_user)
|
||||
end
|
||||
|
||||
if !path.include? ("credit_payment")
|
||||
|
||||
rebate_amount = nil
|
||||
|
||||
# For Cashier by Zone
|
||||
@@ -200,12 +202,18 @@ class Origami::PaymentsController < BaseOrigamiController
|
||||
item_price_by_accounts = SaleItem.calculate_price_by_accounts(saleObj.sale_items)
|
||||
discount_price_by_accounts = SaleItem.get_discount_price_by_accounts(saleObj.sale_items)
|
||||
other_amount = SaleItem.calculate_other_charges(sale_items)
|
||||
credit_pdf = Lookup.find_by_lookup_type("credit_pdf")
|
||||
if (path.include? ("credit_payment")) && !credit_pdf.nil? && credit_pdf.value.to_i == 1
|
||||
printed_status = 'credit_payment'
|
||||
else
|
||||
printed_status = 'Paid'
|
||||
end
|
||||
|
||||
printer = Printer::ReceiptPrinter.new(print_settings)
|
||||
filename, sale_receipt_no, printer_name = printer.print_receipt_bill(print_settings, false, nil, cashier_terminal,sale_items,saleObj,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_detail, "Paid",current_balance,card_data,other_amount,latest_order_no,card_balance_amount,nil)
|
||||
filename, sale_receipt_no, printer_name = printer.print_receipt_bill(print_settings, false, nil, cashier_terminal,sale_items,saleObj,customer.name, item_price_by_accounts, discount_price_by_accounts, member_info,rebate_amount,shop_detail, printed_status,current_balance,card_data,other_amount,latest_order_no,card_balance_amount,nil)
|
||||
|
||||
#end
|
||||
end
|
||||
|
||||
if !saleObj.nil?
|
||||
# InventoryJob.perform_now(self.id)
|
||||
# InventoryDefinition.calculate_product_count(saleObj)
|
||||
@@ -225,15 +233,29 @@ class Origami::PaymentsController < BaseOrigamiController
|
||||
# end
|
||||
|
||||
def show
|
||||
@sale = Sale.find(params[:sale_id])
|
||||
@shop = Shop.current_shop
|
||||
@customer = @sale.customer
|
||||
@customer_lists = Customer.where(name: ["WALK-IN", "TAKEAWAY"])
|
||||
@member_discount = MembershipSetting.find_by_discount(1)
|
||||
|
||||
if dining_facility = @sale.booking.dining_facility
|
||||
@table_no = dining_facility.type + ' ' + dining_facility.name
|
||||
@checkin_time = @sale.booking.checkin_at
|
||||
@dining = dining_facility
|
||||
end
|
||||
|
||||
display_type = Lookup.find_by_lookup_type("display_type")
|
||||
if !display_type.nil? && display_type.value.to_i ==2
|
||||
if !display_type.nil? && display_type.value.to_i ==2
|
||||
@display_type = display_type.value
|
||||
else
|
||||
@display_type = nil
|
||||
end
|
||||
end
|
||||
|
||||
path = request.fullpath
|
||||
sale_id = params[:sale_id]
|
||||
|
||||
@trans_flag = true
|
||||
|
||||
if params[:type] == "transaction"
|
||||
@trans_flag = false
|
||||
@cashier_type = "cashier"
|
||||
@@ -241,201 +263,111 @@ class Origami::PaymentsController < BaseOrigamiController
|
||||
@cashier_type = params[:type]
|
||||
end
|
||||
|
||||
if path.include? ("credit_payment")
|
||||
@sale_payment = SalePayment.where(sale_id: sale_id, payment_method: 'creditnote').select("SUM(payment_amount) as payment_amount")
|
||||
if path.include? 'credit_payment'
|
||||
@sale_payment = false
|
||||
@amount_due = @sale.sale_payments.where(payment_method: 'creditnote').pluck('SUM(payment_amount)').first
|
||||
payments = @sale.sale_payments.joins(:sale_audit).group_by(&:payment_method).map { |method, payments| [method, payments.sum { |payment| payment.payment_amount }] }
|
||||
else
|
||||
@sale_payment = true
|
||||
@amount_due = @sale.grand_total
|
||||
payments = @sale.sale_payments.left_joins(:sale_audit).where(sale_audits: {sale_audit_id: nil}).group_by(&:payment_method).map { |method, payments| [method, payments.sum { |payment| payment.payment_amount }] }
|
||||
end
|
||||
|
||||
@member_discount = MembershipSetting.find_by_discount(1)
|
||||
@membership_rebate_balance=0
|
||||
@payment_methods = PaymentMethodSetting.where(is_active: true).pluck(:payment_method)
|
||||
@cash = payments.inject(0) { |sum, payment| sum + payment[1] if payment[0] == 'cash' }
|
||||
@credit = payments.inject(0) { |sum, payment| sum + payment[1] if payment[0] == 'creditnote' }
|
||||
@other_payments = payments.select { |payment| !['cash', 'creditnote'].include? payment[0] }.map { |method, amount| [ @payment_methods.find { |payment_method| payment_method.parameterize == method }, amount ] }
|
||||
@other_payment = @other_payments.sum { |payment| payment[1] }
|
||||
|
||||
if Sale.exists?(sale_id)
|
||||
@cash = 0.0
|
||||
@kbz_pay_amount = 0.0
|
||||
@other = 0.0
|
||||
@ppamount = 0.0
|
||||
@visacount= 0.0
|
||||
@jcbcount= 0.0
|
||||
@mastercount = 0.0
|
||||
@unionpaycount = 0.0
|
||||
@alipaycount = 0.0
|
||||
@junctionpaycount = 0.0
|
||||
@credit = 0.0
|
||||
@paymalcount = 0.0
|
||||
@dingacount = 0.0
|
||||
@giftvouchercount = 0.0
|
||||
@sale_data = Sale.find_by_sale_id(sale_id)
|
||||
@balance = 0
|
||||
@accountable_type = ''
|
||||
@table_no = ''
|
||||
@dining = ''
|
||||
@other_payment = 0.0
|
||||
@pdf_view = nil
|
||||
@lookup_pdf = Lookup.find_by_lookup_type("ReceiptPdfView")
|
||||
if !@lookup_pdf.nil?
|
||||
@pdf_view = @lookup_pdf.value
|
||||
end
|
||||
#total customer with individual total amount
|
||||
@individual_total = Array.new
|
||||
if !@sale.equal_persons.nil?
|
||||
per_person_amount = @sale.grand_total / @sale.equal_persons.to_i
|
||||
@individual_total.push({'total_customer' => @sale.equal_persons.to_i, 'per_person_amount' => per_person_amount })
|
||||
end
|
||||
|
||||
amount = SalePayment.get_kbz_pay_amount(sale_id, current_user)
|
||||
@kbz_pay_amount += amount.to_f
|
||||
|
||||
#for changable on/off
|
||||
@changable_tax = true
|
||||
lookup_changable_tax = Lookup.collection_of('changable_tax')
|
||||
if !lookup_changable_tax.empty?
|
||||
lookup_changable_tax.each do |changable_tax|
|
||||
if changable_tax[0].downcase == "change"
|
||||
if changable_tax[1] == '0'
|
||||
@changable_tax = false
|
||||
end
|
||||
#for changable on/off
|
||||
@changable_tax = true
|
||||
lookup_changable_tax = Lookup.collection_of('changable_tax')
|
||||
if !lookup_changable_tax.empty?
|
||||
lookup_changable_tax.each do |changable_tax|
|
||||
if changable_tax[0].downcase == "change"
|
||||
if changable_tax[1] == '0'
|
||||
@changable_tax = false
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@shop = shop_detail #show shop info
|
||||
# get printer info
|
||||
@print_settings = PrintSetting.get_precision_delimiter()
|
||||
|
||||
@customer_lists = Customer.where(name: ["WALK-IN", "TAKEAWAY"])
|
||||
@pdf_view = nil
|
||||
@lookup_pdf = Lookup.find_by_lookup_type("ReceiptPdfView")
|
||||
if !@lookup_pdf.nil?
|
||||
@pdf_view = @lookup_pdf.value
|
||||
end
|
||||
|
||||
saleObj = Sale.find(sale_id)
|
||||
# amount = SalePayment.get_kbz_pay_amount(sale_id, current_user)
|
||||
# @kbz_pay_amount += amount.to_f
|
||||
|
||||
#total customer with individual total amount
|
||||
@individual_total = Array.new
|
||||
if !saleObj.equal_persons.nil?
|
||||
per_person_amount = saleObj.grand_total.to_f / saleObj.equal_persons.to_i
|
||||
@individual_total.push({'total_customer' => saleObj.equal_persons.to_i, 'per_person_amount' => per_person_amount.to_f })
|
||||
# rounding adjustment
|
||||
# if @shop.is_rounding_adj
|
||||
# a = saleObj.grand_total % 25 # Modulus
|
||||
# b = saleObj.grand_total / 25 # Division
|
||||
# #not calculate rounding if modulus is 0 and division is even
|
||||
# #calculate rounding if modulus is zero or not zero and division are not even
|
||||
# if (a != 0.0 && b%2 != 0.0) || (a==0.0 && b%2 !=0)
|
||||
# new_total = Sale.get_rounding_adjustment(saleObj.grand_total)
|
||||
# @rounding_adj = new_total-saleObj.grand_total
|
||||
# saleObj.update_attributes(grand_total: new_total,old_grand_total: saleObj.grand_total,rounding_adjustment:@rounding_adj)
|
||||
# @sale_data.grand_total = new_total
|
||||
# @sale_data.old_grand_total = saleObj.grand_total
|
||||
# @sale_data.rounding_adjustment = @rounding_adj
|
||||
# else
|
||||
# @rounding_adj = @sale_data.rounding_adjustment
|
||||
# end
|
||||
# else
|
||||
# @rounding_adj = @sale_data.rounding_adjustment
|
||||
# end
|
||||
#end rounding adjustment
|
||||
|
||||
# accounts = @customer.tax_profiles
|
||||
accounts = TaxProfile.where("group_type = ?",@cashier_type).order("order_by ASC")
|
||||
@account_arr =[]
|
||||
@tax_arr =[]
|
||||
|
||||
accounts.each do |acc|
|
||||
account = TaxProfile.find(acc.id)
|
||||
# @account_arr.push(account)
|
||||
@tax_arr.push(account.name)
|
||||
end
|
||||
|
||||
sale_taxes = @sale.sale_taxes
|
||||
if !sale_taxes.empty?
|
||||
sale_taxes.each do |sale_tax|
|
||||
@account_arr.push(sale_tax)
|
||||
end
|
||||
end
|
||||
|
||||
# rounding adjustment
|
||||
# if @shop.is_rounding_adj
|
||||
# a = saleObj.grand_total % 25 # Modulus
|
||||
# b = saleObj.grand_total / 25 # Division
|
||||
# #not calculate rounding if modulus is 0 and division is even
|
||||
# #calculate rounding if modulus is zero or not zero and division are not even
|
||||
# if (a != 0.0 && b%2 != 0.0) || (a==0.0 && b%2 !=0)
|
||||
# new_total = Sale.get_rounding_adjustment(saleObj.grand_total)
|
||||
# @rounding_adj = new_total-saleObj.grand_total
|
||||
# else
|
||||
# @rounding_adj = @sale_data.rounding_adjustment
|
||||
# end
|
||||
# else
|
||||
# @rounding_adj = @sale_data.rounding_adjustment
|
||||
# end
|
||||
#end rounding adjustment
|
||||
rebate = MembershipSetting.find_by_rebate(1)
|
||||
|
||||
# rounding adjustment
|
||||
if @shop.is_rounding_adj
|
||||
a = saleObj.grand_total % 25 # Modulus
|
||||
b = saleObj.grand_total / 25 # Division
|
||||
#not calculate rounding if modulus is 0 and division is even
|
||||
#calculate rounding if modulus is zero or not zero and division are not even
|
||||
if (a != 0.0 && b%2 != 0.0) || (a==0.0 && b%2 !=0)
|
||||
new_total = Sale.get_rounding_adjustment(saleObj.grand_total)
|
||||
@rounding_adj = new_total-saleObj.grand_total
|
||||
saleObj.update_attributes(grand_total: new_total,old_grand_total: saleObj.grand_total,rounding_adjustment:@rounding_adj)
|
||||
@sale_data.grand_total = new_total
|
||||
@sale_data.old_grand_total = saleObj.grand_total
|
||||
@sale_data.rounding_adjustment = @rounding_adj
|
||||
else
|
||||
@rounding_adj = @sale_data.rounding_adjustment
|
||||
end
|
||||
else
|
||||
@rounding_adj = @sale_data.rounding_adjustment
|
||||
end
|
||||
#end rounding adjustment
|
||||
|
||||
# get printer info
|
||||
@print_settings = PrintSetting.get_precision_delimiter()
|
||||
|
||||
#get customer amount
|
||||
@customer = Customer.find(@sale_data.customer_id)
|
||||
# accounts = @customer.tax_profiles
|
||||
accounts = TaxProfile.where("group_type = ?",@cashier_type).order("order_by ASC")
|
||||
@account_arr =[]
|
||||
@tax_arr =[]
|
||||
accounts.each do |acc|
|
||||
account = TaxProfile.find(acc.id)
|
||||
# @account_arr.push(account)
|
||||
@tax_arr.push(account.name)
|
||||
end
|
||||
sale_taxes = SaleTax.where("sale_id = ?", saleObj.sale_id)
|
||||
if !sale_taxes.empty?
|
||||
sale_taxes.each do |sale_tax|
|
||||
@account_arr.push(sale_tax)
|
||||
end
|
||||
end
|
||||
rebate = MembershipSetting.find_by_rebate(1)
|
||||
# get member information
|
||||
if @customer.membership_id != nil && rebate
|
||||
response = Customer.get_member_account(@customer)
|
||||
if response["status"]==true
|
||||
response["account_data"].each do |res|
|
||||
# get member information
|
||||
@balance = 0
|
||||
@accountable_type = ''
|
||||
if @customer.membership_id != nil && rebate
|
||||
response = Customer.get_member_account(@customer)
|
||||
if response["status"]==true
|
||||
response["account_data"].each do |res|
|
||||
if res["accountable_type"] == "RebateAccount" || res["accountable_type"] == "RebatebonusAccount"
|
||||
@balance = @balance.to_f + res["balance"].to_f
|
||||
# @accountable_type = res["accountable_type"]
|
||||
@accountable_type = "Rebate Balance"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
#end customer amount
|
||||
|
||||
#paymal payment
|
||||
|
||||
@sale_data.bookings.each do |sbk|
|
||||
if sbk.dining_facility_id.to_i >0
|
||||
df = DiningFacility.find(sbk.dining_facility_id)
|
||||
@table_no = df.type + ' ' + df.name
|
||||
@checkin_time = sbk.checkin_at
|
||||
@dining = df
|
||||
break
|
||||
else
|
||||
@table_no = nil
|
||||
@checkin_time = nil
|
||||
@dining = nil
|
||||
end
|
||||
end
|
||||
|
||||
if path.include? ("credit_payment")
|
||||
@sale_payment_data = SalePayment.get_sale_payment_for_credit(@sale_data)
|
||||
else
|
||||
@sale_payment_data = SalePayment.get_sale_payments(@sale_data)
|
||||
end
|
||||
@sale_payment_data.each do |spay|
|
||||
if spay.payment_method == "cash"
|
||||
@cash += spay.payment_amount
|
||||
end
|
||||
if spay.payment_method !="creditnote"
|
||||
@other_payment += spay.payment_amount
|
||||
end
|
||||
|
||||
if spay.payment_method == "mpu"
|
||||
@other += spay.payment_amount
|
||||
elsif spay.payment_method == "paypar"
|
||||
@ppamount += spay.payment_amount
|
||||
elsif spay.payment_method == "visa"
|
||||
@visacount += spay.payment_amount
|
||||
elsif spay.payment_method == "jcb"
|
||||
@jcbcount += spay.payment_amount
|
||||
elsif spay.payment_method == "master"
|
||||
@mastercount += spay.payment_amount
|
||||
elsif spay.payment_method == "unionpay"
|
||||
@unionpaycount += spay.payment_amount
|
||||
elsif spay.payment_method == "JunctionPay"
|
||||
@junctionpaycount += spay.payment_amount
|
||||
elsif spay.payment_method == "creditnote"
|
||||
@credit += spay.payment_amount
|
||||
elsif spay.payment_method == "paymal"
|
||||
@paymalcount += spay.payment_amount
|
||||
elsif spay.payment_method == "alipay"
|
||||
@alipaycount += spay.payment_amount
|
||||
elsif spay.payment_method == "dinga"
|
||||
@dingacount += spay.payment_amount
|
||||
elsif spay.payment_method == "giftvoucher"
|
||||
@giftvouchercount += spay.payment_amount
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
#end customer amount
|
||||
end
|
||||
|
||||
def reprint
|
||||
|
||||
@@ -112,7 +112,7 @@ class Origami::ShiftsController < BaseOrigamiController
|
||||
@total_takeway = ShiftSale.get_total_takeway(@shift).total_takeway_amount
|
||||
@total_other_charges = ShiftSale.get_total_other_charges(@shift).total_other_charges_amount
|
||||
@total_credit_payments = ShiftSale.get_shift_sales_with_credit_payment(shift_id).total_credit_payments
|
||||
|
||||
@payment_methods = PaymentMethodSetting.where("is_active='1'").pluck("payment_method")
|
||||
# get printer info
|
||||
print_settings = PrintSetting.find_by_unique_code(unique_code)
|
||||
printer = Printer::CashierStationPrinter.new(print_settings)
|
||||
@@ -125,7 +125,7 @@ class Origami::ShiftsController < BaseOrigamiController
|
||||
end
|
||||
find_close_cashier_print = Lookup.collection_of('close_cashier_print')
|
||||
if find_close_cashier_print[0][1].to_i > 0
|
||||
printer.print_close_cashier(print_settings,cashier_terminal,@shift, @sale_items, @total_other_charges_info, shop_details,@sale_taxes,@other_payment,@total_amount_by_account,@total_discount_by_account,@total_member_discount,@total_dinein,@total_takeway,@total_other_charges,@total_waste,@total_spoile,@total_credit_payments)
|
||||
printer.print_close_cashier(print_settings,cashier_terminal,@shift, @sale_items, @total_other_charges_info, shop_details,@sale_taxes,@other_payment,@total_amount_by_account,@total_discount_by_account,@total_member_discount,@total_dinein,@total_takeway,@total_other_charges,@total_waste,@total_spoile,@total_credit_payments,@payment_methods)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
17
app/controllers/renew_license_controller.rb
Normal file
17
app/controllers/renew_license_controller.rb
Normal file
@@ -0,0 +1,17 @@
|
||||
class RenewLicenseController < ApplicationController
|
||||
|
||||
def expire
|
||||
@license = current_license
|
||||
@plan = @license.read_license("plan_name")
|
||||
@bis_name = @license.read_license_no_decrypt("shop_name")
|
||||
@expired_at = @license.read_license("renewable_date")
|
||||
@license_status = @license.detail_with_local_file
|
||||
end
|
||||
|
||||
def renew
|
||||
status, message = current_license.verify_license
|
||||
|
||||
redirect_to expire_url(message: message, status: status)
|
||||
end
|
||||
|
||||
end
|
||||
@@ -1,28 +1,30 @@
|
||||
class Reports::PaymentMethodController < BaseReportController
|
||||
class Reports::PaymentMethodController < BaseReportController
|
||||
# authorize_resource :class => false
|
||||
def index
|
||||
|
||||
@payments = [["All Payment",''],["Cash Payment","cash"], ["KBZ Payment", KbzPay::KBZ_PAY], ["Credit Payment","creditnote"],
|
||||
["FOC Payment","foc"], ["MPU Payment","mpu"], ["Visa Payment","visa"],
|
||||
["Master Payment","master"], ["JCB Payment","jcb"],["UnionPay Payment","unionpay"],
|
||||
["Alipay Payment","alipay"],["Paymal Payment", "paymal"],["Dinga Payment","dinga"],
|
||||
["JunctionPay","junctionpay"],["Redeem Payment","paypar"],["Gift Voucher","giftvoucher"]]
|
||||
@payment_methods = PaymentMethodSetting.where("is_active='1'").pluck("payment_method")
|
||||
|
||||
@payments = [["All Payment",''],["Cash Payment","cash"], ["Credit Payment","creditnote"],
|
||||
["FOC Payment","foc"]]
|
||||
|
||||
@payment_methods.each do |m|
|
||||
@payments.push(["#{m} Payment", m.parameterize])
|
||||
end
|
||||
|
||||
from, to = get_date_range_from_params
|
||||
|
||||
@shift_sale_range = Sale.get_by_shift_sale_by_item(from,to,Sale::SALE_STATUS_COMPLETED)
|
||||
|
||||
@shift = ''
|
||||
if params[:shift_name].to_i != 0
|
||||
shift_sale = ShiftSale.find(params[:shift_name])
|
||||
if to.blank?
|
||||
if to.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)
|
||||
@shift = ShiftSale.where('shift_started_at = ? and shift_closed_at = ? ',shift_sale.shift_started_at, shift_sale.shift_closed_at)
|
||||
end
|
||||
end
|
||||
@payment_type = params[:payment_type]
|
||||
@sale_data,@pyament_method = Sale.get_payment_method_by_shift(@shift_sale_range,@shift,from,to,@payment_type)
|
||||
@sale_data,@pyament_method = Sale.get_payment_method_by_shift(@shift,from,to,@payment_type)
|
||||
@from = from
|
||||
@to = to
|
||||
# get printer info
|
||||
@@ -58,10 +60,10 @@ class Reports::PaymentMethodController < BaseReportController
|
||||
end
|
||||
|
||||
out = {:status => 'ok', :message => date_arr}
|
||||
|
||||
|
||||
respond_to do |format|
|
||||
format.json { render json: out }
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
@@ -80,6 +80,7 @@ class Reports::ShiftsaleController < BaseReportController
|
||||
@total_spoile = Sale.get_total_spoile(shift_id).sum(:grand_total)
|
||||
#other payment details for mpu or visa like card
|
||||
@other_payment = ShiftSale.get_by_shift_other_payment(@shift)
|
||||
@payment_methods = PaymentMethodSetting.where("is_active='1'").pluck("payment_method")
|
||||
|
||||
# Calculate price_by_accounts
|
||||
@total_amount_by_account = ShiftSale.calculate_total_price_by_accounts(@shift,'amount')
|
||||
@@ -95,8 +96,8 @@ class Reports::ShiftsaleController < BaseReportController
|
||||
printer = Printer::CashierStationPrinter.new(print_settings)
|
||||
|
||||
# printer.print_close_cashier(print_settings,cashier_terminal,@shift, nil, shop_details,@sale_taxes,@other_payment,@total_amount_by_account,@total_discount_by_account,@total_member_discount,@total_dinein,@total_takeway,@total_other_charges,@total_waste,@total_spoile,@total_credit_payments)
|
||||
printer.print_close_cashier(print_settings,cashier_terminal,@shift, @sale_items, @total_other_charges_info, shop_details,@sale_taxes,@other_payment,@total_amount_by_account,@total_discount_by_account,@total_member_discount,@total_dinein,@total_takeway,@total_other_charges,@total_waste,@total_spoile,@total_credit_payments)
|
||||
|
||||
printer.print_close_cashier(print_settings,cashier_terminal,@shift, @sale_items, @total_other_charges_info, shop_details,@sale_taxes,@other_payment,@total_amount_by_account,@total_discount_by_account,@total_member_discount,@total_dinein,@total_takeway,@total_other_charges,@total_waste,@total_spoile,@total_credit_payments,@payment_methods)
|
||||
|
||||
respond_to do |format|
|
||||
format.html { redirect_to '/en/reports/shiftsale/', notice: 'Printing Completed.'}
|
||||
format
|
||||
|
||||
@@ -5,8 +5,8 @@ module ApplicationHelper
|
||||
case level
|
||||
when :notice then "alert alert-info fade-in"
|
||||
when :success then "alert alert-success fade-in"
|
||||
when :error then "alert alert-error fade-in"
|
||||
when :alert then "alert alert-error fade-in"
|
||||
when :error then "alert alert-warning fade-in"
|
||||
when :alert then "alert alert-danger fade-in"
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -67,7 +67,6 @@ class CardSaleTran < ApplicationRecord
|
||||
shift_closed_at As closing_date,")
|
||||
.order("shift_sales.id DESC")
|
||||
return query = query.where("shift_sales.shift_started_at >= ?" , from)
|
||||
byebug
|
||||
end
|
||||
|
||||
end
|
||||
@@ -64,6 +64,5 @@ class CardSettleTran < ApplicationRecord
|
||||
shift_closed_at As closing_date,")
|
||||
.order("shift_sales.id DESC")
|
||||
return query = query.where("shift_sales.shift_started_at >= ?" , from)
|
||||
byebug
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
class InventoryDefinition < ApplicationRecord
|
||||
|
||||
has_many :stock_journals
|
||||
has_one :menu_item_instance, foreign_key: "item_instance_code", primary_key: "item_code"
|
||||
|
||||
scope :active, -> {where(:is_active => true)}
|
||||
|
||||
def self.calculate_product_count(saleObj=nil,saleobj_after_req_bill=nil)
|
||||
@@ -69,7 +72,7 @@ class InventoryDefinition < ApplicationRecord
|
||||
end
|
||||
|
||||
def self.search_by_category(cat_id)
|
||||
@inventory_definitions = InventoryDefinition.select("inventory_definitions.*,
|
||||
inventory_definitions = InventoryDefinition.select("inventory_definitions.*,
|
||||
mi.name as item_name,mii.item_instance_name as instance_name," +
|
||||
"mi.item_code as item_code,mii.item_instance_code as instance_code," +
|
||||
"mc.name as menu_category_name,mc.id as menu_category_id ")
|
||||
@@ -82,27 +85,29 @@ class InventoryDefinition < ApplicationRecord
|
||||
end
|
||||
|
||||
def self.get_by_category(filter)
|
||||
least_stock = StockJournal.select(:balance).joins("JOIN inventory_definitions ON stock_journals.item_code = inventory_definitions.item_code").order(:id => :desc).limit(1).to_sql
|
||||
least_stock = StockJournal.select(:inventory_definition_id, :credit, :debit, :balance)
|
||||
.joins("JOIN (
|
||||
#{StockJournal.select("item_code, MAX(created_at) created_at").group(:item_code).to_sql}) last_stock_journals
|
||||
ON last_stock_journals.item_code = stock_journals.item_code
|
||||
AND last_stock_journals.created_at = stock_journals.created_at").to_sql
|
||||
|
||||
@inventory_definitions = InventoryDefinition.select("inventory_definitions.*,
|
||||
(CASE WHEN sj.credit IS NULL THEN 0 ELSE sj.credit END) as credit,
|
||||
(CASE WHEN sj.debit IS NULL THEN 0 ELSE sj.debit END) as debit,
|
||||
(#{least_stock}) as balance,"+
|
||||
"acc.title as account_name,mi.name as item_name,
|
||||
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("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 ?
|
||||
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")
|
||||
.order("balance asc, mi.name asc,acc.title desc,mi.menu_category_id desc")
|
||||
inventory_definitions = InventoryDefinition
|
||||
.select("inventory_definitions.*,
|
||||
stock_journals.credit as credit,
|
||||
stock_journals.debit as debit,
|
||||
stock_journals.balance as balance,
|
||||
accounts.title as account_name,
|
||||
menu_items.name as item_name,
|
||||
menu_item_instances.item_instance_name as instance_name,
|
||||
menu_categories.name as menu_category_name,
|
||||
menu_categories.id as menu_category_id")
|
||||
.joins("LEFT JOIN (#{least_stock}) stock_journals on stock_journals.inventory_definition_id = inventory_definitions.id")
|
||||
.joins(menu_item_instance: { menu_item: [:menu_category, :account]})
|
||||
.where("inventory_definitions.item_code LIKE :filter OR inventory_definitions.min_order_level LIKE :filter
|
||||
OR inventory_definitions.max_stock_level LIKE :filter OR stock_journals.balance LIKE :filter OR menu_items.name LIKE :filter
|
||||
OR menu_item_instances.item_instance_name LIKE :filter OR menu_categories.name LIKE :filter", filter: "%#{filter}%")
|
||||
.group("menu_items.menu_category_id, inventory_definitions.item_code")
|
||||
.order("balance asc, menu_items.name asc, accounts.title desc, menu_items.menu_category_id desc")
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -1,12 +1,15 @@
|
||||
require 'yaml'
|
||||
|
||||
class License
|
||||
include HTTParty
|
||||
include ActionDispatch::Http
|
||||
|
||||
base_uri "connect.smartsales.asia/api"
|
||||
base_uri "https://l.doemal.app//api"
|
||||
|
||||
attr_accessor :name, :address_1, :address_2, :township, :city, :country, :email, :phone, :fax, :logo, :subdomain,
|
||||
:plan_activation_date, :plan_next_renewal_date, :plan_max_products,:plan_max_customers, :plan_active_connections,
|
||||
:dbhost, :dbschema, :dbusername, :dbpassword, :exchange_unqiue_id, :localqueue_host,:server_mode,:localhost_address,
|
||||
:localqueue_user, :localqueue_password, :remotequeue_host, :remotequeue_user, :remotequeue_password, :api_token, :app_token
|
||||
:localqueue_user, :localqueue_password, :remotequeue_host, :remotequeue_user, :remotequeue_password, :api_token, :app_token, :lookup
|
||||
|
||||
@license = nil
|
||||
@secret = nil
|
||||
@@ -14,14 +17,17 @@ class License
|
||||
def initialize(server = "", lookup = "")
|
||||
#this code is hard-code to reflect server mode - Very important.
|
||||
self.server_mode = ENV["SERVER_MODE"]
|
||||
|
||||
unless ENV["SERVER_MODE"] == "cloud"
|
||||
self.server_mode = "application"
|
||||
end
|
||||
self.lookup = lookup
|
||||
if (server != "")
|
||||
self.class.base_uri server
|
||||
end
|
||||
end
|
||||
|
||||
# For Cloud
|
||||
def detail_with_local_cache(lookup)
|
||||
def detail_with_local_cache
|
||||
aes = MyAesCrypt.new
|
||||
aes_key, aes_iv = aes.export_to_file(lookup)
|
||||
|
||||
@@ -69,65 +75,75 @@ class License
|
||||
end
|
||||
|
||||
# For Local System
|
||||
def detail_with_local_file()
|
||||
renewal_date_str = read_license("renewable_date")
|
||||
if check_expiring(renewal_date_str)
|
||||
# return for all ok
|
||||
return 1
|
||||
def detail_with_local_file
|
||||
if expired?
|
||||
return 0
|
||||
elsif expire_in?(10)
|
||||
return 2
|
||||
else
|
||||
has_license = verify_license()
|
||||
if has_license
|
||||
# return for expiring
|
||||
return 2
|
||||
else
|
||||
return 0
|
||||
end
|
||||
return 1
|
||||
end
|
||||
# end
|
||||
end
|
||||
|
||||
# License Activation
|
||||
def license_activate (shop, license_key, db_host, db_schema, db_user, db_password)
|
||||
|
||||
aes = MyAesCrypt.new
|
||||
aes_key, aes_iv = aes.export_key(license_key)
|
||||
|
||||
@params = { query: { lookup_type: self.server_mode, iv_key: aes_iv, license_key: license_key } }
|
||||
response = self.class.get("/activate", @params)
|
||||
@activate = response.parsed_response
|
||||
|
||||
if (@activate["status"])
|
||||
##Check from local redis - if available load local otherwise get from remote
|
||||
cache_key = "shop:#{@activate["shop_name"]}"
|
||||
begin
|
||||
response = self.class.get("/activate", @params)
|
||||
@activate = response.parsed_response
|
||||
|
||||
cache_license = nil
|
||||
if (@activate["status"])
|
||||
|
||||
##Get redis connection from connection pool
|
||||
redis = Redis.new
|
||||
cache_license = redis.get(cache_key)
|
||||
##Check from local redis - if available load local otherwise get from remote
|
||||
cache_key = "shop:#{@activate["shop_name"]}"
|
||||
|
||||
Rails.logger.info "Cache key - " + cache_key.to_s
|
||||
##Get redis connection from connection pool
|
||||
# redis = Redis.new
|
||||
# cache_license = redis.get(cache_key)
|
||||
|
||||
if cache_license.nil?
|
||||
Rails.logger.info "Cache key - " + cache_key.to_s
|
||||
|
||||
# if cache_license.nil?
|
||||
cache = {"shop" => @activate["shop_name"], "key" => aes_key, "iv" => @activate["iv_key"], "renewable_date" => @activate["renewable_date"] }
|
||||
redis = Redis.new
|
||||
redis.set(cache_key, Marshal.dump(cache))
|
||||
end
|
||||
# end
|
||||
|
||||
Rails.logger.info "License - " + response.parsed_response.to_s
|
||||
Rails.logger.info "License - " + response.parsed_response.to_s
|
||||
|
||||
response = create_license_file(@activate)
|
||||
if(response[:status])
|
||||
#sym_path = "/home/user/symmetric/"
|
||||
sym_path = File.expand_path("~/symmetric/")
|
||||
|
||||
response = create_symmetric_config(sym_path, db_host, db_schema, db_user, db_password)
|
||||
response = create_license_file(@activate)
|
||||
|
||||
if(response[:status])
|
||||
response = run_symmetric(sym_path)
|
||||
#sym_path = "/home/user/symmetric/"
|
||||
sym_path = File.expand_path("~/symmetric/")
|
||||
|
||||
response = create_symmetric_config(sym_path, db_host, db_schema, db_user, db_password)
|
||||
|
||||
if(response[:status])
|
||||
response = run_symmetric(sym_path)
|
||||
end
|
||||
end
|
||||
else
|
||||
response = { "status": false, "message": "Activation Failed! Please contact code2lab call center!"}
|
||||
end
|
||||
else
|
||||
response = { "status": false, "message": "Activation Failed! Please contact code2lab call center!"}
|
||||
|
||||
rescue SocketError => e
|
||||
Rails.logger.debug "In SocketError No Internet connection !"
|
||||
response = { "status": false, "message": "In SocketError No Internet connection !"}
|
||||
rescue HTTParty::Error
|
||||
Rails.logger.debug "Server Error HTTParty"
|
||||
response = { "status": false, "message": "Server Error HTTParty"}
|
||||
rescue Net::OpenTimeout
|
||||
Rails.logger.debug "connection Timeout"
|
||||
response = { "status": false, "message": "Connection Timeout"}
|
||||
rescue OpenURI::HTTPError
|
||||
Rails.logger.debug "Can't connect server"
|
||||
response = { "status": false, "message": "Can't connect server"}
|
||||
end
|
||||
return response
|
||||
end
|
||||
@@ -135,18 +151,26 @@ class License
|
||||
def verify_license
|
||||
api_token = read_license_no_decrypt("api_token")
|
||||
@params = { query: {lookup_type: "application", api_token: api_token} }
|
||||
old_renewable_date = read_license("renewable_date")
|
||||
|
||||
begin
|
||||
response = self.class.get("/verify", @params)
|
||||
@varified = response.parsed_response
|
||||
Rails.logger.debug "License Remote Response - " + response.parsed_response.to_s
|
||||
if (@varified["status"])
|
||||
if (!check_expired(@varified["renewable_date"]))
|
||||
return true
|
||||
end
|
||||
else
|
||||
delete_license_file
|
||||
response = self.class.get("/verify", @params)
|
||||
@varified = response.parsed_response
|
||||
Rails.logger.debug "License Remote Response - " + response.parsed_response.to_s
|
||||
if (@varified["status"])
|
||||
if old_renewable_date.to_date == @varified['renewable_date'].to_date
|
||||
message = "*** License can't be verified. ***"
|
||||
status = 2
|
||||
elsif old_renewable_date.to_date < @varified['renewable_date'].to_date
|
||||
update_license("renewable_date", @varified['renewable_date'])
|
||||
status = 1
|
||||
message = "*** License con be verified. ***"
|
||||
end
|
||||
return status, message
|
||||
|
||||
else
|
||||
delete_license_file
|
||||
end
|
||||
|
||||
rescue SocketError => e
|
||||
Rails.logger.debug "In SocketError No Internet connection ! "
|
||||
@@ -164,12 +188,23 @@ class License
|
||||
return false
|
||||
end
|
||||
|
||||
|
||||
# Check Expired before 30 days
|
||||
def check_expiring(renewal_date_str)
|
||||
if !renewal_date_str.empty?
|
||||
def expired?
|
||||
if renewal_date_str = read_license("renewable_date")
|
||||
renewal_date = DateTime.parse(renewal_date_str)
|
||||
renewal_date > Date.today.advance(:days => 30)
|
||||
renewal_date < Date.today
|
||||
end
|
||||
end
|
||||
|
||||
def expire_in?(days)
|
||||
if renewal_date_str = read_license("renewable_date")
|
||||
renewal_date = DateTime.parse(renewal_date_str)
|
||||
renewal_date < days.days.from_now
|
||||
end
|
||||
end
|
||||
|
||||
def days_to_expire
|
||||
if renewal_date_str = read_license("renewable_date")
|
||||
Date.today - DateTime.parse(renewal_date_str).to_date
|
||||
end
|
||||
end
|
||||
|
||||
@@ -188,39 +223,59 @@ class License
|
||||
end
|
||||
end
|
||||
|
||||
def check_license_subdomain
|
||||
aes = MyAesCrypt.new
|
||||
aes_key, aes_iv = aes.export_key(lookup)
|
||||
|
||||
params = { query: { lookup_type: "cloud", lookup: lookup, iv_key: aes_iv} }
|
||||
response = self.class.get("/subdomain", params)
|
||||
response.parsed_response["status"]
|
||||
end
|
||||
|
||||
# Check License File exists
|
||||
def self.check_license_file
|
||||
return File.exist?("config/license.yml")
|
||||
def self.check_license_file(lookup)
|
||||
return unless File.exist?("config/license.yml")
|
||||
if license = YAML.load_file("config/license.yml")
|
||||
if license[lookup].nil?
|
||||
if ENV["SERVER_MODE"] == "application"
|
||||
license[lookup] = license.values.first
|
||||
else
|
||||
tld_length = Rails.application.config.action_dispatch.tld_length
|
||||
subdomains = URL.extract_subdomains(lookup, tld_length)
|
||||
if key = license.keys.find { |k| URL.extract_subdomains(k, tld_length).last == subdomains.last}
|
||||
license[lookup] = license[key]
|
||||
end
|
||||
end
|
||||
if license[lookup]
|
||||
File.open("config/license.yml", "w") { |file| file.write license.to_yaml }
|
||||
end
|
||||
end
|
||||
return license[lookup]
|
||||
end
|
||||
end
|
||||
|
||||
# read line by key for license file
|
||||
def read_license(key_name)
|
||||
decrypted_line = ""
|
||||
key, iv = get_redis_key()
|
||||
|
||||
if File.exist?("config/license.yml")
|
||||
File.open("config/license.yml").each do |line|
|
||||
if line.include? (key_name)
|
||||
decrypted_line_array = line.split(": ")
|
||||
decrypted_line = AESCrypt.decrypt_data(decode_str(decrypted_line_array[1]), decode_str(key), decode_str(iv), ENV['CIPHER_TYPE'])
|
||||
if license = YAML.load(File.read("config/license.yml"))
|
||||
if license[lookup]
|
||||
AESCrypt.decrypt_data(decode_str(license[lookup][key_name]), decode_str(key), decode_str(iv), ENV['CIPHER_TYPE'])
|
||||
end
|
||||
end
|
||||
end
|
||||
return decrypted_line
|
||||
end
|
||||
|
||||
# read line by key for license file without decrypt
|
||||
def read_license_no_decrypt(key)
|
||||
decrypted_line = ""
|
||||
if File.exist?("config/license.yml")
|
||||
File.open("config/license.yml").each do |line|
|
||||
if line.include? (key)
|
||||
decrypted_line_array = line.split(": ")
|
||||
decrypted_line = decrypted_line_array[1]
|
||||
if license = YAML.load_file("config/license.yml")
|
||||
if license[lookup]
|
||||
decrypted_line = license[lookup][key]
|
||||
end
|
||||
end
|
||||
end
|
||||
return decrypted_line
|
||||
end
|
||||
|
||||
# Update license file for line
|
||||
@@ -231,18 +286,13 @@ class License
|
||||
crypted_str = AESCrypt.encrypt_data(new_content, decode_str(key), decode_str(iv), ENV['CIPHER_TYPE'])
|
||||
end
|
||||
|
||||
content_str = read_license_no_decrypt(content)
|
||||
if File.exist?("config/license.yml")
|
||||
file_str = File.read("config/license.yml")
|
||||
new_file_str = file_str.gsub(content_str, encode_str(crypted_str))
|
||||
if license = YAML.load_file("config/license.yml")
|
||||
license[lookup][content] = encode_str(crypted_str)
|
||||
|
||||
# To write changes to the file, use:
|
||||
File.open("config/license.yml", "w") {|file| file.puts new_file_str }
|
||||
|
||||
# File.open("config/license.yml").each do |line|
|
||||
# new_file_str = line.gsub(content, crypted_str)
|
||||
# f.put
|
||||
# end
|
||||
# To write changes to the file, use:
|
||||
File.open("config/license.yml", "w") {|file| file.write(license.to_yaml) }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -284,8 +334,6 @@ class License
|
||||
##Check from local redis - if available load local otherwise get from remote
|
||||
cache_key = "shop:#{shop.chomp}"
|
||||
|
||||
cache_shop = nil
|
||||
|
||||
##Get redis connection from connection pool
|
||||
redis = Redis.new
|
||||
cache_shop = redis.get(cache_key)
|
||||
@@ -308,29 +356,38 @@ class License
|
||||
|
||||
# License File Creation
|
||||
def create_license_file(response_data)
|
||||
if File.exist?("config/license.yml")
|
||||
delete_license_file
|
||||
end
|
||||
|
||||
begin
|
||||
# Licese File Creation
|
||||
File.open("config/license.yml", "w") do |f|
|
||||
f.puts("iv_key: #{response_data['iv_key']}")
|
||||
f.puts("shop_name: #{response_data['shop_name']}")
|
||||
f.puts("email: #{response_data['email']}")
|
||||
f.puts("telephone: #{response_data['telephone']}")
|
||||
f.puts("fax: #{response_data['fax']}")
|
||||
f.puts("address: #{response_data['address']}")
|
||||
f.puts("dbhost: #{response_data['dbhost']}")
|
||||
f.puts("dbschema: #{response_data['dbschema']}")
|
||||
f.puts("dbusername: #{response_data['dbusername']}")
|
||||
f.puts("dbpassword: #{response_data['dbpassword']}")
|
||||
f.puts("api_token: #{response_data['api_token']}")
|
||||
f.puts("app_token: #{response_data['app_token']}")
|
||||
f.puts("plan_sku: #{response_data['plan_sku']}")
|
||||
f.puts("renewable_date: #{response_data['renewable_date']}")
|
||||
f.puts("plan_name: #{response_data['plan_name']}")
|
||||
config = { "iv_key" => response_data['iv_key'],
|
||||
"shop_name" => response_data['shop_name'],
|
||||
"email" => response_data['email'],
|
||||
"telephone" => response_data['telephone'],
|
||||
"fax" => response_data['fax'],
|
||||
"address" => response_data['address'],
|
||||
"dbhost" => response_data['dbhost'],
|
||||
"dbschema" => response_data['dbschema'],
|
||||
"dbusername" => response_data['dbusername'],
|
||||
"dbpassword" => response_data['dbpassword'],
|
||||
"api_token" => response_data['api_token'],
|
||||
"app_token" => response_data['app_token'],
|
||||
"plan_sku" => response_data['plan_sku'],
|
||||
"renewable_date" => response_data['renewable_date'],
|
||||
"plan_name" => response_data['plan_name'] }
|
||||
|
||||
if File.exist?("config/license.yml")
|
||||
license = YAML.load_file("config/license.yml")
|
||||
end
|
||||
|
||||
if license
|
||||
license.each do |k,v|
|
||||
license[k] = config if v["shop_name"] == config["shop_name"]
|
||||
end
|
||||
license[lookup] = config
|
||||
end
|
||||
|
||||
license ||= {lookup => config}
|
||||
|
||||
File.open("config/license.yml", "w"){ |file| file.write(license.to_yaml) }
|
||||
rescue IOError
|
||||
response = { "status": false, "message": "Activation is success but something is wrong. \n Please contact code2lab call center!"}
|
||||
end
|
||||
@@ -387,10 +444,10 @@ class License
|
||||
# f.write("initial.load.use.extract.job.enabled=true\n")
|
||||
f.close
|
||||
rescue IOError
|
||||
response = { "status": false, "message": "Activation is success but something is wrong. \n Please contact code2lab call center!"}
|
||||
return { "status": false, "message": "Activation is success but something is wrong. \n Please contact code2lab call center!"}
|
||||
end
|
||||
response = { "status": true, "message": "Success Activation. License also created."}
|
||||
end
|
||||
{ "status": true, "message": "Success Activation. License also created." }
|
||||
end
|
||||
|
||||
# Run Symmetric
|
||||
|
||||
@@ -38,7 +38,7 @@ class Printer::CashierStationPrinter < Printer::PrinterWorker
|
||||
# self.print(filename, cashier_terminal.printer_name)
|
||||
# end
|
||||
|
||||
def print_close_cashier(printer_settings,cashier_terminal,shift_sale, sale_items, total_other_charges_info,shop_details,sale_taxes,other_payment,amount,discount,member_discount,total_dinein,total_takeway,total_other_charges,total_waste,total_spoile,total_credit_payments)
|
||||
def print_close_cashier(printer_settings,cashier_terminal,shift_sale, sale_items, total_other_charges_info,shop_details,sale_taxes,other_payment,amount,discount,member_discount,total_dinein,total_takeway,total_other_charges,total_waste,total_spoile,total_credit_payments,payment_methods)
|
||||
|
||||
if !sale_items.blank? or !sale_items.nil?
|
||||
@account_cate_count = Hash.new {|hash, key| hash[key] = 0}
|
||||
@@ -59,7 +59,7 @@ class Printer::CashierStationPrinter < Printer::PrinterWorker
|
||||
cashier = shift_sale.employee.name
|
||||
shift_name = shift_sale.shift_started_at.utc.getlocal.strftime("%d-%m-%Y %I:%M %p") + "_" + shift_sale.shift_closed_at.utc.getlocal.strftime("%d-%m-%Y %I:%M %p")
|
||||
filename = "tmp/close_cashier_#{cashier}_#{shift_name}.pdf"
|
||||
pdf = CloseCashierPdf.new(printer_settings,shift_sale, sale_items, total_other_charges_info, @account_cate_count, @menu_cate_count, @totalByAccount, shop_details,sale_taxes,other_payment,amount,discount,member_discount,total_dinein,total_takeway,total_other_charges,total_waste,total_spoile,total_credit_payments)
|
||||
pdf = CloseCashierPdf.new(printer_settings,shift_sale, sale_items, total_other_charges_info, @account_cate_count, @menu_cate_count, @totalByAccount, shop_details,sale_taxes,other_payment,amount,discount,member_discount,total_dinein,total_takeway,total_other_charges,total_waste,total_spoile,total_credit_payments,payment_methods)
|
||||
close_cashier_pdf = Lookup.collection_of("print_settings") #print_settings with name:CloseCashierPdf
|
||||
|
||||
if !close_cashier_pdf.empty?
|
||||
@@ -68,7 +68,7 @@ class Printer::CashierStationPrinter < Printer::PrinterWorker
|
||||
if close_cashier[1] == '1'
|
||||
pdf = CloseCashierCustomisePdf.new(printer_settings,shift_sale,shop_details,sale_taxes,other_payment,amount,discount,member_discount,total_dinein,total_takeway,total_other_charges,total_waste,total_spoile,total_credit_payments)
|
||||
else
|
||||
pdf = CloseCashierPdf.new(printer_settings,shift_sale, sale_items, total_other_charges_info, @account_cate_count, @menu_cate_count, @totalByAccount, shop_details,sale_taxes,other_payment,amount,discount,member_discount,total_dinein,total_takeway,total_other_charges,total_waste,total_spoile,total_credit_payments)
|
||||
pdf = CloseCashierPdf.new(printer_settings,shift_sale, sale_items, total_other_charges_info, @account_cate_count, @menu_cate_count, @totalByAccount, shop_details,sale_taxes,other_payment,amount,discount,member_discount,total_dinein,total_takeway,total_other_charges,total_waste,total_spoile,total_credit_payments,payment_methods)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -119,11 +119,15 @@ class Printer::ReceiptPrinter < Printer::PrinterWorker
|
||||
if count == 1
|
||||
filename = directory_name + "/receipt_bill_#{sale_data.receipt_no}.pdf"
|
||||
pdf.render_file filename
|
||||
if printed_status != 'Paid'
|
||||
if printed_status != 'Paid' && printed_status != 'credit_payment'
|
||||
#no print in cloud server
|
||||
if ENV["SERVER_MODE"] != "cloud"
|
||||
self.print(directory_name + "/receipt_bill_#{sale_data.receipt_no}.pdf", cashier_terminal.printer_name)
|
||||
end
|
||||
elsif printed_status == 'credit_payment'
|
||||
filename = directory_name + "/receipt_bill_credit_#{sale_data.receipt_no}.pdf"
|
||||
pdf.render_file filename
|
||||
self.print(directory_name + "/receipt_bill_credit_#{sale_data.receipt_no}.pdf", cashier_terminal.printer_name)
|
||||
end
|
||||
else
|
||||
filename = directory_name + "/receipt_bill_#{sale_data.receipt_no}_#{count}.pdf"
|
||||
|
||||
@@ -748,64 +748,46 @@ class Sale < ApplicationRecord
|
||||
return num
|
||||
end
|
||||
|
||||
def self.daily_sales_list(from,to)
|
||||
def self.daily_sales_list(from,to)
|
||||
payment_methods = SalePayment.where.not(payment_method: ['cash', 'creditnote', 'foc']).distinct.pluck(:payment_method)
|
||||
|
||||
sales = select("
|
||||
sales.*,
|
||||
SUM(case when (sale_payments.payment_method='KBZPay') then sale_payments.payment_amount else 0 end) as kbzpay_amount,
|
||||
SUM(case when (sale_payments.payment_method='mpu') then sale_payments.payment_amount else 0 end) as mpu_amount,
|
||||
SUM(case when (sale_payments.payment_method='master') then sale_payments.payment_amount else 0 end) as master_amount,
|
||||
SUM(case when (sale_payments.payment_method='visa') then sale_payments.payment_amount else 0 end) as visa_amount,
|
||||
SUM(case when (sale_payments.payment_method='jcb') then sale_payments.payment_amount else 0 end) as jcb_amount,
|
||||
SUM(case when (sale_payments.payment_method='paypar') then sale_payments.payment_amount else 0 end) as paypar_amount,
|
||||
SUM(case when (sale_payments.payment_method='unionpay') then sale_payments.payment_amount else 0 end) as unionpay_amount,
|
||||
SUM(case when (sale_payments.payment_method='alipay') then sale_payments.payment_amount else 0 end) as alipay_amount,
|
||||
SUM(case when (sale_payments.payment_method='paymal') then sale_payments.payment_amount else 0 end) as paymal_amount,
|
||||
SUM(case when (sale_payments.payment_method='dinga') then sale_payments.payment_amount else 0 end) as dinga_amount,
|
||||
SUM(case when (sale_payments.payment_method='JunctionPay') then sale_payments.payment_amount else 0 end) as junctionpay_amount,
|
||||
SUM(case when (sale_payments.payment_method='cash') then sale_payments.payment_amount else 0 end) as cash_amount,
|
||||
CASE WHEN SUM(case when sale_payments.payment_method not in('creditnote') then sale_payments.payment_amount end) < sales.grand_total
|
||||
THEN sales.grand_total - SUM(case when sale_payments.payment_method not in('creditnote') then sale_payments.payment_amount end)
|
||||
ELSE 0 END as credit_amount,
|
||||
SUM(case when (sale_payments.payment_method='giftvoucher') then sale_payments.payment_amount else 0 end) as giftvoucher_amount,
|
||||
SUM(case when (sale_payments.payment_method='foc') then sale_payments.payment_amount else 0 end) as foc_amount")
|
||||
.along_with_sale_payments_except_void_between(from, to)
|
||||
.where("(sale_status = ? OR sale_status = ?) AND sales.receipt_date between ? AND ? ", 'completed', 'void', from, to)
|
||||
.group("sale_id").to_sql
|
||||
sales.*,
|
||||
#{payment_methods.map { |method| "SUM(case when (sale_payments.payment_method='#{method}') then sale_payments.payment_amount else 0 end) as #{method}"}.join(', ')},
|
||||
SUM(case when (sale_payments.payment_method='cash') then sale_payments.payment_amount else 0 end) as cash_amount,
|
||||
CASE WHEN SUM(case when sale_payments.payment_method not in('creditnote')
|
||||
then sale_payments.payment_amount else 0 end) < sales.grand_total
|
||||
THEN sales.grand_total - SUM(case when sale_payments.payment_method not in('creditnote')
|
||||
then sale_payments.payment_amount else 0 end)
|
||||
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")
|
||||
.along_with_sale_payments_except_void_between(from, to)
|
||||
.where("(sale_status = ? OR sale_status = ?) AND sales.receipt_date between ? AND ? ", 'completed', 'void', from, to)
|
||||
.group("sale_id").to_sql
|
||||
|
||||
daily_total = connection.select_all("SELECT
|
||||
IFNULL(SUM(case when (sale_status='completed') then grand_total else 0 end),0) as grand_total,
|
||||
IFNULL(SUM(case when (sale_status='completed') then grand_total else 0 end),0) as total_sale,
|
||||
IFNULL(SUM(case when (sale_status='completed') then old_grand_total else 0 end),0) as old_grand_total,
|
||||
IFNULL(SUM(case when (sale_status='completed') then total_discount else 0 end),0) as total_discount,
|
||||
IFNULL(SUM(case when (sale_status='completed') then amount_changed else 0 end),0) as total_change_amount,
|
||||
IFNULL(SUM(case when (sale_status='void') then grand_total else 0 end),0) as void_amount,
|
||||
IFNULL(SUM(case when (sale_status='completed') then rounding_adjustment else 0 end),0) as rounding_adj,
|
||||
IFNULL(SUM(case when (sale_status='completed') then grand_total else 0 end),0) / 21 as tax,
|
||||
(IFNULL(SUM(case when (sale_status='completed') then grand_total else 0 end),0))-(IFNULL(SUM(case when (sale_status='completed') then grand_total else 0 end),0) / 21) as net_sale,
|
||||
(IFNULL(SUM(case when (sale_status='completed') then grand_total else 0 end),0)) + (IFNULL(SUM(case when (sale_status='completed') then total_discount else 0 end),0)) as gross_sale,
|
||||
CAST((CONVERT_TZ(receipt_date,'+00:00','+06:30')) AS DATE) as sale_date,
|
||||
SUM(kbzpay_amount) as kbzpay_amount,
|
||||
SUM(mpu_amount) as mpu_amount,
|
||||
SUM(master_amount) as master_amount,
|
||||
SUM(visa_amount) as visa_amount,
|
||||
SUM(jcb_amount) as jcb_amount,
|
||||
SUM(paypar_amount) as paypar_amount,
|
||||
SUM(unionpay_amount) as unionpay_amount,
|
||||
SUM(alipay_amount) as alipay_amount,
|
||||
SUM(paymal_amount) as paymal_amount,
|
||||
SUM(dinga_amount) as dinga_amount,
|
||||
SUM(junctionpay_amount) as junctionpay_amount,
|
||||
SUM(cash_amount) as cash_amount,
|
||||
SUM(credit_amount) as credit_amount,
|
||||
SUM(giftvoucher_amount) as giftvoucher_amount,
|
||||
SUM(foc_amount) as foc_amount
|
||||
FROM (
|
||||
#{sales}
|
||||
) as s
|
||||
GROUP BY DATE(CONVERT_TZ(receipt_date,'+00:00','+06:30'))").to_hash.map(&:symbolize_keys)
|
||||
IFNULL(SUM(case when (sale_status='completed') then grand_total else 0 end),0) as grand_total,
|
||||
IFNULL(SUM(case when (sale_status='completed') then grand_total else 0 end),0) as total_sale,
|
||||
IFNULL(SUM(case when (sale_status='completed') then old_grand_total else 0 end),0) as old_grand_total,
|
||||
IFNULL(SUM(case when (sale_status='completed') then total_discount else 0 end),0) as total_discount,
|
||||
IFNULL(SUM(case when (sale_status='completed') then amount_changed else 0 end),0) as total_change_amount,
|
||||
IFNULL(SUM(case when (sale_status='void') then grand_total else 0 end),0) as void_amount,
|
||||
IFNULL(SUM(case when (sale_status='completed') then rounding_adjustment else 0 end),0) as rounding_adj,
|
||||
IFNULL(SUM(case when (sale_status='completed') then grand_total else 0 end),0) / 21 as tax,
|
||||
(IFNULL(SUM(case when (sale_status='completed') then grand_total else 0 end),0))-(IFNULL(SUM(case when (sale_status='completed') then grand_total else 0 end),0) / 21) as net_sale,
|
||||
(IFNULL(SUM(case when (sale_status='completed') then grand_total else 0 end),0)) + (IFNULL(SUM(case when (sale_status='completed') then total_discount else 0 end),0)) as gross_sale,
|
||||
CAST((CONVERT_TZ(receipt_date,'+00:00','+06:30')) AS DATE) as sale_date,
|
||||
#{payment_methods.map { |method| "SUM(#{method}) as #{method}"}.join(', ')},
|
||||
SUM(cash_amount) as cash_amount,
|
||||
SUM(credit_amount) as credit_amount,
|
||||
SUM(foc_amount) as foc_amount
|
||||
FROM (
|
||||
#{sales}
|
||||
) as s
|
||||
GROUP BY DATE(CONVERT_TZ(receipt_date,'+00:00','+06:30'))").to_hash.map(&:symbolize_keys)
|
||||
|
||||
return daily_total
|
||||
end
|
||||
end
|
||||
|
||||
def self.get_by_range_by_saleitems(from,to,status,report_type)
|
||||
query = Sale.select("
|
||||
@@ -971,6 +953,7 @@ def self.get_by_shift_items(shift_sale_range, shift, from, to, status,type,accou
|
||||
other_charges = self.get_other_charges()
|
||||
end
|
||||
product = self.get_product_sale()
|
||||
payment_methods = SalePayment.where.not(payment_method: ['cash', 'creditnote', 'foc']).distinct.pluck(:payment_method)
|
||||
|
||||
if shift.present?
|
||||
query = query.where("sales.shift_sale_id IN (?) #{account_type} and sale_status='completed'",shift.to_a)
|
||||
@@ -980,7 +963,7 @@ def self.get_by_shift_items(shift_sale_range, shift, from, to, status,type,accou
|
||||
product = product.where("sales.shift_sale_id IN (?) and sale_status='completed'",shift.to_a)
|
||||
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,
|
||||
sale_cash = Sale.select("SUM(case when (sale_payments.payment_method IN (#{payment_methods.map{ |pm| "\"#{pm}\"" }.join(', ') })) then (sale_payments.payment_amount) else 0 end) as card_amount,
|
||||
SUM(case when (sale_payments.payment_method='cash') then (sale_payments.payment_amount) else 0 end) as cash_amount,
|
||||
SUM(case when (sale_payments.payment_method='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")
|
||||
@@ -1003,7 +986,7 @@ def self.get_by_shift_items(shift_sale_range, shift, from, to, status,type,accou
|
||||
product = product.where("sales.shift_sale_id IN (?) and sale_status='completed'",shift_sale_range.to_a)
|
||||
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,
|
||||
sale_cash = Sale.select("SUM(case when (sale_payments.payment_method IN (#{payment_methods.map{ |pm| "\"#{pm}\"" }.join(', ') })) then (sale_payments.payment_amount) else 0 end) as card_amount,
|
||||
SUM(case when (sale_payments.payment_method='cash') then (sale_payments.payment_amount) else 0 end) as cash_amount,
|
||||
SUM(case when (sale_payments.payment_method='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")
|
||||
@@ -1027,7 +1010,7 @@ def self.get_by_shift_items(shift_sale_range, shift, from, to, status,type,accou
|
||||
|
||||
discount_query = Sale.where("sales.receipt_date between ? and ? and sale_status ='completed'", from,to).sum(:total_discount)
|
||||
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,
|
||||
sale_cash = Sale.select("SUM(case when (sale_payments.payment_method IN (#{payment_methods.map{ |pm| "\"#{pm}\"" }.join(', ') })) then (sale_payments.payment_amount) else 0 end) as card_amount,
|
||||
SUM(case when (sale_payments.payment_method='cash') then (sale_payments.payment_amount) else 0 end) as cash_amount,
|
||||
SUM(case when (sale_payments.payment_method='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")
|
||||
@@ -1058,6 +1041,8 @@ def self.get_staff_meal_items(shift_sale_range, shift, from, to, status, account
|
||||
customer_id = customer_id.to_s
|
||||
customer_id[0] = ""
|
||||
customer_id = customer_id.chomp("]")
|
||||
else
|
||||
customer_id = "''"
|
||||
end
|
||||
|
||||
query = self.get_staff_meal_query()
|
||||
@@ -1074,16 +1059,17 @@ def self.get_staff_meal_items(shift_sale_range, shift, from, to, status, account
|
||||
# other_charges = self.get_other_charges()
|
||||
# end
|
||||
product = self.get_product_sale()
|
||||
payment_methods = SalePayment.where.not(payment_method: ['cash', 'creditnote', 'foc']).distinct.pluck(:payment_method)
|
||||
|
||||
if shift.present?
|
||||
query = query.where("sales.shift_sale_id IN (?) #{account_type} and sale_status='completed' and sales.customer_id IN(#{customer_id})",shift.to_a)
|
||||
query = query.where("sales.shift_sale_id IN (?) #{account_type} and sale_status='completed' and sales.customer_id IN (#{customer_id})",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,
|
||||
sale_cash = Sale.select("SUM(case when (sale_payments.payment_method IN (#{payment_methods.map{ |pm| "\"#{pm}\"" }.join(', ') })) then (sale_payments.payment_amount) else 0 end) as card_amount,
|
||||
SUM(case when (sale_payments.payment_method='cash') then (sale_payments.payment_amount) else 0 end) as cash_amount,
|
||||
SUM(case when (sale_payments.payment_method='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")
|
||||
@@ -1099,14 +1085,14 @@ def self.get_staff_meal_items(shift_sale_range, shift, from, to, status, account
|
||||
|
||||
### => 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' and sales.customer_id IN(#{customer_id})",shift_sale_range.to_a)
|
||||
query = query.where("sales.shift_sale_id IN (?) #{account_type} and sale_status='completed' and sales.customer_id IN (#{customer_id})",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,
|
||||
sale_cash = Sale.select("SUM(case when (sale_payments.payment_method IN (#{payment_methods.map{ |pm| "\"#{pm}\"" }.join(', ') })) then (sale_payments.payment_amount) else 0 end) as card_amount,
|
||||
SUM(case when (sale_payments.payment_method='cash') then (sale_payments.payment_amount) else 0 end) as cash_amount,
|
||||
SUM(case when (sale_payments.payment_method='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")
|
||||
@@ -1122,7 +1108,7 @@ def self.get_staff_meal_items(shift_sale_range, shift, from, to, status, account
|
||||
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' and sales.customer_id IN(#{customer_id})",from,to)
|
||||
query = query.where("sales.receipt_date between ? and ? #{account_type} and sale_status='completed' and sales.customer_id IN (#{customer_id})",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
|
||||
@@ -1130,7 +1116,7 @@ def self.get_staff_meal_items(shift_sale_range, shift, from, to, status, account
|
||||
|
||||
discount_query = Sale.where("sales.receipt_date between ? and ? and sale_status ='completed'", from,to).sum(:total_discount)
|
||||
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,
|
||||
sale_cash = Sale.select("SUM(case when (sale_payments.payment_method IN (#{payment_methods.map{ |pm| "\"#{pm}\"" }.join(', ') })) then (sale_payments.payment_amount) else 0 end) as card_amount,
|
||||
SUM(case when (sale_payments.payment_method='cash') then (sale_payments.payment_amount) else 0 end) as cash_amount,
|
||||
SUM(case when (sale_payments.payment_method='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")
|
||||
@@ -1341,20 +1327,12 @@ def self.get_separate_tax(shift_sale_range=nil,shift,from,to,payment_type)
|
||||
end
|
||||
end
|
||||
|
||||
def self.get_payment_method_by_shift(shift_sale_range,shift,from,to,payment_type)
|
||||
def self.get_payment_method_by_shift(shift,from,to,payment_type)
|
||||
payment_methods = SalePayment.where.not(payment_method: ['cash', 'creditnote', 'foc']).distinct.pluck(:payment_method)
|
||||
|
||||
payments_total = SalePayment.select("
|
||||
sales.receipt_date as sale_date,
|
||||
SUM(case when (sale_payments.payment_method='mpu') then sale_payments.payment_amount else 0 end) as mpu_amount,
|
||||
SUM(case when (sale_payments.payment_method='master') then sale_payments.payment_amount else 0 end) as master_amount,
|
||||
SUM(case when (sale_payments.payment_method='visa') then sale_payments.payment_amount else 0 end) as visa_amount,
|
||||
SUM(case when (sale_payments.payment_method='jcb') then sale_payments.payment_amount else 0 end) as jcb_amount,
|
||||
SUM(case when (sale_payments.payment_method='paypar') then sale_payments.payment_amount else 0 end) as paypar_amount,
|
||||
SUM(case when (sale_payments.payment_method='unionpay') then sale_payments.payment_amount else 0 end) as unionpay_amount,
|
||||
SUM(case when (sale_payments.payment_method='alipay') then sale_payments.payment_amount else 0 end) as alipay_amount,
|
||||
SUM(case when (sale_payments.payment_method='KBZPay') then sale_payments.payment_amount else 0 end) as kbzpay_amount,
|
||||
SUM(case when (sale_payments.payment_method='paymal') then sale_payments.payment_amount else 0 end) as paymal_amount,
|
||||
SUM(case when (sale_payments.payment_method='dinga') then sale_payments.payment_amount else 0 end) as dinga_amount,
|
||||
SUM(case when (sale_payments.payment_method='JunctionPay') then sale_payments.payment_amount else 0 end) as junctionpay_amount,
|
||||
#{payment_methods.map { |method| "SUM(case when (sale_payments.payment_method='#{method}') then sale_payments.payment_amount else 0 end) as #{method}"}.join(', ')},
|
||||
SUM(case when (sale_payments.payment_method='cash') then sale_payments.payment_amount else 0 end) as cash_amount,
|
||||
SUM(case when (sale_payments.payment_method='cash') then
|
||||
sales.amount_changed else 0 end) as total_change_amount,
|
||||
@@ -1382,9 +1360,6 @@ def self.get_payment_method_by_shift(shift_sale_range,shift,from,to,payment_type
|
||||
if shift.present?
|
||||
payments_total = payments_total.where(sales: {shift_sale_id: shift.to_a})
|
||||
sale_payment = sale_payment.merge(Sale.where(sales: {shift_sale_id: shift.to_a}))
|
||||
elsif shift_sale_range.present?
|
||||
payments_total = payments_total.where(sales: {shift_sale_id: shift_sale_range.to_a})
|
||||
sale_payment = sale_payment.merge(Sale.where(sales: {shift_sale_id: shift_sale_range.to_a}))
|
||||
end
|
||||
|
||||
if payment_type.present?
|
||||
@@ -1421,33 +1396,32 @@ def grand_total_after_rounding
|
||||
end
|
||||
|
||||
def get_cash_amount
|
||||
cash = 0.0
|
||||
self.sale_payments.each do |pay|
|
||||
if pay.payment_method == 'cash'
|
||||
cash += pay.payment_amount
|
||||
end
|
||||
end
|
||||
return cash - self.amount_changed
|
||||
self.sale_payments.where(payment_method: 'cash', payment_status: 'paid')
|
||||
.pluck(:payment_amount).reduce(0, :+) - self.amount_changed
|
||||
end
|
||||
|
||||
def get_credit_amount
|
||||
credit = 0.0
|
||||
self.sale_payments.each do |pay|
|
||||
if pay.payment_method == 'creditnote'
|
||||
credit += pay.payment_amount
|
||||
end
|
||||
end
|
||||
return credit
|
||||
self.sale_payments.where(payment_method: 'creditnote')
|
||||
.pluck(:payment_status, :payment_amount)
|
||||
.inject(0.0) { |sum, pay|
|
||||
if pay[0] == 'outstanding'
|
||||
sum += pay[1]
|
||||
else
|
||||
sum -= pay[1]
|
||||
end
|
||||
}
|
||||
end
|
||||
|
||||
def get_other_amount
|
||||
other = 0.0
|
||||
self.sale_payments.each do |pay|
|
||||
if pay.payment_method != 'cash' && pay.payment_method != 'creditnote'
|
||||
other += pay.payment_amount
|
||||
end
|
||||
end
|
||||
return other
|
||||
self.sale_payments.where.not(payment_method: ['cash', 'creditnote'])
|
||||
.pluck(:payment_status, :payment_amount)
|
||||
.inject(0.0) { |sum, pay|
|
||||
if pay[0] == 'paid'
|
||||
sum += pay[1]
|
||||
else
|
||||
sum -= pay[1]
|
||||
end
|
||||
}
|
||||
end
|
||||
|
||||
def get_commerical_tax
|
||||
@@ -1512,11 +1486,12 @@ end
|
||||
end
|
||||
|
||||
payments_for_credits = SalePayment.joins(:sale_audit).to_sql
|
||||
payment_methods = SalePayment.where.not(payment_method: ['cash', 'creditnote', 'foc']).distinct.pluck(:payment_method)
|
||||
|
||||
query = employee_sale(shift, from, to)
|
||||
.joins("LEFT JOIN (#{payments_for_credits}) payments_for_credits ON payments_for_credits.sale_id = sales.sale_id")
|
||||
.select("SUM(sale_payments.payment_amount) - CASE WHEN sale_payments.payment_method = 'creditnote' THEN IFNULL(SUM(payments_for_credits.payment_amount), 0) ELSE ABS(SUM(CASE WHEN sale_payments.outstanding_amount < 0 THEN sale_payments.outstanding_amount ELSE 0 END)) END AS payment_amount,
|
||||
CASE WHEN sale_payments.payment_method IN ('mpu', 'visa', 'master', 'jcb', 'unionpay', 'alipay', 'paymal', 'dinga', 'JunctionPay', 'giftvoucher') THEN 'card'
|
||||
CASE WHEN sale_payments.payment_method IN (#{payment_methods.map{ |pm| "\"#{pm}\"" }.join(', ') }) THEN 'card'
|
||||
ELSE sale_payments.payment_method END AS payment_method, employees.name AS e_name")
|
||||
end
|
||||
|
||||
@@ -1540,8 +1515,9 @@ end
|
||||
end
|
||||
|
||||
def self.total_card_sale(current_user=nil,from=nil,to=nil)
|
||||
payment_methods = SalePayment.where.not(payment_method: ['cash', 'creditnote', 'foc']).distinct.pluck(:payment_method)
|
||||
query = Sale.joins("JOIN sale_payments sp ON sp.sale_id = sales.sale_id")
|
||||
.where('sales.sale_status = "completed" and (sp.payment_method = "mpu" or sp.payment_method = "visa" or sp.payment_method = "master" or sp.payment_method = "jcb" or sp.payment_method = "unionpay" or sp.payment_method = "alipay" or sp.payment_method = "paymal" or sp.payment_method = "dinga" or sp.payment_method = "JunctionPay")')
|
||||
.where("sales.sale_status = 'completed' and (sp.payment_method IN (#{payment_methods.map{ |pm| "\"#{pm}\"" }.join(', ') }))")
|
||||
|
||||
if (!from.nil? && !to.nil?)
|
||||
query = query.receipt_date_between(from, to)
|
||||
@@ -1601,10 +1577,11 @@ end
|
||||
end
|
||||
|
||||
def self.total_payment_methods(current_user=nil,from=nil,to=nil)
|
||||
query = Sale.select("CASE WHEN sp.payment_method IN ('mpu', 'visa', 'master', 'jcb', 'unionpay', 'alipay', 'paymal', 'dinga', 'JunctionPay', 'giftvoucher') THEN 'card' ELSE sp.payment_method END as payment_method")
|
||||
payment_methods = SalePayment.where.not(payment_method: ['cash', 'creditnote', 'foc']).distinct.pluck(:payment_method)
|
||||
query = Sale.select("CASE WHEN sp.payment_method IN (#{payment_methods.map{ |pm| "\"#{pm}\"" }.join(', ') }) THEN 'card' ELSE sp.payment_method END as payment_method")
|
||||
.where("sales.sale_status = 'completed'")
|
||||
.joins("JOIN sale_payments as sp ON sp.sale_id = sales.sale_id")
|
||||
.group("CASE WHEN sp.payment_method IN ('mpu', 'visa', 'master', 'jcb', 'unionpay', 'alipay', 'paymal', 'dinga', 'JunctionPay', 'giftvoucher') THEN 'card' ELSE sp.payment_method END")
|
||||
.group("CASE WHEN sp.payment_method IN (#{payment_methods.map{ |pm| "\"#{pm}\"" }.join(', ') }) THEN 'card' ELSE sp.payment_method END")
|
||||
|
||||
if (!from.nil? && !to.nil?)
|
||||
query = query.receipt_date_between(from, to)
|
||||
@@ -2038,6 +2015,7 @@ def self.get_by_hourly_items(shift_sale_range, shift, from, to, status,type,acco
|
||||
other_charges = self.get_other_charges()
|
||||
end
|
||||
product = self.get_product_sale()
|
||||
payment_methods = SalePayment.where.not(payment_method: ['cash', 'creditnote', 'foc']).distinct.pluck(:payment_method)
|
||||
|
||||
if shift.present?
|
||||
query = query.where("sales.shift_sale_id IN (?) #{account_type} and sale_status='completed'",shift.to_a)
|
||||
@@ -2047,7 +2025,7 @@ def self.get_by_hourly_items(shift_sale_range, shift, from, to, status,type,acco
|
||||
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,
|
||||
sale_cash = Sale.select("SUM(case when (sale_payments.payment_method IN (#{payment_methods.map{ |pm| "\"#{pm}\"" }.join(', ') })) then (sale_payments.payment_amount) else 0 end) as card_amount,
|
||||
SUM(case when (sale_payments.payment_method='cash') then (sale_payments.payment_amount) else 0 end) as cash_amount,
|
||||
SUM(case when (sale_payments.payment_method='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")
|
||||
@@ -2070,7 +2048,7 @@ def self.get_by_hourly_items(shift_sale_range, shift, from, to, status,type,acco
|
||||
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,
|
||||
sale_cash = Sale.select("SUM(case when (sale_payments.payment_method IN (#{payment_methods.map{ |pm| "\"#{pm}\"" }.join(', ') })) then (sale_payments.payment_amount) else 0 end) as card_amount,
|
||||
SUM(case when (sale_payments.payment_method='cash') then (sale_payments.payment_amount) else 0 end) as cash_amount,
|
||||
SUM(case when (sale_payments.payment_method='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")
|
||||
@@ -2094,7 +2072,7 @@ def self.get_by_hourly_items(shift_sale_range, shift, from, to, status,type,acco
|
||||
|
||||
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,
|
||||
sale_cash = Sale.select("SUM(case when (sale_payments.payment_method IN (#{payment_methods.map{ |pm| "\"#{pm}\"" }.join(', ') })) then (sale_payments.payment_amount) else 0 end) as card_amount,
|
||||
SUM(case when (sale_payments.payment_method='cash') then (sale_payments.payment_amount) else 0 end) as cash_amount,
|
||||
SUM(case when (sale_payments.payment_method='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")
|
||||
@@ -2254,8 +2232,9 @@ def self.get_daily_sale_data(transaction_date)
|
||||
end
|
||||
|
||||
def self.get_check_sale_data(transaction_date)
|
||||
payment_methods = SalePayment.where.not(payment_method: ['cash', 'creditnote', 'foc']).distinct.pluck(:payment_method)
|
||||
sale_receivables_subquery = "SELECT sale_payments.sale_id,
|
||||
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' THEN SUM(sale_payments.payment_amount) ELSE SUM(0) END as credit_card_sales,
|
||||
SUM(case when (sale_payments.payment_method IN (#{payment_methods.map{ |pm| "\"#{pm}\"" }.join(', ') })) then (sale_payments.payment_amount) else 0 end) as credit_card_sales,
|
||||
CASE WHEN sale_payments.payment_method = 'giftvoucher' THEN SUM(sale_payments.payment_amount) ELSE SUM(0) END as voucher_sales
|
||||
FROM sale_payments
|
||||
GROUP BY sale_payments.sale_id, sale_payments.payment_method"
|
||||
@@ -2308,13 +2287,13 @@ private
|
||||
end
|
||||
|
||||
def round_to_precision
|
||||
if (self.total_amount != self.total_amount_was || self.total_discount != self.total_discount_was || self.total_tax != self.total_tax_was)
|
||||
if (self.total_amount % 1 > 0 || self.total_discount % 1 > 0 || self.total_tax % 1 > 0)
|
||||
self.total_amount = self.total_amount.round(precision)
|
||||
self.total_discount = self.total_discount.round(precision)
|
||||
self.total_tax = self.total_tax.round(precision)
|
||||
self.grand_total = (self.total_amount - self.total_discount) + self.total_tax
|
||||
end
|
||||
if (self.total_amount % 1 > 0 || self.total_discount % 1 > 0 || self.total_tax % 1 > 0)
|
||||
self.total_amount = self.total_amount.round(precision)
|
||||
self.total_discount = self.total_discount.round(precision)
|
||||
self.total_tax = self.total_tax.round(precision)
|
||||
end
|
||||
self.grand_total = (self.total_amount - self.total_discount) + self.total_tax
|
||||
if (!['foc'].include? self.payment_status)
|
||||
adjust_rounding
|
||||
end
|
||||
end
|
||||
|
||||
@@ -143,7 +143,7 @@ class SaleAudit < ApplicationRecord
|
||||
remark = paymal[0].remark.split("}")
|
||||
response = "["+remark[0]+'}]'
|
||||
response = JSON.parse(response)
|
||||
puts response
|
||||
# puts response
|
||||
if response[0]["status"] == true
|
||||
if response[0]["current_rebate_amount"].present?
|
||||
amount = response[0]["current_rebate_amount"]
|
||||
|
||||
@@ -11,7 +11,7 @@ class SalePayment < ApplicationRecord
|
||||
attr_accessor :received_amount, :card_payment_reference, :voucher_no, :giftcard_no, :customer_id, :external_payment_status,:action_by
|
||||
|
||||
scope :credits, -> { where(payment_method: 'creditnote') }
|
||||
scope :cards, -> { where(payment_method: ['mpu', 'visa', 'master', 'jcb', 'unionpay', 'alipay', 'paymal', 'dinga', 'JunctionPay', 'giftvoucher']) }
|
||||
scope :cards, -> { where(payment_method: PaymentMethodSetting.where("is_active='1'").pluck("payment_method")) }
|
||||
|
||||
def self.sync_sale_payment_records(sale_payments)
|
||||
if !sale_payments.nil?
|
||||
@@ -36,7 +36,8 @@ class SalePayment < ApplicationRecord
|
||||
|
||||
def self.get_kbz_pay_amount(sale_id, current_user)
|
||||
amount = 0
|
||||
kbz_pay_method = PaymentMethodSetting.where(:payment_method => KbzPay::KBZ_PAY).last
|
||||
kbz_pay_method = PaymentMethodSetting.where(payment_method: KbzPay::KBZ_PAY, gateway_communication_type: ['api', 'Api'], is_active: true)
|
||||
.where.not(gateway_url: [nil, ''], auth_token: [nil, ''], merchant_account_id: [nil, '']).last
|
||||
sale_payment = SalePayment.where('sale_id=? and payment_method=? and payment_status!=?', sale_id, KbzPay::KBZ_PAY, 'dead').last
|
||||
if !sale_payment.nil? and !kbz_pay_method.nil?
|
||||
if sale_payment.payment_status == 'pending'
|
||||
@@ -75,6 +76,8 @@ class SalePayment < ApplicationRecord
|
||||
#get all payment for this invoices
|
||||
if payment_for
|
||||
amount_due = SalePayment.get_credit_amount_due_left(self.sale_id).first.payment_amount
|
||||
elsif payment_method == 'foc'
|
||||
amount_due = invoice.total_amount
|
||||
else
|
||||
amount_due = invoice.sale_payments
|
||||
.map(&:payment_amount).reduce(invoice.grand_total, :-)
|
||||
@@ -119,10 +122,8 @@ class SalePayment < ApplicationRecord
|
||||
payment_status,membership_data = dinga_payment
|
||||
when "GiftVoucher"
|
||||
payment_status = giftvoucher_payment
|
||||
when KbzPay::KBZ_PAY
|
||||
payment_status = kbz_payment
|
||||
else
|
||||
puts "it was something else"
|
||||
else
|
||||
payment_status = external_terminal_card_payment(payment_method, payment_for)
|
||||
end
|
||||
|
||||
if payment_status
|
||||
@@ -140,9 +141,6 @@ class SalePayment < ApplicationRecord
|
||||
remark = "#{self.sale_payment_id}||#{shift_sale_id} -> #{remark}"
|
||||
|
||||
sale_audit = SaleAudit.record_payment(invoice.id, remark, action_by.name)
|
||||
if payment_method == "cash"
|
||||
update_shift_for_credit_payment
|
||||
end
|
||||
else
|
||||
sale_audit = SaleAudit.record_payment(invoice.id, remark, action_by.name)
|
||||
end
|
||||
@@ -233,9 +231,9 @@ class SalePayment < ApplicationRecord
|
||||
return response;
|
||||
end
|
||||
|
||||
def self.redeem(paypar_url,token,membership_id,received_amount,sale_id)
|
||||
# membership_actions_data = MembershipAction.find_by_membership_type("redeem");
|
||||
membership_actions_data = PaymentMethodSetting.find_by_payment_method("Redeem")
|
||||
def redeem(paypar_url,token,membership_id,received_amount,sale_id)
|
||||
membership_actions_data = MembershipAction.find_by_membership_type("redeem");
|
||||
# membership_actions_data = PaymentMethodSetting.find_by_payment_method("Redeem")
|
||||
puts "This is membership_actions_data"
|
||||
puts membership_actions_data.to_json
|
||||
if !membership_actions_data.nil?
|
||||
@@ -243,8 +241,9 @@ class SalePayment < ApplicationRecord
|
||||
url = paypar_url.to_s + membership_actions_data.gateway_url.to_s
|
||||
merchant_uid = membership_actions_data.merchant_account_id
|
||||
auth_token = membership_actions_data.auth_token
|
||||
campaign_type_id = JSON.parse(membership_actions_data.additional_parameters)["campaign_type_id"]
|
||||
campaign_type_id = membership_actions_data.additional_parameter["campaign_type_id"]
|
||||
sale_data = Sale.find_by_sale_id(sale_id)
|
||||
account_no = Customer.find_by_customer_id(self.sale.customer_id).paypar_account_no
|
||||
|
||||
if sale_data
|
||||
others = 0
|
||||
@@ -261,7 +260,7 @@ class SalePayment < ApplicationRecord
|
||||
redeem_amount:received_amount,
|
||||
receipt_no:sale_data.receipt_no,
|
||||
campaign_type_id:campaign_type_id,
|
||||
account_no:"",
|
||||
account_no: account_no,
|
||||
merchant_uid:merchant_uid,
|
||||
auth_token:auth_token}.to_json,
|
||||
:headers => {
|
||||
@@ -365,21 +364,23 @@ class SalePayment < ApplicationRecord
|
||||
# Check for Card Payment
|
||||
def self.get_sale_payments_by_card(sale_payments)
|
||||
# Check for Card Payment
|
||||
payment_methods = SalePayment.where.not(payment_method: ['cash', 'creditnote', 'foc']).distinct.pluck(:payment_method)
|
||||
sale_payments.each do |sp|
|
||||
if sp.payment_method == "jcb" || sp.payment_method == "mpu" || sp.payment_method == "visa" || sp.payment_method == "master" || sp.payment_method == "unionpay" || sp.payment_method == "alipay"
|
||||
return true;
|
||||
payment_methods.each do |m|
|
||||
if sp.payment_method == m
|
||||
return true;
|
||||
end
|
||||
end
|
||||
# if sp.payment_method == "jcb" || sp.payment_method == "mpu" || sp.payment_method == "visa" || sp.payment_method == "master" || sp.payment_method == "unionpay" || sp.payment_method == "alipay"
|
||||
# return true;
|
||||
# end
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
def cash_payment(payment_for=false)
|
||||
status = false
|
||||
sale_payments_data = SalePayment.find_by_sale_id(self.sale_id)
|
||||
if sale_payments_data.nil?
|
||||
status = true
|
||||
end
|
||||
|
||||
sale_payments_data = SalePayment.find_by_sale_id(self.sale_id)
|
||||
payment_status = false
|
||||
|
||||
self.payment_method = "cash"
|
||||
@@ -394,8 +395,11 @@ class SalePayment < ApplicationRecord
|
||||
self.payment_status = "paid"
|
||||
payment_status = self.save!
|
||||
if !payment_for
|
||||
sale_update_payment_status(self.received_amount,status)
|
||||
sale_update_payment_status(self.received_amount)
|
||||
else
|
||||
update_shift_for_credit_payment()
|
||||
end
|
||||
|
||||
balance_amount =0.0
|
||||
outstanding_amount =0.0
|
||||
if self.sale.grand_total.to_f > self.received_amount.to_f
|
||||
@@ -411,6 +415,7 @@ class SalePayment < ApplicationRecord
|
||||
def foc_payment
|
||||
payment_status = false
|
||||
sale = self.sale
|
||||
sale.sale_payments.update_all(payment_status: "cancelled")
|
||||
# add to sale item with foc
|
||||
sale_items = sale.sale_items
|
||||
|
||||
@@ -427,7 +432,7 @@ class SalePayment < ApplicationRecord
|
||||
self.payment_status = "paid"
|
||||
payment_status = self.save!
|
||||
# sale_update_payment_status(self.received_amount)
|
||||
sale_update_payment_status(0)
|
||||
sale_update_payment_status(0, true)
|
||||
return payment_status
|
||||
end
|
||||
|
||||
@@ -504,7 +509,7 @@ class SalePayment < ApplicationRecord
|
||||
#Next time - validate if the vochure number is valid - within
|
||||
customer_data = Customer.find_by_customer_id(self.sale.customer_id)
|
||||
membership_setting = MembershipSetting.find_by_membership_type("paypar_url")
|
||||
membership_data = SalePayment.redeem(membership_setting.gateway_url,membership_setting.auth_token,customer_data.membership_id,self.received_amount,self.sale.sale_id)
|
||||
membership_data = redeem(membership_setting.gateway_url,membership_setting.auth_token,customer_data.membership_id,self.received_amount,self.sale.sale_id)
|
||||
|
||||
#record an payment in sale-audit
|
||||
remark = "#{membership_data} Redeem- for Customer #{self.sale.customer_id} Sale Id [#{self.sale.sale_id}]| pay amount -> #{self.received_amount} "
|
||||
@@ -623,39 +628,38 @@ class SalePayment < ApplicationRecord
|
||||
return payment_status
|
||||
end
|
||||
|
||||
def kbz_payment
|
||||
payment_status = false
|
||||
self.payment_amount = self.received_amount
|
||||
self.payment_reference = self.payment_reference
|
||||
self.outstanding_amount = self.sale.grand_total.to_f - self.received_amount.to_f
|
||||
self.payment_status = "paid"
|
||||
payment_status = self.save!
|
||||
# sale_update_payment_status(self.received_amount)
|
||||
return payment_status
|
||||
end
|
||||
|
||||
def sale_update_payment_status(paid_amount, check_foc = false)
|
||||
#update amount_outstanding
|
||||
if ['completed'].include? sale.sale_status
|
||||
return
|
||||
end
|
||||
sale = self.sale
|
||||
total_payment_amount = sale.sale_payments.reload.sum(&:payment_amount)
|
||||
sale_payments = sale.sale_payments.reload
|
||||
|
||||
is_credit = sale_payments.any? { |x| x.payment_method == "creditnote" }
|
||||
is_foc = sale_payments.any? { |x| x.payment_method == "foc" } || check_foc
|
||||
|
||||
if is_foc
|
||||
total_payment_amount = 0.0
|
||||
else
|
||||
total_payment_amount = sale_payments.sum(&:payment_amount)
|
||||
end
|
||||
|
||||
sale.amount_received = sale.amount_received.to_f + paid_amount.to_f
|
||||
sale.amount_changed = total_payment_amount - sale.grand_total.to_f
|
||||
|
||||
is_credit = sale.sale_payments.any? { |x| x.payment_method == "creditnote" }
|
||||
is_foc = sale.sale_payments.any? { |x| x.payment_method == "foc" }
|
||||
|
||||
if sale.grand_total <= total_payment_amount && sale.sale_status == "new"
|
||||
if is_foc
|
||||
sale.payment_status = 'foc'
|
||||
sale.sale_status = 'completed'
|
||||
elsif sale.grand_total <= total_payment_amount && sale.sale_status == "new"
|
||||
sale.payment_status = "paid"
|
||||
if is_credit
|
||||
sale.payment_status = "outstanding"
|
||||
end
|
||||
if is_foc
|
||||
sale.payment_status = "foc"
|
||||
end
|
||||
|
||||
sale.sale_status = "completed"
|
||||
|
||||
if MembershipSetting.find_by_rebate(1) && is_foc == 0 && is_credit == 0
|
||||
if MembershipSetting.find_by_rebate(1) && !is_foc && !is_credit
|
||||
response = rebat(sale)
|
||||
|
||||
#record an payment in sale-audit
|
||||
@@ -678,25 +682,24 @@ class SalePayment < ApplicationRecord
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
sale.save!
|
||||
sale.save!
|
||||
|
||||
if check_foc
|
||||
table_update_status(sale)
|
||||
update_shift
|
||||
elsif paid_amount.to_f > 0 #|| paid_amount != "0.0"
|
||||
table_update_status(sale)
|
||||
update_shift
|
||||
elsif paid_amount.to_f == 0 && !is_credit
|
||||
table_update_status(sale)
|
||||
update_shift
|
||||
end
|
||||
if check_foc
|
||||
table_update_status(sale)
|
||||
update_shift
|
||||
elsif paid_amount.to_f > 0 #|| paid_amount != "0.0"
|
||||
table_update_status(sale)
|
||||
update_shift
|
||||
elsif paid_amount.to_f == 0 && !is_credit
|
||||
table_update_status(sale)
|
||||
update_shift
|
||||
end
|
||||
end
|
||||
|
||||
# update for cashier shift
|
||||
def update_shift
|
||||
|
||||
shift = ShiftSale.current_open_shift(self.action_by.id)
|
||||
|
||||
if shift.nil?
|
||||
@@ -734,7 +737,6 @@ class SalePayment < ApplicationRecord
|
||||
else
|
||||
# extra_changed_amount = self.received_amount.to_f + credit_payment_left
|
||||
shift.cash_sales = shift.cash_sales.to_f + (self.received_amount.to_f + credit_payment_left)
|
||||
|
||||
self.sale.amount_received = self.sale.amount_received.to_f - credit_payment_left
|
||||
self.sale.amount_changed = self.sale.amount_changed.to_f - credit_payment_left
|
||||
self.sale.save!
|
||||
|
||||
@@ -150,21 +150,11 @@ class ShiftSale < ApplicationRecord
|
||||
end
|
||||
|
||||
def self.get_by_shift_other_payment(shift)
|
||||
payment_methods = SalePayment.where.not(payment_method: ['cash', 'creditnote', 'foc']).distinct.pluck(:payment_method)
|
||||
|
||||
other_payment = Sale.select("sale_payments.payment_method as name,
|
||||
SUM(case when (sale_payments.payment_method='mpu') then (sale_payments.payment_amount) else 0 end) as mpu_amount,
|
||||
SUM(case when (sale_payments.payment_method='visa') then (sale_payments.payment_amount) else 0 end) as visa_amount,
|
||||
SUM(case when (sale_payments.payment_method='master') then (sale_payments.payment_amount) else 0 end) as master_amount,
|
||||
SUM(case when (sale_payments.payment_method='jcb') then (sale_payments.payment_amount) else 0 end) as jcb_amount,
|
||||
SUM(case when (sale_payments.payment_method='unionpay') then (sale_payments.payment_amount) else 0 end) as unionpay_amount,
|
||||
SUM(case when (sale_payments.payment_method='alipay') then (sale_payments.payment_amount) else 0 end) as alipay_amount,
|
||||
SUM(case when (sale_payments.payment_method='KBZPay') then (sale_payments.payment_amount) else 0 end) as kbzpay_amount,
|
||||
SUM(case when (sale_payments.payment_method='dinga') then (sale_payments.payment_amount) else 0 end) as dinga_amount,
|
||||
SUM(case when (sale_payments.payment_method='giftvoucher') then (sale_payments.payment_amount) else 0 end) as giftvoucher_amount,
|
||||
SUM(case when (sale_payments.payment_method='JunctionPay') then (sale_payments.payment_amount) else 0 end) as junctionpay_amount,
|
||||
SUM(case when (sale_payments.payment_method='foc') then (sale_payments.payment_amount) else 0 end) as foc_amount,
|
||||
SUM(case when (sale_payments.payment_method='paymal') then (sale_payments.payment_amount) else 0 end) as paymal_amount,
|
||||
SUM(case when (sale_payments.payment_method='paypar') then (sale_payments.payment_amount) else 0 end) as paypar_amount")
|
||||
#{payment_methods.map { |method| "SUM(case when (sale_payments.payment_method='#{method}') then sale_payments.payment_amount else 0 end) as #{method}"}.join(', ')},
|
||||
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 =? and sale_status = 'completed' and sale_payments.payment_amount != 0 ", shift.id)
|
||||
end
|
||||
|
||||
@@ -2,7 +2,7 @@ class CloseCashierPdf < Prawn::Document
|
||||
include NumberFormattable
|
||||
attr_accessor :label_width,:price_column_width,:page_width, :page_height, :margin, :price_width, :item_width, :header_font_size, :item_font_size,:item_height,:qty_width,:total_width,:item_description_width,:text_width
|
||||
|
||||
def initialize(printer_settings, shift_sale, sale_items, total_other_charges_info, acc_cate_count, menu_cate_count, total_by_acc, shop_details,sale_taxes,other_payment,total_amount_by_account,total_discount_by_account,total_member_discount,total_dinein,total_takeway,total_other_charges,total_waste,total_spoile,total_credit_payments)
|
||||
def initialize(printer_settings, shift_sale, sale_items, total_other_charges_info, acc_cate_count, menu_cate_count, total_by_acc, shop_details,sale_taxes,other_payment,total_amount_by_account,total_discount_by_account,total_member_discount,total_dinein,total_takeway,total_other_charges,total_waste,total_spoile,total_credit_payments,payment_methods)
|
||||
self.page_width = printer_settings.page_width #PrintSetting.where("name = ?","Close Cashier").first.page_width
|
||||
self.page_height = printer_settings.page_height
|
||||
self.header_font_size = printer_settings.header_font_size.to_i
|
||||
@@ -43,7 +43,7 @@ class CloseCashierPdf < Prawn::Document
|
||||
|
||||
stroke_horizontal_rule
|
||||
|
||||
shift_detail(shift_sale,sale_taxes,other_payment,total_amount_by_account,total_discount_by_account,total_member_discount,precision,delimiter,total_waste,total_spoile,total_other_charges,total_credit_payments)
|
||||
shift_detail(shift_sale,sale_taxes,other_payment,total_amount_by_account,total_discount_by_account,total_member_discount,precision,delimiter,total_waste,total_spoile,total_other_charges,total_credit_payments,payment_methods)
|
||||
|
||||
if !sale_items.nil? or !sale_items.blank?
|
||||
sale_items_detail(sale_items, acc_cate_count, menu_cate_count, total_by_acc, total_other_charges_info)
|
||||
@@ -63,7 +63,7 @@ class CloseCashierPdf < Prawn::Document
|
||||
stroke_horizontal_rule
|
||||
end
|
||||
|
||||
def shift_detail(shift_sale,sale_taxes,other_payment,total_amount_by_account,total_discount_by_account,total_member_discount,precision,delimiter,total_waste,total_spoile,total_other_charges,total_credit_payments)
|
||||
def shift_detail(shift_sale,sale_taxes,other_payment,total_amount_by_account,total_discount_by_account,total_member_discount,precision,delimiter,total_waste,total_spoile,total_other_charges,total_credit_payments,payment_methods)
|
||||
move_down 7
|
||||
y_position = cursor
|
||||
bounding_box([0,y_position], :width =>self.label_width, :height => self.item_height) do
|
||||
@@ -173,125 +173,138 @@ class CloseCashierPdf < Prawn::Document
|
||||
if shift_sale.other_sales > 0
|
||||
other_payment.each do |other|
|
||||
@total_foc = other.foc_amount.round(2)
|
||||
if other.mpu_amount && other.mpu_amount.to_f > 0
|
||||
y_position = cursor
|
||||
bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
|
||||
text "MPU Payment :", :size => self.item_font_size, :align => :right
|
||||
end
|
||||
bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
|
||||
text "#{ number_format(other.mpu_amount, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
|
||||
|
||||
if !payment_methods.nil?
|
||||
payment_methods.each do |method|
|
||||
y_position = cursor
|
||||
bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
|
||||
text "#{method} Payment :", :size => self.item_font_size, :align => :right
|
||||
end
|
||||
bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
|
||||
text "#{ number_format(other[method.parameterize.to_sym], :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if other.visa_amount && other.visa_amount.to_f > 0
|
||||
y_position = cursor
|
||||
bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
|
||||
text "VISA Payment :", :size => self.item_font_size, :align => :right
|
||||
end
|
||||
bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
|
||||
text "#{number_format(other.visa_amount, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
|
||||
end
|
||||
end
|
||||
|
||||
if other.master_amount && other.master_amount.to_f > 0
|
||||
y_position = cursor
|
||||
bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
|
||||
text "Master Payment :", :size => self.item_font_size, :align => :right
|
||||
end
|
||||
bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
|
||||
text "#{ number_format(other.master_amount, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
|
||||
end
|
||||
end
|
||||
|
||||
if other.jcb_amount && other.jcb_amount.to_f > 0
|
||||
y_position = cursor
|
||||
bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
|
||||
text "JCB Payment :", :size => self.item_font_size, :align => :right
|
||||
end
|
||||
bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
|
||||
text "#{ number_format(other.jcb_amount, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
|
||||
end
|
||||
end
|
||||
|
||||
if other.unionpay_amount && other.unionpay_amount.to_f > 0
|
||||
y_position = cursor
|
||||
bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
|
||||
text "UNIONPAY Payment :", :size => self.item_font_size, :align => :right
|
||||
end
|
||||
bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
|
||||
text "#{ number_format(other.unionpay_amount, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
|
||||
end
|
||||
end
|
||||
|
||||
if other.alipay_amount && other.alipay_amount.to_f > 0
|
||||
y_position = cursor
|
||||
bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
|
||||
text "Alipay Payment :", :size => self.item_font_size, :align => :right
|
||||
end
|
||||
bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
|
||||
text "#{ number_format(other.alipay_amount, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
|
||||
end
|
||||
end
|
||||
|
||||
if other.kbzpay_amount && other.kbzpay_amount.to_f > 0
|
||||
y_position = cursor
|
||||
bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
|
||||
text "KBZ Payment :", :size => self.item_font_size, :align => :right
|
||||
end
|
||||
bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
|
||||
text "#{ number_format(other.kbzpay_amount, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
|
||||
end
|
||||
end
|
||||
|
||||
if other.junctionpay_amount && other.junctionpay_amount.to_f > 0
|
||||
y_position = cursor
|
||||
bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
|
||||
text "JunctionPay Payment :", :size => self.item_font_size, :align => :right
|
||||
end
|
||||
bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
|
||||
text "#{ number_format(other.junctionpay_amount, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
|
||||
end
|
||||
end
|
||||
|
||||
if other.dinga_amount && other.dinga_amount.to_f > 0
|
||||
y_position = cursor
|
||||
bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
|
||||
text "Dinga Payment :", :size => self.item_font_size, :align => :right
|
||||
end
|
||||
bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
|
||||
text "#{ number_format(other.dinga_amount, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
|
||||
end
|
||||
end
|
||||
|
||||
if other.paypar_amount && other.paypar_amount.to_f > 0
|
||||
y_position = cursor
|
||||
bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
|
||||
text "Redeem Payment :", :size => self.item_font_size, :align => :right
|
||||
end
|
||||
bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
|
||||
text "#{ number_format(other.paypar_amount, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
|
||||
end
|
||||
end
|
||||
|
||||
if other.paymal_amount && other.paymal_amount.to_f > 0
|
||||
y_position = cursor
|
||||
bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
|
||||
text "Paymal Payment :", :size => self.item_font_size, :align => :right
|
||||
end
|
||||
bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
|
||||
text "#{ number_format(other.paymal_amount, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
|
||||
end
|
||||
end
|
||||
|
||||
if other.giftvoucher_amount && other.giftvoucher_amount.to_f > 0
|
||||
y_position = cursor
|
||||
bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
|
||||
text "GiftVoucher Payment :", :size => self.item_font_size, :align => :right
|
||||
end
|
||||
bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
|
||||
text "#{ number_format(other.giftvoucher_amount, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
|
||||
end
|
||||
end
|
||||
# if other.mpu_amount && other.mpu_amount.to_f > 0
|
||||
# y_position = cursor
|
||||
# bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
|
||||
# text "MPU Payment :", :size => self.item_font_size, :align => :right
|
||||
# end
|
||||
# bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
|
||||
# text "#{ number_format(other.mpu_amount, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
|
||||
# end
|
||||
# end
|
||||
#
|
||||
# if other.visa_amount && other.visa_amount.to_f > 0
|
||||
# y_position = cursor
|
||||
# bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
|
||||
# text "VISA Payment :", :size => self.item_font_size, :align => :right
|
||||
# end
|
||||
# bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
|
||||
# text "#{number_format(other.visa_amount, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
|
||||
# end
|
||||
# end
|
||||
#
|
||||
# if other.master_amount && other.master_amount.to_f > 0
|
||||
# y_position = cursor
|
||||
# bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
|
||||
# text "Master Payment :", :size => self.item_font_size, :align => :right
|
||||
# end
|
||||
# bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
|
||||
# text "#{ number_format(other.master_amount, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
|
||||
# end
|
||||
# end
|
||||
#
|
||||
# if other.jcb_amount && other.jcb_amount.to_f > 0
|
||||
# y_position = cursor
|
||||
# bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
|
||||
# text "JCB Payment :", :size => self.item_font_size, :align => :right
|
||||
# end
|
||||
# bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
|
||||
# text "#{ number_format(other.jcb_amount, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
|
||||
# end
|
||||
# end
|
||||
#
|
||||
# if other.unionpay_amount && other.unionpay_amount.to_f > 0
|
||||
# y_position = cursor
|
||||
# bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
|
||||
# text "UNIONPAY Payment :", :size => self.item_font_size, :align => :right
|
||||
# end
|
||||
# bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
|
||||
# text "#{ number_format(other.unionpay_amount, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
|
||||
# end
|
||||
# end
|
||||
#
|
||||
# if other.alipay_amount && other.alipay_amount.to_f > 0
|
||||
# y_position = cursor
|
||||
# bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
|
||||
# text "Alipay Payment :", :size => self.item_font_size, :align => :right
|
||||
# end
|
||||
# bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
|
||||
# text "#{ number_format(other.alipay_amount, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
|
||||
# end
|
||||
# end
|
||||
#
|
||||
# if other.kbzpay_amount && other.kbzpay_amount.to_f > 0
|
||||
# y_position = cursor
|
||||
# bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
|
||||
# text "KBZ Payment :", :size => self.item_font_size, :align => :right
|
||||
# end
|
||||
# bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
|
||||
# text "#{ number_format(other.kbzpay_amount, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
|
||||
# end
|
||||
# end
|
||||
#
|
||||
# if other.junctionpay_amount && other.junctionpay_amount.to_f > 0
|
||||
# y_position = cursor
|
||||
# bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
|
||||
# text "JunctionPay Payment :", :size => self.item_font_size, :align => :right
|
||||
# end
|
||||
# bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
|
||||
# text "#{ number_format(other.junctionpay_amount, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
|
||||
# end
|
||||
# end
|
||||
#
|
||||
# if other.dinga_amount && other.dinga_amount.to_f > 0
|
||||
# y_position = cursor
|
||||
# bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
|
||||
# text "Dinga Payment :", :size => self.item_font_size, :align => :right
|
||||
# end
|
||||
# bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
|
||||
# text "#{ number_format(other.dinga_amount, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
|
||||
# end
|
||||
# end
|
||||
#
|
||||
# if other.paypar_amount && other.paypar_amount.to_f > 0
|
||||
# y_position = cursor
|
||||
# bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
|
||||
# text "Redeem Payment :", :size => self.item_font_size, :align => :right
|
||||
# end
|
||||
# bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
|
||||
# text "#{ number_format(other.paypar_amount, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
|
||||
# end
|
||||
# end
|
||||
#
|
||||
# if other.paymal_amount && other.paymal_amount.to_f > 0
|
||||
# y_position = cursor
|
||||
# bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
|
||||
# text "Paymal Payment :", :size => self.item_font_size, :align => :right
|
||||
# end
|
||||
# bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
|
||||
# text "#{ number_format(other.paymal_amount, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
|
||||
# end
|
||||
# end
|
||||
#
|
||||
# if other.giftvoucher_amount && other.giftvoucher_amount.to_f > 0
|
||||
# y_position = cursor
|
||||
# bounding_box([0,y_position], :width =>self.item_description_width, :height => 20) do
|
||||
# text "GiftVoucher Payment :", :size => self.item_font_size, :align => :right
|
||||
# end
|
||||
# bounding_box([self.item_description_width,y_position], :width =>self.price_width, :height => 20) do
|
||||
# text "#{ number_format(other.giftvoucher_amount, :precision => precision.to_i, :delimiter => delimiter)}", :size => self.item_font_size, :align => :right
|
||||
# end
|
||||
# end
|
||||
end
|
||||
else
|
||||
y_position = cursor
|
||||
|
||||
@@ -50,7 +50,7 @@ class ReceiptBillPdf < Prawn::Document
|
||||
|
||||
cashier_info(sale_data, customer_name, latest_order_no)
|
||||
line_items(sale_items,precision,delimiter)
|
||||
all_total(sale_data,precision,delimiter)
|
||||
all_total(sale_data,precision,delimiter,printed_status)
|
||||
|
||||
|
||||
if member_info != nil
|
||||
@@ -94,6 +94,9 @@ class ReceiptBillPdf < Prawn::Document
|
||||
end
|
||||
|
||||
if kbz_pay_status
|
||||
if printed_status == 'credit_payment'
|
||||
printed_status = 'Paid'
|
||||
end
|
||||
kbzpay_qr_generator(printed_status, qr_code)
|
||||
end
|
||||
|
||||
@@ -305,7 +308,7 @@ class ReceiptBillPdf < Prawn::Document
|
||||
|
||||
end
|
||||
|
||||
def all_total(sale_data,precision,delimiter)
|
||||
def all_total(sale_data,precision,delimiter,printed_status)
|
||||
move_down line_move
|
||||
item_name_width = self.item_width
|
||||
y_position = cursor
|
||||
@@ -432,15 +435,20 @@ class ReceiptBillPdf < Prawn::Document
|
||||
end
|
||||
move_down line_move
|
||||
|
||||
sale_payment(sale_data,precision,delimiter)
|
||||
sale_payment(sale_data,precision,delimiter,printed_status)
|
||||
end
|
||||
|
||||
def sale_payment(sale_data,precision,delimiter)
|
||||
def sale_payment(sale_data,precision,delimiter,printed_status)
|
||||
stroke_horizontal_rule
|
||||
#move_down line_move
|
||||
# sql = "SELECT SUM(payment_amount)
|
||||
# FROM sale_payments where payment_method='creditnote'
|
||||
# and sale_id='#{sale_data.sale_id}'"
|
||||
# and sale_id='#{sale_data.sale_id}'"
|
||||
|
||||
if printed_status == 'credit_payment'
|
||||
sale_payments = SalePayment.select(:payment_amount, :payment_method, :updated_at)
|
||||
.where("sale_id = '#{sale_data.sale_id}' AND payment_method != 'creditnote'")
|
||||
else
|
||||
sql = SalePayment.select("(SUM(payment_amount))").where("payment_method='creditnote' and sale_id='#{sale_data.sale_id}'").to_sql
|
||||
# sql1 = "SELECT CASE WHEN s.amount_changed > 0 and (s.amount_received - s.amount_changed) = s.grand_total THEN ( SELECT SUM(payment_amount)
|
||||
# FROM sale_payments where payment_method='creditnote'
|
||||
@@ -458,13 +466,16 @@ class ReceiptBillPdf < Prawn::Document
|
||||
where sa.sale_id='#{sale_data.sale_id}')) = 0
|
||||
THEN payment_method!='creditnote' ELSE 1 END) AND sale_id = ?", sale_data.sale_id)
|
||||
.group("payment_method")
|
||||
|
||||
end
|
||||
|
||||
sale_payments.each do |payment|
|
||||
y_position = cursor
|
||||
if payment.payment_method == "paypar"
|
||||
bounding_box([0,y_position], :width =>self.item_description_width, :height => self.item_height) do
|
||||
text "Redeem Payment", :size => self.item_font_size,:align => :left
|
||||
end
|
||||
end
|
||||
elsif printed_status == 'credit_payment'
|
||||
text "#{payment.payment_method.capitalize} Payment on #{payment.updated_at.strftime('%d-%m-%Y')}", :left_margin => -10, :size => self.item_font_size,:align => :left
|
||||
else
|
||||
bounding_box([0,y_position], :width =>self.item_description_width, :height => self.item_height) do
|
||||
text "#{payment.payment_method.capitalize} Payment", :size => self.item_font_size,:align => :left
|
||||
@@ -741,7 +752,9 @@ class ReceiptBillPdf < Prawn::Document
|
||||
move_down line_move
|
||||
stroke_horizontal_rule
|
||||
move_down line_move
|
||||
|
||||
if printed_status == 'credit_payment'
|
||||
printed_status = 'Paid'
|
||||
end
|
||||
move_down line_move
|
||||
y_position = cursor
|
||||
bounding_box([0, y_position], :width =>self.label_width) do
|
||||
|
||||
@@ -189,7 +189,7 @@
|
||||
<td align="right"><%= @summ_sale.total_receipt %></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<% revenue = @summ_sale.total_amount - @summ_sale.total_discount%>
|
||||
<% revenue = @summ_sale.grand_total - @summ_sale.total_discount - @summ_sale.total_tax %>
|
||||
<td><%= t("views.right_panel.detail.sale") %> <%= t :revenue %> : </td>
|
||||
<td align="right"><%= number_format( revenue, precision: precision.to_i ,delimiter: delimiter) %></td>
|
||||
</tr>
|
||||
|
||||
@@ -172,11 +172,31 @@
|
||||
});
|
||||
|
||||
$(document).ready(function () {
|
||||
var menus = JSON.parse(localStorage.getItem("menus"));;
|
||||
if (menus != null) {
|
||||
menu_cache_append(menus);
|
||||
}else{
|
||||
$("#menu_data").removeClass("hidden");
|
||||
// var menus = JSON.parse(localStorage.getItem("menus"));;
|
||||
// if (menus != null) {
|
||||
// menu_cache_append(menus);
|
||||
// }else{
|
||||
// getAllMenu();
|
||||
// $("#menu_data").removeClass("hidden");
|
||||
// }
|
||||
getAllMenu();
|
||||
|
||||
function getAllMenu(){
|
||||
$.ajax({
|
||||
type: "GET",
|
||||
url: '/origami/get_all_menu',
|
||||
data: {},
|
||||
success:function(result){
|
||||
var menus = JSON.stringify(result);
|
||||
localStorage.setItem("menus", menus);
|
||||
if (result != null ) {
|
||||
menu_cache_append(result);
|
||||
$("#loading_wrapper").hide();
|
||||
$("#oqs_loading_wrapper").css("display", "none");
|
||||
$(".page-loader-wrapper").css("display", "none");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function menu_cache_append(menus){
|
||||
@@ -328,6 +348,66 @@
|
||||
});
|
||||
//End menu category Click
|
||||
|
||||
//show menu item list when click menu category
|
||||
function show_sub_category_list(url,sub_category,menu_id){
|
||||
|
||||
var sub_category_list = $('.sub_category_list');
|
||||
sub_category_list.empty();
|
||||
|
||||
menus = JSON.parse(localStorage.getItem("menus"));
|
||||
if (menus != null) {
|
||||
for(var j in menus) {
|
||||
var categories = menus[j]["categories"];
|
||||
for(var ii in categories) {
|
||||
if (menu_id == categories[ii]["parent_id"]) {
|
||||
$(sub_category).removeClass('hidden');
|
||||
row = '<li class="menu_sub_category fadeInTop" data-id="'+categories[ii].id+'">'
|
||||
+'<a class="nav-link" data-toggle="tab" href="" role="tab">'+ categories[ii].name+'</a>'
|
||||
+'</li>' ;
|
||||
$(sub_category).append(row);
|
||||
}
|
||||
}
|
||||
}
|
||||
}else{
|
||||
if (type != -1 && modify_order != -1) {
|
||||
var url = "../../../addorders/"+url;
|
||||
}if(modify_order== -1 && type != -1){
|
||||
var url = 'addorders/'+url;
|
||||
}
|
||||
if (type ==-1 && modify_order == -1){
|
||||
var url = url;
|
||||
}
|
||||
//Start Ajax
|
||||
$.ajax({
|
||||
type: "GET",
|
||||
url: url,
|
||||
data: {},
|
||||
dataType: "json",
|
||||
success: function(data) {
|
||||
var sub_category_list = $('.sub_category_list');
|
||||
sub_category_list.empty();
|
||||
data = data.sub_category;
|
||||
if (data.length > 0) {
|
||||
// if ((sub_category.hasClass('hidden'))) {
|
||||
$(sub_category).removeClass('hidden');
|
||||
// }else{
|
||||
// $(sub_category).addClass('hidden');
|
||||
// }
|
||||
for(var i in data) {
|
||||
|
||||
row = '<li class="menu_sub_category fadeInTop" data-id="'+data[i].id+'">'
|
||||
+'<a class="nav-link" data-toggle="tab" href="" role="tab">'+ data[i].name+'</a>'
|
||||
+'</li>' ;
|
||||
$(sub_category).append(row);
|
||||
//end is_sub_item false
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
//end Ajax
|
||||
}
|
||||
}
|
||||
|
||||
//click menu sidebar menu category
|
||||
$(document).on('click', '.menu_sub_category', function(event){
|
||||
// event.preventDefault();
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
<p>Please wait...</p>
|
||||
</div>
|
||||
</div>
|
||||
<%= render 'shared/license_expire_warning' %>
|
||||
<!-- #END# Page Loader -->
|
||||
<!-- Overlay For Sidebars -->
|
||||
<div class="overlay"></div>
|
||||
@@ -59,7 +60,7 @@
|
||||
</p>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<%= yield %>
|
||||
</section>
|
||||
</body>
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
<p>Please wait...</p>
|
||||
</div>
|
||||
</div>
|
||||
<%= render 'shared/license_expire_warning' %>
|
||||
<!-- #END# Page Loader -->
|
||||
<!-- Overlay For Sidebars -->
|
||||
<div class="overlay"></div>
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
<p>Please wait...</p>
|
||||
</div>
|
||||
</div>
|
||||
<%= render 'shared/license_expire_warning' %>
|
||||
<!-- #END# Page Loader -->
|
||||
<!-- Overlay For Sidebars -->
|
||||
<div class="overlay"></div>
|
||||
@@ -56,7 +57,7 @@
|
||||
<p id="notify_message" class="hidden" data-placement-from="top" data-message="<%=message%>" data-placement-align="center"
|
||||
data-animate-enter="" data-animate-exit="" data-color-name="<%=color%>" >
|
||||
</p>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<%= yield %>
|
||||
</section>
|
||||
</body>
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
<p>Please wait...</p>
|
||||
</div>
|
||||
</div>
|
||||
<%= render 'shared/license_expire_warning' %>
|
||||
<!-- #END# Page Loader -->
|
||||
<!-- Overlay For Sidebars -->
|
||||
<div class="overlay"></div>
|
||||
@@ -51,7 +52,7 @@
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<% end %>
|
||||
<% end %>
|
||||
<%= yield %>
|
||||
</section>
|
||||
</body>
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
<p>Please wait...</p>
|
||||
</div>
|
||||
</div>
|
||||
<%= render 'shared/license_expire_warning' %>
|
||||
<!-- #END# Page Loader -->
|
||||
<!-- Overlay For Sidebars -->
|
||||
<div class="overlay"></div>
|
||||
@@ -60,7 +61,7 @@
|
||||
data-animate-enter="" data-animate-exit="" data-color-name="<%=color%>" >
|
||||
</p>
|
||||
<% end %>
|
||||
<%= yield %>
|
||||
<%= yield %>
|
||||
</section>
|
||||
</body>
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<%= render 'shared/license_expire_warning' %>
|
||||
<%= render 'layouts/header' %>
|
||||
<div class="container-fluid">
|
||||
<% flash.each do |type, message| %>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- Column One -->
|
||||
<div class="row clearfix" style="">
|
||||
<div class="row clearfix m-top-100" style="">
|
||||
<div class="col-lg-7 col-md-7 col-sm-7">
|
||||
<p class="hidden filter"><%= @filter %></p>
|
||||
<div class="card">
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
<% type = request.path_info.include?('quick_service') || request.path_info.include?('food_court')%>
|
||||
<% modify_order = request.path_info.include?('modify_order')%>
|
||||
<div class="container-fluid " style="padding:0px 3px 0px 3px;">
|
||||
<div class="container-fluid addorder-pages" style="padding:0px 3px 0px 3px;">
|
||||
<div id="oqs_loading_wrapper" style="display:none;">
|
||||
<div id="oqs_loading"></div>
|
||||
</div>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<div class="container-fluid">
|
||||
<div class="container-fluid m-top-100">
|
||||
<div class='row'>
|
||||
<div class="col-lg-10 col-md-10 col-sm-10">
|
||||
<h2> <%= t :cash_in %> </h2>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<div class="container-fluid">
|
||||
<div class="container-fluid m-top-100">
|
||||
<div class='row'>
|
||||
<div class="col-lg-10 col-md-10 col-sm-10">
|
||||
<h2><%= t :cash_out %></h2>
|
||||
|
||||
@@ -96,36 +96,35 @@
|
||||
</table>
|
||||
<table class="table">
|
||||
<% if !(@total_payment_methods.nil?) %>
|
||||
<% @total_payment_methods.each do |payment| %>
|
||||
<% if !@sale_data[0].empty? %>
|
||||
<% if payment.payment_method != 'mpu' && payment.payment_method != 'visa' && payment.payment_method != 'master' && payment.payment_method != 'jcb' %>
|
||||
<tr>
|
||||
<% if payment.payment_method == 'paypar' %>
|
||||
<td>Redeem Sale : </td>
|
||||
<% else %>
|
||||
<td><%= payment.payment_method.to_s.capitalize %> Sale : </td>
|
||||
<% end %>
|
||||
<td align="right">
|
||||
<% @sale_data.each do |data| %>
|
||||
<% pay_mth = payment.payment_method %>
|
||||
<%= data[""+pay_mth+""] %>
|
||||
<% @total_payment_methods.each do |payment| %>
|
||||
<% if !@sale_data[0].empty? %>
|
||||
<% if payment.payment_method != 'mpu' && payment.payment_method != 'visa' && payment.payment_method != 'master' && payment.payment_method != 'jcb' %>
|
||||
<tr>
|
||||
<% if payment.payment_method == 'paypar' %>
|
||||
<td>Redeem Sale : </td>
|
||||
<% else %>
|
||||
<td><%= payment.payment_method.to_s.capitalize %> Sale : </td>
|
||||
<% end %>
|
||||
<td align="right">
|
||||
<% @sale_data.each do |data| %>
|
||||
<% pay_mth = payment.payment_method %>
|
||||
<%= data[""+pay_mth+""] %>
|
||||
<% end %>
|
||||
</td>
|
||||
</tr>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</td>
|
||||
</tr>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
||||
<% total_card = @sale_data.select { |hash| hash["card"]!=nil }.first %>
|
||||
<% if !total_card.nil? %>
|
||||
<tr>
|
||||
<td><%= t("views.right_panel.detail.other_payment") %> : </td>
|
||||
<td align="right">
|
||||
<%= total_card["card"].to_f %>
|
||||
</td>
|
||||
</tr>
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
||||
<% total_card = @sale_data.select { |hash| hash["card"]!=nil }.first %>
|
||||
<% if !total_card.nil? %>
|
||||
<tr>
|
||||
<td><%= t("views.right_panel.detail.other_payment") %> : </td>
|
||||
<td align="right">
|
||||
<%= total_card["card"].to_f %>
|
||||
</td>
|
||||
</tr>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<div class="container-fluid">
|
||||
<div class="container-fluid m-top-100">
|
||||
<div id="loading_wrapper" style="display:none;">
|
||||
<div id="loading"></div>
|
||||
</div>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<div class="container-fluid">
|
||||
<div class="container-fluid m-top-100">
|
||||
<div id="loading_wrapper" style="display:none;">
|
||||
<div id="loading"></div>
|
||||
</div>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<div class="container-fluid">
|
||||
<div class="container-fluid m-top-100">
|
||||
<div id="loading_wrapper" style="display:none;">
|
||||
<div id="loading"></div>
|
||||
</div>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<%= stylesheet_link_tag 'order_reservation', media: 'all', 'data-turbolinks-track': 'reload' %>
|
||||
<%= javascript_include_tag 'order_reservation', 'data-turbolinks-track': 'reload' %>
|
||||
<div class="container-fluid">
|
||||
<div class="container-fluid m-top-100">
|
||||
<!-- start count function -->
|
||||
<%
|
||||
pending_count = 0
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<div class="container-fluid">
|
||||
<div class="container-fluid m-top-100">
|
||||
<div class="row">
|
||||
<!-- Column One -->
|
||||
<div class="col-lg-6 col-md-6 col-sm-6">
|
||||
@@ -202,7 +202,7 @@
|
||||
<%else%>
|
||||
<button type="button" class="btn bg-default btn-block" onclick="window.location.href = '/origami/sale/<%=@sale_data.sale_id%>/<%=@cashier_type%>/payment'"><i class="material-icons">reply</i> Back </button>
|
||||
<%end%>
|
||||
<button id="charge_other" class="btn bg-primary btn-block action-btn">Enter</button>
|
||||
<button id="charge_other" class="btn bg-primary btn-block action-btn" style="height: 35px">Enter</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
5
app/views/origami/others_payments/create.json.jbuilder
Normal file
5
app/views/origami/others_payments/create.json.jbuilder
Normal file
@@ -0,0 +1,5 @@
|
||||
if(@status)
|
||||
json.status @status
|
||||
else
|
||||
json.status false
|
||||
end
|
||||
@@ -19,7 +19,7 @@
|
||||
<div class="row clearfix"></div>
|
||||
<% end %>
|
||||
<div class="col-xs-4 col-sm-4 col-md-4 col-lg-4">
|
||||
<div class="purple others-payment text-center m-l-10 m-b-10 <%= payment_method.payment_method %>" data-type="<%= payment_method.payment_method %>" id="<%= payment_method.payment_method %>" data-url="<%=payment_method.gateway_url%>" data-sale-id="<%= @sale_id%>"><%= payment_method.payment_method %></div>
|
||||
<div class="purple others-payment text-center m-l-10 m-b-10 <%= payment_method.payment_method %>" data-type="<%= payment_method.payment_method.parameterize %>" id="<%= payment_method.payment_method %>" data-url="<%=payment_method.gateway_url%>" data-sale-id="<%= @sale_id%>"><%= payment_method.payment_method %></div>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
@@ -45,7 +45,7 @@
|
||||
payment_type = checkReceiptNoInFirstBillData(receipt_no,"payment");
|
||||
if(payment_type) {
|
||||
$(".others-payment").hide();
|
||||
$(payment_type).each(function(i){
|
||||
$(payment_type).each(function(i){
|
||||
$("."+payment_type[i]).show();
|
||||
});
|
||||
}
|
||||
|
||||
279
app/views/origami/others_payments/new.html.erb
Normal file
279
app/views/origami/others_payments/new.html.erb
Normal file
@@ -0,0 +1,279 @@
|
||||
<div class="container-fluid">
|
||||
<div id="loading_wrapper" style="display:none;">
|
||||
<div id="loading"></div>
|
||||
</div>
|
||||
<!-- <div class="page-header">
|
||||
<ol class="breadcrumb">
|
||||
<li class="breadcrumb-item"><a href="<%=origami_root_path %>"><%= t :home %></a></li>
|
||||
<li class="breadcrumb-item"><a href="/origami/sale/<%=@sale_id %>/payment"><%= t("views.btn.payment") %></a></li>
|
||||
<li class="breadcrumb-item active"><%= t("views.btn.mpu") %></li>
|
||||
<span class="float-right">
|
||||
<%= link_to t('.back',:default => t("views.btn.back")),'/origami/sale/'+@sale_id+'/payment/others_payment'%>
|
||||
</span>
|
||||
</ol>
|
||||
</div> -->
|
||||
<div class="row">
|
||||
<div class="col-lg-5 col-md-5 col-sm-5">
|
||||
<span class="hidden" id="membership_id"><%= @membership_id%></span>
|
||||
<span class="hidden" id="member_discount"><%= @member_discount%></span>
|
||||
<span class="hidden" id="sub-total"><%= @sub_total%></span>
|
||||
<div class="card" style="margin-top:10px;padding:20px;">
|
||||
<div class="card-block">
|
||||
<div class="rebate-form">
|
||||
<% if @bank_integration == '1' %>
|
||||
<div class="row">
|
||||
<div class="form-group col-lg-12 col-md-12 col-sm-12">
|
||||
<label for="com_port_name">Select Device</label>
|
||||
<select id="com_port_name" name="com_port_name" class="form-control select col-lg-7 col-md-7 col-sm-7">
|
||||
|
||||
</select>
|
||||
</div>
|
||||
<hr>
|
||||
</div>
|
||||
<% end %>
|
||||
<div class="row">
|
||||
<div class="form-group col-lg-12 col-md-12 col-sm-12">
|
||||
<label>You can pay up to </label>
|
||||
<%@can_paid = @can_paid + @rounding_adj%>
|
||||
<input type="text" name="validamount" id="validamount" class="form-control col-lg-7 col-md-7 col-sm-7" readonly="" value="<%= @can_paid %>" data-member-value="">
|
||||
</div>
|
||||
<hr>
|
||||
</div>
|
||||
<% if @paid_amount != 0 %>
|
||||
<div class="row">
|
||||
<div class="form-group col-lg-12 col-md-12 col-sm-12">
|
||||
<label><%= "Recent #{@payment_method} paid amount" %></label>
|
||||
<input type="text" name="" id="" class="form-control col-lg-7 col-md-7 col-sm-7" readonly="" value="<%=@paid_amount %>" data-member-value="">
|
||||
</div>
|
||||
<hr>
|
||||
</div>
|
||||
<% end %>
|
||||
<div class="row">
|
||||
<div class="form-group col-lg-12 col-md-12 col-sm-12">
|
||||
<label>Reference Number</label>
|
||||
<input type="text" name="reference_no" id="reference_no" class="form-control col-lg-7 col-md-7 col-sm-7" value="" data-value="<%=@sale_id %>" data-member-value="">
|
||||
<br><span id="reference_no_Err" style="color:red;"></span>
|
||||
</div>
|
||||
<hr>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="form-group col-lg-12 col-md-12 col-sm-12">
|
||||
<label>Amount</label>
|
||||
<div id="amount" class="form-control col-lg-7 col-md-7 col-sm-7">0.0</div>
|
||||
</div>
|
||||
<hr>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-6 col-md-6 col-sm-6" style="margin-top:;">
|
||||
<div class=" m-t-10 p-l-20">
|
||||
<div class="row">
|
||||
<div class="col-lg-6 col-md-6 col-sm-6">
|
||||
<div class="row bottom">
|
||||
<div class="col-md-4 cashier_number border-left" data-value="1" data-type="num">1</div>
|
||||
<div class="col-md-4 cashier_number border-left" data-value="2" data-type="num">2</div>
|
||||
<div class="col-md-4 cashier_number border-left" data-value="3" data-type="num">3</div>
|
||||
</div>
|
||||
<div class="row bottom">
|
||||
<div class="col-md-4 cashier_number border-left" data-value="4" data-type="num">4</div>
|
||||
<div class="col-md-4 cashier_number border-left" data-value="5" data-type="num">5</div>
|
||||
<div class="col-md-4 cashier_number border-left" data-value="6" data-type="num">6</div>
|
||||
</div>
|
||||
<div class="row bottom">
|
||||
<div class="col-md-4 cashier_number border-left" data-value="7" data-type="num">7</div>
|
||||
<div class="col-md-4 cashier_number border-left" data-value="8" data-type="num">8</div>
|
||||
<div class="col-md-4 cashier_number border-left" data-value="9" data-type="num">9</div>
|
||||
</div>
|
||||
<div class="row bottom">
|
||||
<div class="col-md-4 cashier_number border-left" data-value="0" data-type="num">0</div>
|
||||
<div class="col-md-4 cashier_number border-left" data-value="." data-type="num">.</div>
|
||||
<div class="col-md-4 cashier_number border-left" data-value="00" data-type="num">00</div>
|
||||
</div>
|
||||
<div class="row bottom">
|
||||
<div class="col-md-4 cashier_number border-left green" data-type="nett" >Nett</div>
|
||||
<div class="col-md-4 cashier_number red border-left" data-type="del">Del</div>
|
||||
<div class="col-md-4 cashier_number orange border-left" data-type="clr">Clr</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6 col-md-6 col-sm-6">
|
||||
<div class="row bottom m-l-5">
|
||||
<div class="cashier_number long border-left" data-value="1000" data-type="add">1000</div>
|
||||
<div class="cashier_number long left" data-value="3000" data-type="add">3000</div>
|
||||
</div>
|
||||
<div class="row bottom m-l-5">
|
||||
<div class="cashier_number long border-left" data-value="5000" data-type="add">5000</div>
|
||||
<div class="cashier_number long left" data-value="10000" data-type="add">10000</div>
|
||||
</div>
|
||||
<div class="row bottom m-l-5">
|
||||
<div class="pay purple left" id="pay">Pay</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-1 col-lg-1 col-sm-1">
|
||||
<button type="button" class="btn bg-default btn-block" id="back"><i class="material-icons m-t--5">reply</i> Back </button>
|
||||
|
||||
</div>
|
||||
|
||||
<input type="hidden" id="sale_id" value="<%= @sale_id %>">
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
var cashier_type = "<%= @cashier_type %>";
|
||||
$(document).ready(function() {
|
||||
setHeaderBreadCrumb('/ <%= "#{@payment_method} PAYMENT" %>');
|
||||
var sale_id = "<%= @sale_id %>";
|
||||
var bank_integration = "<%= @bank_integration %>";
|
||||
|
||||
if(localStorage.getItem("cash") == null || localStorage.getItem("cash") == 'null'){}
|
||||
else {
|
||||
$('#validamount').attr("value",parseFloat("<%= @can_paid %>") - parseFloat(localStorage.getItem("cash")));
|
||||
}
|
||||
|
||||
if(bank_integration == '1'){
|
||||
if(typeof code2lab != 'undefined'){
|
||||
code2lab.getCommPorts(); //get comportlists from jade
|
||||
}else{
|
||||
swal({
|
||||
title: 'Oops',
|
||||
text: '<%= "#{@payment_method} is not available in here!" %>',
|
||||
type: 'error',
|
||||
html: true,
|
||||
closeOnConfirm: false,
|
||||
closeOnCancel: false,
|
||||
allowOutsideClick: false
|
||||
}, function () {
|
||||
var url_param = "payment";
|
||||
if(location.pathname.includes("credit_payment")){
|
||||
url_param = "credit_payment";
|
||||
}
|
||||
window.location.href = '/origami/sale/'+ sale_id +"/"+cashier_type+ "/"+url_param+"/others_payment";
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$(document).on('click', '.cashier_number', function(event){
|
||||
console.log("click");
|
||||
event.stopPropagation();
|
||||
event.preventDefault();
|
||||
if(event.handled !== true) {
|
||||
var original_value;
|
||||
original_value = $('#amount').text();
|
||||
|
||||
var input_value = $(this).attr("data-value");
|
||||
|
||||
var input_type = $(this).attr("data-type");
|
||||
switch (input_type) {
|
||||
case 'num':
|
||||
if (original_value == "0.0"){
|
||||
$('#amount').text(input_value);
|
||||
}else{
|
||||
$('#amount').append(input_value);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'add':
|
||||
var input_value = $(this).attr("data-value");
|
||||
amount = parseInt(input_value) + parseInt(original_value);
|
||||
$('#amount').html(amount);
|
||||
|
||||
break;
|
||||
case 'clr':
|
||||
$('#amount').html("0.0");
|
||||
break;
|
||||
case 'del' :
|
||||
var cash=$('#amount').text() > 0 ? $('#amount').text() : 0;
|
||||
$('#amount').text((cash > 0 && cash.substr(0,cash.length-1) > 0) ? cash.substr(0,cash.length-1) : 0);
|
||||
break;
|
||||
case 'nett':
|
||||
var remain_amount = $('#validamount').val();
|
||||
$('#amount').text(remain_amount);
|
||||
break;
|
||||
|
||||
}
|
||||
event.handled = true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
$('#pay').on('click',function(){
|
||||
var amount = $('#amount').text();
|
||||
var reference_no = $('#reference_no').val();
|
||||
var sale_id = "<%= @sale_id %>";
|
||||
var receipt_no = "<%= @receipt_no %>";
|
||||
var bank_integration = "<%= @bank_integration %>";
|
||||
var cashier_type = "<%= @cashier_type %>";
|
||||
$("#reference_no_Err").html("");
|
||||
if(parseFloat(amount) <= parseFloat($("#validamount").attr("value")) && amount > 0){
|
||||
$(this).off("click");
|
||||
//start member discount 5% by pay card
|
||||
// var sub_total = $('#sub-total').text();
|
||||
// var member_id = $('#membership_id').text();
|
||||
// var member_discount = $('#member_discount').text();
|
||||
// if (member_id && member_discount) {
|
||||
// $.ajax({
|
||||
// type: "POST",
|
||||
// url: "/origami/" + sale_id + "/member_discount",
|
||||
// data: {'sale_id':sale_id, 'sub_total':sub_total,'is_card':true },
|
||||
// success:function(result){
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
//end member discount
|
||||
if(bank_integration == '1'){
|
||||
pay_withBank("SALE", "<%= @payment_method %>", amount, sale_id, receipt_no,cashier_type);
|
||||
}else{
|
||||
if(location.pathname.includes("credit_payment")){
|
||||
var url = "<%= origami_credit_payment_path(method: @payment_method.parameterize) %>";
|
||||
}else{
|
||||
var url = "<%= origami_payment_path(method: @payment_method.parameterize) %>";
|
||||
}
|
||||
$.ajax({type: "POST",
|
||||
url: url,
|
||||
data: "amount="+ amount + "&sale_id="+ sale_id,
|
||||
success:function(result){
|
||||
if(result){
|
||||
swal({
|
||||
title: "Information!",
|
||||
text: "Payment Successfully",
|
||||
html: true,
|
||||
closeOnConfirm: false,
|
||||
closeOnCancel: false,
|
||||
allowOutsideClick: false
|
||||
}, function () {
|
||||
var url_param = "payment";
|
||||
if(location.pathname.includes("credit_payment")){
|
||||
url_param = "credit_payment";
|
||||
}
|
||||
window.location.href = '/origami/sale/'+ sale_id +"/"+cashier_type+ "/"+url_param;
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}else{
|
||||
if (amount>0) {
|
||||
swal ( "Oops" , "Paid Amount is over!" , "error" );
|
||||
}else{
|
||||
swal ( "Oops" , "Enter Amount!" , "error" );
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$('#back').on('click',function(){
|
||||
var url_param = "payment";
|
||||
if(location.pathname.includes("credit_payment")){
|
||||
url_param = "credit_payment";
|
||||
}
|
||||
window.location.href = '/origami/sale/'+'<%= @sale_id %>'+'/<%= @cashier_type %>/'+url_param;
|
||||
// window.location.href = '/origami/sale/' + sale_id + "/cashier/payment";
|
||||
});
|
||||
</script>
|
||||
@@ -1,4 +1,4 @@
|
||||
<div class="container-fluid">
|
||||
<div class="container-fluid m-top-100">
|
||||
<div id="loading_wrapper" style="display:none;">
|
||||
<div id="loading"></div>
|
||||
</div>
|
||||
@@ -9,24 +9,24 @@
|
||||
<div class="card-header m-l-5 m-r-5">
|
||||
<div id="order-title">
|
||||
<div class="row p-l-5 p-r-5">
|
||||
<div class="col-lg-6 col-md-6 col-sm-6"><strong>Receipt No :</strong> <span id="receipt_no"><%=@sale_data.receipt_no rescue ' '%></span></div>
|
||||
<div class="col-lg-6 col-md-6 col-sm-6 text-left"><strong>Receipt Date :</strong> <span id="receipt_date"><%=@sale_data.receipt_date.utc.getlocal.strftime("%d/%m/%Y-%I:%M %p") rescue '-' %></span></div>
|
||||
<div class="col-lg-6 col-md-6 col-sm-6"><strong>Receipt No :</strong> <span id="receipt_no"><%=@sale.receipt_no rescue ' '%></span></div>
|
||||
<div class="col-lg-6 col-md-6 col-sm-6 text-left"><strong>Receipt Date :</strong> <span id="receipt_date"><%=@sale.receipt_date.utc.getlocal.strftime("%d/%m/%Y-%I:%M %p") rescue '-' %></span></div>
|
||||
</div>
|
||||
<div class="row p-l-5 p-r-5">
|
||||
<div class="col-lg-6 col-md-6 col-sm-6"><strong>Table No :</strong> <%=@table_no%></div>
|
||||
<span class="hidden" id="dining"><%if !@dining.nil?%><%= @dining.id%><%end%></span>
|
||||
<div class="col-lg-6 col-md-6 col-sm-6 text-left"><strong>Sale ID :</strong> <span id="sale_id"><% if @sale_data %><%=@sale_data.sale_id %><% end %></span></div>
|
||||
<div class="col-lg-6 col-md-6 col-sm-6 text-left"><strong>Sale ID :</strong> <span id="sale_id"><% if @sale %><%=@sale.sale_id %><% end %></span></div>
|
||||
</div>
|
||||
|
||||
<div class="row p-l-5 p-r-5">
|
||||
<div class="col-lg-6 col-md-6 col-sm-6">
|
||||
<strong>Customer :</strong>
|
||||
<% if @cashier_type == 'quick_service' || @cashier_type == 'food_court' %>
|
||||
<button type="button" class="btn bg-info waves-effect" id='customer_name'><%= @sale_data.customer.name%></button>
|
||||
<button type="button" class="btn bg-info waves-effect" id='customer_name'><%= @sale.customer.name%></button>
|
||||
<% else %>
|
||||
<span id="customer_name"><%= @sale_data.customer.name%></span>
|
||||
<span id="customer_name"><%= @sale.customer.name%></span>
|
||||
<% end %>
|
||||
<span class="hidden" id="membership_id"><%= @sale_data.customer.membership_id%></span>
|
||||
<span class="hidden" id="membership_id"><%= @sale.customer.membership_id%></span>
|
||||
<span class="hidden" id="member_discount"><%= @member_discount%></span></div>
|
||||
<div class="col-lg-6 col-md-6 col-sm-6 text-left"><strong>Checkin Time : </strong> <%if !@checkin_time.nil?%><%= @checkin_time.utc.getlocal.strftime("%I:%M %p") %>
|
||||
<%end%></div>
|
||||
@@ -57,7 +57,7 @@
|
||||
<% sub_total = 0
|
||||
count = 0
|
||||
%>
|
||||
<% @sale_data.sale_items.each do |sale_item|
|
||||
<% @sale.sale_items.each do |sale_item|
|
||||
count += 1
|
||||
%>
|
||||
|
||||
@@ -82,12 +82,12 @@
|
||||
<td class="item-attr"><strong><span id="sub-total"><%=number_format(sub_total, precision: precision.to_i)%></span></strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<%if @sale_data.discount_type == 'member_discount'%>
|
||||
<%if @sale.discount_type == 'member_discount'%>
|
||||
<td class="charges-name"><strong>Member Discount:</strong></td>
|
||||
<%else%>
|
||||
<td class="charges-name"><strong>(Discount)</strong></td>
|
||||
<%end%>
|
||||
<td class="item-attr"><strong><span>(<%= number_format(@sale_data.total_discount, precision: precision.to_i ) rescue number_format(0, precision: precision.to_i ) %>)</span></strong></td>
|
||||
<td class="item-attr"><strong><span>(<%= number_format(@sale.total_discount, precision: precision.to_i ) rescue number_format(0, precision: precision.to_i ) %>)</span></strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="charges-name">
|
||||
@@ -104,23 +104,23 @@
|
||||
<% else %>
|
||||
No Tax
|
||||
<% end %></strong><br>
|
||||
<%if @sale_payment.nil? && @changable_tax %>
|
||||
<%if @sale_payment && @changable_tax %>
|
||||
<% if @current_user.role == 'cashier' %>
|
||||
<button class="btn btn-link waves-effect bg-info access_modal" data-type = 'change_tax' >Change Tax</button>
|
||||
<button class="btn btn-link waves-effect bg-info access_modal" data-type = 'change_tax' >Change Tax</button>
|
||||
<% else %>
|
||||
<button class="btn btn-link waves-effect bg-info change_tax">Change Tax</button>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</td>
|
||||
<td class="item-attr"><strong><span id="total_tax"><%= number_format(@sale_data.total_tax, precision: precision.to_i ) rescue number_format(0, precision: precision.to_i )%></span></strong></td>
|
||||
<td class="item-attr"><strong><span id="total_tax"><%= number_format(@sale.total_tax, precision: precision.to_i ) rescue number_format(0, precision: precision.to_i )%></span></strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="charges-name"><strong>Rounding Adj:</strong></td>
|
||||
<td class="item-attr"><strong><%= number_format(@sale_data.rounding_adjustment, precision: precision.to_i ) rescue number_format(0, precision: precision.to_i )%></strong></td>
|
||||
<td class="item-attr"><strong><%= number_format(@sale.rounding_adjustment, precision: precision.to_i ) rescue number_format(0, precision: precision.to_i )%></strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="charges-name"><strong>Grand Total</strong></td>
|
||||
<td class="item-attr"><strong><span><%= number_format(@sale_data.grand_total, precision: precision.to_i ) rescue number_format(0, precision: precision.to_i )%></span></strong></td>
|
||||
<td class="item-attr"><strong><span><%= number_format(@sale.grand_total, precision: precision.to_i ) rescue number_format(0, precision: precision.to_i )%></span></strong></td>
|
||||
</tr>
|
||||
<%if @balance > 0%>
|
||||
<tr>
|
||||
@@ -156,22 +156,14 @@
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="row m-l-5 m-r-5">
|
||||
<div class="col-md-8"><strong class='amount_balance'>Amount Due <% if !@sale_payment.nil? %>( Credit )<% end %></strong></div>
|
||||
<div class="col-md-8"><strong class='amount_balance'>Amount Due <% if !@sale_payment %>( Credit )<% end %></strong></div>
|
||||
<div class="col-md-4">
|
||||
<strong>
|
||||
<span id="grand_total" class="hidden">
|
||||
<% if @sale_payment.nil? %>
|
||||
<%= number_format(@sale_data.grand_total, precision: precision.to_i ) rescue number_format(0, precision: precision.to_i)%>
|
||||
<% else %>
|
||||
<%= number_format(@sale_payment[0].payment_amount, precision: precision.to_i ) rescue number_format(0, precision: precision.to_i)%>
|
||||
<% end %>
|
||||
<%= number_format(@amount_due, precision: precision.to_i ) rescue number_format(0, precision: precision.to_i)%>
|
||||
</span>
|
||||
<span id="amount_due">
|
||||
<% if @sale_payment.nil? %>
|
||||
<%= number_format(@sale_data.grand_total, precision: precision.to_i ) rescue number_format(0, precision: precision.to_i ) %>
|
||||
<% else %>
|
||||
<%= number_format(@sale_payment[0].payment_amount, precision: precision.to_i ) rescue number_format(0, precision: precision.to_i)%>
|
||||
<% end %>
|
||||
<%= number_format(@amount_due, precision: precision.to_i ) rescue number_format(0, precision: precision.to_i)%>
|
||||
</span>
|
||||
</strong>
|
||||
</div>
|
||||
@@ -183,7 +175,7 @@
|
||||
<%= number_format(@cash, precision: precision.to_i ) rescue number_format(0, precision: precision.to_i ) %>
|
||||
</div>
|
||||
</div>
|
||||
<% if @sale_payment.nil? && @cashier_type != "food_court" %>
|
||||
<% if @sale_payment && @cashier_type != "food_court" %>
|
||||
<div class="row payment credit-color p-l-5 p-r-5" id="credit_payment" >
|
||||
<div class="col-md-8">Credit</div>
|
||||
<div class="col-md-4" id="credit"><%= number_format(@credit, precision: precision.to_i ) rescue number_format(0, precision: precision.to_i ) %></div>
|
||||
@@ -191,155 +183,25 @@
|
||||
<% else %>
|
||||
<div class="col-md-4 hidden" id="credit">0</div>
|
||||
<% end %>
|
||||
<% if @kbz_pay_amount > 0.0 %>
|
||||
<div class="row payment other-payment-color" id="card_payment" >
|
||||
<div class="col-md-8">Other Payments (KBZ Pay)</div>
|
||||
<div class="col-md-4" id="others">
|
||||
<%= number_format(@kbz_pay_amount, precision: precision.to_i) rescue number_format(0, precision: precision.to_i) %>
|
||||
<div class="row payment other-payment-color p-l-5 p-r-5" id="card_payment" >
|
||||
<div class="col-md-8">Other Payments</div>
|
||||
<div class="col-md-4" id="other_payment_amount">
|
||||
<%= number_format(@other_payment, precision: precision.to_i) rescue number_format(0, precision: precision.to_i) %>
|
||||
</div>
|
||||
</div>
|
||||
<% elsif @other == 0.0 && @ppamount == 0.0 && @visacount == 0.0 && @jcbcount == 0.0 && @mastercount == 0.0 && @unionpaycount == 0.0 && @alipaycount == 0.0 && @paymalcount == 0.0 && @junctionpaycount == 0.0 && @dingacount == 0.0 && @giftvouchercount == 0.0 %>
|
||||
<div class="row payment other-payment-color" id="card_payment" >
|
||||
<div class="col-md-8">Other Payments</div>
|
||||
<div class="col-md-4" id="others">
|
||||
<%= number_format(@other, precision: precision.to_i) rescue number_format(0, precision: precision.to_i) %>
|
||||
</div>
|
||||
</div>
|
||||
<% else %>
|
||||
<div class="row payment other-payment-color" id="card_payment" >
|
||||
<div class="col-md-8">Other Payments</div>
|
||||
<div class="col-md-4" id="other_payment_amount">
|
||||
<%= number_format(@other_payment, precision: precision.to_i) rescue number_format(0, precision: precision.to_i) %>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
<div class="card-block">
|
||||
<div class="card-title m-l-5 m-r-5">
|
||||
<!-- mpu -->
|
||||
<div class="row <%= @other!=0.0 ? 'payment others-color' : 'hidden' %>">
|
||||
<div class="col-md-5"></div>
|
||||
<div class="col-md-3">MPU</div>
|
||||
<% if @other != 0.0 %>
|
||||
<div class="col-md-4 mpu is_card" id="others"><%= number_format(@other, precision: precision.to_i ) rescue number_format(0, precision: precision.to_i ) %></div>
|
||||
<% else %>
|
||||
<div class="col-md-4" id="others"><%= number_format(0, precision: precision.to_i ) %></div>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<!-- paypar -->
|
||||
<div class="row <%= @ppamount!=0.0 ? 'payment others-color' : 'hidden' %>">
|
||||
<div class="col-md-5"></div>
|
||||
<div class="col-md-3">Redeem</div>
|
||||
<% if @ppamount != 0.0 %>
|
||||
<div class="col-md-4" id="ppamount"><%= number_format(@ppamount, precision: precision.to_i ) rescue number_format(0, precision: precision.to_i ) %></div>
|
||||
<% else %>
|
||||
<div class="col-md-4" id="ppamount"><%= number_format(0, precision: precision.to_i ) %></div>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<!-- Visa -->
|
||||
<div class="row <%= @visacount!=0.0 ? 'payment others-color' : 'hidden' %>">
|
||||
<div class="col-md-5"></div>
|
||||
<div class="col-md-3">VISA</div>
|
||||
<% if @visacount != 0.0 %>
|
||||
<div class="col-md-4 visa is_card" id="visacount"><%= number_format(@visacount, precision: precision.to_i ) rescue number_format(0, precision: precision.to_i ) %></div>
|
||||
<% else %>
|
||||
<div class="col-md-4" id="visacount"><%= number_format(0, precision: precision.to_i ) %></div>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<!-- JCB -->
|
||||
<div class="row <%= @jcbcount!=0.0 ? 'payment others-color' : 'hidden' %>">
|
||||
<div class="col-md-5"></div>
|
||||
<div class="col-md-3">JCB</div>
|
||||
<% if @jcbcount != 0.0 %>
|
||||
<div class="col-md-4 jcb is_card" id="jcbcount"><%= number_format(@jcbcount, precision: precision.to_i ) rescue number_format(0, precision: precision.to_i ) %></div>
|
||||
<% else %>
|
||||
<div class="col-md-4" id="jcbcount"><%= number_format(0, precision: precision.to_i ) %></div>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<!-- Master -->
|
||||
<div class="row <%= @mastercount!=0.0 ? 'payment others-color' : 'hidden' %>">
|
||||
<div class="col-md-5"></div>
|
||||
<div class="col-md-3">MASTER</div>
|
||||
<% if @mastercount != 0.0 %>
|
||||
<div class="col-md-4 master is_card" id="mastercount"><%= number_format(@mastercount, precision: precision.to_i) rescue number_format(0, precision: precision.to_i ) %></div>
|
||||
<% else %>
|
||||
<div class="col-md-4" id="mastercount"><%= number_format(0, precision: precision.to_i ) %></div>
|
||||
<% end %>
|
||||
</div>
|
||||
<!-- <br> -->
|
||||
|
||||
<!-- UNIONPAY -->
|
||||
<div class="row <%= @unionpaycount!=0.0 ? 'payment others-color' : 'hidden' %>">
|
||||
<div class="col-md-5"></div>
|
||||
<div class="col-md-3">UNIONPAY</div>
|
||||
<% if @unionpaycount != 0.0 %>
|
||||
<div class="col-md-4 master is_card" id="unionpaycount"><%= number_format(@unionpaycount, precision: precision.to_i ) rescue number_format(0, precision: precision.to_i ) %></div>
|
||||
<% else %>
|
||||
<div class="col-md-4" id="unionpaycount"><%= number_format(0, precision: precision.to_i ) %></div>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<!-- Alipay -->
|
||||
<div class="row <%= @alipaycount!=0.0 ? 'payment others-color' : 'hidden' %>">
|
||||
<div class="col-md-5"></div>
|
||||
<div class="col-md-3">Alipay</div>
|
||||
<% if @alipaycount != 0.0 %>
|
||||
<div class="col-md-4 alipay is_card" id="alipaycount"><%= number_format(@alipaycount, precision: precision.to_i ) rescue number_format(0, precision: precision.to_i ) %></div>
|
||||
<% else %>
|
||||
<div class="col-md-4" id="alipaycount"><%= number_format(0, precision: precision.to_i ) %></div>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<!-- PAYMAL -->
|
||||
<div class="row <%= @paymalcount!=0.0 ? 'payment others-color' : 'hidden'%>">
|
||||
<div class="col-md-5"></div>
|
||||
<div class="col-md-3">PAYMAL</div>
|
||||
<% if @paymalcount != 0.0 %>
|
||||
<div class="col-md-4 master is_card" id="paymalcount"><%= number_format(@paymalcount, precision: precision.to_i ) rescue number_format(0, precision: precision.to_i ) %></div>
|
||||
<% else %>
|
||||
<div class="col-md-4" id="paymalcount"><%= number_format(0, precision: precision.to_i ) %></div>
|
||||
<% end %>
|
||||
</div>
|
||||
<!-- DINGA -->
|
||||
<div class="row <%= @dingacount!=0.0 ? 'payment others-color' : 'hidden'%>">
|
||||
<div class="col-md-5"></div>
|
||||
<div class="col-md-3">DINGA</div>
|
||||
<% if @dingacount != 0.0 %>
|
||||
<div class="col-md-4 master is_card" id="dingacount"><%= number_format(@dingacount, precision: precision.to_i ) rescue number_format(0, precision: precision.to_i ) %></div>
|
||||
<% else %>
|
||||
<div class="col-md-4" id="dingacount"><%= number_format(0, precision: precision.to_i ) %></div>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<!-- Junction Pay -->
|
||||
<div class="row <%= @junctionpaycount!=0.0 ? 'payment others-color' : 'hidden'%>">
|
||||
<div class="col-md-5"></div>
|
||||
<div class="col-md-3">JUNCTION PAY</div>
|
||||
<% if @junctionpaycount != 0.0 %>
|
||||
<div class="col-md-4 master is_card" id="junctionpaycount"><%= number_format(@junctionpaycount, precision: precision.to_i ) rescue number_format(0, precision: precision.to_i ) %></div>
|
||||
<% else %>
|
||||
<div class="col-md-4" id="junctionpaycount"><%= number_format(0, precision: precision.to_i ) %></div>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<!-- Gift Voucher -->
|
||||
<div class="row <%= @giftvouchercount!=0.0 ? 'payment others-color' : 'hidden'%>">
|
||||
<div class="col-md-5"></div>
|
||||
<div class="col-md-3">GIFT VOUCHER</div>
|
||||
<% if @giftvouchercount != 0.0 %>
|
||||
<div class="col-md-4 master is_card" id="giftvouchercount"><%= number_format(@giftvouchercount, precision: precision.to_i ) rescue number_format(0, precision: precision.to_i ) %></div>
|
||||
<% else %>
|
||||
<div class="col-md-4" id="giftvouchercount"><%= number_format(0, precision: precision.to_i ) %></div>
|
||||
<% end %>
|
||||
<div class="card-title">
|
||||
<% @other_payments.each do |payment| %>
|
||||
<div class="row payment others-color p-l-5 p-r-5">
|
||||
<div class="col-md-8"><%= payment[0] %></div>
|
||||
<div class="col-md-4 <%= payment[0].parameterize %> is_card"><%= number_format(payment[1], precision: precision.to_i ) rescue number_format(0, precision: precision.to_i ) %></div>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<div class="row m-l-5 m-r-5">
|
||||
<div class="col-md-8"><strong class='amount_balance'>Balance</strong></div>
|
||||
<div class="col-md-4"><strong><span id='balance'><%= number_format(@sale_data.grand_total, precision: precision.to_i ) rescue number_format(0, precision: precision.to_i ) %></span></strong></div>
|
||||
<div class="col-md-4"><strong><span id='balance'><%= number_format(@sale.grand_total, precision: precision.to_i ) rescue number_format(0, precision: precision.to_i ) %></span></strong></div>
|
||||
</div>
|
||||
<!-- <br> -->
|
||||
</div>
|
||||
@@ -404,30 +266,30 @@
|
||||
</button>
|
||||
<!-- -->
|
||||
<% if current_login_employee.role == "cashier" %>
|
||||
<% if @other_payment <= 0 && @sale_payment.nil? %>
|
||||
<%if @sale_data.total_discount == 0 %>
|
||||
<% if @other_payment <= 0 && @sale_payment %>
|
||||
<%if @sale.total_discount == 0 %>
|
||||
<a class="btn btn-block bg-deep-purple waves-effect access_modal" data-toggle="modal" data-type="foc"> FOC</a>
|
||||
<% end %>
|
||||
<%end %>
|
||||
<% if @sale_payment.nil? %>
|
||||
<% if @sale_payment %>
|
||||
<a class="btn btn-block bg-red waves-effect access_modal" data-toggle="modal" data-type="void"> Void</a>
|
||||
<% if @other_payment <= 0 %>
|
||||
<%if @sale_data.total_discount == 0 %>
|
||||
<%if @sale.total_discount == 0 %>
|
||||
<a class="btn btn-block bg-deep-purple waves-effect access_modal" data-toggle="modal" data-type="waste"> Waste</a>
|
||||
<a class="btn btn-block bg-deep-purple waves-effect access_modal" data-toggle="modal" data-type="spoile"> Spoile</a>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<% if @other_payment <= 0 && @sale_payment.nil?%>
|
||||
<%if @sale_data.total_discount == 0 %>
|
||||
<% if @other_payment <= 0 && @sale_payment%>
|
||||
<%if @sale.total_discount == 0 %>
|
||||
<button type="button" class="btn bg-deep-purple btn-block" data-toggle="modal" data-target="#focModal" <%= (can? :foc, :payment)? ' ': 'disabled=' %> active="true"> FOC </button>
|
||||
<%end %>
|
||||
<%end %>
|
||||
<% if @sale_payment.nil? %>
|
||||
<% if @sale_payment %>
|
||||
<button type="button" class="btn bg-red btn-block" data-toggle="modal" data-target="#voidModal" <%= (can? :overall_void, :void)? ' ': 'disabled=' %> > Void </button>
|
||||
<% if @other_payment <= 0 %>
|
||||
<%if @sale_data.total_discount == 0 %>
|
||||
<%if @sale.total_discount == 0 %>
|
||||
<button type="button" class="btn btn-block bg-deep-purple waves-effect " data-status="waste" value="waste" id="btn_waste" onclick="waste_and_spoilage('waste')">Waste</button>
|
||||
<button type="button" class="btn btn-block bg-deep-purple waves-effect " data-status="spoile" value="spoile" id="btn_spoile" onclick="waste_and_spoilage('spoile')">Spoile</button>
|
||||
<% end %>
|
||||
@@ -435,7 +297,7 @@
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
||||
<% if (@cashier_type=="quick_service" || @cashier_type=="food_court") && @sale_payment.nil? %>
|
||||
<% if (@cashier_type=="quick_service" || @cashier_type=="food_court") && @sale_payment %>
|
||||
<hr>
|
||||
|
||||
<button type="button" id="survey" class="btn btn-block bg-blue waves-effect"><%= t("views.right_panel.detail.survey") %></button>
|
||||
@@ -709,10 +571,14 @@ var customer_id = "<%= @customer.id %>";
|
||||
var customer_name = "<%= @customer.name %>";
|
||||
var pdf_view = '<%=@pdf_view%>';
|
||||
var trans_flag = <%= @trans_flag %>;
|
||||
var paymalcount = <%= @paymalcount %>;
|
||||
var other_payments = <%= raw @other_payments %>;
|
||||
var payment_methods = <%= raw @payment_methods %>;
|
||||
|
||||
// console.log(pdf_view)
|
||||
$(document).ready(function(){
|
||||
$("#sxModal").hide();
|
||||
|
||||
var paymalcount = other_payments.some(x => x[0] == 'paymal') ? other_payments.find(x => x[0] == 'paymal')[1] : 0.0;
|
||||
if(cashier_type == "food_court" && paymalcount == 0.0){
|
||||
$("#is_paymemberModal").modal({show : true, backdrop : false, keyboard : false});
|
||||
}
|
||||
@@ -726,45 +592,35 @@ $(document).ready(function(){
|
||||
}
|
||||
/* replace url type*/
|
||||
/* start check first bill or not*/
|
||||
var member_id = $('#membership_id').text();
|
||||
var member_discount = $('#member_discount').text();
|
||||
var receipt_no = "";
|
||||
if(($("#receipt_no").html()!=undefined) && ($("#receipt_no").html()!="")){
|
||||
receipt_no = ($("#receipt_no").html()).trim();
|
||||
}
|
||||
var member_id = $('#membership_id').text();
|
||||
var member_discount = $('#member_discount').text();
|
||||
var receipt_no = "";
|
||||
if(($("#receipt_no").html()!=undefined) && ($("#receipt_no").html()!="")){
|
||||
receipt_no = ($("#receipt_no").html()).trim();
|
||||
}
|
||||
|
||||
payment_type = '';
|
||||
// if ($("#server_mode").val() != "cloud") { // first bill not used in cloud
|
||||
payment_type = checkReceiptNoInFirstBillData(receipt_no,"payment")
|
||||
|
||||
// if ($("#server_mode").val() != "cloud") { // first bill not used in cloud
|
||||
payment_type = checkReceiptNoInFirstBillData(receipt_no,"payment");
|
||||
// console.log(payment_type)
|
||||
// console.log(parseInt(jQuery.inArray("MPU", payment_type)))
|
||||
if (member_id && member_discount) {
|
||||
if(parseInt(jQuery.inArray("Credit", payment_type)) == -1){
|
||||
$("#credit_payment").hide();
|
||||
} else{
|
||||
$("#credit_payment").show();
|
||||
}
|
||||
if(parseInt(jQuery.inArray("MPU", payment_type)) != -1 ||
|
||||
parseInt(jQuery.inArray("VISA", payment_type)) != -1 ||
|
||||
parseInt(jQuery.inArray("JCB", payment_type)) != -1 ||
|
||||
parseInt(jQuery.inArray("Master", payment_type)) != -1 ||
|
||||
parseInt(jQuery.inArray("UNIONPAY", payment_type)) != -1 ||
|
||||
parseInt(jQuery.inArray("Redeem", payment_type)) != -1 ||
|
||||
parseInt(jQuery.inArray("PAYMAL", payment_type)) != -1 ||
|
||||
parseInt(jQuery.inArray("JUNCTIONPAY", payment_type)) != -1 ||
|
||||
parseInt(jQuery.inArray("Alipay", payment_type)) != -1 ||
|
||||
parseInt(jQuery.inArray("DINGA", payment_type)) != -1 ||
|
||||
parseInt(jQuery.inArray("GiftVoucher", payment_type)) != -1){
|
||||
$("#card_payment").show();
|
||||
} else{
|
||||
$("#card_payment").hide();
|
||||
}
|
||||
}
|
||||
// }
|
||||
/* end check first bill or not*/
|
||||
console.log(payment_type)
|
||||
// console.log(parseInt(jQuery.inArray("MPU", payment_type)))
|
||||
if (member_id && member_discount) {
|
||||
if(parseInt(jQuery.inArray("Credit", payment_type)) == -1){
|
||||
$("#credit_payment").hide();
|
||||
} else{
|
||||
$("#credit_payment").show();
|
||||
}
|
||||
|
||||
var dining_id = "<%= @sale_data.bookings[0].dining_facility_id %>";
|
||||
if(payment_type && payment_methods.some(x => payment_type.indexOf(x) >= 0)){
|
||||
$("#card_payment").show();
|
||||
} else{
|
||||
$("#card_payment").hide();
|
||||
}
|
||||
}
|
||||
// }
|
||||
/* end check first bill or not*/
|
||||
|
||||
var dining_id = "<%= @sale.bookings[0].dining_facility_id %>";
|
||||
|
||||
$("#back").on('click', function() {
|
||||
localStorage.removeItem('cash');
|
||||
@@ -787,12 +643,10 @@ $(document).ready(function(){
|
||||
window.location.reload();
|
||||
})
|
||||
|
||||
if(localStorage.getItem("cash") == null || localStorage.getItem("cash") == 'null'){
|
||||
|
||||
}
|
||||
else {
|
||||
if (localStorage.getItem("cash") && localStorage.getItem("cash") != 'null') {
|
||||
$('#cash').text(localStorage.getItem("cash"));
|
||||
}
|
||||
|
||||
update_balance();
|
||||
//checkChangableTax
|
||||
checkChangableTax();
|
||||
@@ -826,126 +680,96 @@ $(document).ready(function(){
|
||||
$('#pay').click(function() {
|
||||
sub_total = $('#sub-total').text();
|
||||
member = $('#membership_id').text();
|
||||
// console.log(member)
|
||||
if (parseInt(jQuery.inArray("MPU", payment_type)) != -1 && $('.mpu').text() == 0 && sub_total != 0.0 && member) {
|
||||
swal("Oops","Please Pay with MPU Payment","warning");
|
||||
}else if(parseInt(jQuery.inArray("Redeem", payment_type)) != -1 && $('#ppamount').text()==0 && sub_total != 0.0 && member){
|
||||
swal("Oops","Please Pay with Redeem Payment","warning");
|
||||
}else if(parseInt(jQuery.inArray("VISA", payment_type)) != -1 && $('#visacount').text()== 0 && sub_total != 0.0 && member){
|
||||
swal("Oops","Please Pay with Visa Payment","warning");
|
||||
|
||||
}else if(parseInt(jQuery.inArray("JCB", payment_type)) != -1 && $('#jcbcount').text()== 0 && sub_total != 0.0 && member){
|
||||
swal("Oops","Please Pay with jcb Payment","warning");
|
||||
}
|
||||
else if(parseInt(jQuery.inArray("Master", payment_type)) != -1 && $('#mastercount').text()== 0 && sub_total != 0.0 && member){
|
||||
swal("Oops","Please Pay with Master Payment","warning");
|
||||
}
|
||||
else if(payment_type == "UNIONPAY" && $('#unionpaycount').text()== 0 && sub_total != 0.0 && member){
|
||||
swal("Oops","Please Pay with UNIONPAY Payment","warning");
|
||||
}
|
||||
else if(parseInt(jQuery.inArray("Alipay", payment_type)) != -1 && $('#alipaycount').text()== 0 && sub_total != 0.0 && member){
|
||||
swal("Oops","Please Pay with Alipay Payment","warning");
|
||||
}
|
||||
else if(parseInt(jQuery.inArray("JUNCTIONPAY", payment_type)) != -1 && $('#junctionpaycount').text()==0 && sub_total != 0.0 && member){
|
||||
swal("Oops","Please Pay with JUNCTIONPAY Payment","warning");
|
||||
}
|
||||
else if(payment_type == "Credit" && $('#credit').text()==0 && sub_total != 0.0 && member){
|
||||
swal("Oops","Please Pay with Credit Payment","warning");
|
||||
}else if(parseInt(jQuery.inArray("PAYMAL", payment_type)) != -1 && $('#paymalcount').text()== 0 && sub_total != 0.0 && member){
|
||||
swal("Oops","Please Pay with Paymal Payment","warning");
|
||||
}else if(parseInt(jQuery.inArray("DINGA", payment_type)) != -1 && $('#dingacount').text()== 0 && sub_total != 0.0 && member){
|
||||
swal("Oops","Please Pay with Dinga Payment","warning");
|
||||
}else if(parseInt(jQuery.inArray("GiftVoucher", payment_type)) != -1 && $('#giftvouchercount').text()== 0 && sub_total != 0.0 && member){
|
||||
swal("Oops","Please Pay with Gift Voucher","warning");
|
||||
if (payment_type && !other_payments.some(x => payment_type.indexOf(x[0]) >= 0 && x[1] > 0 ) && sub_total != 0.0 && member) {
|
||||
swal("Oops","Please Pay with " + payment_methods.find(x => payment_type.indexOf(x) >= 0) + " Payment","warning");
|
||||
} else {
|
||||
$( "#loading_wrapper").show();
|
||||
if($('#balance').text() > 0){
|
||||
swal ( "Oops", "Insufficient Amount!" , "error" );
|
||||
$("#loading_wrapper").hide();
|
||||
}else{
|
||||
$(this).off("click");
|
||||
var sale_id = $('#sale_id').text();
|
||||
// var item_row = $('.is_card');
|
||||
|
||||
$( "#loading_wrapper").show();
|
||||
if($('#balance').text() > 0){
|
||||
swal ( "Oops", "Insufficient Amount!" , "error" );
|
||||
$("#loading_wrapper").hide();
|
||||
}else{
|
||||
$(this).off("click");
|
||||
var sale_id = $('#sale_id').text();
|
||||
// var item_row = $('.is_card');
|
||||
// payment
|
||||
var cash = $('#cash').text();
|
||||
var credit = $('#credit').text();
|
||||
var card = $('#card').text();
|
||||
var kbz_amt = "<%= @kbz_pay_amount %>";
|
||||
var is_kbz = false;
|
||||
if (kbz_amt > 0) {
|
||||
is_kbz = true
|
||||
}
|
||||
|
||||
// payment
|
||||
var cash = $('#cash').text();
|
||||
var credit = $('#credit').text();
|
||||
var card = $('#card').text();
|
||||
var kbz_amt = "<%= @kbz_pay_amount %>";
|
||||
var is_kbz = false;
|
||||
if (kbz_amt > 0) {
|
||||
is_kbz = true
|
||||
}
|
||||
var tax_type = localStorage.getItem("tax_type") ? localStorage.getItem("tax_type") : 'all';
|
||||
if (credit <= 0 && (!location.pathname.includes("credit_payment"))) {
|
||||
calculate_member_discount(sale_id,tax_type);
|
||||
}
|
||||
|
||||
var tax_type = localStorage.getItem("tax_type") ? localStorage.getItem("tax_type") : 'all';
|
||||
if (credit <= 0 && (!location.pathname.includes("credit_payment"))) {
|
||||
calculate_member_discount(sale_id,tax_type);
|
||||
}
|
||||
// $("#pdfModal").on('shown.bs.modal', function () {
|
||||
// $('#pdfModal').focus() }).modal({show : true, backdrop : false, keyboard : false});
|
||||
/* check credit payment or not*/
|
||||
if(location.pathname.includes("credit_payment")){
|
||||
var url = "<%= origami_credit_payment_cash_path %>";
|
||||
}else{
|
||||
var url = "<%= origami_payment_cash_path %>";
|
||||
}
|
||||
|
||||
// $("#pdfModal").on('shown.bs.modal', function () {
|
||||
// $('#pdfModal').focus() }).modal({show : true, backdrop : false, keyboard : false});
|
||||
/* check credit payment or not*/
|
||||
if(location.pathname.includes("credit_payment")){
|
||||
var url = "<%= origami_credit_payment_cash_path %>";
|
||||
}else{
|
||||
var url = "<%= origami_payment_cash_path %>";
|
||||
}
|
||||
$.ajax({type: "POST",
|
||||
url: url,
|
||||
data: "cash="+ cash + "&sale_id=" + sale_id + "&type=" + cashier_type + "&tax_type=" + tax_type + "&is_kbz=" + is_kbz,
|
||||
success:function(result){
|
||||
/* start delete receipt no in first bill*/
|
||||
if(($("#receipt_no").html()!=undefined) && ($("#receipt_no").html()!="")){
|
||||
var receipt_no = ($("#receipt_no").html()).trim();
|
||||
deleteReceiptNoInFirstBillData(receipt_no);
|
||||
}
|
||||
/* end delete receipt no in first bill*/
|
||||
|
||||
$.ajax({type: "POST",
|
||||
url: url,
|
||||
data: "cash="+ cash + "&sale_id=" + sale_id + "&type=" + cashier_type + "&tax_type=" + tax_type + "&is_kbz=" + is_kbz,
|
||||
success:function(result){
|
||||
/* start delete receipt no in first bill*/
|
||||
if(($("#receipt_no").html()!=undefined) && ($("#receipt_no").html()!="")){
|
||||
var receipt_no = ($("#receipt_no").html()).trim();
|
||||
deleteReceiptNoInFirstBillData(receipt_no);
|
||||
}
|
||||
/* end delete receipt no in first bill*/
|
||||
localStorage.removeItem("cash");
|
||||
if (result.status) {
|
||||
var msg = result.message;
|
||||
}
|
||||
else{
|
||||
var msg = '';
|
||||
}
|
||||
|
||||
localStorage.removeItem("cash");
|
||||
if (result.status) {
|
||||
var msg = result.message;
|
||||
}
|
||||
else{
|
||||
var msg = '';
|
||||
$("#loading_wrapper" ).hide();
|
||||
if(location.pathname.includes("credit_payment")){
|
||||
payment_success_alert();
|
||||
}else{
|
||||
//PDF lightbox data
|
||||
var pdfPath = "/en/pdfjs/minimal?file=" + result.filename.substring(6);
|
||||
$("#sale_receipt_no").val(result.receipt_no);
|
||||
$("#filename").val(result.filename);
|
||||
$("#printer_name").val(result.printer_name);
|
||||
$("#receipt_pdf").attr("src", pdfPath);
|
||||
$("#changed_amount").text("");
|
||||
if($('#balance').text() < 0){
|
||||
<% if precision.to_i > 0 %>
|
||||
$("#changed_amount").text('Changed amount ' + parseFloat($('#balance').text() * (-1)).toFixed(<%= precision %>));
|
||||
<% else %>
|
||||
$("#changed_amount").text('Changed amount ' + parseFloat($('#balance').text() * (-1)));
|
||||
<% end %>
|
||||
}
|
||||
|
||||
$("#loading_wrapper" ).hide();
|
||||
if(location.pathname.includes("credit_payment")){
|
||||
payment_success_alert();
|
||||
if (pdf_view == 1) {
|
||||
$("#pdfModal").modal({show : true, backdrop : false, keyboard : false});
|
||||
$("#pdfModalLabel").text("Sale Completed");
|
||||
}else{
|
||||
//PDF lightbox data
|
||||
var pdfPath = "/en/pdfjs/minimal?file=" + result.filename.substring(6);
|
||||
$("#sale_receipt_no").val(result.receipt_no);
|
||||
$("#filename").val(result.filename);
|
||||
$("#printer_name").val(result.printer_name);
|
||||
$("#receipt_pdf").attr("src", pdfPath);
|
||||
$("#changed_amount").text("");
|
||||
if($('#balance').text() < 0){
|
||||
<% if precision.to_i > 0 %>
|
||||
$("#changed_amount").text('Changed amount ' + parseFloat($('#balance').text() * (-1)).toFixed(<%= precision %>));
|
||||
<% else %>
|
||||
$("#changed_amount").text('Changed amount ' + parseFloat($('#balance').text() * (-1)));
|
||||
<% end %>
|
||||
}
|
||||
|
||||
if (pdf_view == 1) {
|
||||
$("#pdfModal").modal({show : true, backdrop : false, keyboard : false});
|
||||
$("#pdfModalLabel").text("Sale Completed");
|
||||
}else{
|
||||
//PDF lightbox data
|
||||
print_receipt();
|
||||
}
|
||||
print_receipt();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
var second_display_lookup = $("#display_type").val();
|
||||
if ($('#server_mode').val() != "cloud" && second_display_lookup == 2){
|
||||
customer_display_view(null,"reload");
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
var second_display_lookup = $("#display_type").val();
|
||||
if ($('#server_mode').val() != "cloud" && second_display_lookup == 2){
|
||||
customer_display_view(null,"reload");
|
||||
}
|
||||
});
|
||||
|
||||
function customer_display_view(data,status) {
|
||||
@@ -1098,18 +922,8 @@ $(document).ready(function(){
|
||||
break;
|
||||
case 'nett':
|
||||
var credit1 = $('#credit').text();
|
||||
var card1 = $('#others').text();
|
||||
var paypar1 = $('#ppamount').text();
|
||||
var visa1 = $('#visacount').text();
|
||||
var jcb1 = $('#jcbcount').text();
|
||||
var master1 = $('#mastercount').text();
|
||||
var unionpay1 = $('#unionpaycount').text();
|
||||
var paymal1 = $('#paymalcount').text();
|
||||
var alipay1 = $('#alipaycount').text();
|
||||
var junctionpay1 = $('#junctionpaycount').text();
|
||||
var dingapay1 = $('#dingacount').text();
|
||||
var giftvoucherpay1 = $('#giftvouchercount').text();
|
||||
var othertotal = parseFloat(credit1) + parseFloat(card1) + parseFloat(paypar1) + parseFloat(visa1) + parseFloat(jcb1) + parseFloat(master1) + parseFloat(unionpay1) + parseFloat(alipay1) + parseFloat(junctionpay1) + parseFloat(paymal1) + parseFloat(dingapay1) + parseFloat(giftvoucherpay1);
|
||||
var others = other_payments.map(x => x[1]).reduce((acc, v) => acc + v, 0);
|
||||
var othertotal = parseFloat(credit1) + parseFloat(others);
|
||||
var total = $('#amount_due').text();
|
||||
var amt = 0;
|
||||
<% if precision.to_i > 0 %>;
|
||||
@@ -1131,19 +945,10 @@ $(document).ready(function(){
|
||||
function update_balance(){
|
||||
var cash = $('#cash').text();
|
||||
var credit = $('#credit').text();
|
||||
var card = $('#others').text();
|
||||
var paypar = $('#ppamount').text();
|
||||
var visa = $('#visacount').text();
|
||||
var jcb = $('#jcbcount').text();
|
||||
var master = $('#mastercount').text();
|
||||
var unionpay = $('#unionpaycount').text();
|
||||
var paymal = $('#paymalcount').text();
|
||||
var alipay = $('#alipaycount').text();
|
||||
var junctionpay = $('#junctionpaycount').text();
|
||||
var dinga = $('#dingacount').text();
|
||||
var giftvoucher = $('#giftvouchercount').text();
|
||||
var others = other_payments.map(x => x[1]).reduce((acc, v) => acc + v, 0);
|
||||
|
||||
var amount_due = $('#amount_due').text();
|
||||
var total = parseFloat(cash) + parseFloat(credit) + parseFloat(card) + parseFloat(paypar) + parseFloat(visa) + parseFloat(jcb) + parseFloat(master) + parseFloat(unionpay) + parseFloat(alipay) + parseFloat(junctionpay) + parseFloat(paymal) + parseFloat(dinga) + parseFloat(giftvoucher);
|
||||
var total = parseFloat(cash) + parseFloat(credit) + parseFloat(others);
|
||||
|
||||
var result = parseFloat(amount_due) - parseFloat(total);
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<div class="container-fluid">
|
||||
<div class="container-fluid m-top-100">
|
||||
<div class="row clearfix">
|
||||
<!-- Column One -->
|
||||
<div class="col-lg-10 col-md-10 col-sm-10">
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<div class="container-fluid">
|
||||
<div class="container-fluid m-top-100">
|
||||
<div class="row">
|
||||
<!-- Column One -->
|
||||
<div class="col-lg-5 col-md-5 col-sm-5">
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<div class="container-fluid">
|
||||
<div class="container-fluid m-top-100">
|
||||
<div id="loading_wrapper" style="display:none;">
|
||||
<div id="loading"></div>
|
||||
</div>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<div class="container-fluid">
|
||||
<div class="container-fluid m-top-100">
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-sm-12 col-md-7 col-lg-7">
|
||||
<div class="card">
|
||||
|
||||
82
app/views/renew_license/expire.html.erb
Normal file
82
app/views/renew_license/expire.html.erb
Normal file
@@ -0,0 +1,82 @@
|
||||
<% renewable_date = current_license.read_license("renewable_date") %>
|
||||
<% date_count = (renewable_date.to_date - Date.today).to_i %>
|
||||
<% day = pluralize( date_count, 'day' )%>
|
||||
|
||||
<% if @license_status == 0
|
||||
text = 'Your license has been expired.'
|
||||
elsif @license_status == 2
|
||||
text = "Your license will expire in #{day}."
|
||||
end
|
||||
%>
|
||||
<style>
|
||||
.centered {
|
||||
position: fixed;
|
||||
/*width: 850px;*/
|
||||
|
||||
padding: 10px;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
-webkit-transform: translate(-50%, -50%);
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
||||
</style>
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-sm-2"></div>
|
||||
<div class="card col-sm-8 centered">
|
||||
<div class="card-block">
|
||||
<h3 class="pt-2 d-inline">Review Your License</h3>
|
||||
<%= link_to origami_dashboard_url do %>
|
||||
<img src="/image/logo.png" style="margin-left: 25pc; width: 150px">
|
||||
<% end %>
|
||||
<% if params[:message].present?
|
||||
if params[:status].to_i == 1
|
||||
color = 'text-success'
|
||||
else
|
||||
color = 'text-danger'
|
||||
end
|
||||
%>
|
||||
<p class="<%= color %> m-t--30" style="font-weight: bold; font-size: 18px;"><%= params[:message] %></p><br>
|
||||
<% end %>
|
||||
<% if text %>
|
||||
<h6 class="mb-2 "><%= text %></h6><br>
|
||||
<% end %>
|
||||
<h6 class="mb-2">Call Center Phone No: <a href="tel:+6494461709">+959 445 665 311</a></h6>
|
||||
<br>
|
||||
<h6>License Info:</h6>
|
||||
<br>
|
||||
<div class="container">
|
||||
<div class="form-group row">
|
||||
<label class="card-subtitle mb-2 col-md-4">Business Name:</label>
|
||||
<label class="card-subtitle mb-2 "><strong><%= @bis_name %></strong></label>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="card-subtitle mb-2 col-md-4">Plan:</label>
|
||||
<label class="card-subtitle mb-2 "><strong><%= @plan %></strong></label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="card-subtitle mb-2 col-md-4 pl-4">Expired At: </label>
|
||||
<label class="card-subtitle mb-2 "><strong><%= @expired_at.to_date.strftime('%B %d, %Y') %></strong></label>
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
<div class="col-md-12" style="padding-bottom: 20px;">
|
||||
<%= link_to 'Review License', renew_url, class: 'btn btn-primary btn-lg float-right m-l-10 m-r-5' %>
|
||||
<%= link_to 'Go To Home', origami_dashboard_url, class: 'btn btn-default btn-lg float-right' %>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-2"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$('.alert-danger, .navbar').hide()
|
||||
$('html, section').css('background-color', '#61B8C9')
|
||||
// $('html').css('overflow-x', 'hidden')
|
||||
$('section.content').css('margin', '70px 0 0 0')
|
||||
})
|
||||
</script>
|
||||
@@ -82,44 +82,11 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<th style='text-align:center;'><%= t("views.right_panel.detail.sr") %></th>
|
||||
<th style='text-align:center;'><%= t("views.right_panel.detail.date") %></th>
|
||||
<th style='text-align:center;'><%= t("views.righ_panel.detail.date") %></th>
|
||||
<% @payment_methods.each do |method| %>
|
||||
<th style='text-align:center;' class="d-none d-sm-table-cell"><%= t("views.right_panel.detail.#{method}") %></th>
|
||||
<% end %>
|
||||
|
||||
<% if @payment_methods.include? ("MPU") %>
|
||||
<th style='text-align:center;' class="d-none d-sm-table-cell"><%= t("views.right_panel.detail.mpu_sales") %></th>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("Master") %>
|
||||
<th style='text-align:center;' class="d-none d-sm-table-cell"><%= t("views.right_panel.detail.master_sales") %></th>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("VISA") %>
|
||||
<th style='text-align:center;' class="d-none d-sm-table-cell"><%= t("views.right_panel.detail.visa_sales") %></th>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("JCB") %>
|
||||
<th style='text-align:center;' class="d-none d-sm-table-cell"><%= t("views.right_panel.detail.jcb_sales") %></th>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("UNIONPAY") %>
|
||||
<th style='text-align:center;' class="d-none d-sm-table-cell"><%= t("views.right_panel.detail.unionpay_sales") %></th>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("KBZPay") %>
|
||||
<th style='text-align:center;' class="d-none d-sm-table-cell"><%= t("views.right_panel.detail.kbzpay_sales") %></th>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("Alipay") %>
|
||||
<th style='text-align:center;' class="d-none d-sm-table-cell"><%= t("views.right_panel.detail.alipay_sales") %></th>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("PAYMAL") %>
|
||||
<th style='text-align:center;' class="d-none d-sm-table-cell"><%= t("views.right_panel.detail.paymal_sales") %></th>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("DINGA") %>
|
||||
<th style='text-align:center;' class="d-none d-sm-table-cell"><%= t("views.right_panel.detail.dinga_sales") %></th>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("JunctionPay") %>
|
||||
<th style='text-align:center;' class="d-none d-sm-table-cell"><%= t("views.right_panel.detail.junctionpay_sales") %></th>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("Redeem") %>
|
||||
<th style='text-align:center;' class="d-none d-sm-table-cell"><%= t("views.right_panel.detail.redeem_sales") %></th>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("GiftVoucher") %>
|
||||
<th style='text-align:center;'><%= t("views.right_panel.detail.giftvoucher_sales") %></th>
|
||||
<% end %>
|
||||
<th style='text-align:center;'><%= t("views.right_panel.detail.cash_sales") %></th>
|
||||
<th style='text-align:center;'><%= t("views.right_panel.detail.credit_sales") %></th>
|
||||
<th style='text-align:center;'><%= t("views.right_panel.detail.void_amount") %></th>
|
||||
@@ -140,22 +107,10 @@
|
||||
<% unless @sale_data.blank? %>
|
||||
<tbody>
|
||||
<% void = 0 %>
|
||||
<% mpu = 0 %>
|
||||
<% master = 0 %>
|
||||
<% visa = 0 %>
|
||||
<% jcb = 0 %>
|
||||
<% unionpay = 0 %>
|
||||
<% alipay = 0 %>
|
||||
<% paymal = 0 %>
|
||||
<% dinga = 0 %>
|
||||
<% junctionpay = 0 %>
|
||||
<% giftvoucher = 0 %>
|
||||
<% paypar = 0 %>
|
||||
<% cash = 0 %>
|
||||
<% credit = 0 %>
|
||||
<% foc = 0 %>
|
||||
<% discount = 0 %>
|
||||
<% kbzpay = 0 %>
|
||||
<% total = 0 %>
|
||||
<% grand_total = 0 %>
|
||||
<% old_grand_total = 0 %>
|
||||
@@ -164,24 +119,13 @@
|
||||
<% tax = 0 %>
|
||||
<% net_sale = 0 %>
|
||||
<% count = 1 %> <% rounding_adj = 0 %>
|
||||
|
||||
<% @sale_data.each do |sale| %>
|
||||
<% void += sale[:void_amount] %>
|
||||
<% mpu += sale[:mpu_amount] %>
|
||||
<% master += sale[:master_amount] %>
|
||||
<% visa += sale[:visa_amount] %>
|
||||
<% jcb += sale[:jcb_amount] %>
|
||||
<% unionpay += sale[:unionpay_amount] %>
|
||||
<% alipay += sale[:alipay_amount] %>
|
||||
<% paymal += sale[:paymal_amount] %>
|
||||
<% dinga += sale[:dinga_amount] %>
|
||||
<% junctionpay += sale[:junctionpay_amount] %>
|
||||
<% giftvoucher += sale[:giftvoucher_amount] %>
|
||||
<% paypar += sale[:paypar_amount] %>
|
||||
<% cash += sale[:cash_amount]-sale[:total_change_amount] %>
|
||||
<% credit += sale[:credit_amount] %>
|
||||
<% foc += sale[:foc_amount] %>
|
||||
<% discount += sale[:total_discount] %>
|
||||
<% kbzpay += sale[:kbzpay_amount] %>
|
||||
<% total += sale[:grand_total].to_f + sale[:rounding_adj].to_f %>
|
||||
<% grand_total += sale[:grand_total].to_f %>
|
||||
<% old_grand_total += sale[:old_grand_total].to_f %>
|
||||
@@ -193,41 +137,8 @@
|
||||
<tr>
|
||||
<td style='text-align:right;'><%= count %></td>
|
||||
<td><%= sale[:sale_date].strftime("#{sale[:sale_date].day.ordinalize} %b") rescue '-' %></td>
|
||||
<% if @payment_methods.include? ("MPU") %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(sale[:mpu_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("Master") %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(sale[:master_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("VISA") %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(sale[:visa_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("JCB") %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(sale[:jcb_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("UNIONPAY") %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(sale[:unionpay_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("Alipay") %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(sale[:alipay_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("KBZPay") %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(sale[:kbzpay_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("PAYMAL") %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(sale[:paymal_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("DINGA") %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(sale[:dinga_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("JunctionPay") %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(sale[:junctionpay_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("Redeem") %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(sale[:paypar_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("GiftVoucher") %>
|
||||
<td style='text-align:right;'><%= number_format(sale[:giftvoucher_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% @payment_methods.each do |method| %>
|
||||
<td style='text-align:right;'><%= number_format(sale[method.parameterize.to_sym], precision:precision.to_i, delimiter: delimiter) rescue 0 %></td>
|
||||
<% end %>
|
||||
<td style='text-align:right;'><%= number_format(sale[:cash_amount]-sale[:total_change_amount], precision:precision.to_i, delimiter: delimiter) rescue '-'%></td>
|
||||
<td style='text-align:right;'><%= number_format(sale[:credit_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
@@ -236,7 +147,7 @@
|
||||
|
||||
<td style='text-align:right;'>(<%= number_format(sale[:total_discount], precision:precision,delimiter:delimiter) rescue '-'%>)</td>
|
||||
<!-- <td style='text-align:right;'><%= number_format(sale[:grand_total].to_f + sale[:rounding_adj].to_f , precision:precision.to_i,delimiter:delimiter) rescue '-'%></td> -->
|
||||
<td style='text-align:right;'><%= number_format(sale[:rounding_adj].to_f, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<td style='text-align:right;'><%= number_format(sale[:rounding_adj], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<td style='text-align:right;'><%= number_format(sale[:gross_sale], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<td style='text-align:right;'><%= number_format(sale[:total_sale], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% if @tax.blank? %>
|
||||
@@ -250,75 +161,9 @@
|
||||
<% colspan = 7 %>
|
||||
<tr style="font-weight:600;">
|
||||
<td colspan="2" style='text-align:center;'>Total</td>
|
||||
<% if @payment_methods.include? ("MPU") %>
|
||||
<% if !request.user_agent.include? "Mobile" %>
|
||||
<% colspan += 1 %>
|
||||
<% end %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(mpu , precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end%>
|
||||
<% if @payment_methods.include? ("Master") %>
|
||||
<% if !request.user_agent.include? "Mobile" %>
|
||||
<% colspan += 1 %>
|
||||
<% end %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(master, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end%>
|
||||
<% if @payment_methods.include? ("VISA") %>
|
||||
<% if !request.user_agent.include? "Mobile" %>
|
||||
<% colspan += 1 %>
|
||||
<% end %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(visa, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end%>
|
||||
<% if @payment_methods.include? ("JCB") %>
|
||||
<% if !request.user_agent.include? "Mobile" %>
|
||||
<% colspan += 1 %>
|
||||
<% end %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(jcb, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end%>
|
||||
<% if @payment_methods.include? ("UNIONPAY") %>
|
||||
<% if !request.user_agent.include? "Mobile" %>
|
||||
<% colspan += 1 %>
|
||||
<% end %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(unionpay, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("Alipay") %>
|
||||
<% if !request.user_agent.include? "Mobile" %>
|
||||
<% colspan += 1 %>
|
||||
<% end %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(alipay, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("KBZPay") %>
|
||||
<% if !request.user_agent.include? "Mobile" %>
|
||||
<% colspan += 1 %>
|
||||
<% end %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(kbzpay, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("PAYMAL") %>
|
||||
<% if !request.user_agent.include? "Mobile" %>
|
||||
<% colspan += 1 %>
|
||||
<% end %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(paymal, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("DINGA") %>
|
||||
<% if !request.user_agent.include? "Mobile" %>
|
||||
<% colspan += 1 %>
|
||||
<% end %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(dinga, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("JunctionPay") %>
|
||||
<% if !request.user_agent.include? "Mobile" %>
|
||||
<% colspan += 1 %>
|
||||
<% end %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(junctionpay, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("Redeem") %>
|
||||
<% if !request.user_agent.include? "Mobile" %>
|
||||
<% colspan += 1 %>
|
||||
<% end %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(paypar, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("GiftVoucher") %>
|
||||
<% colspan += 1 %>
|
||||
<td style='text-align:right;'><%= number_format(giftvoucher, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% @payment_methods.each do |method| %>
|
||||
<% colspan += 1 %>
|
||||
<td style='text-align:right;'><%= number_format(@sale_data.inject(0.0.to_d) { |sum, sale| sum + sale[method.parameterize.to_sym] }, precision:precision.to_i,delimiter:delimiter) rescue 0 %></td>
|
||||
<% end %>
|
||||
<td style='text-align:right;'><%= number_format(cash, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<td style='text-align:right;'><%= number_format(credit, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
|
||||
@@ -27,41 +27,8 @@
|
||||
<th style='text-align:center;'><%= t("views.right_panel.detail.sr") %></th>
|
||||
<th style='text-align:center;'><%= t("views.right_panel.detail.date") %></th>
|
||||
|
||||
<% if @payment_methods.include? ("MPU") %>
|
||||
<th style='text-align:center;' class="d-none d-sm-table-cell"><%= t("views.right_panel.detail.mpu_sales") %></th>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("Master") %>
|
||||
<th style='text-align:center;' class="d-none d-sm-table-cell"><%= t("views.right_panel.detail.master_sales") %></th>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("VISA") %>
|
||||
<th style='text-align:center;' class="d-none d-sm-table-cell"><%= t("views.right_panel.detail.visa_sales") %></th>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("JCB") %>
|
||||
<th style='text-align:center;' class="d-none d-sm-table-cell"><%= t("views.right_panel.detail.jcb_sales") %></th>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("UNIONPAY") %>
|
||||
<th style='text-align:center;' class="d-none d-sm-table-cell"><%= t("views.right_panel.detail.unionpay_sales") %></th>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("KBZPay") %>
|
||||
<th style='text-align:center;' class="d-none d-sm-table-cell"><%= t("views.right_panel.detail.kbzpay_sales") %></th>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("Alipay") %>
|
||||
<th style='text-align:center;' class="d-none d-sm-table-cell"><%= t("views.right_panel.detail.alipay_sales") %></th>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("PAYMAL") %>
|
||||
<th style='text-align:center;' class="d-none d-sm-table-cell"><%= t("views.right_panel.detail.paymal_sales") %></th>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("DINGA") %>
|
||||
<th style='text-align:center;' class="d-none d-sm-table-cell"><%= t("views.right_panel.detail.dinga_sales") %></th>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("JunctionPay") %>
|
||||
<th style='text-align:center;' class="d-none d-sm-table-cell"><%= t("views.right_panel.detail.junctionpay_sales") %></th>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("Redeem") %>
|
||||
<th style='text-align:center;' class="d-none d-sm-table-cell"><%= t("views.right_panel.detail.redeem_sales") %></th>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("GiftVoucher") %>
|
||||
<th style='text-align:center;'><%= t("views.right_panel.detail.giftvoucher_sales") %></th>
|
||||
<% @payment_methods.each do |method| %>
|
||||
<th style='text-align:center;' class="d-none d-sm-table-cell"><%= t("views.right_panel.detail.#{method}") %></th>
|
||||
<% end %>
|
||||
<th style='text-align:center;'><%= t("views.right_panel.detail.cash_sales") %></th>
|
||||
<th style='text-align:center;'><%= t("views.right_panel.detail.credit_sales") %></th>
|
||||
@@ -108,22 +75,10 @@
|
||||
<% count = 1 %> <% rounding_adj = 0 %>
|
||||
<% @sale_data.each do |sale| %>
|
||||
<% void += sale[:void_amount] %>
|
||||
<% mpu += sale[:mpu_amount] %>
|
||||
<% master += sale[:master_amount] %>
|
||||
<% visa += sale[:visa_amount] %>
|
||||
<% jcb += sale[:jcb_amount] %>
|
||||
<% unionpay += sale[:unionpay_amount] %>
|
||||
<% alipay += sale[:alipay_amount] %>
|
||||
<% paymal += sale[:paymal_amount] %>
|
||||
<% dinga += sale[:dinga_amount] %>
|
||||
<% junctionpay += sale[:junctionpay_amount] %>
|
||||
<% giftvoucher += sale[:giftvoucher_amount] %>
|
||||
<% paypar += sale[:paypar_amount] %>
|
||||
<% cash += sale[:cash_amount]-sale[:total_change_amount] %>
|
||||
<% credit += sale[:credit_amount] %>
|
||||
<% foc += sale[:foc_amount] %>
|
||||
<% discount += sale[:total_discount] %>
|
||||
<% kbzpay += sale[:kbzpay_amount] %>
|
||||
<% total += sale[:grand_total].to_f + sale[:rounding_adj].to_f %>
|
||||
<% grand_total += sale[:grand_total].to_f %>
|
||||
<% old_grand_total += sale[:old_grand_total].to_f %>
|
||||
@@ -135,41 +90,8 @@
|
||||
<tr>
|
||||
<td style='text-align:right;'><%= count %></td>
|
||||
<td><%= sale[:sale_date].strftime("#{sale[:sale_date].day.ordinalize} %b") rescue '-' %></td>
|
||||
<% if @payment_methods.include? ("MPU") %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(sale[:mpu_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("Master") %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(sale[:master_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("VISA") %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(sale[:visa_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("JCB") %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(sale[:jcb_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("UNIONPAY") %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(sale[:unionpay_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("Alipay") %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(sale[:alipay_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("KBZPay") %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(sale[:kbzpay_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("PAYMAL") %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(sale[:paymal_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("DINGA") %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(sale[:dinga_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("JunctionPay") %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(sale[:junctionpay_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("Redeem") %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(sale[:paypar_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("GiftVoucher") %>
|
||||
<td style='text-align:right;'><%= number_format(sale[:giftvoucher_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% @payment_methods.each do |method| %>
|
||||
<td style='text-align:right;'><%= number_format(sale[method.parameterize.to_sym], precision:precision.to_i, delimiter: delimiter) rescue 0 %></td>
|
||||
<% end %>
|
||||
<td style='text-align:right;'><%= number_format(sale[:cash_amount]-sale[:total_change_amount], precision:precision.to_i, delimiter: delimiter) rescue '-'%></td>
|
||||
<td style='text-align:right;'><%= number_format(sale[:credit_amount], precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
@@ -192,75 +114,9 @@
|
||||
<% colspan = 7 %>
|
||||
<tr style="font-weight:600;">
|
||||
<td colspan="2" style='text-align:center;'>Total</td>
|
||||
<% if @payment_methods.include? ("MPU") %>
|
||||
<% if !request.user_agent.include? "Mobile" %>
|
||||
<% colspan += 1 %>
|
||||
<% end %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(mpu , precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end%>
|
||||
<% if @payment_methods.include? ("Master") %>
|
||||
<% if !request.user_agent.include? "Mobile" %>
|
||||
<% colspan += 1 %>
|
||||
<% end %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(master, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end%>
|
||||
<% if @payment_methods.include? ("VISA") %>
|
||||
<% if !request.user_agent.include? "Mobile" %>
|
||||
<% colspan += 1 %>
|
||||
<% end %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(visa, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end%>
|
||||
<% if @payment_methods.include? ("JCB") %>
|
||||
<% if !request.user_agent.include? "Mobile" %>
|
||||
<% colspan += 1 %>
|
||||
<% end %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(jcb, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end%>
|
||||
<% if @payment_methods.include? ("UNIONPAY") %>
|
||||
<% if !request.user_agent.include? "Mobile" %>
|
||||
<% colspan += 1 %>
|
||||
<% end %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(unionpay, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("Alipay") %>
|
||||
<% if !request.user_agent.include? "Mobile" %>
|
||||
<% colspan += 1 %>
|
||||
<% end %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(alipay, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("KBZPay") %>
|
||||
<% if !request.user_agent.include? "Mobile" %>
|
||||
<% colspan += 1 %>
|
||||
<% end %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(kbzpay, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("PAYMAL") %>
|
||||
<% if !request.user_agent.include? "Mobile" %>
|
||||
<% colspan += 1 %>
|
||||
<% end %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(paymal, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("DINGA") %>
|
||||
<% if !request.user_agent.include? "Mobile" %>
|
||||
<% colspan += 1 %>
|
||||
<% end %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(dinga, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("JunctionPay") %>
|
||||
<% if !request.user_agent.include? "Mobile" %>
|
||||
<% colspan += 1 %>
|
||||
<% end %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(junctionpay, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("Redeem") %>
|
||||
<% if !request.user_agent.include? "Mobile" %>
|
||||
<% colspan += 1 %>
|
||||
<% end %>
|
||||
<td style='text-align:right;' class="d-none d-sm-table-cell"><%= number_format(paypar, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% end %>
|
||||
<% if @payment_methods.include? ("GiftVoucher") %>
|
||||
<% colspan += 1 %>
|
||||
<td style='text-align:right;'><%= number_format(giftvoucher, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<% @payment_methods.each do |method| %>
|
||||
<% colspan += 1 %>
|
||||
<td style='text-align:right;'><%= number_format(@sale_data.inject(0.0.to_d) { |sum, sale| sum + sale[method.parameterize.to_sym] }, precision:precision.to_i,delimiter:delimiter) rescue 0 %></td>
|
||||
<% end %>
|
||||
<td style='text-align:right;'><%= number_format(cash, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<td style='text-align:right;'><%= number_format(credit, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
@@ -293,12 +149,12 @@
|
||||
<% net = net - total_tax %>
|
||||
<tr style="font-weight:600;">
|
||||
<td colspan="<%= colspan %>" style='text-align:right;'><%= t("views.right_panel.detail.net_amount") %></td>
|
||||
<td colspan="5" style='text-align:right;'><%= number_format(net, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<td colspan="2" style='text-align:right;'><%= number_format(net, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
</tr>
|
||||
<% else %>
|
||||
<tr style="font-weight:600;">
|
||||
<td colspan="<%= colspan %>" style='text-align:right;'><%= t("views.right_panel.detail.net_amount") %></td>
|
||||
<td colspan="5" style='text-align:right;'><%= number_format(net_sale, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
<td colspan="2" style='text-align:right;'><%= number_format(net_sale, precision:precision.to_i,delimiter:delimiter) rescue '-'%></td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</tbody>
|
||||
|
||||
@@ -40,42 +40,25 @@
|
||||
</tr>
|
||||
<% end %>
|
||||
<tr>
|
||||
<th><%= t("views.right_panel.detail.mpu_sales") %></th>
|
||||
<th><%= t("views.right_panel.detail.master_sales") %></th>
|
||||
<th><%= t("views.right_panel.detail.visa_sales") %></th>
|
||||
<th><%= t("views.right_panel.detail.jcb_sales") %></th>
|
||||
<th><%= t("views.right_panel.detail.unionpay_sales") %></th>
|
||||
<th><%= t("views.right_panel.detail.alipay_sales") %></th>
|
||||
<th><%= t("views.right_panel.detail.kbzpay_sales") %></th>
|
||||
<!-- <th><%= t("views.right_panel.detail.paymal_sales") %></th> -->
|
||||
<th><%= t("views.right_panel.detail.dinga_sales") %></th>
|
||||
<th><%= t("views.right_panel.detail.junctionpay_sales") %></th>
|
||||
<th><%= t("views.right_panel.detail.redeem_sales") %></th>
|
||||
<% @payment_methods.each do |method| %>
|
||||
<th><%= t("views.right_panel.detail.#{method} Sales") %></th>
|
||||
<% end %>
|
||||
<th><%= t("views.right_panel.detail.cash_sales") %></th>
|
||||
<th><%= t("views.right_panel.detail.credit_sales") %></th>
|
||||
<th><%= t("views.right_panel.detail.foc_sales") %></th>
|
||||
<th><%= t("views.right_panel.detail.giftvoucher_sales") %></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<% unless @sale_data.empty? %>
|
||||
<tbody>
|
||||
<% @sale_data.each do |sale| %>
|
||||
<tr>
|
||||
<td><%= number_format(sale[:mpu_amount], precision: precision.to_i ,delimiter: delimiter) rescue '-' %></td>
|
||||
<td><%= number_format(sale[:master_amount], precision: precision.to_i ,delimiter: delimiter) rescue '-' %></td>
|
||||
<td><%= number_format(sale[:visa_amount], precision: precision.to_i ,delimiter: delimiter) rescue '-' %></td>
|
||||
<td><%= number_format(sale[:jcb_amount], precision: precision.to_i ,delimiter: delimiter) rescue '-' %></td>
|
||||
<td><%= number_format(sale[:unionpay_amount], precision: precision.to_i ,delimiter: delimiter) rescue '-' %></td>
|
||||
<td><%= number_format(sale[:alipay_amount], precision: precision.to_i ,delimiter: delimiter) rescue '-' %></td>
|
||||
<td><%= number_format(sale[:kbzpay_amount], precision: precision.to_i ,delimiter: delimiter) rescue '-' %></td>
|
||||
<!-- <td><%= number_format(sale[:paymal_amount], precision: precision.to_i ,delimiter: delimiter) rescue '-' %></td> -->
|
||||
<td><%= number_format(sale[:dinga_amount], precision: precision.to_i ,delimiter: delimiter) rescue '-' %></td>
|
||||
<td><%= number_format(sale[:junctionpay_amount], precision: precision.to_i ,delimiter: delimiter) rescue '-' %></td>
|
||||
<td><%= number_format(sale[:paypar_amount], precision: precision.to_i ,delimiter: delimiter) rescue '-' %></td>
|
||||
<% @payment_methods.each do |method| %>
|
||||
<td><%= number_format(sale[method.parameterize.to_sym] , precision: precision.to_i ,delimiter: delimiter) rescue 0 %></td>
|
||||
<% end %>
|
||||
<td><%= number_format(sale[:cash_amount]-sale[:total_change_amount], precision: precision.to_i ,delimiter: delimiter) rescue '-' %></td>
|
||||
<td><%= number_format(sale[:credit_amount] , precision: precision.to_i ,delimiter: delimiter) rescue '-' %></td>
|
||||
<td><%= number_format(sale[:foc_amount] , precision: precision.to_i ,delimiter: delimiter) rescue '-' %></td>
|
||||
<td><%= number_format(sale[:giftvoucher_amount] , precision: precision.to_i ,delimiter: delimiter) rescue '-' %></td>
|
||||
<!-- <td><%= number_format(sale[:giftvoucher_amount] , precision: precision.to_i ,delimiter: delimiter) rescue '-' %></td> -->
|
||||
</tr>
|
||||
<% end %>
|
||||
|
||||
|
||||
@@ -27,42 +27,24 @@
|
||||
</tr>
|
||||
<% end %>
|
||||
<tr>
|
||||
<th><%= t("views.right_panel.detail.mpu_sales") %></th>
|
||||
<th><%= t("views.right_panel.detail.master_sales") %></th>
|
||||
<th><%= t("views.right_panel.detail.visa_sales") %></th>
|
||||
<th><%= t("views.right_panel.detail.jcb_sales") %></th>
|
||||
<th><%= t("views.right_panel.detail.unionpay_sales") %></th>
|
||||
<th><%= t("views.right_panel.detail.alipay_sales") %></th>
|
||||
<th><%= t("views.right_panel.detail.kbzpay_sales") %></th>
|
||||
<!-- <th><%= t("views.right_panel.detail.paymal_sales") %></th> -->
|
||||
<th><%= t("views.right_panel.detail.dinga_sales") %></th>
|
||||
<th><%= t("views.right_panel.detail.junctionpay_sales") %></th>
|
||||
<th><%= t("views.right_panel.detail.redeem_sales") %></th>
|
||||
<% @payment_methods.each do |method| %>
|
||||
<th><%= t("views.right_panel.detail.#{method} Sales") %></th>
|
||||
<% end %>
|
||||
<th><%= t("views.right_panel.detail.cash_sales") %></th>
|
||||
<th><%= t("views.right_panel.detail.credit_sales") %></th>
|
||||
<th><%= t("views.right_panel.detail.foc_sales") %></th>
|
||||
<th><%= t("views.right_panel.detail.giftvoucher_sales") %></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<% unless @sale_data.empty? %>
|
||||
<tbody>
|
||||
<% @sale_data.each do |sale| %>
|
||||
<tr>
|
||||
<td><%= number_format(sale[:mpu_amount], precision: precision.to_i ,delimiter: delimiter) rescue '-' %></td>
|
||||
<td><%= number_format(sale[:master_amount], precision: precision.to_i ,delimiter: delimiter) rescue '-' %></td>
|
||||
<td><%= number_format(sale[:visa_amount], precision: precision.to_i ,delimiter: delimiter) rescue '-' %></td>
|
||||
<td><%= number_format(sale[:jcb_amount], precision: precision.to_i ,delimiter: delimiter) rescue '-' %></td>
|
||||
<td><%= number_format(sale[:unionpay_amount], precision: precision.to_i ,delimiter: delimiter) rescue '-' %></td>
|
||||
<td><%= number_format(sale[:alipay_amount], precision: precision.to_i ,delimiter: delimiter) rescue '-' %></td>
|
||||
<td><%= number_format(sale[:kbzpay_amount], precision: precision.to_i ,delimiter: delimiter) rescue '-' %></td>
|
||||
<!-- <td><%= number_format(sale[:paymal_amount], precision: precision.to_i ,delimiter: delimiter) rescue '-' %></td> -->
|
||||
<td><%= number_format(sale[:dinga_amount], precision: precision.to_i ,delimiter: delimiter) rescue '-' %></td>
|
||||
<td><%= number_format(sale[:junctionpay_amount], precision: precision.to_i ,delimiter: delimiter) rescue '-' %></td>
|
||||
<td><%= number_format(sale[:paypar_amount], precision: precision.to_i ,delimiter: delimiter) rescue '-' %></td>
|
||||
<% @payment_methods.each do |method| %>
|
||||
<td><%= number_format(sale[method.parameterize.to_sym] , precision: precision.to_i ,delimiter: delimiter) rescue 0 %></td>
|
||||
<% end %>
|
||||
<td><%= number_format(sale[:cash_amount]-sale[:total_change_amount], precision: precision.to_i ,delimiter: delimiter) rescue '-' %></td>
|
||||
<td><%= number_format(sale[:credit_amount] , precision: precision.to_i ,delimiter: delimiter) rescue '-' %></td>
|
||||
<td><%= number_format(sale[:foc_amount] , precision: precision.to_i ,delimiter: delimiter) rescue '-' %></td>
|
||||
<td><%= number_format(sale[:giftvoucher_amount] , precision: precision.to_i ,delimiter: delimiter) rescue '-' %></td>
|
||||
</tr>
|
||||
<% end %>
|
||||
|
||||
|
||||
47
app/views/shared/_license_expire_warning.html.erb
Normal file
47
app/views/shared/_license_expire_warning.html.erb
Normal file
@@ -0,0 +1,47 @@
|
||||
<% license_status = current_license.detail_with_local_file %>
|
||||
<% renewable_date = current_license.read_license("renewable_date") %>
|
||||
<% date_count = (renewable_date.to_date - Date.today).to_i %>
|
||||
<% day = pluralize( date_count, 'day' )%>
|
||||
|
||||
<% if license_status == 0
|
||||
text = 'Your license has expired.'
|
||||
elsif license_status == 2
|
||||
text = "Your license will expire in #{day}."
|
||||
end
|
||||
%>
|
||||
<% if license_status == 0 || license_status == 2 %>
|
||||
<div class="alert alert-danger fade show text-center" role="alert">
|
||||
<strong style="margin-left: 40px !important"><%= text %></strong>
|
||||
<%= link_to 'Review License', expire_url, class: 'btn btn-sm btn-primary', style: "margin-left: 20px !important"%>
|
||||
<button type="button" class="close btn-close" data-dismiss="alert" aria-label="Close" style="padding-top: 5px;">
|
||||
<span aria-hidden="true" class="text-white">×</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<% end %>
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
if (<%= license_status %> == 1) {
|
||||
$('.navbar').css("top", 0)
|
||||
$('section.content').css('margin-top', '0 !important')
|
||||
}
|
||||
else {
|
||||
$('.navbar').css("top", '45px')
|
||||
$('.block-header, .addorder-pages').css('margin-top', '115px')
|
||||
$('.page-header, .m-top-100').css('margin-top', '100px')
|
||||
$('.alert-danger').css({
|
||||
'top': 0,
|
||||
'position': 'fixed',
|
||||
'z-index': 999,
|
||||
'width': '100%'
|
||||
})
|
||||
}
|
||||
$('.btn-close').on ('click', function() {
|
||||
$('.navbar').css("top", '0')
|
||||
$('.block-header, .addorder-pages').css('margin-top', '')
|
||||
$('.page-header, .m-top-100').css('margin-top', '')
|
||||
})
|
||||
})
|
||||
|
||||
</script>
|
||||
@@ -1,58 +1,65 @@
|
||||
class ActionController::Base
|
||||
before_action :lookup_domain, :set_locale
|
||||
before_action :lookup_domain if Rails.env.production?
|
||||
before_action :set_locale
|
||||
|
||||
helper_method :current_license,
|
||||
|
||||
def not_found
|
||||
respond_to do |format|
|
||||
format.html { render :file => "#{Rails.root}/public/404", :layout => false, :status => :not_found }
|
||||
format.json { head :not_found }
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def lookup_domain
|
||||
if request.subdomain.present? && request.subdomain != "www"
|
||||
from = request.subdomain.downcase + "." + request.domain.downcase
|
||||
@license = cache_license(ENV["SX_PROVISION_URL"], from) # request.subdomain.downcase
|
||||
if (!@license.nil?)
|
||||
logger.info "Location - " + @license.dbschema
|
||||
ActiveRecord::Base.establish_connection(website_connection(@license))
|
||||
# authenticate_session_token
|
||||
# logger.info "Connecting to - " + @license.subdomain + " - "+ @license.dbhost + "@" + @license.dbschema
|
||||
if ENV["SERVER_MODE"] == "cloud" && request.subdomains.last && request.subdomains.last != "www"
|
||||
if license = cache_license # request.subdomain.downcase
|
||||
logger.info "Location - " + license.dbschema
|
||||
ActiveRecord::Base.establish_connection(website_connection(license))
|
||||
else
|
||||
# reconnect_default_db
|
||||
logger.info 'License is nil'
|
||||
# redirect_to root_url(:host => request.domain) + "store_error"
|
||||
render :json => [{ status: false, message: 'Invalid Access!'}]
|
||||
not_found
|
||||
end
|
||||
else
|
||||
elsif ENV["SERVER_MODE"] == "application" || request.subdomains.last && request.subdomains.last != "www"
|
||||
# check for license file
|
||||
if check_license
|
||||
current_license(ENV["SX_PROVISION_URL"])
|
||||
else
|
||||
redirect_to activate_path
|
||||
if !check_license
|
||||
if ENV["SERVER_MODE"] == "application" || check_subdomain
|
||||
redirect_to activate_path
|
||||
else
|
||||
not_found
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def current_license(url)
|
||||
@license = License.new(url)
|
||||
flag = @license.detail_with_local_file()
|
||||
if (flag == 0)
|
||||
flash[:notice] = 'Expired or No License!'
|
||||
elsif (flag == 2)
|
||||
flash[:notice] = 'Expiring! Please, License extend...'
|
||||
else
|
||||
puts "RUN SAY BYAR"
|
||||
not_found
|
||||
end
|
||||
end
|
||||
|
||||
def cache_license(url, lookup)
|
||||
@license = License.new(url, lookup)
|
||||
def current_license
|
||||
@license ||= License.new(ENV["SX_PROVISION_URL"], request.host)
|
||||
end
|
||||
|
||||
if (@license.detail_with_local_cache(lookup) == true)
|
||||
return @license
|
||||
def cache_license
|
||||
if (current_license.detail_with_local_cache == true)
|
||||
return current_license
|
||||
else
|
||||
return nil
|
||||
end
|
||||
end
|
||||
|
||||
def check_subdomain
|
||||
current_license.check_license_subdomain
|
||||
end
|
||||
|
||||
def check_license
|
||||
License.check_license_file
|
||||
if License.check_license_file(request.host)
|
||||
if current_license.expired?
|
||||
return false
|
||||
end
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
def check_installation
|
||||
@@ -64,7 +71,6 @@ class ActionController::Base
|
||||
def website_connection(license)
|
||||
default_connection.dup.update(:host => license.dbhost, :database => license.dbschema.to_s.downcase,
|
||||
:username => license.dbusername, :password => license.dbpassword)
|
||||
|
||||
end
|
||||
|
||||
def reconnect_default_db
|
||||
@@ -89,42 +95,58 @@ class ActionController::Base
|
||||
end
|
||||
|
||||
class ActionController::API
|
||||
before_action :lookup_domain
|
||||
before_action :lookup_domain if Rails.env.production?
|
||||
|
||||
def not_found
|
||||
respond_to do |format|
|
||||
format.html { render :file => "#{Rails.root}/public/404", :layout => false, :status => :not_found }
|
||||
format.json { head :not_found }
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def lookup_domain
|
||||
if request.subdomain.present? && request.subdomain != "www"
|
||||
from = request.subdomain.downcase + "." + request.domain.downcase
|
||||
@license = cache_license(ENV["SX_PROVISION_URL"], from) # request.subdomain.downcase
|
||||
if (!@license.nil?)
|
||||
logger.info "Location - " + @license.dbschema
|
||||
ActiveRecord::Base.establish_connection(website_connection(@license))
|
||||
# authenticate_session_token
|
||||
# logger.info "Connecting to - " + @license.subdomain + " - "+ @license.dbhost + "@" + @license.dbschema
|
||||
if ENV["SERVER_CODE"] == "cloud" && request.subdomains.last && request.subdomains.last != "www"
|
||||
if license = cache_license # request.subdomain.downcase
|
||||
logger.info "Location - " + license.dbschema
|
||||
ActiveRecord::Base.establish_connection(website_connection(license))
|
||||
else
|
||||
# reconnect_default_db
|
||||
logger.info 'License is nil'
|
||||
# redirect_to root_url(:host => request.domain) + "store_error"
|
||||
render :json => [{ status: false, message: 'Invalid Access!'}]
|
||||
not_found
|
||||
end
|
||||
elsif ENV["SERVER_MODE"] == "application" || (request.subdomains.last && request.subdomains.last != "www")
|
||||
not_found unless check_license
|
||||
else
|
||||
not_found
|
||||
end
|
||||
end
|
||||
|
||||
def cache_license(url, lookup)
|
||||
@license = License.new(url, lookup)
|
||||
def current_license
|
||||
@license ||= License.new(ENV["SX_PROVISION_URL"], request.host)
|
||||
end
|
||||
|
||||
if (@license.detail_with_local_cache(lookup) == true)
|
||||
return @license
|
||||
def cache_license
|
||||
if (current_license.detail_with_local_cache == true)
|
||||
return current_license
|
||||
else
|
||||
return nil
|
||||
end
|
||||
end
|
||||
|
||||
def check_license
|
||||
if License.check_license_file(request.host)
|
||||
if current_license.expired?
|
||||
return false
|
||||
end
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
def website_connection(license)
|
||||
default_connection.dup.update(:host => license.dbhost, :database => license.dbschema.to_s.downcase,
|
||||
:username => license.dbusername, :password => license.dbpassword)
|
||||
|
||||
end
|
||||
|
||||
def reconnect_default_db
|
||||
|
||||
17
config/license.yml
Normal file
17
config/license.yml
Normal file
@@ -0,0 +1,17 @@
|
||||
---
|
||||
localhost:
|
||||
iv_key: 03TLQUDDVSOPa/lEEHqhVw==
|
||||
shop_name: scdemo3
|
||||
email: hanwintun@code2lab.com
|
||||
telephone: ''
|
||||
fax: ''
|
||||
address: ''
|
||||
dbhost: gG0jQLrVX6l0dZaA5wVP9bNTrfgzotwAcjcFKQmM9WUQ5121pkwg+9mYh5XDrIwL4//1UNjRR6CNZPorBMGtAw==
|
||||
dbschema: M9ddWoBb89JN51Ld1r7vTw==
|
||||
dbusername: 8Lc2lKIyJld/xfG6+ZxcOw==
|
||||
dbpassword: "+EhtSe5kJuVKp+wFMRlmoA=="
|
||||
api_token: UQFLAbMvJxUCnDVCOhIdqYZEGRqVQMvI
|
||||
app_token: DvRXGlomaBFpGVLYsidekVVZyqosntouTA
|
||||
plan_sku: 2NY6p1HAlR7UqE8AsBEytg==
|
||||
renewable_date: vlKVqrJyCB6LxXTkv63COg==
|
||||
plan_name: 6NSPpVHcwHBoFZPcVNjkvD6F5quXIWVaWieCRzpspbE=
|
||||
@@ -29,6 +29,9 @@ scope "(:locale)", locale: /en|mm/ do
|
||||
delete 'logout' => 'home#destroy'
|
||||
get 'dashboard' => 'home#dashboard'
|
||||
|
||||
get 'expire' => 'renew_license#expire'
|
||||
get 'renew' => 'renew_license#renew'
|
||||
|
||||
namespace :induties do
|
||||
# resources :assign_in_duties
|
||||
get ':booking_id/assign' => 'assign_in_duties#index', as: :assign_in_duties
|
||||
@@ -244,23 +247,25 @@ scope "(:locale)", locale: /en|mm/ do
|
||||
post 'payment/dinga' => 'dinga#create'
|
||||
post 'payment/gift_voucher' => 'gift_voucher#create'
|
||||
post 'payment/credit_payment' => 'credit_payments#create_credit_payment'
|
||||
post 'payment/:method' => 'others_payments#create', :as => 'payment'
|
||||
|
||||
post 'payment/:type/change_tax' => 'payments#change_tax', :defaults => {:format => 'json'}
|
||||
|
||||
get 'sale/:sale_id/:type/payment/credit_payment' => "credit_payments#index"
|
||||
get 'sale/:sale_id/:type/payment/others_payment' => "others_payments#index"
|
||||
get 'sale/:sale_id/:type/payment/others_payment/MPU' => "mpu#index"
|
||||
get 'sale/:sale_id/:type/payment/others_payment/VISA' => "visa#index"
|
||||
get 'sale/:sale_id/:type/payment/others_payment/Master' => "master#index"
|
||||
get 'sale/:sale_id/:type/payment/others_payment/JCB' => "jcb#index"
|
||||
get 'sale/:sale_id/:type/payment/others_payment/PAYMAL' => "paymal#index"
|
||||
get 'sale/:sale_id/:type/payment/others_payment/UNIONPAY' => "unionpay#index"
|
||||
get 'sale/:sale_id/:type/payment/others_payment/Redeem' => "redeem_payments#index"
|
||||
get 'sale/:sale_id/:type/payment/others_payment/Voucher' => "voucher#index"
|
||||
get 'sale/:sale_id/:type/payment/others_payment/JunctionPay' => "junction_pay#index"
|
||||
get 'sale/:sale_id/:type/payment/others_payment/Alipay' => "alipay#index"
|
||||
get 'sale/:sale_id/:type/payment/others_payment/DINGA' => "dinga#index"
|
||||
get 'sale/:sale_id/:type/payment/others_payment/GiftVoucher' => "gift_voucher#index"
|
||||
get 'sale/:sale_id/:type/payment/others_payment/mpu' => "mpu#index"
|
||||
get 'sale/:sale_id/:type/payment/others_payment/visa' => "visa#index"
|
||||
get 'sale/:sale_id/:type/payment/others_payment/master' => "master#index"
|
||||
get 'sale/:sale_id/:type/payment/others_payment/jcb' => "jcb#index"
|
||||
get 'sale/:sale_id/:type/payment/others_payment/paymal' => "paymal#index"
|
||||
get 'sale/:sale_id/:type/payment/others_payment/unionpay' => "unionpay#index"
|
||||
get 'sale/:sale_id/:type/payment/others_payment/redeem' => "redeem_payments#index"
|
||||
get 'sale/:sale_id/:type/payment/others_payment/voucher' => "voucher#index"
|
||||
get 'sale/:sale_id/:type/payment/others_payment/junctionpay' => "junction_pay#index"
|
||||
get 'sale/:sale_id/:type/payment/others_payment/alipay' => "alipay#index"
|
||||
get 'sale/:sale_id/:type/payment/others_payment/dinga' => "dinga#index"
|
||||
get 'sale/:sale_id/:type/payment/others_payment/giftvoucher' => "gift_voucher#index"
|
||||
get 'sale/:sale_id/:type/payment/others_payment/:method' => 'others_payments#new'
|
||||
|
||||
#---------Void --------------#
|
||||
post 'sale/:sale_id/:type/void' => 'void#overall_void'
|
||||
@@ -351,20 +356,22 @@ scope "(:locale)", locale: /en|mm/ do
|
||||
# post 'credit_payment/junctionpay' => 'junction_pay#create'
|
||||
# post 'credit_payment/dinga' => 'dinga#create'
|
||||
# post 'credit_payment/gift_voucher' => 'gift_voucher#create'
|
||||
post 'credit_payment/:method' => 'others_payments#create', :as => 'credit_payment'
|
||||
|
||||
get 'sale/:sale_id/:type/credit_payment/others_payment' => "others_payments#index"
|
||||
get 'sale/:sale_id/:type/credit_payment/others_payment/MPU' => "mpu#index"
|
||||
get 'sale/:sale_id/:type/credit_payment/others_payment/VISA' => "visa#index"
|
||||
get 'sale/:sale_id/:type/credit_payment/others_payment/Master' => "master#index"
|
||||
get 'sale/:sale_id/:type/credit_payment/others_payment/JCB' => "jcb#index"
|
||||
# get 'sale/:sale_id/:type/credit_payment/others_payment/PAYMAL' => "paymal#index"
|
||||
get 'sale/:sale_id/:type/credit_payment/others_payment/UNIONPAY' => "unionpay#index"
|
||||
# get 'sale/:sale_id/:type/credit_payment/others_payment/Redeem' => "redeem_payments#index"
|
||||
# get 'sale/:sale_id/:type/credit_payment/others_payment/Voucher' => "voucher#index"
|
||||
# get 'sale/:sale_id/:type/credit_payment/others_payment/JunctionPay' => "junction_pay#index"
|
||||
get 'sale/:sale_id/:type/credit_payment/others_payment/Alipay' => "alipay#index"
|
||||
# get 'sale/:sale_id/:type/credit_payment/others_payment/DINGA' => "dinga#index"
|
||||
# get 'sale/:sale_id/:type/credit_payment/others_payment/GiftVoucher' => "gift_voucher#index"
|
||||
get 'sale/:sale_id/:type/credit_payment/others_payment/mpu' => "mpu#index"
|
||||
get 'sale/:sale_id/:type/credit_payment/others_payment/visa' => "visa#index"
|
||||
get 'sale/:sale_id/:type/credit_payment/others_payment/master' => "master#index"
|
||||
get 'sale/:sale_id/:type/credit_payment/others_payment/jcb' => "jcb#index"
|
||||
# get 'sale/:sale_id/:type/credit_payment/others_payment/paymal' => "paymal#index"
|
||||
get 'sale/:sale_id/:type/credit_payment/others_payment/unionpay' => "unionpay#index"
|
||||
# get 'sale/:sale_id/:type/credit_payment/others_payment/redeem' => "redeem_payments#index"
|
||||
# get 'sale/:sale_id/:type/credit_payment/others_payment/voucher' => "voucher#index"
|
||||
# get 'sale/:sale_id/:type/credit_payment/others_payment/junctionpay' => "junction_pay#index"
|
||||
get 'sale/:sale_id/:type/credit_payment/others_payment/alipay' => "alipay#index"
|
||||
# get 'sale/:sale_id/:type/credit_payment/others_payment/dinga' => "dinga#index"
|
||||
# get 'sale/:sale_id/:type/credit_payment/others_payment/giftvoucher' => "gift_voucher#index"
|
||||
get 'sale/:sale_id/:type/credit_payment/others_payment/:method' => 'others_payments#new'
|
||||
|
||||
#------------- Start Reservation -------------------#
|
||||
resources :reservation
|
||||
|
||||
@@ -1049,6 +1049,13 @@
|
||||
"key": "MdrjwSyyNPqIU+HO3rwsHHSlG6xCKC5y3pQ1ywGbX2k=\n",
|
||||
"iv": "8+fEFUROBPpGp23jrRnb3Q==\n"
|
||||
}
|
||||
},
|
||||
{
|
||||
"lookup": "localhost",
|
||||
"value": {
|
||||
"key": "wyo9gq9KYY0FS1r1+cMmmAGEVGxQ2aTpVjfVYCoC9z4=\n",
|
||||
"iv": "T2UNnKc4EFLiDiALvjybdg==\n"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
153
lib/tasks/shift_sales.rake
Normal file
153
lib/tasks/shift_sales.rake
Normal file
@@ -0,0 +1,153 @@
|
||||
namespace :shift_sales do
|
||||
desc "TODO"
|
||||
task :audit, [:shift_sale_ids, :shop_code, :repayment] => [:environment] do |tasks, args|
|
||||
Rails.logger = Logger.new(STDOUT)
|
||||
|
||||
if args[:shift_sale_ids].empty?
|
||||
return
|
||||
end
|
||||
|
||||
if args[:shift_sale_ids].include? '..'
|
||||
shift_sales_ids = args[:shift_sale_ids].split('..').inject { |s,e| s.to_i..e.to_i }
|
||||
else
|
||||
shift_sales_ids = args[:shift_sale_ids].split(' ')
|
||||
end
|
||||
|
||||
shift_sales_ids.each do |shift_sale_id|
|
||||
ActiveRecord::Base.transaction do
|
||||
shift_sale = ShiftSale.find(shift_sale_id)
|
||||
|
||||
total_revenue = 0
|
||||
total_discounts = 0
|
||||
total_taxes = 0
|
||||
grand_total = 0
|
||||
cash_sales = 0
|
||||
credit_sales = 0
|
||||
other_sales = 0
|
||||
nett_sales = 0
|
||||
commercial_taxes = 0
|
||||
total_rounding = 0
|
||||
total_receipt = 0
|
||||
total_void = 0
|
||||
dining_count = 0
|
||||
takeaway_count = 0
|
||||
|
||||
sales = shift_sale.sales.order(:created_at)
|
||||
sales.each do |sale|
|
||||
|
||||
sale.grand_total = sale.total_amount - sale.total_discount + sale.total_tax
|
||||
sale.old_grand_total = grand_total
|
||||
|
||||
if args[:shop_code]
|
||||
shop = Shop.find_by!(shop_code: args[:shop_code])
|
||||
else
|
||||
shop = Shop.first
|
||||
end
|
||||
|
||||
if shop.is_rounding_adj
|
||||
new_total = Sale.get_rounding_adjustment(sale.grand_total)
|
||||
sale.rounding_adjustment = new_total - sale.grand_total
|
||||
sale.old_grand_total = sale.grand_total
|
||||
sale.grand_total = new_total
|
||||
else
|
||||
sale.rounding_adjustment = 0.00
|
||||
end
|
||||
|
||||
sale.amount_changed = sale.amount_received - sale.grand_total
|
||||
|
||||
cash_amount = 0
|
||||
credit_amount = 0
|
||||
other_amount = 0
|
||||
|
||||
sale_payments = sale.sale_payments.order(:created_at)
|
||||
sale_payments.each do |sale_payment|
|
||||
|
||||
if sale_payment.payment_method == 'creditnote'
|
||||
credit_amount += sale_payment.payment_amount
|
||||
else
|
||||
if SaleAudit.where("SUBSTRING_INDEX(sale_audits.remark,'||',1) = ? AND sale_audits.sale_id = ?", sale_payment.sale_payment_id, sale.sale_id).exists?
|
||||
if sale_payment.created_at.between?(shift_sale.shift_started_at, shift_sale.shift_closed_at)
|
||||
if credit_amount >= sale_payment.payment_amount
|
||||
credit_amount -= sale_payment.payment_amount
|
||||
else
|
||||
credit_amount = 0
|
||||
end
|
||||
if sale_payment.payment_method == 'cash'
|
||||
cash_amount += sale_payment.payment_amount
|
||||
else
|
||||
other_amount += sale_payment.payment_amount
|
||||
end
|
||||
end
|
||||
else
|
||||
if sale_payment.payment_method == 'cash'
|
||||
cash_amount += sale_payment.payment_amount
|
||||
else
|
||||
other_amount += sale_payment.payment_amount
|
||||
end
|
||||
sale_payment.outstanding_amount = sale.grand_total - sale_payment.payment_amount
|
||||
sale_payment.update_columns(outstanding_amount: sale_payment.outstanding_amount)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
sale.update_columns(
|
||||
grand_total: sale.grand_total,
|
||||
old_grand_total: sale.old_grand_total,
|
||||
rounding_adjustment: sale.rounding_adjustment,
|
||||
amount_changed: sale.amount_changed
|
||||
)
|
||||
|
||||
if sale.sale_status != 'void'
|
||||
total_revenue += sale.total_amount
|
||||
total_discounts += sale.total_discount
|
||||
total_taxes += sale.total_tax
|
||||
grand_total += sale.grand_total
|
||||
cash_sales += cash_amount - sale.amount_changed
|
||||
credit_sales += credit_amount
|
||||
other_sales += other_amount
|
||||
nett_sales += sale.total_amount - sale.total_discount
|
||||
commercial_taxes += sale.get_commerical_tax
|
||||
total_rounding += sale.rounding_adjustment
|
||||
total_receipt += 1
|
||||
if sale.customer.customer_type == 'Dinein'
|
||||
dining_count += 1
|
||||
else
|
||||
takeaway_count += 1
|
||||
end
|
||||
else
|
||||
total_receipt += 1
|
||||
total_void += sale.grand_total
|
||||
end
|
||||
end
|
||||
|
||||
if args[:repayment]
|
||||
SalePayment.joins(:sale, :sale_audit).where(sale_payments: {created_at: shift_sale.shift_started_at..shift_sale.shift_closed_at}).where.not(sales: {shift_sale_id: shift_sale.id}).each do |sale_payment|
|
||||
if sale_payment.payment_method == 'cash'
|
||||
cash_amount += sale_payment.payment_amount
|
||||
else
|
||||
other_amount += sale_payment.payment_amount
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
shift_sale.update_columns(
|
||||
total_revenue: total_revenue,
|
||||
total_discounts: total_discounts,
|
||||
total_taxes: total_taxes,
|
||||
grand_total: grand_total,
|
||||
cash_sales: cash_sales,
|
||||
credit_sales: credit_sales,
|
||||
other_sales: other_sales.to_f,
|
||||
nett_sales: nett_sales,
|
||||
commercial_taxes: commercial_taxes,
|
||||
total_rounding: total_rounding,
|
||||
total_receipt: total_receipt,
|
||||
total_void: total_void,
|
||||
dining_count: dining_count,
|
||||
takeaway_count: takeaway_count
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user