fixed conflict
This commit is contained in:
@@ -377,6 +377,5 @@ DEPENDENCIES
|
||||
|
||||
RUBY VERSION
|
||||
ruby 2.6.3p62
|
||||
|
||||
BUNDLED WITH
|
||||
2.0.2
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
class Api::ApiController < ActionController::API
|
||||
include TokenVerification
|
||||
include ActionController::MimeResponds
|
||||
|
||||
# before_action :lookup_domain
|
||||
helper_method :current_token, :current_login_employee, :get_cashier
|
||||
|
||||
90
app/controllers/api/loader_service/load_data_controller.rb
Normal file
90
app/controllers/api/loader_service/load_data_controller.rb
Normal file
@@ -0,0 +1,90 @@
|
||||
require "net/http"
|
||||
class Api::LoaderService::LoadDataController < Api::ApiController
|
||||
skip_before_action :authenticate
|
||||
|
||||
def get_sale_data_rage
|
||||
load_time_start = params[:load_time]
|
||||
load_time_end = params[:load_time_end]
|
||||
unless load_time_start.nil? || load_time_end.nil?
|
||||
@sale_data = Sale.get_load_sale_range(load_time_start.to_datetime,load_time_end.to_datetime)
|
||||
if !@sale_data.empty?
|
||||
@out = {general_status: true, data: @sale_data}
|
||||
else
|
||||
@out = {general_status: false, data: "Data is empty."}
|
||||
end
|
||||
else
|
||||
@out = {general_status: false, data: "load_time is missing."}
|
||||
end
|
||||
render :json => @out
|
||||
end
|
||||
|
||||
# SFTP for BreadTalk Start
|
||||
|
||||
# Detail Sale
|
||||
def get_detail_sale_data
|
||||
data = params['data']
|
||||
transaction_date = data[:transaction_date].to_s
|
||||
detail_sale_data = SaleItem.get_detail_sale_data(transaction_date)
|
||||
json = detail_sale_data.to_json
|
||||
trans_count = JSON.parse(json).count
|
||||
unless detail_sale_data.empty?
|
||||
out = { :status => "success", :transaction_count => trans_count, :data => detail_sale_data }
|
||||
else
|
||||
out = { :status => "fail", :data => "Data is empty" }
|
||||
end
|
||||
respond_to do |format|
|
||||
format.json {render json: out }
|
||||
end
|
||||
end
|
||||
|
||||
# Tender sale
|
||||
def get_tender_sale_data
|
||||
data = params['data']
|
||||
transaction_date = data['transaction_date'].to_s
|
||||
tender_sale_data = Sale.get_tender_sale_data(transaction_date)
|
||||
json = tender_sale_data.to_json
|
||||
trans_count = JSON.parse(json).count
|
||||
unless tender_sale_data.empty?
|
||||
out = { :status => "success", :transaction_count => trans_count, :data => tender_sale_data }
|
||||
else
|
||||
out = { :status => "fail", :data => "Data is empty" }
|
||||
end
|
||||
respond_to do |format|
|
||||
format.json { render json: out }
|
||||
end
|
||||
end
|
||||
|
||||
# Daily_Sale summary
|
||||
def get_daily_sale_data
|
||||
data = params['data']
|
||||
transaction_date = data['transaction_date'].to_s
|
||||
daily_sale_data = Sale.get_daily_sale_data(transaction_date)
|
||||
unless daily_sale_data.empty?
|
||||
out = { :status => "success", :data => daily_sale_data}
|
||||
else
|
||||
out = { :status => "fail", :data => "Data is empty"}
|
||||
end
|
||||
respond_to do |format|
|
||||
format.json { render json: out }
|
||||
end
|
||||
end
|
||||
|
||||
# Check Sale Data
|
||||
def get_check_sale_data
|
||||
data = params['data']
|
||||
transaction_date = data['transaction_date'].to_s
|
||||
check_sale_data = Sale.get_check_sale_data(transaction_date)
|
||||
json = check_sale_data.to_json
|
||||
trans_count = JSON.parse(json).count
|
||||
unless check_sale_data.empty?
|
||||
out = { :status => "success", :transaction_count => trans_count, :data => check_sale_data}
|
||||
else
|
||||
out = { :status => "fail", :data => "Data is empty"}
|
||||
end
|
||||
respond_to do |format|
|
||||
format.json { render json: out }
|
||||
end
|
||||
end
|
||||
|
||||
# SFTP for BreadTalk End
|
||||
end
|
||||
@@ -8,7 +8,7 @@ class Api::VoidController < Api::ApiController
|
||||
|
||||
if sale.discount_type == "member_discount"
|
||||
sale.update_attributes(total_discount: 0)
|
||||
sale.compute_by_sale_items(sale_id, sale.sale_items,0,order_source)
|
||||
sale.compute_by_sale_items(0, nil, order_source)
|
||||
end
|
||||
|
||||
# update count for shift sale
|
||||
@@ -39,4 +39,3 @@ class Api::VoidController < Api::ApiController
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -154,7 +154,7 @@ class Origami::CustomersController < BaseOrigamiController
|
||||
if status == true
|
||||
render json: JSON.generate({:status => true})
|
||||
if(id == "SAL")
|
||||
sale.compute_by_sale_items(sale.sale_id, sale.sale_items, sale.total_discount, nil, order_source)
|
||||
sale.compute_by_sale_items(sale.total_discount, nil, order_source)
|
||||
end
|
||||
else
|
||||
render json: JSON.generate({:status => false, :error_message => "Record not found"})
|
||||
|
||||
@@ -33,7 +33,6 @@ class Origami::DiscountsController < BaseOrigamiController
|
||||
overall_discount = params[:overall_discount]
|
||||
sub_total = params[:sub_total]
|
||||
|
||||
|
||||
if Sale.exists?(sale_id)
|
||||
sale = Sale.find(sale_id)
|
||||
if sale.bookings[0].dining_facility_id.to_i > 0
|
||||
@@ -103,7 +102,7 @@ class Origami::DiscountsController < BaseOrigamiController
|
||||
|
||||
sale_audit = SaleAudit.record_audit_discount(sale.sale_id,sale.cashier_name, action_by,remark,"OVERALLDISCOUNT" )
|
||||
end
|
||||
sale.compute_by_sale_items(sale_id, sale.sale_items, overall_discount.to_f, nil,order_source)
|
||||
sale.compute_by_sale_items(overall_discount.to_f, nil,order_source)
|
||||
if !table.nil?
|
||||
result = {:status=> "Success", :table_id => table_id, :table_type => table.type }
|
||||
else
|
||||
@@ -158,7 +157,7 @@ class Origami::DiscountsController < BaseOrigamiController
|
||||
# sale.grand_total = (sale.total_amount - sale.total_discount) + sale.total_tax;
|
||||
# sale.save
|
||||
# Re-calc All Amount in Sale
|
||||
sale.compute_by_sale_items(sale_id, sale.sale_items, sale.total_discount, nil, order_source)
|
||||
sale.compute_by_sale_items(sale.total_discount, nil, order_source)
|
||||
if table.nil?
|
||||
result = {:status=> "Success"}
|
||||
else
|
||||
@@ -220,7 +219,7 @@ class Origami::DiscountsController < BaseOrigamiController
|
||||
sale_audit = SaleAudit.record_audit_discount(sale.sale_id,sale.cashier_name, action_by,remark,"REMOVEALLDISCOUNT" )
|
||||
|
||||
# Re-calc All Amount in Sale
|
||||
sale.compute_by_sale_items(sale_id, sale.sale_items, 0, nil, order_source)
|
||||
sale.compute_by_sale_items(0, nil, order_source)
|
||||
if table.nil?
|
||||
result = {:status=> "Success"}
|
||||
else
|
||||
@@ -321,7 +320,7 @@ class Origami::DiscountsController < BaseOrigamiController
|
||||
if response["discount_bonus_earned"]
|
||||
discount_amount = discount_amount + response["discount_bonus_earned"]
|
||||
end
|
||||
sale.compute_by_sale_items(sale_id, sale.sale_items, discount_amount, 'member_discount', order_source, tax_type)
|
||||
sale.compute_by_sale_items(discount_amount, 'member_discount', order_source, tax_type)
|
||||
result = {:status=> "Success",:title=>"Member Discount", :table_id => table_id,:table_type => table_type }
|
||||
elsif response["status"] == "500"
|
||||
result = {:status=> response["error"],:title=>"Alert", :table_id => table_id,:table_type => table_type }
|
||||
|
||||
@@ -75,7 +75,7 @@ class Origami::OtherChargesController < BaseOrigamiController
|
||||
end
|
||||
|
||||
# Re-calc All Amount in Sale
|
||||
sale.compute_by_sale_items(sale_id, sale.sale_items, sale.total_discount, nil, cashier_type)
|
||||
sale.compute_by_sale_items(sale.total_discount, nil, cashier_type)
|
||||
end
|
||||
if !table.nil?
|
||||
dining = {:table_id => table_id, :table_type => table.type }
|
||||
|
||||
@@ -643,7 +643,7 @@ class Origami::PaymentsController < BaseOrigamiController
|
||||
|
||||
if saleObj.discount_type == "member_discount"
|
||||
saleObj.update_attributes(grand_total: 0, rounding_adjustment: 0, amount_received: 0, amount_changed: 0)
|
||||
saleObj.compute_by_sale_items(sale_id, saleObj.sale_items,0,order_source)
|
||||
saleObj.compute_by_sale_items(0, nil, order_source)
|
||||
end
|
||||
|
||||
saleObj.update_attributes(grand_total: 0, rounding_adjustment: 0, amount_received: 0, amount_changed: 0)
|
||||
@@ -818,7 +818,7 @@ class Origami::PaymentsController < BaseOrigamiController
|
||||
order_source = params[:cashier_type]
|
||||
tax_type = params[:tax_type]
|
||||
sale = Sale.find(sale_id)
|
||||
sale.compute_by_sale_items(sale.sale_id, sale.sale_items, sale.total_discount,nil,order_source,tax_type)
|
||||
sale.compute_by_sale_items(sale.total_discount, nil, order_source, tax_type)
|
||||
|
||||
render json: JSON.generate({:status => true})
|
||||
end
|
||||
|
||||
@@ -59,7 +59,7 @@ class Origami::SaleEditController < BaseOrigamiController
|
||||
remark = "Void Sale Item ID #{saleitemObj.sale_item_id} | Receipt No #{saleObj.receipt_no} | Item Name ->#{saleitemObj.product_name}-Product Code ->#{saleitemObj.product_code}-Instance Code ->#{saleitemObj.item_instance_code}"
|
||||
sale_audit = SaleAudit.record_audit_for_edit(saleitemObj.sale_id,current_user.name, action_by,remark,"SALEITEMVOID" )
|
||||
|
||||
saleObj.compute_by_sale_items(saleObj.sale_id, saleObj.sale_items, saleObj.total_discount,order_source)
|
||||
saleObj.compute_by_sale_items(saleObj.total_discount, nil, order_source)
|
||||
ProductCommission.create_product_commission(@newsaleitem, saleitemObj)
|
||||
end
|
||||
|
||||
@@ -95,7 +95,7 @@ class Origami::SaleEditController < BaseOrigamiController
|
||||
remark = "FOC Sale Item ID #{saleitemObj.sale_item_id} | Receipt No #{saleObj.receipt_no} | Item Name ->#{saleitemObj.product_name}-Product Code ->#{saleitemObj.product_code}-Instance Code ->#{saleitemObj.item_instance_code}Receipt No #{saleObj.receipt_no}"
|
||||
sale_audit = SaleAudit.record_audit_for_edit(saleitemObj.sale_id,current_user.name, action_by,remark,"SALEITEMFOC" )
|
||||
|
||||
saleObj.compute_by_sale_items(saleObj.sale_id, saleObj.sale_items, saleObj.total_discount,order_source)
|
||||
saleObj.compute_by_sale_items(saleObj.total_discount, nil, order_source)
|
||||
ProductCommission.create_product_commission(@newsaleitem, saleitemObj)
|
||||
end
|
||||
|
||||
@@ -150,10 +150,10 @@ class Origami::SaleEditController < BaseOrigamiController
|
||||
saleitemObj.save
|
||||
|
||||
# re-calc tax
|
||||
saleObj = Sale.find(saleitemObj.sale_id)
|
||||
# saleObj = Sale.find(saleitemObj.sale_id)
|
||||
|
||||
order_id = SaleOrder.find_by_sale_id(saleitemObj.sale_id).order_id
|
||||
order = Order.find(order_id)
|
||||
# order_id = SaleOrder.find_by_sale_id(saleitemObj.sale_id).order_id
|
||||
# order = Order.find(order_id)
|
||||
|
||||
# order.order_items.each do |o|
|
||||
# if saleitemObj.product_code == o.item_code
|
||||
@@ -163,7 +163,7 @@ class Origami::SaleEditController < BaseOrigamiController
|
||||
# end
|
||||
# end
|
||||
|
||||
saleObj.compute_by_sale_items(saleObj.sale_id, saleObj.sale_items, saleObj.total_discount,order_source)
|
||||
sale.compute_by_sale_items(saleObj.total_discount, nil, order_source)
|
||||
|
||||
ProductCommission.edit_product_commission(saleitemObj)
|
||||
end
|
||||
@@ -196,7 +196,7 @@ class Origami::SaleEditController < BaseOrigamiController
|
||||
remark = "Cancle Void Sale Item ID #{saleitemObj.sale_item_id} | Item Name ->#{saleitemObj.product_name}-Product Code ->#{saleitemObj.product_code}-Instance Code ->#{saleitemObj.item_instance_code}|Receipt No #{saleObj.receipt_no}"
|
||||
sale_audit = SaleAudit.record_audit_for_edit(saleitemObj.sale_id,current_user.name, action_by,remark,"ITEMCANCELVOID" )
|
||||
|
||||
saleObj.compute_by_sale_items(saleObj.sale_id, saleObj.sale_items, saleObj.total_discount, order_source)
|
||||
saleObj.compute_by_sale_items(saleObj.total_discount, nil, order_source)
|
||||
ProductCommission.remove_product_commission(saleitemObj)
|
||||
end
|
||||
|
||||
@@ -214,9 +214,9 @@ class Origami::SaleEditController < BaseOrigamiController
|
||||
item.save
|
||||
ProductCommission.remove_product_commission(item)
|
||||
end
|
||||
|
||||
saleObj.sale_items.reset
|
||||
# re-calc tax
|
||||
saleObj.compute_by_sale_items(saleObj.sale_id, saleObj.sale_items, saleObj.total_discount,order_source)
|
||||
saleObj.compute_by_sale_items(saleObj.total_discount,nil, order_source)
|
||||
end
|
||||
|
||||
def apply_void
|
||||
|
||||
@@ -10,7 +10,7 @@ class Origami::VoidController < BaseOrigamiController
|
||||
sale = Sale.find_by_sale_id(sale_id)
|
||||
if sale.discount_type == "member_discount"
|
||||
sale.update_attributes(total_discount: 0)
|
||||
sale.compute_by_sale_items(sale_id, sale.sale_items,0,order_source)
|
||||
sale.compute_by_sale_items(0, nil, order_source)
|
||||
end
|
||||
|
||||
# update count for shift sale
|
||||
|
||||
@@ -15,7 +15,6 @@ class Origami::WasteSpoileController < BaseOrigamiController
|
||||
sale.sale_status = remark
|
||||
sale.save
|
||||
|
||||
# sale.compute_by_sale_items(sale_id, sale.sale_items,0,order_source)
|
||||
# add to sale item with foc
|
||||
# sale_items = SaleItem.where("sale_id='#{ sale_id }' and status is null")
|
||||
|
||||
|
||||
@@ -248,7 +248,7 @@ class Transactions::SalesController < ApplicationController
|
||||
|
||||
if sale.discount_type == "member_discount"
|
||||
sale.update_attributes(total_discount: 0)
|
||||
sale.compute_by_sale_items(sale_id, sale.sale_items,0,order_source)
|
||||
sale.compute_by_sale_items(0, nil, order_source)
|
||||
end
|
||||
|
||||
# update count for shift sale
|
||||
|
||||
@@ -109,7 +109,7 @@ class Promotion < ApplicationRecord
|
||||
item = saleObj.order_items.where(item_instance_code: promo_product).first
|
||||
|
||||
if !item.nil?
|
||||
update_existing_item(foc_qty, item, sale_id, "promotion", item[:price], source)
|
||||
update_existing_item(foc_qty, item, saleObj, "promotion", item[:price], source)
|
||||
end
|
||||
end
|
||||
# AA - 10 # 3 # BB # orderList, #S34345
|
||||
@@ -128,7 +128,7 @@ class Promotion < ApplicationRecord
|
||||
item = saleObj.order_items.where(item_instance_code: promo_product).first
|
||||
|
||||
if !item.nil?
|
||||
update_existing_item(promotion_qty, item, sale_id, "promotion", item[:price],source)
|
||||
update_existing_item(promotion_qty, item, saleObj, "promotion", item[:price],source)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -158,7 +158,8 @@ class Promotion < ApplicationRecord
|
||||
sale_item.sale = saleObj
|
||||
sale_item.save
|
||||
|
||||
saleObj.compute_by_sale_items(saleObj.id, saleObj.sale_items, saleObj.total_discount,nil,source)
|
||||
saleObj.sale_items << sale_item
|
||||
saleObj.compute_by_sale_items(saleObj.total_discount, nil, source)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -180,7 +181,7 @@ class Promotion < ApplicationRecord
|
||||
item = saleObj.order_items.where(item_instance_code: promo_product.item_code).first
|
||||
|
||||
if !item.nil?
|
||||
update_existing_item(foc_qty, item, sale_id, "promotion nett off", promo_product.net_off,source)
|
||||
update_existing_item(foc_qty, item, saleObj, "promotion nett off", promo_product.net_off,source)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -361,8 +361,8 @@ class Sale < ApplicationRecord
|
||||
sale_item.save
|
||||
|
||||
# Re-calc
|
||||
sale = Sale.find(self.id)
|
||||
self.compute_by_sale_items(self.id, sale.sale_items, self.total_discount, nil, order_source)
|
||||
self.sale_items << sale_item
|
||||
self.compute_by_sale_items(self.total_discount, nil, order_source)
|
||||
end
|
||||
def create_saleitem_indutycharges(chargeObj, current_checkin_induties_count, induties_pay_amount, dining_name, dining_time, order_source = nil, basic_pay_amount)
|
||||
sale_item = SaleItem.new
|
||||
@@ -380,8 +380,8 @@ class Sale < ApplicationRecord
|
||||
sale_item.price = induties_pay_amount
|
||||
sale_item.save
|
||||
# Re-calc
|
||||
sale = Sale.find(self.id)
|
||||
self.compute_by_sale_items(self.id, sale.sale_items, self.total_discount, nil, order_source)
|
||||
self.sale_items << sale_item
|
||||
self.compute_by_sale_items(self.total_discount, nil, order_source)
|
||||
end
|
||||
def update_item (item)
|
||||
#save sale_audit
|
||||
@@ -403,14 +403,12 @@ class Sale < ApplicationRecord
|
||||
|
||||
#compute - invoice total
|
||||
def compute(order_source = nil, tax_type = nil)
|
||||
sales_items = self.sale_items
|
||||
|
||||
#Computation Fields
|
||||
subtotal_price = 0
|
||||
total_taxable = 0
|
||||
rounding_adjustment = 0
|
||||
|
||||
sales_items.each do |item|
|
||||
self.sale_items.each do |item|
|
||||
#compute each item and added to total
|
||||
subtotal_price = subtotal_price + item.price
|
||||
|
||||
@@ -429,23 +427,19 @@ class Sale < ApplicationRecord
|
||||
# self.grand_total_round
|
||||
#compute rounding adjustment
|
||||
# adjust_rounding
|
||||
|
||||
self.save!
|
||||
|
||||
end
|
||||
|
||||
#compute - invoice total
|
||||
def compute_by_sale_items(sale_id, sale_itemss, total_discount,discount_type=nil,order_source=nil,tax_type=nil,type=nil)
|
||||
def compute_by_sale_items(total_discount, discount_type=nil, order_source=nil, tax_type=nil, type=nil)
|
||||
shop = Shop.first
|
||||
sale = Sale.find(sale_id)
|
||||
sales_items = sale_itemss
|
||||
|
||||
#Computation Fields
|
||||
subtotal_price = 0
|
||||
total_taxable = 0
|
||||
rounding_adjustment = 0
|
||||
|
||||
sales_items.each do |item|
|
||||
self.sale_items.each do |item|
|
||||
#compute each item and added to total
|
||||
subtotal_price = subtotal_price + item.price
|
||||
|
||||
@@ -454,35 +448,33 @@ class Sale < ApplicationRecord
|
||||
total_taxable = total_taxable + item.taxable_price
|
||||
end
|
||||
end
|
||||
compute_tax(sale, total_taxable, total_discount, order_source, tax_type)
|
||||
sale.total_amount = subtotal_price
|
||||
sale.total_discount = total_discount
|
||||
|
||||
compute_tax(total_taxable, total_discount, order_source, tax_type)
|
||||
self.total_amount = subtotal_price
|
||||
self.total_discount = total_discount
|
||||
if type =="foc"
|
||||
sale.grand_total = 0
|
||||
self.grand_total = 0
|
||||
else
|
||||
sale.grand_total = (sale.total_amount - sale.total_discount) + sale.total_tax
|
||||
self.grand_total = (self.total_amount - self.total_discount) + self.total_tax
|
||||
# sale.grand_total_round
|
||||
end
|
||||
|
||||
if discount_type == "member_discount"
|
||||
sale.discount_type = discount_type
|
||||
self.discount_type = discount_type
|
||||
end
|
||||
#compute rounding adjustment
|
||||
# adjust_rounding
|
||||
|
||||
sale.save!
|
||||
self.save!
|
||||
end
|
||||
|
||||
# No Use too many wrong
|
||||
def compute_without_void(order_source = nil)
|
||||
sales_items = self.sale_items
|
||||
|
||||
#Computation Fields
|
||||
subtotal_price = 0
|
||||
total_taxable = 0
|
||||
rounding_adjustment = 0
|
||||
|
||||
sales_items.each do |item|
|
||||
self.sale_items.each do |item|
|
||||
if item.status != 'void' && item.status != 'foc'
|
||||
#compute each item and added to total
|
||||
subtotal_price = subtotal_price + item.price
|
||||
@@ -506,7 +498,7 @@ class Sale < ApplicationRecord
|
||||
end
|
||||
|
||||
# Tax Re-Calculte
|
||||
def compute_tax(sale, total_taxable, total_discount = 0, order_source = nil, tax_type=nil)
|
||||
def compute_tax(total_taxable, total_discount = 0, order_source = nil, tax_type=nil)
|
||||
shop = Shop.first
|
||||
|
||||
#if tax is not apply create new record
|
||||
@@ -529,9 +521,9 @@ class Sale < ApplicationRecord
|
||||
tax_profiles = unique_tax_profiles(order_source, self.customer_id)
|
||||
|
||||
# #Creat new tax records
|
||||
if sale.payment_status != 'foc'
|
||||
if self.payment_status != 'foc'
|
||||
tax_profiles.each do |tax|
|
||||
sale_tax = SaleTax.new(:sale => sale)
|
||||
sale_tax = SaleTax.new(:sale => self)
|
||||
sale_tax.tax_name = tax.name
|
||||
sale_tax.tax_rate = tax.rate
|
||||
|
||||
@@ -555,8 +547,8 @@ class Sale < ApplicationRecord
|
||||
sale_tax.save
|
||||
end
|
||||
end
|
||||
sale.tax_type = tax_incl_exec
|
||||
sale.total_tax = total_tax_amount
|
||||
self.tax_type = tax_incl_exec
|
||||
self.total_tax = total_tax_amount
|
||||
end
|
||||
|
||||
# Tax Calculate
|
||||
@@ -759,15 +751,8 @@ class Sale < ApplicationRecord
|
||||
end
|
||||
|
||||
def self.daily_sales_list(from,to)
|
||||
sub_query = "SELECT (CASE WHEN SUM(sale_payments.payment_amount) > 0 THEN
|
||||
(SUM(sale_payments.payment_amount) + SUM(sale_payments.outstanding_amount)) ELSE 0 END)
|
||||
FROM sale_payments
|
||||
INNER JOIN sale_audits sa ON SUBSTRING_INDEX(sa.remark,'||',1)=sale_payments.sale_payment_id
|
||||
INNER JOIN sales s ON s.sale_id=sa.sale_id
|
||||
WHERE s.sale_status='completed'
|
||||
AND DATE_FORMAT(CONVERT_TZ(s.receipt_date,'+00:00','+06:30'),'%Y-%m-%d') = DATE_FORMAT(CONVERT_TZ(sales.receipt_date,'+00:00','+06:30'),'%Y-%m-%d')"
|
||||
|
||||
payments_total = Sale.select("CAST((CONVERT_TZ(sales.receipt_date,'+00:00','+06:30')) AS DATE) as sale_date,
|
||||
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,
|
||||
@@ -780,62 +765,43 @@ def self.daily_sales_list(from,to)
|
||||
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='creditnote') then sale_payments.payment_amount else 0 end)) > 0 THEN (SUM(case when (sale_payments.payment_method='creditnote') then sale_payments.payment_amount else 0 end) - (#{sub_query})) ELSE 0 END) as credit_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")
|
||||
.joins(" join sale_payments on sale_payments.sale_id = sales.sale_id")
|
||||
.where("sale_status = ? AND sales.receipt_date between ? and ? ", 'completed', from, to)
|
||||
.group("DATE_FORMAT((CONVERT_TZ(sales.receipt_date,'+00:00','+06:30')),'%Y-%m-%d')")
|
||||
.joins("LEFT JOIN sale_payments on sales.sale_status != 'void' AND sale_payments.sale_id = sales.sale_id AND DATE(CONVERT_TZ(sale_payments.created_at,'+00:00','+06:30')) = DATE(CONVERT_TZ(sales.receipt_date,'+00:00','+06:30'))")
|
||||
.where("(sale_status = ? OR sale_status = ?) AND sales.receipt_date between ? AND ? ", 'completed', 'void', from, to)
|
||||
.group("sale_id").to_sql
|
||||
|
||||
daily_total = Array.new
|
||||
|
||||
payments_total.each do |pay|
|
||||
sale_date = pay.sale_date
|
||||
diff_time = payments_total.first.sale_date.beginning_of_day.utc - from
|
||||
diff = diff_time % 86400
|
||||
from_date = sale_date.beginning_of_day.utc - diff
|
||||
to_date = sale_date.end_of_day.utc - diff
|
||||
|
||||
total_sale = Sale.select("IFNULL(SUM(case when (sale_status='completed') then grand_total else 0 end),0) as grand_total,
|
||||
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 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")
|
||||
.where("(sale_status = ? OR sale_status = ?) AND receipt_date between ? and ? AND total_amount != 0", 'completed', 'void', from_date, to_date)
|
||||
IFNULL(SUM(case when (sale_status='completed') then rounding_adjustment else 0 end),0) as rounding_adj,
|
||||
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)
|
||||
|
||||
total_sale.each do |sale|
|
||||
grand_total = sale.grand_total
|
||||
old_grand_total = sale.old_grand_total
|
||||
total_discount = sale.total_discount
|
||||
void_amount = sale.void_amount
|
||||
total_change_amount = sale.total_change_amount
|
||||
total = {:sale_date => pay.sale_date,
|
||||
:mpu_amount => pay.mpu_amount,
|
||||
:master_amount => pay.master_amount,
|
||||
:visa_amount => pay.visa_amount,
|
||||
:jcb_amount => pay.jcb_amount,
|
||||
:paypar_amount => pay.paypar_amount,
|
||||
:unionpay_amount => pay.unionpay_amount,
|
||||
:alipay_amount => pay.alipay_amount,
|
||||
:kbzpay_amount => pay.kbzpay_amount,
|
||||
:paymal_amount => pay.paymal_amount,
|
||||
:dinga_amount => pay.dinga_amount,
|
||||
:junctionpay_amount => pay.junctionpay_amount,
|
||||
:cash_amount => pay.cash_amount,
|
||||
:credit_amount => pay.credit_amount,
|
||||
:foc_amount => pay.foc_amount,
|
||||
:giftvoucher_amount => pay.giftvoucher_amount,
|
||||
:total_discount => total_discount,
|
||||
:total_change_amount => total_change_amount,
|
||||
:grand_total => grand_total,
|
||||
:old_grand_total => old_grand_total,
|
||||
:void_amount => void_amount,
|
||||
:rounding_adj => sale.rounding_adj}
|
||||
daily_total.push(total)
|
||||
end
|
||||
|
||||
end
|
||||
return daily_total
|
||||
end
|
||||
|
||||
@@ -1138,73 +1104,64 @@ def self.get_shift_sales_by_receipt_no_detail(shift_sale_range,shift,from,to,pay
|
||||
end
|
||||
|
||||
def self.get_by_shift_sale_credit_payment(shift_sale_range,shift,from,to,filter,order_source)
|
||||
sub_query = "SELECT (CASE WHEN SUM(payment_amount) > 0
|
||||
THEN DATE_FORMAT(CONVERT_TZ(sale_payments.created_at,'+00:00','+06:30'),'%d %b %y %h:%i%p') ELSE '-' END)
|
||||
FROM `sale_payments`
|
||||
INNER JOIN sale_audits ON SUBSTRING_INDEX(sale_audits.remark,'||',1)=sale_payments.sale_payment_id
|
||||
WHERE sale_audits.sale_id = s.sale_id"
|
||||
order_sources = Order.select("sale_orders.sale_id, orders.source")
|
||||
.joins(:sale_orders).to_sql
|
||||
|
||||
sub_query1 = "SELECT (CASE WHEN SUM(payment_amount) > 0 THEN SUM(payment_amount) -
|
||||
(SUM(payment_amount) - (SELECT SUM(payment_amount) FROM sale_payments WHERE payment_method='creditnote' AND sale_id=s.sale_id)) ELSE 0 END)
|
||||
FROM `sale_payments`
|
||||
INNER JOIN sale_audits ON SUBSTRING_INDEX(sale_audits.remark,'||',1)=sale_payments.sale_payment_id
|
||||
WHERE sale_audits.sale_id = s.sale_id"
|
||||
credit_payments = SalePayment.select("
|
||||
sales.sale_id,
|
||||
DATE_FORMAT(CONVERT_TZ(sale_payments.created_at,'+00:00','+06:30'),'%d %b %y %h:%i%p') as credit_payment_receipt_date,
|
||||
sale_payments.payment_amount as credit_payment,
|
||||
employees.name as credit_payment_cashier_name,
|
||||
CONCAT(DATE_FORMAT(CONVERT_TZ(shift_started_at,'+00:00','+06:30'),'%d %b %y %h:%i%p'),' - ',DATE_FORMAT(CONVERT_TZ(shift_closed_at,'+00:00','+06:30'),'%d %b %y %h:%i%p')) as credit_payment_shift_name")
|
||||
.joins("JOIN sales ON sales.sale_id = sale_payments.sale_id")
|
||||
.joins("JOIN sale_audits ON sale_audits.sale_id = sales.sale_id AND SUBSTRING_INDEX(sale_audits.remark,'||',1)=sale_payments.sale_payment_id")
|
||||
.joins("JOIN shift_sales ON shift_sales.id = sales.shift_sale_id")
|
||||
.joins("JOIN employees ON employees.id = shift_sales.employee_id").to_sql
|
||||
|
||||
sub_query2 = "SELECT (CASE WHEN shift_closed_at IS NOT NULL AND credit_payment > 0
|
||||
THEN CONCAT(DATE_FORMAT(CONVERT_TZ(shift_started_at,'+00:00','+06:30'),'%d %b %y %h:%i%p'),' - ',DATE_FORMAT(CONVERT_TZ(shift_closed_at,'+00:00','+06:30'),'%d %b %y %h:%i%p'))
|
||||
ELSE '-' END)
|
||||
FROM shift_sales
|
||||
WHERE shift_sales.id = s.shift_sale_id"
|
||||
credits = SalePayment.select("
|
||||
sale_payments.sale_payment_id,
|
||||
sale_payments.payment_method,
|
||||
sale_payments.payment_amount,
|
||||
sale_payments.payment_status,
|
||||
sales.sale_id,
|
||||
sales.receipt_no,
|
||||
sales.receipt_date as sale_date,
|
||||
order_sources.source as order_source,
|
||||
sales.cashier_name,
|
||||
customers.name as customer_name,
|
||||
IFNULL(credit_payments.credit_payment_receipt_date, '-') as credit_payment_receipt_date,
|
||||
IFNULL(credit_payments.credit_payment, 0) as credit_payment,
|
||||
IFNULL(credit_payments.credit_payment_cashier_name, '-') as credit_payment_cashier_name,
|
||||
IFNULL(credit_payments.credit_payment_shift_name, '-') as credit_payment_shift_name")
|
||||
.joins("JOIN sales ON sales.sale_id = sale_payments.sale_id")
|
||||
.joins("JOIN shift_sales ON shift_sales.id = sales.shift_sale_id")
|
||||
.joins("JOIN customers ON customers.customer_id = sales.customer_id")
|
||||
.joins("JOIN (#{order_sources}) order_sources ON order_sources.sale_id = sales.sale_id")
|
||||
.joins("LEFT JOIN (#{credit_payments}) credit_payments ON credit_payments.sale_id = sales.sale_id")
|
||||
.where("sale_payments.payment_method= ? AND sales.sale_status = ?", 'creditnote', 'completed')
|
||||
|
||||
sub_query3 = "SELECT (CASE WHEN shift_closed_at IS NOT NULL OR shift_closed_at IS NULL AND credit_payment > 0
|
||||
THEN employees.name ELSE '-' END)
|
||||
FROM shift_sales
|
||||
INNER JOIN employees ON employees.id=shift_sales.employee_id
|
||||
WHERE shift_sales.id = s.shift_sale_id"
|
||||
|
||||
filter_check = ""
|
||||
if filter == 'paid'
|
||||
filter_check = " AND (SELECT (CASE WHEN SUM(payment_amount) > 0 THEN SUM(payment_amount) ELSE 0 END)
|
||||
FROM `sale_payments`
|
||||
INNER JOIN sale_audits ON SUBSTRING_INDEX(sale_audits.remark,'||',1)=sale_payments.sale_payment_id
|
||||
WHERE sale_audits.sale_id = s.sale_id) > 0"
|
||||
elsif filter == 'unpaid'
|
||||
filter_check = " AND (SELECT (CASE WHEN SUM(payment_amount) > 0 THEN SUM(payment_amount) ELSE 0 END)
|
||||
FROM `sale_payments`
|
||||
INNER JOIN sale_audits ON SUBSTRING_INDEX(sale_audits.remark,'||',1)=sale_payments.sale_payment_id
|
||||
WHERE sale_audits.sale_id = s.sale_id) = 0"
|
||||
end
|
||||
order_source_query = "(select orders.source FROM orders JOIN sale_orders so ON so.order_id=orders.order_id WHERE so.sale_id=s.sale_id GROUP BY so.sale_id)"
|
||||
|
||||
if order_source.blank?
|
||||
source = ""
|
||||
else
|
||||
if order_source.present?
|
||||
if order_source == "cashier"
|
||||
source = "and #{order_source_query}='cashier' or #{order_source_query}='emenu'"
|
||||
credits = credits.where("order_sources.source IN (?)", ['cashier', 'emenu'])
|
||||
else
|
||||
source = "and #{order_source_query}='#{order_source}'"
|
||||
credits = credits.where("order_sources.source = ?", order_source)
|
||||
end
|
||||
end
|
||||
query = SalePayment.select("s.receipt_no, sale_payments.*,
|
||||
SUM(sale_payments.payment_amount) as payment_amount,
|
||||
s.receipt_date as sale_date,
|
||||
#{order_source_query} as order_source,
|
||||
s.cashier_name as cashier_name,
|
||||
(#{sub_query}) as credit_payment_receipt_date,
|
||||
(#{sub_query1}) as credit_payment,
|
||||
(#{sub_query3}) as credit_payment_cashier_name,
|
||||
(#{sub_query2}) as credit_payment_shift_name")
|
||||
.joins("INNER JOIN sales s ON s.sale_id = sale_payments.sale_id")
|
||||
.joins("INNER JOIN shift_sales ss ON ss.id = s.shift_sale_id")
|
||||
|
||||
if filter == 'paid'
|
||||
credits = credits.where("credit_payment IS NOT NULL")
|
||||
elsif filter == 'unpaid'
|
||||
credits = credits.where("credit_payment IS NULL")
|
||||
end
|
||||
|
||||
if shift.present?
|
||||
query = query.where("sale_payments.payment_method= 'creditnote' and s.sale_status = 'completed' #{filter_check} and s.shift_sale_id in (?) #{source}",shift.to_a)
|
||||
credits = credits.where("sales.shift_sale_id in (?)",shift.to_a)
|
||||
elsif shift_sale_range.present?
|
||||
query = query.where("sale_payments.payment_method='creditnote' and s.sale_status = 'completed' #{filter_check} and s.shift_sale_id in (?) #{source}",shift_sale_range.to_a)
|
||||
credits = credits.where("sales.shift_sale_id in (?)",shift_sale_range.to_a)
|
||||
else
|
||||
query = query.where("sale_payments.payment_method='creditnote' and s.sale_status = 'completed' #{filter_check} and s.receipt_date between ? and ? #{source}",from,to)
|
||||
credits = credits.where("sales.receipt_date between ? and ?",from,to)
|
||||
end
|
||||
query = query.group("s.sale_id")
|
||||
credits = credits.group("sales.sale_id")
|
||||
end
|
||||
|
||||
def self.get_void_sale(shift,from,to)
|
||||
@@ -2751,6 +2708,139 @@ def grand_total_round
|
||||
self.grand_total =self.grand_total.round(print_settings.precision.to_i)
|
||||
end
|
||||
end
|
||||
|
||||
# Loader Service SFTP Start
|
||||
def self.get_load_sale_range(load_time_start,load_time_end)
|
||||
query = Sale.select("sales.sale_id,
|
||||
CONVERT(receipt_date, TIME) as transaction_time,
|
||||
CONVERT(receipt_date, DATE) as transaction_date,
|
||||
receipt_no as transaction_no,
|
||||
SUM(i.qty) as item_no,
|
||||
'MMK' as currency_salesamount,
|
||||
IFNULL((total_amount-total_discount)-((total_amount-total_discount)/21),0) as total_salesamount,
|
||||
IFNULL(amount_changed,0) as change_amt,
|
||||
IFNULL(total_amount-total_discount,0) as grand_salesamount,
|
||||
'5' as tax_percent,
|
||||
'MMK' as currency_payment,
|
||||
IFNULL(amount_received,0) as paymentamount,
|
||||
sp.payment_amount as payment_method,
|
||||
CASE
|
||||
WHEN sales.sale_status='completed' THEN 'Sales'
|
||||
WHEN sales.sale_status='void' THEN 'Void'
|
||||
END as sale_type,
|
||||
sales.updated_at as load_time")
|
||||
.joins("JOIN sale_items i ON i.sale_id = sales.sale_id" +
|
||||
" JOIN sale_payments sp ON sp.sale_id = sales.sale_id")
|
||||
.where("(sale_status=? OR sale_status=?) AND sp.payment_method !=? AND sales.updated_at between ? AND ?", 'completed', 'void', 'foc', load_time_start, load_time_end)
|
||||
.group("receipt_no")
|
||||
.order("receipt_date")
|
||||
end
|
||||
|
||||
def self.get_tender_sale_data(transaction_date)
|
||||
query = Sale.select("sales.receipt_no as check_num,
|
||||
DATE_FORMAT(sales.receipt_date, '%d %b %Y') as business_date,
|
||||
sales.receipt_date as transaction_date,
|
||||
'36017' as item_id,
|
||||
'Cash Received' as item_name,
|
||||
'1' as qty,
|
||||
'Tender' as transaction_type,
|
||||
'0' as sales,
|
||||
CASE WHEN sales.sale_status = 'void' THEN '1' ELSE '0' END as is_void
|
||||
")
|
||||
.where("DATE(sales.receipt_date)=? AND sales.sale_status != ?", transaction_date, :void)
|
||||
.order("sales.receipt_no")
|
||||
end
|
||||
|
||||
def self.get_daily_sale_data(transaction_date)
|
||||
query = Sale.connection.select_all("SELECT s.receipt_date as business_date,
|
||||
(SUM(s.grand_total)+SUM(s.total_discount)) as gross_sales,
|
||||
SUM(s.total_discount) as discount,
|
||||
SUM(s.grand_total) as sales,
|
||||
SUM(s.grand_total)/21 as tax,
|
||||
0 as service_charge,
|
||||
SUM(s.grand_total) - (SUM(s.grand_total)/21) as net_sales,
|
||||
SUM(s.credit_amount) as credit_amount,
|
||||
SUM(s.voucher_sales) as voucher_sales,
|
||||
0 as staff_meal_amt,
|
||||
0 as round_amt,
|
||||
0 as raw_wastage_amt,
|
||||
0 as semi_wastage_amt,
|
||||
CASE WHEN s.sale_status='waste' THEN SUM(s.total_amount) ELSE 0 END as wastage_amt,
|
||||
CASE WHEN s.sale_status='spoile' THEN SUM(s.total_amount) ELSE 0 END as spoilage_amt,
|
||||
0 as sampling_amt,
|
||||
0 as other_amt,
|
||||
SUM(s.qty) as total_qty,
|
||||
(SELECT COUNT(sales.sale_id) FROM sales WHERE DATE(sales.receipt_date)='#{transaction_date}') as total_transaction,
|
||||
(SELECT COUNT(sales.sale_id) FROM sales WHERE (sales.sale_status='completed' OR sales.sale_status='void') AND DATE(sales.receipt_date)='#{transaction_date}') as valid_transaction_count,
|
||||
(SELECT COUNT(sales.sale_id) FROM sales WHERE (sales.sale_status IN('new','pending',null)) AND DATE(sales.receipt_date)='#{transaction_date}') as invalid_transaction_count,
|
||||
0 as overing_transaction_count,
|
||||
0 as cancle_transaction_count,
|
||||
0 as no_of_pax,
|
||||
0 as no_of_adult,
|
||||
0 as no_of_child
|
||||
FROM (
|
||||
SELECT s.*, SUM(qty) as qty
|
||||
FROM (
|
||||
SELECT sales.*,
|
||||
SUM(CASE WHEN sp.payment_method IN('mpu','master','visa','jcb','unionpay','alipay') THEN sp.payment_amount ELSE 0 END) as credit_amount,
|
||||
SUM(case when (sp.payment_method='giftvoucher') then sp.payment_amount else 0 end) as voucher_sales
|
||||
FROM sales
|
||||
LEFT JOIN sale_payments sp ON sp.sale_id = sales.sale_id
|
||||
WHERE DATE(sales.receipt_date) = '#{transaction_date}'
|
||||
AND sales.sale_status!='void'
|
||||
AND sales.sale_status='completed'
|
||||
GROUP BY sales.sale_id) AS s
|
||||
LEFT JOIN sale_items si ON si.sale_id = s.sale_id
|
||||
GROUP BY s.sale_id) as s
|
||||
GROUP BY DATE(s.receipt_date)").to_hash
|
||||
end
|
||||
|
||||
def self.get_check_sale_data(transaction_date)
|
||||
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,
|
||||
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"
|
||||
|
||||
query = Sale.select("
|
||||
sales.receipt_no as check_num,
|
||||
sales.receipt_date as business_date,
|
||||
sales.requested_at as check_open_time,
|
||||
sales.updated_at as check_close_time,
|
||||
(sales.grand_total + sales.total_discount) as gross_sales,
|
||||
sales.total_discount as discount_amt,
|
||||
sales.grand_total as sales,
|
||||
(sales.grand_total/21) as tax_amt,
|
||||
0 as service_charges,
|
||||
(sales.grand_total - (sales.grand_total/21)) as net_sales,
|
||||
receivables.credit_card_sales as credit_card_sales,
|
||||
receivables.voucher_sales as voucher_sales,
|
||||
0 as staff_meal_amt,
|
||||
sales.rounding_adjustment as rounding_amt,
|
||||
CASE WHEN sales.sale_status='waste' THEN sales.total_amount ELSE 0 END as wastage_amt,
|
||||
CASE WHEN sales.sale_status='spoile' THEN sales.total_amount ELSE 0 END as spoilage_amt,
|
||||
0 as sampling_amt,
|
||||
SUM(i.qty) as qty,
|
||||
0 as no_of_pax,
|
||||
0 as no_of_adult,
|
||||
0 as no_of_child,
|
||||
shift_sales.cashier_terminal_id as pos_id,
|
||||
sales.cashier_id as employee_code,
|
||||
employees.name as employee_name,
|
||||
CASE WHEN sales.sale_status='completed' THEN 1 ELSE 0 END is_valid,
|
||||
0 as overing,
|
||||
0 as cancle,
|
||||
CONCAT( employees.name, ' Cash&Go receipt generated and completed.') as remarks")
|
||||
.joins("LEFT JOIN shift_sales ON shift_sales.id = sales.shift_sale_id")
|
||||
.joins("LEFT JOIN sale_items i ON i.sale_id = sales.sale_id")
|
||||
.joins("LEFT JOIN (" + sale_receivables_subquery + ") as receivables ON receivables.sale_id = sales.sale_id")
|
||||
.joins("LEFT JOIN employees ON employees.id = sales.cashier_id")
|
||||
.where("DATE(sales.receipt_date) = ? AND sales.sale_status != ?", transaction_date, :void)
|
||||
.group("sales.receipt_no,sales.sale_status")
|
||||
end
|
||||
|
||||
# Loader Service SFTP End
|
||||
|
||||
private
|
||||
|
||||
def generate_custom_id
|
||||
|
||||
@@ -89,7 +89,7 @@ class SaleItem < ApplicationRecord
|
||||
# sale_item.save
|
||||
if type != "foc"
|
||||
sale = Sale.find(sale_id)
|
||||
sale.compute_by_sale_items(sale.id, sale.sale_items, sale.total_discount)
|
||||
sale.compute_by_sale_items(sale.total_discount)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -294,4 +294,57 @@ class SaleItem < ApplicationRecord
|
||||
end
|
||||
end
|
||||
|
||||
# Loader Service SFTP Start
|
||||
# Detail Sale Data
|
||||
def self.get_detail_sale_data(transaction_date)
|
||||
query = SaleItem.select("
|
||||
sale_items.sale_item_id as id,
|
||||
sale_items.sale_id as parent_id,
|
||||
s.receipt_no as check_num,
|
||||
s.receipt_date as business_date,
|
||||
s.receipt_date as transaction_date,
|
||||
'' as item_seq,
|
||||
sale_items.menu_category_code as category_code,
|
||||
sale_items.menu_category_name as category_name,
|
||||
'' as sub_category_code,
|
||||
'' as sub_category_name,
|
||||
'' as report_group_code,
|
||||
'' as report_group_name,
|
||||
sale_items.product_code as item_id,
|
||||
sale_items.product_name as item_name,
|
||||
sale_items.qty as qty,
|
||||
CASE
|
||||
WHEN s.sale_status = 'completed' OR s.sale_status = 'void' THEN 'Sales'
|
||||
WHEN s.sale_status = 'waste' THEN 'Waste'
|
||||
WHEN s.sale_status = 'spoile' THEN 'Spoil'
|
||||
END as transaction_type,
|
||||
sale_items.price as gross_sales,
|
||||
'' as discount_code,
|
||||
CASE
|
||||
WHEN i.unit_price IS NOT NULL THEN i.unit_price ELSE 0
|
||||
END as discount_amt,
|
||||
(sale_items.price - (CASE WHEN i.unit_price IS NOT NULL THEN i.unit_price ELSE 0 END)) as sales,
|
||||
((sale_items.price - (CASE WHEN i.unit_price IS NOT NULL THEN i.unit_price ELSE 0 END))/21) as tax_amt,
|
||||
'' as service_charges,
|
||||
((sale_items.price - (CASE WHEN i.unit_price IS NOT NULL THEN i.unit_price ELSE 0 END)) - ((sale_items.price - (CASE WHEN i.unit_price IS NOT NULL THEN i.unit_price ELSE 0 END))/21)) as net_sales,
|
||||
'0' as is_set_item,
|
||||
'0' as is_staff_meal,
|
||||
'0' as is_raw_wastage,
|
||||
'0' as is_semi_wastage,
|
||||
CASE WHEN s.sale_status = 'waste' THEN 1 ELSE 0 END as is_wastage,
|
||||
CASE WHEN s.sale_status = 'spoile' THEN 1 ELSE 0 END as is_spoilage,
|
||||
'0' as is_sampling,
|
||||
'1' as tax_able,
|
||||
CASE
|
||||
WHEN s.sale_status = 'void' THEN 1 ELSE 0
|
||||
END as is_void
|
||||
")
|
||||
.joins("LEFT JOIN sales s ON s.sale_id = sale_items.sale_id")
|
||||
.joins("LEFT JOIN sale_items i ON sale_items.sale_id = i.sale_id AND sale_items.item_instance_code = i.item_instance_code AND i.status = 'Discount' AND sale_items.qty = abs(i.qty)")
|
||||
.where("DATE(s.receipt_date) = ? AND s.sale_status != 'void' AND (sale_items.status NOT IN('Discount', 'void','foc') OR sale_items.status IS NULL)", transaction_date)
|
||||
.order("s.receipt_no")
|
||||
end
|
||||
|
||||
# Loader Service SFTP End
|
||||
|
||||
end
|
||||
|
||||
@@ -419,7 +419,7 @@ class SalePayment < ApplicationRecord
|
||||
SaleItem.update_existing_item(item.qty, item, self.sale.sale_id, "foc", item.unit_price, item.price)
|
||||
end
|
||||
sale = Sale.find(self.sale.sale_id)
|
||||
sale.compute_by_sale_items(sale.id, sale.sale_items, sale.total_discount,'','','',"foc")
|
||||
sale.compute_by_sale_items(sale.total_discount,'','','',"foc")
|
||||
|
||||
self.payment_method = "foc"
|
||||
self.payment_amount = self.received_amount
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
<% end %>
|
||||
</td>
|
||||
<td><%= credit.cashier_name rescue '-' %></td>
|
||||
<td><%= credit.sale.customer.name rescue '-' %></td>
|
||||
<td><%= credit.customer_name rescue '-' %></td>
|
||||
<td><%= number_with_precision(credit.payment_amount, precision: precision.to_i ,delimiter: delimiter) rescue '-' %></td>
|
||||
<td>
|
||||
<%if credit.credit_payment_shift_name == '-' %>
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
<% end %>
|
||||
</td>
|
||||
<td><%= credit.cashier_name rescue '-' %></td>
|
||||
<td><%= credit.sale.customer.name rescue '-' %></td>
|
||||
<td><%= credit.customer_name rescue '-' %></td>
|
||||
<td><%= credit.payment_amount rescue '-' %></td>
|
||||
<td>
|
||||
<%if credit.credit_payment_shift_name == '-' %>
|
||||
|
||||
@@ -138,8 +138,7 @@
|
||||
delimiter = ""
|
||||
end
|
||||
%>
|
||||
<% unless @sale_data.empty? %>
|
||||
|
||||
<% unless @sale_data.blank? %>
|
||||
<tbody>
|
||||
<% void = 0 %>
|
||||
<% mpu = 0 %>
|
||||
@@ -322,7 +321,7 @@
|
||||
</tr>
|
||||
<% total_tax = 0 %>
|
||||
<% net = 0 %>
|
||||
<% unless @tax.empty? %>
|
||||
<% unless @tax.blank? %>
|
||||
<% @tax.each do |tax|
|
||||
total_tax += tax.tax_amount.to_f %>
|
||||
<tr style="font-weight:600;">
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
delimiter = ""
|
||||
end
|
||||
%>
|
||||
<% unless @sale_data.empty? %>
|
||||
<% unless @sale_data.blank? %>
|
||||
|
||||
<tbody>
|
||||
<% void = 0 %>
|
||||
@@ -235,7 +235,7 @@
|
||||
</tr>
|
||||
<% total_tax = 0 %>
|
||||
<% net = 0 %>
|
||||
<% unless @tax.empty? %>
|
||||
<% unless @tax.blank? %>
|
||||
<% @tax.each do |tax|
|
||||
total_tax += tax.tax_amount.to_f %>
|
||||
<tr style="font-weight:600;">
|
||||
|
||||
@@ -117,6 +117,14 @@ scope "(:locale)", locale: /en|mm/ do
|
||||
|
||||
#API for sync cloud
|
||||
post 'sync_data' => 'sync#sync_data'
|
||||
|
||||
namespace :loader_service do
|
||||
post "get_sale_data" => "load_data#get_sale_data_rage"
|
||||
post "get_detail_sale_data" => "load_data#get_detail_sale_data"
|
||||
post "get_tender_sale_data" => "load_data#get_tender_sale_data"
|
||||
post "get_daily_sale_data" => "load_data#get_daily_sale_data"
|
||||
post "get_check_sale_data" => "load_data#get_check_sale_data"
|
||||
end
|
||||
end
|
||||
|
||||
#--------- Cashier ------------#
|
||||
|
||||
Reference in New Issue
Block a user