Merge branch 'r-1902001-01-dev' of gitlab.com:code2lab/SXRestaurant into r-1902001-01-dev
This commit is contained in:
@@ -2717,6 +2717,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
|
||||
|
||||
Reference in New Issue
Block a user