Merge branch 'r-1902001-01-dev' of gitlab.com:code2lab/SXRestaurant into r-1902001-01-dev

This commit is contained in:
Thein Lin Kyaw
2019-11-13 15:44:28 +06:30
30 changed files with 652 additions and 73 deletions

View File

@@ -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